{"version":3,"sources":["../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/react/index.js","../node_modules/monaco-editor/esm/vs/base/common/strings.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/monaco-editor/esm/vs/base/common/platform.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/prop-types/index.js","../node_modules/react/jsx-runtime.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../../out/lib/src/DynamicProto.js","../../src/Constants.ts","../node_modules/monaco-editor/esm/vs/base/common/buffer.js","../node_modules/vscode-languageserver-protocol/lib/browser/main.js","../node_modules/reactstrap/es/utils.js","../node_modules/react-router/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/react-router/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-router/node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/react-router/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../modules/createNameContext.js","../../modules/HistoryContext.js","../../modules/RouterContext.js","../../modules/Router.js","../../modules/MemoryRouter.js","../../modules/Lifecycle.js","../../modules/matchPath.js","../../modules/Route.js","../../modules/StaticRouter.js","../../modules/Switch.js","../../modules/hooks.js","../node_modules/vscode-languageserver-protocol/lib/common/messages.js","../node_modules/reactstrap/node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/reactstrap/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/classnames/index.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/history/esm/history.js","../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/createClass.js","../node_modules/monaco-editor/esm/vs/base/common/process.js","../../src/FormulaEditor.types.ts","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/inherits.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/createSuper.js","../node_modules/vscode-jsonrpc/lib/common/ral.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/react-router-dom/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/react-router-dom/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-router-dom/node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/react-router-dom/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../modules/BrowserRouter.js","../../modules/HashRouter.js","../../modules/utils/locationUtils.js","../../modules/Link.js","../../modules/NavLink.js","../node_modules/webpack/buildin/global.js","../node_modules/vscode-jsonrpc/lib/common/events.js","../node_modules/react-dom/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../src/Helpers.ts","../node_modules/vscode-jsonrpc/lib/browser/main.js","../node_modules/vscode-jsonrpc/lib/common/is.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/typeof.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/reactstrap/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/reactstrap/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/reactstrap/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-transition-group/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/path-to-regexp/index.js","../node_modules/mini-create-react-context/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/mini-create-react-context/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/object-assign/index.js","../node_modules/react-is/index.js","../node_modules/react-transition-group/Transition.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/react-transition-group/utils/PropTypes.js","../node_modules/react-transition-group/TransitionGroup.js","../node_modules/process/browser.js","../node_modules/buffer/index.js","../node_modules/vscode-jsonrpc/browser.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/toPropertyKey.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","../node_modules/vscode-jsonrpc/lib/common/disposable.js","../node_modules/vscode-jsonrpc/lib/common/api.js","../node_modules/vscode-jsonrpc/lib/common/messages.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/wrapNativeSuper.js","../node_modules/vscode-jsonrpc/lib/common/cancellation.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/mini-create-react-context/dist/esm/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../../src/index.ts","../../../src/repair/RepairHoverProvider.ts","../node_modules/@fluentui/utilities/node_modules/tslib/tslib.es6.js","../node_modules/@fluentui/merge-styles/node_modules/tslib/tslib.es6.js","../../src/concatStyleSets.ts","../../src/concatStyleSetsWithProps.ts","../../src/dom/setSSR.ts","../../src/dom/getWindow.ts","../../src/GlobalSettings.ts","../../src/customizations/Customizations.ts","../../src/customizations/CustomizerContext.ts","../../src/customizations/useCustomizationSettings.ts","../../src/styled.tsx","../node_modules/@monaco-editor/loader/lib/es/_virtual/_rollupPluginBabelHelpers.js","../node_modules/state-local/lib/es/state-local.js","../node_modules/@monaco-editor/loader/lib/es/config/index.js","../node_modules/@monaco-editor/loader/lib/es/utils/curry.js","../node_modules/@monaco-editor/loader/lib/es/utils/isObject.js","../node_modules/@monaco-editor/loader/lib/es/validators/index.js","../node_modules/@monaco-editor/loader/lib/es/utils/compose.js","../node_modules/@monaco-editor/loader/lib/es/utils/deepMerge.js","../node_modules/@monaco-editor/loader/lib/es/utils/makeCancelable.js","../node_modules/@monaco-editor/loader/lib/es/loader/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@monaco-editor/react/lib/es/Loading/Loading.js","../node_modules/@monaco-editor/react/lib/es/MonacoContainer/styles.js","../node_modules/@monaco-editor/react/lib/es/MonacoContainer/MonacoContainer.js","../node_modules/@monaco-editor/react/lib/es/MonacoContainer/index.js","../node_modules/@monaco-editor/react/lib/es/hooks/useMount/index.js","../node_modules/@monaco-editor/react/lib/es/hooks/useUpdate/index.js","../node_modules/@monaco-editor/react/lib/es/utils/index.js","../node_modules/@monaco-editor/react/lib/es/DiffEditor/DiffEditor.js","../node_modules/@monaco-editor/react/lib/es/hooks/usePrevious/index.js","../node_modules/@monaco-editor/react/lib/es/Editor/Editor.js","../../src/Stylesheet.ts","../node_modules/@monaco-editor/react/lib/es/Editor/index.js","../../src/StyleOptionsState.ts","../../src/extractStyleParts.ts","../../src/transforms/kebabRules.ts","../../src/getVendorSettings.ts","../../src/transforms/prefixRules.ts","../../src/transforms/provideUnits.ts","../../src/transforms/rtlifyRules.ts","../../src/styleToClassName.ts","../../src/tokenizeWithParentheses.ts","../../src/mergeStyleSets.ts","../../src/KeyCodes.ts","../../src/dom/getDocument.ts","../../src/sessionStorage.ts","../../src/rtl.ts","../../src/classNamesFunction.ts","../../src/PowerFxSyntaxTypes.ts","../../src/PowerFxSyntax.ts","../../src/PowerFxTheme.ts","../../src/FormulaEditor.base.tsx","../../src/mergeStyles.ts","../../src/keyframes.ts","../../src/motion/AnimationStyles.ts","../../src/classNames/AnimationClassNames.ts","../../src/fonts/FluentFonts.ts","../../src/utilities/buildClassMap.ts","../../src/styles/CommonStyles.ts","../../src/setFocusVisibility.ts","../../src/styles/zIndexes.ts","../../src/styles/getFocusStyle.ts","../../src/styles/hiddenContentStyle.ts","../../src/memoize.ts","../../src/styles/getGlobalClassNames.ts","../node_modules/@fluentui/style-utilities/node_modules/tslib/tslib.es6.js","../../src/effects/FluentDepths.ts","../../src/colors/DefaultPalette.ts","../../src/effects/DefaultEffects.ts","../../src/fontFace.ts","../../src/fonts/createFontStyles.ts","../../src/language.ts","../../src/fonts/DefaultFontStyles.ts","../../src/localStorage.ts","../../src/merge.ts","../node_modules/@fluentui/theme/node_modules/tslib/tslib.es6.js","../../src/utilities/makeSemanticColors.ts","../../src/spacing/DefaultSpacing.ts","../../src/createTheme.ts","../../src/mergeThemes.ts","../../src/styles/theme.ts","../../src/warn/warn.ts","../../src/utilities/icons.ts","../../src/version.ts","../../src/FormulaEditor.tsx","../../src/FormulaEditor.styles.ts","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/monaco-editor/esm/vs/nls.js","../node_modules/monaco-editor/esm/vs/editor/common/model/wordHelper.js","../node_modules/monaco-editor/esm/vs/editor/common/config/editorOptions.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/monaco-editor/esm/vs/base/common/errors.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/monaco-editor/esm/vs/base/common/functional.js","../node_modules/monaco-editor/esm/vs/base/common/iterator.js","../node_modules/monaco-editor/esm/vs/base/common/lifecycle.js","../node_modules/monaco-editor/esm/vs/base/common/linkedList.js","../node_modules/monaco-editor/esm/vs/base/common/event.js","../node_modules/monaco-editor/esm/vs/base/common/stopwatch.js","../node_modules/monaco-editor/esm/vs/base/common/cancellation.js","../node_modules/monaco-editor/esm/vs/base/common/keyCodes.js","../node_modules/monaco-editor/esm/vs/base/common/path.js","../node_modules/monaco-editor/esm/vs/base/common/uri.js","../node_modules/monaco-editor/esm/vs/editor/common/core/position.js","../node_modules/monaco-editor/esm/vs/editor/common/standalone/standaloneEnums.js","../node_modules/monaco-editor/esm/vs/editor/common/core/range.js","../node_modules/monaco-editor/esm/vs/editor/common/core/selection.js","../node_modules/monaco-editor/esm/vs/editor/common/core/token.js","../node_modules/monaco-editor/esm/vs/editor/common/standalone/standaloneBase.js","../node_modules/monaco-editor/esm/vs/platform/instantiation/common/instantiation.js","../node_modules/monaco-editor/esm/vs/editor/browser/services/codeEditorService.js","../node_modules/monaco-editor/esm/vs/base/browser/browser.js","../node_modules/monaco-editor/esm/vs/base/browser/keyboardEvent.js","../node_modules/monaco-editor/esm/vs/base/browser/iframe.js","../node_modules/monaco-editor/esm/vs/base/browser/mouseEvent.js","../node_modules/monaco-editor/esm/vs/base/common/async.js","../node_modules/monaco-editor/esm/vs/base/common/network.js","../node_modules/monaco-editor/esm/vs/base/browser/canIUse.js","../node_modules/monaco-editor/esm/vs/base/browser/dom.js","../node_modules/monaco-editor/esm/vs/base/common/map.js","../node_modules/monaco-editor/esm/vs/base/common/marshalling.js","../node_modules/monaco-editor/esm/vs/base/common/extpath.js","../node_modules/monaco-editor/esm/vs/base/common/resources.js","../node_modules/monaco-editor/esm/vs/base/common/types.js","../node_modules/monaco-editor/esm/vs/platform/commands/common/commands.js","../node_modules/monaco-editor/esm/vs/platform/editor/common/editor.js","../node_modules/monaco-editor/esm/vs/platform/opener/common/opener.js","../node_modules/monaco-editor/esm/vs/editor/browser/services/openerService.js","../node_modules/monaco-editor/esm/vs/base/common/assert.js","../node_modules/monaco-editor/esm/vs/base/common/objects.js","../node_modules/monaco-editor/esm/vs/editor/browser/widget/diffNavigator.js","../node_modules/monaco-editor/esm/vs/editor/common/config/editorZoom.js","../node_modules/monaco-editor/esm/vs/editor/common/config/fontInfo.js","../node_modules/monaco-editor/esm/vs/editor/common/editorCommon.js","../node_modules/monaco-editor/esm/vs/editor/common/model.js","../node_modules/monaco-editor/esm/vs/base/common/hash.js","../node_modules/monaco-editor/esm/vs/base/common/numbers.js","../node_modules/monaco-editor/esm/vs/base/common/glob.js","../node_modules/monaco-editor/esm/vs/editor/common/modes/languageSelector.js","../node_modules/monaco-editor/esm/vs/editor/common/services/modelService.js","../node_modules/monaco-editor/esm/vs/editor/common/modes/languageFeatureRegistry.js","../node_modules/monaco-editor/esm/vs/editor/common/modes/tokenizationRegistry.js","../node_modules/monaco-editor/esm/vs/base/common/codicons.js","../node_modules/monaco-editor/esm/vs/editor/common/modes.js","../node_modules/monaco-editor/esm/vs/editor/common/modes/nullMode.js","../node_modules/monaco-editor/esm/vs/editor/common/services/editorWorkerService.js","../node_modules/monaco-editor/esm/vs/editor/common/services/modeService.js","../node_modules/monaco-editor/esm/vs/editor/common/services/resolverService.js","../node_modules/monaco-editor/esm/vs/base/common/worker/simpleWorker.js","../node_modules/monaco-editor/esm/vs/base/worker/defaultWorkerFactory.js","../node_modules/monaco-editor/esm/vs/editor/common/modes/languageConfiguration.js","../node_modules/monaco-editor/esm/vs/editor/common/modes/supports.js","../node_modules/monaco-editor/esm/vs/editor/common/modes/supports/characterPair.js","../node_modules/monaco-editor/esm/vs/editor/common/core/stringBuilder.js","../node_modules/monaco-editor/esm/vs/editor/common/modes/supports/richEditBrackets.js","../node_modules/monaco-editor/esm/vs/editor/common/modes/supports/electricCharacter.js","../node_modules/monaco-editor/esm/vs/editor/common/modes/supports/indentRules.js","../node_modules/monaco-editor/esm/vs/editor/common/modes/supports/onEnter.js","../node_modules/monaco-editor/esm/vs/editor/common/modes/languageConfigurationRegistry.js","../node_modules/monaco-editor/esm/vs/base/common/diff/diffChange.js","../node_modules/monaco-editor/esm/vs/base/common/diff/diff.js","../node_modules/monaco-editor/esm/vs/editor/common/diff/diffComputer.js","../node_modules/monaco-editor/esm/vs/base/common/uint.js","../node_modules/monaco-editor/esm/vs/editor/common/viewModel/prefixSumComputer.js","../node_modules/monaco-editor/esm/vs/editor/common/model/mirrorTextModel.js","../node_modules/monaco-editor/esm/vs/editor/common/core/characterClassifier.js","../node_modules/monaco-editor/esm/vs/editor/common/modes/linkComputer.js","../node_modules/monaco-editor/esm/vs/editor/common/modes/supports/inplaceReplaceSupport.js","../node_modules/monaco-editor/esm/vs/editor/common/services/editorSimpleWorker.js","../node_modules/monaco-editor/esm/vs/editor/common/services/textResourceConfigurationService.js","../node_modules/monaco-editor/esm/vs/base/common/arrays.js","../node_modules/monaco-editor/esm/vs/platform/log/common/log.js","../node_modules/monaco-editor/esm/vs/editor/common/services/editorWorkerServiceImpl.js","../node_modules/monaco-editor/esm/vs/editor/common/services/webWorker.js","../node_modules/monaco-editor/esm/vs/editor/common/core/lineTokens.js","../node_modules/monaco-editor/esm/vs/editor/common/viewLayout/lineDecorations.js","../node_modules/monaco-editor/esm/vs/editor/common/viewLayout/viewLineRenderer.js","../node_modules/monaco-editor/esm/vs/editor/common/viewModel/viewModel.js","../node_modules/monaco-editor/esm/vs/editor/standalone/common/monarch/monarchCommon.js","../node_modules/monaco-editor/esm/vs/editor/standalone/common/monarch/monarchLexer.js","../node_modules/monaco-editor/esm/vs/editor/standalone/browser/colorizer.js","../node_modules/monaco-editor/esm/vs/base/common/severity.js","../node_modules/monaco-editor/esm/vs/editor/browser/editorBrowser.js","../node_modules/monaco-editor/esm/vs/editor/browser/services/bulkEditService.js","../node_modules/monaco-editor/esm/vs/platform/registry/common/platform.js","../node_modules/monaco-editor/esm/vs/platform/jsonschemas/common/jsonContributionRegistry.js","../node_modules/monaco-editor/esm/vs/platform/configuration/common/configurationRegistry.js","../node_modules/monaco-editor/esm/vs/base/common/collections.js","../node_modules/monaco-editor/esm/vs/editor/common/config/commonEditorConfig.js","../node_modules/monaco-editor/esm/vs/editor/common/core/editOperation.js","../node_modules/monaco-editor/esm/vs/platform/configuration/common/configuration.js","../node_modules/monaco-editor/esm/vs/platform/configuration/common/configurationModels.js","../node_modules/monaco-editor/esm/vs/platform/keybinding/common/abstractKeybindingService.js","../node_modules/monaco-editor/esm/vs/platform/keybinding/common/keybindingResolver.js","../node_modules/monaco-editor/esm/vs/platform/keybinding/common/keybindingsRegistry.js","../node_modules/monaco-editor/esm/vs/platform/keybinding/common/resolvedKeybindingItem.js","../node_modules/monaco-editor/esm/vs/base/common/keybindingLabels.js","../node_modules/monaco-editor/esm/vs/platform/keybinding/common/baseResolvedKeybinding.js","../node_modules/monaco-editor/esm/vs/editor/common/standaloneStrings.js","../node_modules/monaco-editor/esm/vs/platform/keybinding/common/usLayoutResolvedKeybinding.js","../node_modules/monaco-editor/esm/vs/platform/notification/common/notification.js","../node_modules/monaco-editor/esm/vs/platform/workspace/common/workspace.js","../node_modules/monaco-editor/esm/vs/editor/standalone/browser/simpleServices.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/aria/aria.js","../node_modules/monaco-editor/esm/vs/editor/common/services/markersDecorationService.js","../node_modules/monaco-editor/esm/vs/base/common/actions.js","../node_modules/monaco-editor/esm/vs/platform/contextkey/common/contextkey.js","../node_modules/monaco-editor/esm/vs/platform/theme/common/theme.js","../node_modules/monaco-editor/esm/vs/platform/theme/common/themeService.js","../node_modules/monaco-editor/esm/vs/platform/actions/common/actions.js","../node_modules/monaco-editor/esm/vs/platform/telemetry/common/telemetry.js","../node_modules/monaco-editor/esm/vs/editor/browser/editorExtensions.js","../node_modules/monaco-editor/esm/vs/editor/browser/services/markerDecorations.js","../node_modules/monaco-editor/esm/vs/editor/browser/config/charWidthReader.js","../node_modules/monaco-editor/esm/vs/editor/browser/config/elementSizeObserver.js","../node_modules/monaco-editor/esm/vs/editor/browser/config/configuration.js","../node_modules/monaco-editor/esm/vs/base/browser/fastDomNode.js","../node_modules/monaco-editor/esm/vs/base/common/decorators.js","../node_modules/monaco-editor/esm/vs/base/browser/touch.js","../node_modules/monaco-editor/esm/vs/base/browser/globalMouseMoveMonitor.js","../node_modules/monaco-editor/esm/vs/editor/browser/editorDom.js","../node_modules/monaco-editor/esm/vs/editor/common/viewModel/viewEventHandler.js","../node_modules/monaco-editor/esm/vs/editor/browser/view/viewPart.js","../node_modules/monaco-editor/esm/vs/editor/common/view/renderingContext.js","../node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lines/rangeUtil.js","../node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lines/viewLine.js","../node_modules/monaco-editor/esm/vs/editor/common/model/textChange.js","../node_modules/monaco-editor/esm/vs/editor/common/model/editStack.js","../node_modules/monaco-editor/esm/vs/editor/common/model/indentationGuesser.js","../node_modules/monaco-editor/esm/vs/editor/common/model/intervalTree.js","../node_modules/monaco-editor/esm/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase.js","../node_modules/monaco-editor/esm/vs/editor/common/controller/wordCharacterClassifier.js","../node_modules/monaco-editor/esm/vs/editor/common/model/textModelSearch.js","../node_modules/monaco-editor/esm/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.js","../node_modules/monaco-editor/esm/vs/editor/common/model/tokensStore.js","../node_modules/monaco-editor/esm/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.js","../node_modules/monaco-editor/esm/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBufferBuilder.js","../node_modules/monaco-editor/esm/vs/editor/common/model/textModelEvents.js","../node_modules/monaco-editor/esm/vs/editor/common/model/textModelTokens.js","../node_modules/monaco-editor/esm/vs/base/common/color.js","../node_modules/monaco-editor/esm/vs/editor/common/model/textModel.js","../node_modules/monaco-editor/esm/vs/editor/common/controller/cursorCommon.js","../node_modules/monaco-editor/esm/vs/editor/common/controller/cursorAtomicMoveOperations.js","../node_modules/monaco-editor/esm/vs/editor/browser/controller/mouseTarget.js","../node_modules/monaco-editor/esm/vs/editor/browser/controller/mouseHandler.js","../node_modules/monaco-editor/esm/vs/base/common/mime.js","../node_modules/monaco-editor/esm/vs/editor/browser/controller/textAreaState.js","../node_modules/monaco-editor/esm/vs/editor/browser/controller/textAreaInput.js","../node_modules/monaco-editor/esm/vs/editor/browser/controller/pointerHandler.js","../node_modules/monaco-editor/esm/vs/editor/browser/view/dynamicViewOverlay.js","../node_modules/monaco-editor/esm/vs/platform/theme/common/colorRegistry.js","../node_modules/monaco-editor/esm/vs/editor/common/view/editorColorRegistry.js","../node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lineNumbers/lineNumbers.js","../node_modules/monaco-editor/esm/vs/editor/browser/viewParts/margin/margin.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/mouseCursor/mouseCursor.js","../node_modules/monaco-editor/esm/vs/editor/browser/controller/textAreaHandler.js","../node_modules/monaco-editor/esm/vs/editor/common/controller/cursorColumnSelection.js","../node_modules/monaco-editor/esm/vs/editor/common/commands/replaceCommand.js","../node_modules/monaco-editor/esm/vs/editor/common/controller/cursorMoveOperations.js","../node_modules/monaco-editor/esm/vs/editor/common/controller/cursorDeleteOperations.js","../node_modules/monaco-editor/esm/vs/editor/common/controller/cursorWordOperations.js","../node_modules/monaco-editor/esm/vs/editor/common/controller/cursorMoveCommands.js","../node_modules/monaco-editor/esm/vs/editor/common/commands/shiftCommand.js","../node_modules/monaco-editor/esm/vs/editor/common/editorContextKeys.js","../node_modules/monaco-editor/esm/vs/editor/common/commands/surroundSelectionCommand.js","../node_modules/monaco-editor/esm/vs/editor/common/controller/cursorTypeOperations.js","../node_modules/monaco-editor/esm/vs/editor/browser/controller/coreCommands.js","../node_modules/monaco-editor/esm/vs/editor/browser/view/viewController.js","../node_modules/monaco-editor/esm/vs/editor/browser/view/viewLayer.js","../node_modules/monaco-editor/esm/vs/editor/browser/view/viewUserInputEvents.js","../node_modules/monaco-editor/esm/vs/editor/browser/view/viewOverlays.js","../node_modules/monaco-editor/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js","../node_modules/monaco-editor/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.js","../node_modules/monaco-editor/esm/vs/editor/browser/viewParts/decorations/decorations.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/widget.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollbarArrow.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/abstractScrollbar.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollbarState.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/horizontalScrollbar.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/verticalScrollbar.js","../node_modules/monaco-editor/esm/vs/base/common/scrollable.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollableElement.js","../node_modules/monaco-editor/esm/vs/editor/browser/viewParts/editorScrollbar/editorScrollbar.js","../node_modules/monaco-editor/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js","../node_modules/monaco-editor/esm/vs/editor/browser/viewParts/indentGuides/indentGuides.js","../node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lines/viewLines.js","../node_modules/monaco-editor/esm/vs/editor/browser/viewParts/linesDecorations/linesDecorations.js","../node_modules/monaco-editor/esm/vs/editor/browser/viewParts/marginDecorations/marginDecorations.js","../node_modules/monaco-editor/esm/vs/editor/common/core/rgba.js","../node_modules/monaco-editor/esm/vs/editor/common/viewModel/minimapTokensColorTracker.js","../node_modules/monaco-editor/esm/vs/editor/browser/viewParts/minimap/minimapCharSheet.js","../node_modules/monaco-editor/esm/vs/editor/browser/viewParts/minimap/minimapCharRenderer.js","../node_modules/monaco-editor/esm/vs/editor/browser/viewParts/minimap/minimapPreBaked.js","../node_modules/monaco-editor/esm/vs/editor/browser/viewParts/minimap/minimapCharRendererFactory.js","../node_modules/monaco-editor/esm/vs/editor/browser/viewParts/minimap/minimap.js","../node_modules/monaco-editor/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js","../node_modules/monaco-editor/esm/vs/editor/browser/viewParts/overviewRuler/decorationsOverviewRuler.js","../node_modules/monaco-editor/esm/vs/editor/common/view/overviewZoneManager.js","../node_modules/monaco-editor/esm/vs/editor/browser/viewParts/overviewRuler/overviewRuler.js","../node_modules/monaco-editor/esm/vs/editor/browser/viewParts/rulers/rulers.js","../node_modules/monaco-editor/esm/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.js","../node_modules/monaco-editor/esm/vs/editor/browser/viewParts/selections/selections.js","../node_modules/monaco-editor/esm/vs/editor/browser/viewParts/viewCursors/viewCursor.js","../node_modules/monaco-editor/esm/vs/editor/browser/viewParts/viewCursors/viewCursors.js","../node_modules/monaco-editor/esm/vs/editor/browser/viewParts/viewZones/viewZones.js","../node_modules/monaco-editor/esm/vs/editor/common/view/viewContext.js","../node_modules/monaco-editor/esm/vs/editor/common/viewLayout/viewLinesViewportData.js","../node_modules/monaco-editor/esm/vs/editor/browser/view/viewImpl.js","../node_modules/monaco-editor/esm/vs/editor/common/controller/oneCursor.js","../node_modules/monaco-editor/esm/vs/editor/common/controller/cursorCollection.js","../node_modules/monaco-editor/esm/vs/editor/common/view/viewEvents.js","../node_modules/monaco-editor/esm/vs/editor/common/viewModel/viewModelEventDispatcher.js","../node_modules/monaco-editor/esm/vs/editor/common/controller/cursor.js","../node_modules/monaco-editor/esm/vs/editor/common/editorAction.js","../node_modules/monaco-editor/esm/vs/editor/common/modes/textToHtmlTokenizer.js","../node_modules/monaco-editor/esm/vs/editor/common/viewLayout/linesLayout.js","../node_modules/monaco-editor/esm/vs/editor/common/viewLayout/viewLayout.js","../node_modules/monaco-editor/esm/vs/editor/common/viewModel/splitLinesCollection.js","../node_modules/monaco-editor/esm/vs/editor/browser/view/domLineBreaksComputer.js","../node_modules/monaco-editor/esm/vs/editor/common/viewModel/viewModelDecorations.js","../node_modules/monaco-editor/esm/vs/editor/common/viewModel/viewModelImpl.js","../node_modules/monaco-editor/esm/vs/platform/instantiation/common/serviceCollection.js","../node_modules/monaco-editor/esm/vs/platform/accessibility/common/accessibility.js","../node_modules/monaco-editor/esm/vs/editor/common/viewModel/monospaceLineBreaksComputer.js","../node_modules/monaco-editor/esm/vs/editor/browser/widget/codeEditorWidget.js","../node_modules/monaco-editor/esm/vs/base/browser/event.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/sash/sash.js","../node_modules/monaco-editor/esm/vs/platform/instantiation/common/descriptors.js","../node_modules/monaco-editor/esm/vs/platform/instantiation/common/extensions.js","../node_modules/monaco-editor/esm/vs/editor/browser/core/keybindingCancellation.js","../node_modules/monaco-editor/esm/vs/editor/browser/core/editorState.js","../node_modules/monaco-editor/esm/vs/base/browser/dnd.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionViewItems.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionbar.js","../node_modules/monaco-editor/esm/vs/platform/theme/common/iconRegistry.js","../node_modules/monaco-editor/esm/vs/editor/browser/widget/diffReview.js","../node_modules/monaco-editor/esm/vs/platform/contextview/browser/contextView.js","../node_modules/monaco-editor/esm/vs/editor/browser/widget/inlineDiffMargin.js","../node_modules/monaco-editor/esm/vs/platform/clipboard/common/clipboardService.js","../node_modules/monaco-editor/esm/vs/platform/progress/common/progress.js","../node_modules/monaco-editor/esm/vs/editor/browser/widget/diffEditorWidget.js","../node_modules/monaco-editor/esm/vs/editor/standalone/common/standaloneThemeService.js","../node_modules/monaco-editor/esm/vs/platform/keybinding/common/keybinding.js","../node_modules/monaco-editor/esm/vs/editor/browser/services/abstractCodeEditorService.js","../node_modules/monaco-editor/esm/vs/editor/browser/services/codeEditorServiceImpl.js","../node_modules/monaco-editor/esm/vs/editor/standalone/browser/standaloneCodeServiceImpl.js","../node_modules/monaco-editor/esm/vs/editor/standalone/browser/standaloneCodeEditor.js","../node_modules/monaco-editor/esm/vs/editor/common/modes/abstractMode.js","../node_modules/monaco-editor/esm/vs/editor/common/modes/modesRegistry.js","../node_modules/monaco-editor/esm/vs/editor/common/services/languagesRegistry.js","../node_modules/monaco-editor/esm/vs/editor/common/services/modeServiceImpl.js","../node_modules/monaco-editor/esm/vs/platform/undoRedo/common/undoRedo.js","../node_modules/monaco-editor/esm/vs/editor/common/services/semanticTokensProviderStyling.js","../node_modules/monaco-editor/esm/vs/editor/common/services/semanticTokensDto.js","../node_modules/monaco-editor/esm/vs/editor/common/services/getSemanticTokens.js","../node_modules/monaco-editor/esm/vs/editor/common/services/modelServiceImpl.js","../node_modules/monaco-editor/esm/vs/editor/common/modes/supports/tokenization.js","../node_modules/monaco-editor/esm/vs/editor/standalone/common/themes.js","../node_modules/monaco-editor/esm/vs/platform/theme/browser/iconsStyleSheet.js","../node_modules/monaco-editor/esm/vs/editor/standalone/browser/standaloneThemeServiceImpl.js","../node_modules/monaco-editor/esm/vs/platform/contextkey/browser/contextKeyService.js","../node_modules/monaco-editor/esm/vs/base/common/range.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/contextview/contextview.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codiconStyles.js","../node_modules/monaco-editor/esm/vs/base/common/filters.js","../node_modules/monaco-editor/esm/vs/base/common/iconLabels.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/menu/menu.js","../node_modules/monaco-editor/esm/vs/platform/theme/common/styler.js","../node_modules/monaco-editor/esm/vs/platform/contextview/browser/contextMenuHandler.js","../node_modules/monaco-editor/esm/vs/platform/contextview/browser/contextMenuService.js","../node_modules/monaco-editor/esm/vs/platform/layout/browser/layoutService.js","../node_modules/monaco-editor/esm/vs/platform/contextview/browser/contextViewService.js","../node_modules/monaco-editor/esm/vs/platform/dialogs/common/dialogs.js","../node_modules/monaco-editor/esm/vs/platform/instantiation/common/graph.js","../node_modules/monaco-editor/esm/vs/platform/instantiation/common/instantiationService.js","../node_modules/monaco-editor/esm/vs/platform/label/common/label.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/list/list.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/list/rangeMap.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/list/rowCache.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/list/listView.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/list/splice.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/list/listWidget.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/list/listPaging.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/tree/tree.js","../node_modules/monaco-editor/esm/vs/platform/contextkey/common/contextkeys.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/tree/indexTreeModel.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/tree/treeIcons.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/tree/abstractTree.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/tree/objectTreeModel.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/tree/compressedObjectTreeModel.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/tree/objectTree.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/tree/asyncDataTree.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/tree/dataTree.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/splitview/splitview.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/table/tableWidget.js","../node_modules/monaco-editor/esm/vs/platform/list/browser/listService.js","../node_modules/monaco-editor/esm/vs/platform/markers/common/markers.js","../node_modules/monaco-editor/esm/vs/base/parts/storage/common/storage.js","../node_modules/monaco-editor/esm/vs/platform/markers/common/markerService.js","../node_modules/monaco-editor/esm/vs/platform/storage/common/storage.js","../node_modules/monaco-editor/esm/vs/platform/actions/common/menuService.js","../node_modules/monaco-editor/esm/vs/editor/common/services/markerDecorationsServiceImpl.js","../node_modules/monaco-editor/esm/vs/platform/accessibility/common/accessibilityService.js","../node_modules/monaco-editor/esm/vs/platform/clipboard/browser/clipboardService.js","../node_modules/monaco-editor/esm/vs/platform/undoRedo/common/undoRedoService.js","../node_modules/monaco-editor/esm/vs/base/parts/quickinput/common/quickInput.js","../node_modules/monaco-editor/esm/vs/base/common/comparers.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconLabels.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/highlightedlabel/highlightedLabel.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconLabelHover.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconLabel.js","../node_modules/monaco-editor/esm/vs/base/common/idGenerator.js","../node_modules/monaco-editor/esm/vs/base/parts/quickinput/browser/quickInputUtils.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/keybindingLabel/keybindingLabel.js","../node_modules/monaco-editor/esm/vs/base/parts/quickinput/browser/quickInputList.js","../node_modules/monaco-editor/esm/vs/base/browser/formattedTextRenderer.js","../node_modules/monaco-editor/esm/vs/base/common/navigator.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/inputbox/inputBox.js","../node_modules/monaco-editor/esm/vs/base/parts/quickinput/browser/quickInputBox.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/countBadge/countBadge.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/progressbar/progressbar.js","../node_modules/monaco-editor/esm/vs/base/browser/ui/button/button.js","../node_modules/monaco-editor/esm/vs/base/parts/quickinput/browser/quickInput.js","../node_modules/monaco-editor/esm/vs/platform/quickinput/common/quickInput.js","../node_modules/monaco-editor/esm/vs/platform/quickinput/common/quickAccess.js","../node_modules/monaco-editor/esm/vs/platform/quickinput/browser/quickAccess.js","../node_modules/monaco-editor/esm/vs/platform/quickinput/browser/quickInput.js","../node_modules/monaco-editor/esm/vs/editor/standalone/browser/quickInput/standaloneQuickInputServiceImpl.js","../node_modules/monaco-editor/esm/vs/editor/standalone/browser/standaloneServices.js","../node_modules/monaco-editor/esm/vs/editor/standalone/browser/standaloneEditor.js","../node_modules/monaco-editor/esm/vs/editor/standalone/common/monarch/monarchCompile.js","../node_modules/monaco-editor/esm/vs/editor/standalone/browser/standaloneLanguages.js","../node_modules/monaco-editor/esm/vs/editor/contrib/format/formattingEdit.js","../node_modules/monaco-editor/esm/vs/platform/extensions/common/extensions.js","../node_modules/monaco-editor/esm/vs/editor/contrib/format/format.js","../node_modules/monaco-editor/esm/vs/editor/editor.api.js","../node_modules/@fluentui/react/node_modules/tslib/tslib.es6.js","../../src/array.ts","../../src/createMergedRef.ts","../../src/css.ts","../../src/getParent.ts","../../src/getVirtualParent.ts","../../src/isVirtualElement.ts","../../src/findElementRecursive.ts","../../src/setPortalAttribute.ts","../../src/portalContainsElement.ts","../../src/appendFunction.ts","../../src/initializeComponentRef.ts","../../src/extendComponent.ts","../../src/Async.ts","../../src/object.ts","../../src/EventGroup.ts","../../src/getId.ts","../../src/properties.ts","../../src/BaseComponent.ts","../../src/keyboard.ts","../../src/useFocusRects.ts","../../src/components/Icon/Icon.types.ts","../../src/components/Image/Image.types.ts","../../src/aria.ts","../node_modules/@fluentui/react-hooks/node_modules/tslib/tslib.es6.js","../../src/useMergedRefs.ts","../../src/components/Image/Image.base.tsx","../../src/components/Image/Image.styles.ts","../../src/components/Image/Image.tsx","../../src/components/Icon/Icon.styles.ts","../../src/components/Icon/FontIcon.tsx","../../src/components/Icon/Icon.base.tsx","../../src/components/Icon/Icon.tsx","../../src/components/Icon/ImageIcon.tsx","../../src/components/ContextualMenu/ContextualMenu.types.ts","../../src/common/DirectionalHint.ts","../../src/components/FocusZone/FocusZone.types.ts","../node_modules/@fluentui/react-focus/node_modules/tslib/tslib.es6.js","../../src/elementContains.ts","../../src/focus.ts","../../src/elementContainsAttribute.ts","../../src/scroll.ts","../../src/components/FocusZone/FocusZone.tsx","../../src/osDetector.ts","../../src/mobileDetector.ts","../../src/utilities/positioning/positioning.types.ts","../../src/getPropsWithDefaults.ts","../../src/utilities/contextualMenu/contextualMenuUtility.ts","../../src/dom/on.ts","../../src/Rectangle.ts","../../src/utilities/positioning/positioning.ts","../../src/useConst.ts","../../src/useAsync.ts","../../src/useOnEvent.ts","../../src/WindowProvider.tsx","../../src/components/Popup/Popup.tsx","../../src/useTarget.ts","../../src/components/Callout/CalloutContent.base.tsx","../../src/components/Callout/CalloutContent.styles.ts","../../src/components/Callout/CalloutContent.tsx","../../src/customizations/mergeSettings.ts","../../src/customizations/Customizer.tsx","../../src/customizations/mergeCustomizations.ts","../../src/components/Fabric/Fabric.base.tsx","../../src/components/Fabric/Fabric.styles.ts","../../src/components/Fabric/Fabric.tsx","../../src/components/Layer/Layer.notification.ts","../../src/components/Layer/Layer.base.tsx","../../src/setVirtualParent.ts","../../src/components/Layer/Layer.styles.ts","../../src/components/Layer/Layer.tsx","../../src/components/Callout/Callout.tsx","../../src/components/ContextualMenu/ContextualMenuItem.base.tsx","../../src/utilities/keytips/KeytipConstants.ts","../../src/components/Divider/VerticalDivider.classNames.ts","../../src/components/ContextualMenu/ContextualMenu.cnstyles.ts","../../src/components/ContextualMenu/ContextualMenu.classNames.ts","../../src/components/ContextualMenu/ContextualMenuItem.ts","../../src/components/ContextualMenu/ContextualMenuItemWrapper/ContextualMenuItemWrapper.tsx","../../src/usePrevious.ts","../../src/utilities/keytips/KeytipManager.ts","../../src/utilities/keytips/KeytipUtils.ts","../../src/components/KeytipData/useKeytipData.ts","../../src/components/KeytipData/KeytipData.tsx","../../src/components/ContextualMenu/ContextualMenuItemWrapper/ContextualMenuAnchor.tsx","../../src/components/Divider/VerticalDivider.base.tsx","../../src/components/Divider/VerticalDivider.tsx","../../src/components/Divider/VerticalDivider.styles.ts","../../src/components/ContextualMenu/ContextualMenuItemWrapper/ContextualMenuSplitButton.tsx","../../src/components/ContextualMenu/ContextualMenuItemWrapper/ContextualMenuButton.tsx","../../src/useId.ts","../../src/hoist.ts","../../src/utilities/decorators/BaseDecorator.ts","../../src/utilities/decorators/withResponsiveMode.tsx","../../src/hoistStatics.ts","../../src/utilities/hooks/useResponsiveMode.tsx","../../src/utilities/MenuContext/MenuContext.ts","../../src/components/ContextualMenu/ContextualMenu.base.tsx","../../src/components/ContextualMenu/ContextualMenu.styles.ts","../../src/components/ContextualMenu/ContextualMenu.tsx","../../src/components/Button/BaseButton.classNames.ts","../../src/components/Button/SplitButton/SplitButton.classNames.ts","../../src/components/Button/BaseButton.tsx","../../src/components/Button/BaseButton.styles.ts","../../src/components/Button/SplitButton/SplitButton.styles.ts","../../src/components/Button/IconButton/IconButton.styles.ts","../../src/components/Button/IconButton/IconButton.tsx","../../src/customizations/customizable.tsx","../../src/PowerFxFormulaEditor.types.ts","../node_modules/@microsoft/power-fx-formulabar/node_modules/uuid/dist/esm-browser/rng.js","../node_modules/@microsoft/power-fx-formulabar/node_modules/uuid/dist/esm-browser/regex.js","../node_modules/@microsoft/power-fx-formulabar/node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/@microsoft/power-fx-formulabar/node_modules/uuid/dist/esm-browser/validate.js","../node_modules/@microsoft/power-fx-formulabar/node_modules/uuid/dist/esm-browser/v4.js","../../src/PowerFxLanguageClient.ts","../__DynamicConstants.js","../InternalConstants.js","../HelperFuncs.js","../EnvUtils.js","../DbgExtensionUtils.js","../DiagnosticLogger.js","../EnumHelperFuncs.js","../Enums.js","../StorageHelperFuncs.js","../applicationinsights-common.js","../DataSanitizer.js","../Constants.js","../TelemetryItemCreator.js","../Event.js","../Trace.js","../DataPoint.js","../Metric.js","../PageView.js","../PageViewPerformance.js","../Exception.js","../CookieMgr.js","../RandomHelper.js","../DataCacheHelper.js","../EventHelpers.js","../CoreUtils.js","../W3cTraceParent.js","../DomHelperFuncs.js","../RequestResponseHeaders.js","../UrlHelperFuncs.js","../Util.js","../RemoteDependencyData.js","../PerfManager.js","../TelemetryHelpers.js","../ProcessTelemetryContext.js","../InstrumentHooks.js","../UnloadHandlerContainer.js","../BaseTelemetryPlugin.js","../PageViewManager.js","../PageViewPerformanceManager.js","../PageVisitTimeManager.js","../Timing.js","../AnalyticsPlugin.js","../ContextTagKeys.js","../PartAExtensions.js","../Envelope.js","../Data.js","../EnvelopeCreator.js","../Offline.js","../SendBuffer.js","../Sender.js","../Serializer.js","../HashCodeScoreGenerator.js","../SamplingScoreGenerator.js","../Sample.js","../ConnectionStringParser.js","../SeverityLevel.js","../IConfig.js","../ChannelController.js","../TelemetryInitializerPlugin.js","../BaseCore.js","../NotificationManager.js","../AppInsightsCore.js","../ajaxRecord.js","../ajax.js","../Application.js","../Device.js","../Internal.js","../Location.js","../Session.js","../TelemetryTrace.js","../User.js","../TelemetryContext.js","../Initialization.js","../PropertiesPlugin.js","../../src/PowerFxFormulaEditor.base.tsx","../../src/PowerFxFormulaEditor.tsx","../../src/components/Spinner/Spinner.types.ts","../../src/PowerFxFormulaEditor.styles.ts","../../src/DelayedRender.tsx","../../src/components/Spinner/Spinner.base.tsx","../../src/components/Spinner/Spinner.styles.tsx","../../src/components/Spinner/Spinner.tsx","../../src/setVersion.ts","../node_modules/react/cjs/react.production.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/scheduler/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/isarray/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-transition-group/CSSTransition.js","../node_modules/dom-helpers/class/addClass.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/dom-helpers/class/hasClass.js","../node_modules/dom-helpers/class/removeClass.js","../node_modules/react-transition-group/ReplaceTransition.js","../node_modules/react-transition-group/utils/ChildMapping.js","../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/buffer/node_modules/isarray/index.js","../node_modules/webpack/buildin/amd-options.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/toPrimitive.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/vscode-jsonrpc/lib/browser/ril.js","../node_modules/vscode-jsonrpc/lib/common/messageBuffer.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/isNativeFunction.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/construct.js","../node_modules/vscode-jsonrpc/lib/common/messageReader.js","../node_modules/vscode-jsonrpc/lib/common/messageWriter.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/regeneratorRuntime.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/asyncToGenerator.js","../node_modules/vscode-jsonrpc/lib/common/semaphore.js","../node_modules/vscode-jsonrpc/lib/common/connection.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/toConsumableArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/nonIterableSpread.js","../node_modules/vscode-jsonrpc/lib/common/linkedMap.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/get.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/superPropBase.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/vscode-languageserver-protocol/lib/common/api.js","../node_modules/vscode-languageserver-types/lib/esm/main.js","../node_modules/vscode-languageserver-protocol/lib/common/protocol.js","../node_modules/vscode-languageserver-protocol/lib/common/utils/is.js","../node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.js","../node_modules/vscode-languageserver-protocol/lib/common/protocol.typeDefinition.js","../node_modules/vscode-languageserver-protocol/lib/common/protocol.workspaceFolders.js","../node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.js","../node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.js","../node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingRange.js","../node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.js","../node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionRange.js","../node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.js","../node_modules/vscode-languageserver-protocol/lib/common/protocol.callHierarchy.js","../node_modules/vscode-languageserver-protocol/lib/common/protocol.semanticTokens.js","../node_modules/vscode-languageserver-protocol/lib/common/protocol.showDocument.js","../node_modules/vscode-languageserver-protocol/lib/common/protocol.linkedEditingRange.js","../node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.js","../node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.js","../node_modules/vscode-languageserver-protocol/lib/common/connection.js","../node_modules/reactstrap/es/Navbar.js","../node_modules/reactstrap/es/Container.js","../node_modules/reactstrap/es/NavbarBrand.js","../node_modules/reactstrap/es/NavbarToggler.js","../node_modules/reactstrap/es/NavItem.js","../node_modules/reactstrap/es/NavLink.js","../../src/TsLibShims.ts","../node_modules/reactstrap/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/reactstrap/es/Collapse.js"],"names":["_classCallCheck","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_createClass","protoProps","staticProps","prototype","_inherits","subClass","superClass","create","constructor","value","_possibleConstructorReturn","self","call","assertThisInitialized","_createSuper","Derived","hasNativeReflectConstruct","isNativeReflectConstruct","result","Super","getPrototypeOf","NewTarget","this","Reflect","construct","arguments","apply","module","exports","require","isFalsyOrWhitespace","str","trim","_formatRegexp","format","args","replace","match","group","idx","parseInt","isNaN","escape","html","escapeRegExpCharacters","ltrim","haystack","needle","needleLen","offset","indexOf","substring","rtrim","haystackLen","lastIndexOf","convertSimple2RegExpPattern","pattern","createRegExp","searchString","isRegex","options","Error","wholeWord","test","charAt","modifiers","global","matchCase","multiline","unicode","RegExp","regExpLeadsToEndlessLoop","regexp","source","exec","lastIndex","regExpFlags","ignoreCase","splitLines","split","firstNonWhitespaceIndex","len","chCode","charCodeAt","getLeadingWhitespace","start","end","lastNonWhitespaceIndex","startIndex","compare","a","b","compareSubstring","aStart","aEnd","bStart","bEnd","codeA","codeB","aLen","bLen","compareIgnoreCase","compareSubstringIgnoreCase","diff","isUpperAsciiLetter","isLowerAsciiLetter","toLowerCase","code","isAsciiLetter","equalsIgnoreCase","doEqualsIgnoreCase","stopAt","Math","abs","String","fromCharCode","startsWithIgnoreCase","candidate","candidateLength","commonPrefixLength","min","commonSuffixLength","aLastIndex","bLastIndex","isHighSurrogate","charCode","isLowSurrogate","computeCodePoint","highSurrogate","lowSurrogate","getNextCodePoint","nextCharCode","getPrevCodePoint","prevCharCode","nextCharLength","graphemeBreakTree","GraphemeBreakTree","getInstance","initialOffset","initialCodePoint","graphemeBreakType","getGraphemeBreakType","nextCodePoint","nextGraphemeBreakType","breakBetweenGraphemeBreakType","prevCharLength","prevCodePoint","prevGraphemeBreakType","decodeUTF8","buffer","byteLength","v0","codePoint","push","uPrime","w1","w2","join","CONTAINS_RTL","containsRTL","CONTAINS_EMOJI","containsEmoji","IS_BASIC_ASCII","isBasicASCII","UNUSUAL_LINE_TERMINATORS","containsUnusualLineTerminators","containsFullWidthCharacter","isFullWidthCharacter","isEmojiImprecise","x","UTF8_BOM_CHARACTER","startsWithUTF8BOM","singleLetterHash","n","breakTypeA","breakTypeB","_data","JSON","parse","data","nodeCount","nodeIndex","_INSTANCE","getLeftDeleteOffset","emojiOffset","getUTF16Length","isEmojiModifier","optionalZwjCodePoint","getOffsetBeforeLastEmojiComponent","undefined","_getPrototypeOf","o","setPrototypeOf","bind","__proto__","_regeneratorRuntime","Op","hasOwn","hasOwnProperty","obj","desc","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","err","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","context","Context","makeInvokeMethod","tryCatch","fn","arg","type","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","method","_invoke","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","__await","then","unwrapped","error","previousPromise","callInvokeWithMethodAndArg","state","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","done","methodName","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","displayName","isGeneratorFunction","genFun","ctor","name","mark","awrap","async","Promise","iter","keys","val","object","reverse","pop","skipTempReset","prev","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","_a","LANGUAGE_DEFAULT","_isWindows","_isMacintosh","_isLinux","_isNative","_isWeb","_isIOS","_userAgent","globals","nodeProcess","vscode","process","isElectronRenderer","versions","electron","isElectronSandboxed","sandboxed","isPreferringBrowserCodeLoad","env","navigator","platform","rawNlsConfig","nlsConfig","resolved","availableLanguages","locale","_translationsConfigFile","e","console","userAgent","maxTouchPoints","language","isWindows","isMacintosh","isLinux","isNative","isWeb","isIOS","setImmediate","postMessage","importScripts","pending","addEventListener","vscodeSetImmediateId","id","splice","callback","lastId","myId","nextTick","_promise","OS","_isLittleEndian","_isLittleEndianComputed","isLittleEndian","Uint8Array","view","Uint16Array","_slicedToArray","arr","arrayWithHoles","_i","_s","_e","_x","_r","_arr","_n","_d","unsupportedIterableToArray","nonIterableRest","_assertThisInitialized","ReferenceError","UNDEFINED","Prototype","strFunction","DynInstFuncTable","DynProxyTag","DynClassName","DynInstChkTag","DynAllowInstChkTag","DynProtoDefaultOptions","UnknownValue","str__Proto","DynProtoBaseProto","DynProtoGlobalSettings","DynProtoCurrent","strUseBaseInst","strSetInstFuncs","Obj","_objGetPrototypeOf","_objGetOwnProps","_gbl","globalThis","window","_getGlobal","_gblInst","_hasOwnProperty","prop","_isObjectOrArrayPrototype","Array","_isObjectArrayOrFunctionPrototype","Function","_getObjProto","newProto","curProto","_forEachProp","func","name_1","lp","_isDynamicCandidate","funcName","skipOwn","_throwTypeError","message","_hasVisited","_getInstFunc","proto","currentDynProtoProxy","instFunc","instFuncTable","canAddInst","objProto","visited","protoFunc","_getProtoFunc","_populatePrototype","className","baseInstFuncs","setInstanceFunc","instFuncs_1","dynProtoProxy","_createDynamicPrototype","_getObjName","unknownValue","dynamicProto","theClass","delegateFunc","classProto","thisTarget","thisProto","_checkPrototype","perfOptions","useBaseInst","instFuncs","_getInstanceFuncs","baseFuncs","_instFuncProxy","funcHost","theFunc","baseProto","_getBaseFuncs","strShimFunction","strShimObject","strShimUndefined","strShimPrototype","strShimHasOwnProperty","strDefault","ObjClass","ObjProto","ObjAssign","ObjCreate","ObjDefineProperty","ObjHasOwnProperty","textDecoder","hasBuffer","Buffer","hasTextDecoder","TextDecoder","VSBuffer","toString","decode","strings","actual","isBuffer","from","byteOffset","readUInt16LE","writeUInt16LE","destination","readUInt32BE","pow","writeUInt32BE","readUInt8","writeUInt8","__createBinding","m","k","k2","get","__exportStar","p","createProtocolConnection","browser_1","reader","writer","logger","createMessageConnection","globalCssModule","mapToCssModules","cssModule","map","c","omit","omitKeys","pick","pickKeys","isArray","Element","PropTypes","oneOfType","string","propName","componentName","shape","current","any","tagPropType","$$typeof","symbol","render","arrayOf","TransitionTimeouts","Fade","Collapse","Modal","Carousel","TransitionPropTypeKeys","TransitionStatuses","ENTERING","ENTERED","EXITING","EXITED","document","createElement","_setPrototypeOf","_inheritsLoose","_extends","assign","_objectWithoutPropertiesLoose","excluded","sourceKeys","createNamedContext","createContext","historyContext","Router","location","history","_isMounted","_pendingLocation","staticContext","unlisten","listen","setState","computeRootMatch","pathname","path","url","params","isExact","componentDidMount","componentWillUnmount","RouterContext","Provider","HistoryContext","children","React","Component","cache","cacheCount","matchPath","exact","strict","sensitive","concat","reduce","matched","cacheKey","pathCache","pathToRegexp","compilePath","memo","index","Route","Consumer","computedMatch","component","Children","count","isEmptyChildren","addLeadingSlash","stripBasename","basename","base","substr","createURL","createPath","staticHandler","invariant","noop","useContext","ProtocolNotificationType","ProtocolNotificationType0","ProtocolRequestType","ProtocolRequestType0","RegistrationType","vscode_jsonrpc_1","RequestType0","ParameterStructures","byName","RequestType","NotificationType0","NotificationType","classNames","classes","argType","inner","default","isAbsolute","spliceOne","list","resolvePathname","to","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","last","up","part","unshift","valueOf","valueEqual","every","item","aValue","bValue","stripLeadingSlash","prefix","hasBasename","stripTrailingSlash","search","hash","createLocation","currentLocation","hashIndex","searchIndex","parsePath","decodeURI","URIError","locationsAreEqual","createTransitionManager","prompt","listeners","setPrompt","nextPrompt","confirmTransitionTo","action","getUserConfirmation","appendListener","isActive","listener","filter","notifyListeners","_len","_key","canUseDOM","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","createBrowserHistory","globalHistory","canUseHistory","ua","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","getDOMLocation","historyState","_ref","_window$location","createKey","random","transitionManager","nextState","handlePopState","event","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","ok","fromLocation","toLocation","toIndex","allKeys","fromIndex","delta","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","removeEventListener","isBlocked","href","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","block","unblock","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","allPaths","baseTag","querySelector","getAttribute","pushHashPath","nextPaths","clamp","lowerBound","upperBound","max","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","entries","nextIndex","nextEntries","canGo","condition","__esModule","toPropertyKey","safeProcess","sandboxProcess","cwd","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","_typeof","possibleConstructorReturn","_ral","RAL","install","ral","_unsupportedIterableToArray","minLen","BrowserRouter","createHistory","resolveToLocation","normalizeToLocation","forwardRefShim","C","forwardRef","LinkAnchor","forwardedRef","innerRef","navigate","onClick","rest","ex","preventDefault","defaultPrevented","button","metaKey","altKey","ctrlKey","shiftKey","isModifiedEvent","ref","Link","isDuplicateNavigation","ariaCurrent","activeClassName","activeStyle","classNameProp","isActiveProp","locationProp","styleProp","style","escapedPath","classnames","joinClassnames","g","Emitter","Event","ral_1","_disposable","dispose","None","CallbackList","bucket","_callbacks","_contexts","remove","foundCallbackWithDifferentContext","ret","callbacks","contexts","_options","_event","thisArgs","disposables","onFirstListenerAdd","isEmpty","add","_noop","onLastListenerRemove","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","_cachedGlobal","getGlobal","useCached","throwTypeError","objCreateFn","tmpFunc","BrowserMessageWriter","BrowserMessageReader","api_1","_onData","_messageListener","fire","fireError","onmessage","AbstractMessageReader","errorCount","msg","handleError","AbstractMessageWriter","NullLogger","ConnectionStrategy","is","connectionStrategy","array","stringArray","number","boolean","Number","elem","_arrayLikeToArray","arr2","_isNativeReflectConstruct","sham","Proxy","Boolean","_arrayWithHoles","_nonIterableRest","_toPropertyKey","input","hint","prim","toPrimitive","res","_CSSTransition","_interopRequireDefault","_ReplaceTransition","_TransitionGroup","_Transition","Transition","TransitionGroup","ReplaceTransition","CSSTransition","allowArrayLike","it","F","s","f","normalCompletion","didErr","step","_e2","arrayLikeToArray","isarray","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","tokens","defaultDelimiter","delimiter","escaped","capture","modifier","asterisk","partial","repeat","optional","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","toUpperCase","matches","flags","opts","encode","pretty","encodeURIComponent","token","segment","stringify","j","attachKeys","re","route","endsWithDelimiter","groups","regexpToRegexp","parts","arrayToRegexp","stringToRegexp","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","toObject","test1","getOwnPropertyNames","test2","test3","letter","shouldUseNative","symbols","UNMOUNTED","newObj","getOwnPropertyDescriptor","set","_interopRequireWildcard","_react","_reactDom","_reactLifecyclesCompat","_React$Component","_this","initialStatus","parentGroup","transitionGroup","appear","isMounting","enter","appearStatus","in","unmountOnExit","mountOnEnter","status","nextCallback","_proto","getChildContext","getDerivedStateFromProps","prevState","updateStatus","componentDidUpdate","prevProps","nextStatus","cancelNextCallback","getTimeouts","exit","timeout","mounting","node","findDOMNode","performEnter","performExit","_this2","appearing","timeouts","enterTimeout","onEnter","safeSetState","onEntering","onTransitionEnd","onEntered","_this3","onExit","onExiting","onExited","cancel","setNextCallback","_this4","active","handler","doesNotHaveTimeoutOrListener","addEndListener","setTimeout","_this$props","childProps","child","only","cloneElement","contextTypes","childContextTypes","propTypes","defaultProps","_default","polyfill","componentWillMount","componentWillReceiveProps","nextProps","componentWillUpdate","__reactInternalSnapshotFlag","__reactInternalSnapshot","getSnapshotBeforeUpdate","isReactComponent","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","newApiName","maybeSnapshot","snapshot","__suppressDeprecationWarning","classNamesShape","timeoutsShape","_propTypes","_ChildMapping","handleExited","firstRender","appeared","mounted","prevChildMapping","getInitialChildMapping","getNextChildMapping","currentChildMapping","getChildMapping","childFactory","isRequired","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","title","browser","argv","version","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","binding","chdir","dir","umask","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","encodingOrOffset","allocUnsafe","ArrayBuffer","fromArrayLike","fromArrayBuffer","encoding","isEncoding","write","fromString","checked","copy","fromObject","assertSize","size","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","read","buf","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","subarray","typedArraySupport","poolSize","_augment","species","fill","allocUnsafeSlow","_isBuffer","y","pos","swap16","swap32","swap64","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt32LE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","floor","writeUInt16BE","writeUInt32LE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","stringtrim","base64clean","src","dst","Disposable","CancellationSenderStrategy","CancellationReceiverStrategy","ConnectionError","ConnectionErrors","LogTraceNotification","SetTraceNotification","TraceFormat","Trace","ProgressType","ConnectionOptions","WriteableStreamMessageWriter","MessageWriter","ReadableStreamMessageReader","MessageReader","CancellationToken","CancellationTokenSource","NotificationType9","NotificationType8","NotificationType7","NotificationType6","NotificationType5","NotificationType4","NotificationType3","NotificationType2","NotificationType1","ErrorCodes","ResponseError","RequestType9","RequestType8","RequestType7","RequestType6","RequestType5","RequestType4","RequestType3","RequestType2","RequestType1","CancellationStrategy","messages_1","disposable_1","events_1","cancellation_1","messageReader_1","messageWriter_1","connection_1","isResponseMessage","isNotificationMessage","isRequestMessage","AbstractMessageSignature","ParseError","InvalidRequest","MethodNotFound","InvalidParams","InternalError","jsonrpcReservedErrorRangeStart","serverErrorStart","MessageWriteError","MessageReadError","ServerNotInitialized","UnknownErrorCode","jsonrpcReservedErrorRangeEnd","serverErrorEnd","kind","auto","byPosition","numberOfParams","_parameterStructures","isNativeFunction","_wrapNativeSuper","Class","_cache","Map","has","Wrapper","Is","freeze","isCancellationRequested","onCancellationRequested","Cancelled","shortcutEvent","timer","MutableToken","_isCancelled","_emitter","_token","MAX_SIGNED_31_BIT_INT","commonjsGlobal","createEventEmitter","handlers","h","newValue","changedBits","defaultValue","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","getUniqueId","_Component","emitter","oldValue","_Component2","getValue","onUpdate","observedBits","_proto2","reactIs","REACT_STATICS","contextType","getDefaultProps","getDerivedStateFromError","mixins","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","extendStatics","d","__extends","__","__assign","t","__spreadArray","pack","ar","l","concatStyleSets","styleSets","subComponentStyles","mergedSet","workingSubcomponentStyles","currentSet","currentComponentStyles","subCompProp","mergedValue","currentValue","mergedSubStyles","styleProps","styleFunctionOrObject","concatStyleSetsWithProps","allStyles","styles","_isSSR","getWindow","rootElement","el","ownerDocument","defaultView","GLOBAL_SETTINGS_PROP_NAME","CALLBACK_STATE_PROP_NAME","_counter","globalSettings","_getGlobalSettings","setValue","changeDescription","addChangeListener","cb","__id__","_getCallbacks","removeChangeListener","globalObj","NO_CUSTOMIZATIONS","settings","scopedSettings","inCustomizerContext","_allSettings","GlobalSettings","applySettings","Customizations","_raiseChange","applyScopedSettings","scopeName","getSettings","properties","localSettings","localScopedSettings","globalScopedSettings","property","applyBatchedUpdates","suppressUpdate","_suppressUpdates","observe","onChange","unobserve","CustomizerContext","customizations","useCustomizationSettings","forceUpdate","useForceUpdate","DefaultFields","styled","baseStyles","getProps","customizable","pure","scope","fields","Wrapped","customizedStyles","additionalProps","__cachedInputs__","propStyles","concatenatedStyles","__noStyleOverride__","pureComponent","_defineProperty","ownKeys","enumerableOnly","sym","_objectSpread2","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","sourceSymbolKeys","compose","fns","reduceRight","curry","curried","_len2","_key2","_len3","nextArgs","_key3","isObject","isFunction","errorHandler","errorMessages","initialIsRequired","initialType","initialContent","handlerType","handlersType","selectorType","changeType","changeField","validators","changes","initial","some","field","selector","_handler","extractChanges","causedChanges","updateState","didStateUpdate","_handler$field","didUpdate","update","validate","getChanges","getState","config","paths","vs","configIsRequired","configType","deprecation","urls","warn","monacoBase","merge","CANCELATION_MESSAGE","makeCancelable","promise","hasCanceled_","wrappedPromise","_state$create","config$1","isInitialized","monaco","_state$create2","_iterableToArrayLimit","injectScripts","script","body","appendChild","getMonacoLoaderScript","configureLoader","_ref2","loaderScript","createScript","onload","onerror","_ref3","storeMonacoInstance","wrapperPromise","loader","globalConfig","_validators$config","init","editor","__getMonacoInstance","_ref4","loadingStyles","display","height","width","justifyContent","alignItems","Loading","content","wrapper","position","textAlign","fullWidth","hide","MonacoContainer","isEditorReady","loading","wrapperClassName","element","bool","MonacoContainer$1","useMount","effect","useEffect","useUpdate","deps","applyChanges","isInitialMount","useRef","getOrCreateModel","getModel","crateModelUri","createModel","Uri","DiffEditor","original","modified","originalLanguage","modifiedLanguage","originalModelPath","modifiedModelPath","keepCurrentOriginalModel","keepCurrentModifiedModel","theme","beforeMount","onMount","useState","setIsEditorReady","isMonacoMounting","setIsMonacoMounting","editorRef","monacoRef","containerRef","onMountRef","beforeMountRef","cancelable","catch","_models$original","_models$modified","models","disposeEditor","modifiedEditor","getModifiedEditor","getOption","EditorOption","readOnly","executeEdits","range","getFullModelRange","text","forceMoveMarkers","pushUndoStop","setModelLanguage","setTheme","updateOptions","setModels","useCallback","originalModel","modifiedModel","setModel","createEditor","createDiffEditor","automaticLayout","usePrevious","backup","getModelMarkersSetter","setModelMarkersSetter","viewStates","Editor","defaultLanguage","defaultPath","line","overrideServices","saveViewState","keepCurrentModel","onValidate","subscriptionRef","valueRef","previousPath","_subscriptionRef$curr2","_editorRef$current$ge","model","restoreViewState","revealLine","autoCreatedModelPath","defaultModel","setModelMarkers","_subscriptionRef$curr","_editorRef$current","onDidChangeModelContent","editorValue","owner","markers","_getModelMarkersSette","_stylesheet","InjectionMode","STYLESHEET_SETTING","REUSE_STYLE_NODE","_rtl","serializedStylesheet","_rules","_preservedRules","_keyToClassName","_onInsertRuleCallbacks","_onResetCallbacks","_classNameToArgs","_config","injectionMode","defaultPrefix","namespace","cspSettings","classNameToArgs","counter","classNameCache","keyToClassName","preservedRules","rules","_lastStyleElement","fabricConfig","FabricConfig","stylesheet","Stylesheet","mergeStyles","serialize","setConfig","onReset","onInsertRule","getClassName","cacheClassName","classNameFromKey","getClassNameCache","argsFromClassName","insertedRulesFromClassName","insertRule","rule","preserve","_getStyleElement","sheet","cssRules","createTextNode","getRules","includePreservedRules","resetKeys","_styleElement","_createStyleElement","requestAnimationFrame","head","styleElement","nodeToInsertBefore","setAttribute","nonce","nextElementSibling","placeholderStyleTag","_findPlaceholderStyleTag","childNodes","insertBefore","contains","extractStyleParts","objects","_processArgs","argsList","translatedArgs","setRTL","isRTL","getRTL","documentElement","getStyleOptions","rtl","_vendorSettings","kebabRules","rulePairs","autoPrefixNames","prefixRules","vendorSettings","doc","nav","isWebkit","isMoz","isOpera","isMs","getVendorSettings","NON_PIXEL_NUMBER_PROPS","provideUnits","isNonPixelProp","isVariableOrPrefixed","unit","NAME_REPLACEMENTS","VALUE_REPLACEMENTS","rtlifyRules","flipQuad","partIndex","numberVal","negateNum","getDisplayName","rootStyle","globalSelectorRegExp","expandSelector","newSelector","currentSelector","extractSelector","__order","extractRules","selectorWithGlobals","replacementInfo","findGlobal","v","matchIndex","matchEndIndex","replacement","expandCommaSeparatedGlobals","separatedSelector","currentRules","expandedRules","propValue","selectors","expandQuads","partStart","parens","tokenizeWithParentheses","getKeyForRules","serialized","hasProps","rulesForSelector","repeatString","serializeRuleEntries","ruleEntries","allEntries","styleToRegistration","registration","rulesToInsert","applyRegistration","specificityMultiplier","processedRule","mergeStyleSets","mergeCssSets","classNameSet","concatenatedStyleSet","registrations","styleSetArea","KeyCodes","getDocument","getItem","win","sessionStorage","setItem","_isRTL","RTL_LOCAL_STORAGE_KEY","savedRTL","persistSetting","_memoizedClassNames","classNamesFunction","styleCalcCount","getClassNamesCount","currentMemoizedClassNames","useStaticStyles","disableCaching","_traverseMap","cacheSize","enableClassNameCacheFullWarning","trace","clear","_traverseEdge","_normalizeValue","inputs","mergeCss","styleToClassName","keyframes","timeline","rulesArray","EASING_FUNCTION_1","EASING_FUNCTION_2","DURATION_1","DURATION_2","DURATION_3","DURATION_4","FADE_IN","opacity","FADE_OUT","visibility","SLIDE_RIGHT_IN10","_createSlideInX","SLIDE_RIGHT_IN20","SLIDE_RIGHT_IN40","SLIDE_RIGHT_IN400","SLIDE_LEFT_IN10","SLIDE_LEFT_IN20","SLIDE_LEFT_IN40","SLIDE_LEFT_IN400","SLIDE_UP_IN10","_createSlideInY","SLIDE_UP_IN20","SLIDE_DOWN_IN10","SLIDE_DOWN_IN20","SLIDE_RIGHT_OUT10","_createSlideOutX","SLIDE_RIGHT_OUT20","SLIDE_RIGHT_OUT40","SLIDE_RIGHT_OUT400","SLIDE_LEFT_OUT10","SLIDE_LEFT_OUT20","SLIDE_LEFT_OUT40","SLIDE_LEFT_OUT400","SLIDE_UP_OUT10","_createSlideOutY","SLIDE_UP_OUT20","SLIDE_DOWN_OUT10","SLIDE_DOWN_OUT20","SCALE_UP100","transform","SCALE_DOWN98","SCALE_DOWN100","SCALE_UP103","ROTATE90","ROTATE_N90","_createAnimation","animationName","animationDuration","animationTimingFunction","animationFillMode","fromX","pointerEvents","fromY","toX","toY","LocalizedFontNames","LocalizedFontFamilies","FontSizes","FontWeights","IconFontSizes","AnimationClassNames","styleName","buildClassMap","slideRightIn10","slideRightIn20","slideRightIn40","slideRightIn400","slideLeftIn10","slideLeftIn20","slideLeftIn40","slideLeftIn400","slideUpIn10","slideUpIn20","slideDownIn10","slideDownIn20","slideRightOut10","slideRightOut20","slideRightOut40","slideRightOut400","slideLeftOut10","slideLeftOut20","slideLeftOut40","slideLeftOut400","slideUpOut10","slideUpOut20","slideDownOut10","slideDownOut20","scaleUpIn100","scaleDownIn100","scaleUpOut103","scaleDownOut98","fadeIn100","fadeIn200","fadeIn400","fadeIn500","fadeOut100","fadeOut200","fadeOut400","fadeOut500","rotate90deg","rotateN90deg","Arabic","Cyrillic","EastEuropean","Greek","Hebrew","Thai","Vietnamese","WestEuropean","Selawik","Armenian","Georgian","ChineseSimplified","ChineseTraditional","Hindi","Japanese","Korean","size10","size12","size14","size16","size18","size20","size24","size28","size32","size42","size68","mini","xSmall","small","smallPlus","medium","mediumPlus","icon","large","xLarge","xLargePlus","xxLarge","xxLargePlus","superLarge","mega","light","semilight","regular","semibold","bold","HighContrastSelector","getScreenSelector","ZIndexes","IsFocusVisibleClassName","IsFocusHiddenClassName","setFocusVisibility","enabled","classList","getFocusStyle","insetOrOptions","highContrastStyle","borderColor","outlineColor","isFocusedOnly","_getFocusStyleInternal","inset","palette","white","neutralSecondary","outline","border","left","top","bottom","right","zIndex","FocusStyle","Nav","ScrollablePane","Coachmark","Layer","KeytipLayer","hiddenContentStyle","margin","padding","overflow","whiteSpace","_initializedStylesheetResets","_resetCounter","_emptyObject","empty","_dictionary","_weakMap","WeakMap","resetMemoizations","memoizeFunction","maxCacheSize","ignoreNullOrUndefinedResult","rootNode","localResetCounter","currentNode","_createNode","_normalizeArg","_getGlobalClassNames","disableGlobalClassNames","styleSheet","acc","getGlobalClassNames","Depths","DefaultPalette","themeDarker","themeDark","themeDarkAlt","themePrimary","themeSecondary","themeTertiary","themeLight","themeLighter","themeLighterAlt","black","blackTranslucent40","neutralDark","neutralPrimary","neutralPrimaryAlt","neutralSecondaryAlt","neutralTertiary","neutralTertiaryAlt","neutralQuaternary","neutralQuaternaryAlt","neutralLight","neutralLighter","neutralLighterAlt","accent","whiteTranslucent40","yellowDark","yellow","yellowLight","orange","orangeLight","orangeLighter","redDark","red","magentaDark","magenta","magentaLight","purpleDark","purple","purpleLight","blueDark","blueMid","blue","blueLight","tealDark","teal","tealLight","greenDark","green","greenLight","depth0","depth4","depth8","depth16","depth64","DefaultEffects","elevation4","elevation8","elevation16","elevation64","roundedCorner2","roundedCorner4","roundedCorner6","fontFace","font","_language","defaultFontFamily","LanguageToFontMap","bg","cs","et","he","hr","hu","ja","kk","ko","lt","lv","pl","ru","sk","th","tr","uk","vi","hy","ka","_createFont","weight","fontFamily","MozOsxFontSmoothing","WebkitFontSmoothing","fontSize","fontWeight","STORAGE_KEY","DefaultFontStyles","localeCode","fontFamilyWithFallback","lang","_getLocalizedFontFamily","tiny","createFontStyles","persistenceType","savedLanguage","localStorage","getLanguage","_registerFontFace","localFontName","localFontSrc","fontStyle","fontDisplay","_registerFontFaceSet","baseUrl","cdnFolder","cdnFontName","urlBase","circularReferences","isCircularReference","fontUrl","registerDefaultFontFaces","fontBaseUrl","_getFontBaseUrl","makeSemanticColors","isInverted","depComments","dep","listTextColor","listText","menuItemBackgroundChecked","warningHighlight","warningText","messageText","successText","_fixDeprecatedSlots","getSemanticColors","primaryButtonBorder","errorText","messageLink","messageLinkHovered","infoIcon","errorIcon","blockingIcon","warningIcon","severeWarningIcon","successIcon","infoBackground","errorBackground","blockingBackground","warningBackground","severeWarningBackground","successBackground","bodyBackground","bodyFrameBackground","accentButtonText","buttonBackground","primaryButtonText","primaryButtonTextHovered","primaryButtonTextPressed","inputBackground","inputForegroundChecked","listBackground","menuBackground","cardStandoutBackground","bodyTextChecked","buttonTextCheckedHovered","link","primaryButtonBackground","inputBackgroundChecked","inputIcon","inputFocusBorderAlt","menuIcon","menuHeader","accentButtonBackground","primaryButtonBackgroundPressed","inputBackgroundCheckedHovered","inputIconHovered","linkHovered","primaryButtonBackgroundHovered","inputPlaceholderBackgroundChecked","bodyBackgroundChecked","bodyFrameDivider","bodyDivider","variantBorder","buttonBackgroundCheckedHovered","buttonBackgroundPressed","listItemBackgroundChecked","listHeaderBackgroundPressed","menuItemBackgroundPressed","bodyBackgroundHovered","buttonBackgroundHovered","buttonBackgroundDisabled","buttonBorderDisabled","primaryButtonBackgroundDisabled","disabledBackground","listItemBackgroundHovered","listHeaderBackgroundHovered","menuItemBackgroundHovered","primaryButtonTextDisabled","disabledSubtext","listItemBackgroundCheckedHovered","disabledBodyText","variantBorderHovered","buttonTextDisabled","inputIconDisabled","disabledText","bodyText","actionLink","buttonText","inputBorderHovered","inputText","menuItemText","bodyStandoutBackground","defaultStateBackground","actionLinkHovered","buttonTextHovered","buttonTextChecked","buttonTextPressed","inputTextHovered","menuItemTextHovered","bodySubtext","focusBorder","inputBorder","smallInputBorder","inputPlaceholderText","buttonBorder","disabledBodySubtext","disabledBorder","buttonBackgroundChecked","menuDivider","cardShadow","cardShadowHovered","DefaultSpacing","s2","s1","l1","l2","createTheme","partialTheme","mergedTheme","semanticColors","effects","defaultFontStyle","fonts","mergeThemes","spacing","_theme","_onThemeChangeCallbacks","ThemeSettingName","initializeThemeInCustomizations","legacyTheme","lines","fontName","_loadFonts","loadTheme","_iconSettings","__options","disableWarnings","warnOnMissingIcons","__remapped","subset","normalizeIconName","_createForOfIteratorHelper","_format","localize","USUAL_WORD_SEPARATORS","DEFAULT_WORD_REGEXP","allowInWords","sep","createWordRegExp","ensureValidWordDefinition","wordDefinition","_defaultConfig","maxLen","windowSize","timeBudget","getWordAtText","column","textOffset","t1","Date","now","prevRegexIndex","regexIndex","thisMatch","_findRegexMatchEnclosingPosition","word","startColumn","endColumn","stopPos","ConfigurationChangedEvent","_values","ValidatedEditorOptions","option","ComputeOptionsMemory","stableMinimapLayoutInput","stableFitMaxMinimapScale","stableFitRemainingWidth","BaseEditorOption","schema","ComputedEditorOption","SimpleEditorOption","EditorBooleanOption","EditorIntOption","minimum","maximum","clampedInt","r","EditorFloatOption","validationFn","float","parseFloat","EditorStringOption","stringSet","allowedValues","EditorStringEnumOption","enum","_allowedValues","EditorEnumOption","defaultStringValue","convert","_convert","TextEditorCursorStyle","EditorAccessibilitySupport","enumDescriptions","nls","description","accessibilitySupport","EditorComments","defaults","insertSpace","ignoreEmptyLines","_input","EditorClassName","_","extraEditorClassName","EditorEmptySelectionClipboard","emptySelectionClipboard","EditorFind","cursorMoveOnType","seedSearchStringFromSelection","autoFindInSelection","globalFindClipboard","addExtraSpaceOnTop","loop","included","EditorFontLigatures","OFF","anyOf","ON","EditorFontInfo","fontInfo","EditorFontSize","EDITOR_FONT_DEFAULTS","EditorFontWeight","MINIMUM_VALUE","MAXIMUM_VALUE","errorMessage","SUGGESTION_VALUES","EditorGoToLocation","multiple","multipleDefinitions","multipleTypeDefinitions","multipleDeclarations","multipleImplementations","multipleReferences","alternativeDefinitionCommand","alternativeTypeDefinitionCommand","alternativeDeclarationCommand","alternativeImplementationCommand","alternativeReferenceCommand","jsonSubset","alternativeCommandOptions","deprecationMessage","_b","_c","EditorHover","delay","sticky","EditorLayoutInfoComputer","computeLayout","memory","outerWidth","outerHeight","isDominatedByLongLines","lineHeight","viewLineCount","lineNumbersDigitCount","typicalHalfwidthCharacterWidth","maxDigitWidth","pixelRatio","typicalViewportLineCount","extraLinesBeyondLastLine","scrollBeyondLastLine","desiredRatio","minimapLineCount","minimap","renderMinimap","minimapLeft","minimapWidth","minimapHeightIsEditorHeight","minimapIsSampling","minimapScale","minimapLineHeight","minimapCanvasInnerWidth","minimapCanvasInnerHeight","minimapCanvasOuterWidth","minimapCanvasOuterHeight","couldUseMemory","side","showSlider","renderCharacters","maxColumn","scale","verticalScrollbarWidth","isViewportWrapping","minimapRenderCharacters","round","minimapMaxColumn","minimapSize","minimapSide","remainingWidth","baseCharHeight","minimapCharWidth","minimapWidthMultiplier","computeContainedMinimapLineCount","fitBecomesFill","maxMinimapScale","effectiveMinimapHeight","ceil","configuredMinimapScale","minimapMaxWidth","lineDecorationsWidth","wordWrapOverride2","wordWrapOverride1","wordWrap","wordWrapColumn","showGlyphMargin","showLineNumbers","renderType","lineNumbersMinChars","scrollbar","verticalScrollbarSize","verticalScrollbarHasArrows","verticalHasArrows","scrollbarArrowSize","arrowSize","horizontalScrollbarHeight","horizontalScrollbarSize","rawLineDecorationsWidth","folding","lineNumbersWidth","digitCount","glyphMarginWidth","glyphMarginLeft","lineNumbersLeft","decorationsLeft","contentLeft","isWordWrapMinified","wrappingColumn","minimapLayout","_computeMinimapLayout","contentWidth","viewportColumn","verticalArrowSize","decorationsWidth","overviewRuler","EditorLightbulb","EditorInlayHints","markdownDescription","EditorLineHeight","EditorMinimap","EditorPadding","EditorParameterHints","cycle","EditorPixelRatio","EditorQuickSuggestions","other","comments","EditorRenderLineNumbersOption","renderFn","lineNumbers","filterValidationDecorations","renderValidationDecorations","EditorRulers","columnSchema","items","color","rulers","_element","sort","_scrollbarVisibilityFromString","EditorScrollbar","vertical","horizontal","useShadows","horizontalHasArrows","horizontalSliderSize","verticalSliderSize","handleMouseWheel","alwaysConsumeMouseWheel","scrollByPage","InlineEditorSuggest","mode","EditorSuggest","insertMode","filterGraceful","snippetsPreventQuickSuggestions","localityBonus","shareSuggestSelections","showIcons","showStatusBar","preview","previewMode","showInlineDetails","showMethods","showFunctions","showConstructors","showDeprecated","showFields","showVariables","showClasses","showStructs","showInterfaces","showModules","showProperties","showEvents","showOperators","showUnits","showValues","showConstants","showEnums","showEnumMembers","showKeywords","showWords","showColors","showFiles","showReferences","showFolders","showTypeParameters","showSnippets","showUsers","showIssues","SmartSelect","selectLeadingAndTrailingWhitespace","EditorTabFocusMode","tabFocusMode","EditorWrappingInfoComputer","layoutInfo","letterSpacing","EDITOR_MODEL_DEFAULTS","editorOptionsRegistry","register","EditorOptions","acceptSuggestionOnCommitCharacter","acceptSuggestionOnEnter","markdownEnumDescriptions","accessibilityPageSize","ariaLabel","autoClosingBrackets","autoClosingDelete","autoClosingOvertype","autoClosingQuotes","autoIndent","autoSurround","stickyTabStops","codeLens","codeLensFontFamily","codeLensFontSize","colorDecorators","columnSelection","contextmenu","copyWithSyntaxHighlighting","cursorBlinking","cursorBlinkingStyle","cursorSmoothCaretAnimation","cursorStyle","Line","Block","Underline","LineThin","BlockOutline","UnderlineThin","cursorSurroundingLines","cursorSurroundingLinesStyle","cursorWidth","disableLayerHinting","disableMonospaceOptimizations","domReadOnly","dragAndDrop","fastScrollSensitivity","find","fixedOverflowWidgets","foldingStrategy","foldingHighlight","foldingImportsByDefault","unfoldOnClickAfterEndOfLine","fontLigatures2","formatOnPaste","formatOnType","glyphMargin","gotoLocation","hideCursorInOverviewRuler","highlightActiveIndentGuide","hover","inDiffEditor","lightbulb","linkedEditing","links","matchBrackets","mouseStyle","mouseWheelScrollSensitivity","mouseWheelZoom","multiCursorMergeOverlapping","multiCursorModifier","comment","multiCursorPaste","occurrencesHighlight","overviewRulerBorder","overviewRulerLanes","parameterHints","peekWidgetDefaultFocus","definitionLinkOpensInPeek","quickSuggestions","quickSuggestionsDelay","renameOnType","markdownDeprecationMessage","renderControlCharacters","renderIndentGuides","renderFinalNewline","renderLineHighlight","renderLineHighlightOnlyWhenFocus","renderWhitespace","revealHorizontalRightPadding","roundedSelection","scrollBeyondLastColumn","scrollPredominantAxis","selectionClipboard","selectionHighlight","selectOnLineNumbers","showFoldingControls","showUnused","inlayHints","snippetSuggestions","smartSelect","smoothScrolling","stopRenderingLineAfter","suggest","inlineSuggest","suggestFontSize","suggestLineHeight","suggestOnTriggerCharacters","suggestSelection","tabCompletion","tabIndex","unusualLineTerminators","useShadowDOM","useTabStops","wordSeparators","wordWrapBreakAfterCharacters","wordWrapBreakBeforeCharacters","wrappingIndent","wrappingStrategy","editorClassName","wrappingInfo","_superPropBase","receiver","_iterableToArray","_toConsumableArray","unexpectedErrorHandler","stack","onUnexpectedError","isPromiseCanceledError","onUnexpectedExternalError","transformErrorForSerialization","$isError","stacktrace","canceledName","canceled","illegalArgument","illegalState","Parent","didCall","Iterable","single","concatNested","thing","_empty","predicate","iterables","first","reducer","initialValue","consume","atMost","POSITIVE_INFINITY","consumed","comparator","at","bt","ai","bi","an","bn","disposableTracker","trackDisposable","markAsDisposed","disposable","setParentOfDisposable","parent","setParent","setParentOfDisposables","MultiDisposeError","errors","combinedDisposable","toDisposable","DisposableStore","_toDispose","Set","_isDisposed","DISABLE_DISPOSED_WARNING","_store","MutableDisposable","_value","ImmortalReference","Node","Undefined","LinkedList","_first","_last","_size","_insert","atTheEnd","newNode","oldLast","oldFirst","didRemove","_remove","anchor","hasPerformanceNow","performance","StopWatch","highResolution","_highResolution","_startTime","_now","_stopTime","didFire","each","output","debounce","subscription","leading","leakWarningThreshold","numDebouncedCalls","cur","_output","latch","firstCall","shouldEmit","signal","events","isT","_buffer","flush","onFirstListenerDidAdd","ChainableEvent","chain","fromNodeEventEmitter","eventName","fromDOMEventEmitter","toPromise","EventProfiling","_listenerCount","_invocationCount","_elapsedOverall","_name","_idPool","_stopWatch","elapsed","toFixed","_disposed","_leakageMon","_perfMon","_profName","_listeners","firstListener","onListenerDidAdd","removeMonitor","check","_deliveryQueue","shift","PauseableEmitter","_isPaused","_eventQueue","_mergeFn","DebounceEmitter","_delay","_handle","pause","resume","EventBufferer","buffers","Relay","listening","inputEvent","inputEventListener","isCancellationToken","KeyCodeUtils","_parentListener","KeyCodeStrMap","_keyCodeToStr","_strToKeyCode","keyCode","uiMap","userSettingsUSMap","userSettingsGeneralMap","createKeybinding","keybinding","firstPart","chordPart","ChordKeybinding","createSimpleKeybinding","ctrlCmd","winCtrl","SimpleKeybinding","uiLabel","usUserSettingsLabel","generalUserSettingsLabel","keyCodeToStr","strToKeyCode","toUserSettingsUS","toUserSettingsGeneral","fromUserSettings","ResolvedKeybindingPart","kbLabel","kbAriaLabel","keyLabel","keyAriaLabel","ResolvedKeybinding","CHAR_DOT","CHAR_FORWARD_SLASH","CHAR_BACKWARD_SLASH","CHAR_COLON","ErrorInvalidArgType","expected","determiner","validateString","isPathSeparator","isPosixPathSeparator","isWindowsDeviceRoot","normalizeString","allowAboveRoot","separator","lastSegmentLength","lastSlash","dots","lastSlashIndex","pathObject","root","win32","resolvedDevice","resolvedTail","resolvedAbsolute","rootEnd","device","normalize","tail","joined","needsReplace","slashCount","firstLen","relative","fromOrig","toOrig","fromStart","fromEnd","fromLen","toStart","toEnd","toLen","lastCommonSep","fromCode","toNamespacedPath","resolvedPath","dirname","matchedSlash","extIdx","firstNonSlashEnd","extname","startDot","startPart","preDotState","posix","trailingSeparator","hasRoot","_schemePattern","_singleSlashStart","_doubleSlashStart","_validateUri","_strict","scheme","authority","query","fragment","_schemeFix","_referenceResolution","_slash","_regexp","URI","schemeOrData","uriToFsPath","change","skipEncoding","_asFormatted","fsPath","with","percentDecode","components","uri","newPath","pathFragment","file","_formatted","external","_fsPath","_sep","_pathSepMarker","$mid","encodeTable","encodeURIComponentFast","uriComponent","allowSlash","nativeEncodePos","encodeURIComponentMinimal","keepDriveLetterCasing","encoder","userinfo","decodeURIComponentGraceful","decodeURIComponent","_rEncodedAsHex","AccessibilitySupport","CompletionItemInsertTextRule","CompletionItemKind","CompletionItemTag","CompletionTriggerKind","ContentWidgetPositionPreference","CursorChangeReason","DefaultEndOfLine","DocumentHighlightKind","EditorAutoIndentStrategy","EndOfLinePreference","EndOfLineSequence","IndentAction","InlayHintKind","InlineCompletionTriggerKind","KeyCode","MarkerSeverity","MarkerTag","MinimapPosition","MouseTargetType","OverlayWidgetPositionPreference","OverviewRulerLane","RenderLineNumbersType","RenderMinimap","ScrollType","ScrollbarVisibility","SelectionDirection","SignatureHelpTriggerKind","SymbolKind","SymbolTag","TextEditorCursorBlinkingStyle","TrackedRangeStickiness","WrappingIndent","Position","lineNumber","newLineNumber","newColumn","deltaLineNumber","deltaColumn","isBefore","isBeforeOrEqual","aLineNumber","bLineNumber","Range","startLineNumber","endLineNumber","containsPosition","containsRange","strictContainsRange","plusRange","intersectRanges","equalsRange","getEndPosition","getStartPosition","collapseToStart","otherRange","resultStartLineNumber","resultStartColumn","resultEndLineNumber","resultEndColumn","otherStartLineNumber","otherStartColumn","otherEndLineNumber","otherEndColumn","aStartLineNumber","bStartLineNumber","aStartColumn","bStartColumn","aEndLineNumber","bEndLineNumber","Selection","selectionStartLineNumber","selectionStartColumn","positionLineNumber","positionColumn","selectionsEqual","getDirection","sel","direction","Token","_tokenBrand","TokenizationResult","endState","_tokenizationResultBrand","TokenizationResult2","_tokenizationResult2Brand","KeyMod","secondPart","KeyChord","createMonacoBaseAPI","languages","standaloneEnums","CtrlCmd","Shift","Alt","WinCtrl","_util","serviceIds","DI_TARGET","DI_DEPENDENCIES","getServiceDependencies","IInstantiationService","createDecorator","storeServiceDependency","serviceId","serviceIdentifier","ICodeEditorService","WindowManager","_zoomLevel","_lastZoomLevelChangeTime","_onDidChangeZoomLevel","onDidChangeZoomLevel","_zoomFactor","ctx","getContext","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","getZoomLevel","INSTANCE","getPixelRatio","isFirefox","isWebKit","isChrome","isSafari","isWebkitWebView","isAndroid","isStandalone","matchMedia","KEY_CODE_MAP","INVERSE_KEY_CODE_MAP","ctrlKeyMod","metaKeyMod","StandardKeyboardEvent","_standardKeyboardEventBrand","browserEvent","char","extractKeyCode","_asKeybinding","_computeKeybinding","_asRuntimeKeybinding","_computeRuntimeKeybinding","stopPropagation","hasDifferentOriginAncestorFlag","sameOriginWindowChainCache","getParentWindowIfSameOrigin","w","parentLocation","origin","protocol","hostname","port","IframeUtils","iframeElement","frameElement","getSameOriginWindowChain","childWindow","ancestorWindow","windowChainEl","scrollY","scrollX","boundingRect","getBoundingClientRect","StandardMouseEvent","timestamp","leftButton","middleButton","rightButton","buttons","detail","pageX","posx","posy","pageY","clientX","scrollLeft","clientY","scrollTop","iframeOffsets","getPositionOfChildWindowRelativeToAncestorWindow","StandardWheelEvent","deltaX","deltaY","targetNode","srcElement","e1","e2","wheelDeltaY","VERTICAL_AXIS","axis","ev","deltaMode","DOM_DELTA_LINE","wheelDeltaX","HORIZONTAL_AXIS","wheelDelta","__awaiter","thisArg","_arguments","P","fulfilled","rejected","createCancelablePromise","thenable","onfinally","finally","Throttler","activePromise","queuedPromise","queuedPromiseFactory","promiseFactory","onComplete","Delayer","defaultDelay","completionPromise","doResolve","doReject","task","cancelTimeout","ThrottledDelayer","delayer","throttler","trigger","millis","disposableTimeout","runWhenIdle","TimeoutTimer","runner","setIfNotSet","IntervalTimer","clearInterval","interval","setInterval","RunOnceScheduler","timeoutToken","timeoutHandler","onTimeout","isScheduled","doRun","requestIdleCallback","cancelIdleCallback","dummyIdle","didTimeout","timeRemaining","disposed","Promises","Schemas","IdleValue","executor","_didRun","_executor","_error","settled","promises","firstError","all","inMemory","internal","walkThrough","walkThroughSnippet","http","https","mailto","untitled","command","vscodeRemote","vscodeRemoteResource","userData","vscodeCustomEditor","vscodeNotebook","vscodeNotebookCell","vscodeNotebookCellMetadata","vscodeNotebookCellOutput","vscodeInteractive","vscodeInteractiveInput","vscodeSettings","vscodeWorkspaceTrust","vscodeTerminal","webviewPanel","vscodeWebview","extension","vscodeFileResource","tmp","RemoteAuthorities","_hosts","_ports","_connectionTokens","_preferredWebSchema","_delegate","host","connectionToken","FileAccess","FALLBACK_AUTHORITY","uriOrModule","moduleIdToUrl","__forceCodeFileUri","toUri","rewrite","convertToVSCodeFileResource","isUri","toUrl","BrowserFeatures","queryCommandSupported","clipboard","writeText","readText","keyboard","PointerEvent","clearNode","firstChild","isInDOM","isConnected","DomListener","_node","_type","addDisposableListener","useCaptureOrOptions","_wrapAsStandardMouseEvent","addStandardDisposableListener","useCapture","wrapHandler","_wrapAsStandardKeyboardEvent","addStandardDisposableGenericMouseDownListner","addDisposableGenericMouseDownListner","EventType","POINTER_DOWN","MOUSE_DOWN","addDisposableGenericMouseUpListner","POINTER_UP","MOUSE_UP","addDisposableNonBubblingMouseOutListener","toElement","relatedTarget","parentNode","addDisposableNonBubblingPointerOutListener","runAtThisOrScheduleAtNextAnimationFrame","scheduleAtNextAnimationFrame","_animationFrame","doRequestAnimationFrame","msRequestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","getTime","AnimationFrameQueueItem","priority","_runner","_canceled","NEXT_QUEUE","CURRENT_QUEUE","animFrameRequested","inAnimationFrameRunner","animationFrameRunner","execute","DEFAULT_EVENT_MERGER","lastEvent","currentEvent","TimeoutThrottledDomListener","eventMerger","minimumTimeMs","lastHandlerTime","_register","invokeHandler","elapsedTime","addDisposableThrottledListener","getComputedStyle","getClientArea","Dimension","clientWidth","clientHeight","visualViewport","innerWidth","innerHeight","SizeUtils","cssPropertyName","jsPropertyName","computedStyle","getPropertyValue","convertToPixels","getDimension","getTopLeftOffset","offsetParent","offsetTop","offsetLeft","isShadowRoot","getBorderLeftWidth","getBorderTopWidth","getDomNodePagePosition","domNode","bb","StandardWindow","getTotalWidth","getMarginLeft","getMarginRight","offsetWidth","getContentWidth","getBorderRightWidth","getPaddingLeft","getPaddingRight","getContentHeight","getBorderBottomWidth","getPaddingTop","getPaddingBottom","offsetHeight","getTotalHeight","getMarginTop","getMarginBottom","isAncestor","testChild","testAncestor","findParentWithClass","clazz","stopAtClazzOrNode","nodeType","ELEMENT_NODE","hasParentWithClass","isInShadowDOM","getShadowRoot","getActiveElement","activeElement","shadowRoot","createStyleSheet","container","getElementsByTagName","media","_sharedStyleSheet","getSharedStyleSheet","getDynamicStyleSheetRules","createCSSRule","cssText","removeCSSRulesContainingSelector","ruleName","toDelete","selectorText","deleteRule","isHTMLElement","HTMLElement","nodeName","CLICK","AUXCLICK","DBLCLICK","MOUSE_OVER","MOUSE_MOVE","MOUSE_OUT","MOUSE_ENTER","MOUSE_LEAVE","MOUSE_WHEEL","POINTER_MOVE","CONTEXT_MENU","WHEEL","KEY_DOWN","KEY_PRESS","KEY_UP","LOAD","BEFORE_UNLOAD","UNLOAD","ABORT","ERROR","RESIZE","SCROLL","FULLSCREEN_CHANGE","WK_FULLSCREEN_CHANGE","SELECT","CHANGE","SUBMIT","RESET","FOCUS","FOCUS_IN","FOCUS_OUT","BLUR","INPUT","STORAGE","DRAG_START","DRAG","DRAG_ENTER","DRAG_LEAVE","DRAG_OVER","DROP","DRAG_END","ANIMATION_START","ANIMATION_END","ANIMATION_ITERATION","EventHelper","cancelBubble","returnValue","saveParentsScrollTop","restoreParentsScrollTop","FocusTracker","_onDidFocus","onDidFocus","_onDidBlur","onDidBlur","hasFocus","loosingFocus","onFocus","onBlur","_refreshStateHandler","trackFocus","append","prepend","innerText","Namespace","SELECTOR_REGEX","_$","attrs","tagName","HTML","createElementNS","$","show","elements","removeAttribute","tag","computeScreenAwareSize","cssPx","screenPx","windowOpenNoOpener","open","animate","stepDisposable","asCSSUrl","asBrowserUri","asCSSPropertyValue","SVG","setPreferredWebSchema","ModifierKeyEmitter","_subscriptions","_keyStatus","lastKeyPressed","lastKeyReleased","resetKeyStatus","doResetKeyStatus","addMatchMediaChangeListener","mediaQueryList","StringIterator","_pos","ConfigKeysIterator","_caseSensitive","_from","_to","justSeps","PathIterator","_splitOnBackslash","ch","UriIterator","_ignorePathCasing","_states","_stateIdx","_pathIterator","hasNext","cmp","TernarySearchTreeNode","mid","TernarySearchTree","segments","_iter","_root","oldElement","_getNode","_delete","superStr","_entries","ignorePathCasing","ResourceMap","mapOrKeyFn","toKey","defaultToKey","resource","delete","clb","tuple","LinkedMap","_map","_head","_tail","_state","touch","previous","addItemLast","addItemFirst","removeItem","callbackfn","newSize","currentSize","LRUCache","ratio","_limit","_ratio","checkTrim","trimOld","revive","depth","toPosixPath","osPath","toSlashes","originalFSPath","DataUri","ExtUri","uri1","uri2","ignoreFragment","strCompare","getComparisonKey","joinPath","normalizedPath","newURI","extpath","extUri","isEqual","basenameOrAuthority","normalizePath","resolvePath","isString","isNumber","isBoolean","isUndefined","isUndefinedOrNull","assertType","validateConstraints","constraints","validateConstraint","constraint","getAllMethodNames","methods","getAllPropertyNames","createProxyObject","methodNames","createProxyMethod","withNullAsUndefined","META_DATA_LABEL","META_DATA_DESCRIPTION","META_DATA_SIZE","META_DATA_MIME","parseMetaData","dataUri","metadata","mime","EditorOpenContext","ICommandService","CommandsRegistry","_commands","_onDidRegisterCommand","onDidRegisterCommand","idOrCommand","registerCommand","actualHandler","accessor","commands","removeFn","oldId","newId","executeCommand","getCommand","IOpenerService","_serviceBrand","registerOpener","registerValidator","registerExternalUriResolver","setDefaultExternalOpener","registerExternalOpener","resolveExternalUri","matchesScheme","__decorate","decorators","decorate","__param","paramIndex","decorator","CommandOpener","_commandService","allowCommands","EditorOpener","_editorService","selection","openCodeEditor","fromUserGesture","USER","API","editorOptions","getFocusedCodeEditor","openToSide","OpenerService","editorService","commandService","_openers","_validators","_resolvers","_resolvedUriTargets","_externalOpeners","_defaultExternalOpener","openExternal","dom","_doOpenExternal","opener","validator","resolver","externalOpener","targetURI","validationTarget","shouldOpen","externalUri","allowContributedOpeners","preferredOpenerId","sourceUri","deepClone","mixin","overwrite","one","oneKeys","otherKeys","getOrDefault","defaultOptions","followsCaret","ignoreCharChanges","alwaysRevealFirst","DiffNavigator","_onDidUpdate","_editor","nextIdx","ranges","ignoreSelectionChange","revealFirst","onDidDispose","onDidUpdateDiff","_onDiffUpdated","onDidChangeCursorPosition","onDidChangeModel","_init","getLineChanges","_compute","lineChanges","lineChange","charChanges","charChange","rhs","modifiedStartLineNumber","modifiedStartColumn","modifiedEndLineNumber","modifiedEndColumn","fwd","getPosition","scrollType","assert","canNavigate","_initIdx","setPosition","revealPositionInCenter","_move","EditorZoom","zoomLevel","GOLDEN_LINE_HEIGHT_RATIO","BareFontInfo","_bareFontInfoBrand","fontFeatureSettings","ignoreEditorZoom","_create","editorZoomLevelMultiplier","FontInfo","isTrusted","_editorStylingBrand","isMonospace","typicalFullwidthCharacterWidth","canUseHalfwidthRightwardsArrow","spaceWidth","middotWidth","wsmiddotWidth","EditorType","ICodeEditor","IDiffEditor","TextModelResolvedOptions","_textModelResolvedOptionsBrand","tabSize","indentSize","insertSpaces","defaultEOL","trimAutoWhitespace","newOpts","FindMatch","_findMatchBrand","ValidAnnotatedEditOperation","identifier","isAutoWhitespaceEdit","_isTracked","ApplyEditsResult","reverseEdits","trimAutoWhitespaceLineNumbers","numberHash","initialHashVal","stringHash","hashVal","leftRotate","bits","totalBits","mask","dest","leftPad","toHexString","bufferOrValue","bitsize","padStart","StringSHA1","_h0","_h1","_h2","_h3","_h4","_buff","_buffDV","DataView","_buffLen","_totalLen","_leftoverHighSurrogate","_finished","buff","buffLen","leftoverHighSurrogate","_push","_step","_wrapUp","ml","setUint32","bigBlock32","_bigBlock32","getUint32","temp","GLOBSTAR","PATH_REGEX","NO_PATH_REGEX","ALL_FORWARD_SLASHES","starsToRegExp","starCount","splitGlobAware","splitChar","inBraces","inBrackets","curVal","parseRegExp","regEx","previousSegmentWasGlobStar","braceVal","bracketVal","choices","braceRegExp","T1","T2","T3","T3_2","T4","T5","CACHE","FALSE","NULL","parsePattern","arg1","patternKey","trimForExclusions","parsedPattern","wrapRelativePattern","endsWith","originalPattern","slashBase","backslashBase","basenames","patterns","allBasenames","trivia2","parsedPatterns","aggregateBasenameMatches","withBasenames","trivia3","trivia4and5","regExp","toRegExp","arg2","parentCandidate","sepOffset","targetPath","matchPathEnds","usingPosixSep","nativePath","nativePathEnd","targetPathEnd","testPath","hasSibling","isRelativePattern","resultPattern","parsedExpression","rp","expression","when","requiresSiblings","parseExpressionPattern","resultExpression","basenamePatterns","aggregate","aggregatedPatterns","score","candidateUri","candidateLanguage","candidateIsSynchronized","hasAccessToAllModels","normalizedPattern","matchGlobPattern","IModelService","shouldSynchronizeModel","isTooLargeForSyncing","isForSimpleWidget","isExclusive","exclusive","LanguageFeatureRegistry","_clock","_onDidChange","provider","_score","_time","_lastCandidate","_updateScores","_orderedForEach","lastBucket","lastBucketScore","getLanguageIdentifier","_compareByScoreAndTime","TokenizationRegistryImpl","_promises","onDidChange","_colorMap","changedLanguages","changedColorMap","support","supportPromise","isDisposed","colorMap","_registry","_icons","_onDidRegister","existing","iconRegistry","registerCodicon","def","Codicon","CSSIcon","definition","iconNameSegment","iconNameExpression","iconModifierExpression","cssIconIdRegex","asClassNameArray","asClassName","asCSSSelector","fontCharacter","plus","gistNew","repoCreate","lightBulb","repo","repoDelete","gistFork","repoForked","gitPullRequest","gitPullRequestAbandoned","recordKeys","tagAdd","tagRemove","person","personFollow","personOutline","personFilled","gitBranch","gitBranchCreate","gitBranchDelete","sourceControl","mirror","mirrorPublic","star","starAdd","starDelete","starEmpty","commentAdd","alert","warning","searchSave","logOut","signOut","logIn","signIn","eye","eyeUnwatch","eyeWatch","circleFilled","primitiveDot","closeDirty","debugBreakpoint","debugBreakpointDisabled","debugHint","primitiveSquare","edit","pencil","issueOpened","gistPrivate","gitForkPrivate","lock","mirrorPrivate","close","removeClose","repoSync","sync","clone","desktopDownload","beaker","microscope","vm","deviceDesktop","fileText","more","ellipsis","kebabHorizontal","mailReply","reply","organization","organizationFilled","organizationOutline","newFile","fileAdd","newFolder","fileDirectoryCreate","trash","trashcan","clock","folder","fileDirectory","symbolFolder","logoGithub","markGithub","github","terminal","repl","zap","symbolEvent","variable","symbolVariable","symbolArray","symbolModule","symbolPackage","symbolNamespace","symbolObject","symbolMethod","symbolFunction","symbolConstructor","symbolBoolean","symbolNull","symbolNumeric","symbolNumber","symbolStructure","symbolStruct","symbolParameter","symbolTypeParameter","symbolKey","symbolText","symbolReference","goToFile","symbolEnum","symbolValue","symbolRuler","symbolUnit","activateBreakpoints","archive","arrowBoth","arrowDown","arrowLeft","arrowRight","arrowSmallDown","arrowSmallLeft","arrowSmallRight","arrowSmallUp","arrowUp","bell","book","bookmark","debugBreakpointConditionalUnverified","debugBreakpointConditional","debugBreakpointConditionalDisabled","debugBreakpointDataUnverified","debugBreakpointData","debugBreakpointDataDisabled","debugBreakpointLogUnverified","debugBreakpointLog","debugBreakpointLogDisabled","briefcase","broadcast","bug","calendar","caseSensitive","checklist","chevronDown","chevronLeft","chevronRight","chevronUp","chromeClose","chromeMaximize","chromeMinimize","chromeRestore","circleOutline","debugBreakpointUnverified","circleSlash","circuitBoard","clearAll","clippy","closeAll","cloudDownload","cloudUpload","collapseAll","colorMode","commentDiscussion","compareChanges","creditCard","dash","dashboard","database","debugContinue","debugDisconnect","debugPause","debugRestart","debugStart","debugStepInto","debugStepOut","debugStepOver","debugStop","debug","deviceCameraVideo","deviceCamera","deviceMobile","diffAdded","diffIgnored","diffModified","diffRemoved","diffRenamed","discard","editorLayout","emptyWindow","exclude","extensions","eyeClosed","fileBinary","fileCode","fileMedia","filePdf","fileSubmodule","fileSymlinkDirectory","fileSymlinkFile","fileZip","files","flame","foldDown","foldUp","fold","folderActive","folderOpened","gear","gift","gistSecret","gist","gitCommit","gitCompare","gitMerge","githubAction","githubAlt","globe","grabber","graph","gripper","heart","home","horizontalRule","hubot","inbox","issueClosed","issueReopened","issues","italic","jersey","json","kebabVertical","law","lightbulbAutofix","linkExternal","listOrdered","listUnordered","liveShare","mailRead","mail","markdown","megaphone","mention","milestone","mortarBoard","move","multipleWindows","mute","noNewline","note","octoface","openPreview","package_","paintcan","pin","play","plug","preserveCase","project","pulse","question","quote","radioTower","reactions","references","refresh","regex","remoteExplorer","remote","replaceAll","repoClone","repoForcePush","repoPull","repoPush","report","requestChanges","rocket","rootFolderOpened","rootFolder","rss","ruby","saveAll","saveAs","save","screenFull","screenNormal","searchStop","server","settingsGear","shield","smiley","sortPrecedence","splitHorizontal","splitVertical","squirrel","starFull","starHalf","symbolClass","symbolColor","symbolConstant","symbolEnumMember","symbolField","symbolFile","symbolInterface","symbolKeyword","symbolMisc","symbolOperator","symbolProperty","wrench","wrenchSubaction","symbolSnippet","tasklist","telescope","textSize","threeBars","thumbsdown","thumbsup","tools","triangleDown","triangleLeft","triangleRight","triangleUp","twitter","unfold","unlock","unmute","unverified","verified","vmActive","vmOutline","vmRunning","watch","whitespace","zoomIn","zoomOut","listFilter","listFlat","listSelection","listTree","debugBreakpointFunctionUnverified","debugBreakpointFunction","debugBreakpointFunctionDisabled","debugStackframeActive","debugStackframeDot","debugStackframe","debugStackframeFocused","debugBreakpointUnsupported","symbolString","debugReverseContinue","debugStepBack","debugRestartFrame","callIncoming","callOutgoing","menu","expandAll","feedback","groupByRefType","ungroupByRefType","account","bellDot","debugConsole","library","runAll","syncIgnored","pinned","githubInverted","debugAlt","serverProcess","serverEnvironment","pass","stopCircle","playCircle","debugAltSmall","vmConnect","cloud","exportIcon","graphLeft","magnet","notebook","redo","checkAll","pinnedDirty","passFilled","circleLargeFilled","circleLargeOutline","combine","gather","table","variableGroup","typeHierarchy","typeHierarchySub","typeHierarchySuper","gitPullRequestCreate","runAbove","runBelow","notebookTemplate","debugRerun","workspaceTrusted","workspaceUntrusted","workspaceUnspecified","terminalCmd","terminalDebian","terminalLinux","terminalPowershell","terminalTmux","terminalUbuntu","terminalBash","arrowSwap","personAdd","filterFilled","wand","debugLineByLine","layers","layersDot","layersActive","compass","compassDot","compassActive","azure","issueDraft","gitPullRequestClosed","gitPullRequestDraft","debugAll","debugCoverage","dropDownButton","SymbolKinds","LanguageIdentifier","TokenMetadata","getForeground","getFontStyle","foreground","byKind","toCssClassName","inline","symbolName","codicon","FoldingRangeKind","Comment","Imports","Region","ReferenceProviderRegistry","RenameProviderRegistry","CompletionProviderRegistry","InlineCompletionsProviderRegistry","SignatureHelpProviderRegistry","HoverProviderRegistry","DocumentSymbolProviderRegistry","DocumentHighlightProviderRegistry","LinkedEditingRangeProviderRegistry","DefinitionProviderRegistry","DeclarationProviderRegistry","ImplementationProviderRegistry","TypeDefinitionProviderRegistry","CodeLensProviderRegistry","InlayHintsProviderRegistry","CodeActionProviderRegistry","DocumentFormattingEditProviderRegistry","DocumentRangeFormattingEditProviderRegistry","OnTypeFormattingEditProviderRegistry","LinkProviderRegistry","ColorProviderRegistry","SelectionRangeRegistry","FoldingRangeProviderRegistry","DocumentSemanticTokensProviderRegistry","DocumentRangeSemanticTokensProviderRegistry","TokenizationRegistry","NULL_STATE","NULL_MODE_ID","NULL_LANGUAGE_IDENTIFIER","nullTokenize2","languageId","deltaOffset","Uint32Array","IEditorWorkerService","IModeService","ITextModelService","INITIALIZE","webWorkerWarningLogged","logOnceWebWorkerWarning","SimpleWorkerProtocol","_workerId","_lastSentReq","_pendingReplies","workerId","req","_send","vsWorker","_handleMessage","seq","replyMessage","requestMessage","handleMessage","transfer","sendMessage","SimpleWorkerClient","workerFactory","moduleId","lazyProxyReject","_worker","_protocol","setWorkerId","getId","loaderConfiguration","getConfig","requirejs","hostMethods","types","_onModuleLoaded","proxyMethodRequest","_request","_lazyProxy","availableMethods","_onError","ttPolicy","trustedTypes","createPolicy","createScriptURL","WebWorker","label","onMessageCallback","onErrorCallback","workerOrPromise","MonacoEnvironment","getWorker","getWorkerUrl","wokerUrl","Worker","worker","onmessageerror","terminate","DefaultWorkerFactory","_label","_webWorkerFailedBeforeError","LAST_WORKER_ID","StandardAutoClosingPairConditional","_standardAutoClosingPairConditionalBrand","_standardTokenMask","notIn","standardToken","AutoClosingPairs","autoClosingPairs","autoClosingPairsOpenByStart","autoClosingPairsOpenByEnd","autoClosingPairsCloseByStart","autoClosingPairsCloseByEnd","autoClosingPairsCloseSingleChar","pair","appendEntry","createScopedLineTokens","tokenCount","getCount","tokenIndex","findTokenIndexAtOffset","desiredLanguageId","getLanguageId","lastTokenIndex","firstTokenIndex","ScopedLineTokens","getStartOffset","getEndOffset","firstCharOffset","lastCharOffset","_scopedLineTokensBrand","_actual","_firstTokenIndex","_lastTokenIndex","_lastCharOffset","getLineContent","getStandardTokenType","ignoreBracketsInToken","standardTokenType","_utf16LE_TextDecoder","_utf16BE_TextDecoder","_platformTextDecoder","CharacterPairSupport","_autoClosingPairs","brackets","__electricCharacterSupport","docComment","_autoCloseBefore","autoCloseBefore","DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED","_surroundingPairs","surroundingPairs","autoClosingPair","getTokenCount","isOK","getUTF16LE_TextDecoder","getPlatformTextDecoder","createStringBuilder","decodeUTF16LE","compatDecodeUTF16LE","resultLen","capacity","StringBuilder","CompatStringBuilder","_capacity","_completedStrings","_bufferLength","_flushBuffer","_buildBuffer","bufferString","remainingSpace","_pieces","_piecesLen","RichEditBracket","languageIdentifier","forwardRegex","reversedRegex","_richEditBracketBrand","_openSet","_toSet","_closeSet","RichEditBrackets","_brackets","_richEditBracketsBrand","N","areOverlapping","aOpen","aClose","bOpen","bClose","mergeGroups","g1","g2","newG","oldG","currentOpen","currentClose","groupFuzzyBrackets","currentIndex","pieces","collectSuperstrings","unique","lengthcmp","createBracketOrRegExp","getRegexForBracketPair","toReversedString","getReversedRegexForBracketPair","bracket","getRegexForBrackets","getReversedRegexForBrackets","textIsBracket","textIsOpenBracket","maxBracketLength","seen","prepareBracketForRegExp","insertWordBoundaries","regexStr","lastInput","lastOutput","stringBuilder","BracketsUtils","reversedBracketRegex","reversedText","matchOffset","matchLength","absoluteMatchOffset","lineText","startOffset","endOffset","reversedSubstr","_findPrevBracketInText","bracketRegex","findNextBracketInText","BracketElectricCharacterSupport","richEditBrackets","_richEditBrackets","lastChar","character","findPrevBracketInRange","bracketText","textBeforeBracket","getActualLineContentBefore","matchOpenBracket","resetGlobalRegex","reg","IndentRulesSupport","indentationRules","_indentationRules","increaseIndentPattern","decreaseIndentPattern","indentNextLinePattern","unIndentedLinePattern","shouldIncrease","shouldDecrease","shouldIndentNextLine","shouldIgnore","OnEnterSupport","openRegExp","_createOpenBracketRegExp","closeRegExp","_createCloseBracketRegExp","_regExpRules","onEnterRules","previousLineText","beforeEnterText","afterEnterText","beforeText","afterText","indentAction","IndentOutdent","Indent","_safeRegExp","RichEditSupport","rawConf","_languageIdentifier","_electricCharacter","_conf","_onEnterSupport","_handleComments","characterPair","wordPattern","indentRulesSupport","foldingRules","conf","commentRule","lineComment","lineCommentToken","blockComment","blockStart","blockEnd","blockCommentStartToken","blockCommentEndToken","LanguageConfigurationChangeEvent","LanguageConfigurationEntry","configuration","order","LanguageConfigurationEntries","_resolved","_order","_resolve","LanguageConfigurationRegistryImpl","_entries2","getRichEditSupport","_getRichEditSupport","electricCharacter","electricCharacterSupport","_getElectricCharacterSupport","getElectricCharacters","scopedLineTokens","onElectricCharacter","characterPairSupport","_getCharacterPairSupport","getAutoClosingPairs","getAutoCloseBeforeSet","getSurroundingPairs","shouldAutoClosePair","languageID","getLanguageIdAtPosition","lastLineNumber","resultLineNumber","honorIntentialIndent","getIndentRulesSupport","indentation","precedingUnIgnoredLine","getPrecedingValidLine","precedingUnIgnoredLineContent","previousLine","previousLineIndentMetadata","getIndentMetadata","stopLine","lineContent","virtualModel","indentConverter","richEditSupport","indent","getInheritIndentForLine","inheritLine","enterResult","removeText","shiftIndent","Outdent","unshiftIndent","appendText","forceTokenization","lineTokens","getLineTokens","scopedLineText","embeddedLanguage","getScopedLineTokens","beforeEnterResult","beforeEnterIndent","currentLineIndent","afterEnterAction","beforeEnter","afterEnter","afterEnterIndent","afterTypeText","beforeTypeText","getLineCount","oneLineAboveScopedLineTokens","getIndentationAtPosition","columnNumber","getLineMaxColumn","LanguageConfigurationRegistry","DiffChange","originalStart","originalLength","modifiedStart","modifiedLength","StringDiffSequence","characters","Int32Array","stringDiff","LcsDiff","ComputeDiff","Debug","MyArray","sourceArray","sourceIndex","destinationArray","destinationIndex","DiffChangeHelper","m_changes","m_originalStart","m_modifiedStart","m_originalCount","m_modifiedCount","originalIndex","modifiedIndex","MarkNextChange","originalSequence","modifiedSequence","continueProcessingPredicate","ContinueProcessingPredicate","_originalSequence","_modifiedSequence","_getElements","originalStringElements","originalElementsOrHash","originalHasStrings","modifiedStringElements","modifiedElementsOrHash","modifiedHasStrings","_hasStrings","_originalStringElements","_originalElementsOrHash","_modifiedStringElements","_modifiedElementsOrHash","m_forwardHistory","m_reverseHistory","newIndex","ElementsAreEqual","_getStrictElement","index1","index2","_ComputeDiff","originalEnd","modifiedEnd","quitEarlyArr","ComputeDiffRecursive","PrettifyChanges","quitEarly","Assert","midOriginalArr","midModifiedArr","ComputeRecursionPoint","midOriginal","midModified","leftChanges","rightChanges","ConcatenateChanges","diagonalForwardBase","diagonalForwardStart","diagonalForwardEnd","diagonalForwardOffset","diagonalReverseBase","diagonalReverseStart","diagonalReverseEnd","diagonalReverseOffset","forwardPoints","reversePoints","deltaIsEven","forwardChanges","reverseChanges","changeHelper","diagonalMin","diagonalMax","diagonalRelative","lastOriginalIndex","historyIndex","diagonal","AddModifiedElement","AddOriginalElement","getReverseChanges","originalStartPoint","modifiedStartPoint","lastForwardChange","getOriginalEnd","getModifiedEnd","maxDifferences","numDiagonals","numDifferences","furthestOriginalIndex","furthestModifiedIndex","ClipDiagonalBound","tempOriginalIndex","WALKTRACE","matchLengthOfLongest","Copy2","originalStop","modifiedStop","checkOriginal","checkModified","OriginalElementsAreEqual","ModifiedElementsAreEqual","startStrictEqual","ElementsAreStrictEqual","mergedChangeArr","ChangesOverlap","prevChange","bestDelta","bestScore","_boundaryScore","aChange","bChange","matchedLength","aOriginalStart","bOriginalEnd","abOriginalLength","aModifiedStart","bModifiedEnd","abModifiedLength","_findBetterContiguousSequence","originalMatchStart","modifiedMatchStart","desiredLength","originalMax","modifiedMax","bestOriginalStart","bestModifiedStart","_contiguousSequenceScore","_OriginalIsBoundary","_ModifiedIsBoundary","_OriginalRegionIsBoundary","_ModifiedRegionIsBoundary","Copy","diagonalBaseIndex","diffEven","sequence","getElements","_isStringArray","hashes","getStrictElement","computeDiff","LineSequence","startColumns","endColumns","getFirstNonBlankColumn","getLastNonBlankColumn","_startColumns","_endColumns","shouldIgnoreTrimWhitespace","endIndex","charCodes","columns","col","CharSequence","_charCodes","_lineNumbers","_columns","CharChange","originalStartLineNumber","originalStartColumn","originalEndLineNumber","originalEndColumn","diffChange","originalCharSequence","modifiedCharSequence","getStartLineNumber","getStartColumn","getEndLineNumber","getEndColumn","LineChange","originalLineSequence","modifiedLineSequence","continueCharDiff","shouldComputeCharChanges","shouldPostProcessCharChanges","createCharSequence","rawChanges","currChange","originalMatchingLength","modifiedMatchingLength","postProcessCharChanges","createFromDiffChange","DiffComputer","originalLines","modifiedLines","shouldMakePrettyDiff","continueLineDiff","createContinueProcessingPredicate","maxComputationTime","diffResult","createFromDiffResult","originalLineIndex","modifiedLineIndex","nextChange","originalLine","modifiedLine","_pushTrimWhitespaceCharChange","originalMaxColumn","modifiedMaxColumn","originalLineNumber","modifiedLineNumber","_mergeTrimWhitespaceCharChange","txt","maximumRuntime","startTime","toUint8","toUint32","PrefixSumIndexOfResult","remainder","_prefixSumIndexOfResultBrand","PrefixSumComputer","prefixSum","prefixSumValidIndex","insertIndex","insertValues","oldValues","oldPrefixSum","insertValuesLen","maxCount","_getPrefixSum","sum","getTotalSum","low","high","midStop","midStart","MirrorTextModel","eol","versionId","_uri","_lines","_eol","_versionId","_lineStarts","_cachedTextValue","_acceptDeleteRange","_acceptInsertText","eolLength","linesLength","lineStartValues","lineIndex","changeValue","_setLineText","removeValues","insertText","insertLines","newLengths","CharacterClassifier","_defaultValue","_asciiMap","_createAsciiMap","asciiMap","Uint8Matrix","rows","cols","row","StateMachine","edges","maxCharCode","maxState","states","_maxCharCode","currentState","_stateMachine","getStateMachine","_classifier","getClassifier","FORCE_TERMINATION_CHARACTERS","LinkComputer","classifier","linkBeginIndex","linkEndIndex","lastIncludedCharIndex","charCodeBeforeLink","lastCharCodeInLink","stateMachine","lineCount","linkBeginChCode","hasOpenParens","hasOpenSquareBracket","inSquareBrackets","hasOpenCurlyBracket","resetStateMachine","chClass","_createLink","computeLinks","BasicInplaceReplace","_defaultValueSet","range1","text1","range2","text2","doNavigateValueSet","numberResult","numberReplace","textReplace","precision","n1","n2","valueSetsReplace","valueSets","valueSetReplace","valueSet","MirrorModel","getText","wordAtText","wordenize","_wordenize","wordRangesIdx","wordRanges","words","_validateRange","lineEnding","startLineIndex","endLineIndex","resultLines","_validatePosition","_ensureLineStarts","getPrefixSum","getIndexOf","lineLength","isIPosition","hasChanged","maxCharacter","BaseMirrorModel","EditorSimpleWorker","foreignModuleFactory","_host","_models","_foreignModuleFactory","_foreignModule","EOL","strURL","onEvents","originalUrl","modifiedUrl","ignoreTrimWhitespace","_getModel","getLinesContent","diffComputer","identical","_modelsAreIdentical","originalLineCount","modelUrl","edits","lastEol","compareRangesUsingStarts","getValueInRange","_diffLimit","editOffset","offsetAt","lift","positionAt","newEdit","modelUrls","leadingWord","wordDef","wordDefFlags","sw","wordDefRegExp","_suggestionsLimit","duration","getLineWords","selectionText","wordRange","getWordAtPosition","navigateValueSet","createData","foreignHostMethods","fhr","getMirrorModels","_getModels","ITextResourceConfigurationService","ITextResourcePropertiesService","itemEquals","isNonEmptyArray","distinct","keyFn","distinctES6","firstOrDefault","notFoundValue","arrayInsert","insertArr","before","after","pushToStart","pushToEnd","deleteCount","newItems","getActualStartIndex","startIdx","newItemsLength","insertInto","LogLevel","ArrayQueue","firstIdx","lastIdx","endIdx","ILogService","createServiceDecorator","DEFAULT_LOG_LEVEL","Info","AbstractLogger","level","_onDidChangeLogLevel","ConsoleLogger","logLevel","setLevel","getLevel","log","LogService","STOP_WORKER_DELTA_TIME_MS","canSyncModel","modelService","EditorWorkerServiceImpl","configurationService","logService","_modelService","_workerManager","WorkerManager","_logService","modes","provideLinks","withWorker","client","WordBasedCompletionItemProvider","computeMoreMinimalEdits","race","computeWordRanges","workerManager","_debugDisplayName","_configurationService","wordBasedSuggestions","wordBasedSuggestionsMode","getModels","getWordDefinition","fromPositions","insert","setEndPosition","textualSuggest","suggestions","_editorWorkerClient","_lastWorkerUsedTime","cancelAndSet","_checkStopIdleWorker","onModelRemoved","_checkStopEmptyWorker","EditorWorkerClient","EditorModelManager","proxy","keepIdleModels","_syncedModels","_syncedModelsLastUsedTime","_proxy","_checkStopModelSync","STOP_SYNC_MODEL_DELTA_TIME_MS","resources","resourceStr","_beginModelSync","currentTime","toRemove","_stopModelSync","acceptNewModel","getEOL","getVersionId","toDispose","onDidChangeContent","acceptModelChanged","onWillDispose","acceptRemovedModel","SynchronousWorkerClient","_instance","_proxyObj","EditorWorkerHost","workerClient","_workerClient","_keepIdleModels","_workerFactory","_modelManager","_getOrCreateWorker","getProxyObject","_getProxy","_getOrCreateModelManager","ensureSyncedResources","_withSyncedResources","MonacoWebWorkerImpl","_foreignModuleId","_foreignModuleCreateData","_foreignModuleHost","_foreignProxy","loadForeignModule","foreignMethods","fmr","foreignProxy","foreignMethod","_getForeignProxy","getProxy","LineTokens","_lineTokensBrand","_tokens","_tokensCount","_text","slicedEquals","sliceFromTokenIndex","sliceTokenCount","getTokenType","getClassNameFromMetadata","getInlineStyleFromMetadata","findIndexInTokensArray","SlicedLineTokens","insertTokens","nextOriginalTokenIdx","nextInsertTokenIdx","newTokens","originalEndOffset","nextOriginalTokenEndOffset","nextInsertToken","tokenMetadata","defaultMetadata","defaultTokenMetadata","lineTextLength","desiredIndex","_source","_startOffset","_endOffset","_deltaOffset","tokenEndOffset","getInlineStyle","LineDecoration","_lineDecorationBrand","_equals","rLength","dec","lineDecorations","minLineColumn","maxLineColumn","inlineClassName","ORDER","typeCmp","_typeCompare","DecorationSegment","Stack","stopOffsets","maxStopOffset","nextStartOffset","_metadata","stopOffset","LineDecorationsNormalizer","charCodeBefore","currentStartOffset","currentEndOffset","consumeLowerThan","LinePart","_linePartBrand","LineRange","otherLineRange","RenderLineInput","useMonospaceOptimizations","continuesWithWrappedLine","fauxIndentLength","startVisibleColumn","fontLigatures","selectionsOnLine","renderSpaceWidth","renderSpaceCharCode","otherSelections","equalsArr","sameSelection","DomPosition","charIndex","CharacterMapping","partCount","_absoluteOffsets","partAbsoluteOffset","partData","charOffset","charOffsetToPartData","getPartIndex","getCharIndex","domPosition","partLength","partDataToCharOffset","searchEntry","midEntry","minEntry","maxEntry","minPartIndex","RenderLineOutput","characterMapping","containsForeignElements","_renderLineOutputBrand","renderViewLine","sb","appendASCIIString","beforeCount","afterCount","lineDecoration","setColumnInfo","fontIsMonospace","isOverflowing","lastCharacterMappingDefined","visibleColumn","charOffsetInPart","partDisplacement","prevPartContentCnt","tokensLen","partEndIndex","partType","partRendersWhitespace","isWhitespace","partRendersWhitespaceWithWidth","partIsEmptyAndHasPseudoAfter","isPseudoAfter","appendASCII","partContentCnt","_charIndex","_visibleColumn","charWidth","write1","space","producedCharacters","_renderLine","transformAndRemoveOverflowing","selections","onlyBoundary","onlyTrailing","generateLinePartForEachWhitespace","tokenType","tokenEndIndex","tokensLength","lineIsEmptyOrWhitespace","wasInWhitespace","currentSelectionIndex","currentSelection","tmpIndent","isInWhitespace","nextChCode","generateWhitespace","lastCharCode","_applyRenderWhitespace","_lineDecorations","lineDecorationsLen","lineDecorationIndex","lastResultEndIndex","lastTokenEndIndex","_applyInlineDecorations","onlyAtSpaces","lastSpaceOffset","currTokenStart","piecesCount","pieceEndIndex","splitLargeTokens","ResolvedRenderLineInput","resolveRenderLineInput","RenderLineOutput2","renderViewLine2","build","Viewport","_viewportBrand","OutputPosition","outputLineIndex","outputOffset","baseLineNumber","wrappedTextIndentLength","LineBreakData","breakOffsets","breakOffsetsVisibleColumn","injectionOffsets","injectionOptions","inputOffset","affinity","getOutputPositionOfOffsetInUnwrappedLine","offsetInUnwrappedLine","injectedText","getInjectedTextAtOffset","injectedTextIndex","outputPositionToOffsetInUnwrappedLine","totalInjectedTextLengthBefore","injectedTextStartOffsetInUnwrappedLine","injectedTextEndOffsetInUnwrappedLine","MinimapLinesRenderingData","ViewLineData","minColumn","inlineDecorations","_viewLineDataBrand","ViewLineRenderingData","mightContainRTL","mightContainNonBasicASCII","InlineDecoration","SingleLineInlineDecoration","inlineClassNameAffectsLetterSpacing","ViewModelDecoration","_viewModelDecorationBrand","isFuzzyAction","what","isFuzzyActionArr","isIAction","fixCase","lexer","sanitize","createError","substituteMatches","stateMatches","full","dollar","attr","ofs","total","findRules","inState","tokenizer","MonarchStackElementFactory","maxCacheDepth","_maxCacheDepth","MonarchStackElement","stackElementId","getStackElementId","EmbeddedModeData","modeId","MonarchLineStateFactory","embeddedModeData","MonarchLineState","MonarchClassicTokensCollector","_lastTokenType","_lastTokenLanguage","embeddedModeLine","hasEOL","offsetDelta","nestedModeId","embeddedModeState","nestedModeTokenizationSupport","enterMode","nestedResult","tokenize","MonarchModernTokensCollector","modeService","_modeService","_prependTokens","_currentLanguageId","_lastTokenMetadata","tokenize2","_merge","cLen","MonarchTokenizer","standaloneThemeService","_standaloneThemeService","_modeId","_lexer","_embeddedModes","embeddedLoaded","emitting","_tokenizationRegistryListener","isOneOfMyEmbeddedModes","tokenizationSupport","nestedModeStatus","getLoadStatus","loaded","tokenizationSupportPromise","getPromise","rootState","lineState","tokensCollector","endLineState","_tokenize","finalize","getColorTheme","tokenTheme","collector","_nestedTokenize","_myTokenize","monarchCommon","popOffset","hasEmbeddedPopRule","nextEmbedded","regexSource","matchOnlyAtLineStart","_findLeavingNestedModeOffset","nestedEndState","nestedModeTokenize","nestedModeLine","restOfTheLine","lineWithoutLF","lineWithoutLFLength","includeLF","groupMatching","forceEvaluation","pos0","stackLen0","groupLen0","enteringEmbeddedMode","groupEntry","restOfLine","defaultToken","tokenSubst","switchTo","_safeRuleName","maxStack","popall","computeNewStateForEmbeddedMode","enteringEmbeddedModeId","getModeIdForLanguageName","_getNestedEmbeddedModeData","totalLen","findBracket","tokenPostfix","mimetypeOrModeId","_locateMode","getInitialState","isRegisteredMode","getModeId","triggerMode","bracketType","Severity","createHTML","Colorizer","themeService","mimeType","nodeValue","colorize","trustedhtml","innerHTML","_fakeColorize","_colorize","renderResult","inflatedTokens","inflate","colorizeLine","tokenizeResult","convertToEndOffset","_actualColorize","_warning","_info","fromValue","Warning","Ignore","severity","isCodeEditor","getEditorType","editorCommon","IBulkEditService","ResourceEdit","ResourceTextEdit","modelVersionId","newUri","oldUri","isWorkspaceFileEdit","ResourceFileEdit","textEdit","oldResource","newResource","Registry","Types","Extensions","jsonContributionRegistry","_onDidChangeSchema","schemasById","unresolvedSchemaContent","allSettings","patternProperties","applicationSettings","machineSettings","machineOverridableSettings","windowSettings","resourceSettings","resourceLanguageSettingsSchemaId","contributionRegistry","as","JSONExtensions","ConfigurationRegistry","overrideIdentifiers","_onDidSchemaChange","_onDidUpdateConfiguration","defaultValues","defaultLanguageConfigurationOverridesNode","configurationContributors","resourceLanguageSettingsSchema","additionalProperties","allowTrailingCommas","allowComments","configurationProperties","excludedConfigurationProperties","registerSchema","registerConfigurations","configurations","validateAndRegisterProperties","extensionInfo","registerJSONConfiguration","overrideIdentifier","updateOverridePropertyPatternKey","propertyKeys","validateProperty","updatePropertyDefaultValue","OVERRIDE_PROPERTY_PATTERN","restricted","restrictedConfigurations","subNodes","allOf","updateSchema","overrideIdentifierProperty","resourceLanguagePropertiesSchema","$ref","getDefaultValue","overrideIdentifierFromKey","configurationRegistry","getConfigurationProperties","SetMap","TabFocus","_tabFocus","_onDidChangeTabFocus","onDidChangeTabFocus","ComputedEditorOptions","RawEditorOptions","EditorConfiguration2","editorOption","_write","_read","compute","arrays","_deepEquals","somethingChanged","changed","migrateOptions","filteredTypes","mapping","deepCloneAndMigrateOptions","CommonEditorConfiguration","isSimpleWidget","_onDidChangeFast","onDidChangeFast","_isDominatedByLongLines","_computeOptionsMemory","_viewLineCount","_lineNumbersDigitCount","_rawOptions","_readOptions","readOptions","_validatedOptions","validateOptions","_recomputeOptions","dimension","oldOptions","newOptions","_computeInternalOptions","changeEvent","checkEquals","partialEnv","_getEnvConfiguration","bareFontInfo","createFromValidatedSettings","readConfiguration","getTabFocusMode","computeOptions","_newOptions","_subsetEquals","maxLineNumber","_digitCount","subsetValue","baseValue","editorConfigurationBaseNode","editorConfiguration","cachedEditorConfigurationKeys","getEditorConfigurationKeys","registerConfiguration","EditOperation","IConfigurationService","toValuesTree","conflictReporter","addToValueTree","settingsTreeRoot","curr","removeFromValueTree","valueTree","doRemoveFromValueTree","ConfigurationModel","_contents","_keys","_overrides","isFrozen","checkAndFreeze","section","settingPath","accessSetting","getConfigurationValue","contents","overrideContents","getContentsForOverrideIdentifer","contentsForKey","overrideContentsForKey","mergeContents","overrides","others","otherOverride","identifiers","override","addKey","removeKey","DefaultConfigurationModel","valueTreeRoot","getDefaultValues","getConfigurationKeys","Configuration","_defaultConfiguration","_localUserConfiguration","_remoteUserConfiguration","_workspaceConfiguration","_folderConfigurations","_memoryConfiguration","_memoryConfigurationByResource","_freeze","_workspaceConsolidatedConfiguration","_foldersConsolidatedConfigurations","_userConfiguration","workspace","getConsolidateConfigurationModel","memoryConfiguration","removeValue","configurationModel","getConsolidatedConfigurationModelForResource","consolidateConfiguration","getWorkspaceConsolidatedConfiguration","getFolder","getFolderConsolidatedConfiguration","memoryConfigurationForResource","userConfiguration","folderConsolidatedConfiguration","workspaceConsolidateConfiguration","folderConfiguration","user","folders","defaultConfiguration","parseConfigurationModel","workspaceConfiguration","ConfigurationChangeEvent","currentConfiguraiton","currentWorkspace","_previousConfiguration","keysSet","affectedKeys","affectedKeysTree","doesAffectedKeysTreeContains","previousConfiguration","requestedTree","AbstractKeybindingService","_contextKeyService","_telemetryService","_notificationService","_onDidUpdateKeybindings","_currentChord","_currentChordChecker","_currentChordStatusMessage","_currentSingleModifier","_currentSingleModifierClearTimeout","_logging","_getResolver","getKeybindings","commandId","lookupPrimaryKeybinding","resolvedKeybinding","_dispatch","resolveKeyboardEvent","isChord","getDispatchParts","contextValue","currentChord","keypress","keypressLabel","chordEnterTime","_documentHasFocus","_leaveChordMode","_doDispatch","getSingleModifierDispatchParts","singleModifier","_log","isSingleModiferChord","shouldPreventDefault","dispatchKeyname","getLabel","resolveResult","enterChord","_enterChordMode","hideAfter","bubble","commandArgs","publicLog2","KeybindingResolver","defaultKeybindings","_defaultKeybindings","_defaultBoundCommands","_lookupMap","_keybindings","keypressParts","_addKeyPress","conflicts","_addToLookupMap","conflict","conflictIsChord","itemIsChord","whenIsEntirelyIncluded","_removeFromLookupMap","contextMatchesRules","lookupMap","candidates","_findCommand","printWhenExplanation","printSourceExplanation","leaveChord","defaultKb","keypressFirstPart","keypressChordPart","rawOverrides","_isTargetedForRemoval","_implies","q","terminals","expr","negate","notA","evaluate","kb","extensionId","isBuiltinExtension","isDefault","KeybindingsRegistryImpl","_coreKeybindings","_extensionKeybindings","_cachedMergedKeybindings","actualKb","bindToCurrentPlatform","primary","_registerDefaultKeybinding","secondary","registerKeybindingRule","_mightProduceChar","weight1","weight2","_assertNoCtrlAlt","sorter","mac","linux","KeybindingsRegistry","ResolvedKeybindingItem","_resolvedKeybindingItemBrand","removeElementsAfterNulls","ModifierLabelProvider","windows","modifierLabels","keyLabelProvider","_simpleAsString","UILabelProvider","AriaLabelProvider","labels","AccessibilityHelpNLS","InspectTokensNLS","GoToLineNLS","QuickHelpNLS","QuickCommandNLS","QuickOutlineNLS","StandaloneCodeEditorNLS","ToggleHighContrastNLS","SimpleServicesNLS","USLayoutResolvedKeybinding","os","_os","isDuplicateModifierCase","_keyCodeToUILabel","getDispatchStr","isModifierKey","_parts","toLabel","_getLabel","_getAriaLabel","_getPart","_getDispatchPart","_getSingleModifierDispatchPart","INotificationService","NoOpNotification","IWorkspaceContextService","WorkspaceFolder","raw","noSelection","singleSelectionRange","singleSelection","multiSelectionRange","multiSelection","emergencyConfOn","openingDocs","readonlyDiffEditor","editableDiffEditor","readonlyEditor","editableEditor","changeConfigToOnMac","changeConfigToOnWinLinux","auto_on","auto_off","tabFocusModeOnMsg","tabFocusModeOnMsgNoKb","tabFocusModeOffMsg","tabFocusModeOffMsgNoKb","openDocMac","openDocWinLinux","outroMsg","showAccessibilityHelpAction","inspectTokensAction","gotoLineActionLabel","helpQuickAccessActionLabel","quickCommandActionLabel","quickCommandHelp","quickOutlineActionLabel","quickOutlineByCategoryActionLabel","editorViewAccessibleLabel","accessibilityHelpMessage","toggleHighContrast","bulkEditServiceSummary","SimpleModel","_onWillDispose","SimpleEditorModelResolverService","widget","codeEditorCallback","diffEditorCallback","findModel","diffEditor","getOriginalEditor","SimpleEditorProgressService","NULL_PROGRESS_RUNNER","worked","SimpleDialogService","confirmation","doConfirm","confirmed","checkboxChecked","choice","SimpleNotificationService","notify","notification","NO_OP","StandaloneCommandService","instantiationService","_onWillExecuteCommand","_onDidExecuteCommand","onDidExecuteCommand","_instantiationService","invokeFunction","StandaloneKeybindingService","contextKeyService","telemetryService","notificationService","_cachedResolver","_dynamicKeybindings","keyEvent","_singleModifierDispatch","_keybinding","updateResolver","_toNormalizedKeybindingItems","getDefaultKeybindings","resolveKeybinding","keyboardEvent","toChord","isConfigurationOverrides","SimpleConfigurationService","_onDidChangeConfiguration","onDidChangeConfiguration","_configuration","toData","changedKeys","updateValue","configurationChangeEvent","sourceConfig","SimpleResourceConfigurationService","affectsConfiguration","arg3","Pos","SimpleResourcePropertiesService","StandaloneTelemetryService","publicLog","SimpleWorkspaceContextService","SCHEME","updateConfigurationService","isDiffEditor","toUpdate","isEditorConfigurationKey","isDiffEditorConfigurationKey","updateValues","ariaContainer","alertContainer","alertContainer2","statusContainer","statusContainer2","SimpleBulkEditService","textEdits","replaceMove","totalEdits","totalFiles","pushStackElement","pushEditOperations","ariaSummary","SimpleUriLabelService","SimpleLayoutService","_codeEditorService","_container","onDidLayout","_dimension","focus","textContent","insertMessage","IMarkerDecorationsService","Action","cssClass","actionCallback","_enabled","_checked","_id","_cssClass","_actionCallback","_setLabel","_tooltip","_setTooltip","tooltip","_setClass","class","_setEnabled","_setChecked","ActionRunner","_onBeforeRun","onBeforeRun","_onDidRun","onDidRun","runAction","Separator","ID","SubmenuAction","actions","_actions","EmptySubmenuAction","STATIC_VALUES","ContextKeyExpr","ContextKeyDefinedExpr","ContextKeyEqualsExpr","ContextKeyRegexExpr","ContextKeyNotExpr","ContextKeyAndExpr","ContextKeyOrExpr","_deserializeOrExpression","_deserializeAndExpression","_deserializeOne","serializedOne","ContextKeyNotEqualsExpr","_deserializeValue","_deserializeRegexValue","ContextKeyInExpr","ContextKeyGreaterEqualsExpr","ContextKeyGreaterExpr","ContextKeySmallerEqualsExpr","ContextKeySmallerExpr","serializedValue","caseIgnoreFlag","ContextKeyFalseExpr","ContextKeyTrueExpr","cmp1","staticValue","cmp2","valueKey","ContextKeyNotInExpr","thisSource","otherSource","ContextKeyNotRegexExpr","_expr","_normalizeArr","hasTrue","lastElement","secondToLastElement","resultElement","LEFT","RIGHT","and","or","hasFalse","RawContextKey","metaOrHide","getContextKeyValue","not","ColorScheme","IContextKeyService","key1","key2","value1","value2","ThemeColor","ThemeIcon","IThemeService","themeColorFromId","getThemeTypeSelector","DARK","HIGH_CONTRAST","isThemeColor","isThemeIcon","_regexFromString","modify","tildeIndex","ti1","ti2","asThemeIcon","themingRegistry","themingParticipants","onThemingParticipantAddedEmitter","participant","registerThemingParticipant","onColorThemeChange","Themable","onDidColorThemeChange","onThemeChange","updateStyles","isIMenuItem","MenuId","debugName","_debugName","CommandPalette","EditorContext","SimpleEditorContext","EditorContextCopy","EditorContextPeek","MenubarEditMenu","MenubarCopy","MenubarGoMenu","MenubarSelectionMenu","InlineCompletionsActions","IMenuService","MenuRegistry","_menuItems","_onDidChangeMenu","onDidChangeMenu","_commandPaletteChangeEvent","addCommands","didChange","appendMenuItems","changedIds","_appendImplicitItems","alt","SubmenuItemAction","_menuService","submenu","createMenu","getActions","MenuItemAction","renderShortTitle","shortTitle","precondition","toggled","runArgs","shouldForwardArgs","EditorExtensionsRegistry","ITelemetryService","Command","_kbOpts","kbOpts","_menuOpts","menuOpts","_description","_registerMenuItem","kbWhen","kbExpr","runCommand","appendMenuItem","menuId","MultiCommand","_implementations","implementation","impl","ProxyCommand","EditorCommand","codeEditorService","getActiveCodeEditor","invokeWithinContext","editorAccessor","runEditorCommand","controllerGetter","_callback","EditorAction","convertOptions","alias","reportTelemetry","withDefaults","contextMenuOpts","registerEditorCommand","editorCommand","EditorContributionRegistry","registerEditorAction","registerEditorContribution","getEditorCommand","getEditorActions","getEditorContributions","getSomeEditorContributions","ids","getDiffEditorContributions","editorContributions","diffEditorContributions","editorActions","editorCommands","UndoCommand","RedoCommand","SelectAllCommand","MarkerDecorationsContribution","_markerDecorationsService","CharWidthRequest","chr","DomCharWidthReader","requests","_bareFontInfo","_requests","_testElements","_createDomElements","_readFromDomElements","removeChild","regularDomNode","getMassagedFontFamily","boldDomNode","italicDomNode","testElements","request","testElement","_render","fulfill","htmlString","testString","ElementSizeObserver","referenceDomElement","changeCallback","resizeObserver","measureReferenceDomElementToken","measureReferenceDomElement","stopObserving","ResizeObserver","contentRect","disconnect","callChangeCallback","observedWidth","observedHeight","CSSBasedConfigurationCache","itemId","CSSBasedConfiguration","_evictUntrustedReadingsTimeout","put","_evictUntrustedReadings","somethingRemoved","getValues","readConfig","_actualReadConfiguration","_writeToCache","monospace","typicalHalfwidthCharacter","createRequest","typicalFullwidthCharacter","digit0","digit1","digit2","digit3","digit4","digit5","digit6","digit7","digit8","digit9","rightwardsArrow","halfwidthRightwardsArrow","middot","readCharWidths","referenceWidth","canTrustBrowserZoomLevel","getTimeSinceLastZoomLevelChanged","accessibilityService","_elementSizeObserver","startObserving","onDidChangeScreenReaderOptimized","_getExtraEditorClassName","getWidth","getHeight","isScreenReaderOptimized","getAccessibilitySupport","setFontFamily","setFontWeight","setFontSize","setFontFeatureSettings","setLineHeight","setLetterSpacing","extra","FastDomNode","_maxWidth","_width","_height","_top","_left","_bottom","_right","_fontFamily","_fontWeight","_fontSize","_fontFeatureSettings","_lineHeight","_letterSpacing","_className","_display","_position","_visibility","_backgroundColor","_layerHint","_contain","_boxShadow","maxWidth","shouldHaveIt","toggle","backgroundColor","layerHint","boxShadow","contain","createFastDomNode","memoize","_target","fnKey","memoizeKey","Tap","Change","Start","End","Contextmenu","Gesture","dispatched","activeTouches","targets","ignoreTargets","_lastSetTapCountTime","DomUtils","onTouchStart","passive","onTouchEnd","onTouchMove","targetTouches","initialTarget","initialTimeStamp","initialPageX","initialPageY","rollingTimestamps","rollingPageX","rollingPageY","evt","newGestureEvent","dispatchEvent","activeTouchCount","changedTouches","holdTime","HOLD_DELAY","finalX","finalY","deltaT","dispatchTo","inertia","createEvent","initEvent","tapCount","setTapCount","CLEAR_TAP_COUNT_TIME","vX","dirX","vY","dirY","delta_pos_x","delta_pos_y","stopped","SCROLL_FRICTION","translationX","translationY","isTouchDevice","standardMouseMoveMerger","GlobalMouseMoveMonitor","_hooks","_mouseMoveEventMerger","_mouseMoveCallback","_onStopCallback","stopMonitoring","invokeStopCallback","isMonitoring","onStopCallback","initialElement","initialButtons","mouseMoveEventMerger","mouseMoveCallback","windowChain","mouseMove","listenTo","hasDifferentOriginAncestor","lastSameOriginAncestor","PageCoordinates","_pageCoordinatesBrand","ClientCoordinates","_clientCoordinatesBrand","EditorPagePosition","_editorPagePositionBrand","createEditorPagePosition","editorViewDomNode","editorPos","EditorMouseEvent","_editorMouseEventBrand","EditorMouseEventFactory","_editorViewDomNode","merger","EditorPointerEventFactory","GlobalEditorMouseMoveMonitor","_globalMouseMoveMonitor","_keydownListener","toKeybinding","startMonitoring","ViewEventHandler","_shouldRender","shouldRender","onCompositionStart","onCompositionEnd","onConfigurationChanged","onCursorStateChanged","onDecorationsChanged","onFlushed","onFocusChanged","onLanguageConfigurationChanged","onLineMappingChanged","onLinesChanged","onLinesDeleted","onLinesInserted","onRevealRangeRequest","onScrollChanged","onTokensChanged","onThemeChanged","onTokensColorsChanged","onZonesChanged","ViewPart","_context","addEventHandler","removeEventHandler","PartFingerprints","partId","parentElement","RenderingContext","viewLayout","viewportData","viewLines","_renderingContextBrand","_viewLines","includeNewLines","linesVisibleRangesForRange","visibleRangeForPosition","_restrictedRenderingContextBrand","_viewLayout","scrollWidth","getScrollWidth","scrollHeight","getScrollHeight","visibleRange","bigNumbersDelta","vInfo","getCurrentViewport","viewportWidth","viewportHeight","absoluteTop","getVerticalOffsetForLineNumber","getDecorationsInViewport","LineVisibleRanges","outsideRenderedLine","HorizontalRange","HorizontalPosition","VisibleRanges","FloatHorizontalRange","_floatHorizontalRangeBrand","RangeUtil","_handyReadyRange","createRange","endNode","selectNodeContents","startElement","endElement","_createRange","setStart","setEnd","getClientRects","_detachRange","prevLeft","prevWidth","myLeft","myWidth","clientRects","clientRectDeltaLeft","clientRect","_mergeAdjacentRanges","startChildIndex","endChildIndex","_createHorizontalRangesFromClientRects","_readClientRects","canUseFastRenderedViewLine","monospaceAssumptionsAreValid","DomReadingContext","_domNode","_clientRectDeltaLeft","_clientRectDeltaLeftRead","ViewLineOptions","themeType","ViewLine","_isMaybeInvalid","_renderedViewLine","deltaTop","lineData","getViewLineRenderingData","actualInlineDecorations","renderLineInput","CLASS_NAME","renderedViewLine","FastRenderedViewLine","createRenderedLine","setTop","setHeight","getWidthIsFast","toSlowRenderedLine","horizontalRanges","getVisibleRangesForRange","spanNode","getColumnOfNodeOffset","_characterMapping","_charWidth","_getCharPosition","expectedWidth","actualWidth","startPosition","endPosition","getAbsoluteOffset","spanNodeTextContentLength","spanIndex","previousSibling","getColumn","RenderedViewLine","_isWhitespaceOnly","_containsForeignElements","_cachedWidth","_pixelOffsetCache","myDomNode","_getReadingTarget","_readPixelOffset","_readVisibleRangesForRange","pixelOffset","_readRawVisibleRangesForRange","readingTarget","cachedPixelOffset","_actualReadPixelOffset","readHorizontalRanges","getDomPosition","expectedResult","startDomPosition","endDomPosition","WebKitRenderedViewLine","endPixelOffset","lastRange","createWebKitRenderedLine","createNormalRenderedLine","escapeNewLine","TextChange","oldPosition","oldText","newPosition","newText","_writeStringSize","_writeString","_readString","TextChangeCompressor","prevEdits","currEdits","_prevEdits","_currEdits","_result","_resultLen","_prevLen","_prevDeltaOffset","_currLen","_currDeltaOffset","currIndex","prevEdit","_getPrev","currEdit","_getCurr","oldEnd","_acceptCurr","newEnd","_acceptPrev","_splitCurr","_splitPrev","mergePrev","mergeCurr","oldLength","newLength","merged","_removeNoOps","_rebaseCurr","_rebasePrev","prevDeltaOffset","currDeltaOffset","preText","postText","uriGetComparisonKey","SingleModelEditStackData","beforeVersionId","afterVersionId","beforeEOL","afterEOL","beforeCursorState","afterCursorState","textChanges","compress","necessarySize","_writeSelectionsSize","writeSize","_writeSelections","alternativeVersionId","getAlternativeVersionId","getModelEOL","_readSelections","changeCount","SingleModelEditStackElement","deserialize","_applyUndo","_applyRedo","MultiModelEditStackElement","editStackElements","_isOpen","_editStackElementsArr","_editStackElementsMap","editStackElement","prepareUndoRedo","canAppend","undo","heapSize","isEditStackElement","EditStack","undoRedoService","_model","_undoRedoService","getLastElement","removeElements","newElement","pushElement","_getOrCreateEditStackElement","setEOL","editOperations","cursorStateComputer","inverseEditOperations","applyEdits","_computeCursorState","op","textChange","SpacesDiffResult","spacesDiff","looksLikeAlignment","aLength","bLength","aSpacesCnt","aTabsCount","bSpacesCnt","bTabsCount","tabsDiff","guessIndentation","defaultTabSize","defaultInsertSpaces","linesCount","linesIndentedWithTabsCount","linesIndentedWithSpacesCount","previousLineIndentation","spacesDiffCount","currentLineLength","getLineLength","currentLineText","useCurrentLineText","currentLineHasContent","currentLineIndentation","currentLineSpacesCount","currentLineTabsCount","lenJ","getLineCharCode","currentSpacesDiff","tabSizeScore","possibleTabSize","possibleTabSizeScore","getNodeColor","setNodeColor","getNodeIsVisited","setNodeIsVisited","getNodeIsForValidation","setNodeIsForValidation","_setNodeStickiness","stickiness","setCollapseOnReplaceEdit","IntervalNode","maxEnd","ownerId","cachedVersionId","cachedAbsoluteStart","cachedAbsoluteEnd","collapseOnReplaceEdit","absoluteStart","absoluteEnd","SENTINEL","IntervalTree","requestNormalizeDelta","filterOwnerId","filterOutValidation","T","intervalStart","intervalEnd","nodeStart","nodeEnd","setCachedOffsets","include","intervalSearch","collectNodesFromOwner","collectNodesPostOrder","rbTreeInsert","_normalizeDeltaIfNecessary","rbTreeDelete","initialNode","textLength","nodesOfInterest","searchForEditing","editDelta","recomputeMaxEnd","noOverlapReplace","nodeAcceptEdit","normalizeDelta","adjustMarkerBeforeColumn","markerOffset","markerStickToPreviousCharacter","moveSemantics","nodeStickiness","getNodeStickiness","startStickToPreviousCharacter","endStickToPreviousCharacter","deletingCnt","insertingCnt","commonLength","startDone","endDone","getCollapseOnReplaceEdit","z","zAbsoluteStart","zAbsoluteEnd","intervalCompare","treeInsert","recomputeMaxEndWalkToRoot","rightRotate","leftest","detach","resetSentinel","yWasRed","computeMaxEnd","leftMaxEnd","rightMaxEnd","TreeNode","piece","size_left","lf_left","righttest","calculateSize","calculateLF","lineFeedCnt","tree","rbDelete","recomputeTreeMetadata","newSizeLeft","newLFLeft","lf_delta","updateTreeMetadata","fixInsert","lineFeedCntDelta","WordCharacterClassifier","getMapForWordSeparators","computeFn","SearchParams","isMultilineRegexSource","canUseSimpleSearch","SearchData","simpleSearch","createFindMatch","rawMatches","captureMatches","LineFeedCounter","lineFeedsOffsets","lineFeedsOffsetsLen","textLen","_lineFeedsOffsets","TextModelSearch","searchParams","searchRange","limitResultCount","searchData","parseSearchRequest","_doFindMatchesMultiline","Searcher","_doFindMatchesLineByLine","lfCounter","match0","lineFeedCountBeforeMatch","findLineFeedCountBeforeOffset","lineFeedCountInMatch","getPositionAt","searcher","getOffsetAt","_getMultilineMatchRange","_findMatchesInLine","searchStringLen","lastMatchIndex","isValidMatch","searchStart","_doFindNextMatchMultiline","_doFindNextMatchLineByLine","searchTextStart","_findFirstMatchInLine","fromColumn","_doFindPreviousMatchMultiline","_doFindPreviousMatchLineByLine","_findLastMatchInLine","bestResult","matchStartIndex","charBefore","firstCharInMatch","leftIsWordBounday","charAfter","lastCharInMatch","rightIsWordBounday","searchRegex","_wordSeparators","_searchRegex","_prevMatchStartIndex","_prevMatchLength","AverageBufferSize","createUintArray","LineStarts","lineStarts","cr","lf","crlf","createLineStartsFast","readonly","Piece","bufferIndex","StringBuffer","PieceTreeSnapshot","BOM","_tree","_BOM","_index","iterate","getPieceContent","PieceTreeSearchCache","nodePos","nodeStartOffset","nodeStartLineNumber","nodePosition","hasInvalidVal","newArr","PieceTreeBase","chunks","eolNormalized","_buffers","_lastChangeBufferPos","_lineCnt","_length","_EOL","_EOLLength","_EOLNormalized","lastNode","rbInsertRight","_searchCache","_lastVisitedLine","computeBufferMetadata","averageBufferSize","tempChunk","tempChunkLen","getNodeContent","newEOL","normalizeEOL","leftLen","getAccumulatedValue","lfCnt","originalOffset","lineStartOffset","nodeAt2","getValueInRange2","offsetInBuffer","currentLine","danglingCR","pieceLength","pieceStartLine","pieceEndLine","pieceStartOffset","getLineRawContent","matchingNode","targetOffset","_getCharCode","getLength","startCursor","endCursor","searchText","startOffsetInBuffer","positionInBuffer","getLineFeedCnt","retStartColumn","retEndColumn","findMatchesInNode","lineBreakCnt","nextLineStartOffset","nodeAt","insertPosInBuffer","appendToNode","insertContentToNodeLeft","nodesToDel","newRightPiece","shouldCheckCRLF","endWithCR","headOfRight","nodeCharCodeAt","newStart","startWithLF","tailOfLeft","previousPos","deleteNodeTail","newPieces","createNewPieces","tmpNode","deleteNodes","insertContentToNodeRight","rbInsertLeft","cnt","startNode","startSplitPosInBuffer","endSplitPosInBuffer","validateCRLFWithPrevNode","deleteNodeHead","validateCRLFWithNextNode","shrinkNode","nPiece","adjustCarriageReturnFromNext","previousCharOffset","cursor","nodes","splitText","endPos","newPiece","get2","prevAccumulatedValue","accumulatedValue","lineCnt","realLineCnt","expectedLineStartIndex","originalLFCnt","newEndOffset","newLineFeedCnt","size_delta","originalStartOffset","originalStartPos","originalEndPos","oldLFCnt","hitCRLF","prevStartOffset","oldLineFeedCnt","prevAccumualtedValue","offsetOfNode","newOffset","nextNode","fixCRLF","prevNewLength","prevNewLFCnt","leftRet","prevNode","countEOL","eolCount","firstLineLength","lastLineStart","getDefaultMetadata","topLevelLanguageId","EMPTY_LINE_TOKENS","MultilineTokensBuilder","MultilineTokens","SparseEncodedTokens","_tokenCount","_getDeltaLine","_getStartCharacter","_getEndCharacter","_getTokenCount","startChar","maxDeltaLine","endChar","deltaLine","midDeltaLine","LineTokens2","startDeltaLine","endDeltaLine","newTokenCount","hasDeletedTokens","firstDeltaLine","srcOffset","tokenDeltaLine","tokenStartCharacter","tokenEndCharacter","destOffset","aTokens","bTokens","destTokens","destFirstDeltaLine","horizontalShiftForFirstLineTokens","startCharacter","endCharacter","deletedLineCount","lastLineLength","firstCharCode","isInsertingPreciselyOneWordCharacter","tokenLength","MultilineTokens2","getMaxDeltaLine","deltaRange","getRange","removeTokens","_updateEndLineNumber","bDeltaLine","acceptEdit","firstLineIndex","lastLineIndex","deletedLinesCount","tokenMaxDeltaLine","deletedBefore","acceptDeleteRange","acceptInsertText","toUint32Array","TokensStore2","_isComplete","isComplete","_range","_firstRange","_lastRange","insertPosition","_findFirstPieceWithLine","aIndex","lastEndOffset","emitToken","bIndex","bStartCharacter","getStartCharacter","bEndCharacter","getEndCharacter","bMetadata","getMetadata","bMask","aMask","aMergeIndex","TokensStore","_lineTokens","rawLineTokens","insertCount","checkEquality","_massageTokens","_ensureLine","oldTokens","_deleteEnding","lastLineTokens","_deleteBeginning","_append","_deleteLines","_insertLines","hasDifferentLanguageId","toChIndex","fromChIndex","tokensCount","lastEnd","fromTokenIndex","fromTokenStartOffset","_otherTokens","myTokens","otherTokens","otherTokensCount","chIndex","PieceTreeTextBuffer","_onDidChangeContent","_mightContainNonBasicASCII","_mightContainRTL","_mightContainUnusualLineTerminators","_pieceTree","preserveBOM","createSnapshot","_getEndOfLine","fromLineNumber","toLineNumber","fromOffset","toOffset","getValueLengthInRange","rawOperations","recordTrimAutoWhitespace","computeUndoEdits","mightContainUnusualLineTerminators","canReduceOperations","operations","validatedRange","textMightContainNonBasicASCII","validText","strEOL","bufferEOL","sortIndex","rangeOffset","rangeLength","_sortOpsAscending","hasTouchingRanges","rangeEnd","nextRangeStart","_reduceOperations","reverseRanges","_getInverseEditRanges","newTrimAutoWhitespaceCandidates","reverseRange","currentLineContent","oldContent","reverseOperations","reverseRangeDeltaOffset","bufferText","reverseRangeOffset","contentChanges","_doApplyEdits","prevContent","_toSingleEditOperation","firstEditRange","lastEditRange","entireEditRange","lastEndLineNumber","lastEndColumn","operation","_sortOpsDescending","contentChangeRange","findMatchesLineByLine","prevOpEndLineNumber","prevOpEndColumn","prevOp","resultRange","compareRangesUsingEnds","PieceTreeTextBufferFactory","_chunks","_bom","_cr","_lf","_crlf","_containsRTL","_containsUnusualLineTerminators","_isBasicASCII","_normalizeEOL","totalEOLCount","totalCRCount","_getEOL","newLineStart","textBuffer","PieceTreeTextBufferBuilder","_hasPreviousChar","_previousChar","_tmpLineStarts","chunk","_acceptChunk1","allowEmptyStrings","_acceptChunk2","createLineStarts","_finish","lastChunk","newLineStarts","ModelRawFlush","LineInjectedText","injectedTexts","lastOriginalOffset","decorations","decoration","ModelRawLineChanged","ModelRawLinesDeleted","ModelRawLinesInserted","ModelRawEOLChanged","ModelRawContentChangedEvent","isUndoing","isRedoing","resultingSelection","ModelInjectedTextChangedEvent","InternalModelContentChangeEvent","rawContentChangedEvent","contentChangedEvent","_mergeChangeEvents","isFlush","TokenizationStateStore","_beginState","_valid","_invalidLineStartIndex","initialState","_setBeginState","_reset","beginState","valid","_setValid","previousEndState","getBeginState","_invalidateLine","_isValid","deletingLinesCnt","insertingLinesCnt","TextModelTokenization","textModel","_textModel","_tokenizationStateStore","_tokenizationSupport","_resetTokenizationState","clearTokens","onDidChangeContentFast","_beginBackgroundTokenization","onDidChangeAttached","onDidChangeLanguage","isTooLargeForTokenization","initializeTokenization","isAttachedToEditor","_hasLinesToTokenize","_revalidateTokensNow","MAX_ALLOWED_TIME","builder","tokenizedLineNumber","_tokenizeOneInvalidLine","setTokens","_tokenizeViewport","_updateTokensUntilLine","firstInvalidLineNumber","invalidLineStartIndex","lineStartState","safeTokenize","setEndState","nonWhitespaceColumn","getLineFirstNonWhitespaceColumn","fakeLines","newNonWhitespaceIndex","setFakeTokens","roundFloat","decimalPoints","decimal","Format","Color","RGBA","_rgbaBrand","HSLA","_hslaBrand","rgba","chroma","hsla","_hue2rgb","HSVA","_hsvaBrand","cmax","hsva","_hsla","toRGBA","_hsva","fromRGBA","_relativeLuminanceForComponent","another","getRelativeLuminance","factor","CSS","hex","parseHex","of","isLighterThan","lum1","lum2","lighten","isDarkerThan","darken","createTextBufferFactory","acceptChunk","createTextBuffer","cyan","lightgrey","transparent","_toTwoDigitHex","_parseHexDigit","formatRGB","formatRGBA","formatHSL","formatHSLA","formatHex","formatHexA","compact","isOpaque","MODEL_ID","TextModelSnapshot","_eos","resultCnt","resultLength","invalidFunc","BracketSearchCanceled","_searchCanceledBrand","stripBracketSearchCanceled","TextModel","creationOptions","associatedResource","_onDidChangeDecorations","DidChangeDecorationsEmitter","affectedInjectedTextLines","handleBeforeFireDecorationsChangedEvent","onDidChangeDecorations","_onDidChangeLanguage","_onDidChangeLanguageConfiguration","onDidChangeLanguageConfiguration","_onDidChangeTokens","onDidChangeTokens","_onDidChangeOptions","onDidChangeOptions","_onDidChangeAttached","_onDidChangeContentOrInjectedText","onDidChangeContentOrInjectedText","_eventEmitter","DidChangeContentEmitter","fastEvent","_associatedResource","_attachedEditorCount","_bufferDisposable","resolveOptions","bufferLineCount","bufferTextLength","largeFileOptimizations","_isTooLargeForTokenization","LARGE_FILE_SIZE_THRESHOLD","LARGE_FILE_LINE_COUNT_THRESHOLD","_isTooLargeForSyncing","MODEL_SYNC_LIMIT","_alternativeVersionId","_initialUndoRedoSnapshot","_isDisposing","_languageRegistryListener","_instanceId","_lastDecorationId","_decorations","_decorationsTree","DecorationsTrees","_commandManager","_isUndoing","_isRedoing","_trimAutoWhitespaceLines","_tokens2","_tokenization","slowEvent","emptyDisposedTextBuffer","rawChange","_assertNotDisposed","_setValueFromTextBuffer","textBufferDisposable","oldFullModelRange","oldModelValueLength","_increaseVersionId","_emitContentChangedEvent","_createContentChanged2","_onBeforeEOLChange","_onAfterEOLChange","ensureAllNodesHaveRanges","allDecorations","smallLineCharCount","longLineCharCount","_newOpts","createChangeEvent","guessedIndentation","normalizeIndentation","findMatches","resetMightContainUnusualLineTerminators","rawPosition","rawOffset","newAlternativeVersionId","newInitialUndoRedoSnapshot","fullModelRange","fullModelValue","getBOM","rawRange","validateRange","getCharacterCountInRange","getLineLastNonWhitespaceColumn","initialStartLineNumber","initialStartColumn","initialEndLineNumber","initialEndColumn","validationType","_lineNumber","_column","_isValidPosition","charCodeBeforeStart","charCodeBeforeEnd","startInsideSurrogatePair","endInsideSurrogatePair","_isValidRange","rawSearchScope","searchRanges","searchScope","isIRange","d1","d2","matchMapper","uniqueSearchRanges","areIntersecting","rawSearchStart","validatePosition","findNextMatch","findPreviousMatch","popStackElement","beginDeferredEmit","pushEOL","endDeferredEmit","rawOperation","_validateEditOperation","_pushEditOperations","_validateEditOperations","incomingEdits","editsAreNearCursors","foundEditNearSel","editRange","selIsAbove","selIsBelow","trimLineNumber","allowTrimLine","editText","trimRange","pushEditOperation","resultingAlternativeVersionId","rangeStart","_applyUndoRedoEdits","_overwriteAlternativeVersionId","oldLineCount","newLineCount","acceptReplace","rawContentChanges","editingLinesCnt","changeLineCountDelta","currentEditStartLineNumber","firstEditLineNumber","lastInsertedLineNumber","decorationsWithInjectedTextInEditedRange","getInjectedTextInInterval","injectedTextInEditedRange","fromDecorations","injectedTextInEditedRangeQueue","editLineNumber","currentEditLineNumber","takeFromEndWhile","decorationsInCurrentLine","spliceStartLineNumber","spliceLineNumber","newLines","takeWhile","canUndo","canRedo","lineChangeEvents","_getInjectedTextInLine","_changeDecorations","changeAccessor","addDecoration","_deltaDecorationsImpl","changeDecoration","newRange","_changeDecorationImpl","changeDecorationOptions","_changeDecorationOptionsImpl","_normalizeOptions","removeDecoration","deltaDecorations","oldDecorations","newDecorations","getDecorationRange","newStickiness","TRACKED_RANGE_OPTIONS","_validateRangeRelaxedNoAllocations","setOptions","decorationId","getNodeRange","getLinesDecorations","_startLineNumber","_endLineNumber","_getDecorationsInRange","getAll","getAllInjectedText","filterRange","getAllInInterval","getRangeAt","oldRange","recordLineAffectedByInjectedText","checkAffectedAndFire","nodeWasInOverviewRuler","nodeIsInOverviewRuler","nodeRange","oldDecorationsIds","oldDecorationsLen","oldDecorationIndex","newDecorationsLen","newDecorationIndex","internalDecorationId","newDecoration","minChangedLineNumber","maxChangedLineNumber","hasChange","_emitModelTokensChangedEvent","tokenizationSupportChanged","semanticTokensApplied","hasCompleteSemanticTokens","changedRange","setPartial","tokenizeViewport","isCheapToTokenize","_getLineTokens","syntacticTokens","getTokens","addSemanticTokens","oldLanguage","newLanguage","_findLanguageBoundaries","rbStartOffset","rbEndOffset","rightBiasedWord","lbStartOffset","lbEndOffset","leftBiasedWord","wordAtPosition","_bracket","bracketsSupport","getBracketsSupport","_findMatchingBracketUp","_matchBracket","modeBrackets","currentLanguageId","searchStartOffset","searchEndOffset","tokenStartOffset","currentModeBrackets","_establishBracketSearchOffsets","foundBracket","findNextBracketInRange","foundBracketText","_matchFoundBracket","prevTokenIndex","prevModeBrackets","isOpen","continueSearchPredicate","_findMatchingBracketDown","totalCallCount","searchPrevMatchingBracketInRange","hitText","isClose","prevSearchInToken","searchInToken","searchNextMatchingBracketInRange","tokenLanguageId","_toFoundBracket","maxDuration","savedCounts","counts","resetCounts","searchInRange","computeIndentLevel","minLineNumber","getFoldingRules","offSide","up_aboveContentLineIndex","up_aboveContentLineIndent","up_belowContentLineIndex","up_belowContentLineIndent","up_resolveIndents","_computeIndentLevel","down_aboveContentLineIndex","down_aboveContentLineIndent","down_belowContentLineIndex","down_belowContentLineIndent","down_resolveIndents","goUp","goDown","initialIndent","distance","upLineNumber","downLineNumber","upLineIndentLevel","currentIndent","_getIndentLevelForWhitespaceLine","downLineIndentLevel","aboveContentLineIndex","aboveContentLineIndent","belowContentLineIndex","belowContentLineIndent","resultIndex","indentOfLine","detectIndentation","spacesCnt","tabsCnt","_normalizeIndentationFromWhitespace","isNodeInOverviewRuler","isNodeInjectedText","DEFAULT_CREATION_OPTIONS","_decorationsTree0","_decorationsTree1","_injectedTextDecorationsTree","_intervalSearch","_ensureNodesHaveRanges","r0","r1","r2","overviewRulerOnly","_search","_resolveNode","resolveNode","cleanClassName","DecorationOptions","darkColor","ModelDecorationOverviewRulerOptions","_resolvedColor","Center","_resolveColor","getColor","ModelDecorationMinimapOptions","fromHex","ModelDecorationInjectedTextOptions","ModelDecorationOptions","hoverMessage","glyphMarginHoverMessage","isWholeLine","showIfCollapsed","glyphMarginClassName","linesDecorationsClassName","firstLineDecorationClassName","marginClassName","beforeContentClassName","afterContentClassName","EMPTY","createDynamic","handleBeforeFire","_affectedInjectedTextLines","_deferredCnt","_shouldFire","_affectsMinimap","_affectsOverviewRuler","affectsMinimap","affectsOverviewRuler","_fastEmitter","_slowEmitter","_deferredEvent","autoCloseAlways","autoCloseNever","autoCloseBeforeWhitespace","CursorConfiguration","modelOptions","_cursorMoveConfigurationBrand","pageSize","_electricChars","shouldAutoCloseBefore","_getShouldAutoClose","_getSurroundingPairs","electricChars","_getElectricCharacters","autoCloseConfig","_getLanguageDefinedShouldAutoClose","autoCloseBeforeSet","SingleCursorState","selectionStart","selectionStartLeftoverVisibleColumns","leftoverVisibleColumns","_singleCursorStateBrand","_computeSelection","inSelectionMode","CursorContext","viewModel","coordinatesConverter","cursorConfig","_cursorContextBrand","PartialModelCursorState","modelState","viewState","PartialViewCursorState","CursorState","_cursorStateBrand","modelSelection","fromModelState","modelSelections","fromModelSelection","EditOperationResult","_editOperationResultBrand","shouldPushStackElementBefore","shouldPushStackElementAfter","CursorColumns","lineContentLength","nextRenderTabStop","visibleColumnFromColumn","beforeVisibleColumn","beforeColumn","afterVisibleColumn","afterColumn","columnFromVisibleColumn","getLineMinColumn","isQuote","HitTestResult","AtomicTabMoveOperations","prevTabStopPosition","prevTabStopVisibleColumn","whitespaceVisibleColumn","currentVisibleColumn","targetVisibleColumn","UnknownHitTestResult","hitTarget","ContentHitTestResult","createFromDOMInfo","getPositionFromDOMInfo","PointerHandlerLastRenderData","lastViewCursorsRenderData","lastTextareaPosition","MouseTarget","mouseColumn","EditorRange","_typeToString","ElementPath","HitTestContext","viewHelper","lastRenderData","viewDomNode","_viewHelper","mouseVerticalOffset","getZoneAtCoord","isAfterLines","getLineNumberAtVerticalOffset","isInTopPadding","isInBottomPadding","_findAttribute","getLineWidth","getCurrentScrollTop","getCurrentScrollLeft","viewZoneWhitespace","getWhitespaceAtVerticalOffset","viewZoneMiddle","verticalOffset","positionBefore","positionAfter","afterLineNumber","viewZoneId","hasAttribute","HitTestRequest","_ctx","collect","mouseContentHorizontalOffset","outerHTML","getTextModelOptions","isInMarginArea","isInContentArea","MouseTargetFactory","_getMouseColumn","EMPTY_CONTENT_AFTER_LINES","createEmptyContentDataInLines","horizontalDistanceToText","isChildOfContentWidgets","isChildOfOverflowingContentWidgets","isChildOfOverlayWidgets","_createMouseTarget","domHitTestExecuted","hitTestResult","_doHitTest","createMouseTargetFromHitTestPosition","withTarget","resolvedRequest","_hitTestContentWidget","_hitTestOverlayWidget","_hitTestMinimap","_hitTestScrollbarSlider","_hitTestViewZone","_hitTestMargin","_hitTestViewCursor","_hitTestTextArea","_hitTestViewLines","_hitTestScrollbar","widgetId","findAttribute","mightBeForeignElement","cursorVerticalOffset","viewZoneData","mouseTargetType","isTextArea","getFullLineRangeAtCoord","offsetX","isChildOfViewLines","isStrictChildOfViewLines","lineWidth","isChildOfMinimap","possibleLineNumber","isChildOfScrollableElement","columnHorizontalOffset","points","mouseCoordinates","toClientCoordinates","spanNodeClientRect","mouseIsOverSpanNode","rng","lineCenteredVerticalOffset","adjustedPageY","adjustedPage","_actualDoHitTestWithCaretRangeFromPoint","coords","caretRangeFromPoint","elementFromPoint","TEXT_NODE","lastChild","rect","pixelCursor","charWidthReader","CharWidthReader","getCharWidth","shadowCaretRangeFromPoint","startContainer","parent1","parent2","parent3","hitResult","caretPositionFromPoint","offsetNode","parent1ClassName","parent2ClassName","tokenSpan","atomicPosition","_doHitTestWithCaretRangeFromPoint","_doHitTestWithCaretPositionFromPoint","getInjectedTextAt","normalizedPosition","normalizePosition","_snapToSoftTabBoundary","_canvas","measureText","createMouseMoveEventMerger","mouseTargetFactory","targetIsWidget","mouseTargetIsWidget","MouseHandler","viewController","_mouseDownOperation","MouseDownOperation","testEventTarget","lastMouseLeaveTime","mouseEvents","onContextMenu","_onContextMenu","onMouseMoveThrottled","_onMouseMove","MOUSE_MOVE_MINIMUM_TIME","onMouseUp","_onMouseUp","onMouseLeave","_onMouseLeave","onMouseDown","_onMouseDown","emitMouseWheel","setZoomLevel","onHeightChanged","toPageCoordinates","createMouseTarget","getLastRenderData","getMouseColumn","emitContextMenu","emitMouseMove","emitMouseLeave","emitMouseUp","targetIsContent","targetIsGutter","targetIsLineNumbers","targetIsViewZone","shouldHandle","focusTextArea","shouldSuppressMouseDownOnViewZone","shouldSuppressMouseDownOnWidget","emitMouseDown","Mimes","_viewController","_mouseMoveMonitor","_onScrollTimeout","_mouseState","MouseDownState","_currentSelection","_isActive","_lastMouseEvent","setModifiers","_findMousePosition","isDragAndDrop","emitMouseDrag","_dispatchMouse","targetType","setStartedOnLineNumbers","setStartButtons","trySetCount","_onMouseDownThenMove","KeyboardEvent","emitMouseDropCanceled","emitMouseDrop","_stop","editorContent","_helpPositionJumpOverViewZone","aboveLineNumber","belowLineNumber","positionOutsideEditor","_getPositionOutsideEditor","dispatchMouse","startedOnLineNumbers","mouseDownCount","_altKey","_ctrlKey","_metaKey","_shiftKey","_leftButton","_middleButton","_startedOnLineNumbers","_lastMouseDownPosition","_lastMouseDownPositionEqualCount","_lastMouseDownCount","_lastSetMouseDownCountTime","setMouseDownCount","newMouseDownPosition","CLEAR_MOUSE_DOWN_COUNT_TIME","binary","unknown","registeredAssociations","nonUserRegisteredAssociations","userRegisteredAssociations","registerTextMime","association","warnOnOverwrite","associationItem","toTextMimeAssociationItem","userConfigured","filename","filepattern","firstline","filenameLowercase","extensionLowercase","filepatternLowercase","filepatternOnPath","guessMimeTypes","firstLine","configuredMime","guessMimeTypeByPath","registeredMime","firstlineMime","guessMimeTypeByFirstline","associations","filenameMatch","patternMatch","extensionMatch","TextAreaState","selectionEnd","selectionStartPosition","selectionEndPosition","reason","textArea","select","setSelectionRange","_finishDeduceEditorPosition","str1","str2","deltaText","signum","lastLineFeedIndex","getSelectionStart","getSelectionEnd","previousState","couldBeEmojiInput","replacePrevCharCnt","replaceNextCharCnt","positionDelta","previousValue","previousSelectionStart","previousSelectionEnd","currentSelectionStart","currentSelectionEnd","previousSuffix","currentSuffix","suffixLength","previousPrefix","currentPrefix","prefixLength","potentialEmojiInput","startsWith","TextAreaSyntethicEvents","PagedScreenReaderStrategy","linesPerPage","page","trimLongText","selectionStartPage","_getPageOfLine","selectionStartPageRange","_getRangeForPage","selectionEndPage","selectionEndPageRange","pretextRange","pretext","lastLine","lastLineMaxColumn","posttextRange","posttext","selectionRange1","selectionRange2","LIMIT_CHARS","CopyOptions","InMemoryClipboardMetadataManager","_lastState","lastCopiedValue","pastedText","TextAreaInput","_onFocus","_onBlur","_onKeyDown","onKeyDown","_onKeyUp","onKeyUp","_onCut","onCut","_onPaste","onPaste","_onType","onType","_onCompositionStart","_onCompositionUpdate","onCompositionUpdate","_onCompositionEnd","_onSelectionChangeRequest","onSelectionChangeRequest","_textArea","TextAreaWrapper","_asyncTriggerCut","_asyncFocusGainWriteScreenReaderContent","writeScreenReaderContent","_textAreaState","_selectionChangeListener","_hasFocus","_isDoingComposition","_nextCommand","lastKeyDown","revealDeltaColumns","_setAndWriteTextAreaState","deduceAndroidCompositionInput","oldState","newState","readFromTextArea","deduceComposition","selectedText","typeInput","setIgnoreSelectionChangeTime","deduceInput","deduceInputFromTextAreaValue","_firePaste","_ensureClipboardGetsEditorSelection","schedule","ClipboardEventUtils","canUseTextData","getTextData","pastePlainText","hadFocus","_setHasFocus","previousSelectionChangeEventTime","delta1","delta2","getIgnoreSelectionChangeTime","resetSelectionChangeTime","newSelectionStart","newSelectionEnd","_newSelectionStartPosition","deduceEditorPosition","newSelectionStartPosition","deduceModelPosition","_newSelectionEndPosition","newSelectionEndPosition","newSelection","refreshFocusState","newHasFocus","_installSelectionChangeListener","textAreaState","collapseSelection","writeToTextArea","getScreenReaderContent","dataToCopy","getDataToCopy","storedMetadata","isFromEmptySelection","multicursorText","setTextData","clipboardData","getData","rawmetadata","setData","_ignoreSelectionChangeTime","selectionDirection","currentIsFocused","scrollState","PointerEventHandler","addTarget","linesContentDomNode","onTap","_lastPointerType","pointerType","onPointerMoveThrottled","onPointerUp","onPointerLeave","onPointerDown","deltaScrollNow","TouchHandler","dispatchTextAreaEvent","moveTo","PointerHandler","TouchEvent","getTargetAtClientPoint","DynamicViewOverlay","ColorRegistry","onDidChangeSchema","colorSchema","colorReferenceSchema","colorsById","needsTransparency","colorContribution","propertySchema","defaultSnippets","colorDesc","resolveColorValue","cat1","cat2","localeCompare","colorRegistry","registerColor","ifArg","thenArg","elseArg","dark","hc","contrastBorder","activeContrastBorder","widgetShadow","inputForeground","inputValidationInfoBackground","inputValidationInfoForeground","inputValidationInfoBorder","inputValidationWarningBackground","inputValidationWarningForeground","inputValidationWarningBorder","inputValidationErrorBackground","inputValidationErrorForeground","inputValidationErrorBorder","selectBackground","selectForeground","buttonForeground","buttonHoverBackground","badgeBackground","badgeForeground","scrollbarShadow","scrollbarSliderBackground","scrollbarSliderHoverBackground","scrollbarSliderActiveBackground","progressBarBackground","editorErrorBackground","editorErrorForeground","editorErrorBorder","editorWarningBackground","editorWarningForeground","editorWarningBorder","editorInfoBackground","editorInfoForeground","editorInfoBorder","editorHintForeground","editorHintBorder","editorBackground","editorForeground","editorWidgetBackground","editorWidgetForeground","editorWidgetBorder","quickInputBackground","quickInputForeground","quickInputTitleBackground","pickerGroupForeground","pickerGroupBorder","keybindingLabelBackground","keybindingLabelForeground","keybindingLabelBorder","keybindingLabelBottomBorder","editorSelectionBackground","editorSelectionForeground","editorInactiveSelection","editorSelectionHighlight","lessProminent","editorFindMatchHighlight","editorHoverBackground","defaultInsertColor","defaultRemoveColor","diffInserted","diffInsertedOutline","diffRemovedOutline","diffBorder","diffDiagonalFill","listFocusBackground","listFocusForeground","listFocusOutline","listActiveSelectionBackground","listActiveSelectionForeground","listActiveSelectionIconForeground","listInactiveSelectionBackground","listInactiveSelectionForeground","listInactiveSelectionIconForeground","listInactiveFocusBackground","listInactiveFocusOutline","listHoverBackground","listHoverForeground","listDropBackground","listHighlightForeground","listFilterWidgetBackground","if","else","listFilterWidgetOutline","listFilterWidgetNoMatchesOutline","treeIndentGuidesStroke","tableColumnsBorder","_deprecatedQuickInputListFocusBackground","quickInputListFocusForeground","quickInputListFocusIconForeground","quickInputListFocusBackground","oneOf","menuBorder","menuForeground","menuSelectionForeground","menuSelectionBackground","menuSelectionBorder","menuSeparatorBackground","minimapSelection","minimapError","minimapWarning","minimapBackground","minimapSliderBackground","minimapSliderHoverBackground","minimapSliderActiveBackground","executeTransform","defines","background","getLighterColor","transparency","getDarkerColor","assertNever","colorValue","colorValues","backgroundColorValue","workbenchColorsSchemaId","schemaRegistry","getColorSchema","notifySchemaChanged","editorLineHighlight","editorLineHighlightBorder","editorRangeHighlight","editorRangeHighlightBorder","editorSymbolHighlight","editorSymbolHighlightBorder","editorCursorForeground","editorCursorBackground","editorWhitespaces","editorIndentGuides","editorActiveIndentGuides","editorLineNumbers","deprecatedEditorActiveLineNumber","editorActiveLineNumber","editorRuler","editorOverviewRulerBorder","editorOverviewRulerBackground","editorGutter","editorUnnecessaryCodeBorder","editorUnnecessaryCodeOpacity","rulerRangeDefault","overviewRulerError","overviewRulerWarning","overviewRulerInfo","addRule","gutter","rangeHighlight","rangeHighlightBorder","symbolHighlight","symbolHighlightBorder","invisibles","LineNumbersOverlay","_readConfig","_lastCursorModelPosition","_renderResult","_activeLineNumber","_renderLineNumbers","_renderCustomLineNumbers","_renderFinalNewline","_lineNumbersLeft","_lineNumbersWidth","primaryViewPosition","convertViewPositionToModelPosition","scrollTopChanged","viewLineNumber","modelPosition","modelLineNumber","lineHeightClassName","visibleStartLineNumber","visibleEndLineNumber","common","renderLineNumber","_getLineRenderLineNumber","activeLineNumber","Margin","_canUseLayerHinting","_contentLeft","_glyphMarginLeft","_glyphMarginWidth","setClassName","OUTER_CLASS_NAME","_glyphMarginBackgroundDomNode","setLayerHinting","setContain","adjustedScrollTop","setWidth","setLeft","MOUSE_CURSOR_TEXT_CSS_CLASS_NAME","VisibleTextAreaData","_visibleTextAreaBrand","canUseZeroSizeTextarea","TextAreaHandler","_primaryCursorPosition","_primaryCursorVisibleRange","_scrollLeft","_scrollTop","_setAccessibilityOptions","_contentWidth","_contentHeight","_fontInfo","_emptySelectionClipboard","_copyWithSyntaxHighlighting","_visibleTextArea","_selections","_modelSelections","_lastRenderPosition","textAreaCover","simpleModel","textAreaInputHost","generateHTML","rawTextToCopy","getPlainTextToCopy","newLineCharacter","richText","getRichTextToCopy","_accessibilitySupport","textBefore","_getWordBeforePosition","_getCharacterBeforePosition","_getAndroidWordAtPosition","positionOffsetInWord","fromEditorSelection","_accessibilityPageSize","viewAnchorPosition","deduceModelPositionRelativeToViewPosition","_textAreaInput","emitKeyDown","emitKeyUp","pasteOnNewLine","paste","cut","compositionType","setSelection","revealRange","visibleRangeForPositionRelativeToEditor","compositionStart","createFontString","metrics","compositionEnd","setHasFocus","goingLeft","goingRight","isFocused","activeDescendant","role","_renderInsideEditor","_renderAtTopLeft","renderedPosition","ta","tac","applyFontInfo","ColumnSelection","fromVisibleColumn","toVisibleColumn","reversed","isLTR","columnFromVisibleColumn2","visibleStartColumn","visibleColumnFromColumn2","visibleEndColumn","fromVisualColumn","toVisualColumn","prevColumnSelectData","toViewVisualColumn","columnSelect","fromViewLineNumber","fromViewVisualColumn","toViewLineNumber","maxVisualViewColumn","minViewLineNumber","maxViewLineNumber","lineMaxViewColumn","lineMaxVisualViewColumn","isPaged","ReplaceCommand","insertsAutoWhitespace","addTrackedEditOperation","helper","srcRange","getInverseEditOperations","ReplaceCommandWithoutChangingPosition","ReplaceCommandWithOffsetCursorState","lineNumberDeltaOffset","columnDeltaOffset","_columnDeltaOffset","_lineNumberDeltaOffset","ReplaceCommandThatPreservesSelection","initialSelection","_initialSelection","_forceMoveMarkers","_selectionId","trackSelection","getTrackedSelection","CursorPosition","_cursorPositionBrand","MoveOperations","getLineIndentColumn","leftPosition","leftPositionAtomicSoftTabs","noOfColumns","hasSelection","normalizedPos","clipPositionColumn","clipRange","rightPosition","rightPositionAtomicSoftTabs","allowMoveOnLastLine","wasOnLastPosition","down","allowMoveOnFirstLine","wasOnFirstPosition","_isBlankLine","firstNonBlankColumn","lastColumn","DeleteOperations","prevEditOperationType","deleteSelection","rightOfPosition","autoClosingPairsOpen","autoClosedCharacters","autoClosingPairCandidates","afterCharacter","foundAutoClosingPair","autoClosingPairCandidate","autoClosedCharacter","isAutoClosingPairDelete","_runAutoClosingPairDelete","deleteRange","getDeleteRange","lastIndentationColumn","prevIndentTabStop","toColumn","getPositionAfterDeleteLeft","newLine","WordOperations","wordType","nextCharClass","_doFindPreviousWordOnLine","_createWord","_findEndOfWord","_doFindNextWordOnLine","_findStartOfWord","wordNavigationType","prevWordOnLine","_findPreviousWordOnLine","rightRight","movedDown","nextWordOnLine","_findNextWordOnLine","lastNonWhitespace","whitespaceHeuristics","_deleteWordLeftWhitespace","_deleteInsideWordWhitespace","_deleteInsideWordDetermineDeleteRange","leftIndex","_charAtIsWhitespace","rightIndex","touchesWord","createRangeWithPosition","deleteWordAndAdjacentWhitespace","expandedToTheRight","toPosition","_moveWordPartLeft","firstNonWhitespace","_findFirstNonWhitespaceChar","_deleteWordRightWhitespace","_moveWordPartRight","prevWord","_createWordAtPosition","nextWord","possiblePosition","CursorMove","CursorMoveCommands","cursors","useLogicalLine","translateDown","fromViewState","translateUp","_moveToLineStart","currentViewStateColumn","isFirstLineOfWrappedLine","currentViewStatelineNumber","_moveToLineStartByModel","_moveToLineStartByView","moveToBeginningOfLine","_moveToLineEnd","viewStatePosition","viewModelMaxColumn","isEndOfViewLine","modelStatePosition","modelMaxColumn","isEndLineOfWrappedLine","_moveToLineEndByModel","_moveToLineEndByView","moveToEndOfLine","moveToBeginningOfBuffer","moveToEndOfBuffer","_viewPosition","viewPosition","validateViewPosition","convertModelPositionToViewPosition","selectToLineNumber","selectToColumn","enteringLineNumber","selectToViewLineNumber","selectToViewColumn","endPositionOfSelectionStart","_moveHalfLineLeft","_moveLeft","_moveHalfLineRight","_moveRight","_moveUpByViewLines","_moveUpByModelLines","_moveDownByViewLines","_moveDownByModelLines","moveToPrevBlankLine","moveToNextBlankLine","_moveToViewMinColumn","_moveToViewFirstNonWhitespaceColumn","_moveToViewCenterColumn","_moveToViewMaxColumn","_moveToViewLastNonWhitespaceColumn","visibleViewRange","getCompletelyVisibleViewRange","visibleModelRange","convertViewRangeToModelRange","_firstLineNumberInRange","modelColumn","_moveToModelPosition","_lastLineNumberInRange","findPositionInViewportIfOutside","viewColumn","_moveToViewPosition","moveLeft","halfLine","moveRight","moveDown","moveUp","toViewColumn","toModelLineNumber","toModelColumn","cursorMoveArg","by","RawDirection","Left","Right","Up","Down","PrevBlankLine","NextBlankLine","WrappedLineStart","WrappedLineFirstNonWhitespaceCharacter","WrappedLineColumnCenter","WrappedLineEnd","WrappedLineLastNonWhitespaceCharacter","ViewPortTop","ViewPortCenter","ViewPortBottom","ViewPortIfOutside","RawUnit","WrappedLine","Character","HalfLine","repeatCache","cachedStringRepeat","EditorContextKeys","ShiftCommand","_opts","_selection","_useLastEditRangeForCursorEndPosition","_selectionStartColumnStaysPut","addEditOperation","startLine","endLine","shouldIndentEmptyLines","previousLineExtraSpaces","extraSpaces","indentationEndIndex","isUnshift","enterAction","getEnterAction","desiredIndent","_addEditOperation","oneIndent","lastOp","contentStartVisibleColumn","prevRenderTabStop","nextIndentTabStop","SurroundSelectionCommand","charBeforeSelection","charAfterSelection","_charBeforeSelection","_charAfterSelection","firstOperationRange","secondOperationRange","TypeOperations","typeSelection","distributedPaste","_distributePasteToCursors","_distributedPaste","_simplePaste","expectedIndentAction","expectedEnterAction","typeText","goodIndent","_goodIndentForLine","possibleTypeText","_replaceJumpToNextIndent","lineMaxColumn","_compositionType","shouldPushStackElementBetween","keepPosition","_typeCommand","normalIndent","increasedIndent","actualIndentation","ir","getIndentForEnter","oldEndViewColumn","oldEndColumn","newLineContent","currentIndentation","getIndentActionForType","chIsQuote","lineAfter","nextChar","potentialStartingBraces","potentialClosingBraces","isBeforeStartingBrace","isBeforeClosingBrace","positions","candidateIsMatch","subPairMatch","insertOpenCharacter","_findAutoClosingPairOpen","subAutoClosingPairClose","_findSubAutoClosingPairClose","isSubAutoClosingPairPresent","characterAfter","_isBeforeClosingBrace","autoClosingPairClose","TypeWithAutoClosingCommand","_shouldSurroundChar","isTypingAQuoteCharacter","selectionContainsOnlyWhitespace","closeCharacter","electricAction","findMatchingBracketUp","matchLine","matchLineIndentation","newIndentation","lineFirstNonBlankColumn","getTypingOperation","selectionsWhenCompositionStarted","selectionsArrEqual","currentChar","_isAutoClosingOvertype","_getAutoClosingPairClose","_runAutoClosingOpenCharType","isDoingComposition","_enter","_isAutoIndentType","autoIndentFails","_runAutoIndentType","_runAutoClosingOvertype","_isSurroundSelectionType","_runSurroundSelectionType","_isTypeInterceptorElectricChar","_typeInterceptorElectricChar","opType","openCharacter","_openCharacter","_closeCharacter","closeCharacterRange","enclosingRange","typedText","previousTypingOperation","typingOperation","isTypingOperation","normalizeOperationType","editorSimpleInput","editorTextFocus","textInputFocus","toNegated","hasNonEmptySelection","hasOnlyEmptySelection","hasMultipleSelections","hasSingleSelection","tabMovesFocus","tabDoesNotMoveFocus","isInWalkThroughSnippet","hoverVisible","inCompositeEditor","notInCompositeEditor","hasCompletionItemProvider","hasCodeActionsProvider","hasCodeLensProvider","hasDefinitionProvider","hasDeclarationProvider","hasImplementationProvider","hasTypeDefinitionProvider","hasHoverProvider","hasDocumentHighlightProvider","hasDocumentSymbolProvider","hasReferenceProvider","hasRenameProvider","hasSignatureHelpProvider","hasInlayHintsProvider","hasDocumentFormattingProvider","hasDocumentSelectionFormattingProvider","hasMultipleDocumentFormattingProvider","hasMultipleDocumentSelectionFormattingProvider","EditorScroll_","RevealLine_","CoreEditorCommand","_getViewModel","runCoreEditorCommand","scrollArg","revealCursor","Page","HalfPage","reveaLineArg","RawAtArgument","Top","Bottom","CoreNavigationCommands","EditorOrNativeTextInputCommand","addImplementation","focusedEditor","hasTextFocus","_runEditorCommand","runDOMCommand","activeEditor","BaseMoveToCommand","_inSelectionMode","setCursorStates","getPrimaryCursorState","revealPrimaryCursor","MoveTo","MoveToSelect","ColumnSelectCommand","_getColumnSelectResult","getCursorColumnSelectData","setCursorColumnSelectData","isReal","revealTopMostCursor","revealBottomMostCursor","ColumnSelect","validatedPosition","validatedViewPosition","doColumnSelect","CursorColumnSelectLeft","columnSelectLeft","CursorColumnSelectRight","columnSelectRight","ColumnSelectUpCommand","_isPaged","columnSelectUp","CursorColumnSelectUp","CursorColumnSelectPageUp","ColumnSelectDownCommand","columnSelectDown","CursorColumnSelectDown","CursorColumnSelectPageDown","CursorMoveImpl","CursorMove_","_runCursorMove","getCursorStates","simpleMove","viewportMove","CursorMoveBasedCommand","_staticArgs","dynamicArgs","CursorLeft","CursorLeftSelect","CursorRight","CursorRightSelect","CursorUp","CursorUpSelect","CursorPageUp","CursorPageUpSelect","CursorDown","CursorDownSelect","CursorPageDown","CursorPageDownSelect","CreateCursor","wholeLine","newModelPosition","newViewPosition","LastCursorMoveToSelect","lastAddedCursorIndex","getLastAddedCursorIndex","newStates","HomeCommand","CursorHome","CursorHomeSelect","LineStartCommand","_exec","CursorLineStart","CursorLineStartSelect","EndCommand","CursorEnd","CursorEndSelect","LineEndCommand","CursorLineEnd","CursorLineEndSelect","TopCommand","CursorTop","CursorTopSelect","BottomCommand","CursorBottom","CursorBottomSelect","EditorScrollImpl","_runEditorScroll","desiredScrollTop","_computeDesiredScrollTop","desiredVisibleViewRange","getCompletelyVisibleViewRangeAtScrollTop","setScrollTop","desiredTopModelLineNumber","noOfLines","deltaLines","getScrollTop","EditorScroll","ScrollLineUp","ScrollPageUp","ScrollLineDown","ScrollPageDown","WordCommand","WordSelect","WordSelectDrag","LastCursorWordSelect","lastAddedState","LineCommand","LineSelect","LineSelectDrag","LastCursorLineCommand","LastCursorLineSelect","LastCursorLineSelectDrag","ExpandLineSelection","expandLineSelection","CancelSelection","cancelSelection","RemoveSecondaryCursors","CORE_WEIGHT","RevealLine","revealLineArg","lineNumberArg","revealAt","viewRange","convertModelRangeToViewRange","SelectAll","execCommand","selectAll","SetSelection","CoreEditingCommands","columnSelectionCondition","registerColumnSelection","CoreEditingCommand","runCoreEditingCommand","LineBreakInsert","executeCommands","lineBreakInsert","outdent","Tab","tab","DeleteLeft","deleteLeft","getPrevEditOperationType","getCursorAutoClosedCharacters","setPrevEditOperationType","DeleteRight","deleteRight","Undo","hasModel","Redo","EditorHandlerCommand","handlerId","_handlerId","registerOverwritableCommand","ViewController","userInputEvents","commandDelegate","startComposition","endComposition","selectionClipboardIsOn","_columnSelect","_hasMulticursorModifier","_lastCursorLineSelect","_createCursor","_lineSelectDrag","_lineSelect","_selectAll","_lastCursorLineSelectDrag","_lastCursorWordSelect","_wordSelectDrag","_wordSelect","_hasNonMulticursorModifier","_lastCursorMoveToSelect","_moveToSelect","_validateViewColumn","_convertViewToModelPosition","_usualArgs","ViewUserInputEvents","onMouseMove","onMouseDrag","onMouseDrop","onMouseDropCanceled","onMouseWheel","_coordinatesConverter","_convertViewToModelMouseEvent","_convertViewToModelMouseTarget","convertViewToModelMouseTarget","ExternalMouseTarget","RenderedLinesCollection","createLine","_createLine","_set","rendLineNumberStart","_rendLineNumberStart","deleteFromLineNumber","deleteToLineNumber","deleteCnt","deleteStartIndex","deleteAboveCount","changeFromLineNumber","changeToLineNumber","someoneNotified","changedLineNumber","onContentChanged","insertFromLineNumber","insertToLineNumber","insertCnt","beforeLines","afterLines","deletedLines","notifiedSomeone","VisibleLinesCollection","_createDomNode","_linesCollection","createVisibleLine","deleted","lineDomNode","getDomNode","getLine","inp","_get","renderer","ViewLayerRenderer","resCtx","relativeVerticalOffset","inContext","stopLineNumber","_finishRendering","_renderUntouchedLines","_insertLinesBefore","removeCnt","_removeLinesBefore","_insertLinesAfter","_removeLinesAfter","deltaLN","layoutLine","newLinesLen","removeCount","removeIndex","domNodeIsEmpty","newLinesHTML","wasNew","_ttPolicy","insertAdjacentHTML","currChild","setDomNode","invalidLinesHTML","wasInvalid","hugeDomNode","replaceChild","_sb","hadNewLine","renderLine","_finishRenderingNewLines","hadInvalidLine","_finishRenderingInvalidLines","ViewOverlays","_visibleLines","_dynamicOverlays","_isFocused","ViewOverlayLine","overlay","getVisibleLine","toRender","dynamicOverlay","prepareRender","onDidRender","_viewOverlaysRender","toggleClassName","renderLines","dynamicOverlays","_renderedContent","ContentViewOverlays","scrollWidthChanged","MarginViewOverlays","scrollHeightChanged","Coordinate","_coordinateBrand","ViewContentWidgets","_viewDomNode","_widgets","overflowingContentWidgetsDomNode","_widget","myWidget","Widget","allowEditorOverflow","setShouldRender","preference","suppressMouseDown","onBeforeRender","_fixedOverflowWidgets","_viewRange","_preference","_cachedDomNodeClientWidth","_cachedDomNodeClientHeight","_getMaxWidth","_isVisible","_renderData","setVisibility","setMaxWidth","_setPosition","validModelRange","validateModelRange","modelPositionIsVisible","topLeft","bottomLeft","aboveLineTop","heightAboveLine","underLineTop","aboveTop","fitsAbove","belowTop","fitsBelow","actualAboveLeft","actualBelowLeft","aboveLeft","belowLeft","domNodePosition","MIN_LIMIT","MAX_LIMIT","absoluteLeft","absoluteAboveTop","absoluteBelowTop","_layoutHorizontalSegmentInPage","absoluteAboveLeft","absoluteBelowLeft","visibleRangesForRange","visibleRangesForLine","firstLineMinLeft","lastLineMinLeft","topForPosition","topForBottomLine","placement","_getTopAndBottomLeft","preferredDimensions","beforeRender","safeInvoke","_layoutBoxInPage","_layoutBoxInViewport","pref","coordinate","_prepareRenderWidgetAtExactPositionOverflowing","_prepareRenderWidget","afterRender","isRenderedUsingBorder","AbstractLineHighlightOverlay","_renderLineHighlight","_renderLineHighlightOnlyWhenFocus","_selectionIsEmpty","_focused","_cursorLineNumbers","renderSelections","cursorsLineNumbers","selectionIsEmpty","_readFromSelections","_shouldRenderThis","renderedLine","_renderOne","renderData","CurrentLineHighlightOverlay","_shouldRenderOther","CurrentLineMarginHighlightOverlay","_shouldRenderMargin","lineHighlight","isTransparent","lineHighlightBorder","DecorationsOverlay","_typicalHalfwidthCharacterWidth","decorationsLen","aClassName","bClassName","_renderWholeLineDecorations","_renderNormalDecorations","lenI","decorationOutput","prevClassName","prevShowIfCollapsed","prevRange","areIntersectingOrTouching","_renderNormalDecoration","linesVisibleRanges","lineVisibleRanges","singleVisibleRange","lenK","ignoreTarget","ARROW_IMG_SIZE","ScrollbarArrow","_onActivate","onActivate","bgDomNode","bgWidth","bgHeight","classNamesArray","onmousedown","_arrowMouseDown","_mousedownRepeatTimer","_mousedownScheduleRepeatTimer","mouseMoveData","ScrollbarVisibilityController","visibleClassName","invisibleClassName","_visibleClassName","_invisibleClassName","_isNeeded","_rawShouldBeVisible","_shouldBeVisible","_revealTimer","_updateShouldBeVisible","rawShouldBeVisible","shouldBeVisible","_applyVisibilitySetting","ensureVisibility","isNeeded","setShouldBeVisible","_reveal","_hide","withFadeAway","AbstractScrollbar","_lazyRender","lazyRender","_scrollable","scrollable","_scrollByPage","_scrollbarState","scrollbarState","_visibilityController","extraScrollbarClassName","setIsNeeded","_domNodeMouseDown","arrow","slider","_sliderMouseDown","onclick","visibleSize","setVisibleSize","elementScrollSize","setScrollSize","elementScrollPosition","setScrollPosition","_renderDomNode","getRectangleLargeSize","getRectangleSmallSize","_updateSlider","getSliderSize","getArrowSize","getSliderPosition","domTop","sliderStart","sliderStop","mousePos","_sliderMousePosition","offsetY","_mouseDownRelativePosition","_setDesiredScrollPositionNow","getDesiredScrollPositionFromOffsetPaged","getDesiredScrollPositionFromOffset","onDragFinished","initialMousePosition","initialMouseOrthogonalPosition","_sliderOrthogonalMousePosition","initialScrollbarState","mouseOrthogonalPosition","mouseOrthogonalDelta","getScrollPosition","mouseDelta","getDesiredScrollPositionFromDelta","onDragEnd","onDragStart","_desiredScrollPosition","desiredScrollPosition","writeScrollPosition","setScrollPositionNow","scrollbarSize","_updateScrollbarSize","setScrollbarSize","ScrollbarState","oppositeScrollbarSize","scrollSize","scrollPosition","_scrollbarSize","_oppositeScrollbarSize","_arrowSize","_visibleSize","_scrollSize","_scrollPosition","_computedAvailableSize","_computedIsNeeded","_computedSliderSize","_computedSliderRatio","_computedSliderPosition","_refreshComputedValues","iVisibleSize","iScrollSize","iScrollPosition","_computeValues","computedAvailableSize","computedIsNeeded","computedSliderSize","computedSliderRatio","computedSliderPosition","desiredSliderPosition","correctedOffset","computedRepresentableSize","scrollbarButtonLeftIcon","scrollbarButtonRightIcon","HorizontalScrollbar","scrollDimensions","getScrollDimensions","getCurrentScrollPosition","arrowDelta","scrollbarDelta","_createArrow","_createSlider","sliderSize","sliderPosition","largeSize","smallSize","setBottom","_onElementScrollSize","_onElementScrollPosition","_onElementSize","updateScrollbarSize","setOppositeScrollbarSize","scrollbarButtonUpIcon","scrollbarButtonDownIcon","VerticalScrollbar","setRight","ScrollState","_scrollStateBrand","rawScrollLeft","rawScrollTop","useRawScrollPositions","inSmoothScrolling","widthChanged","scrollLeftChanged","heightChanged","oldWidth","oldScrollWidth","oldScrollLeft","oldHeight","oldScrollHeight","oldScrollTop","Scrollable","smoothScrollDuration","_scrollableBrand","_onScroll","onScroll","_smoothScrollDuration","_scheduleAtNextAnimationFrame","_smoothScrolling","withScrollPosition","dimensions","withScrollDimensions","_setState","acceptScrollDimensions","reuseAnimation","newSmoothScrolling","validTarget","SmoothScrollingOperation","animationFrameDisposable","_performSmoothScrolling","tick","isDone","createScrollEvent","SmoothScrollingUpdate","createEaseOutCubic","easeInCubic","_initAnimations","_initAnimation","viewportSize","stop1","stop2","_tick","newScrollLeft","newScrollTop","MouseWheelClassifierItem","MouseWheelClassifier","_memory","_front","_rear","remainingInfluence","iteration","influence","_computeScore","_isAlmostInt","AbstractScrollableElement","_onWillScroll","flipAxes","consumeMouseWheelIfScrollbarIsNeeded","scrollYToX","mouseWheelSmoothScroll","listenOnDomNode","_onDidScroll","scrollbarHost","mouseWheelEvent","_onMouseWheel","_onDragStart","_onDragEnd","_verticalScrollbar","_horizontalScrollbar","_leftShadowDomNode","_topShadowDomNode","_topLeftShadowDomNode","_listenOnDomNode","_mouseWheelToDispose","_setListeningToMouseWheel","onmouseover","_onMouseOver","onnonbubblingmouseout","_onMouseOut","_hideTimeout","_isDragging","_mouseIsOver","_revealOnScroll","delegateMouseDown","setScrollDimensions","newClassName","shouldListen","osZoomFactor","getZoomFactor","accept","didScroll","shiftConvert","futureScrollPosition","getFutureScrollPosition","desiredScrollLeft","validateScrollPosition","isPhysicalMouseWheel","setScrollPositionSmooth","consumeMouseWheel","onDidScroll","enableTop","enableLeft","leftClassName","topClassName","topLeftClassName","beginReveal","_scheduleHide","beginHide","ScrollableElement","SmoothScrollableElement","DomScrollableElement","scanDomNode","linesContent","overflowGuardDomNode","scrollbarOptions","getScrollable","scrollbarDomNode","_setLayout","onBrowserDesperateReveal","lookAtScrollTop","lookAtScrollLeft","newScrollPosition","deltaLeft","getOverviewRulerLayoutInfo","delegateVerticalScrollbarMouseDown","updateClassName","renderNow","DecorationToRender","_decorationToRenderBrand","DedupOverlay","prevEndLineIndex","GlyphMarginOverlay","_glyphMargin","rLen","_getDecorations","IndentGuidesOverlay","_primaryLineNumber","_spaceWidth","_activeIndentEnabled","_maxIndentLeft","newPrimaryLineNumber","indentWidth","indents","getLinesIndentGuides","activeIndentStartLineNumber","activeIndentEndLineNumber","activeIndentLevel","activeIndentInfo","getActiveIndentGuide","containsActiveIndentGuide","leftMostVisiblePosition","editorIndentGuidesColor","editorActiveIndentGuidesColor","LastRenderedData","_currentVisibleRange","currentVisibleRange","HorizontalRevealRangeRequest","startScrollTop","stopScrollTop","HorizontalRevealSelectionsRequest","ViewLines","_linesContent","_textRangeRestingSpot","_isViewportWrapping","_revealHorizontalRightPadding","_cursorSurroundingLines","_cursorSurroundingLinesStyle","_viewLineOptions","_maxLineWidth","_asyncUpdateLineWidths","_updateLineWidthsSlow","_asyncCheckMonospaceFontAssumptions","_checkMonospaceFontAssumptions","_lastRenderedData","_horizontalRevealRequest","_onOptionsMaybeChanged","newViewLineOptions","onOptionsChanged","rendStartLineNumber","rendEndLineNumber","onSelectionChanged","_computeScrollTopToRevealRange","getFutureViewport","verticalType","revealHorizontal","setMaxLineWidth","viewLineDomNode","_getViewLineDomNode","_getLineNumberFor","getCurrentVisibleRange","visibleRanges","visibleRangesLen","domReadingContext","nextLineModelLineNumber","_visibleRangesForLineRange","_updateLineWidths","fast","localMaxLineWidth","allWidthsComputed","visibleLine","_ensureMaxLineWidth","longestLineNumber","longestWidth","needsMonospaceFontCheck","onMonospaceAssumptionsInvalidated","setCurrentVisibleRange","horizontalRevealRequest","_computeScrollLeftToReveal","maxHorizontalOffset","_updateLineWidthsFast","iLineWidth","viewport","boxIsSingleRange","boxStartY","boxEndY","viewportStartY","viewportEndY","minScrollTop","boxMiddleY","_computeMinimumScrolling","viewportStartX","viewportEndX","boxStartX","boxEndX","HORIZONTAL_EXTRA_PX","viewportStart","viewportEnd","boxStart","boxEnd","revealAtStart","revealAtEnd","viewportLength","LinesDecorationsOverlay","_decorationsLeft","_decorationsWidth","lineOutput","MarginViewLineDecorationsOverlay","RGBA8","_rgba8Brand","_clamp","Empty","MinimapTokensColorTracker","_updateColorMap","getColorMap","_colors","_backgroundIsLight","colorId","backgroundLuminosity","singleton","markAsSingleton","allCharCodes","MinimapCharRenderer","charData","_minimapCharRendererBrand","charDataNormal","soften","charDataLight","dx","dy","fontScale","useLighterFont","force1pxHeight","charHeight","renderHeight","destWidth","backgroundR","backgroundG","backgroundB","deltaR","deltaG","deltaB","sourceOffset","colorR","colorG","colorB","Uint8ClampedArray","charTable","A","B","D","E","decodeData","prebakedMiniMaps","MinimapCharRendererFactory","lastCreated","lastFontFamily","factory","createFromSampleData","createSampleData","canvas","fillStyle","textBaseline","fillText","getImageData","_downsample","targetIndex","brightest","sourceY1","sourceY2","sourceX1","sourceX2","samples","sy","sourceRow","yBalance","sx","xBalance","final","pixelsPerCharacter","resultOffset","_downsampleChar","adjust","MinimapOptions","tokensColorTracker","minimapOpts","minimapHeight","canvasInnerWidth","canvasInnerHeight","canvasOuterWidth","canvasOuterHeight","isSampling","editorHeight","charRenderer","_getMinimapBackground","themeColor","MinimapLayout","sliderNeeded","sliderTop","sliderHeight","viewportStartLineNumber","viewportEndLineNumber","viewportStartLineNumberVerticalOffset","viewportContainsWhitespaceGaps","realLineCount","previousLayout","maxMinimapSliderTop","minimapLinesFitting","logicalScrollHeight","maxLinesFitting","viewportLineCount","expectedViewportLineCount","extraLinesAtTheBottom","MinimapLine","INVALID","RenderData","renderedLayout","imageData","_imageData","_renderedLines","layout","scrollEquals","MinimapBuffers","WIDTH","HEIGHT","_backgroundFillData","_createBackgroundFillData","createImageData","_lastUsedBuffer","MinimapSamplingState","samplingRatio","minimapLines","fromLineIndex","modelLineToMinimapLine","toLineIndex","sampledLineNumber","minimapLineStart","minimapLineEnd","changeStartIndex","changeEndIndex","insertedLineCount","oldSamplingState","halfRatio","oldMinimapLines","oldIndex","oldDeltaLineCount","oldMinimapLineNumber","_oldIndex","selectedViewLineNumber","Minimap","_minimapSelections","samplingState","_samplingState","_shouldCheckSampling","InnerMinimap","_recreateLineSampling","minimapLineRange","modelLineRangeToMinimapLineRange","invalidateMinimapColorCache","minimapCtx","whitespaceViewportData","wasSampling","needed","getViewLineData","getMinimapLinesRenderingData","decorationLineRangeToMinimapLineRange","modelStartLineNumber","modelEndLineNumber","minimapStartLineNumber","minimapEndLineNumber","_renderDecorations","_gestureInProgress","_lastRenderData","_selectionColor","_getMinimapDomNodeClassName","_shadow","_decorationsCanvas","_slider","_sliderHorizontal","_applyLayout","_mouseDownListener","internalOffsetY","revealLineNumber","initialPosY","_startSliderDragging","_sliderMouseMoveMonitor","_sliderMouseDownListener","_gestureDisposable","_sliderTouchStartListener","scrollDueToTouchEvent","_sliderTouchMoveListener","_sliderTouchEndListener","initialPosX","initialSliderState","handleMouseMove","getDesiredScrollTopFromDelta","startY","getDesiredScrollTopFromTouchLocation","getBuffer","renderingCtx","getRealLineCount","setDisplay","scrollLeftChars","horizontalSliderLeft","renderDecorations","getSelections","getMinimapDecorationsInViewport","characterWidth","getOptions","canvasContext","clearRect","lineOffsetMap","renderDecorationOnLine","decorationColor","Inline","Gutter","renderDecoration","decorationRange","lineIndexToXOffset","isFirstDecorationForLine","endColumnForLine","fillRect","linesEquals","_lastData","_getBuffer","_dirtyY1","_dirtyY2","lineInfo","backgroundIsLight","renderMinimapLineHeight","innerLinePadding","renderedLines","dirtyY1","dirtyHeight","putImageData","lastTargetData","lastStartLineNumber","lastLines","lastLinesLength","targetData","maxDestPixel","dirtyPixel1","dirtyPixel2","copySourceStart","copySourceEnd","copyDestStart","copyDestEnd","dest_dy","source_dy","sourceStart","sourceEnd","destStart","destEnd","colorTracker","minimapCharRenderer","maxDx","tabsCharDelta","tokenColorId","tokenColor","insertSpacesCount","blockRenderChar","renderChar","minimapBackgroundValue","sliderBackground","sliderHoverBackground","sliderActiveBackground","shadow","ViewOverlayWidgets","_verticalScrollbarWidth","_minimapWidth","_horizontalScrollbarHeight","_editorHeight","_editorWidth","widgetData","widgetHeight","unsetTop","_renderWidget","Settings","renderBorder","hideCursor","cursorColor","minimapEnabled","getDefaultBackground","domWidth","domHeight","canvasWidth","canvasHeight","_initLanes","canvasLeftOffset","laneCount","leftWidth","rightWidth","centerWidth","centerOffset","DecorationsOverviewRuler","_updateSettings","_tokensColorTrackerListener","_cursorPositions","newSettings","_settings","invalidateOverviewRulerColorCache","editorCtx","heightRatio","getAllOverviewRulerDecorations","minDecorationHeight","halfMinDecorationHeight","canvasCtx","colors","cIndex","colorDecorations","prevLane","prevY1","prevY2","lane","y1","y2","yCenter","cursorHeight","halfCursorHeight","cursorX","cursorW","beginPath","strokeStyle","lineTo","stroke","setBackgroundColor","ColorZone","_colorZoneBrand","OverviewRulerZone","_overviewRulerZoneBrand","_colorZone","colorZone","OverviewZoneManager","getVerticalOffsetForLine","_getVerticalOffsetForLine","_zones","_colorZonesInvalid","_domWidth","_domHeight","_outerHeight","_pixelRatio","_lastAssignedId","_color2Id","_id2Color","newZones","colorZonesInvalid","totalHeight","getCanvasHeight","halfMinimumHeight","allColorZones","zone","getColorZones","ycenter","halfHeight","setColorZone","OverviewRuler","cssClassName","_zoneManager","setDOMWidth","setDOMHeight","setOuterHeight","setPixelRatio","getDOMWidth","getDOMHeight","getCanvasWidth","zones","setZones","getOuterHeight","colorZones","resolveColorZones","id2Color","getId2Color","_renderOneLane","currentColorId","currentFrom","currentTo","zoneColorId","zoneFrom","zoneTo","Rulers","_renderedRulers","_rulers","currentCount","desiredCount","rulerWidth","addCount","_ensureRulersCount","ruler","setBoxShadow","rulerColor","ScrollDecorationViewPart","_updateWidth","_shouldShow","_useShadows","newShouldShow","_updateShouldShow","HorizontalRangeWithStyle","startStyle","endStyle","LineVisibleRangesWithStyle","toStyledRange","toStyled","SelectionsOverlay","_previousFrameVisibleRangesWithStyle","_roundedSelection","previousFrame","epsilon","previousFrameTop","previousFrameBottom","topLineNumber","bottomLineNumber","curLineRange","curLeft","curRight","prevRight","nextLeft","nextRight","_visibleRangesHaveGaps","_enrichVisibleRangesWithStyle","output2","visibleRangesHaveStyle","fullLineHeight","reducedLineHeight","firstLineNumber","innerCornerOutput","restOfSelectionOutput","_createSelectionPiece","SELECTION_CLASS_NAME","ROUNDED_PIECE_WIDTH","EDITOR_BACKGROUND_CLASS_NAME","SELECTION_TOP_RIGHT","SELECTION_BOTTOM_RIGHT","SELECTION_TOP_LEFT","SELECTION_BOTTOM_LEFT","thisFrameVisibleRangesWithStyle","visibleRangesWithStyle","_getVisibleRangesWithStyle","_actualRenderOneSelection","editorSelectionColor","editorInactiveSelectionColor","editorSelectionForegroundColor","ViewCursorRenderData","textContentClassName","ViewCursor","_cursorStyle","_lineCursorWidth","_lastRenderedContent","visibleRangeForCharacter","firstVisibleRangeForCharacter","_prepareRender","ViewCursors","_readOnly","_cursorBlinking","_cursorSmoothCaretAnimation","_isComposingInput","_primaryCursor","_secondaryCursors","_updateDomClassName","_startCursorBlinkAnimation","_cursorFlatBlinkInterval","_blinkingEnabled","_editorHasFocus","_updateBlinking","secondaryPositions","onCursorPositionChanged","addCnt","newCursor","nextSibling","_onCursorPositionChanged","blinkingStyle","_getCursorBlinking","isHidden","isSolid","_show","BLINK_INTERVAL","_getClassName","renderDataLen","primaryRenderData","secondaryRenderData","caret","caretBackground","opposite","ViewZones","marginDomNode","whitespaces","getWhitespaces","oldWhitespaces","hadAChange","changeWhitespace","whitespaceAccessor","_computeWhitespaceProps","oldWhitespace","afterViewLineNumber","heightInPx","changeOneWhitespace","_safeCallOnComputedHeight","_recomputeWhitespacesProps","_heightInPixels","minWidthInPx","_minWidthInPixels","zoneAfterModelPosition","zoneBeforeModelPosition","validateModelPosition","validAfterLineNumber","getModelLineMaxColumn","isVisible","zonesHaveChanged","addZone","_addZone","removeZone","_removeZone","layoutZone","_layoutZone","safeInvoke1Arg","myZone","whitespaceId","insertWhitespace","_getZoneOrdinal","removeWhitespace","heightInLines","onComputedHeight","onDomNodeTop","visibleWhitespaces","visibleZones","hasVisibleZone","newTop","newHeight","newDisplay","_safeCallOnDomNodeTop","getScrolledTopFromAbsoluteTop","EditorTheme","ViewContext","eventHandler","addViewEventHandler","removeViewEventHandler","ViewportData","partialData","View","overflowWidgetsDomNode","_renderAnimationFrame","_configPixelRatio","_viewParts","_textAreaHandler","_createTextAreaHandlerHelper","_getEditorClassName","_overflowGuardContainer","_scrollbar","_viewZones","decorationsOverviewRuler","scrollDecoration","contentViewOverlays","addDynamicOverlay","marginViewOverlays","_contentWidgets","_viewCursors","_overlayWidgets","overviewRulerData","_pointerHandler","_createPointerHandlerHelper","_renderNow","_flushAccumulatedAndRenderNow","focused","_scheduleRender","_onRenderScheduled","safeInvokeNoArg","_actualRender","viewPart","viewPartsToRender","_getViewPartsToRender","partialViewportData","getLinesViewportData","setViewport","centeredLineNumber","getWhitespaceViewportData","renderText","renderingContext","updatePixelRatio","updateLineWidths","mouseTarget","changeViewZones","everything","forceShouldRender","setAriaOptions","addWidget","layoutContentWidget","newPreference","setWidgetPosition","removeWidget","layoutOverlayWidget","Cursor","_selTrackedRange","_trackSelection","_removeTrackedRange","_updateTrackedRange","_setTrackedRange","_getTrackedRange","_validateViewState","viewSelectionStart","validateViewRange","viewSelectionStart1","viewSelectionStart2","cacheInput","cacheOutput","sStartPosition","sEndPosition","validPosition","validSStartPosition","_validatePositionWithCache","validSEndPosition","CursorCollection","primaryCursor","secondaryCursors","killSecondaryCursors","startTrackingSelection","stopTrackingSelection","ensureValidState","readSelectionFromMarkers","asCursorState","setStates","fromModelSelections","_setSecondaryStates","secondaryStates","secondaryCursorsLength","secondaryStatesLength","createCnt","_addSecondaryCursor","_removeSecondaryCursor","_getAll","sortedCursors","sortedCursorIndex","nextSelection","winnerSortedCursorIndex","looserSortedCursorIndex","looserIndex","winnerIndex","looserSelection","winnerSelection","equalsSelection","resultingRange","looserSelectionIsLTR","winnerSelectionIsLTR","resultingSelectionIsLTR","resultingState","sortedCursor","ViewCompositionStartEvent","ViewCompositionEndEvent","ViewConfigurationChangedEvent","ViewCursorStateChangedEvent","ViewDecorationsChangedEvent","ViewFlushedEvent","ViewFocusChangedEvent","ViewLanguageConfigurationEvent","ViewLineMappingChangedEvent","ViewLinesChangedEvent","ViewLinesDeletedEvent","ViewLinesInsertedEvent","ViewRevealRangeRequestEvent","ViewScrollChangedEvent","ViewThemeChangedEvent","ViewTokensChangedEvent","ViewTokensColorsChangedEvent","ViewZonesChangedEvent","ViewModelEventDispatcher","_onEvent","onEvent","_eventHandlers","_viewEventQueue","_isConsumingViewEventQueue","_collector","_collectorCnt","_outgoingEvents","_addOutgoingEvent","_emitOugoingEvents","isNoOp","ViewModelEventsCollector","outgoingEvents","viewEvents","outgoingEvent","_emitMany","beginEmitViewEvents","emitViewEvent","endEmitViewEvents","_consumeViewEventQueue","_doConsumeQueue","handleEvents","ContentSizeChangedEvent","oldContentWidth","oldContentHeight","contentHeight","_oldContentWidth","_oldContentHeight","contentWidthChanged","contentHeightChanged","FocusChangedEvent","oldHasFocus","ScrollChangedEvent","_oldScrollWidth","_oldScrollLeft","_oldScrollHeight","_oldScrollTop","CursorStateChangedEvent","oldSelections","oldModelVersionId","reachedMaxCursorCount","_selectionsAreEqual","ReadOnlyEditAttemptEvent","CursorModelState","cursorState","AutoClosedAction","autoClosedCharactersDecorations","autoClosedEnclosingDecorations","_autoClosedCharactersDecorations","_autoClosedEnclosingDecorations","enclosingRanges","autoClosedActions","autoClosedAction","getAutoClosedCharactersRanges","CursorsController","_knownModelVersionId","_viewModel","_cursors","_isHandling","_selectionsWhenCompositionStarted","_columnSelectData","_autoClosedActions","_prevEditOperationType","updateContext","eventsCollector","isValid","getPrimaryCursor","MAX_CURSOR_COUNT","_validateAutoClosedActions","_emitStateChangedIfNecessary","columnSelectData","viewPositions","getViewPositions","_emitCursorRevealRange","getViewSelections","viewSelections","desiredSelections","revealPrimary","selectionsFromMarkers","hadFlushEvent","containsEvent","_revealPrimaryCursor","getTopMostViewPosition","getBottomMostViewPosition","autoClosedCharactersRanges","autoClosedEnclosingRanges","autoClosedCharactersDeltaDecorations","autoClosedEnclosingDeltaDecorations","opResult","CommandExecutor","_interpretCommandResult","_pushAutoClosedAction","setSelections","newCursorState","emitOutgoingEvent","indices","closeChar","autoClosingPairsCandidates","openChar","closeCharIndex","openCharIndex","autoClosingIndices","_findAutoClosingPairs","undoEdits","openCharInnerIndex","closeCharInnerIndex","undoEdit","cursorChangeReason","stopTrackingSelections","startTrackingSelections","getAllAutoClosedCharacters","_executeEdit","_executeEditOperation","compositionEndWithInterceptors","getAutoClosedCharacters","charLength","typeWithInterceptors","typeWithoutInterceptors","newSelections","selectionsBefore","trackedRanges","trackedRangesDirection","_innerExecuteCommands","_arrayIsEmpty","commandsData","_getEditOperations","loserCursorsMap","_getLoserCursorMap","filteredOperations","major","hadTrackedEditOperation","selectionsAfter","groupedInverseEditOperations","minorBasedSorter","minor","cursorSelections","computeCursorState","losingCursors","losingCursorIndex","losingCursor","_getEditOperationsFromCommand","majorIdentifier","operationMinor","editOperationBuilder","trackPreviousOnEmpty","liftSelection","getEditOperations","previousOp","currentOp","loserMajor","InternalEditorAction","_precondition","_run","isSupported","tokenizeLineToHTML","viewLineTokens","useNbsp","partContent","PendingChanges","_hasPending","_inserts","_changes","_removes","linesLayout","inserts","removes","_commitPendingChanges","EditorWhitespace","ordinal","minWidth","LinesLayout","paddingTop","paddingBottom","INSTANCE_COUNT","_pendingChanges","_lastWhitespaceId","_prefixSumValidIndex","_minWidth","_lineCount","_paddingTop","_paddingBottom","_checkPendingChanges","newAfterLineNumber","commit","_insertWhitespace","_changeOneWhitespace","_findWhitespaceIndex","_removeWhitespace","toChange","applyRemoveAndChange","mustCommit","findInsertionIndex","getWhitespacesAccumulatedHeight","getWhitespacesTotalHeight","lastWhitespaceBeforeLineNumber","_findLastWhitespaceBeforeLineNumber","firstWhitespaceAfterLineNumber","_findFirstWhitespaceAfterLineNumber","getWhitespaceAccumulatedHeightBeforeLineNumber","getLinesTotalHeight","midLineNumber","midLineNumberVerticalOffset","verticalOffset1","verticalOffset2","currentWhitespaceHeight","currentWhitespaceAfterLineNumber","getLineNumberAtOrAfterVerticalOffset","startLineNumberVerticalOffset","whitespaceIndex","getFirstWhitespaceIndexAfterLineNumber","whitespaceCount","getWhitespacesCount","getAfterLineNumberForWhitespaceIndex","getHeightForWhitespaceIndex","currentVerticalOffset","currentLineRelativeOffset","STEP_SIZE","linesOffsets","verticalCenter","endLineNumberVerticalOffset","completelyVisibleStartLineNumber","completelyVisibleEndLineNumber","minWhitespaceIndex","maxWhitespaceIndex","getVerticalOffsetForWhitespaceIndex","midWhitespaceIndex","midWhitespaceVerticalOffset","candidateIndex","getWhitespaceIndexAtOrAfterVerticallOffset","candidateTop","candidateHeight","getIdForWhitespaceIndex","EditorScrollDimensions","EditorScrollable","_onDidContentSizeChange","onDidContentSizeChange","_dimensions","setSmoothScrollDuration","oldDimensions","ViewLayout","_linesLayout","_configureSmoothScrollDuration","_updateHeight","setPadding","_getContentHeight","_getHorizontalScrollbarHeight","currentScrollPosition","maxLineWidth","extraHorizontalSpace","whitespaceMinWidth","getWhitespaceMinWidth","_computeContentWidth","firstLineNumberInViewport","scrollTopWithoutViewZones","onHeightMaybeChanged","visibleBox","deltaScrollLeft","deltaScrollTop","CoordinatesConverter","expectedModelPosition","expectedModelRange","modelRange","getModelLineViewLineCount","LineNumberMapper","viewLineCounts","_counts","_validEndIndex","_modelToView","_viewToModel","viewLinesAbove","_invalidate","_ensureValid","modelLineIndex","SplitLinesCollection","editorId","domLineBreaksComputerFactory","monospaceLineBreaksComputerFactory","_editorId","_validModelVersionId","_domLineBreaksComputerFactory","_monospaceLineBreaksComputerFactory","_constructLines","hiddenAreasIds","resetHiddenAreas","previousLineBreaks","injectedTextDecorations","getInjectedTextDecorations","lineBreaksComputer","createLineBreaksComputer","injectedTextLength","nextLineNumberWithInjectedText","lineInjectedText","addRequest","linesBreaks","hiddenAreas","areaId","hiddenAreaStart","hiddenAreaEnd","hiddenAreaIdx","nextLineNumberToUpdateHiddenArea","isInHiddenArea","createSplitLine","getViewLineCount","prefixSumComputer","decId","_ranges","currentRangeStart","currentRangeEnd","newRanges","_reduceRanges","oldRanges","hasDifference","hasVisibleLine","lineChanged","setVisible","newOutputLineCount","setHiddenAreas","_modelColumn","newTabSize","equalFontInfo","equalWrappingStrategy","equalWrappingColumn","equalWrappingIndent","onlyWrappingColumnChanged","getLineBreakData","outputFromLineNumber","outputToLineNumber","_toLineNumber","lineBreaks","totalOutputLineCount","insertPrefixSumValues","outputLineCount","lineBreakData","oldOutputLineCount","lineMappingChanged","changeFrom","changeTo","insertFrom","insertTo","deleteFrom","deleteTo","getTotalValue","_toValidViewLineNumber","getViewLineMinColumn","modelMinPosition","modelMaxPosition","viewStartPosition","viewEndPosition","viewStartLineNumber","viewEndLineNumber","modelStart","modelEnd","getViewLineMaxColumn","resultRepeatCount","resultRepeatOption","modelStartLineIndex","modelEndLineIndex","reqStart","viewLineStartIndex","getViewLineNumberOfModelPosition","viewLineEndIndex","viewIndents","blockAtIndex","getViewLineContent","getViewLineLength","startModelLineIndex","startRemainder","fromViewLineIndex","remainingViewLineCount","toViewLineIndex","getViewLinesData","computedModelColumn","getModelColumnOfViewPosition","validViewStart","validViewEnd","inputColumn","_modelLineNumber","inputLineNumber","lineIndexChanged","getViewPositionOfModelPosition","getOverviewRulerDecorations","OverviewRulerDecorations","_getViewLineNumberForModelPosition","getDecorationsInRange","finalResult","finalResultLen","prevDecId","VisibleIdentitySplitLine","InvisibleIdentitySplitLine","_outputLineIndex","_fromOuputLineIndex","_toOutputLineIndex","globalStartIndex","outputColumn","_inputColumn","outputPosition","_outputColumn","_globalStartIndex","_needed","_deltaLineNumber","SplitLine","_lineBreakData","getInputOffsetOfOutputPosition","applyInjectedText","spaces","_getViewLineMinColumn","deltaStartIndex","withInserted","lineStartOffsetInUnwrappedLine","lineEndOffsetInUnwrappedLine","sliceAndInflate","getInputStartOffsetOfOutputLineIndex","getInputEndOffsetOfOutputLineIndex","fromOuputLineIndex","toOutputLineIndex","globalIndex","adjustedColumn","getOutputPositionOfInputOffset","baseViewLineNumber","normalizedOffsetInUnwrappedLine","normalizeOffsetAroundInjections","getInjectedText","_spaces","_makeSpaces","IdentityCoordinatesConverter","_validPosition","_validRange","IdentityLinesCollection","_newTabSize","_wrappingStrategy","_wrappingColumn","_wrappingIndent","previousLineBreakData","_minLineNumber","_maxLineNumber","prevEndLineNumber","ViewModelDecorations","linesCollection","_decorationsCache","_cachedModelDecorationsResolver","_cachedModelDecorationsResolverViewRange","_clearCachedModelDecorationsResolver","modelDecoration","cacheIsValid","_getDecorationsViewportData","viewportRange","modelDecorations","decorationsInViewport","decorationsInViewportLen","decorationOptions","viewModelDecoration","_getOrCreateViewModelDecoration","inlineDecoration","intersectedStartLineNumber","intersectedEndLineNumber","ViewModel","_eventDispatcher","_tokenizeViewportSoon","_updateConfigurationViewLineCount","_updateConfigurationViewLineCountNow","_viewportStartLine","_viewportStartLineTrackedRange","_viewportStartLineDelta","createCoordinatesConverter","_cursor","emitSingleViewEvent","_registerModelEvents","_onConfigurationChanged","setViewLineCount","linesViewportData","previousViewportStartModelPosition","previousViewportStartViewPosition","restorePreviousViewportStart","setWrappingSettings","viewPositionTop","shouldRecreate","updateConfiguration","hadOtherModelChange","hadModelLineChangeThatChangedLineMapping","textModelEvents","lineIdx","lineBreaksOffset","onModelFlushed","linesDeletedEvent","onModelLinesDeleted","insertedLineBreaks","linesInsertedEvent","onModelLinesInserted","changedLineBreakData","onModelLineChanged","linesChangedEvent","acceptVersionId","setMaxLineNumber","getAttachedEditorCount","onModelContentChanged","viewRanges","setTabSize","onModelDecorationsChanged","linesAround","startViewLineNumber","endViewLineNumber","_toModelVisibleRanges","getHiddenAreas","hiddenStartLineNumber","hiddenEndLineNumber","getLinesViewportDataAtScrollTop","compatViewState","saveState","firstViewLineNumber","firstPosition","firstPositionDeltaTop","_reduceRestoreStateCompatibility","viewportStartLineTop","getViewLinesIndentGuides","getDecorationsViewportData","getTabSize","toInlineDecoration","invalidateCachedColor","getAllDecorations","modelAnchor","modelRanges","forceCRLF","hasEmptyRange","hasNonEmptyRange","modelLineNumbers","prevModelLineNumber","_getColorMap","_getHTMLToCopy","_withViewEventsCollector","getSelection","restoreState","_executeCursorEdit","setIsDoingComposition","ServiceCollection","service","instanceOrDescriptor","IAccessibilityService","CONTEXT_ACCESSIBILITY_MODE_ENABLED","WrappingCharacterClassifier","BREAK_BEFORE","BREAK_AFTER","arrPool1","arrPool2","MonospaceLineBreaksComputerFactory","breakBeforeChars","breakAfterChars","previousBreakingData","columnsForFullWidthChar","createLineBreaks","createLineBreaksFromPreviousLineBreaks","firstLineBreakColumn","prevBreakingOffsets","prevBreakingOffsetsVisibleColumn","computeWrappedTextIndentLength","wrappedLineBreakColumn","breakingOffsets","breakingOffsetsVisibleColumn","breakingOffsetsCount","lastBreakingOffset","lastBreakingOffsetVisibleColumn","breakingColumn","prevLen","bestDistance","prevBreakOffset","prevBreakOffsetVisibleColumn","breakOffset","breakOffsetVisibleColumn","forcedBreakOffset","forcedBreakOffsetVisibleColumn","prevCharCodeClass","entireLineFits","charStartOffset","charCodeClass","computeCharWidth","canBreak","hitATabCharacter","prevCharWidth","remainingWidthOfNextLine","charCodeAtForcedBreakOffset","_lineText","tabCharacterWidth","numberOfAdditionalTabs","DOMLineBreaksComputerFactory","injectedTextsPerLine","createEmptyLineBreakWithPossiblyInjectedText","requestIdx","overallWidth","containerDomNode","applyFontInfoSlow","firstNonWhitespaceIndices","wrappedTextIndentLengths","renderLineContents","allCharOffsets","allVisibleColumns","renderLineContent","lineDomNodes","readLineBreaks","visibleColumns","curInjectedTexts","initialVisibleColumn","charOffsets","spans","discoverBreaks","lowRects","highRects","readClientRect","midRects","EDITOR_ID","ModelData","hasRealView","listenersToRemove","onBeforeDetached","CodeEditorWidget","domElement","codeEditorWidgetOptions","_onDidDispose","_onDidChangeModelContent","_onDidChangeModelLanguage","onDidChangeModelLanguage","_onDidChangeModelLanguageConfiguration","onDidChangeModelLanguageConfiguration","_onDidChangeModelOptions","onDidChangeModelOptions","_onDidChangeModelDecorations","onDidChangeModelDecorations","_onDidChangeModel","_onDidChangeCursorPosition","_onDidChangeCursorSelection","onDidChangeCursorSelection","_onDidAttemptReadOnlyEdit","onDidAttemptReadOnlyEdit","_onDidLayoutChange","onDidLayoutChange","_editorTextFocus","BooleanEventEmitter","onDidFocusEditorText","onDidChangeToTrue","onDidBlurEditorText","onDidChangeToFalse","_editorWidgetFocus","onDidFocusEditorWidget","onDidBlurEditorWidget","_onWillType","onWillType","_onDidType","onDidType","_onDidCompositionStart","onDidCompositionStart","_onDidCompositionEnd","onDidCompositionEnd","_onDidPaste","onDidPaste","_onMouseDrag","_onMouseDrop","_onMouseDropCanceled","_onDidScrollChange","onDidScrollChange","_onDidChangeViewZones","onDidChangeViewZones","_domElement","_overflowWidgetsDomNode","_decorationTypeKeysToIds","_decorationTypeSubtypes","_telemetryData","telemetryData","_createConfiguration","createScoped","_themeService","EditorContextKeysManager","EditorModeContext","createChild","_modelData","_contributions","_focusTracker","CodeEditorWidgetFocusTracker","contributions","contribution","createInstance","internalAction","addCodeEditor","removeCodeEditor","contributionId","_removeDecorationTypes","_postDetachModelCleanup","_detachModel","getRawOptions","eolPreference","detachedModel","_attachModel","oldModelUrl","newModelUrl","decorationType","subTypes","subType","_removeDecorationType","getVisibleRanges","getVisibleRangesPlusViewportAboveBelow","_getVerticalOffsetForPosition","validatedModelRange","_revealLine","revealType","_sendRevealRange","_revealPosition","something","isSelection","isISelection","isRange","_setSelectionImpl","_revealLines","revealVerticalInCenter","_revealRange","contributionsState","saveCursorState","codeEditorState","restoreCursorState","reducedState","reduceRestoreState","payload","_startComposition","_endComposition","replaceCharCnt","_paste","_cut","getAction","_triggerEditorCommand","_triggerCommand","endCursorState","changeDecorations","getLineDecorations","decorationTypeKey","createOverviewRuler","observeReferenceElement","addContentWidget","removeContentWidget","addOverlayWidget","removeOverlayWidget","getOffsetForColumn","getScrollLeft","forceRedraw","setIsDominatedByLongLines","onBeforeAttached","secondarySelections","_createView","viewUserInputEvents","removeAllDecorationsWithOwnerId","removeDomNode","removeDecorationType","modelData","_onDidChangeToTrue","_onDidChangeToFalse","_editorSimpleInput","bindTo","_editorFocus","_textInputFocus","_editorTabMovesFocus","_editorReadonly","_inDiffEditor","_editorColumnSelection","_hasMultipleSelections","_hasNonEmptySelection","_canUndo","_canRedo","_updateFromConfig","_updateFromSelection","_updateFromFocus","_updateFromModel","hasWidgetFocus","_langId","_hasCompletionItemProvider","_hasCodeActionsProvider","_hasCodeLensProvider","_hasDefinitionProvider","_hasDeclarationProvider","_hasImplementationProvider","_hasTypeDefinitionProvider","_hasHoverProvider","_hasDocumentHighlightProvider","_hasDocumentSymbolProvider","_hasReferenceProvider","_hasRenameProvider","_hasSignatureHelpProvider","_hasInlayHintsProvider","_hasDocumentFormattingProvider","_hasDocumentSelectionFormattingProvider","_hasMultipleDocumentFormattingProvider","_hasMultipleDocumentSelectionFormattingProvider","_isInWalkThrough","_update","bufferChangeEvents","_onChange","_domFocusTracker","squigglyStart","squigglyEnd","getSquigglySVGData","dotdotdotStart","dotdotdotEnd","errorBorderColor","errorForeground","warningBorderColor","warningForeground","infoBorderColor","infoForeground","hintBorderColor","hintForeground","unnecessaryForeground","unnecessaryBorder","deprecatedForeground","DomEmitter","stopEvent","OrthogonalEdge","onDidChangeGlobalSize","onDidChangeHoverDelay","MouseEventFactory","GestureEventFactory","OrthogonalPointerEventFactory","onPointerMove","Sash","layoutProvider","hoverDelay","hoverDelayer","_onDidEnablementChange","onDidEnablementChange","_onDidStart","onDidStart","_onDidReset","onDidReset","_onDidEnd","onDidEnd","linkedSash","orthogonalStartSashDisposables","orthogonalStartDragHandleDisposables","orthogonalEndSashDisposables","orthogonalEndDragHandleDisposables","orthogonalEdge","onPointerStart","onMouseDoubleClick","onPointerDoublePress","onMouseEnter","onDoubleTap","orientation","hidden","orthogonalStartSash","orthogonalEndSash","_orthogonalStartSash","sash","_orthogonalStartDragHandle","_orthogonalEndSash","_orthogonalEndDragHandle","pointerEventFactory","isMultisashResize","__orthogonalSashEvent","orthogonalSash","getOrthogonalSash","__linkedSashEvent","iframes","startX","startEvent","currentX","currentY","updateStyle","verticalProvider","getVerticalSashLeft","getVerticalSashTop","getVerticalSashHeight","horizontalProvider","getHorizontalSashTop","getHorizontalSashLeft","getHorizontalSashWidth","fromLinkedSash","SyncDescriptor","staticArguments","supportsDelayedInstantiation","registerSingleton","ctorOrDescriptor","IEditorCancellationTokens","ctxCancellableOperation","cts","StableEditorScrollState","_visiblePosition","_visiblePositionScrollDelta","_cursorPosition","visiblePositionScrollTop","getTopForPosition","currentCursorPosition","getTopForLineNumber","visiblePosition","visiblePositionScrollDelta","DataTransfers","RESOURCES","DOWNLOAD_URL","FILES","TEXT","TERMINALS","DragAndDropData","StaticDND","CurrentDragAndDropData","BaseActionViewItem","_action","handleActionChangeEvent","updateEnabled","updateChecked","updateClass","updateLabel","updateTooltip","_actionRunner","actionRunner","newContext","enableDragging","draggable","dataTransfer","TouchEventType","isMenu","preserveFocus","useEventAsContext","blur","focusable","ActionViewItem","ActionBar","_f","previousKeys","triggerKeyDown","_onDidCancel","cancelHasListener","onDidCancel","_orientation","_triggerKeys","keyDown","triggerKeys","_actionIds","viewItems","focusedItem","animated","DOM","eventHandled","focusPrevious","focusNext","focusFirst","focusLast","trapsArrowNavigation","isTriggerKeyEvent","doTrigger","updateFocusedItem","focusTracker","actionsList","setActionContext","actionViewItemElement","allowContextMenu","actionViewItemProvider","setFocusable","selectFirst","firstEnabled","findIndex","isEnabled","updateFocus","preventLoopNavigation","focusOnlyEnabledItems","fromRight","preventScroll","actionViewItem","focusItem","getContainer","IconRegistry","iconSchema","definitions","icons","fontId","iconReferenceSchema","Codicons","iconsById","iconFontsById","enumIndex","iconContribution","i1","i2","reference","registerIcon","onDidRegister","initialize","iconsSchemaId","getIconSchema","DiffEntry","originalLineStart","originalLineEnd","modifiedLineStart","modifiedLineEnd","Diff","diffReviewInsertIcon","diffReviewRemoveIcon","diffReviewCloseIcon","DiffReview","_diffEditor","actionBarContainer","_actionBar","_content","_diffs","_goToRow","_getNextRow","_getPrevRow","_currentDiff","_findDiffIndex","doLayout","jumpToLineNumber","_getCurrentFocusedRow","revealPosition","previousElementSibling","_getFirstRow","_mergeAdjacent","originalOptions","modifiedOptions","originalModelOpts","modifiedModelOpts","diffIndex","diffs","minOriginalLine","maxOriginalLine","minModifiedLine","maxModifiedLine","diffEntry","header","cell","originalChangedLinesCnt","modifiedChangedLinesCnt","getAriaLines","originalChangedLinesCntAria","modifiedChangedLinesCntAria","modLine","_renderSection","modifiedLineCount","diffsLength","originalEqualAbove","modifiedEqualAbove","minOriginal","minModified","prevLineChange","fromOriginal","fromModified","originalEqualBelow","modifiedEqualBelow","maxOriginal","maxModified","nextLineChange","toOriginal","toModified","thisDiff","currLast","thisFirst","getType","rowClassName","lineNumbersExtraClassName","spacerIcon","originalLayoutInfo","originalLineNumbersWidth","modifiedLayoutInfo","modifiedLineNumbersWidth","paddingRight","spacer","spacerCodicon","createEmpty","DiffReviewNext","findFocusedDiffEditor","diffReviewNext","DiffReviewPrev","diffReviewPrev","diffEditors","listDiffEditors","activeCodeEditor","IContextViewService","IContextMenuService","InlineDiffMargin","_viewZoneId","_marginDomNode","_contextMenuService","_clipboardService","_diffActions","lineFeed","deletedText","currentLineNumberOffset","copyLineAction","showContextMenu","getAnchor","autoSelectFirstItem","pad","_updateLightBulbPosition","lineNumberOffset","IClipboardService","IEditorProgressService","VisualEditorState","_inlineDiffMargins","_zonesMap","allViewZones","viewChangeAccessor","zoneId","restoreScrollState","viewZone","restore","overviewZones","DIFF_EDITOR_ID","diffInsertIcon","diffRemoveIcon","DiffEditorWidget","clipboardService","editorWorkerService","contextMenuService","_editorProgressService","_onDidUpdateDiff","_lastOriginalWarning","_lastModifiedWarning","_editorWorkerService","_updatingDiffProgress","_renderSideBySide","renderSideBySide","_maxComputationTime","_ignoreTrimWhitespace","_renderIndicators","renderIndicators","_originalIsEditable","validateBooleanOption","originalEditable","_diffCodeLens","diffCodeLens","_diffWordWrap","validateDiffWordWrap","diffWordWrap","isInEmbeddedEditor","_renderOverviewRuler","renderOverviewRuler","_updateDecorationsRunner","_updateDecorations","_containerDomElement","_overviewViewportDomElement","_overviewDomElement","_modifiedEditor","_originalDomNode","_modifiedDomNode","_beginUpdateDecorationsTimeout","_currentlyChangingViewZones","_diffComputationToken","_originalEditorState","_modifiedEditorState","_isHandlingScrollEvent","_onDidContainerSizeChanged","_diffComputationResult","_originalEditor","_createLeftHandSideEditor","originalEditor","_createRightHandSideEditor","_originalOverviewRuler","_modifiedOverviewRuler","_reviewPane","_enableSplitViewResizing","enableSplitViewResizing","_setStrategy","DiffEditorWidgetSideBySide","_createDataSource","DiffEditorWidgetInline","_strategy","applyColors","addDiffEditor","_layoutOverviewRulers","_createInnerEditor","_adjustOptionsForLeftHandSide","_layoutOverviewViewport","_onViewZonesChanged","_beginUpdateDecorationsSoon","isInDiffLeftEditorKey","ONE_OVERVIEW_WIDTH","_adjustOptionsForRightHandSide","isInDiffRightEditorKey","editorWidgetOptions","removeDiffEditor","_cleanViewZonesAndDecorations","renderSideBySideChanged","beginUpdateDecorations","_beginUpdateDecorations","setEnableSplitViewResizing","_recreateOverviewRulers","getVisibleColumnFromPosition","revealLineInCenter","revealLineInCenterIfOutsideViewport","revealLineNearTop","revealPositionInCenterIfOutsideViewport","revealPositionNearTop","revealLines","revealLinesInCenter","revealLinesInCenterIfOutsideViewport","revealLinesNearTop","revealRangeInCenter","revealRangeInCenterIfOutsideViewport","revealRangeNearTop","revealRangeNearTopIfOutsideViewport","revealRangeAtTop","getSupportedActions","diffEditorState","_doLayout","reviewHeight","_getReviewHeight","freeSpace","ENTIRE_DIFF_OVERVIEW_WIDTH","getLayoutInfo","setLayout","UPDATE_DIFF_DECORATIONS_DELAY","currentOriginalModel","currentModifiedModel","currentToken","canComputeDiff","clean","foreignOriginal","getForeignViewZones","foreignModified","diffDecorations","getEditorsDiffDecorations","clonedOptions","_adjustOptionsForSubEditor","originalAriaLabel","modifiedAriaLabel","splitPoint","_computeOverviewViewport","computedRatio","getContainerDomNode","relayoutEditors","newStrategy","startLineNumberExtractor","midEnd","_getLineChangeAtOrBeforeLineNumber","originalEquivalentLineNumber","modifiedEquivalentLineNumber","lineChangeOriginalLength","lineChangeModifiedLength","equivalentLineNumber","_getEquivalentLineForOriginalLineNumber","_getEquivalentLineForModifiedLineNumber","DiffEditorWidgetStyle","dataSource","_dataSource","_insertColor","_removeColor","newInsertColor","newRemoveColor","hasChanges","originalWhitespaces","modifiedWhitespaces","_getViewZones","originalDecorations","_getOriginalEditorDecorations","modifiedDecorations","_getModifiedEditorDecorations","ForeignViewZonesIterator","advance","ViewZonesComputer","_lineChanges","_originalForeignVZ","_modifiedForeignVZ","originalLineHeight","modifiedLineHeight","originalHasWrapping","modifiedHasWrapping","hasWrapping","originalCoordinatesConverter","modifiedCoordinatesConverter","originalEndEquivalentLineNumber","modifiedEndEquivalentLineNumber","sortMyViewZones","addAndCombineIfPossible","lastItem","modifiedForeignVZ","originalForeignVZ","lastOriginalLineNumber","lastModifiedLineNumber","_getViewLineCount","stepOriginal","stepModified","originalViewLineCount","modifiedViewLineCount","viewZoneLineNumber","_createOriginalMarginDomNodeForModifiedForeignViewZoneInAddedRegion","isChangeOrInsert","_produceOriginalFromDiff","isChangeOrDelete","_produceModifiedFromDiff","stepOriginalIndex","stepModifiedIndex","originalDelta","modifiedDelta","shouldNotShrink","_ensureDomNodes","getViewRange","createFakeLinesDiv","createDecoration","DECORATIONS","charDelete","charDeleteWholeLine","charInsert","charInsertWholeLine","lineInsert","lineInsertWithSign","lineDelete","lineDeleteWithSign","lineDeleteMargin","_disableSash","_sashRatio","_sashPosition","_startSashPosition","_sash","_onSashDragStart","_onSashDrag","_onSashDragEnd","_onSashReset","newDisableSash","sashRatio","sashPosition","midPoint","MINIMUM_EDITOR_WIDTH","SideBySideViewZonesComputer","getViewZones","overviewZoneColor","originalViewModel","modifiedViewModel","InlineViewZonesComputer","_originalModel","_pendingLineChange","_pendingViewZones","_lineBreaksComputer","_finalize","modifiedEditorOptions","lineBreakIndex","hasCharChanges","maxCharsPerLine","renderedLineCount","actualDecorations","lastBreakOffset","viewLineContent","_renderOriginalLine","extractWrapped","marginDomNode2","marginElement","validateStringSetOption","added","removed","addedOutline","removedOutline","scrollbarSliderBackgroundColor","scrollbarSliderHoverBackgroundColor","scrollbarSliderActiveBackgroundColor","diffDiagonalFillColor","IStandaloneThemeService","IKeybindingService","AbstractCodeEditorService","_onCodeEditorAdd","onCodeEditorAdd","_onCodeEditorRemove","onCodeEditorRemove","_onDiffEditorAdd","_onDiffEditorRemove","_onDecorationTypeRegistered","_modelProperties","_codeEditors","_diffEditors","editorWithWidgetFocus","listCodeEditors","RefCountedStyleSheet","_parent","_styleSheet","_refCount","_removeEditorStyleSheets","GlobalStyleSheet","CodeEditorServiceImpl","_decorationOptionProviders","_editorStyleSheets","_globalStyleSheet","_getOrCreateGlobalStyleSheet","refCountedStyleSheet","parentTypeKey","_getOrCreateStyleSheet","providerArgs","DecorationSubTypeOptionsProvider","DecorationTypeOptionsProvider","refCount","ed","removeDecorations","_parentTypeKey","_beforeContentRules","DecorationCSSRules","_afterContentRules","resolveDecorationOptions","unref","_disposables","createCSSRules","hasContent","createInlineCSSRules","hasLetterSpacing","inlineData","beforeInjectedText","contentText","beforeInlineData","affectsLetterSpacing","afterInjectedText","afterInlineData","rangeBehavior","lightOverviewRulerColor","overviewRulerColor","darkOverviewRulerColor","overviewRulerLane","_CSS_MAP","outlineStyle","outlineWidth","borderRadius","borderSpacing","borderStyle","borderWidth","textDecoration","gutterIconPath","gutterIconSize","contentIconPath","ruleType","_ruleType","_providerArgs","_usesThemeColors","_hasContent","_hasLetterSpacing","CSSNameHelper","_unThemedSelector","getSelector","_buildCSS","_themeListener","_removeCSS","unthemedCSS","lightCSS","darkCSS","getCSSTextForModelDecorationClassName","getCSSTextForModelDecorationInlineClassName","getCSSTextForModelDecorationGlyphMarginClassName","getCSSTextForModelDecorationContentClassName","removeRulesContainingSelector","cssTextArr","collectCSSText","collectBorderSettingsCSSText","lenBefore","resolveValue","parentKey","StandaloneCodeEditorServiceImpl","_checkContextKey","_editorIsOpen","_activeCodeEditor","hasCodeEditor","sideBySide","doOpenEditor","LAST_GENERATED_COMMAND_ID","ariaDomNodeCreated","createAriaDomNode","createAlertContainer","createStatusContainer","aria","StandaloneCodeEditor","keybindingService","_standaloneKeybindingService","whenExpression","addDynamicKeybinding","_descriptor","keybindings","keybindingsWhen","keybindingContext","contextMenuGroupId","contextMenuOrder","uniqueId","menuItem","setActiveCodeEditor","StandaloneEditor","contextViewService","themeDomRegistration","registerEditorContainer","autoDetectHighContrast","setAutoDetectHighContrast","_contextViewService","createTextModel","_ownsModel","setContainer","StandaloneDiffEditor","editorProgressService","addCommand","createContextKey","addAction","firstLF","doCreateModel","createByFilepathOrFirstLine","languageSelection","FrankensteinMode","EditorModesRegistry","_onDidChangeLanguages","onDidChangeLanguages","_languages","_dynamicLanguages","ModesRegistry","PLAINTEXT_MODE_ID","PLAINTEXT_LANGUAGE_IDENTIFIER","registerLanguage","aliases","mimetypes","LanguagesRegistry","useModesRegistry","_warnOnOverwrite","_nextLanguageId2","_languageIdToLanguage","_languageToLanguageId","_mimeTypesMap","_nameMap","_lowercaseNameMap","_initializeFromRegistry","getLanguages","_registerLanguages","_registerLanguage","langId","mimetype","registerOverrideIdentifiers","resolvedLanguage","_getLanguageId","filenames","configurationFiles","_mergeLanguage","primaryMime","filenamePatterns","firstLineRegexStr","firstLineRegex","langAliases","langAlias","containsAliases","bestName","languageNameLower","commaSeparatedMimetypesOrCommaSeparatedIds","mimeTypeOrId","mimeTypes","extractModeIds","LanguageSelection","onLanguagesMaybeChanged","_selector","_evaluate","ModeServiceImpl","_onDidCreateMode","onDidCreateMode","_onLanguagesMaybeChanged","_instantiatedModes","getModeIdForLanguageNameLowercase","getModeIdsFromFilepathOrFirstLine","_createModeAndGetLanguageIdentifier","getModeIdByFilepathOrFirstLine","_getOrCreateMode","IUndoRedoService","ResourceEditStackSnapshot","UndoRedoGroup","_ID","UndoRedoSource","SemanticTokensProviderStyling","_legend","_hashTable","HashTable","_hasWarnedOverlappingTokens","tokenTypeIndex","tokenModifierSet","tokenTypes","tokenModifiers","modifierSet","modifierIndex","tokenStyle","getTokenStyleMetadata","underline","HashTableEntry","_elementsCount","_currentLengthIndex","_currentLength","_SIZES","_growCount","_elements","_nullOutEntries","_hash2","_hashFunc","oldElements","oldNext","_add","encodeSemanticTokensDto","semanticTokens","deltas","encodeSemanticTokensDtoSize","uint8Arr","b0","b1","b2","b3","reverseEndianness","toLittleEndianBuffer","isSemanticTokens","getDocumentSemanticTokens","lastResultId","_getDocumentSemanticTokensProvider","provideDocumentSemanticTokens","ordered","getDocumentRangeSemanticTokensProvider","getLegend","resultId","releaseDocumentSemanticTokens","provideDocumentRangeSemanticTokens","computeModelSha1","shaComputer","digest","_modelEventListeners","_languageSelection","_languageSelectionListener","_disposeLanguageSelection","setMode","DEFAULT_EOL","DisposedModelInfo","initialUndoRedoSnapshot","time","sharesUndoRedoStack","sha1","ModelServiceImpl","_resourcePropertiesService","_onModelAdded","onModelAdded","_onModelRemoved","_onModelModeChanged","onModelModeChanged","_modelCreationOptionsByLanguageAndResource","_disposedModels","_disposedModelsHeapSize","_semanticStyling","SemanticStyling","_updateModelOptions","SemanticColoringFeature","_readModelOptions","oldOptionsByLanguageAndResource","modelId","getCreationOptions","_setModelOptionsForModel","disposedModelData","maxModelsHeapSize","disposedModels","disposedModel","_removeDisposedModel","restoreSnapshot","sha1IsEqual","past","matchesResource","future","setElementsValidFlag","_overwriteVersionId","_overwriteInitialUndoRedoSnapshot","_createModelData","setLanguage","getUriComparisonKey","maintainUndoRedoStack","_shouldRestoreUndoStack","maxMemory","MAX_MEMORY_FOR_CLOSED_FILES_UNDO_STACK","getInitialUndoRedoSnapshot","_ensureDisposedModelsHeapSize","_insertDisposedModel","oldModeId","newModeId","parsedTabSize","parsedIndentSize","newDefaultEOL","currentOptions","SEMANTIC_HIGHLIGHTING_SETTING_ID","isSemanticColoringEnabled","setting","semanticHighlighting","semanticStyling","_watchers","ModelSemanticColoring","deregister","modelSemanticColoring","handleSettingOrThemeChange","_caches","SemanticTokensResponse","_provider","stylingProvider","_fetchDocumentSemanticTokens","_fetchDocumentSemanticTokensNow","FETCH_DOCUMENT_SEMANTIC_TOKENS_DELAY","_currentDocumentResponse","_currentDocumentRequestCancellationTokenSource","_documentProvidersChangeListeners","_setDocumentSemanticTokens","bindDocumentChangeListeners","cancellationTokenSource","pendingChanges","contentChangeListener","styling","setSemanticTokens","currentResponse","rescheduleIfNeeded","deltaLength","srcData","destData","srcLastStart","destLastStart","copyCount","_copy","tokensPerArea","lastStartCharacter","tokenStartIndex","smallTokenEndIndex","bigTokenEndIndex","areaLine","prevLineNumber","prevStartCharacter","prevEndCharacter","deltaCharacter","warnOverlappingSemanticTokens","toMultilineTokens2","area","singleChange","applyEdit","ParsedTokenThemeRule","_parsedThemeRuleBrand","colorRegExp","ColorMap","_lastColorId","_id2color","_color2id","TokenTheme","_match","STANDARD_TOKEN_TYPE_REGEXP","toStandardTokenType","customTokenColors","createFromParsedTokenTheme","parseTokenTheme","parsedThemeRules","strcmp","defaultForeground","defaultBackground","incomingDefaults","foregroundColorId","backgroundColorId","ThemeTrieElementRule","ThemeTrieElement","resolveParsedTokenThemeRules","_themeTrieElementRuleBrand","_fontStyle","_foreground","_background","mainRule","_themeTrieElementBrand","_mainRule","_children","dotIndex","acceptOverwrite","inherit","vs_dark","hc_black","getIconsStyleSheet","onDidChangeEmmiter","getCSS","usedFontIds","formatIconRule","getIcon","fontContribution","getIconFont","getIcons","VS_THEME_NAME","VS_DARK_THEME_NAME","HC_BLACK_THEME_NAME","ThemingExtensions","StandaloneTheme","standaloneThemeData","themeData","isBuiltinTheme","themeName","defaultColors","_tokenTheme","baseData","getBuiltinRules","useDefault","getColors","getDefault","resolveDefaultColor","LIGHT","encodedTokensColors","createFromRawTokenTheme","modelLanguage","builtinTheme","newBuiltInTheme","StandaloneThemeServiceImpl","_onColorThemeChange","_environment","_autoDetectHighContrast","_knownThemes","iconsStyleSheet","_codiconCSS","_themeCSS","_allCSS","_globalStyleElement","_styleElements","_colorMapOverride","_updateCSS","_updateActualTheme","_registerShadowDomContainer","_registerRegularEditorContainer","notifyBaseUpdated","colorMapOverride","_updateThemeOrColorMap","_desiredTheme","hasRule","ruleCollector","getThemingParticipants","generateTokensCSSForColorMap","setColorMap","hasFileIcons","hasFolderIcons","hidesExplorerArrows","KEYBINDING_CONTEXT_ATTR","NullContext","ConfigAwareContextValuesContainer","forConfigKeys","_listener","ArrayContextKeyChangeEvent","configKey","contextKey","cachedItems","findSuperstr","deleteSuperstr","_keyPrefix","configValue","ContextKey","_service","setContext","removeContext","SimpleContextKeyChangeEvent","CompositeContextKeyChangeEvent","affectsSome","AbstractContextKeyService","myContextId","_onDidChangeContext","onDidChangeContext","_myContextId","ScopedContextKeyService","getContextValuesContainer","myContext","NaN","findContextAttr","ContextKeyService","_lastContextId","contextId","parentContextId","createChildContext","_parentChangeListener","_updateParentChangeListener","extraInfo","disposeContext","LayoutAnchorMode","viewSize","layoutAfterAnchorBoundary","ALIGN","layoutBeforeAnchorBoundary","intersect","intersects","relativeComplement","second","ContextView","toDisposeOnClean","toDisposeOnSetContainer","shadowRootHostElement","useFixedPosition","attachShadow","SHADOW_ROOT_CSS","BUBBLE_UP_EVENTS","onDOMEvent","BUBBLE_DOWN_EVENTS","canRelayout","around","elementPosition","viewSizeWidth","viewSizeHeight","anchorPosition","anchorAlignment","anchorAxisAlignment","verticalAnchor","pageYOffset","horizontalAnchor","AVOID","containerPosition","onHide","onCapture","formatRule","wordToMatchAgainst","matchesPrefix","_matchesSubString","isLower","isUpper","isAlphanumeric","nextAnchor","camelCaseWord","_matchesCamelCase","nextUpperIndex","matchesCamelCase","upper","lower","isCamelCasePattern","analysis","alpha","numeric","upperPercent","lowerPercent","alphaPercent","numericPercent","analyzeCamelCaseWord","isCamelCaseWord","isUpperCaseWord","fuzzyContiguousFilter","fuzzySeparateFilter","fuzzyRegExpCache","matchesFuzzy","enableSeparateSubstringMatching","_maxLen","initTable","initArr","FuzzyScore","_minWordMatchPos","_maxWordMatchPos","_diag","_table","_arrows","isSeparatorAtPos","codePointAt","isWhitespaceAtPos","isUpperCaseAtPos","wordLow","fuzzyScore","patternLow","patternStart","wordStart","firstMatchCanBeWeak","patternLen","wordLen","patternPos","wordPos","fillMinWordPosArr","isPatternInWord","_fillInMaxWordMatchPos","hasStrongFirstMatch","minWordMatchPos","maxWordMatchPos","nextMaxWordMatchPos","MIN_SAFE_INTEGER","canComeDiag","_doScore","diagScore","MAX_SAFE_INTEGER","canComeLeft","leftScore","canComeLeftLeft","leftLeftScore","backwardsDiagLength","maxMatchColumn","diagColumn","skippedCharsCount","newMatchStart","outFirstMatchStrong","isGapLocation","Default","iconStartMarker","iconsRegex","stripIconsRegex","parseLabelWithIcons","firstIconIndex","iconOffsets","textWithoutIcons","appendChars","chars","iconsOffset","currentIconStart","currentIconValue","doParseLabelWithIcons","matchesFuzzyIconAware","wordToMatchAgainstWithoutIconsTrimmed","leadingWhitespaceOffset","iconOffset","Direction","MENU_MNEMONIC_REGEX","MENU_ESCAPED_MNEMONIC_REGEX","menuSelectionIcon","menuSubmenuIcon","Menu","menuElement","doGetActionViewItem","parentData","menuDisposables","initializeStyleSheet","enableMnemonics","toLocaleLowerCase","mnemonics","SubmenuMenuActionViewItem","focusItemByElement","lastFocusedItem","setFocusedItem","scrollableElement","scrollElement","maxHeight","submenuIds","MenuSeparatorActionViewItem","updatePositionInSet","MENU_WIDGET_CSS","globalStyleSheet","fgColor","foregroundColor","bgColor","shadowColor","BaseMenuActionViewItem","menuActionViewItem","mnemonic","getMnemonic","actionViewItems","menuItemOptions","getKeyBinding","keybindingLabel","runOnceToEnableMouseUp","cssSelector","applyStyle","setSize","preWhitespace","postWhitespace","cleanLabel","mnemonicInText","cleanMnemonic","escMatch","replaceDoubleEscapes","menuStyle","isSelected","selectionForegroundColor","selectionBackgroundColor","selectionBorderColor","submenuActions","submenuOptions","mysubmenu","submenuDisposables","mouseOver","expandDirection","showScheduler","cleanupExistingSubmenu","createSubmenu","hideScheduler","updateAriaExpanded","submenuIndicator","force","submenuContainer","windowDimensions","selectFirstItem","computedStyles","entryBox","entryBoxUpdated","viewBox","calculateSubmenuMenuLayout","borderBottomColor","separatorColor","computeStyles","styleMap","attachStyler","widgetOrCallback","applyStyles","attachListStyler","defaultListStyles","listFocusAndSelectionBackground","listFocusAndSelectionForeground","listSelectionOutline","listHoverOutline","listMatchesShadow","defaultMenuStyles","ContextMenuHandler","focusToReturn","blockMouse","shadowRootElement","domForShadowRoot","showContextView","getMenuClassName","onActionRun","onDidActionRun","getActionViewItem","getActionsContext","lookupKeybinding","hideContextView","didCancel","ContextMenuService","contextMenuHandler","configure","ILayoutService","ContextViewService","layoutService","currentViewDisposable","contextView","getViewElement","IDialogService","incoming","outgoing","Graph","_hashFn","_nodes","fromNode","lookupOrInsertNode","toNode","_findCycle","CyclicDependencyError","findCycleSlow","InstantiationService","services","_activeInstantiations","_services","_trace","traceInvocation","_done","isOptional","_getOrCreateServiceInstance","traceCreation","_createInstance","serviceDependencies","serviceArgs","dependency","firstServiceArgPos","_setServiceInstance","instanceOrDesc","_getServiceInstanceOrDescriptor","_safeCreateAndCacheServiceInstance","branch","_createAndCacheServiceInstance","cycleCount","insertEdge","roots","_createServiceInstanceWithOwner","removeNode","_createServiceInstance","_supportsDelayedInstantiation","idle","_start","_dep","dur","_totals","causedCreation","printChild","nested","_None","ILabelService","ListError","groupIntersect","intersection","much","consolidate","previousGroup","RangeMap","middle","indexAt","groupCount","newCount","RowCache","renderers","templateId","getTemplateCache","templateData","getRenderer","renderTemplate","releaseRow","removeFromParent","cachedRows","cachedRow","disposeTemplate","DefaultOptions","verticalScrollMode","setRowLineHeight","setRowHeight","supportDynamicHeights","dnd","getDragElements","getDragURI","onDragOver","drop","horizontalScrolling","transformOptimization","ElementsDragAndDropData","ExternalElementsDragAndDropData","NativeDragAndDropData","ListViewAccessibilityProvider","accessibilityProvider","getSetSize","getPosInSet","getRole","isChecked","ListView","virtualDelegate","domId","InstanceCount","renderWidth","_scrollHeight","scrollableElementUpdateDisposable","scrollableElementWidthDelayer","splicing","dragOverAnimationStopDisposable","dragOverMouseY","canDrop","currentDragFeedbackDisposable","onDragLeaveTimeout","_onDidChangeContentHeight","_horizontalScrolling","rangeMap","lastRenderTop","lastRenderHeight","mouseSupport","additionalScrollHeight","rowsContainer","onTouchChange","toDragEvent","onDrop","onDragLeave","measureItemWidth","updateScrollWidth","_splice","previousRenderRange","getRenderRange","removeRange","rowsToDispose","dragStartDisposable","disposeElement","previousRestRange","previousRenderedRestRange","previousUnrenderedRestRanges","inserted","getTemplateId","hasDynamicHeight","lastDynamicHeightWidth","dropTarget","renderRange","renderedRestRange","updateRange","updateItemInDOM","removeRanges","removeItemFromDOM","unrenderedRestRanges","elementsRange","insertRanges","beforeElement","getNextToLastElement","insertItemInDOM","release","eventuallyUpdateScrollDimensions","_rerender","indexAfter","renderTop","renderLeft","updateItemsInDOM","rangesToInsert","rangesToRemove","rangesToUpdate","renderElement","eventuallyUpdateScrollWidth","paddingLeft","elementTop","getElementDomId","toMouseEvent","toGestureEvent","toTouchEvent","getItemIndexFromEventTarget","effectAllowed","setDragImage","getDragLabel","dragImage","currentDragData","setupDragAndDropScrollTopAnimation","f1","f2","currentDragFeedback","dropEffect","clearDragOverFeedback","dragData","teardownDragAndDropScrollTopAnimation","dragOverAnimationDisposable","viewTop","animateDragAndDropScrollTop","upperLimit","rawIndex","anchorElementIndex","anchorElementTopDelta","heightDiff","probeDynamicHeight","afterIndex","beforeRow","setDynamicHeight","nextToLastItem","CombinedSpliceable","spliceables","TraitRenderer","trait","renderedElements","renderedElementIndex","rendered","unrender","renderIndex","renderedElement","indexes","Trait","_trait","sortedIndexes","hasTrait","numericSort","sortedResult","disjunction","renderIndexes","comp","binarySearch","SelectionTrait","setAriaSelected","TraitSpliceable","identityProvider","pastElementsWithTrait","elementsWithTrait","isInputElement","isMonacoEditor","TypeLabelControllerState","KeyboardController","multipleSelectionDisposables","onUpArrow","onDownArrow","onPageUpArrow","onPageDownArrow","onEscape","multipleSelectionSupport","onCtrlA","optionsUpdate","getFocus","reveal","focusPreviousPage","focusNextPage","DefaultKeyboardNavigationDelegate","TypeLabelController","keyboardNavigationLabelProvider","Idle","automaticKeyboardNavigation","triggered","previouslyFocused","enabledDisposables","enableKeyboardNavigation","enable","disable","onChar","mightProducePrintableCharacter","onClear","onInput","getAriaLabel","Typing","getKeyboardNavigationLabel","labelStr","setFocus","DOMFocusController","onTab","focusedDomElement","tabIndexElement","isSelectionSingleChangeEvent","isSelectionRangeChangeEvent","DefaultMultipleSelectionController","MouseController","_onPointer","onPointer","multipleSelectionController","onMouseDblClick","onDoubleClick","getHTMLElement","onMouseClick","onMouseMiddleClick","onViewPointer","domFocus","setAnchor","changeSelection","isSelectionChangeEvent","MouseEvent","currentFocus","rangeSelection","contiguousRange","getContiguousRangeContaining","DefaultStyleController","selectorSuffix","suffix","listInactiveFocusForeground","defaultStyles","keyboardSupport","PipelineRenderer","_templateId","AccessibiltyRenderer","ariaLevel","getAriaLevel","ListViewDragAndDrop","getSelectedElements","originalEvent","targetElement","List","eventBufferer","_ariaLabel","getWidgetRole","baseRenderers","onDidChangeActiveDescendant","viewOptions","styleController","spliceable","keyboardController","keyboardNavigationDelegate","typeLabelController","mouseController","createMouseController","onDidChangeFocus","_onFocusChange","onDidChangeSelection","_onSelectionChange","getWidgetAriaLabel","wrapEvent","toListEvent","didJustPressContextMenuKey","fromKeyDown","fromKeyUp","fromMouse","bufferEvents","rerender","findNextIndex","findPreviousIndex","lastPageIndex","lastPageElement","currentlyFocusedElement","getFocusedElements","lastGoodPageIndex","previousScrollTop","elementHeight","firstPageIndex","firstPageElement","firstGoodPageIndex","focusNth","relativeTop","viewItemBottom","scrollBottom","getActiveDescendantId","PagedRenderer","modelProvider","isResolved","renderPlaceholder","PagedAccessibilityProvider","fromPagedListOptions","TreeMouseEventTarget","PagedList","pagedRenderers","TreeError","WeakMapper","_toArray","isFilterResult","getVisibleState","isCollapsibleStateUpdate","collapsible","IndexTreeModel","rootRef","_onDidChangeCollapseState","onDidChangeCollapseState","_onDidChangeRenderNodeCount","onDidChangeRenderNodeCount","_onDidSplice","onDidSplice","collapseByDefault","autoExpandSingleChildren","visibleChildrenCount","visibleChildIndex","collapsed","renderNodeCount","visible","filterData","toInsert","diffIdentityProvider","spliceSmart","spliceSimple","identity","toInsertIterable","recurseLevels","diffDepth","getParentNodeWithListIndex","locationPrefix","recurseSplice","lastStartO","lastStartM","onDidCreateNode","onDidDeleteNode","listIndex","revealed","treeListElementsToInsert","nodesToInsertIterator","createTreeNode","lastHadChildren","visibleChildStartIndex","nodesToInsert","insertedVisibleChildrenCount","deletedNodes","deletedVisibleChildrenCount","visibleDeleteCount","_updateAncestorsRenderNodeCount","visit","currentlyHasChildren","setCollapsible","insertedNodes","refilter","getTreeNodeWithListIndex","hasTreeNode","getTreeNode","_setCollapseState","recursive","_setListNodeCollapseState","onlyVisibleChildIndex","_setNodeCollapseState","previousRenderNodeCount","updateNodeAfterCollapseChange","deep","updateNodeAfterFilterChange","treeElement","parentVisibility","treeListElements","_filterNode","childElements","childRevealed","_updateNodeAfterCollapseChange","_updateNodeAfterFilterChange","resultStartLength","hasVisibleDescendants","indexTreeNode","tail2","treeItemExpandedIcon","treeFilterOnTypeOnIcon","treeFilterOnTypeOffIcon","treeFilterClearIcon","treeItemLoadingIcon","TreeElementsDragAndDropData","asTreeDragAndDropData","TreeNodeListDragAndDrop","autoExpandDisposable","didChangeAutoExpandNode","autoExpandNode","autoExpand","getNodeLocation","isCollapsed","setCollapsed","parentRef","getParentNodeLocation","getNode","parentIndex","getListIndex","getListRenderCount","asListOptions","simpleKeyboardNavigation","RenderIndentGuides","ComposedTreeDelegate","EventCollection","TreeRenderer","activeNodes","renderedNodes","DefaultIndent","hideTwistiesOfChildlessElements","shouldRenderIndentGuides","renderedIndentGuides","activeIndentNodes","indentGuidesDisposable","onDidChangeNodeTwistieState","onDidChangeTwistieState","_onDidChangeActiveNodes","twistie","renderTwistie","twistieRendered","disposableStore","guide","childElementCount","firstElementChild","TypeFilter","_filter","_totalCount","_matchCount","_pattern","_lowercasePattern","onWillRefilter","filterOnType","TypeFilterController","_onDidChangeEmptyState","positionClassName","_onDidChangePattern","messageDomNode","labelDomNode","controls","_filterOnType","filterOnTypeDomNode","updateFilterOnTypeTitleAndIcon","onDidChangeFilterOnType","clearDomNode","keyboardNavigationEventFilter","onDidSpliceModel","onEventOrInput","onRawKeyDown","onClearClick","getRelativeTop","containerWidth","midContainerWidth","updatePosition","noMatches","totalCount","matchCount","asTreeMouseEvent","Unknown","Twistie","dfs","getFirstViewElementWithTrait","_nodeSet","createNodeSet","__forceEvent","silent","nodeSet","deletedNodesIdSet","deletedNodesVisitor","insertedNodesMap","insertedNodesVisitor","insertedNode","TreeNodeListMouseController","onTwistie","expandOnlyOnTwistieClick","expandOnDoubleClick","TreeNodeList","focusTrait","selectionTrait","anchorTrait","additionalFocus","additionalSelection","fromAPI","AbstractTree","_onWillRefilter","_onDidUpdateOptions","treeDelegate","onDidChangeCollapseStateRelay","onDidChangeActiveNodes","getAnchorElement","onDidModelSplice","getNodes","onLeftArrow","onRightArrow","onSpace","typeFilterController","focusNavigationFilter","shouldAllowFocus","Always","isCollapsible","expandTo","parentListIndex","firstChildIndex","ObjectTreeModel","nodesByIdentity","getElementLocation","_setChildren","preserveCollapseState","insertedElements","insertedElementIds","tnode","MAX_VALUE","noCompress","incompressible","childrenIterator","_decompress","decompress","wrapIdentityProvider","CompressedObjectTreeModel","compressionEnabled","compressedNode","compressedParentNode","decompressedElement","splicedElement","recompressedElement","parentChildren","compressedChildren","rootChildren","decompressedRootChildren","recompressedRootChildren","setChildren","getCompressedNode","DefaultElementMapper","CompressedTreeNodeWrapper","unwrapper","mapList","nodeMapper","updateElementHeight","mapOptions","compressedNodeUnwrapper","otherNode","CompressibleObjectTreeModel","elementMapper","setCompressionEnabled","ObjectTree","CompressibleRenderer","_compressedTreeNodeProvider","compressedTreeNode","compressedTreeNodeProvider","getCompressedTreeNode","renderCompressedElements","disposeCompressedElements","twistieElement","asObjectTreeOptions","getCompressedNodeKeyboardNavigationLabel","CompressibleObjectTree","compressibleRenderers","createAsyncDataTreeNode","refreshPromise","stale","slow","collapsedByDefault","ancestor","descendant","AsyncDataTreeNodeWrapper","AsyncDataTreeRenderer","asTreeEvent","AsyncDataTreeElementsDragAndDropData","asAsyncDataTreeDragAndDropData","AsyncDataTreeNodeListDragAndDrop","AsyncDataTree","subTreeRefreshPromises","refreshPromises","_onDidRender","_onDidChangeNodeSlowState","createTree","hasChildren","objectTreeDelegate","objectTreeRenderers","objectTreeOptions","viewStateContext","_updateChildren","getDataNode","refreshAndRenderNode","collapse","hasElement","expand","refreshNode","doRefreshSubTree","doRefreshNode","childrenToRefresh","slowTimeout","childrenPromise","doGetChildren","getChildren","processChildren","childrenElementsIterable","childrenElements","nodesToForget","childrenTreeNodesById","asyncDataTreeNode","childAsyncDataTreeNode","expanded","asTreeElement","CompressibleAsyncDataTreeNodeWrapper","CompressibleAsyncDataTreeRenderer","compressibleNodeMapperProvider","CompressibleAsyncDataTree","compressionDelegate","compressibleNodeMapper","els","asCompressibleObjectTreeOptions","isIncompressible","getUncompressedIds","oldSelection","oldFocus","didChangeSelection","didChangeFocus","filterResult","State","Sizing","DataTree","separatorBorder","ViewItem","_cachedVisibleSize","cachedVisibleSize","viewMinimumSize","viewMaximumSize","minimumSize","maximumSize","snap","layoutContext","layoutContainer","VerticalViewItem","HorizontalViewItem","Distribute","Split","Invisible","SplitView","contentSize","proportions","sashItems","_onDidSashChange","onDidSashChange","_onDidSashReset","_startSnappingEnabled","_endSnappingEnabled","inverseAltBehavior","proportionalLayout","getSashOrthogonalSize","sashContainer","viewContainer","scrollbarVisibility","views","viewDescriptor","sizing","doAddView","saveProportions","startSnappingEnabled","updateSashEnablement","endSnappingEnabled","removeProperty","setProperty","skipLayout","previousSize","lowPriorityIndexes","highPriorityIndexes","resize","distributeEmptySpace","layoutViews","resetSashDragState","sashDragState","snapBefore","snapAfter","sizes","minDelta","NEGATIVE_INFINITY","maxDelta","viewItem","upIndexes","downIndexes","minDeltaUp","maxDeltaUp","maxDeltaDown","minDeltaDown","snapBeforeIndex","findFirstSnapIndex","snapAfterIndex","halfSize","limitDelta","newDelta","isLastSash","newSizes","viewItemIndex","newMinDelta","newMaxDelta","resizeIndex","relayout","Busy","flexibleViewItems","flexibleSize","onChangeDisposable","onViewChange","containerDisposable","getViewSize","getSashPosition","sashEventMapper","onStart","onStartDisposable","onSashStart","onSashChange","onEnd","onEndDisposable","onSashEnd","onDidResetDisposable","sashItem","distributeViewSizes","overloadMinDelta","overloadMaxDelta","upItems","upSizes","downItems","downSizes","snapped","snapView","deltaUp","viewDelta","deltaDown","lowPriorityIndex","emptyDelta","updateScrollableElement","collapsesDown","expandsDown","reverseViews","collapsesUp","expandsUp","snappedBefore","snappedAfter","TableListRenderer","getColumnSize","TemplateId","renderedTemplates","rendererMap","rowContainer","cellContainers","cellTemplateData","cellContainer","ColumnHeader","_onDidLayout","minimumWidth","maximumWidth","onDidChangeWidthConstraints","Table","cachedHeight","headers","splitview","headerRowHeight","columnLayoutDisposable","layoutColumn","IListService","ListService","lists","_lastFocusedWidget","_hasCreatedStyleController","extraContextKeys","registeredList","RawWorkbenchListFocusContextKey","WorkbenchListSupportsMultiSelectContextKey","WorkbenchListHasSelectionOrFocus","WorkbenchListDoubleSelection","WorkbenchListMultiSelection","WorkbenchListSelectionNavigation","WorkbenchListAutomaticKeyboardNavigationKey","createScopedContextKeyService","multiSelectModifierSettingKey","openModeSettingKey","horizontalScrollingKey","keyboardNavigationSettingKey","automaticKeyboardNavigationSettingKey","treeIndentKey","treeRenderIndentGuidesKey","listSmoothScrolling","mouseWheelScrollSensitivityKey","fastScrollSensitivityKey","treeExpandMode","useAltAsMultipleSelectionModifier","MultipleSelectionController","registerListeners","toWorkbenchListOptions","WorkbenchList","listService","workbenchListOptions","workbenchListOptionsDisposable","listSupportsMultiSelect","selectionNavigation","listHasSelectionOrFocus","listDoubleSelection","listMultiSelection","_useAltAsMultipleSelectionModifier","overrideStyles","ListResourceNavigator","_styler","WorkbenchPagedList","WorkbenchTable","TableResourceNavigator","ResourceNavigator","_onDidOpen","onDidOpen","onSelectionFromKeyboard","openOnSingleClick","selectionKeyboardEvent","_open","getSelectedElement","revealIfVisible","TreeResourceNavigator","createKeyboardNavigationEventFilter","inChord","softDispatch","WorkbenchObjectTree","workbenchTreeDataPreamble","treeOptions","getAutomaticKeyboardNavigation","internals","WorkbenchTreeInternals","WorkbenchCompressibleObjectTree","updateStyleOverrides","WorkbenchDataTree","WorkbenchAsyncDataTree","WorkbenchCompressibleAsyncDataTree","accessibilityOn","keyboardNavigation","IMarkerData","hasSelectionOrFocus","hasDoubleSelection","hasMultiSelection","interestingContextKeys","updateKeyboardNavigation","styler","ConfigurationExtensions","_displayStrings","fromSeverity","Hint","toSeverity","emptyString","makeKeyOptionalMessage","markerData","useMessage","makeKey","StorageState","IMarkerService","DoubleResourceMap","_byResource","_byOwner","ownerMap","resourceMap","removedA","removedB","MarkerStats","infos","warnings","unknowns","_subscription","onMarkerChanged","oldStats","_substract","newStats","_resourceStats","MarkerService","_onMarkerChanged","_stats","changeOne","_toMarker","severities","take","_accept","newLen","relatedInformation","tags","Storage","_onDidChangeStorage","onDidChangeStorage","flushDelayer","DEFAULT_FLUSH_DELAY","pendingDeletes","pendingInserts","whenFlushedCallbacks","onDidChangeItemsExternal","Closed","fallbackValue","valueStr","flushPending","hasPending","updateRequest","updateItems","WillSaveStateReason","InMemoryStorageDatabase","TARGET_KEY","IStorageService","AbstractStorageService","flushInterval","DEFAULT_FLUSH_INTERVAL","_onDidChangeValue","_onDidChangeTarget","_onWillSaveState","onWillSaveState","_workspaceKeyTargets","_globalKeyTargets","getKeyTargets","getStorage","getBoolean","getNumber","withPausedEmitters","updateKeyTarget","keyTargets","loadKeyTargets","globalKeyTargets","workspaceKeyTargets","keysRaw","InMemoryStorageService","globalStorage","workspaceStorage","emitDidChangeValue","MenuService","emitEventsForSubmenuChanges","_fireEventsForSubmenuChanges","_menuGroups","_contextKeys","_build","rebuildMenuSoon","contextKeyListener","fireChangeSoon","menuItems","getMenuItems","_compareMenuItems","groupName","_collectContextKeys","_fillInKbExprKeys","toggledExpression","activeActions","exp","aGroup","bGroup","aPrio","bPrio","_compareTitles","aStr","bStr","MarkerDecorations","_markersData","oldIds","MarkerDecorationsService","_markerService","_onDidChangeMarker","_markerDecorations","_handleMarkerChange","markerDecorations","getMarker","changedResources","newModelDecorations","_createDecorationRange","_createDecorationOption","rawMarker","_hasMarkerTag","AccessibilityService","_onDidChangeScreenReaderOptimized","_accessibilityModeEnabledContext","updateContextKey","BrowserClipboardService","mapTextToType","findText","DEBUG","getResourceLabel","stackElementCounter","ResourceStackElement","resourceLabel","strResource","groupId","groupOrder","sourceId","sourceOrder","confirmBeforeUndo","resourceLabels","strResources","ResourceReasonPair","RemovedResources","externalRemoval","noParallelUniverses","messages","WorkspaceStackElement","removedResources","invalidatedResources","ResourceEditStack","_past","_future","locked","removeResource","setValid","_setElementValidFlag","futureElement","snapshotLength","snapshotIndex","removePastAfter","removeFutureBefore","individualMap","EditStackSnapshot","editStacks","_versionIds","missingEditStack","UndoRedoService","_dialogService","_editStacks","_uriComparisonKeyComputers","uriComparisonKeyComputer","_pushElement","nextOrder","editStack","hasFutureElements","closestPastElement","getClosestPastElement","ignoreResources","individualArr","splitPastWorkspaceElement","splitFutureWorkspaceElement","hasPastElements","matchedElement","matchedStrResource","resourceOrSource","_findClosestUndoElementWithSource","editStackSnapshot","cleanup","continuation","releaseLocks","_acquireLocks","affectedEditStacks","canSplit","_splitPastWorkspaceElement","WorkspaceVerificationError","_undo","checkInvalidatedResources","_tryToSplitAndUndo","createMessage","cannotUndoDueToResources","cannotLockDueToResources","undoConfirmed","_getAffectedEditStacks","verificationError","_checkWorkspaceUndo","_confirmAndExecuteWorkspaceUndo","pastElement","secondPastElement","getSecondClosestPastElement","_isPartOfUndoGroup","cancelId","verificationError1","_invokeWorkspacePrepare","verificationError2","moveBackward","_safeInvokeWithLocks","_continueUndoInGroup","_invokeResourcePrepare","flushAllElements","_findClosestUndoElementInGroup","shouldPromptForConfirmation","_confirmAndContinueUndo","_workspaceUndo","_resourceUndo","getClosestFutureElement","_findClosestRedoElementWithSource","_splitFutureWorkspaceElement","_redo","_tryToSplitAndRedo","cannotRedoDueToResources","_checkWorkspaceRedo","_executeWorkspaceRedo","moveForward","_continueRedoInGroup","_findClosestRedoElementInGroup","_workspaceRedo","_resourceRedo","QuickInputHideReason","ItemActivation","NO_KEY_MODS","intlFileNameCollatorBaseNumeric","collator","Intl","Collator","sensitivity","collatorIsNumeric","resolvedOptions","compareAnything","lookFor","elementAName","elementBName","prefixCompare","elementAPrefixMatch","elementBPrefixMatch","compareByPrefix","elementASuffixMatch","compareFileNames","labelWithIconsRegex","renderLabelWithIcons","textStart","textStop","renderIcon","HighlightedLabel","supportIcons","highlights","didEverRender","escapeNewLines","highlight","extraClasses","setupCustomHover","hoverDelegate","htmlElement","markdownTooltip","hoverPreparation","hoverWidget","getTooltipForCustom","mouseOverDomEmitter","mouseMoveDomListener","tokenSource","mouseLeaveOrDown","isMouseDown","fromElement","mouseLeaveDomListener","mouseDownDownListener","targetElements","hoverOptions","hoverPosition","showHover","markdownNotSupportedFallback","resolvedTooltip","showPointer","FastLabelNode","_textContent","marginLeft","IconLabel","customHovers","labelContainer","nameContainer","descriptionContainer","supportHighlights","nameNode","LabelWithHighlights","Label","supportDescriptionHighlights","descriptionNodeFactory","strikethrough","setupHover","setLabel","descriptionNode","descriptionMatches","descriptionTitle","previousCustomHover","hoverDisposable","setupNativeHover","singleLabel","labelEscapeNewLines","labelStart","labelRange","splitMatches","IdGenerator","_prefix","_lastId","iconPathToClass","iconClassGenerator","getIconClass","iconPath","iconClass","nextId","KeybindingLabel","keyElements","labelBackground","labelForeground","labelBorder","labelBottomBorder","labelShadow","keybindingLabelShadow","areSame","getParts","renderPart","renderUnboundKeybindings","renderUnbound","renderKey","createKeyElement","extraClass","keyElement","ListElement","_onChecked","onChecked","ListElementRenderer","toDisposeElement","toDisposeTemplate","checkbox","row1","row2","keybindingContainer","detailContainer","actionBar","labelHighlights","descriptionHighlights","detailHighlights","saneDescription","iconClasses","saneLabel","saneDetail","cssClasses","alwaysVisible","fireButtonTriggered","QuickInputListFocus","ListElementDelegate","QuickInputList","inputElements","elementsToIndexes","matchOnDescription","matchOnDetail","matchOnLabel","matchOnMeta","sortByLabel","_onChangedAllVisibleChecked","onChangedAllVisibleChecked","_onChangedCheckedCount","onChangedCheckedCount","_onChangedVisibleCount","onChangedVisibleCount","_onChangedCheckedElements","onChangedCheckedElements","_onButtonTriggered","onButtonTriggered","_onLeave","onLeave","_fireCheckedEvents","elementDisposables","QuickInputAccessibilityProvider","createList","toggleCheckbox","focus1","focus2","allVisibleChecked","whenNoneVisible","fireCheckedEvents","saneMeta","meta","saneAriaLabel","codiconName","Next","First","Previous","Last","Second","NextPage","PreviousPage","currentSeparator","metaHighlights","alwaysShow","shownElements","normalizedSearchValue","elementA","elementB","labelHighlightsA","labelHighlightsB","compareEntries","getAllVisibleChecked","allChecked","getCheckedCount","getCheckedElements","StringStream","peek","_renderFormattedText","treeNode","actionHandler","renderCodeSegements","disposeables","nodeChild","parseFormattedText","parseCodeSegments","actionViewItemIndex","stream","eos","isEscapedFormatType","formatTagType","textCurrent","newCurrent","supportCodeSegments","defaultOpts","InputBox","contextViewProvider","_onDidHeightChange","onDidHeightChange","placeholder","validationOptions","validation","flexibleHeight","onfocus","onblur","flexibleMaxHeight","flexibleWidth","onSelectionChange","onAnchoredSelectionChange","anchorNode","updateScrollDimensions","showPlaceholderOnFocus","setPlaceHolder","setTooltip","oninput","onValueChange","ignoreGesture","updateMirror","actionbar","_hideMessage","_showMessage","placeHolder","disabled","horizontalPadding","cachedContentHeight","classForType","stylesForType","errorMsg","inputElement","showMessage","hideMessage","div","renderOptions","spanElement","formatContent","formattedText","renderFormattedText","previousHeight","QuickInputBox","inputBox","isSelectionAtEnd","setAriaLabel","password","CountBadge","badgeBorder","countFormat","titleFormat","setCount","CSS_DONE","CSS_ACTIVE","CSS_INFINITE","CSS_DISCRETE","ProgressBar","workedVal","showDelayedScheduler","bit","totalWork","doDone","delayed","Button","_onDidClick","buttonSecondaryForeground","buttonSecondaryBackground","buttonSecondaryHoverBackground","eventType","setHoverBackground","hoverBackground","backButton","QuickInput","ui","_busy","_ignoreFocusOut","_buttons","noValidationMessage","noPromptMessage","_severity","buttonsUpdated","onDidTriggerButtonEmitter","onDidHideEmitter","onDisposeEmitter","visibleDisposables","onDidHide","_title","_steps","_totalSteps","totalSteps","_contextKey","busy","ignoreFocusOut","shouldUpdate","_validationMessage","validationMessage","onDidTriggerButton","Other","getTitle","getDescription","description1","description2","busyDelay","progressBar","infinite","leftActionBar","leftButtons","rightActionBar","rightButtons","setEnabled","setContextKey","_lastValidationMessage","_lastSeverity","showMessageDecoration","getSteps","showDecoration","QuickPick","onDidChangeValueEmitter","onWillAcceptEmitter","onDidAcceptEmitter","onDidCustomEmitter","_items","itemsUpdated","_canSelectMany","_canAcceptInBackground","_matchOnDescription","_matchOnDetail","_matchOnLabel","_sortByLabel","_autoFocusOnList","_itemActivation","NONE","FIRST","_activeItems","activeItemsUpdated","activeItemsToConfirm","onDidChangeActiveEmitter","_selectedItems","selectedItemsUpdated","selectedItemsToConfirm","onDidChangeSelectionEmitter","onDidTriggerItemButtonEmitter","valueSelectionUpdated","_ok","_customButton","filterValue","onDidChangeValue","onWillAccept","onDidAccept","onDidChangeActive","onDidTriggerItemButton","_quickNavigate","quickNavigate","_placeholder","canSelectMany","canAcceptInBackground","autoFocusOnList","itemActivation","activeItems","selectedItems","keyMods","valueSelection","_valueSelection","showCustomButton","_customButtonLabel","_customButtonHover","showOkButton","_hideInput","hideInput","trySelectFirst","clearFocus","handleAccept","onDidCustom","focusedItems","setSelectedElements","checkedItems","registerQuickNavigation","inBackground","veto","visibilities","_hideCheckAll","checkBox","visibleCount","customButton","setVisibilities","DEFAULT_ARIA_LABEL","setElements","getVisibleCount","SECOND","LAST","setFocusedElements","setCheckedElements","customLabel","customHover","setComboboxAccessibility","QuickInputController","comboboxAccessibility","controller","onShowEmitter","onShow","onHideEmitter","idPrefix","registerKeyModsListeners","titleBar","headerContainer","setAllVisibleChecked","extraContainer","filterContainer","visibleCountContainer","countContainer","okContainer","onDidClick","customButtonContainer","getUI","getActiveDescendant","previousFocusElement","Blur","isDisplayed","stops","querySelectorAll","picks","onKeyMods","activeItem","createQuickPick","canPickMany","ignoreFocusLost","_activeItem","picked","oldController","didHide","backKeybindingLabel","updateLayout","focusChanged","returnFocus","titleBarOffset","MAX_WIDTH","countBadge","newStyles","DefaultQuickAccessFilterValue","IQuickInputService","QuickAccessRegistry","providers","defaultProvider","providerA","providerB","QuickAccessController","quickInputService","registry","mapProviderToDescriptor","lastAcceptedPickerValues","visibleQuickAccess","doShowOrPick","getOrInstantiateProvider","visibleDescriptor","preserveValue","picker","adjustValueSelection","newValueCandidateWithoutPrefix","defaultFilterValue","quickNavigateConfiguration","pickPromise","pickResolve","registerPickerListeners","provide","providerDescriptor","getQuickAccessProvider","QuickInputService","_controller","createController","_quickAccess","resetContextKeys","EditorScopedQuickInputServiceImpl","QuickInputEditorContribution","StandaloneQuickInputServiceImpl","mapEditorToService","newQuickInputService","activeService","quickAccess","QuickInputEditorWidget","getContribution","StaticServices","codeEditor","_serviceCollection","LazyStaticService","_serviceId","_factory","_all","configurationServiceImpl","resourceConfigurationService","resourcePropertiesService","contextService","labelService","dialogService","markerService","markerDecorationsService","storageService","DynamicStandaloneServices","ensure","withAllStandaloneServices","simpleEditorModelResolverService","setEditor","onDidCreateEditor","createDiffNavigator","getModelMarkers","onDidChangeMarkers","onDidCreateModel","onWillDisposeModel","createWebWorker","actualCreateWebWorker","colorizeElement","colorizeModelLine","getSafeTokenizationSupport","nullTokenize","tokenizationResult","defineTheme","remeasureFonts","clearCache","defValue","arrayToHash","createKeywordMatcher","caseInsensitive","compileRegExp","hadExpansion","createGuard","tkey","scrut","oppat","tester","pat","elemType","isArrayOf","inWords","patx","patexp","scrutinee","num","selectScrutinee","compileAction","newAction","stateNames","usesEmbedded","results","cases","_case","Rule","sregex","act","getEncodedLanguageId","lid","onLanguage","setLanguageConfiguration","EncodedTokenizationSupport2Adapter","TokenizationSupport2Adapter","adaptTokenize","tokenizeEncoded","previousStartIndex","scopes","actualResult","_toBinaryTokens","_toClassicTokens","isThenable","setColorMapOverride","setTokensProvider","isEncodedTokensProvider","registerPromise","setMonarchTokensProvider","languageDef","noThrow","lexerMin","addRules","newrules","newrule","setRegex","setAction","rule1","matchOnlyAtStart","registerReferenceProvider","registerRenameProvider","registerSignatureHelpProvider","registerHoverProvider","provideHover","registerDocumentSymbolProvider","registerDocumentHighlightProvider","registerLinkedEditingRangeProvider","registerDefinitionProvider","registerImplementationProvider","registerTypeDefinitionProvider","registerCodeLensProvider","registerCodeActionProvider","provideCodeActions","registerDocumentFormattingEditProvider","registerDocumentRangeFormattingEditProvider","registerOnTypeFormattingEditProvider","registerLinkProvider","registerCompletionItemProvider","registerColorProvider","registerFoldingRangeProvider","registerDeclarationProvider","registerSelectionRangeProvider","registerDocumentSemanticTokensProvider","registerDocumentRangeSemanticTokensProvider","registerInlineCompletionsProvider","registerInlayHintsProvider","ExtensionIdentifier","_lower","getRealAndSyntheticDocumentFormattersOrdered","formatter","provideDocumentFormattingEdits","provideDocumentRangeFormattingEdits","FormattingConflicts","_selectors","getDocumentRangeFormattingEditsUntilResult","workerService","rawEdits","getDocumentFormattingEditsUntilResult","getOnTypeFormattingEdits","autoFormatTriggerCharacters","provideOnTypeFormattingEdits","setFormatterSelector","api","globalAPI","ignoreDuplicateModules","__rest","__spreadArrays","il","jl","arraysEqual","array1","array2","createResolver","local","refs","newRefs","css","getParent","allowVirtualParents","_virtual","getVirtualParent","findElementRecursive","matchFunction","DATA_PORTAL_ATTRIBUTE","portalContainsElement","elementMatch","appendFunction","functions","initializeComponentRef","extendComponent","_onMount","_onUpdate","_onUnmount","_setComponentRef","componentRef","onError","_timeoutIds","_immediateIds","_intervalIds","_animationFrameIds","_onErrorHandler","clearImmediate","cancelAnimationFrame","timeoutId","_logError","immediateId","intervalId","throttle","wait","lastResult","lastArgs","waitMS","trailing","lastExecuteTime","userCall","waitLength","noOpFunction","maxWait","lastCallTime","markExecuted","executeImmediately","maxWaitDelta","maxWaitExpired","resultFunction","animationFrameId","animationFrameCallback","shallowCompare","filteredAssign","isAllowed","sourceObject","EventGroup","_uniqueId","_eventRecords","raise","eventArgs","bubbleEvent","retVal","_isElement","createEventObject","evObj","fireEvent","__events__","eventRecords","eventRecordList","objectCallback","isObserved","isDeclared","declaredEvents","__declaredEvents","onAll","eventRecord","processElementEvent","elementCallback","attachEvent","targetArrayLookup","targetArray","detachEvent","declare","CURRENT_ID_PROPERTY","resetIds","toObjectMap","baseElementEvents","baseElementProperties","htmlElementProperties","audioProperties","anchorProperties","buttonProperties","imgProperties","divProperties","getNativeProps","allowedPropNames","excludedPropNames","_makeSafe","_makeAllSafe","BaseComponent","_updateComponentRef","__disposables","__className","__async","__events","_resolveRef","refName","__resolves","currentProps","newProps","_warnDeprecations","deprecationMap","_warnMutuallyExclusive","mutuallyExclusiveMap","_warnConditionallyRequiredProps","requiredProps","conditionalPropName","_skipComponentRefResolution","classMethod","prototypeMethod","nullRender","DirectionalKeyCodes","mountCounters","setMountCounters","currValue","useFocusRects","disableFocusRects","_onPointerDown","IconType","ImageFit","ImageCoverStyle","ImageLoadState","FocusRects","which","mergeAriaAttributeValues","mergedAttribute","ariaAttributes","useMergedRefs","mergedCallback","SVG_REGEX","ImageBase","imageElement","onLoadingStateChange","onLoad","notLoaded","loadState","setLoadState","naturalWidth","naturalHeight","onImageLoaded","onImageError","useLoadState","imageProps","shouldFadeIn","shouldStartVisible","imageFit","maximizeFrame","coverStyle","previousLoadState","cover","centerContain","centerCover","landscape","portrait","computeCoverStyle","useCoverStyle","isLoaded","isLandscape","isCenter","center","isCenterContain","isCenterCover","isContain","isCover","isNone","none","isError","isNotImageFit","image","GlobalClassNames","rootMaximizeFrame","imageCenter","imageContain","imageCover","imageCenterContain","imageCenterCover","imageNone","imageLandscape","imagePortrait","Image","ImageFitStyles","supportsObjectFit","msMaxTouchPoints","fallbackObjectFitStyles","objectFit","MS_ICON","getIconContent","iconName","isRegistered","iconClassName","mergeImageProps","iconContent","nativeProps","accessibleName","containerProps","finalChildren","Icon","_onImageLoadingStateChange","imageLoadError","imageErrorAs","isPlaceholder","isImage","iconType","iconContentChildren","RootType","ImageType","finalIconContentChildren","imageContainer","ContextualMenuItemType","altText","hasName","imageNameProps","DirectionalHint","FocusZoneDirection","FocusZoneTabbableElements","elementContains","isContained","nextParent","focusFirstChild","getNextElement","targetToFocusOnNextRepaint","focusAsync","getPreviousElement","currentElement","checkNode","suppressParentTraversal","traverseChildren","includeElementsInFocusZones","allowFocusRoot","tabbable","isCurrentElementVisible","isElementVisible","isElementFocusZone","isElementFocusSubZone","childMatch","lastElementChild","isElementTabbable","childMatchSiblingMatch","childMatchParent","childMatchParentMatch","siblingMatch","suppressChildTraversal","visibilityAttribute","checkTabIndex","tabIndexAttributeValue","isFocusableAttribute","isTabIndexSet","shouldWrapFocus","noWrapDataAttribute","attribute","elementContainsAttribute","_scrollbarWidth","DATA_IS_SCROLLABLE_ATTRIBUTE","getScrollbarWidth","scrollDiv","findScrollableParent","startingElement","overflowY","focusZoneStyles","TABINDEX","NO_VERTICAL_WRAP","NO_HORIZONTAL_WRAP","LARGE_DISTANCE_FROM_CENTER","LARGE_NEGATIVE_DISTANCE_FROM_CENTER","raiseClickFromKeyboardEvent","bubbles","initMouseEvent","isMacResult","_allInstances","_outerZones","ALLOWED_INPUT_TYPES","ALLOW_VIRTUAL_ELEMENTS","_mergedRef","_portalContainsElement","newActiveElement","onActiveElementChanged","doNotAllowFocusEventToPropagate","stopFocusPropagation","onFocusNotification","shouldFocusInnerElementWhenReceivedFocus","defaultTabbableElement","isImmediateDescendant","_isImmediateDescendantOfZone","maybeElementToFocus","_activeElement","initialElementFocused","_setFocusAlignment","_updateTabIndexes","_setParkedFocus","_setActiveElement","isInnerZoneKeystroke","pagingSupportDisabled","shouldEnterInnerZone","isDefaultPrevented","_getDocument","_isInnerZone","innerZone","_getFirstInnerZone","focusElement","_shouldRaiseClicksOnSpace","_tryInvokeClickForFocusable","_preventDefaultWhenHandled","_moveFocusLeft","_moveFocusRight","_moveFocusUp","_moveFocusDown","_moveFocusPaging","allowTabKey","handleTabKey","_isElementInput","_processingTabKey","_shouldWrapFocus","shouldResetActiveElementWhenTabFromZone","_isContentEditableElement","_shouldInputLoseFocus","_shouldRaiseClicksOnEnter","_getHorizontalDistanceFromCenter","isForward","activeRect","targetRect","leftAlignment","_focusAlignment","targetRectTop","activeRectBottom","targetRectBottom","activeRectTop","shouldRaiseClicksFallback","shouldRaiseClicks","FocusZone","shouldRaiseClicksOnEnter","shouldRaiseClicksOnSpace","getOuterZones","_onKeyDownCapture","_windowElement","defaultActiveElement","shouldFocusOnMount","preventFocusRestoration","_lastIndexPath","elementToFocus","nextChild","getFocusableByIndexPath","_defaultFocusElement","elementType","rootProps","ariaDescribedBy","ariaLabelledBy","divProps","Tag","_evaluateFocusBeforeRender","elementRef","onMouseDownCapture","forceIntoFirstElement","ownerZoneElement","_getOwnerZone","ownerZone","forceAlignment","onBeforeFocus","shouldReceiveFocus","setFocusAlignment","point","focusedElement","shouldRestoreFocus","getElementIndexPath","isParked","_isParked","_parkedTabIndex","previousActiveElement","preventDefaultWhenHandled","_moveFocus","getDistanceFromCenter","useDefaultWrap","candidateDistance","candidateElement","changedFocus","isBidirectional","bidirectional","elementDistance","isCircularNavigation","targetTop","shouldWrap","scrollableParent","targetBottom","pagesize","isHorizontal","isVertical","childIndex","isRangeSelected","inputValue","isReadonly","shouldInputLoseFocusOnArrowKey","checkForNoWrap","isMac","RectangleEdge","getPropsWithDefaults","propsWithoutDefaults","getIsChecked","canCheck","hasSubmenu","subMenuProps","isItemDisabled","isDisabled","getMenuItemAriaRole","_createPositionData","targetEdge","alignmentEdge","isAuto","DirectionalDictionary","_isRectangleWithinBounds","_getOutOfBoundsEdges","outOfBounds","_getEdgeValue","edge","_setEdgeValue","_getCenterValue","_getFlankingEdges","positiveEdge","negativeEdge","_getRelativeEdgeValue","_getRelativeRectEdgeValue","_getRelativeEdgeDifference","hostRect","_moveEdge","maintainSize","difference","returnRect","_alignEdges","gap","_isEdgeInBounds","bounds","_getOutOfBoundsDegree","_adjustFitWithinBounds","bounding","positionData","directionalHintFixed","coverTarget","alignTargetEdge","elementEstimate","elementRectangle","directions","oobDegree","currentEstimate","currentEdge","currentAlignment","bestEdge","bestAlignment","currentOOBDegree","_estimatePosition","_flipToFit","fixedEdge","flippedElementEstimate","oppositeEdge","_flipAlignmentEdge","_alignOutOfBoundsEdges","outOfBoundsEdges","preserveEdge","edgeAttempt","forcedInBounds","_centerEdgeToPoint","elementToPosition","estimatedElementPosition","Rectangle","elementEdge","adjustedGap","_alignOppositeEdges","_finalizeReturnEdge","returnEdge","_calculateActualBeakWidthInPixels","beakWidth","sqrt","_getPositionData","directionalHint","directionalHintForRTL","previousPositions","positionInformation","getClosestEdge","targetCenter","boundingCenter","_positionElementWithinBounds","_finalizeBeakPosition","positionedBeak","actualElement","showBeak","targetRectangle","closestEdge","hideBeak","_positionBeak","beakTargetPoint","elementBounds","beakPosition","_getRectangleFromElement","_getRectangleFromIRect","_positionElementRelative","gapSpace","rectOrPoint","_getTargetRect","_getAlignmentData","positionedElement","_finalizePositionData","hostElement","doNotFinalizeReturnEdge","finalizedElement","forceWithinBounds","_finalizeElementPosition","_positionCallout","callout","isBeakVisible","positionProps","finalizedBeakPosition","positionCard","_positionCard","useConst","useAsync","useOnEvent","callbackRef","WindowContext","defaultFocusRestorer","originalElement","containsFocus","useRestoreFocus","onRestoreFocus","originalFocusedElement","currentActiveElement","doesElementContainFocus","documentContainsFocus","findSiblingNodes","Popup","mergedRootRef","isModalOrPanel","targetDocument","popupPortalNode","popupAncestorNode","currNode","findAncestorNode","useHideSiblingNodes","onDismiss","needsVerticalScrollBar","needsVerticalScrollBarState","setNeedsVerticalScrollBar","rootHeight","firstChildHeight","useScrollbarAsync","useTarget","previousTargetProp","targetRef","targetWindow","currentDoc","ANIMATIONS","BEAK_ORIGIN_POSITION","OFF_SCREEN_STYLE","ARIA_ROLE_ATTRIBUTES","DEFAULT_PROPS","preventDismissOnLostFocus","preventDismissOnScroll","preventDismissOnResize","minPagePadding","usePositions","calloutElement","getBounds","setPositions","positionAttempts","previousTarget","finalHeight","onPositioned","newPositions","positionCallout","newElementPosition","comparePositions","prevElementPositions","CalloutContentBase","calloutWidth","calloutMaxWidth","calloutMinWidth","doNotLayer","hideOverflow","calloutMaxHeight","onLayerMounted","setCalloutElement","calloutCallback","calloutEl","targetWindowResized","setTargetWindowResized","cachedBounds","currentBounds","getWindowSegments","_getBoundsFromTargetWindow","getBoundsFromTargetWindow","useBounds","setMaxHeight","isForcedInBounds","topBounds","bottomBounds","useMaxHeight","dismissOnTargetClick","shouldDismissOnWindowFocus","preventDismissOnEvent","isMouseDownOnPopup","mouseDownHandlers","positionsExists","dismissOnScroll","dismissOnClickOrScroll","dismissOnResize","dismissOnLostFocus","isEventTargetOutsideCallout","dismissOnTargetWindowBlur","disposablesPromise","useDismissHandlers","mouseDownOnPopup","mouseUpOnPopup","setInitialFocus","hasPositions","useAutoFocus","overflowYHidden","beakVisible","overflowStyle","visibilityStyle","beak","getBeakPosition","beakCurtain","calloutMain","previousProps","shouldUpdateWhenHidden","beakPositionStyle","newElementPositions","oldPositionEdge","newPositionEdge","getBeakStyle","CalloutContent","boxSizing","overflowX","mergeSettings","oldSettings","mergeSettingsWith","_isSettingsFunction","_settingsMergeWith","mergeScopedSettings","scopedSettingsFromProps","oldScopedSettings","newScopedSettings","_scopedSettingsMergeWith","_onCustomizationChange","contextTransform","parentContext","mergeCustomizations","getFabricTheme","FabricBase","applyTheme","applyThemeToBody","bodyThemed","useApplyThemeToBody","Root","contextDir","pageDir","componentDir","rootDir","needsTheme","renderedContent","useRenderedContent","inheritFont","Fabric","_defaultHostSelector","_layersByHostId","filteredEventProps","LayerBase","mergedRef","layerRef","needRaiseLayerMount","setNeedRaiseLayerMount","eventBubblingEnabled","hostId","onLayerDidMount","onLayerWillUnmount","insertFirst","isNotHost","getHost","getElementById","defaultHostSelector","removeLayerElement","createLayerElement","virtualChild","virtualParent","oldParent","setVirtualParent","registerLayer","unregisterLayer","onFilterEvent","getFilteredEvents","eventPhase","BUBBLING_PHASE","rootNoHost","Callout","layerProps","KeytipEvents","iconProps","renderItemIcon","onRenderIcon","onCheckmarkClick","isItemChecked","checkmarkIcon","secondaryText","submenuIconProps","subMenuIcon","openSubMenu","getSubmenuTarget","submenuTarget","dismissSubMenu","dismissMenu","dismissAll","renderContent","onRenderContent","_renderLayout","linkContentMenu","linkContent","renderCheckMarkIcon","renderItemName","renderSecondaryText","renderSubMenuIcon","defaultRenders","divider","CONTEXTUAL_MENU_ITEM_HEIGHT","MediumScreenSelector","ScreenWidthMinLarge","getItemHighContrastStyles","forcedColorAdjust","MsHighContrastAdjust","getMenuItemStyles","ContextualMenuItemBackgroundHoverColor","ContextualMenuItemTextHoverColor","ContextualMenuItemBackgroundSelectedColor","ContextualMenuItemDividerColor","rootDisabled","rootHovered","rootFocused","rootChecked","rootPressed","rootExpanded","anchorLink","textRendering","wordSpacing","textTransform","textIndent","textShadow","verticalAlign","flexGrow","textOverflow","minHeight","flexShrink","iconColor","iconDisabled","splitButtonFlexContainer","flexWrap","CONTEXTUAL_SPLIT_MENU_MINWIDTH","getSplitButtonVerticalDividerClassNames","isExpanded","splitMenu","screenReaderText","isAnchorLink","knownIcon","itemClassName","dividerClassName","subMenuClassName","primaryDisabled","splitPrimary","flexBasis","splitContainer","getItemStyles","ContextualMenuItem","_onItemMouseEnter","onItemMouseEnter","currentTarget","_onItemClick","onItemClickBase","_onItemMouseLeave","onItemMouseLeave","_onItemKeyDown","onItemKeyDown","_onItemMouseMove","onItemMouseMove","_getSubmenuTarget","shouldComponentUpdate","DATAKTP_TARGET","DATAKTP_EXECUTE_TARGET","KEYTIP_ADDED","KEYTIP_REMOVED","KEYTIP_UPDATED","PERSISTED_KEYTIP_ADDED","PERSISTED_KEYTIP_REMOVED","PERSISTED_KEYTIP_EXECUTE","ENTER_KEYTIP_MODE","EXIT_KEYTIP_MODE","keytips","persistedKeytips","sequenceMapping","inKeytipMode","shouldEnterKeytipMode","delayUpdatingKeytipChange","keytipProps","persisted","addParentOverflow","keySequences","uniqueKeytip","_getUniqueKtp","uniqueID","keytip","newKeytipProps","oldKeyTip","unregister","keytipToRemove","enterKeytipMode","exitKeytipMode","getKeytips","fullSequence","parentKeytip","overflowSetSequence","menuExecute","overflowButtonSequences","keytipSequences","KeytipManager","sequencesToID","prevValue","keySequence","useKeytipData","keytipManager","prevOptions","nativeKeytipProps","keytipId","describedByPrepend","describedby","getAriaDescribedBy","overflowKeySequences","overflowSequenceLen","overflowSequence","itemToAdd","addElementAtIndex","mergeOverflows","getKeytipData","_anchor","_getMemoizedMenuButtonKeytipProps","hasMenu","onItemClick","_renderAriaDescription","ariaDescription","_ariaDescriptionId","focusableElementIndex","totalItemCount","hasCheckmarks","hasIcons","contextualMenuItemAs","ChildrenRenderer","expandedMenuItemKey","anchorRel","rel","itemHasSubmenu","itemProps","ariaDescribedByIds","additionalItemProperties","keytipAttributes","VerticalDividerBase","deprecatedGetClassNames","getClassNames","VerticalDivider","names","_executeItemClick","_splitButton","_onItemMouseEnterPrimary","_onItemMouseEnterIcon","_onItemMouseMovePrimary","_onItemMouseMoveIcon","_onIconItemClick","executeItemClick","_processingTouch","_onTouchStart","_handleTouchAndPointerEvent","stopImmediatePropagation","_async","_events","splitButton","_renderSplitPrimaryButton","_renderSplitDivider","_renderSplitIconButton","itemComponentProps","getDividerClassNames","onItemMouseDown","buttonProps","_lastTouchTimeoutId","_btn","defaultRole","buttonNativeProperties","itemRole","itemButtonProperties","useId","providedId","REACT_LIFECYCLE_EXCLUSIONS","ResponsiveMode","_updateComposedComponentRef","composedComponentInstance","_composedComponentInstance","_hoisted","exclusions","hoisted","hoistMethods","hoistStatics","_defaultMode","_lastMode","RESPONSIVE_MAX_CONSTRAINT","getInitialResponsiveMode","getResponsiveMode","currentWindow","responsiveMode","MenuContext","getContextualMenuItemClassNames","getSubmenuItems","_getMenuItemStylesFunction","useSubMenuState","dismiss","setExpandedMenuItemKey","setSubmenuTarget","expandedByMouseClick","setExpandedByMouseClick","subMenuId","closeSubMenu","openedByMouseClick","submenuItemKey","onSubMenuDismiss","isMountedRef","useOnSubmenuDismiss","findItemByKeyFromItems","submenuProps","isSubMenu","shouldFocusOnContainer","useKeyHandlers","focusZoneProps","focusZoneDirection","lastKeyDownWasAltOrMeta","keyHandler","shouldHandleKey","dismissAllMenus","handled","shouldHandleKeyDown","submenuCloseKey","shouldCloseSubMenu","isAltOrMeta","shouldHandleKeyUp","keyPressIsAltOrMetaAlone","hasModifier","isUp","isDown","getFirstFocusable","openKey","ContextualMenuBase","asyncTracker","tryFocusPreviousActiveElement","usePreviousActiveElement","getSubmenuProps","delayUpdateFocusOnHover","shouldUpdateFocusOnMouseEvent","gotMouseMove","onMenuFocusCapture","useShouldUpdateFocusOnMouseMove","isScrollIdle","scrollIdleTimeoutId","useScrollHandler","subMenuHoverDelay","enterTimerRef","cancelSubMenuTimer","onTimerExpired","useSubmenuEnterTimer","startSubmenuTimer","subMenuEntryTimer","overrideResponsiveMode","lastResponsiveMode","setLastResponsiveMode","onResize","newResponsiveMode","onMenuDismissed","onMenuOpened","previousHidden","onMenuOpenedRef","onMenuClosedRef","propsRef","useVisibility","onMenuKeyDown","shouldIgnoreMouseEvent","updateFocusOnMouseEvent","nativeEvent","shouldDismiss","setActive","useMouseHandlers","onItemMouseEnterBase","onItemMouseMoveBase","onMouseItemLeave","onAnchorClick","onDefaultRenderMenuList","menuListProps","menuClassNames","defaultRender","indexCorrection","renderMenuItem","itemType","Divider","Header","indexIncrease","customOnRenderListLength","itemClassNames","renderedItems","getItemClassNames","subMenuIconClassName","itemStyleProps","renderSeparator","headerItem","renderHeaderMenuItem","renderListItem","Section","renderSectionItem","renderNormalItem","sectionItem","sectionProps","groupProps","headerContextualMenuItem","ariaLabelledby","topDivider","contextualMenuItem","itemsIndex","bottomDivider","fromSection","onRender","commonProps","divHtmlProperties","labelElementId","useTargetWidth","useTargetAsMinWidth","calloutProps","onRenderSubMenu","onDefaultRenderSubMenu","onRenderMenuList","getMenuClassNames","itemsHaveIcons","contextualMenuItems","contextMenuStyle","adjustedFocusZoneProps","submenuItem","canAnyMenuItemsCheck","targetAsHtmlElement","targetWidth","itemCount","menuContext","onFocusCapture","renderFocusZone","defaultMenuItemRenderer","isopen","LocalContextualMenu","listStyleType","userSelect","ContextualMenu","ButtonGlobalClassNames","msButton","msButtonHasMenu","msButtonIcon","msButtonMenuIcon","msButtonLabel","msButtonDescription","msButtonScreenReaderText","msButtonFlexContainer","msButtonTextContainer","getBaseButtonClassNames","variantClassName","menuIconClassName","isSplit","iconExpandedHovered","menuIconExpandedHovered","rootExpandedHovered","rootHasMenu","labelHovered","iconHovered","descriptionHovered","menuIconHovered","iconPressed","descriptionPressed","menuIconPressed","rootCheckedDisabled","rootCheckedHovered","rootCheckedPressed","flexContainer","textContainer","iconExpanded","iconChecked","labelChecked","labelDisabled","menuIconChecked","menuIconDisabled","menuIconExpanded","descriptionChecked","descriptionDisabled","splitButtonMenuButton","splitButtonMenuButtonExpanded","splitButtonMenuButtonDisabled","splitButtonMenuButtonChecked","splitButtonMenuFocused","splitButtonContainer","splitButtonContainerChecked","splitButtonContainerCheckedHovered","splitButtonContainerHovered","splitButtonContainerFocused","splitButtonContainerDisabled","splitButtonMenuIcon","splitButtonMenuIconDisabled","splitButtonDivider","splitButtonDividerDisabled","_buttonElement","_splitButtonContainer","_renderedVisibleMenu","_onRenderIcon","_classNames","_onRenderTextContents","onRenderText","_onRenderText","onRenderDescription","_onRenderDescription","_hasText","_labelId","_onRenderChildren","_descriptionId","_onRenderAriaDescription","_onRenderMenuIcon","menuIconProps","_onRenderMenu","menuProps","persistMenu","menuHidden","MenuType","menuAs","_menuShouldFocusOnContainer","_menuShouldFocusOnMount","_isSplitButton","_onDismissMenu","_dismissMenu","_openMenu","_onToggleMenu","_onSplitContainerFocusCapture","_onSplitButtonPrimaryClick","_onMenuClick","_onMenuKeyDown","_onKeyPress","onKeyPress","_onClick","_onSplitButtonContainerKeyDown","click","_isValidMenuOpenKey","onMenuClick","ariaHidden","allowDisabledFocus","isPrimaryButtonDisabled","renderAsAnchor","resolvedAriaLabel","dataIsFocusable","isCheckboxTypeRole","checkedOrPressedValue","_onRenderSplitButtonContent","_onRenderContent","onAfterMenuDismiss","openMenu","onRenderAriaDescription","onRenderChildren","onRenderMenu","onRenderMenuIcon","_shouldRenderMenu","Content","renderPersistedMenuHiddenOnMount","getSplitButtonClassNames","primaryActionButtonProps","SplitButton","_onRenderSplitButtonMenuButton","_onRenderSplitButtonDivider","splitButtonMenuProps","splitButtonAriaLabel","splitButtonProps","BaseButton","menuTriggerKeyCode","baseClassName","noOutline","iconStyle","buttonHighContrastFocus","customStyles","splitButtonDividerBaseStyles","borderTopRightRadius","borderBottomRightRadius","borderRight","borderRightWidth","borderLeftWidth","borderLeft","marginTop","marginRight","marginBottom","baseButtonStyles","splitButtonStyles","concatStyles","IconButton","ComposedComponent","resultClass","_styleCache","_onSettingChanged","componentProps","mergedStyles","getRandomValues","crypto","msCrypto","rnds8","uuid","REGEX","byteToHex","v4","rnds","strWindow","strJSON","strMsie","strTrident","strXMLHttpRequest","_isTrident","_navUserAgentCheck","_enableMocks","_useXDomainRequest","_beaconsSupported","_hasProperty","listenerFuncs","_aiNamespace","_listenerProxyFunc","_sanitizeDiagnosticText","_logToConsole","_getLogger","_canUseLocalStorage","_canUseSessionStorage","_getLocalStorageObject","_getVerifiedStorageObject","storageType","_getSessionStorageObject","DataPoint","strError","strStack","strStackDetails","strErrorSrc","strMessage","strDescription","_stringify","convertToString","_formatMessage","theEvent","errorType","_isStackDetails","details","_convertStackObj","errorStack","_getStackFromErrorObj","errorObj","_getErrorType","stackDetails","strToGMTString","strToUTCString","strCookie","strExpires","strEnabled","strIsCookieUseDisabled","strDisableCookiesUsage","strConfigCookieMgr","_supportsCookies","_allowUaSameSite","_parsedCookieValue","_doc","_cookieCache","_globalCookieConfig","_isMgrEnabled","cookieMgr","rootConfig","_extractParts","theValue","_formatDate","theDate","_formatCookieValue","_getCookieValue","_setCookieValue","cookieValue","UInt32Mask","MaxUInt32","_mwcSeeded","_mwcW","_mwcZ","_mwcSeed","seedValue","_autoSeedMwc","instanceName","_dataUid","_canAcceptData","_getCache","strAttachEvent","strAddEventHelper","strDetachEvent","strRemoveEventListener","strEvents","strVisibilityChangeEvt","strPageHide","strUnload","strBeforeUnload","strPageHideNamespace","createUniqueNamespace","rRemoveEmptyNs","rRemoveTrailingEmptyNs","_guid","elmNodeData","createElmNodeData","eventNamespace","_normalizeNamespace","_getEvtNamespace","evtNamespace","_getRegisteredEvents","evtName","addDefault","_doDetach","handlerRef","_doUnregister","unRegFn","_addEventListeners","excludeEvents","_canUseCookies","_cookieMgrs","DEFAULT_VERSION","INVALID_VERSION","INVALID_TRACE_ID","INVALID_SPAN_ID","invalidValue","_formatValue","_formatFlags","_htmlAnchorIdx","_htmlAnchorElement","_internalEndpoints","strExecutionContextKey","strParentContextKey","strChildrenContextKey","_defaultPerfManager","doPerfActiveKey","pluginStateData","strTelemetryPluginChain","strHasRunFlags","strGetTelCtx","_chainId","_createInternalContext","telemetryChain","core","startAt","aiInstrumentHooks","cbNames","_arrLoop","_doCallbacks","hooks","callDetails","cbArgs","hookCtx","_getOwner","checkPrototype","_createInstrumentHook","aiHook","strGetPlugin","MAX_DURATION_ALLOWED","botAgentNames","_isPerformanceTimingSupported","_isPerformanceTimingDataReady","_getPerformanceTiming","_getPerformanceNavigationTiming","_shouldCollectDuration","_dispatchEvent","evnt","_configMilliseconds","_getDefaultConfig","_updateStorageUsage","extConfig","_aiNameFunc","baseName","_aiApplication","_aiDevice","_aiLocation","_aiOperation","_aiSession","_aiUser","_aiCloud","_aiInternal","Data","strBaseType","strBaseData","strProperties","strTrue","_setValueIf","_extractPropsAndMeasurements","measurements","_convertPropsUndefinedToCustomDefinedValue","customUndefinedValue","_createEnvelope","envelopeType","telemetryItem","EnvelopeCreatorInit","_disableEvents","_getDefaultAppInsightsChannelConfig","EnvelopeTypeCreator","_addChannelQueue","channelQueue","strValidationError","strNotificationManager","strSdkUnloadingError","defaultInitConfig","_createPerfManager","notificationMgr","_isPluginPresent","thePlugin","plugins","channelPriority","allExtensions","_runListeners","isAsync","_calcPerfDuration","resourceEntry","_setPerfDuration","_setPerfValue","ajaxData","AJAX_MONITOR_PREFIX","strDiagLog","strAjaxData","strFetch","_markCount","_getFailedAjaxDiagnosticsMessage","xhr","_throwInternalCritical","ajaxMonitorInstance","msgId","isUserAct","_throwInternalWarning","_createErrorCallbackFunc","internalMessage","_indexOf","Application","Device","Location","Session","_validateUserInput","strExt","strTags","_removeEmpty","_internalSdkSrc","_AUTHENTICATED_USER_CONTEXT","_TRACK","_ignoreUpdateSnippetProperties","SpinnerSize","SpinnerType","isRendered","_timeoutId","ariaLive","labelPosition","statusMessage","styleSize","circle","spinAnimation","flexDirection","borderTopColor","animationIterationCount","packagesCache","_win","setVersion","packageName","packageVersion","packages","__packages__","for","u","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","updater","G","H","I","isPureReactComponent","J","K","L","__self","__source","M","_owner","O","Q","R","keyPrefix","S","U","V","W","aa","X","Y","Z","ba","ReactCurrentDispatcher","ReactCurrentBatchConfig","suspense","ReactCurrentOwner","IsSomeRendererActing","toArray","Fragment","Profiler","PureComponent","StrictMode","Suspense","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","createFactory","createRef","isValidElement","lazy","_ctor","_status","useDebugValue","useImperativeHandle","useLayoutEffect","useMemo","useReducer","da","ea","fa","ha","ia","la","ma","na","oa","pa","qa","ra","sa","extractEvents","eventTypes","phasedRegistrationNames","registrationName","va","wa","dependencies","xa","ya","za","Aa","Ba","Ca","stateNode","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","Ua","Va","xlinkHref","Wa","Xa","Sa","Ta","Ra","setAttributeNS","Ya","Za","$a","ab","db","eb","fb","gb","hb","ib","jb","lb","mb","nb","pb","qb","_debugOwner","_debugSource","fileName","return","rb","xb","_valueTracker","stopTracking","tb","yb","zb","defaultChecked","_wrapperState","initialChecked","Ab","controlled","Bb","Cb","Db","Eb","Gb","Fb","Hb","selected","defaultSelected","Ib","dangerouslySetInnerHTML","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","namespaceURI","MSApp","execUnsafeLocalFunction","Rb","Sb","Tb","animationend","animationiteration","animationstart","transitionend","Ub","Vb","Wb","animation","transition","Xb","Yb","Zb","$b","ac","bc","cc","dc","alternate","effectTag","ec","memoizedState","dehydrated","fc","sibling","gc","ic","jc","kc","lc","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","mc","nc","correspondingUseElement","oc","pc","qc","topLevelType","targetInst","ancestors","rc","eventSystemFlags","sc","containerInfo","tc","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Kc","blockedOn","Lc","pointerId","Mc","Nc","Pc","unstable_runWithPriority","hydrate","Qc","Rc","Sc","Tc","Uc","unstable_scheduleCallback","unstable_NormalPriority","Vc","Wc","Yc","Zc","$c","ad","bubbled","captured","eventPriority","bd","cd","dd","unstable_UserBlockingPriority","fd","gd","hd","Oc","jd","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flex","flexPositive","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","orphans","widows","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","kd","ld","md","nd","menuitem","br","embed","img","keygen","param","track","wbr","od","pd","qd","rd","sd","td","ud","vd","wd","compareDocumentPosition","xd","HTMLIFrameElement","contentWindow","yd","contentEditable","Bd","Cd","Dd","Ed","Fd","autoFocus","Gd","__html","Hd","Id","Jd","Kd","Ld","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","dispatchConfig","Ud","_targetInst","Vd","Wd","Xd","Yd","Zd","$d","ae","be","ce","Interface","ee","eventPool","fe","destructor","de","getPooled","persist","timeStamp","extend","ge","ie","je","ke","documentMode","le","me","ne","oe","beforeInput","compositionUpdate","pe","qe","se","ve","te","ue","we","date","datetime","email","month","tel","week","xe","ye","ze","Ae","Be","Ce","De","Ee","Fe","Ge","He","Ie","Je","Ke","Le","Me","_isInputEventSupported","Ne","Oe","Control","Meta","Pe","getModifierState","Qe","Re","Se","Te","Ue","Ve","screenX","screenY","movementX","movementY","We","pressure","tangentialPressure","tiltX","tiltY","twist","isPrimary","Xe","mouseEnter","mouseLeave","pointerEnter","pointerLeave","Ye","parentWindow","$e","af","bf","cf","df","ef","ff","gf","hf","jf","anchorOffset","focusNode","focusOffset","kf","onSelect","pseudoElement","mf","nf","pf","Esc","Spacebar","Del","Win","Apps","Scroll","MozPrintableKey","qf","rf","sf","tf","touches","uf","vf","deltaZ","wf","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","yf","zf","Af","Bf","Cf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Df","Ef","Ff","Gf","__reactInternalMemoizedMergedChildContext","Hf","If","Jf","Kf","unstable_cancelCallback","Lf","unstable_requestPaint","Mf","unstable_now","Nf","unstable_getCurrentPriorityLevel","Of","unstable_ImmediatePriority","Pf","Qf","Rf","unstable_LowPriority","Sf","unstable_IdlePriority","Tf","Uf","unstable_shouldYield","Vf","Wf","Xf","Yf","Zf","$f","ag","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","childExpirationTime","qg","firstContext","expirationTime","rg","sg","responders","tg","ug","updateQueue","baseState","baseQueue","shared","vg","wg","suspenseConfig","xg","yg","zg","ca","Ag","Bg","Cg","Dg","Eg","Fg","Jg","_reactInternalFiber","Gg","Hg","Ig","Kg","Lg","Mg","Ng","Og","Pg","_stringRef","Qg","Rg","lastEffect","nextEffect","firstEffect","Sg","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","dh","eh","fh","gh","hh","memoizedProps","revealOrder","ih","responder","jh","kh","lh","mh","nh","oh","ph","qh","rh","sh","uh","vh","wh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","dispatch","xh","yh","zh","Ah","destroy","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","readContext","useResponder","useDeferredValue","useTransition","Oh","Ph","Qh","Rh","Sh","Th","pendingProps","Uh","Vh","Wh","Xh","Yh","Zh","$h","ci","di","ei","fi","gi","pendingContext","ni","pi","qi","ii","retryTime","ji","fallback","unstable_avoidThisFallback","ki","li","isBackwards","rendering","renderingStartTime","tailExpiration","tailMode","mi","ri","si","wasMultiple","ti","wi","xi","yi","zi","Ai","Bi","WeakSet","Ci","Fi","Ei","Gi","__reactInternalSnapshotBeforeUpdate","Hi","Ii","Ji","Ki","Li","Di","Mi","Ni","Oi","Pi","Qi","Ri","_reactRootContainer","Si","Ti","Ui","Vi","Wi","Xi","Yi","Zi","$i","componentDidCatch","aj","componentStack","Rj","bj","cj","dj","fj","gj","kj","lj","mj","nj","oj","qj","rj","sj","tj","uj","vj","wj","timeoutMs","xj","yj","zj","lastExpiredTime","Aj","firstPendingTime","lastPingedTime","nextKnownPendingLevel","callbackExpirationTime","callbackPriority","callbackNode","Bj","Cj","Dj","Ej","Fj","Gj","Hj","finishedWork","finishedExpirationTime","lastSuspendedTime","Ij","timeoutHandle","Jj","busyMinDurationMs","busyDelayMs","Kj","Mj","Nj","pingCache","Oj","ub","Pj","Xc","Qj","Sj","firstSuspendedTime","rangeCount","wb","activeElementDetached","focusedElem","selectionRange","Tj","removeAllRanges","addRange","vb","Uj","Vj","Wj","ob","Xj","unstable_observedBits","Zj","pendingChildren","ak","bk","ck","dk","ek","fk","Jc","_internalRoot","gk","ik","hk","jk","unmount","form","Lj","lk","Events","findFiberByHostInstance","supportsFiber","inject","onCommitFiberRoot","onCommitFiberUnmount","Yj","overrideHookState","overrideProps","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","bundleType","rendererPackageName","createPortal","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","MessageChannel","unstable_forceFrameRate","port2","port1","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","jsx","jsxs","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propFullName","secret","getShim","ReactPropTypes","bigint","instanceOf","objectOf","checkPropTypes","typeOf","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Lazy","Portal","isValidElementType","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","_addClass","_removeClass","addClass","removeClass","removeClasses","reflowAndAddClass","appearClassName","doneClassName","enterClassName","isStringClassNames","_this$getClassNames6","_hasClass","baseVal","replaceClassName","origClass","classToRemove","_args","handleEnter","handleLifecycle","handleEntering","handleEntered","_len4","_key4","handleExit","_len5","_key5","handleExiting","_len6","_key6","_len7","_key7","originalArgs","_child$props","inProp","_React$Children$toArr","mergeChildMappings","getProp","nextChildMapping","hasPrev","prevChild","isLeaving","mapFn","mapper","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","maxChunkLength","len2","encodeChunk","lookup","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","LN2","__webpack_amd_options__","MessageBuffer","asciiDecoder","emptyBuffer","_encoding","TextEncoder","AbstractMessageBuffer","ReadableStreamWrapper","socket","arrayBuffer","WritableStreamWrapper","send","_textEncoder","_ril","messageBuffer","applicationJson","charset","decoder","asReadableStream","asWritableStream","ms","RIL","_totalLength","toAppend","chunkIndex","chunkBytesRead","byteCount","asNative","allocNative","chunkPart","_construct","onClose","onPartialMessage","ResolvedMessageReaderOptions","errorEmitter","closeEmitter","partialMessageEmitter","asError","fromOptions","contentDecoder","contentTypeDecoder","contentDecoders","contentTypeDecoders","readable","_partialMessageTimeout","nextMessageLength","messageToken","partialMessageTimer","onData","fireClose","tryReadHeaders","contentLength","tryReadBody","setPartialMessageTimer","clearPartialMessageTimer","firePartialMessage","waitingTime","semaphore_1","ResolvedMessageWriterOptions","contentTypeEncoder","contentEncoder","writeSemaphore","Semaphore","doWrite","_active","_waiting","thunk","runNext","doRunNext","CancelNotification","ProgressNotification","linkedMap_1","StarRequestHandler","Off","Messages","Verbose","Text","ConnectionState","cancelUndispatched","Message","createCancellationTokenSource","sendCancellation","conn","sendNotification","sender","cancellationStrategy","messageReader","messageWriter","_logger","tracer","sequenceNumber","notificationSquenceNumber","unknownResponseSquenceNumber","starRequestHandler","requestHandlers","starNotificationHandler","notificationHandlers","progressHandlers","messageQueue","responsePromises","requestTokens","traceFormat","New","unhandledNotificationEmitter","unhandledProgressEmitter","disposeEmitter","createRequestQueueKey","addMessageToQueue","_message","isListening","Listening","isClosed","Disposed","closeHandler","triggerMessageQueue","resultOrError","jsonrpc","toJson","traceSendingResponse","replyError","replySuccess","logLSPMessage","traceReceivedRequest","requestHandler","tokenKey","cancellationSource","handlerResult","parameterStructures","handleRequest","notificationHandler","traceReceivedNotification","handleNotification","responseMessage","responsePromise","timerStart","traceReceivedResponse","handleResponse","responseHandler","handleInvalidMessage","processMessageQueue","toCancel","strategy","response","traceSendingRequest","traceSendingNotification","lspMessage","isLSPMessage","throwIfClosedOrDisposed","throwIfNotListening","undefinedToNull","nullToUndefined","isNamedParam","computeSingleParam","computeMessageParams","connection","messageParams","paramStart","paramEnd","notificationMessage","onNotification","onProgress","sendProgress","onUnhandledProgress","sendRequest","onRequest","_tracer","sendNotificationOrTraceOptions","_sendNotification","_traceFormat","onUnhandledNotification","onDispose","AlreadyListening","throwIfListening","verbose","arrayWithoutHoles","iterableToArray","nonIterableSpread","Touch","AsOld","AsNew","superPropBase","iterableToArrayLimit","LSPErrorCodes","lspReservedErrorRangeStart","ContentModified","RequestCancelled","lspReservedErrorRangeEnd","integer","uinteger","LocationLink","ColorInformation","ColorPresentation","FoldingRange","DiagnosticRelatedInformation","DiagnosticSeverity","DiagnosticTag","CodeDescription","Diagnostic","TextEdit","ChangeAnnotation","ChangeAnnotationIdentifier","AnnotatedTextEdit","TextDocumentEdit","CreateFile","RenameFile","DeleteFile","WorkspaceEdit","MIN_VALUE","objectLiteral","two","three","four","defined","targetUri","targetRange","targetSelectionRange","originSelectionRange","numberRange","additionalTextEdits","typedArray","Information","Unnecessary","Deprecated","codeDescription","del","needsConfirmation","annotation","annotationId","textDocument","OptionalVersionedTextDocumentIdentifier","ignoreIfExists","ignoreIfNotExists","documentChanges","TextDocumentIdentifier","VersionedTextDocumentIdentifier","TextDocumentItem","MarkupKind","MarkupContent","InsertTextFormat","InsertReplaceEdit","InsertTextMode","CompletionItem","CompletionList","MarkedString","Hover","ParameterInformation","SignatureInformation","DocumentHighlight","SymbolInformation","DocumentSymbol","CodeActionKind","CodeActionContext","CodeAction","CodeLens","FormattingOptions","DocumentLink","SelectionRange","TextEditChangeImpl","changeAnnotations","assertChangeAnnotations","manage","ChangeAnnotations","annotations","_annotations","idOrAnnotation","WorkspaceChange","workspaceEdit","_textEditChanges","_workspaceEdit","_changeAnnotations","textEditChange","initDocumentChanges","getTextEditChange","textDocumentEdit","initChanges","createFile","optionsOrAnnotation","renameFile","deleteFile","PlainText","Markdown","Method","Field","Variable","Module","Property","Unit","Value","Enum","Keyword","Snippet","File","Reference","Folder","EnumMember","Constant","Struct","Operator","TypeParameter","asIs","adjustIndentation","isIncomplete","fromPlainText","plainText","documentation","parameters","Read","Write","Package","Key","Null","containerName","deprecated","QuickFix","Refactor","RefactorExtract","RefactorInline","RefactorRewrite","Source","SourceOrganizeImports","SourceFixAll","diagnostics","kindOrCommandOrEdit","checkKind","isPreferred","TextDocument","mergeSort","leftIdx","rightIdx","FullTextDocument","sortedEdits","lastModifiedOffset","_languageId","_version","_lineOffsets","getLineOffsets","lineOffsets","isLineStart","lineOffset","nextLineOffset","DocumentLinkRequest","CodeLensRefreshRequest","CodeLensResolveRequest","CodeLensRequest","WorkspaceSymbolRequest","CodeActionResolveRequest","CodeActionRequest","DocumentSymbolRequest","DocumentHighlightRequest","ReferencesRequest","DefinitionRequest","SignatureHelpRequest","HoverRequest","CompletionResolveRequest","CompletionRequest","PublishDiagnosticsNotification","WatchKind","FileChangeType","DidChangeWatchedFilesNotification","WillSaveTextDocumentWaitUntilRequest","WillSaveTextDocumentNotification","TextDocumentSaveReason","DidSaveTextDocumentNotification","DidCloseTextDocumentNotification","DidChangeTextDocumentNotification","TextDocumentContentChangeEvent","DidOpenTextDocumentNotification","TextDocumentSyncKind","TelemetryEventNotification","LogMessageNotification","ShowMessageRequest","ShowMessageNotification","MessageType","DidChangeConfigurationNotification","ExitNotification","ShutdownRequest","InitializedNotification","InitializeError","InitializeRequest","WorkDoneProgressOptions","TextDocumentRegistrationOptions","StaticRegistrationOptions","FailureHandlingKind","ResourceOperationKind","UnregistrationRequest","RegistrationRequest","DocumentSelector","DocumentFilter","MonikerRequest","MonikerKind","UniquenessLevel","WillDeleteFilesRequest","DidDeleteFilesNotification","WillRenameFilesRequest","DidRenameFilesNotification","WillCreateFilesRequest","DidCreateFilesNotification","FileOperationPatternKind","LinkedEditingRangeRequest","ShowDocumentRequest","SemanticTokensRegistrationType","SemanticTokensRefreshRequest","SemanticTokensRangeRequest","SemanticTokensDeltaRequest","SemanticTokensRequest","TokenFormat","SemanticTokens","SemanticTokenModifiers","SemanticTokenTypes","CallHierarchyPrepareRequest","CallHierarchyOutgoingCallsRequest","CallHierarchyIncomingCallsRequest","WorkDoneProgressCancelNotification","WorkDoneProgressCreateRequest","WorkDoneProgress","SelectionRangeRequest","DeclarationRequest","FoldingRangeRequest","ColorPresentationRequest","DocumentColorRequest","ConfigurationRequest","DidChangeWorkspaceFoldersNotification","WorkspaceFoldersRequest","TypeDefinitionRequest","ImplementationRequest","ApplyWorkspaceEditRequest","ExecuteCommandRequest","PrepareRenameRequest","RenameRequest","PrepareSupportDefaultBehavior","DocumentOnTypeFormattingRequest","DocumentRangeFormattingRequest","DocumentFormattingRequest","DocumentLinkResolveRequest","protocol_implementation_1","protocol_typeDefinition_1","protocol_workspaceFolders_1","protocol_configuration_1","protocol_colorProvider_1","protocol_foldingRange_1","protocol_declaration_1","protocol_selectionRange_1","protocol_progress_1","protocol_callHierarchy_1","protocol_semanticTokens_1","protocol_showDocument_1","protocol_linkedEditingRange_1","protocol_fileOperations_1","protocol_moniker_1","Create","Rename","Delete","Abort","Transactional","TextOnlyTransactional","hasId","documentSelector","workDoneProgress","hasWorkDoneProgress","unknownProtocolVersion","Log","Full","Incremental","isIncremental","isFull","Manual","AfterDelay","FocusOut","Created","Changed","Deleted","Invoked","TriggerCharacter","TriggerForIncompleteCompletions","ContentChange","Identifier","Relative","fixed","Navbar","attributes","getExpandClass","fluid","Container","containerClass","NavbarBrand","NavbarToggler","NavItem","NavLink","__assignFn","__extendsFn","__spreadArrayFn","_transitionStatusToCl","_objectSpread","navbar","transitionStatusToClassHash","isAppearing","otherProps","transitionProps","collapseClass","getTransitionClass"],"mappings":"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,IACXA,EAAO,GAAI,IACXA,EAAO,GAAI,IACXA,EAAO,GAAI,IACXA,EAAO,GAAI,IACXA,EAAO,GAAI,IACXA,EAAO,GAAI,IACXA,EAAO,GAAI,IACXA,EAAO,GAAI,IACXA,EAAO,GAAI,IACXA,EAAO,GAAI,IACXA,EAAO,GAAI,IACXA,EAAO,GAAI,IACXA,EAAO,GAAI,IACXA,EAAO,GAAI,IACXA,EAAO,GAAI,IACXA,EAAO,GAAI,IACXA,EAAO,GAAI,IACXA,EAAO,GAAI,IACXA,EAAO,GAAI,IACXA,EAAO,GAAI,IACXA,EAAO,GAAI,IACXA,EAAO,GAAI,IACXA,EAAO,GAAI,IACXA,EAAO,GAAI,IACXA,EAAO,GAAI,IACXA,EAAO,GAAI,IACXA,EAAO,GAAI,IACXA,EAAO,GAAI,IACXA,EAAO,GAAI,IACXA,EAAO,IAAK,IACZA,EAAO,IAAK,IACZA,EAAO,IAAK,IACZA,EAAO,IAAK,KACZA,EAAO,IAAK,KACZA,EAAO,IAAK,KACZA,EAAO,IAAK,KACZA,EAAO,IAAK,KACZA,EAAO,IAAK,KACZA,EAAO,IAAK,KACZA,EAAO,IAAK,KACZA,EAAO,IAAK,KACZA,EAAO,IAAK,IACZA,EAAO,IAAK,IACZA,EAAO,IAAK,IACZA,EAAO,IAAK,IACZA,EAAO,IAAK,IACZA,EAAO,IAAK,IACZA,EAAO,IAAK,IACZA,EAAO,IAAK,IACZA,EAAO,IAAK,IACZA,EAAO,IAAK,IACZA,EAAO,IAAK,IACZA,EAAO,IAAK,IACZA,EAAO,IAAK,IACZA,EAAO,IAAK,IACZA,EAAO,IAAK,IACZA,EAAO,IAAK,IACZA,EAAO,IAAK,IACZA,EAAO,IAAK,IACZA,EAAO,IAAK,IACZA,EAAO,IAAK,IACZA,EAAO,IAAK,IACZA,EAAO,IAAK,IACZA,EAAO,IAAK,IACZA,EAAO,IAAK,IACZA,EAAO,IAAK,IACZA,EAAO,IAAK,IACZA,EAAO,IAAK,IACZA,EAAO,IAAK,IACZA,EAAO,IAAK,KACZA,EAAO,IAAK,KACZA,EAAO,IAAK,IACZA,EAAO,IAAK,IACZA,EAAO,IAAK,IACZA,EAAO,IAAK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M,CAGjC,EAnRe,EAAAw0b,UAAoB,EAoRrC,C,CArRA,GC9CA,IAAM2B,GAAsB,gBAIxB,GAAev9Y,KAAe,CAAC,OAEEtsC,IAAjC,GAAQ6pb,MACV,GAAQA,IAAuB,GAGjC,IAAI,IAA+B,EAO7B,SAAU,GAAMhta,GACpB,IAAK,GAA8B,CAEjC,IAAM4hC,EAAa,GAAW7hD,cAE1B6hD,GAAcA,EAAWK,SAC3BL,EAAWK,QAAQgrY,IAErB,IAA+B,CAChC,CAID,YAAmB9pb,IAAX6c,EA7BgB,OA6B2BA,GAFvC,GAAQgta,KAGtB,CAOM,SAAUC,GAAS7rY,QAAA,IAAAA,MAAA,GACvB,GAAQ4rY,IAAuB5rY,CACjC,CC5CA,IAAM8rY,GAAc,W,IAAC,sDAGnB,IAFA,IAAM10b,EAAiC,CAAC,EAErB,MAAA49E,EAAA,eAGjB,IAHG,IAAMx2D,EAAI,KACPvW,EAAO2H,MAAM2G,QAAQiI,GAAQA,EAAOzoB,OAAOkS,KAAKuW,GAEpC,MAAAvW,EAAA,eAAM,CAAnB,IAAMhS,EAAG,KACZmB,EAAOnB,GAAO,CACf,CAGH,OAAOmB,CACT,EAOa20b,GAAoBD,GAAY,CAC3C,SACA,QACA,UACA,mBACA,qBACA,sBACA,UACA,iBACA,SACA,gBACA,WACA,UACA,WACA,SACA,UACA,YACA,mBACA,aACA,UACA,UACA,YACA,mBACA,mBACA,YACA,cACA,UACA,eACA,mBACA,cACA,UACA,SACA,YACA,aACA,eACA,WACA,YACA,YACA,YACA,eACA,iBACA,YACA,UACA,iBACA,gBACA,gBACA,SACA,YACA,cACA,aACA,cACA,aACA,cACA,SACA,cACA,qBACA,eACA,eACA,cACA,aACA,cACA,YACA,mBACA,WACA,gBACA,aACA,cACA,eACA,WACA,UACA,kBACA,gBACA,iBACA,iBACA,gBACA,eACA,gBACA,cACA,sBACA,yBAQWE,GAAwBF,GAAY,CAC/C,YACA,WACA,YACA,kBACA,MACA,YACA,SACA,UACA,KACA,OACA,MACA,OACA,QACA,WACA,QACA,YACA,aACA,SAQWG,GAAwBH,GAAYE,GAAuBD,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A,cACA,gBACA,qBACA,uBACA,eACA,oBACA,mBACA,gBCbA,iBACA,cACA,gBACA,aAEA,YACA,UACA,cAUA,iBACA,QACA,eAEA,IADA,UACA,WACA,gBACA,UACA,UAGA,IAFA,OACA,WACA,KACA,iBACA,YACA,YAEA,gBACA,eACA,kBACA,oBAKA,yBAKA,eACA,MAEA,MACA,aAGA,kCACA,KACA,QAEA,CACA,WACA,CAOA,eACA,kCACA,CAIA,eACA,sBACA,CACA,eACA,YACA,CACA,iBACA,2BACA,CACA,eAEA,4BACA,CACA,eAEA,4BACA,CAWA,eACA,QAWA,OAVA,WAMA,GADA,GAHA,0BACA,sBACA,KACA,aACA,sBACA,WACA,KAEA,CACA,CAOA,iBACA,KACA,eACA,eACA,eAIA,CAOA,iBACA,SAKA,OAJA,mBAEA,cAUA,cACA,SACA,YACA,YACA,2BAEA,IADA,UACA,gBACA,cACA,SAEA,GACA,CACA,IACA,CACA,QACA,CAzBA,OAEA,CACA,CA8DA,iBACA,kBACA,YAGA,CAIA,eACA,wCACA,CAKA,WACA,YACA,yCACA,EAIA,eACA,yCACA,CAMA,eAEA,yBACA,CAMA,eAEA,yBACA,CAMA,eAEA,0BACA,CAcA,eACA,SACA,2BAEA,qBACA,GAMA,wBACA,SAEA,mCAPA,IASA,CACA,QACA,CAIA,eACA,KAEA,kBAMA,YACA,wBACA,kBACA,gBAIA,OAHA,YACA,SAEA,CACA,EACA,0BACA,yBACA,sBACA,uBACA,yBACA,yBACA,+DACA,GACA,CACA,CAxBA,GAEA,CA+BA,mBACA,YACA,IACA,oBACA,UACA,0BAFA,KASA,CADA,UACA,CAEA,CASA,mBACA,MAEA,SACA,kBAEA,YACA,OACA,IACA,mDACA,oBACA,QAKA,CADA,UACA,CAEA,CACA,QACA,CASA,mBACA,MACA,MAEA,SACA,kBAEA,YACA,OACA,eACA,IACA,oBACA,SACA,qBAKA,CADA,UACA,CAEA,CACA,QACA,CASA,mBACA,MACA,MAEA,SACA,kBAEA,YACA,IAEA,oBACA,mBAEA,CACA,qBACA,IAEA,QACA,CACA,UACA,SACA,iBAEA,GAEA,CACA,QACA,CAIA,eAKA,OAJA,IAEA,oDAEA,CACA,CACA,yDACA,IACA,WACA,iBACA,UACA,iBACA,gBACA,uBACA,eAQA,eACA,eAKA,GAJA,8BACA,8CAGA,OACA,aAEA,SACA,eACA,kBACA,SAGA,MAEA,IADA,aACA,YACA,sBACA,aAIA,QACA,CAWA,qBACA,MACA,IACA,OACA,cACA,iBASA,OAPA,IACA,SAEA,IACA,SAEA,WACA,CAIA,CAFA,UAEA,CAGA,QACA,CACA,eACA,QACA,CACA,eAQA,OAPA,IACA,qBACA,eACA,KAEA,IAEA,KACA,CACA,cAMA,cACA,WACA,sCACA,CAIA,eACA,aACA,MAEA,EACA,CAWA,uBACA,QAQA,OAPA,KACA,UACA,wBACA,IACA,SAGA,CACA,CAOA,mBACA,MAaA,OAZA,IACA,SACA,QAEA,aACA,QAKA,aAEA,CACA,CAMA,iBACA,gBACA,CAIA,eACA,SACA,CACA,eACA,kBACA,CACA,iBACA,WACA,OAOA,OANA,MACA,IAGA,IAEA,WAEA,gBAIA,GAHA,IACA,OAEA,EACA,oBAEA,CACA,CA6DA,uBACA,WACA,mBACA,aAGA,CASA,qBAQA,OAPA,oBACA,kBACA,OACA,aAEA,IAEA,CACA,CA0BA,eAMA,OAHA,UACA,oCAEA,CACA,CACA,yBAEA,gBACA,WACA,QACA,KACA,IAYA,IAVA,aACA,IACA,WACA,KAGA,QACA,MAGA,SACA,WACA,QACA,QACA,gBACA,kCACA,MAGA,WACA,SAEA,6BAEA,WACA,EACA,QAEA,MAGA,QAEA,MAGA,WACA,MAEA,QACA,OAtBA,CAwBA,CACA,CACA,QACA,CFlyBA,eACA,YACA,iBACA,uBACA,cACA,gBACA,UACA,cACA,sCACA,aACA,qBACA,gBACA,iBACA,gBACA,kBACA,eACA,aACA,iBACA,cACA,mBACA,kBACA,cACA,yBACA,kBACA,WACA,YACA,cACA,cACA,UACA,cACA,sBACA,eEnCA,iBAEA,YADA,mBACA,gBACA,EAEA,2BACA,CAIA,gBACA,iBACA,KAGA,MAhBe,IAef,iBACA,IACA,EAjBe,GAiBf,qBACA,EAlBe,GAkBf,qBACA,EAnBe,GAmBf,sBACA,sBAKA,OAJA,qCACA,kBACA,mBAEA,UAzBe,KAwBf,mBACA,iBACA,CAWA,uBACA,0DACA,CC9BA,IAAIC,GAAY,SAQZC,GAAU,OAIVC,GAAU,OACVC,GAAa,WACbC,GAAoB,iBACpBC,GAAa,KACbC,GAAqB,KACrBC,IAAe,EACfC,GAAqB,KACrBC,GAAoB,KACxB,SAASC,GAAaxhd,EAAUu+B,GAChC,SACA,MACA,IAEA,KADA,UACA,CACA,cACA,IACA,SAEA,CAGA,CADA,UACA,CAEA,MACA,IAEA,OADA,OACA,GAGA,CADA,UACA,CAGA,CACA,QACA,CAYA,eACA,qBACA,eACA,KAGA,aAEA,OAEA,IACA,CAQA,cACA,4CACA,CAMA,cACA,YACA,OAGA,MACA,CAQA,cACA,gDACA,CAMA,cACA,YACA,SAEA,GA9GkB,WA+GlB,CAQA,cACA,kDACA,CAMA,cACA,YACA,UAEA,GAjImB,YAkInB,CAQA,cACA,8CACA,CAiBA,eACA,UACA,2BACA,KACA,QAEA,CACA,wCACA,SAEA,GArKkB,WAsKlB,CAeA,cACA,UApLqB,cAqLrB,CAQA,cACA,uDACA,CAMA,cACA,YACA,aAEA,IACA,CA+BA,cACA,WACA,+BAGA,QADA,WACA,UACA,qBACA,CACA,SACA,CAIA,eAEA,QADA,iBACA,GACA,eACA,wBACA,CACA,oBAEA,aACA,eACA,yDACA,CACA,aACA,6BACA,KACA,UAEA,CACA,WACA,CAIA,eACA,mCACA,KAOA,MANA,qBACA,wEAEA,OACA,qBAEA,GACA,CAaA,cAIA,OAHA,YACA,mCAEA,EACA,CAMA,eACA,SACA,IACA,gBACA,oBACA,UACA,oBAIA,CADA,UACA,CAEA,QACA,CACA,cAOA,OANA,YACA,kCACA,OACA,sCAGA,EACA,CAKA,cACA,SACA,IAEA,IADA,MAIA,CADA,UACA,CAEA,QACA,CCpWA,IAEI,GAFAkjb,GAAgB,CAAC,aAAc,kBAAmB,oBAAqB,aACvEC,GAAe,KAEnB,SAASC,GAAmBhsd,EAAMwtC,GAClC,kBACA,gBACA,QACA,MACA,iBACA,SACA,aAEA,CACA,CACA,CASA,eACA,SAIA,OAHA,0BACA,MAXA,WAEA,sBAIA,OAHA,IACA,0BAEA,EACA,CAIA,IAEA,qBACA,CCZA,SAASy+a,GAAwB33a,GACjC,SACA,wBAEA,EACA,CACA,SAAS43a,GAAc1jd,EAAMO,GAC7B,aFiKA,eACA,QAEA,GA7KiB,WEUjB,MACA,YACA,OACA,KAEA,UACA,OAEA,CACA,CACA,IAAI,GAAJ,WACA,yBACA,cACA,WACA,QACA,OACA,EA7B6B,OAJG,mBAkChC,EACA,SACA,OACA,qBAEA,gCACA,sBACA,QACA,CAEA,OADA,yBACA,CACA,CAlBA,GAoBA,iBACA,4BACA,CACA,IAAI,GAAJ,WACA,cACA,mCAIA,cAIA,IAKA,EACA,EACA,EACA,EARA,IAIA,KAKA,iCAuEA,gBACA,KAyCA,MAzCA,CAIA,SACA,EA1I8B,QA0I9B,MAQA,GANA,KACA,KAGA,QAEA,IAEA,OACA,eACA,IACA,2BAGA,QACA,0EACA,kBACA,eACA,MACA,SAGA,QAEA,CA7BA,CA+BA,CAUA,gBACA,gBACA,UACA,UAEA,EAdA,YACA,8BACA,gCACA,2BACA,cACA,CA9GA,QACA,2CACA,6CACA,+CACA,2BAMA,yCACA,cACA,sBACA,KACA,YAIA,kBACA,aAkBA,8CAlBA,CACA,MAEA,cACA,aACA,YACA,QAEA,MAGA,MACA,YAGA,MACA,CAKA,EAKA,kBACA,aACA,cACA,EAKA,kBACA,cACA,YACA,EAIA,uCACA,IACA,IACA,EAMA,OAmDA,GACA,C,oBAuEA,CApNA,GAsNA,SAASojd,GAAWl+c,GACpB,gBACA,CAUA,8BACA,cACA,8BACA,CAMA,iBACA,YACA,CCnSA,eACA,SAKA,OAJA,oBACA,OACA,MACA,IACA,KACA,CCZA,WACA,eACA,mBCAIm+c,IDEJ,IACA,KACA,aACA,aCL0Bhyd,GACtBiyd,QAAwBjyd,EAK5B,SAASkyd,KACT,YACA,oBAEA,IACA,CAOA,SAASC,GAA0BC,GACnC,IACA,sBACA,YAEA,uBACA,0DACA,eACA,uBAEA,GADA,UACA,EACA,QAIA,CADA,SACA,CAEA,WACA,CAKA,SAASC,KACT,YACA,sBAEA,IACA,CAIA,cACA,MACA,KACA,CAaA,eAIA,OAHA,kBACA,0BAEA,EACA,CACA,iBACA,WACA,YACA,IACA,mBAKA,CAHA,UACA,MACA,4EACA,CAEA,WACA,CACA,mBACA,WACA,YACA,IAEA,OADA,gBACA,CAKA,CAHA,UACA,MACA,6EACA,CAEA,QACA,CACA,iBACA,WACA,YACA,IAEA,OADA,UACA,CAKA,CAHA,UACA,MACA,oFACA,CAEA,QACA,CACA,eAIA,OAHA,kBACA,4BAEA,EACA,CAUA,iBACA,WACA,YACA,IACA,mBAKA,CAHA,UACA,MACA,8EACA,CAEA,WACA,CACA,mBACA,WACA,YACA,IAEA,OADA,gBACA,CAKA,CAHA,UACA,MACA,+EACA,CAEA,QACA,CACA,iBACA,WACA,YACA,IAEA,OADA,UACA,CAKA,CAHA,UACA,MACA,sFACA,CAEA,QACA,CClJA,ICzBI,GDyBJ,iCACA,8BACA,kCEpBA,6DACA,gBACA,mBACA,iBACA,0CACA,eACA,mBACA,UDXA,mBACA,YACA,UAEA,cAGA,IAFA,QACA,SACA,UACA,IACA,qBAEA,GACA,CACA,QACA,CACA,iBACA,MAUA,OATA,IAEA,eAEA,UACA,eACA,sFAGA,IACA,CACA,mBAEA,MASA,YAVA,gBAEA,IACA,WACA,SACA,mBACA,mBACA,iGAGA,IACA,CACA,iBACA,sBACA,CACA,iBACA,MAOA,OANA,GACA,cACA,iBACA,6FAGA,IACA,CACA,iBACA,MACA,MAEA,WACA,cACA,iBACA,gGAEA,CACA,WACA,CACA,iBACA,MACA,SACA,oBACA,eAEA,IACA,aAIA,CAFA,UACA,2DACA,CAEA,eACA,YACA,MACA,IACA,GACA,CACA,QACA,CACA,iBACA,MACA,SACA,oBACA,YACA,MACA,IACA,GACA,CACA,QACA,CACA,iBACA,+BACA,CACA,qBACA,MAQA,OAPA,IACA,SACA,QACA,aACA,uFAGA,IACA,CACA,eACA,aACA,wBACA,EAIA,IACA,oBACA,kBACA,yBACA,uBACA,oBACA,yBACA,6BAEA,+BACA,kBACA,qBACA,kBACA,sBACA,wBACA,yBACA,2BACA,iBACA,oBACA,gBACA,WEjIA,yBACA,MACA,eACA,OACA,OACA,QACA,gDAEA,SACA,QACA,eACA,OAEA,cACA,MACA,oBACA,SACA,YACA,UACA,UACA,aACA,aAEA,GAOA,OALA,OACA,oBACA,WACA,IAEA,CACA,EACwC,WACxC,aACA,CAUA,WAEA,CAdwC,GAAxC,IC1CI,GAAJ,WAIA,oBACA,qBACA,MACA,OACA,aACA,gBAEA,WACA,QACA,kBACA,cACA,aACA,CAGA,OAFA,yDACA,uBACA,CACA,CApBA,GCAI,GAAJ,WAIA,sBACA,qBACA,MACA,UACA,gBACA,cAEA,WACA,QACA,QACA,cACA,cACA,cACA,IACA,QAEA,CAGA,OAFA,2DACA,yBACA,CACA,CAxBA,GCHIC,GACJ,WAIA,qBACA,OACA,OACA,QACA,QACA,MACA,MACA,UAKA,WACA,ECdI,GAAJ,WAIA,8BACA,qBACA,MACA,UACA,cAEA,WACA,QACA,aACA,qBACA,kCACA,kCACA,kBACA,UACA,qCACA,cACA,cACA,aACA,CAGA,OAFA,0DACA,wBACA,CACA,CA1BA,GCAI,GAAJ,WAIA,0BACA,qBACA,MACA,OACA,MACA,WACA,aACA,eACA,MAEA,WACA,QACA,aACA,cACA,kBACA,WACA,aAEA,cACA,aACA,CAGA,OAFA,4DACA,0BACA,CACA,CA5BA,GCDI,GAAJ,WAIA,0BACA,qBACA,MACA,OACA,MACA,WACA,YACA,iBACA,cACA,mBACA,gBACA,aACA,gBAEA,WACA,QACA,cACA,kBACA,cACA,cACA,IACA,gCACA,YACA,kCACA,wBACA,YACA,4BAEA,CAGA,OAFA,uEACA,qCACA,CACA,CApCA,GCGIC,GAAW,QACXC,GAAW,QACXC,GAAkB,eAClBC,GAAc,WACdC,GAAa,UACbC,GAAiB,cACrB,SAASC,GAAWj+d,EAAOk+d,GAC3B,QAiBA,OAhBA,YACA,gBACA,eACA,iBAEA,EADA,UACA,QAGA,OAKA,mCAGA,KACA,CACA,SAASC,GAAeC,EAAUC,GAClC,QAmBA,OAlBA,IACA,YACA,mBAGA,YAEA,YAEA,aAEA,mEAIA,kEACA,YAEA,KACA,CAuBA,SAASC,GAAgBC,GACzB,4CACA,CACA,SAASC,GAAiBC,GAC1B,YACA,QAEA,EADA,UACA,MAGA,MAGA,kBACA,OACA,MACA,MAEA,CAiBA,SAASC,GAAsBC,GAC/B,WACA,KACA,IAGA,SAEA,iBAEA,oBAEA,qBAEA,gCACA,2BAEA,SACA,SAEA,aACA,aAEA,+BAEA,EAzCA,SAAwBvoZ,GAGxB,IAFA,SACA,cACA,iBACA,WACA,SACA,cACA,KAEA,SACA,CACA,OACA,MACA,MAEA,CA0BA,aAEA,SACA,YAEA,CACA,uBACA,YACA,IACA,SAEA,mBAEA,IACA,QAEA,CAMA,CAJA,UAGA,QACA,CAEA,WACA,OACA,SAEA,CA4DA,SAASwoZ,GAAcP,GAEvB,SACA,QACA,yBAEA,IACA,IACA,EADA,wBACA,0BACA,oBAGA,CADA,UACA,CAIA,QACA,CAKA,eACA,KACA,IACA,WACA,YACA,WASA,OARA,cACA,QAGA,KADA,UAGA,YAEA,2BACA,QAEA,CACA,CAGA,CADA,UACA,CAIA,gBACA,CACA,IAAI,GAAJ,WAIA,wBACA,qBACA,MACA,aACA,gBACA,aACA,gBAEA,WACA,SA7NA,SAA8Br+d,GAC9B,IACA,SACA,mDAIA,CADA,UACA,CAEA,QACA,CAoNA,KACA,IACA,MAEA,sBACA,cACA,cACA,IACA,SAEA,IACA,UAIA,gBACA,YACA,YACA,QACA,aAEA,OACA,WAEA,QACA,aAGA,YACA,aAGA,CA2DA,OA1DA,gDACA,MACA,cACA,aACA,YACA,QACA,eACA,iBACA,oBACA,eACA,QACA,2BACA,aACA,CACA,EACA,wCACA,aACA,4CAEA,OADA,4DAEA,EACA,mCACA,MACA,6GACA,sBACA,kDACA,EACA,UACA,YAEA,MACA,kBACA,eACA,iBACA,iBACA,OACA,aACA,CACA,EAIA,8CACA,MACA,OACA,aACA,KACA,SACA,YACA,UACA,aACA,IAGA,EACA,6DACA,2BACA,iBACA,CACA,CA1GA,GA4GI,GAAJ,WACA,kBACA,qBACA,KACA,UACA,WACA,UACA,eACA,QACA,eAEA,WACA,GAnVA,SAAqCA,GACrC,IACA,SACA,wCAIA,CADA,UACA,CAEA,QACA,CAyUA,IAiBA,YACA,YACA,YACA,gBACA,gBArBA,CACA,QACA,WACA,QACA,eAEA,sBACA,+BACA,mBACA,MA/NA,SAAqB6pF,GACrB,MACA,QACA,eACA,KACA,QACA,IAYA,GAXA,kBACA,cACA,qBACA,oBACA,SACA,SACA,CACA,IAIA,EADA,MAOA,IALA,QACA,UACA,IACA,IACA,IACA,MAKA,IADA,GAFA,SACA,UAVA,MAYA,CAEA,YACA,cACA,KACA,CAEA,IACA,IACA,IACA,GACA,CAEA,CACA,QACA,CAmLA,IACA,WA9OA,SAA2Bg1Y,GAC3B,SAWA,OAVA,IACA,MACA,sBACA,SACA,IAGA,aAGA,CACA,CAiOA,KACA,sDACA,IACA,mBAEA,CAQA,CAyBA,OAxBA,mCACA,MACA,OACA,yBACA,gDAWA,OAVA,GACA,QACA,kBACA,eACA,cACA,mBACA,cAEA,cACA,CAEA,EACA,oCACA,6BACA,2CACA,MAEA,OADA,yDAEA,EACA,CACA,CA7DA,GA+DI,GAAJ,WACA,gBACA,qBACA,QACA,SACA,WACA,WACA,QAEA,WAIA,GAHA,QAGA,qBACA,QACA,QACA,MAvce,cAwcf,YACA,SACA,QACA,uBACA,cACA,sBACA,eACA,wBAEA,MAEA,YACA,YACA,YACA,YACA,YACA,QAEA,4BACA,8BACA,8BAEA,kBACA,sCACA,oCACA,CAkBA,OAjBA,kCACA,oBACA,EACA,mCACA,WACA,OACA,YACA,aACA,eACA,eACA,WAEA,EAGA,+FACA,cACA,CACA,CA7DA,GCzbIC,GAAiB,cACjBC,GAAiB,cACjBC,GAAY,SACZC,GAAa,UACbC,GAAa,UACbC,GAAyB,sBACzBC,GAAyB,sBACzBC,GAAqB,SACrBC,GAAmB,KACnBC,GAAmB,KACnBC,GAAqB,KACrBC,GAAO,KACPC,GAAe,CAAC,EAChBC,GAAsB,CAAC,EAU3B,iBAEA,qBAOA,OANA,IAGA,iBACA,UAEA,CACA,CACA,SAASC,GAAcC,GACvB,UACA,aAGA,CA0BA,iBACA,MACA,KAEA,wBAEA,MACA,YAEA,EADA,MACA,MAGA,KAEA,CAKA,OAJA,IAEA,qBAEA,CACA,CACA,iBACA,MACA,EAhDA,SAAgCC,GAChC,sBAIA,GAFA,oCACA,uCACA,WAEA,aACA,YACA,UAEA,YACA,UAEA,OACA,CACA,QACA,CA+BA,QACA,cACA,WAEA,aACA,OACA,qBACA,eAGA,SAMA,OALA,cAGA,SAEA,CACA,IAEA,gBAEA,QACA,EACA,0BACA,SACA,UACA,SACA,YACA,aAOA,IANA,QACA,iBACA,kBAGA,2BACA,OACA,WACA,cACA,IAEA,EAFA,KAEA,MAEA,QACA,eACA,aACA,4CACA,CACA,CACA,GAEA,4BAEA,CACA,WACA,2BACA,4BAEA,YACA,wBAEA,IACA,iCAGA,2BACA,iBACA,WACA,IACA,CACA,QACA,EACA,kBACA,SAIA,OAHA,QACA,wBAEA,CACA,EACA,oBACA,SAKA,OAJA,QAEA,gBAEA,CACA,EACA,sBACA,MACA,KACA,UAEA,cACA,YACA,sCACA,GACA,OAEA,mBAEA,iBACA,YACA,IACA,CACA,QACA,EACA,GAGA,OADA,QACA,CACA,CAIA,eACA,cACA,MACA,IAEA,aADA,QACA,GAIA,CAFA,UACA,uEACA,CACA,CACA,SACA,CACA,SAASC,GAAcC,GACvB,SACA,UAEA,GADA,gBACA,YAEA,GADA,YACA,CACA,kBACA,MACA,UAGA,gCAEA,CACA,IAEA,QACA,CACA,SAASC,GAAYC,EAAS1md,GAC9B,gBACA,OAEA,IACA,CACA,SAAS2md,GAAmBnge,EAAO8N,GACnC,YAIA,OAHA,oBACA,0BACA,IACA,CACA,CACA,SAASsyd,GAAgBpvd,GACzB,SACA,OACA,iBACA,SACA,SACA,MAEA,eACA,CACA,QACA,CACA,SAASqvd,GAAgBrvd,EAAMsvd,GAC/B,KACA,eAEA,CACA,eACA,mBAQA,yDAUA,gFAUA,iGAMA,0CAKA,0CAMA,iDAIA,CCxTA,IAAIC,GAAa,WACbC,GAAY,WAEZC,IAAa,EACbC,GAAQ,UACRC,GAAQ,UAEZ,SAASC,GAASC,GAClB,MAEA,QAEA,kBACA,kBACA,KACA,CACA,SAASC,KAGT,IACA,sBACA,0BAGA,CADA,UACA,CAEA,CAgBA,eACA,QACA,ElBmLA,GA/MgB,WAuNhB,GAtNkB,YkBkDlB,OAtBA,uBAEA,+CAEA,cAEA,IAEA,KAIA,WAEA,QAEA,kCAEA,IAEA,QAEA,CACA,CAmBA,eAGA,QAFA,kCAEA,YADA,mCACA,OAKA,OAJA,IAEA,QAEA,CACA,CAMA,oBACA,cAMA,IALA,IAEA,WACA,IACA,KACA,SACA,IACA,GAPA,mEAOA,aACA,OACA,QAGA,+BACA,KAGA,QACA,CCxHA,IAAI,GAAJ,KACI,GAAJ,QACIC,GAAe,IAAMt9W,GAAM,GAC3Bu9W,GAAW,EAwBf,SAASC,GAAerie,GACxB,oCACA,CACA,SAASsie,GAAUx2d,EAAM9L,GACzB,cACA,OACA,KACA,IACA,QA/BA,SAAyBA,EAAQma,EAAM/Y,GACvC,MACA,IAMA,OALA,QACA,QACA,cACA,mBAEA,CAIA,CAFA,UAEA,CAGA,QACA,CAgBA,aAEA,WAKA,CADA,UACA,CAEA,CACA,QACA,CACA,iBAEA,YADA,cACA,2BACA,CACA,eACA,OACA,iCACA,mBACA,YACA,EACA,sBACA,cACA,SAQA,UAPA,KAEA,WACA,UAEA,EAGA,EACA,mBACA,WACA,WACA,IAGA,CADA,UACA,CAGA,GAEA,QACA,CCjFA,IACImhe,GAAiB,cACjBC,GAAoB,mBACpBC,GAAiB,cACjBC,GAAyB,sBACzBC,GAAY,SACZC,GAAyB,mBACzBC,GAAc,WAEdC,GAAY,SACZC,GAAkB,eAClBC,GAAuBC,GAAsB,iBAE7CC,IADuBD,GAAsB,iBAC5B,YACjBE,GAAyB,SACzBC,GAAQ,EACRC,GAAcC,GAAkB,UAChCC,GAAiB,sBACrB,SAASC,GAAoBpxd,GAC7B,gBACA,iCAEA,CACA,CACA,SAASqxd,GAAiBryY,EAAWsyY,GACrC,MACA,MACA,SACA,OACA,KACA,mBACA,WAEA,aACA,SAEA,KAEA,KAGA,QAEA,IACA,aACA,SAGA,YAEA,CACA,yBACA,aACA,SACA,yEACA,CACA,CA6BA,SAASC,GAAqB3je,EAAQ4je,EAASC,QAC/C,cACA,wBACA,OAIA,OAHA,IACA,WAEA,CACA,CACA,SAASC,GAAU52d,EAAK02d,EAASG,EAAY7zX,GAC7C,cACA,MACA,iBAEA,OACA,MApGkB,KAoGlB,SAGA,CAiBA,SAAS8zX,GAAchke,EAAQ4wF,EAAQgzY,EAASK,GAEhD,IADA,YACA,MACA,WACA,IACA,2BACA,WACA,gCAEA,YAIA,CACA,CAgBA,iBAeA,OAbA,EAQA,QAPA,MACA,cAGA,OAGA,YAGA,CAGA,CAYA,uBACA,WACA,cACA,SACA,KACA,IACA,cAEA,GADA,EAjFA,SAAmB/2d,EAAK02d,EAASG,EAAY7zX,GAC7C,SAaA,OAZA,iBACA,OAEA,iBACA,MAEA,QAEA,MAlHkB,KAkHlB,SACA,OAGA,CACA,CAkEA,UACA,iBACA,WACA,UACA,YAEA,MACA,YACA,GACA,mBACA,CAGA,CADA,UACA,CAGA,QACA,CAaA,uBAEA,QADA,cACA,EACA,IACA,cACA,MArFA,SAA2BlwG,EAAQ4je,EAASK,GAC5C,SACA,0BAEA,CACA,sBACA,oBACA,WACA,IAEA,eACA,aAEA,CACA,CAwEA,kBACA,iCACA,MACA,EAGA,IACA,GAEA,WAIA,CADA,UACA,CAGA,CAkCA,mBACA,SACA,OACA,IACA,cACA,uBAEA,WAIA,OAHA,IACA,kBAEA,CACA,CA6BA,SAASC,GAAmBtzY,EAAQhmE,EAAUu5c,EAAeT,GAC7D,SAUA,OATA,eACA,kBACA,IACA,kBACA,gBAGA,IAEA,CACA,CA0BA,mBACA,UACA,kBACA,GA5DA,gBACA,WACA,IACA,YACA,kBAEA,WACA,GACA,WAEA,CAmDA,OAEA,GAEA,CAYA,mBAGA,OAxCA,kBACA,SAQA,OAPA,eACA,gBACA,aAEA,kBAGA,CACA,CA8BA,kBACA,CAuBA,mBAQA,eACA,iBAQA,OAPA,mBACA,WAVA,YACA,WACA,oCACA,IAEA,GAKA,UAEA,OAEA,gBAEA,CACA,CC5ZA,IACIU,GADAC,GAAc,KAGlB,KAiCA,cAIA,IAHA,IAEA,EAFA,oEAEA,KACA,YAEA,GACA,MAFA,SAGA,WACA,WACA,YACA,YACA,YACA,YACA,YAGA,sBACA,uEACA,CAOA,QACA,sBACA,StBNA,cACA,mBACA,EsBKA,eACA,qBACA,kBACA,cACA,YACA,UACA,WACA,WACA,YACA,YACA,aACA,eACA,cACA,cACA,UACA,aACA,WACA,eACA,WACA,sBACA,mBACA,WACA,QACA,kBACA,QArFA,WACA,WACA,iFACA,EAmFA,QA9EA,WACA,WACA,gBACA,QAEA,IACA,EAyEA,SACA,YHjEA,YACA,WACA,8BAEA,CACA,EG6DA,YACA,cH1BA,YACA,EAIA,MAHA,IAKA,EGoBA,eACA,kBAmBA,iBACA,cACA,oBAwBA,OAvBA,YACA,MACA,KAGA,mCACA,SACA,gBACA,KACA,mBACA,QACA,GACA,MAEA,cACA,UAEA,OACA,SAEA,QACA,UAEA,CACA,CAKA,cACA,YACA,CC3JA,IACIC,GAAkB,KAClBC,GAAkB,KAClBC,GAAmB,mCACnBC,GAAkB,mBAEtB,SAASx+P,GAAS7kO,EAAOwE,EAAK8+d,GAC9B,iCACA,qBAGA,CACA,SAASC,GAAavje,EAAOwE,EAAKmkb,GAClC,eACA,EAEA,CACA,CACA,SAAS66C,GAAaxje,IACtB,wBACA,KAGA,IADA,qBACA,SACA,QAEA,QACA,CASA,qBACA,MACA,aACA,oBACA,mBACA,gCACA,8BACA,CACA,CA2CA,eACA,kBACA,CAQA,eACA,kBACA,CAoCA,eACA,MAGA,gBACA,UACA,QAEA,gBAMA,MALA,qBAEA,MAGA,yFACA,CACA,QACA,CC1JA,eACA,WACA,aACA,mBAEA,CACA,WACA,mBACA,0BACA,kBAEA,CACA,QACA,CCbA,OrBmCA,YACA,SAKA,OAJA,oBACA,UACA,YACA,IACA,KACA,CqB1CA,EACA,2CACA,oCACA,8CACA,iCACA,oCACA,kCACA,mCACA,yCACA,sDCRI,GAAJ,SACIyje,GAAiB,EAGjBC,GAAqB,CAAC,KAAM,KAAM,KAAM,KAAM,MAClD,eACA,SACA,KACA,OAgBA,OAfA,iBAIA,OAEA,8BAJA,kBAMA,WAEA,GACA,QACA,KAEA,KACA,CACA,CACA,eACA,MACA,QAIA,OAHA,IACA,UAEA,CACA,CASA,iBACA,SACA,sBAEA,CACA,CAEA,iBACA,kBACA,MACA,oDACA,0CACA,sBAEA,CACA,QACA,CACA,iBACA,WACA,MACA,gDACA,4CACA,WACA,aACA,uBACA,YAEA,uBAGA,2BAFA,MAKA,IACA,CAEA,CACA,QACA,CCxEA,IAAIC,GAAqB,CACzB,MACA,iDACA,+CAEA,eACA,yBACA,CACA,IAgDA,IACA,8BAQA,4CACA,sCACA,SAEA,YACA,yDACA,oBACA,SAIA,uBAMA,IALA,2CAGA,0BAEA,uCACA,SAEA,IAEA,EAFA,gCACA,OAEA,kBACA,iGACA,cACA,KACA,GACA,SAGA,4CACA,iBACA,SAEA,qBAEA,GADA,8FACA,QACA,QAEA,CAGA,iBACA,EAIA,kCACA,MACA,6CACA,iCACA,QAEA,CACA,EAIA,yCACA,KAEA,IADA,iBACA,iBACA,oBACA,uBACA,WAEA,CAEA,GA+BA,cAEA,WACA,uBACA,uCAEA,OACA,QAEA,CACA,WACA,CACA,iBACA,WAIA,OAHA,6BACA,OAEA,CACA,CAcA,iBACA,YACA,OACA,mBACA,YACA,EACA,oBACA,gBACA,OACA,EACA,sBACA,gBACA,EACA,uBACA,mBACA,QACA,YAEA,EACA,qBACA,iBACA,EACA,sBACA,kBACA,QACA,aAEA,EACA,yBACA,mBACA,EACA,0BACA,sBACA,cACA,EAEA,CC/OA,IAAI,GAAJ,WAIA,yCACA,kBACA,qBACA,KACA,MACA,OACA,aACA,WACA,UACA,OACA,SACA,OACA,aACA,eACA,OACA,QACA,QACA,MACA,MACA,SACA,iBACA,mBACA,cACA,sBAEA,WACA,QACA,OACA,YACA,YACA,kBACA,eACA,MD0GA,kBACA,cACA,eACA,YAEA,GADA,UACA,EACA,gBACA,mCACA,oBACA,SAEA,QACA,mBACA,MAEA,SAGA,MAEA,IACA,IAEA,OACA,SACA,OACA,OAEA,CCtIA,UACA,uBACA,wBACA,IACA,8CAEA,kBACA,cACA,aACA,CAGA,OAFA,oEACA,kCACA,CACA,CAjDA,GCAIC,GAAyB,MACzBC,GAAsB,mBACtBC,GAAwB,qBACxBC,GAAsB,KACtB,GAAJ,WACA,kBACA,IAQA,EARA,OACA,MACA,aACA,QACA,QACA,2BACA,SAGA,6BAOA,OALA,WACA,MAEA,QAEA,CACA,KAEA,kBACA,SAEA,qBACA,MAEA,cAEA,IACA,EACA,oBACA,KAEA,aAEA,OACA,4BAEA,YAEA,aACA,WAEA,EACA,iBACA,IACA,CAEA,EACA,iBACA,QACA,eACA,SACA,yBACA,WACA,IACA,SAEA,CAEA,mBACA,iBACA,oBACA,WAEA,cAEA,CACA,CAGA,OAFA,4BACA,iCACA,CACA,CAzEA,GA2EI,GAAJ,WACA,cAKA,YACA,iCACA,yBAGA,oBACA,EACA,mBACA,IACA,QACA,cACA,SAGA,EACA,oBACA,KACA,iBACA,KAEA,EACA,kBACA,oBACA,CACA,GACA,C,oBAmCA,CAlEA,GAoEIC,GAAkB,mBAStB,uBACA,MACA,QAKA,GAJA,QAEA,WAEA,GACA,aACA,YACA,IAEA,GADA,oBACA,CACA,cACA,gBACA,eACA,oBACA,IACA,KACA,iBAEA,QACA,CAIA,OADA,YACA,IACA,CAcA,CAZA,SACA,UACA,oBAEA,SAGA,GACA,UAGA,WACA,CACA,CACA,CACA,UACA,CCvMA,IAAIC,GAAkB/B,GAAkB,UACxC,eACA,8BACA,CAQA,iBAMA,IAJA,IAGA,EAHA,KACA,OACA,UAEA,IACA,cACA,MACA,GACA,WACA,WAEA,UAGA,UACA,SAGA,SACA,MAGA,SAEA,IACA,SACA,CACA,CAEA,kBACA,cACA,8BACA,QAEA,eACA,SAEA,gBACA,KACA,GACA,CACA,eAEA,6BACA,QACA,MACA,gBACA,UACA,kBAEA,IACA,KAEA,MAEA,SAEA,QACA,GAEA,CCvEA,IAAIgC,GAA0B,uBAC1BC,GAAiB,UACjBC,GAAe,aACfC,GAAW,EAmBf,SAASC,GAAuBC,EAAgB/lb,EAAQ,EAAxD,GAGA,WACA,KACA,WAEA,IAzBA,SAA4BmmH,EAAO6/T,EAAMC,GACzC,SACA,eACA,SAEA,SACA,CAEA,0BACA,CAgBA,WAEA,OACA,MAuCA,WACA,QAGA,GADA,kBACA,GACA,QACA,aACA,kBACA,IACA,yBAIA,CAFA,UACA,iEACA,CACA,IACA,KAEA,CACA,QACA,EAzDA,KACA,gBACA,QACA,EACA,mBACA,cACA,EACA,kBACA,QACA,EACA,YACA,UAmFA,qBACA,cACA,MACA,YACA,aACA,OAEA,eACA,QAEA,gBACA,EA7FA,mBACA,SACA,EACA,mBACA,QACA,EACA,oBACA,GACA,EACA,QAqFA,YAEA,MACA,mBACA,cACA,GAEA,IAEA,CACA,EA9FA,WAGA,cAEA,IADA,SACA,2BACA,oBAEA,GACA,OACA,OACA,mBACA,QAGA,IAqBA,kBAGA,MACA,QAHA,mBACA,aAEA,GACA,YACA,OACA,OAEA,CACA,MAIA,UACA,OAEA,iBACA,UAGA,kBAEA,aACA,WACA,QACA,OAEA,CACA,IAEA,GACA,OApBA,IAsBA,QACA,CAwBA,QACA,CAQA,qBACA,kBACA,QAgBA,OAFA,MAbA,YACA,gBAGA,OADA,eACA,CACA,EASA,MARA,cAKA,YAJA,gBACA,QACA,eAEA,oBACA,EAGA,CACA,CAQA,mBACA,gBACA,cACA,QAeA,OAFA,MAZA,YACA,gBAEA,OADA,kBACA,CACA,EASA,MARA,cAKA,YAJA,gBACA,QACA,eAEA,kBACA,EAGA,CACA,CAQA,mBACA,gBAEA,EADA,YACA,IAiBA,OAFA,MAdA,YACA,8BACA,WACA,UAEA,GACA,EASA,MARA,cAKA,YAJA,gBACA,QACA,eAEA,kBACA,EAGA,CACA,CAQA,qBACA,WACA,KACA,mBAEA,WACA,kBAIA,GAHA,WACA,MAEA,iBAEA,MA6BA,gBACA,IAGA,EAHA,OACA,YACA,YAGA,EADA,EACA,yBAGA,kBAEA,OACA,qBACA,QACA,EACA,mBACA,QACA,EACA,mBACA,SACA,SACA,MACA,qBACA,GACA,GAEA,aACA,MAUA,OARA,eAEA,WAEA,IAEA,aAEA,CACA,CACA,sBACA,SACA,aACA,QAiCA,OAhCA,IAEA,YAGA,aACA,GACA,oDAEA,QACA,IAEA,iBACA,IACA,SAEA,MAaA,CAXA,SACA,mBACA,IAEA,MAEA,MAGA,oFAEA,CACA,QAEA,CACA,CACA,gBAEA,cACA,UACA,SAEA,YACA,uBAMA,GAEA,SAEA,YAEA,EACA,CACA,EApBA,SAoBA,4DAGA,QAEA,CACA,gBACA,aAEA,SACA,MACA,YACA,gBAEA,4BAEA,WACA,SACA,SACA,yBAEA,MAGA,CACA,QACA,CACA,sCAEA,QAEA,CACA,gBACA,aAEA,SACA,MACA,YACA,gBAEA,2BACA,yBAEA,KAGA,CACA,QACA,CACA,mCAEA,QAEA,CACA,YACA,CAtLA,QACA,IACA,KAEA,GAEA,cAEA,GACA,CACA,GACA,CACA,aAEA,YAEA,CACA,CA0KA,IC7bIC,GAAoB,WACpBC,GAAU,CACd,6BAGA,SAASC,GAASpud,EAAKnJ,GACvB,KACA,sBACA,UADA,KAMA,CAEA,SAASw3d,GAAaC,EAAOC,EAAaC,EAAQC,EAAS13d,GAC3D,YACA,oBACA,aACA,WACA,MAEA,iBAEA,OADA,aAEA,EACA,IACA,eAmBA,CAjBA,UACA,YACA,IAEA,eACA,IACA,SACA,gBASA,CANA,UACA,CACC,QAGD,OACA,CACA,CACA,CACA,GAEA,CAoDA,SAAS23d,GAAUtme,EAAQoS,EAAMm0d,GACjC,WASA,OARA,IACA,QACA,IAEA,IACA,mBAGA,CACA,CAyBA,SAASC,GAAsBp9a,EAAOpuC,EAAUvM,EAAIymB,GACpD,eACA,OASA,MAjGA,SAA6Buxc,GAE7B,kBACA,MACA,OAEA,YACA,MACA,UACA,QACA,SACA,WACA,QACA,GACA,KACA,WAEA,gBAIA,OAHA,kBACA,QACA,IACA,CACA,CACA,iBACA,WACA,KACA,UACA,CAXA,kBAaA,cAEA,UACA,KACA,IACA,iBAQA,CANA,UAKA,MAHA,SACA,cAEA,EACA,CAIA,OADA,cACA,MACA,CACA,CAiDA,CAPA,GACA,IACA,IACA,IACA,OAIA,QACA,MACA,CACA,OAEA,OACA,OACA,cAGA,cACA,sBACA,YAEA,OADA,aACA,CAEA,GACA,GAKA,OAFA,MACA,WACA,CACA,CAQA,qBAEA,QADA,cACA,SACA,gBACA,MACA,WACA,mBACA,kBAEA,CACA,CACA,WACA,CA8BA,qBACA,YACA,mBACA,KACA,qBAEA,CACA,WACA,CCvOA,cACA,SAiBA,OACA,IAjBA,YACA,GACA,QAEA,EAcA,IAbA,cACA,kBACA,IACA,MAIA,CAFA,UACA,oEACA,CACA,IACA,IACA,EAKA,CCnBA,IAAIC,GAAe,YAMf,GAAJ,WACA,aACA,IAEA,EACA,EACA,EACA,EACA,EANA,OA4HA,mBACA,gBACA,QACA,OACA,2BAIA,EAFA,SAEA,kBAGA,aAEA,CACA,QACA,CACA,kBACA,GAEA,qBAEA,OAEA,iBAEA,QACA,WAEA,WAGA,QACA,aACA,CACA,aACA,KACA,WACA,OACA,OACA,KACA,MACA,CA9JA,IACA,8BACA,wBACA,SACA,IACA,EACA,oBACA,MAGA,QACA,yBAIA,MACA,KACA,mCACA,UACA,WAEA,OACA,GAwBA,OAPA,yBAKA,KAJA,IAMA,CAhCA,CASA,aACA,OACA,KACA,WACA,QACA,KAEA,kBACA,MACA,KACA,OACA,SAEA,GACA,CACA,CASA,EACA,oBAGA,YACA,yBAIA,MACA,KACA,mCACA,MACA,UAcA,OANA,qCAIA,KAHA,IAKA,CAnBA,CAOA,aACA,IACA,KACA,+BAEA,CAQA,EACA,uBACA,IACA,MACA,cAGA,SAGA,EACA,iDACA,IAEA,kBACA,iBACA,EACA,iBACA,QACA,EACA,6BACA,GACA,EAKA,kBACA,GACA,EACA,oBACA,EAEA,SAEA,cAGA,aAEA,EACA,cA2CA,C,oBAwCA,CAhNA,GpCNA,cACA,8BACA,4BACA,8BACA,6CACA,wBACA,0BACA,kCACA,6BACA,gBACA,gCAEA,UACA,cACA,kBACA,aACA,WACA,mBACA,4BACA,0BACA,qCACA,sCACA,UACA,2BACA,eACA,WACA,cACA,cACA,gBACA,kBACA,aACA,yBACA,6BACA,cACA,YACA,kCACA,0BACA,qBACA,2BACA,kCAEA,mBAEA,kBACA,iBACA,gBACA,wBqC9CI,GAAJ,WACA,oBACA,iCACA,IAGA,EAHA,OACA,KACA,KAKA,cACA,GACA,UAEA,CAPA,IACA,YAkCA,oBACA,aACA,+BACA,WACA,uBACA,CACA,YACA,+BACA,WACA,oBACA,CAIA,YAKA,OAJA,WACA,WAEA,6LAGA,IACA,EAWA,EAZA,KAGA,cACA,MACA,kBACA,WACA,WAMA,OACA,YACA,UAEA,cACA,WAEA,IACA,MAEA,SAGA,WACA,MACA,MAGA,IA/EA,EAgFA,IACA,MAjFA,EAoFA,WACA,SACA,IACA,YACA,KACA,OACA,OACA,OAEA,SACA,cAOA,IACA,mBACA,YAEA,IACA,WACA,QAVA,QACA,WAYA,MACA,qBAhCA,MAmCA,KACA,IACA,MArCA,IAsCA,YAMA,CAFA,UACA,sFACA,CACA,QACA,EA5HA,UACA,IACA,0BACA,iBACA,KACA,KACA,kBACA,IAKA,KAHA,SAKA,IACA,YACA,iBACA,QAEA,GAEA,KAEA,QAsGA,EACA,yBACA,MACA,iBACA,OACA,iBAEA,KACA,kBACA,MACA,CAEA,GACA,CACA,CACA,GACA,C,oBAkBA,CA/KA,GCHIC,GAAuB,KACvBC,GAAgB,CAAC,YAAa,gBAAiB,cAAe,wBAClE,SAASC,KACT,WACA,oBACA,CAKA,SAASC,KACT,WACA,eACA,UACA,uBACA,SACA,SACA,kBACA,SACA,SACA,SACA,cACA,CACA,SAASC,KACT,YACA,YAEA,IACA,CACA,SAASC,KACT,OAxBA,WACA,WACA,oEACA,CAqBA,GACA,uCAEA,IACA,CAIA,SAASC,KAET,IADA,SACA,2BACA,kBAEA,eAEA,cACA,KACA,KACA,yBACA,yCAGA,KAEA,SAIA,oBACA,oBACA,SAIA,QACA,CAIA,IAAI,GAAJ,WACA,cACA,WACA,QACA,iCACA,kBACA,aAqBA,WACA,OACA,IACA,IACA,IACA,IACA,KACA,QACA,GACA,QAMA,8CACA,2BACA,kBACA,4BAGA,kBACA,kBACA,2BACA,kBACA,2BAEA,MACA,qGAEA,iBAGA,0DAGA,2FAGA,eAEA,wBACA,uBACA,oBACA,yBACA,sBACA,cAfA,+HAkBA,EACA,SACA,SACA,SACA,QACA,GACA,C,oBAmCA,CArHA,GClEI,GAAJ,WAMA,gBACA,0BACA,iCACA,oBACA,IAEA,MAeA,cACA,WACA,IACA,EAkCA,WACA,WACA,IACA,SAEA,WAEA,UACA,WAEA,iBACA,sBAEA,QAEA,CAKA,CAHA,UACA,8CACA,MACA,CACA,QACA,CAxDA,GAcA,cACA,IACA,SACA,eACA,mFAEA,kBACA,oBACA,SACA,CAKA,CAHA,UAEA,qCACA,CACA,CA5BA,KAKA,CAHA,UACA,wCACA,MACA,CACA,QACA,CA1BA,MAEA,GACA,uCAKA,CAFA,UACA,gFACA,CACA,EAmEA,uCACA,2DACA,GACA,C,oBAUA,CArGA,GAuGI,GACJ,cACA,cACA,gBACA,cACA,EC9GI,GACJ,cACA,WACA,KACA,oBACA,2BACA,oGAEA,cACA,EACA,yBACA,WACA,YACA,kFAEA,CACA,IACA,QADA,UAEA,mBACA,QACA,KACA,WACA,CACA,EChBA,SAASC,GAAelne,EAAQmne,GAChC,uBACA,kBAEA,CAaA,SAASC,GAAoBhme,EAAO2ob,GAKpC,OAJA,QAFsB,MAItB,EAJsB,KAMtB,CACA,CACA,SAASs9C,GAAkBznb,GAqB3B,OApBA,IACA,MAGA,+CACA,sDACA,gBACA,gBACA,gBACA,iBACA,sCACA,WAEA,gBACA,gBACA,gBACA,gBACA,gCACA,gBACA,wDACA,CACA,CACA,SAAS0nb,GAAoBC,GAG7B,YACA,MACA,MjCHA,UACA,WiCQA,CACA,IAAI,GAAJ,YAEA,aACA,IAIA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAjBA,qBACA,gBACA,eACA,uBAmBA,IAEA,EACA,EACA,EA+iBA,OA9iBA,gCACA,iBA0gBA,sBACA,gCACA,CACA,aACA,OACA,OACA,OACA,OACA,OACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KAKA,EAEA,aACA,eACA,OACA,MACA,CAriBA,IACA,0BACA,gBACA,EACA,iCACA,kBACA,EACA,2BACA,IACA,oCACA,YAIA,CAFA,UACA,oFACA,CACA,EAKA,8BACA,IACA,UAIA,CAFA,UACA,yFACA,CACA,EAOA,iCACA,IACA,oBAIA,CAFA,UACA,wFACA,CACA,EAOA,2BACA,IACA,oCACA,YAIA,CAFA,UACA,oFACA,CACA,EAYA,4BACA,IACA,oCACA,YAIA,CAFA,UACA,sFACA,CACA,EAOA,oBACA,IACA,YACA,oFACA,cACA,mBAKA,CAFA,UACA,2FACA,CACA,EAOA,sBACA,WACA,IACA,gDAEA,sCACA,aAEA,CACA,EAMA,sBACA,sCACA,YACA,EAMA,yCACA,YACA,IACA,SACA,UAIA,CAFA,UACA,sGACA,CACA,EAOA,6BACA,IACA,wBACA,WACA,gBACA,CACA,UAIA,CAFA,UACA,2FACA,CACA,EASA,kCACA,IACA,wBACA,WACA,gBACA,CACA,wBACA,WACA,cACA,CACA,gBACA,cACA,UAKA,CAFA,UACA,2FACA,CACA,EAOA,sBACA,kCAEA,KADA,oFACA,2BACA,YACA,EAUA,+BACA,mBACA,aAEA,IACA,UAIA,CAFA,UACA,4FACA,CACA,EAMA,kBACA,eACA,WACA,IACA,OACA,WACA,IACA,UAEA,CACA,+BAEA,2DACA,GACA,WACA,MACA,oBACA,sBACA,eAEA,sDAsJA,cACA,oCACA,YACA,CAxJA,iMAGA,QACA,SAEA,kDAOA,CAJA,UACA,iCACA,qFACA,wCACA,CACA,EACA,kBACA,SAEA,oBAGA,IACA,MAEA,SACA,EACA,+BACA,uBAGA,OACA,yBAEA,sBACA,IACA,wDACA,IACA,kBACA,QACA,IACA,QAEA,MAmDA,YACA,uBACA,eAEA,QACA,+BACA,OACA,oBAEA,6BACA,WACA,IAEA,IAEA,QACA,CAnEA,IACA,MACA,gBACA,0BACA,yCAyEA,gBACA,6BACA,eACA,qBACA,UACA,MACA,MACA,eACA,EACA,CAlFA,WAgEA,cACA,eAkBA,WACA,UACA,iDACA,cACA,2BACA,iBACA,KACA,wBACA,uCACA,QAIA,CACA,QACA,EACA,SACA,IACA,CACA,CApCA,EACA,CAlEA,OACA,gCACA,OACA,oBACA,IACA,MAEA,IACA,MAEA,mBACA,kDACA,GAEA,mCACA,2BAEA,QACA,MAEA,mBACA,OACA,OACA,MACA,aACA,gBAEA,UACA,EACA,OA6EA,YACA,WACA,SACA,QACA,oCAEA,kBACA,KACA,0BACA,gBACA,8BAEA,IACA,IACA,OA+FA,gBACA,aACA,QAEA,+BACA,KACA,kBACA,gBACA,aAllBA,SAAoBt3d,GACpB,gBACA,eACA,wBACA,QAEA,KACA,CAEA,YACA,CAwkBA,4BAEA,IACA,IACA,KACA,qCAEA,CA5GA,OACA,CA7FA,IA8FA,YACA,WACA,SAKA,GAJA,aAIA,YACA,MtCvWA,KACA,QAEA,GArJiB,WsC0fjB,0DAyBA,kBACA,gBACA,aACA,GACA,4BAEA,CACA,aASA,GAPA,GACA,IACA,gBAGA,eAEA,GACA,MArCA,WACA,WACA,2BACA,yBAEA,OAEA,0BACA,MACA,uBACA,IACA,uBAEA,CACA,CACA,QACA,CAqBA,GACA,MACA,mBACA,kBACA,gBACA,2BAGA,wBACA,CACA,uBAEA,yCACA,kCACA,CACA,CACA,IACA,oBACA,KACA,eACA,IACA,wBACA,6BAEA,IACA,IACA,uBACA,KACA,eACA,IACA,2BACA,6BAEA,IACA,IACA,uBACA,6BACA,KAEA,CAhFA,SAEA,CACA,CA1GA,IAOA,CAJA,UAGA,MADA,qBACA,EACA,CAxDA,CAyDA,EACA,4BACA,mBAEA,uBACA,GACA,EA6NA,gDACA,2DACA,qDACA,+CACA,IACA,CACA,CAgJA,OA5tBA,kBA0tBA,kBACA,sBACA,CACA,CA9tBA,CA8tBE,ICnyBF,SAASu3d,GAAYC,GACrB,kBACA,mBACA,UACA,CACA,CACA,IxCgtBA,GwChtBIC,GAAiBF,GAAY,eAC7BG,GAAYH,GAAY,UACxBI,GAAcJ,GAAY,YAC1BK,GAAeL,GAAY,aAC3BM,GAAaN,GAAY,WACzBO,GAAUP,GAAY,QACtBQ,GAAWR,GAAY,SACvBS,GAAcT,GAAY,YAC1B,GAAJ,YAEA,aACA,yBACA,CACA,OAJA,kBAIA,CACA,CANA,ExCwsBA,GwClsB2B,CAC3B,6BACA,6BACA,+BACA,kCACA,6BACA,kBACA,kBACA,8BACA,0BACA,wBACA,sCACA,4BACA,oCACA,4BACA,kBACA,gCACA,sCACA,8BACA,8CACA,sBACA,oCACA,0BACA,4BACA,0CACA,oBACA,8BACA,gCACA,wBACA,qBACA,yBACA,iCACA,6BACA,+CACA,mDACA,mBACA,6BACA,yBACA,wDACA,8BACA,0BACA,gBACA,kCACA,gCACA,+DACA,mEACA,qBACA,qBACA,2BACA,qCACA,mCACA,6BACA,yCACA,gCACA,oCACA,wCACA,8BACA,6BxC2oBA,WACA,WACA,IACA,qBACA,MACA,GAEA,IyCluBA,IACA,eACA,mBACA,iBACA,aACA,aACA,WACA,iBACA,cAEA,UCLI,GAIJ,gBACA,WACA,OACA,QACA,iBACA,UACA,kBACA,SACA,oBACA,kBACA,OACA,OACA,OACA,sBACA,6BACA,EACA,OACA,OAEA,EC3BIU,GAIJ,cAIA,qBACA,WACA,YAEA,gBACA,eACA,E5CTI,GAAJ,WDEA,UACA,gBACA,UACA,UACA,aACA,YACA,eACA,kBACA,cACA,kBACA,cACA,YACA,aACA,WACA,UACA,2BACA,WACA,mBACA,gBACA,eACA,gBACA,qBACA,qBACA,gBACA,yBACA,iBACA,aACA,2BACA,yBACA,aACA,mBACA,aACA,gCACA,wBACA,wBACA,iBACA,mBACA,gBACA,0BACA,sBACA,cACA,gBACA,sBAEA,cACA,uBACA,gBACA,mBAEA,qBACA,sBACA,sBACA,uBACA,yCACA,sB8CzDIC,GAAc,WACdC,GAAc,WACdC,GAAgB,aAChBC,GAAU,OACd,SAASC,GAAYvoe,EAAQ++C,EAAO39C,GACpC,mBACA,CAqFA,SAASone,GAA6B18d,EAAM8uC,EAAY6tb,GACxD,OACA,oBACA,MACA,OAEA,MACA,OAEA,OACA,iBAEA,GAEA,CACA,SAASC,GAA2C9tb,EAAY+tb,GAChE,OACA,oBACA,SACA,GAEA,CAEA,SAASC,GAAgBvod,EAAQwod,EAAcC,EAAeh9d,GAC9D,oBACA,0BACA,uBACA,4BAEA,cACA,8BAMA,OALA,6BAhHA,SAAiCuU,EAAQ4I,EAAM9T,GAE/C,sBACA,kBACA,kBACA,SACA,IACA,iCACA,iCAEA,YACA,GACA,2BAEA,eACA,IACA,kCACA,2BACA,uBACA,6BACA,oBAEA,gBACA,MACA,sCACA,2CACA,iCACA,sBACA,kBACA,kBACA,wBACA,oCACA,8BACA,yCACA,CACA,WACA,GACA,wBAGA,cACA,IACA,sCACA,mCACA,4BAmBA,IAFA,SAEA,mBAEA,GADA,MACA,cACA,MACA,IACA,cAGA,oBACA,MACA,IACA,yCACA,2BAEA,2DAEA,WACA,CAkCA,QAEA,gBACA,KACA,CACA,SAAS4zd,GAAoB1od,EAAQyod,GACrC,WACA,mDAEA,CACA,QACA,iBAoBA,mBACA,QACA,SACA,KACA,iBACA,wBAEA,gBACA,gBACA,iBAGA,OACA,cAIA,cACA,OACA,QAEA,gBACA,kBACA,mBACA,uBACA,CCxLA,SAASE,GAAehpe,EAAQ0je,GAChC,iBACA,CCCA,ICLI,GDKA,GAAJ,WACA,gBACA,SACA,KACA,qBACA,QACA,EACA,sBAEA,OADA,GAEA,EACA,iCACA,kBACA,8BAEA,IACA,iEACA,MAIA,QACA,EACA,iBACA,YACA,EACA,kBAEA,IADA,YACA,gBACA,YAKA,OAHA,UACA,MAEA,CACA,EACA,iBACA,KACA,IACA,EACA,sBACA,iBACA,EACA,kBACA,kBACA,QACA,aACA,oBAGA,IACA,CACA,GACA,C,oBAwBA,CA7EA,GAiFI,GAAJ,YAEA,gBACA,6BASA,OARA,gCACA,kBACA,OACA,EACA,kBACA,CAEA,IACA,CACA,C,OAZA,kB,aAoBA,CArBA,CAqBE,IAKE,GAAJ,YAEA,gBACA,6BACA,KA6FA,OA5FA,gCACA,eACA,WACA,sBA4CA,gBACA,SAMA,OALA,kBACA,qBACA,QAEA,IACA,CACA,CACA,cACA,QACA,IACA,iCACA,cACA,MACA,oBAKA,GAJA,QAEA,iBAEA,SACA,QAEA,CAIA,CAFA,UACA,4DACA,CACA,QACA,CACA,gBACA,QACA,IACA,iCACA,kBACA,SAOA,CALA,UAGA,qBACA,+EACA,CACA,CArFA,cACA,aAEA,YACA,WACA,kBACA,eAEA,IACA,sDACA,OAIA,SACA,kBACA,EACA,iBACA,QACA,kBACA,YACA,IACA,EACA,kBACA,+BACA,eACA,0CACA,eACA,YAGA,6DACA,aAEA,WAEA,EACA,kBACA,eACA,SACA,UACA,CA6CA,IACA,CACA,CAiBA,OAlHA,kBA8GA,yBACA,kCAEA,sBACA,CACA,CApHA,CAoHE,IEjOE,GAAJ,WACA,cACA,iCAcA,gBACA,6BACA,KACA,MAEA,OADA,iFACA,EAEA,QAEA,OADA,8EACA,EAEA,sBAEA,sBACA,uBAEA,oBACA,uBAEA,cACA,uBAEA,SACA,aAEA,CACA,kGACA,IAEA,YACA,GAKA,CAHA,UAEA,qEACA,CACA,CACA,QACA,CAmCA,OAlCA,QACA,mCACA,sBACA,kBACA,MACA,gBACA,wBACA,aAIA,OACA,kBAgBA,KAZA,EAHA,EACA,EAEA,UAIA,UAKA,QAIA,OAEA,OAvBA,mHAwBA,WACA,KACA,CACA,CACA,gBACA,MACA,KACA,SAGA,CACA,KACA,yBACA,IACA,IADA,KACA,aACA,QACA,CACA,MATA,gHAWA,QACA,CACA,kBACA,MAyCA,OAxCA,IACA,KACA,oBACA,qBACA,MACA,iBAEA,SACA,YAEA,MAIA,aAHA,sDAMA,gBACA,cACA,sBAEA,YACA,gBAEA,CACA,oBACA,SACA,WAGA,MAEA,MAGA,gDACA,oBAEA,KAEA,CACA,CAjJA,wBACA,kBACA,IACA,kBAKA,CAHA,UAEA,qEACA,CACA,CAyIA,GACA,C,oBASA,CAlKA,GCEI,GAAJ,WACA,aACA,CAwBA,OAvBA,yCAEA,YADA,oCAEA,EACA,oCACA,UACA,SAEA,WAZuB,GAavB,cAIA,IADA,WACA,gBACA,2BAGA,KAEA,kBACA,EAEA,2BACA,CACA,CA3BA,GCAI,GACJ,WACA,IACA,SACA,SAFA,KAGA,gBAkBA,OAhBA,uBACA,oCAEA,iCACA,kCAEA,4BACA,yCAEA,sDACA,6CAIA,iBAGA,CACA,ECxBI,GAAJ,WACA,gBAEA,8BACA,mBACA,cACA,wLACA,OAEA,WACA,kCACA,CAiBA,OAbA,oCACA,eAEA,sCAGA,qBAIA,qCAEA,EACA,CACA,CA7BA,GJMA,SAAS,GAAT,GACA,IACA,qBAGA,CADA,UACA,CAEA,WACA,CACA,SAASuF,KACT,MACA,EAGA,UACA,uCAEA,yBACA,8BACA,gCACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,6BACA,mBACA,2BACA,0CACA,CACA,CACA,IAAIC,KAAuB,GAA3B,IACA,gBACA,gBH0OA,gBACA,QACA,oBACA,sBACA,gBACA,gBACA,cACA,OACA,QAEA,wBACA,mBACA,uBACA,EGtPA,gBHoKA,gBAGA,MAFA,QAGA,YACA,OACA,WACA,cAIA,WACA,gBACA,mBACA,YANA,mBACA,WAOA,IAEA,EAFA,UAGA,4BACA,mBAEA,cACA,QACA,QACA,YACA,YAEA,eACA,mBAGA,iBACA,uBAGA,mBACA,iCAGA,WAEA,GADA,OACA,cACA,MACA,IAEA,cACA,OACA,QAEA,4BACA,mBACA,uBACA,EGxNA,gBHyNA,gBACA,QACA,YACA,QACA,eACA,YACA,YACA,cACA,OACA,QAEA,iCACA,mBACA,uBACA,EGtOA,gBHuIA,gBACA,QAEA,oBACA,gBACA,cACA,OACA,QAEA,YACA,kCACA,mBACA,uBACA,EGnJA,gBHoJA,gBACA,QACA,YACA,YACA,YACA,cACA,OACA,QAEA,uEACA,mBACA,uBACA,EG/JA,gBHyFA,gBACA,QACA,oBACA,gBACA,cACA,OACA,QAEA,YACA,SAEA,OADA,0CACA,KAEA,uCACA,iGACA,mBACA,uBACA,EGzGA,IACI,GAAJ,YAEA,aACA,IAQA,EACA,EAEA,EACA,EACA,EACA,EACA,EAfA,qBACA,gBACA,gBAIA,qBAUA,IACA,EACA,EACA,EACA,EAJA,IAqxBA,OAhxBA,gCAkUA,wBACA,WAOA,GANA,WACA,SACA,UACA,mBAGA,uBAGA,iCACA,KAEA,YADA,YAIA,mBACA,KACA,mCACA,4CAGA,UAEA,MACA,qBAEA,iBAEA,IADA,IAEA,sJACA,OAKA,KACA,SACA,IACA,QAEA,gBACA,WAGA,aAIA,IACA,WAGA,CACA,cAEA,kBAKA,eACA,kBACA,iCACA,GACA,GAIA,CACA,gBACA,EAEA,QAIA,MAEA,CACA,cACA,WACA,QACA,cACA,mBAGA,kDAEA,oBAMA,OALA,IACA,SAEA,uBAEA,CACA,CAQA,gBACA,oBAEA,MAGA,IADA,SACA,iBACA,WACA,QAEA,QAEA,CACA,UACA,WACA,2FAEA,CAEA,CAMA,gBACA,yBACA,cACA,IACA,QAIA,CAFA,UAEA,CAEA,mBACA,yCAEA,OACA,mBAEA,sBACA,aACA,IACA,0EACA,8CAEA,uBACA,UACA,gBACA,CACA,gBACA,UAEA,IADA,YACA,gBACA,YAEA,KAziBqC,KA0iBrC,QAEA,KAEA,MAIA,WACA,uFAEA,CACA,CAMA,gBACA,OACA,CAMA,gBACA,MACA,cACA,mBACA,0CACA,cACA,QACA,KACA,KAEA,OACA,sBAEA,sBACA,gBACA,IACA,WACA,cACA,UACA,SAEA,OAEA,GACA,IACA,eAGA,KACA,MAEA,uBACA,IAEA,QAIA,CAFA,UAEA,CAEA,iBACA,IACA,2BACA,IACA,KACA,KAEA,IACA,KAMA,KAIA,2BACA,wCACA,IALA,sBAQA,uBACA,IACA,KACA,KAEA,IACA,KACA,mBAEA,GAMA,CAJA,UACA,GACA,eAEA,CACA,QAEA,KACA,sBAEA,CAKA,cACA,IACA,cACA,oBACA,+CACA,+CACA,QAEA,CAMA,CAJA,UACA,sDACA,YAEA,CACA,WACA,CAKA,gBAEA,QADA,aACA,cAGA,YACA,SACA,IACA,gCACA,WACA,QACA,EASA,YACA,IACA,EADA,KAEA,QACA,QAEA,CACA,0BAEA,kCACA,KACA,8BACA,CAEA,iBAEA,GACA,CAxBA,IACA,GAVA,CAWA,CA0BA,aACA,WACA,6BACA,0BACA,yBACA,OACA,gBACA,KACA,CACA,CACA,aACA,gBACA,OACA,MACA,CAKA,cACA,gBACA,SACA,SACA,OACA,CACA,gBACA,SACA,yDAEA,CACA,CAWA,gBACA,YACA,OACA,qBACA,8CACA,8CAGA,6CACA,oCAIA,OAHA,0HAEA,QAGA,2CACA,iBAEA,eACA,UACA,QACA,CACA,gBACA,SACA,qCAEA,CACA,CAkCA,aACA,WACA,WACA,cACA,eACA,KACA,OACA,IACA,OACA,KACA,KACA,OACA,OACA,IACA,IACA,OACA,OACA,MACA,CA7wBA,IACA,mBACA,IACA,IACA,EACA,oBACA,IACA,KACA,OAEA,wCACA,kBAEA,IAEA,EACA,wBAEA,QADA,eACA,GAEA,IACA,IACA,kBAIA,CAFA,UACA,4FACA,CACA,CACA,EACA,2BACA,MACA,uDASA,eARA,IACA,aAIA,CAFA,UACA,iIACA,CAMA,EACA,0BACA,MACA,EACA,+BACA,mBACA,iDAEA,sBACA,qBACA,eACA,mBACA,IACA,OACA,EACA,WACA,IACA,cACA,oDACA,EFtIA,YACA,WACA,OACA,KACA,KACA,8BACA,IAIA,GAHA,UACA,MAEA,GAEA,gBACA,YACA,OACA,KAGA,CACA,GAEA,gBACA,QAOA,CAHA,UAEA,IACA,CACA,cACA,SAOA,OANA,IACA,uBAEA,oBAGA,CACA,CACA,aACA,IACA,CACA,aACA,IACA,CAyBA,OACA,SAzBA,WACA,SAOA,OANA,EACA,IAEA,gBACA,SAEA,CACA,EAiBA,iCACA,OAjBA,WACA,WACA,SAEA,GADA,QACA,GAEA,gBACA,gBACA,OAEA,CACA,IACA,CACA,EAMA,CE2DA,IAEA,GADA,MACA,cACA,gDACA,IACA,4BACA,gCACA,gCA6qBA,YACA,wBACA,KACA,SAIA,OADA,WADA,kEAEA,WACA,CAprBA,KACA,kDAEA,2GACA,4BACA,6BACA,IAEA,YACA,QACA,cACA,KAEA,gBACA,MAEA,UACA,KAGA,QACA,gBAEA,KAEA,WAGA,GAFA,gBAEA,EAEA,KAEA,GAEA,cACA,GAEA,cACA,EAGA,CAEA,EACA,iCAEA,IA0MA,EA1MA,GADA,mBACA,MACA,IAEA,eAEA,OAGA,MAEA,YADA,wCAIA,sBAEA,YADA,iEAQA,GALA,QAEA,oBAGA,MAEA,YADA,wCAIA,GA+KA,EA/KA,GAgLA,yBA7KA,YADA,oFAIA,oBAEA,0BAGA,sBACA,+BACA,MAEA,YADA,sDAGA,SAkBA,GAhBA,mBACA,0BACA,IACA,eACA,KACA,gDAOA,CAJA,UAGA,iHACA,CACA,WACA,WAEA,EACA,OAGA,qBAEA,QACA,SACA,mBACA,kBAGA,SAEA,GAIA,CAFA,UACA,oHACA,CAEA,kBACA,EAIA,uCACA,kBACA,oDAEA,EAMA,sBAEA,QADA,eACA,EACA,IACA,YAEA,eAgBA,YAhBA,CACA,cACA,oBAsgBA,cACA,MATA,WACA,qBACA,aACA,mBAGA,kCACA,CAEA,GACA,YACA,IACA,UAIA,CAFA,UACA,+EACA,CAEA,CA/gBA,SAEA,EACA,cAGA,UAEA,EAEA,QACA,CAIA,GAQA,CANA,UAEA,aACA,SACA,yGAEA,CAEA,EACA,4BACA,kBACA,WACA,GACA,EAIA,sBACA,yDACA,gBACA,EAIA,oBAKA,IAJA,SACA,KAGA,MADA,mBACA,gBACA,WACA,yBACA,gBACA,SAIA,QAEA,CACA,SACA,eAEA,SACA,0EAEA,UACA,KACA,+CACA,yBACA,mEAEA,EAIA,oBACA,gBACA,EAIA,2BACA,YACA,4BAIA,CACA,WACA,4CACA,YACA,WAGA,aAEA,MAZA,IACA,UAYA,CAidA,IACA,CACA,CA+FA,OAv4BA,kBAyyBA,sCACA,MAQA,OAHA,EAJA,kBAIA,EAHA,2CAKA,oBACA,MACA,EAoFA,CACA,CAz4BA,CAy4BE,IK17BF,eACA,MACA,SAEA,IACA,KADA,MANwB,MAOxB,cACA,YAPiC,KAQjC,cACA,iBACA,OACA,MACA,CACA,QACA,OACA,gBAEA,qBAEA,mCACA,gDACA,CAEA,eACA,CACA,QACA,CC1BA,IACA,UACA,cACA,UACA,QACA,aCPA,WACA,aACA,CACA,8BAEA,MAOA,YARA,cAGA,EADA,qCACA,YAGA,KAEA,SACA,CAEA,CAfA,GF6BA,IG1BA,OAEA,SAASC,GAAiBC,EAAcrlc,EAAO6hc,GAC/C,oBAIA,GAHA,wBACA,kBACA,KACA,YACA,UACA,GAR+B,kCAQ/B,MAEA,IACA,OACA,YACA,sBAGA,CCdA,IAAI,GAAJ,YAEA,aACA,IAIA,EACA,EALA,qBAqDA,aACA,IACA,IACA,CACA,OAxDA,0CACA,eAIA,IACA,gCACA,sCACA,OACA,OACA,MAaA,OAXA,SACA,CACA,kBACA,oBACA,eAEA,OADA,YACA,CAEA,GACA,EAGA,EACA,oBAGA,IAFA,SACA,QACA,aACA,WACA,KACA,IACA,4BACA,KACA,KACA,CAMA,CAJA,UAGA,uHACA,CAEA,CACA,GACA,UAEA,EACA,iBACA,GACA,CACA,IAKA,CACA,C,OA5DA,kB,aA0EA,CA3EA,CA2EE,IClEEyD,GAAqB,yCACrBC,GAAyB,uBACzBC,GAAuB,4BAGvBC,GAAoB,CAExB,uBAOA,SAASC,GAAmB7D,EAAM8D,GAClC,gBACA,CAqCA,SAASC,GAAiBC,EAAWC,GACrC,SAOA,OANA,kBACA,SAEA,OADA,MACA,CAEA,IACA,CACA,CAWA,IAAI,GAAJ,WACA,aAEA,MACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAIA,IACA,iCAgQA,aACA,KAEA,eACA,QACA,gBACA,SACA,SACA,KACA,OACA,OACA,OACA,OACA,OACA,OACA,KACA,OACA,OACA,OACA,KACA,OACA,sBACA,OACA,MACA,CACA,aACA,kBACA,CAEA,cAEA,MAlXA,SAA6Bxpd,EAAQypd,EAAiBC,GACtD,MAEA,KAGA,KAwBA,OAtBA,mBAEA,mBACA,OAEA,YACA,QACA,OACA,SAKA,OAJA,mEAQA,SAEA,QAEA,KACA,GACA,QAEA,MACA,CACA,CA+UA,aACA,QACA,OAEA,YAGA,GADA,KFxNA,gBACA,SAKA,GAJA,GAEA,sCAEA,GAEA,SACA,kBACA,UACA,QAEA,IACA,SACA,CACA,QACA,CEuMA,SACA,GAKA,eACA,OACA,YAGA,KADA,YAEA,WAEA,cACA,MAEA,EFpZA,cACA,aACA,4BACA,CACA,oBACA,kBACA,aAEA,MADA,IAEA,OACA,OAEA,CACA,KACA,kBAEA,qBACA,cACA,WACA,SAEA,IACA,MAEA,GAEA,IAEA,GACA,CA+CA,SACA,GACA,qCACA,YACA,6BACA,KACA,kBACA,kBACA,qBAEA,GACA,EACA,yBACA,QACA,EACA,+BACA,wBACA,QACA,eACA,QACA,GACA,EACA,OApEA,cACA,UACA,UAOA,OALA,mBACA,QACA,eACA,QACA,KACA,CACA,EA2DA,iBACA,qBACA,uBACA,kBACA,GACA,QACA,EACA,kBACA,qBACA,uBACA,oBACA,GACA,QACA,EACA,SAxEA,cACA,UACA,SACA,YAQA,OANA,mBACA,QACA,eACA,SACA,IACA,KACA,CACA,EA6DA,WA5DA,YACA,WAmBA,OAlBA,YACA,kBAEA,sBACA,wBACA,aAGA,OAFA,KAEA,CAEA,IACA,GAEA,QAGA,IAEA,CACA,EAwCA,wBAEA,QACA,KACA,OAEA,aACA,IACA,WACA,IACA,gBACA,QAEA,QACA,OAEA,CAgCA,OA3CA,SAYA,qBACA,uBACA,UACA,IACA,SAEA,oBACA,KACA,GACA,OACA,IAIA,WACA,yBACA,OACA,GACA,MAGA,IAIA,CACA,GACA,eACA,KACA,GACA,KACA,CACA,EACA,sBACA,GACA,GAEA,QACA,CE0OA,MAGA,SACA,SAEA,YAEA,aACA,UAEA,4BACA,GA8JA,YACA,gBACA,wCACA,QAEA,CAlKA,GAEA,CACA,cACA,MACA,OACA,OA4CA,OA3CA,sBACA,2BAEA,OADA,KACA,CAEA,KACA,OAEA,mBAEA,KACA,GACA,WAEA,gBACA,YACA,EACA,uBACA,YACA,oBACA,EACA,uBACA,WACA,cACA,UACA,OACA,WAEA,MACA,GACA,mBACA,GAEA,GACA,UACA,YAGA,OACA,GACA,EA7BA,EA8BA,GAEA,CACA,CACA,aACA,OAEA,uBAEA,aACA,SAEA,eACA,CACA,QACA,CACA,kBACA,eACA,IACA,KADA,UACA,GACA,kBACA,SAEA,KACA,oBACA,QAIA,KAHA,QAKA,IACA,IAEA,SACA,IACA,oBACA,SACA,kBACA,QAIA,KAHA,QAKA,IACA,QACA,IACA,KAEA,OACA,IACA,QACA,MAEA,KAEA,CACA,aACA,2BACA,IACA,kBACA,MACA,UACA,mCACA,iBACA,oBACA,uBACA,2BACA,GACA,UACA,IACA,QAEA,CACA,oBACA,SACA,mBAEA,UACA,EACA,CAkCA,cACA,YACA,EAEA,aAGA,KAEA,CA7eA,IACA,2BAEA,wBACA,GACA,OAGA,SACA,oDAEA,QACA,QACA,WACA,yCAEA,IAEA,QAibA,WACA,2BACA,WAEA,SACA,QAEA,gBACA,EvDliBA,YACA,QACA,MACA,yBACA,qBAEA,CACA,SACA,CuD0hBA,IACA,SAEA,CA3bA,GA4bA,WACA,2BACA,OAEA,QAEA,GAEA,WAEA,CArcA,GAucA,YACA,sBArcA,IACA,SAEA,W1DxIA,a0DwIA,KAEA,MACA,sDACA,cACA,QACA,cACA,0BAEA,KACA,gBACA,EACA,qCACA,SAMA,OALA,GACA,kBACA,cACA,IAEA,KACA,EACA,oBAEA,qBAEA,0BAEA,oBACA,WAEA,WAIA,QAEA,EACA,QACA,iBAOA,OANA,IAEA,EA1GA,WACA,MACA,4BACA,kBACA,oBACA,oBACA,sBACA,sBACA,GACA,CAiGA,GAEA,SAEA,CACA,EAOA,kBACA,GACA,QAEA,EAKA,kBACA,GACA,QAEA,EACA,0BAIA,OAHA,IACA,eAEA,CACA,EACA,2BACA,GACA,EACA,iBACA,WACA,qBACA,gBACA,QACA,eAEA,CAEA,a5BZA,E4BaA,EACA,yBACA,GACA,EACA,sBACA,YACA,EACA,0BACA,eACA,QACA,KACA,kBACA,UACA,GACA,CACA,EAIA,+BACA,UACA,kCAUA,OATA,SACA,OAEA,GACA,iBAEA,0BACA,GACA,KAEA,EAIA,iBACA,IACA,iBACA,IACA,IAEA,EAEA,yDACA,yBACA,WACA,cACA,GAEA,GArQ2B,0BAwQ3B,GAEA,OAEA,WACA,YAEA,MACA,mBACA,GACA,YAKA,cACA,kBACA,KAEA,WAEA,QAEA,QACA,CAbA,kBACA,IACA,OACA,MAWA,YACA,KAEA,EACA,QACA,8BACA,MAGA,OAFA,cACA,MAGA,eACA,SAGA,OAFA,cACA,2CAGA,OACA,WAEA,cACA,SACA,YAEA,KACA,QACA,CACA,MACA,iBAKA,IAJA,CACA,SACA,cAEA,YACA,GAKA,YACA,aACA,KALA,QAOA,GACA,MAEA,GAEA,EACA,0BACA,QACA,EACA,QACA,0BAIA,OAHA,IACA,E3B7PA,YACA,SACA,OACA,mBACA,YACA,EACA,oBACA,gBACA,OACA,EACA,sBACA,YACA,EACA,uBACA,mBACA,QACA,QAEA,EACA,qBACA,YACA,EACA,sBACA,kBACA,QACA,QAEA,EACA,yBACA,YACA,EACA,0BACA,sBACA,OACA,EAEA,C2ByNA,IAEA,CACA,EACA,0BACA,SACA,EAEA,gDAiPA,GACA,C,oBAkKA,CA9qBA,GCtFA,SAASC,GAAc5/c,EAAWhY,EAAM63d,EAASlzd,GACjD,kBACA,WACA,KACA,6CAGA,IACA,IAGA,CADA,UACA,CAIA,GACA,CAIA,IAAI,GAAJ,WACA,cACA,kBACA,gCACA,iCACA,kBACA,kBACA,EAKA,kBAEA,IADA,kBACA,MACA,qBACA,aAEA,EAKA,kBACA,4BACA,QACA,GACA,EAOA,oBACA,4BACA,UACA,GACA,EAMA,oBACA,2BACA,UACA,GACA,EACA,kBACA,KAEA,YACA,4BACA,MACA,4CAGA,QAEA,IAGA,CACA,GACA,C,oBAwCA,CAzGA,GCfI,GAAJ,YAEA,aACA,yBA8BA,OA7BA,gCAsBA,cACA,cACA,GACA,YAEA,CA1BA,wBACA,oCACA,EACA,oBACA,mEACA,WACA,KAEA,8BAOA,YACA,YACA,KACA,8BAEA,CATA,IACA,UACA,wCACA,CAaA,IACA,CACA,C,OAjCA,kB,aAyCA,CA1CA,CA0CE,I5D9CE,GAAJ,WACI,GAAJ,aDCA,gBACA,UACA,YACA,aACA,YACA,gBACA,UACA,aACA,YACA,sBACA,iCACA,+BACA,iCACA,oBACA,aACA,oBACA,WACA,sBACA,4BACA,eACA,iBACA,iCACA,+BACA,4BACA,yBACA,kCACA,4CACA,uBACA,yBACA,0BACA,YACA,gBACA,eACA,cACA,cACA,qBACA,eACA,gBACA,mBACA,YACA,qBACA,yBACA,kBACA,0BACA,qBACA,cACA,2BACA,mBACA,2BACA,cACA,yBACA,UACA,gBACA,4BACA,wBACA,uBACA,mB8DzDA,SAASmzd,GAAkBC,EAAenke,EAAOC,GACjD,QACA,OACA,OAIA,OAHA,OACA,WAEA,CACA,CAEA,SAASmke,GAAiBnqe,EAAOmS,EAAM+3d,EAAenke,EAAOC,GAC7D,QACA,YAIA,OAHA,IACA,iBAEA,CACA,CAEA,SAASoke,GAAcpqe,EAAOmS,EAAMhR,GACpC,iBACA,IACA,WACA,eACA,KACA,KAEA,QACA,CAyGA,IAAI,GACJ,WACA,WACA,SACA,0BACA,SACA,SAEA,QACA,EAII,GAAJ,WACA,oBACA,MACA,OACA,IAIA,WACA,eACA,0BACA,WACA,iCACA,wBACA,WACA,YACA,eACA,WACA,gBACA,WACA,WACA,WACA,2BACA,WACA,4BACA,eACA,4BACA,kBACA,QACA,QACA,oDAEA,MADA,IACA,MACA,YACA,oBACA,cACA,GAGA,KAEA,8BACA,4BACA,2BACA,EACA,yBACA,uCACA,EACA,sBACA,MAGA,GADA,qFACA,QACA,YAEA,WACA,uBACA,iBAEA,oBACA,SACA,WACA,iBACA,kCACA,sBACA,eACA,yBACA,IACA,QAEA,eACA,sBA3LA,SAA2Bkpe,EAAUrmG,GAqBrC,YACA,YACA,IACA,SACA,UACA,QACA,iBACA,YACA,aACA,YACA,aACA,cACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,iBACA,oBACA,oBACA,iBACA,MAEA,iBAEA,iBAEA,iBAEA,iBAEA,iBAEA,gCAEA,6BAEA,YACA,IACA,gBAEA,cACA,uBACA,WACA,MACA,SACA,oBACA,qBACA,WACA,qBACA,uBACA,OACA,eAEA,WAEA,QAGA,IACA,MACA,IACA,YACA,CACA,gBACA,gBACA,eACA,MAEA,QACA,mCAGA,IACA,QAEA,CAwFA,MACA,KACA,8BACA,mBACA,YAGA,MACA,UACA,MAEA,YAIA,GAHA,IACA,wBAEA,MACA,0BACA,mBACA,sBAGA,kCACA,aACA,kBACA,qBACA,gEAEA,aACA,kEAEA,CACA,CACA,CACA,QACA,EACA,iBACA,MACA,OACA,QACA,sBAEA,OADA,MACA,qBACA,UACA,iBACA,GACA,YACA,YAEA,CACA,QACA,CACA,GACA,C,oBAkBA,CAhJA,GCjJIsmG,GAAsB,YACtBC,GAAa,UACbC,GAAc,WACdC,GAAW,QAEXC,GAAa,EAkDjB,SAASC,GAAiCC,GAC1C,SACA,IACA,OACA,WACA,gBACA,4BAIA,CADA,UACA,CAEA,QACA,CAEA,SAASC,GAAuBC,EAAqBC,EAAO7vd,EAASy/B,EAAYqwb,GACjF,qBACA,CAEA,SAASC,GAAsBH,EAAqBC,EAAO7vd,EAASy/B,EAAYqwb,GAChF,qBACA,CAEA,SAASE,GAAyBJ,EAAqBK,EAAiBjwd,GAExE,mBACA,UACA,iCACA,qBAEA,CACA,CACA,SAASkwd,GAASjqe,EAAO4B,GACzB,YACA,cAEA,CACA,CA+BA,WACA,0BACA,+BACA,0BACA,kCAEI,GAAJ,YAEA,aACA,IAGA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAxBA,qBA4xBA,OA3xBA,0BACA,eAuBA,gCACA,iBAmIA,aACA,WACA,KACA,KACA,0BACA,qBACA,KACA,KACA,IACA,OACA,KACA,KACA,OACA,KACA,IACA,KACA,KACA,KACA,KACA,OACA,OACA,OACA,IACA,IACA,CAsCA,cACA,SASA,OARA,qBACA,gCACA,qBAEA,OADA,MACA,CAEA,IAEA,CACA,CAuFA,kBACA,E7B7UA,gBACA,SACA,mBAEA,IACA,C6BwUA,QACA,CAsEA,kBACA,SACA,wCAYA,GAVA,kBACA,QACA,QACA,iBAEA,IACA,YAEA,IAEA,EACA,SAEA,gBACA,YAkCA,QAjCA,sBACA,MAEA,QAEA,oBAGA,MAIA,QAEA,qCACA,eALA,0BAQA,cACA,MAEA,EAEA,OACA,QAKA,OACA,MAGA,CACA,CAIA,gBACA,SACA,IAKA,OAJA,QACA,sBAGA,GAEA,CACA,CACA,aACA,WAQA,OAPA,2BACA,0BAGA,yBACA,wBAEA,CACA,CAoJA,gBACA,gBACA,WACA,kBACA,KACA,iBACA,UACA,4BACA,eACA,WAEA,CACA,CACA,CACA,oBACA,YACA,OACA,8BACA,QACA,QACA,KACA,aACA,IACA,SACA,IAGA,IAFA,WACA,iBACA,oBACA,WACA,MACA,4BACA,sBACA,oCACA,UAGA,wCAEA,QACA,KACA,CACA,mBAEA,KAEA,CACA,CACA,EACA,GACA,OACA,OACA,aACA,qBAEA,oBAEA,iBAEA,KAMA,eAKA,CAFA,UACA,KACA,CACA,CAjDA,EAkDA,CAqCA,cACA,SACA,IACA,QAEA,oBADA,oBACA,EAGA,MAHA,MASA,CAFA,UACA,6EACA,CACA,QACA,CACA,0BAIA,kBACA,YACA,+BACA,IACA,mBAEA,kHACA,CAVA,IAWA,WACA,QACA,wBACA,IACA,EADA,qBAEA,IACA,IACA,qCAKA,CAFA,UACA,0GACA,CACA,QACA,QACA,qDAEA,uBAGA,WACA,sBACA,4BAGA,gBACA,YACA,IACA,CAjvBA,IACA,+BACA,oBACA,sBACA,qDAuJA,YACA,uBAEA,qBAEA,GADA,SACA,cACA,kCACA,IACA,YAUA,GATA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,eACA,eACA,GACA,oCAEA,EADA,QACA,4BAGA,QAEA,CACA,UACA,SACA,CAnLA,KA9IA,SAAiC+ne,GACjC,SACA,SACA,2BACA,WACA,aACA,aACA,WACA,CACA,WAIA,GAHA,SACA,MAEA,EAEA,KACA,oBACA,OAEA,gCACA,2BAQA,CANA,UAEA,KACA,kFACA,kBAEA,CAEA,QACA,CAgZA,YAEA,yBACA,KACA,sBACA,OACA,YACA,SACA,kBACA,6BA0IA,kBACA,MACA,MACA,mBACA,oBACA,2EACA,iBACA,QACA,QACA,4BACA,SACA,UACA,QACA,OACA,CAtJA,UAuJA,YACA,iEACA,MACA,IACA,2BA6BA,YACA,YAGA,gBACA,YACA,+BACA,IACA,mBAEA,iHACA,CATA,WACA,YASA,iCACA,IACA,iCACA,MACA,OACA,mBAEA,SACA,MA4DA,YACA,MACA,IACA,cACA,cAEA,IADA,kBACA,CACA,iCACA,gBACA,CAQA,CALA,UACA,gIACA,UACA,mBACA,GACA,CACA,CA9EA,IACA,sBACA,MAnCA,YACA,IACA,qBACA,sBAEA,YAIA,CADA,UACA,CAEA,WACA,CAuBA,IACA,iBACA,GACA,MACA,cACA,MAGA,6BACA,KACA,kBACA,oBACA,YACA,eACA,OACA,OAEA,IACA,OACA,CACA,CACA,QACA,IACA,SACA,IACA,IACA,0BAKA,CAFA,UACA,0GACA,CACA,QACA,QACA,qDAEA,uBAGA,QACA,sBACA,4BAYA,CATA,QAGA,IACA,UAGA,CADA,UACA,CAEA,CACA,gBACA,SACA,GACA,CA3GA,GAYA,CATA,UACA,aAEA,gCACA,0IACA,UACA,cACA,GAEA,CACA,KACA,CAvKA,IAEA,CACA,EACA,+GAGA,yBACA,KACA,kBACA,OACA,YACA,QACA,kCACA,WACA,WACA,yBACA,4BAEA,CACA,EACA,0GAGA,0BACA,KACA,gBACA,OACA,YACA,QACA,kCACA,YACA,4BAEA,CACA,EACA,gHAGA,qCACA,KACA,oBACA,UACA,YACA,aACA,eAEA,CACA,EACA,2HAEA,MA1JA,WACA,MAtWA,WACA,qBACA,UACA,eACA,qBACA,UACA,KAEA,KACA,CA6VA,GACA,MACA,OAEA,qBACA,aACA,KAyDA,GAOA,WACA,KACA,oBAEA,WACA,MApEA,WACA,KAEA,oBACA,MACA,WACA,eAEA,QACA,cACA,EAqbA,cACA,MACA,MACA,mBACA,oBACA,2EACA,iBACA,WACA,QACA,qBACA,iBAGA,QAEA,YACA,SACA,QAEA,0BACA,SAEA,QACA,SACA,MACA,0DACA,uBACA,OACA,OAEA,GACA,CAGA,OAFA,QACA,aACA,CACA,CAxdA,MACA,mBACA,OACA,WAEA,QACA,CACA,EACA,kBACA,OACA,mBACA,IAEA,gCAoBA,OAnBA,kCACA,MACA,OACA,mBAEA,SACA,MA+fA,YACA,YACA,IACA,uBACA,gBAOA,CALA,UACA,yHACA,6BACA,kBAEA,CAEA,CA5gBA,IACA,GACA,MACA,SACA,iCACA,OACA,OAEA,IACA,OACA,CACA,QACA,IACA,CACA,uBAEA,MADA,uCACA,CACA,IAEA,CACA,EAEA,0GAEA,MAiBA,IAGA,iBAEA,CA1RA,GAkLA,WACA,0BACA,IACA,mBAEA,CAtLA,GAEA,EACA,yBACA,GACA,EACA,oCACA,UACA,EACA,wBAEA,8BAEA,GAvFA,SAAqC3gd,EAAWw7c,EAAM0E,EAAUO,EAAKxyc,EAAO6pB,GAC5E,MACA,QACA,QAUA,IATA,cACA,MACA,QACA,UACA,SACA,gBACA,eACA,mBACA,GACA,aACA,WACA,WACA,IACA,iBAKA,CAHA,UACA,YACA,yFACA,CAEA,CACA,YACA,YACA,WACA,CACA,CAyDA,kBACA,GACA,wBACA,IACA,MAKA,0DACA,MACA,0BACA,eACA,IACA,eAEA,CAQA,IAPA,uBAEA,qBACA,IACA,uBAGA,GAEA,GADA,WAEA,KAEA,4BACA,eACA,IACA,eAEA,CACA,OACA,CACA,QACA,CACA,MACA,wBACA,MACA,sBACA,eACA,IACA,eAEA,CACA,MAOA,IAPA,uBAEA,qBACA,IACA,uBAGA,GACA,MACA,GADA,WAEA,KAEA,wBACA,eACA,IACA,eAEA,CACA,CACA,QACA,CAEA,EACA,sBACA,gBAIA,WACA,WACA,iDACA,WAEA,YACA,gBAEA,oDACA,cACA,MACA,OACA,wMAEA,CACA,EACA,oCACA,OACA,OACA,MAaA,OAXA,UACA,CACA,kBACA,oBACA,eAEA,OADA,eACA,CAEA,GACA,EAGA,CA+nBA,IACA,CACA,CAyEA,OAx2BA,kBAgyBA,8BACA,MA0BA,OAzBA,MACA,QACA,SACA,SACA,aACA,+BACA,2BACA,sCACA,kCACA,0CACA,aACA,2BACA,SACA,SACA,SACA,SACA,8BACA,SACA,iBACA,gBACA,YACA,oBAEA,aACA,CAEA,EACA,4BACA,iBAIA,OAHA,kBACA,WACA,IACA,CACA,EAIA,2CACA,qBACA,EA8BA,oCACA,CACA,CA12BA,CA02BE,ICl/BEopb,GACJ,WACA,ECFIC,GAIJ,WAEA,kBAGA,0BACA,EjEHA,oBACA,YACA,qBACA,eACA,iBACA,oBACA,yBACA,6BACA,wBACA,2BACA,sBACA,gCACA,0BACA,0BACA,eACA,kBACA,kBACA,gBACA,0BACA,uBACA,cACA,cACA,YACA,sBACA,qBACA,yBACA,sBACA,YACA,qBACA,iBACA,kBACA,UACA,qBACA,wBkEtCI,GAIJ,YACA,kEACA,ECRIC,GACJ,WACA,ECGIC,GACJ,WACA,EAII,GAAJ,WACA,gBACA,IACA,EACA,EACA,QACA,QACA,eALA,MAKA,YACA,IACA,MAEA,YACA,4CAEA,YACA,wCAEA,QAEA,gCACA,eACA,yCAwEA,gBACA,SACA,4BACA,eACA,YACA,IACA,eACA,WACA,eACA,gDAEA,eACA,4CAEA,OAEA,UACA,QACA,QACA,KAKA,CAFA,UACA,0FACA,CAEA,QACA,CAYA,gBACA,YACA,QACA,YACA,UAGA,cACA,aACA,IAEA,EADA,IACA,MAGA,MAEA,yBAIA,0CACA,GACA,CApIA,mBA7BsB,aA6BtB,GACA,aACA,iBAGA,WACA,KACA,QACA,OACA,GAqCA,cACA,SACA,aACA,kBACA,aAEA,CAKA,gBACA,IACA,SAEA,CACA,gBACA,CAtDA,KAEA,qBACA,YACA,qBACA,UACA,UAGA,GADA,GADA,aACA,MACA,GACA,CAEA,EA8EA,YACA,gBACA,2BACA,0CACA,YACA,WAEA,MACA,yFAEA,CAtFA,MAIA,gCACA,MAGA,EAMA,oBACA,IA+FA,MA/FA,QA+FA,EA9FA,KA8FA,EA9FA,MA8FA,EA9FA,MAkGA,0BAjGA,CAmGA,GACA,CAeA,OAHA,wBACA,mBACA,2BACA,CACA,CAlLA,GCTI,GACJ,kBACA,WACA,kBACA,aACA,YACA,mBACA,cAEA,cACA,ECRA,SAASC,GAAmB70d,GAI5B,8BACA,GACA,sBAIA,CACA,IAAI,GAAJ,WACA,gBAIA,kBAIA,wBACA,IAEA,EAFA,QACA,QAEA,iCACA,QACA,+CACA,wCAEA,iBACA,MACA,SACA,qBACA,UACA,UAEA,aAEA,CACA,aACA,YAGA,QAFA,yBACA,iBAEA,CACA,cACA,mBAIA,OAHA,2BACA,SACA,KAEA,CACA,cAKA,kBADA,QAEA,CACA,UACA,SAEA,EADA,QACA,YAGA,uDACA,OACA,CAGA,2BAGA,mBACA,MAEA,OADA,gBACA,aACA,OACA,YAEA,gBACA,WAEA,CACA,8CAIA,QAHA,eAEA,iBAEA,0KACA,OAFA,CAMA,QACA,YACA,IACA,QACA,kCAEA,GAGA,yBAXA,CAaA,EAKA,2CACA,WACA,WACA,YACA,EACA,kBAEA,iBAGA,EADA,EADA,QAEA,WAEA,CACA,GACA,CA6BA,OAHA,sBACA,2BACA,mCACA,CACA,CA/IA,GCFI80d,GAAS,MACTC,GAAU,OACd,SAASC,GAAa7re,EAAQoS,GAC9B,kCACA,IAEA,CACA,ICVI05d,GDUA,GAAJ,WACA,kBACA,WACA,WACA,mCACA,iCACA,iCAGA,GAFA,qBACA,qBACA,MACA,kBACA,gBACA,kBACA,mBACA,IAEA,EAFA,SACA,SAEA,IACA,iBACA,gBACA,eAEA,sBACA,gBACA,CACA,iBACA,gBACA,OAEA,eACA,WAEA,CAEA,sBACA,uBACA,CACA,QACA,EACA,oBACA,0CACA,EACA,oBACA,uBACA,EACA,oBACA,oBACA,MAEA,eACA,qCACA,oCACA,CACA,EACA,oBACA,eACA,MAEA,gCACA,wBACA,mBACA,yBACA,oCACA,CACA,EACA,oBACA,iBACA,MACA,eACA,gDACA,4CACA,qDACA,yCACA,oCAEA,CACA,EACA,oBACA,iBACA,GACA,qCAEA,EACA,oBACA,YACA,MACA,gEACA,gCACA,0BACA,iCACA,CACA,EACA,gCACA,YACA,GACA,wBAEA,EACA,oBACA,aACA,MAGA,GAFA,YAEA,2BAEA,8BACA,mBACA,uBACA,CACA,EACA,wBACA,YACA,IACA,mBACA,iBACA,gBACA,eACA,gBACA,kBAEA,CACA,GACA,C,oBAgCA,CA1JA,GE+HA,GA3IA,YAEA,aACA,IAGA,EACA,EACA,EALA,qBAkGA,OAjGA,eACA,gBAIA,gCAkDA,aACA,OACA,OACA,MACA,CArDA,IACA,+BACA,sBAoDA,YACA,mBACA,SACA,eACA,uBACA,QACA,oBACA,4CACA,IACA,YACA,wBACA,sBACA,iBACA,2BACA,sBACA,6BACA,EAEA,cACA,CAtEA,GACA,EAKA,iCACA,cAGA,CACA,kBAEA,0BACA,wCAEA,oBACA,WAEA,+CACA,YAGA,aAKA,GAJA,WACA,iBA8CA,cAEA,gBACA,eACA,gBACA,WACA,WACA,WACA,WACA,WACA,WACA,uBACA,WACA,WACA,cACA,CA3DA,MACA,UACA,SACA,2CpE6PA,gBACA,cACA,CoE9PA,iBACA,CACA,kBACA,CACA,EACA,4BACA,qBACA,WACA,YACA,GACA,kBAGA,GACA,CA0CA,IACA,CACA,CAmCA,OAxIA,kBAsGA,8BACA,MACA,EACA,OAmBA,OAlBA,GACA,0CAEA,yBACA,2CACA,4CACA,+CACA,2BACA,2BACA,oDACA,6BACA,2BACA,2BACA,2BACA,2BACA,4BACA,2BACA,CAEA,EAWA,CACA,CA1IA,CA0IE,IxE7IEC,GAA8B,2BAC9BC,GAAS,QAEb,aAIA,WAGA,6BAEA,sBACA,eACA,kBACA,cACA,cACA,eACA,iBACA,kBACA,uBACA,YACA,cDlBA,iBAMA,2BAeA,YACA,aACA,UACA,aACA,WACA,sBACA,wBACA,iBACA,mCACA,6BACA,mBACA,iCACA,awE7BIC,GAAiC,CACrC,oFAuDI,GAAJ,WACA,cACA,IAEA,EACA,EACA,EACA,EACA,EACA,EACA,EARA,OASA,iCAgPA,cACA,OACA,OACA,OACA,OACA,OAlPA,uBACA,gBACA,eACA,gBACA,UACA,gBACA,sBACA,mBACA,iCACA,CACA,aACA,SACA,SACA,SACA,SACA,SACA,yBACA,UACA,uFAEA,QACA,QAgNA,aACA,wCA/MA,uBACA,cACA,mDACA,wBACA,kBACA,QACA,GACA,GACA,UACA,EACA,uBACA,cACA,wBACA,kBACA,MACA,QAGA,QAEA,GACA,GACA,EACA,kCA+CA,YA9CA,cAyBA,gDACA,4CAEA,kEACA,SACA,SACA,SACA,SACA,aAEA,0BACA,YACA,YACA,0BArCA,YACA,MACA,SACA,QACA,MAEA,IACA,UAEA,wBACA,kCAGA,oBACA,QACA,OACA,gBACA,eACA,OAEA,GACA,CACA,CAiBA,QAEA,eACA,QACA,QACA,IACA,CACA,EACA,wCtE2dA,gBACA,uBACA,kBACA,UACA,WACA,MACA,kBAEA,cAGA,kBACA,gBAEA,KAEA,mBACA,WACA,gBACA,MACA,MAIA,QAGA,CACA,EAEA,eACA,IAEA,CAEA,CsE3fA,kBAEA,uBACA,GACA,EACA,wBAEA,IACA,sBAGA,IADA,2BACA,cAEA,EADA,mBAEA,CACA,4BACA,aACA,CAaA,CAXA,SAEA,mBACA,YAQA,CACA,EACA,kBAEA,eACA,iBAWA,GAHA,UAGA,gBACA,qBACA,MACA,eACA,iCACA,8BAEA,CACA,CACA,EACA,KACA,4CACA,IACA,wBAEA,kDAGA,YACA,MAGA,YACA,MAIA,GrEdA,WAEA,WACA,yBA7NqB,gBA8NrB,SAGA,CqEOA,IACA,kFAGA,8CAEA,SAEA,CACA,EACA,uBACA,QACA,EACA,yBACA,SAEA,IjDuHA,ciDtHA,QjD8JA,cAEA,eACA,aACA,eACA,CiDlKA,UAEA,yBACA,EACA,YvE3QA,euE6QA,GACA,GACA,2BACA,GACA,WACA,GACA,GvElRA,iBACA,gBAEA,kBACA,mBuEoRA,MA0BA,WACA,QACA,GA5BA,CACA,GACA,0BAEA,QA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","file":"static/js/2.9a87c5c2.chunk.js","sourcesContent":["export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport function isFalsyOrWhitespace(str) {\r\n if (!str || typeof str !== 'string') {\r\n return true;\r\n }\r\n return str.trim().length === 0;\r\n}\r\nconst _formatRegexp = /{(\\d+)}/g;\r\n/**\r\n * Helper to produce a string with a variable number of arguments. Insert variable segments\r\n * into the string using the {n} notation where N is the index of the argument following the string.\r\n * @param value string to which formatting is applied\r\n * @param args replacements for {n}-entries\r\n */\r\nexport function format(value, ...args) {\r\n if (args.length === 0) {\r\n return value;\r\n }\r\n return value.replace(_formatRegexp, function (match, group) {\r\n const idx = parseInt(group, 10);\r\n return isNaN(idx) || idx < 0 || idx >= args.length ?\r\n match :\r\n args[idx];\r\n });\r\n}\r\n/**\r\n * Converts HTML characters inside the string to use entities instead. Makes the string safe from\r\n * being used e.g. in HTMLElement.innerHTML.\r\n */\r\nexport function escape(html) {\r\n return html.replace(/[<>&]/g, function (match) {\r\n switch (match) {\r\n case '<': return '<';\r\n case '>': return '>';\r\n case '&': return '&';\r\n default: return match;\r\n }\r\n });\r\n}\r\n/**\r\n * Escapes regular expression characters in a given string\r\n */\r\nexport function escapeRegExpCharacters(value) {\r\n return value.replace(/[\\\\\\{\\}\\*\\+\\?\\|\\^\\$\\.\\[\\]\\(\\)]/g, '\\\\$&');\r\n}\r\n/**\r\n * Removes all occurrences of needle from the beginning and end of haystack.\r\n * @param haystack string to trim\r\n * @param needle the thing to trim (default is a blank)\r\n */\r\nexport function trim(haystack, needle = ' ') {\r\n const trimmed = ltrim(haystack, needle);\r\n return rtrim(trimmed, needle);\r\n}\r\n/**\r\n * Removes all occurrences of needle from the beginning of haystack.\r\n * @param haystack string to trim\r\n * @param needle the thing to trim\r\n */\r\nexport function ltrim(haystack, needle) {\r\n if (!haystack || !needle) {\r\n return haystack;\r\n }\r\n const needleLen = needle.length;\r\n if (needleLen === 0 || haystack.length === 0) {\r\n return haystack;\r\n }\r\n let offset = 0;\r\n while (haystack.indexOf(needle, offset) === offset) {\r\n offset = offset + needleLen;\r\n }\r\n return haystack.substring(offset);\r\n}\r\n/**\r\n * Removes all occurrences of needle from the end of haystack.\r\n * @param haystack string to trim\r\n * @param needle the thing to trim\r\n */\r\nexport function rtrim(haystack, needle) {\r\n if (!haystack || !needle) {\r\n return haystack;\r\n }\r\n const needleLen = needle.length, haystackLen = haystack.length;\r\n if (needleLen === 0 || haystackLen === 0) {\r\n return haystack;\r\n }\r\n let offset = haystackLen, idx = -1;\r\n while (true) {\r\n idx = haystack.lastIndexOf(needle, offset - 1);\r\n if (idx === -1 || idx + needleLen !== offset) {\r\n break;\r\n }\r\n if (idx === 0) {\r\n return '';\r\n }\r\n offset = idx;\r\n }\r\n return haystack.substring(0, offset);\r\n}\r\nexport function convertSimple2RegExpPattern(pattern) {\r\n return pattern.replace(/[\\-\\\\\\{\\}\\+\\?\\|\\^\\$\\.\\,\\[\\]\\(\\)\\#\\s]/g, '\\\\$&').replace(/[\\*]/g, '.*');\r\n}\r\nexport function stripWildcards(pattern) {\r\n return pattern.replace(/\\*/g, '');\r\n}\r\nexport function createRegExp(searchString, isRegex, options = {}) {\r\n if (!searchString) {\r\n throw new Error('Cannot create regex from empty string');\r\n }\r\n if (!isRegex) {\r\n searchString = escapeRegExpCharacters(searchString);\r\n }\r\n if (options.wholeWord) {\r\n if (!/\\B/.test(searchString.charAt(0))) {\r\n searchString = '\\\\b' + searchString;\r\n }\r\n if (!/\\B/.test(searchString.charAt(searchString.length - 1))) {\r\n searchString = searchString + '\\\\b';\r\n }\r\n }\r\n let modifiers = '';\r\n if (options.global) {\r\n modifiers += 'g';\r\n }\r\n if (!options.matchCase) {\r\n modifiers += 'i';\r\n }\r\n if (options.multiline) {\r\n modifiers += 'm';\r\n }\r\n if (options.unicode) {\r\n modifiers += 'u';\r\n }\r\n return new RegExp(searchString, modifiers);\r\n}\r\nexport function regExpLeadsToEndlessLoop(regexp) {\r\n // Exit early if it's one of these special cases which are meant to match\r\n // against an empty string\r\n if (regexp.source === '^' || regexp.source === '^$' || regexp.source === '$' || regexp.source === '^\\\\s*$') {\r\n return false;\r\n }\r\n // We check against an empty string. If the regular expression doesn't advance\r\n // (e.g. ends in an endless loop) it will match an empty string.\r\n const match = regexp.exec('');\r\n return !!(match && regexp.lastIndex === 0);\r\n}\r\nexport function regExpFlags(regexp) {\r\n return (regexp.global ? 'g' : '')\r\n + (regexp.ignoreCase ? 'i' : '')\r\n + (regexp.multiline ? 'm' : '')\r\n + (regexp /* standalone editor compilation */.unicode ? 'u' : '');\r\n}\r\nexport function splitLines(str) {\r\n return str.split(/\\r\\n|\\r|\\n/);\r\n}\r\n/**\r\n * Returns first index of the string that is not whitespace.\r\n * If string is empty or contains only whitespaces, returns -1\r\n */\r\nexport function firstNonWhitespaceIndex(str) {\r\n for (let i = 0, len = str.length; i < len; i++) {\r\n const chCode = str.charCodeAt(i);\r\n if (chCode !== 32 /* Space */ && chCode !== 9 /* Tab */) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\n/**\r\n * Returns the leading whitespace of the string.\r\n * If the string contains only whitespaces, returns entire string\r\n */\r\nexport function getLeadingWhitespace(str, start = 0, end = str.length) {\r\n for (let i = start; i < end; i++) {\r\n const chCode = str.charCodeAt(i);\r\n if (chCode !== 32 /* Space */ && chCode !== 9 /* Tab */) {\r\n return str.substring(start, i);\r\n }\r\n }\r\n return str.substring(start, end);\r\n}\r\n/**\r\n * Returns last index of the string that is not whitespace.\r\n * If string is empty or contains only whitespaces, returns -1\r\n */\r\nexport function lastNonWhitespaceIndex(str, startIndex = str.length - 1) {\r\n for (let i = startIndex; i >= 0; i--) {\r\n const chCode = str.charCodeAt(i);\r\n if (chCode !== 32 /* Space */ && chCode !== 9 /* Tab */) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\nexport function compare(a, b) {\r\n if (a < b) {\r\n return -1;\r\n }\r\n else if (a > b) {\r\n return 1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n}\r\nexport function compareSubstring(a, b, aStart = 0, aEnd = a.length, bStart = 0, bEnd = b.length) {\r\n for (; aStart < aEnd && bStart < bEnd; aStart++, bStart++) {\r\n let codeA = a.charCodeAt(aStart);\r\n let codeB = b.charCodeAt(bStart);\r\n if (codeA < codeB) {\r\n return -1;\r\n }\r\n else if (codeA > codeB) {\r\n return 1;\r\n }\r\n }\r\n const aLen = aEnd - aStart;\r\n const bLen = bEnd - bStart;\r\n if (aLen < bLen) {\r\n return -1;\r\n }\r\n else if (aLen > bLen) {\r\n return 1;\r\n }\r\n return 0;\r\n}\r\nexport function compareIgnoreCase(a, b) {\r\n return compareSubstringIgnoreCase(a, b, 0, a.length, 0, b.length);\r\n}\r\nexport function compareSubstringIgnoreCase(a, b, aStart = 0, aEnd = a.length, bStart = 0, bEnd = b.length) {\r\n for (; aStart < aEnd && bStart < bEnd; aStart++, bStart++) {\r\n let codeA = a.charCodeAt(aStart);\r\n let codeB = b.charCodeAt(bStart);\r\n if (codeA === codeB) {\r\n // equal\r\n continue;\r\n }\r\n const diff = codeA - codeB;\r\n if (diff === 32 && isUpperAsciiLetter(codeB)) { //codeB =[65-90] && codeA =[97-122]\r\n continue;\r\n }\r\n else if (diff === -32 && isUpperAsciiLetter(codeA)) { //codeB =[97-122] && codeA =[65-90]\r\n continue;\r\n }\r\n if (isLowerAsciiLetter(codeA) && isLowerAsciiLetter(codeB)) {\r\n //\r\n return diff;\r\n }\r\n else {\r\n return compareSubstring(a.toLowerCase(), b.toLowerCase(), aStart, aEnd, bStart, bEnd);\r\n }\r\n }\r\n const aLen = aEnd - aStart;\r\n const bLen = bEnd - bStart;\r\n if (aLen < bLen) {\r\n return -1;\r\n }\r\n else if (aLen > bLen) {\r\n return 1;\r\n }\r\n return 0;\r\n}\r\nexport function isLowerAsciiLetter(code) {\r\n return code >= 97 /* a */ && code <= 122 /* z */;\r\n}\r\nexport function isUpperAsciiLetter(code) {\r\n return code >= 65 /* A */ && code <= 90 /* Z */;\r\n}\r\nfunction isAsciiLetter(code) {\r\n return isLowerAsciiLetter(code) || isUpperAsciiLetter(code);\r\n}\r\nexport function equalsIgnoreCase(a, b) {\r\n return a.length === b.length && doEqualsIgnoreCase(a, b);\r\n}\r\nfunction doEqualsIgnoreCase(a, b, stopAt = a.length) {\r\n for (let i = 0; i < stopAt; i++) {\r\n const codeA = a.charCodeAt(i);\r\n const codeB = b.charCodeAt(i);\r\n if (codeA === codeB) {\r\n continue;\r\n }\r\n // a-z A-Z\r\n if (isAsciiLetter(codeA) && isAsciiLetter(codeB)) {\r\n const diff = Math.abs(codeA - codeB);\r\n if (diff !== 0 && diff !== 32) {\r\n return false;\r\n }\r\n }\r\n // Any other charcode\r\n else {\r\n if (String.fromCharCode(codeA).toLowerCase() !== String.fromCharCode(codeB).toLowerCase()) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n}\r\nexport function startsWithIgnoreCase(str, candidate) {\r\n const candidateLength = candidate.length;\r\n if (candidate.length > str.length) {\r\n return false;\r\n }\r\n return doEqualsIgnoreCase(str, candidate, candidateLength);\r\n}\r\n/**\r\n * @returns the length of the common prefix of the two strings.\r\n */\r\nexport function commonPrefixLength(a, b) {\r\n let i, len = Math.min(a.length, b.length);\r\n for (i = 0; i < len; i++) {\r\n if (a.charCodeAt(i) !== b.charCodeAt(i)) {\r\n return i;\r\n }\r\n }\r\n return len;\r\n}\r\n/**\r\n * @returns the length of the common suffix of the two strings.\r\n */\r\nexport function commonSuffixLength(a, b) {\r\n let i, len = Math.min(a.length, b.length);\r\n const aLastIndex = a.length - 1;\r\n const bLastIndex = b.length - 1;\r\n for (i = 0; i < len; i++) {\r\n if (a.charCodeAt(aLastIndex - i) !== b.charCodeAt(bLastIndex - i)) {\r\n return i;\r\n }\r\n }\r\n return len;\r\n}\r\n/**\r\n * See http://en.wikipedia.org/wiki/Surrogate_pair\r\n */\r\nexport function isHighSurrogate(charCode) {\r\n return (0xD800 <= charCode && charCode <= 0xDBFF);\r\n}\r\n/**\r\n * See http://en.wikipedia.org/wiki/Surrogate_pair\r\n */\r\nexport function isLowSurrogate(charCode) {\r\n return (0xDC00 <= charCode && charCode <= 0xDFFF);\r\n}\r\n/**\r\n * See http://en.wikipedia.org/wiki/Surrogate_pair\r\n */\r\nexport function computeCodePoint(highSurrogate, lowSurrogate) {\r\n return ((highSurrogate - 0xD800) << 10) + (lowSurrogate - 0xDC00) + 0x10000;\r\n}\r\n/**\r\n * get the code point that begins at offset `offset`\r\n */\r\nexport function getNextCodePoint(str, len, offset) {\r\n const charCode = str.charCodeAt(offset);\r\n if (isHighSurrogate(charCode) && offset + 1 < len) {\r\n const nextCharCode = str.charCodeAt(offset + 1);\r\n if (isLowSurrogate(nextCharCode)) {\r\n return computeCodePoint(charCode, nextCharCode);\r\n }\r\n }\r\n return charCode;\r\n}\r\n/**\r\n * get the code point that ends right before offset `offset`\r\n */\r\nfunction getPrevCodePoint(str, offset) {\r\n const charCode = str.charCodeAt(offset - 1);\r\n if (isLowSurrogate(charCode) && offset > 1) {\r\n const prevCharCode = str.charCodeAt(offset - 2);\r\n if (isHighSurrogate(prevCharCode)) {\r\n return computeCodePoint(prevCharCode, charCode);\r\n }\r\n }\r\n return charCode;\r\n}\r\nexport function nextCharLength(str, offset) {\r\n const graphemeBreakTree = GraphemeBreakTree.getInstance();\r\n const initialOffset = offset;\r\n const len = str.length;\r\n const initialCodePoint = getNextCodePoint(str, len, offset);\r\n offset += (initialCodePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n let graphemeBreakType = graphemeBreakTree.getGraphemeBreakType(initialCodePoint);\r\n while (offset < len) {\r\n const nextCodePoint = getNextCodePoint(str, len, offset);\r\n const nextGraphemeBreakType = graphemeBreakTree.getGraphemeBreakType(nextCodePoint);\r\n if (breakBetweenGraphemeBreakType(graphemeBreakType, nextGraphemeBreakType)) {\r\n break;\r\n }\r\n offset += (nextCodePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n graphemeBreakType = nextGraphemeBreakType;\r\n }\r\n return (offset - initialOffset);\r\n}\r\nexport function prevCharLength(str, offset) {\r\n const graphemeBreakTree = GraphemeBreakTree.getInstance();\r\n const initialOffset = offset;\r\n const initialCodePoint = getPrevCodePoint(str, offset);\r\n offset -= (initialCodePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n let graphemeBreakType = graphemeBreakTree.getGraphemeBreakType(initialCodePoint);\r\n while (offset > 0) {\r\n const prevCodePoint = getPrevCodePoint(str, offset);\r\n const prevGraphemeBreakType = graphemeBreakTree.getGraphemeBreakType(prevCodePoint);\r\n if (breakBetweenGraphemeBreakType(prevGraphemeBreakType, graphemeBreakType)) {\r\n break;\r\n }\r\n offset -= (prevCodePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n graphemeBreakType = prevGraphemeBreakType;\r\n }\r\n return (initialOffset - offset);\r\n}\r\n/**\r\n * A manual decoding of a UTF8 string.\r\n * Use only in environments which do not offer native conversion methods!\r\n */\r\nexport function decodeUTF8(buffer) {\r\n // https://en.wikipedia.org/wiki/UTF-8\r\n const len = buffer.byteLength;\r\n const result = [];\r\n let offset = 0;\r\n while (offset < len) {\r\n const v0 = buffer[offset];\r\n let codePoint;\r\n if (v0 >= 0b11110000 && offset + 3 < len) {\r\n // 4 bytes\r\n codePoint = ((((buffer[offset++] & 0b00000111) << 18) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 12) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 6) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 0) >>> 0));\r\n }\r\n else if (v0 >= 0b11100000 && offset + 2 < len) {\r\n // 3 bytes\r\n codePoint = ((((buffer[offset++] & 0b00001111) << 12) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 6) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 0) >>> 0));\r\n }\r\n else if (v0 >= 0b11000000 && offset + 1 < len) {\r\n // 2 bytes\r\n codePoint = ((((buffer[offset++] & 0b00011111) << 6) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 0) >>> 0));\r\n }\r\n else {\r\n // 1 byte\r\n codePoint = buffer[offset++];\r\n }\r\n if ((codePoint >= 0 && codePoint <= 0xD7FF) || (codePoint >= 0xE000 && codePoint <= 0xFFFF)) {\r\n // Basic Multilingual Plane\r\n result.push(String.fromCharCode(codePoint));\r\n }\r\n else if (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {\r\n // Supplementary Planes\r\n const uPrime = codePoint - 0x10000;\r\n const w1 = 0xD800 + ((uPrime & 0b11111111110000000000) >>> 10);\r\n const w2 = 0xDC00 + ((uPrime & 0b00000000001111111111) >>> 0);\r\n result.push(String.fromCharCode(w1));\r\n result.push(String.fromCharCode(w2));\r\n }\r\n else {\r\n // illegal code point\r\n result.push(String.fromCharCode(0xFFFD));\r\n }\r\n }\r\n return result.join('');\r\n}\r\n/**\r\n * Generated using https://github.com/alexdima/unicode-utils/blob/master/generate-rtl-test.js\r\n */\r\nconst CONTAINS_RTL = /(?:[\\u05BE\\u05C0\\u05C3\\u05C6\\u05D0-\\u05F4\\u0608\\u060B\\u060D\\u061B-\\u064A\\u066D-\\u066F\\u0671-\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1-\\u07EA\\u07F4\\u07F5\\u07FA-\\u0815\\u081A\\u0824\\u0828\\u0830-\\u0858\\u085E-\\u08BD\\u200F\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFD3D\\uFD50-\\uFDFC\\uFE70-\\uFEFC]|\\uD802[\\uDC00-\\uDD1B\\uDD20-\\uDE00\\uDE10-\\uDE33\\uDE40-\\uDEE4\\uDEEB-\\uDF35\\uDF40-\\uDFFF]|\\uD803[\\uDC00-\\uDCFF]|\\uD83A[\\uDC00-\\uDCCF\\uDD00-\\uDD43\\uDD50-\\uDFFF]|\\uD83B[\\uDC00-\\uDEBB])/;\r\n/**\r\n * Returns true if `str` contains any Unicode character that is classified as \"R\" or \"AL\".\r\n */\r\nexport function containsRTL(str) {\r\n return CONTAINS_RTL.test(str);\r\n}\r\n/**\r\n * Generated using https://github.com/alexdima/unicode-utils/blob/master/generate-emoji-test.js\r\n */\r\nconst CONTAINS_EMOJI = /(?:[\\u231A\\u231B\\u23F0\\u23F3\\u2600-\\u27BF\\u2B50\\u2B55]|\\uD83C[\\uDDE6-\\uDDFF\\uDF00-\\uDFFF]|\\uD83D[\\uDC00-\\uDE4F\\uDE80-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD00-\\uDDFF\\uDE70-\\uDED6])/;\r\nexport function containsEmoji(str) {\r\n return CONTAINS_EMOJI.test(str);\r\n}\r\nconst IS_BASIC_ASCII = /^[\\t\\n\\r\\x20-\\x7E]*$/;\r\n/**\r\n * Returns true if `str` contains only basic ASCII characters in the range 32 - 126 (including 32 and 126) or \\n, \\r, \\t\r\n */\r\nexport function isBasicASCII(str) {\r\n return IS_BASIC_ASCII.test(str);\r\n}\r\nexport const UNUSUAL_LINE_TERMINATORS = /[\\u2028\\u2029]/; // LINE SEPARATOR (LS) or PARAGRAPH SEPARATOR (PS)\r\n/**\r\n * Returns true if `str` contains unusual line terminators, like LS or PS\r\n */\r\nexport function containsUnusualLineTerminators(str) {\r\n return UNUSUAL_LINE_TERMINATORS.test(str);\r\n}\r\nexport function containsFullWidthCharacter(str) {\r\n for (let i = 0, len = str.length; i < len; i++) {\r\n if (isFullWidthCharacter(str.charCodeAt(i))) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nexport function isFullWidthCharacter(charCode) {\r\n // Do a cheap trick to better support wrapping of wide characters, treat them as 2 columns\r\n // http://jrgraphix.net/research/unicode_blocks.php\r\n // 2E80 — 2EFF CJK Radicals Supplement\r\n // 2F00 — 2FDF Kangxi Radicals\r\n // 2FF0 — 2FFF Ideographic Description Characters\r\n // 3000 — 303F CJK Symbols and Punctuation\r\n // 3040 — 309F Hiragana\r\n // 30A0 — 30FF Katakana\r\n // 3100 — 312F Bopomofo\r\n // 3130 — 318F Hangul Compatibility Jamo\r\n // 3190 — 319F Kanbun\r\n // 31A0 — 31BF Bopomofo Extended\r\n // 31F0 — 31FF Katakana Phonetic Extensions\r\n // 3200 — 32FF Enclosed CJK Letters and Months\r\n // 3300 — 33FF CJK Compatibility\r\n // 3400 — 4DBF CJK Unified Ideographs Extension A\r\n // 4DC0 — 4DFF Yijing Hexagram Symbols\r\n // 4E00 — 9FFF CJK Unified Ideographs\r\n // A000 — A48F Yi Syllables\r\n // A490 — A4CF Yi Radicals\r\n // AC00 — D7AF Hangul Syllables\r\n // [IGNORE] D800 — DB7F High Surrogates\r\n // [IGNORE] DB80 — DBFF High Private Use Surrogates\r\n // [IGNORE] DC00 — DFFF Low Surrogates\r\n // [IGNORE] E000 — F8FF Private Use Area\r\n // F900 — FAFF CJK Compatibility Ideographs\r\n // [IGNORE] FB00 — FB4F Alphabetic Presentation Forms\r\n // [IGNORE] FB50 — FDFF Arabic Presentation Forms-A\r\n // [IGNORE] FE00 — FE0F Variation Selectors\r\n // [IGNORE] FE20 — FE2F Combining Half Marks\r\n // [IGNORE] FE30 — FE4F CJK Compatibility Forms\r\n // [IGNORE] FE50 — FE6F Small Form Variants\r\n // [IGNORE] FE70 — FEFF Arabic Presentation Forms-B\r\n // FF00 — FFEF Halfwidth and Fullwidth Forms\r\n // [https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms]\r\n // of which FF01 - FF5E fullwidth ASCII of 21 to 7E\r\n // [IGNORE] and FF65 - FFDC halfwidth of Katakana and Hangul\r\n // [IGNORE] FFF0 — FFFF Specials\r\n charCode = +charCode; // @perf\r\n return ((charCode >= 0x2E80 && charCode <= 0xD7AF)\r\n || (charCode >= 0xF900 && charCode <= 0xFAFF)\r\n || (charCode >= 0xFF01 && charCode <= 0xFF5E));\r\n}\r\n/**\r\n * A fast function (therefore imprecise) to check if code points are emojis.\r\n * Generated using https://github.com/alexdima/unicode-utils/blob/master/generate-emoji-test.js\r\n */\r\nexport function isEmojiImprecise(x) {\r\n return ((x >= 0x1F1E6 && x <= 0x1F1FF) || (x === 8986) || (x === 8987) || (x === 9200)\r\n || (x === 9203) || (x >= 9728 && x <= 10175) || (x === 11088) || (x === 11093)\r\n || (x >= 127744 && x <= 128591) || (x >= 128640 && x <= 128764)\r\n || (x >= 128992 && x <= 129003) || (x >= 129280 && x <= 129535)\r\n || (x >= 129648 && x <= 129750));\r\n}\r\n// -- UTF-8 BOM\r\nexport const UTF8_BOM_CHARACTER = String.fromCharCode(65279 /* UTF8_BOM */);\r\nexport function startsWithUTF8BOM(str) {\r\n return !!(str && str.length > 0 && str.charCodeAt(0) === 65279 /* UTF8_BOM */);\r\n}\r\nexport function containsUppercaseCharacter(target, ignoreEscapedChars = false) {\r\n if (!target) {\r\n return false;\r\n }\r\n if (ignoreEscapedChars) {\r\n target = target.replace(/\\\\./g, '');\r\n }\r\n return target.toLowerCase() !== target;\r\n}\r\n/**\r\n * Produces 'a'-'z', followed by 'A'-'Z'... followed by 'a'-'z', etc.\r\n */\r\nexport function singleLetterHash(n) {\r\n const LETTERS_CNT = (90 /* Z */ - 65 /* A */ + 1);\r\n n = n % (2 * LETTERS_CNT);\r\n if (n < LETTERS_CNT) {\r\n return String.fromCharCode(97 /* a */ + n);\r\n }\r\n return String.fromCharCode(65 /* A */ + n - LETTERS_CNT);\r\n}\r\n//#region Unicode Grapheme Break\r\nexport function getGraphemeBreakType(codePoint) {\r\n const graphemeBreakTree = GraphemeBreakTree.getInstance();\r\n return graphemeBreakTree.getGraphemeBreakType(codePoint);\r\n}\r\nexport function breakBetweenGraphemeBreakType(breakTypeA, breakTypeB) {\r\n // http://www.unicode.org/reports/tr29/#Grapheme_Cluster_Boundary_Rules\r\n // !!! Let's make the common case a bit faster\r\n if (breakTypeA === 0 /* Other */) {\r\n // see https://www.unicode.org/Public/13.0.0/ucd/auxiliary/GraphemeBreakTest-13.0.0d10.html#table\r\n return (breakTypeB !== 5 /* Extend */ && breakTypeB !== 7 /* SpacingMark */);\r\n }\r\n // Do not break between a CR and LF. Otherwise, break before and after controls.\r\n // GB3 CR × LF\r\n // GB4 (Control | CR | LF) ÷\r\n // GB5 ÷ (Control | CR | LF)\r\n if (breakTypeA === 2 /* CR */) {\r\n if (breakTypeB === 3 /* LF */) {\r\n return false; // GB3\r\n }\r\n }\r\n if (breakTypeA === 4 /* Control */ || breakTypeA === 2 /* CR */ || breakTypeA === 3 /* LF */) {\r\n return true; // GB4\r\n }\r\n if (breakTypeB === 4 /* Control */ || breakTypeB === 2 /* CR */ || breakTypeB === 3 /* LF */) {\r\n return true; // GB5\r\n }\r\n // Do not break Hangul syllable sequences.\r\n // GB6 L × (L | V | LV | LVT)\r\n // GB7 (LV | V) × (V | T)\r\n // GB8 (LVT | T) × T\r\n if (breakTypeA === 8 /* L */) {\r\n if (breakTypeB === 8 /* L */ || breakTypeB === 9 /* V */ || breakTypeB === 11 /* LV */ || breakTypeB === 12 /* LVT */) {\r\n return false; // GB6\r\n }\r\n }\r\n if (breakTypeA === 11 /* LV */ || breakTypeA === 9 /* V */) {\r\n if (breakTypeB === 9 /* V */ || breakTypeB === 10 /* T */) {\r\n return false; // GB7\r\n }\r\n }\r\n if (breakTypeA === 12 /* LVT */ || breakTypeA === 10 /* T */) {\r\n if (breakTypeB === 10 /* T */) {\r\n return false; // GB8\r\n }\r\n }\r\n // Do not break before extending characters or ZWJ.\r\n // GB9 × (Extend | ZWJ)\r\n if (breakTypeB === 5 /* Extend */ || breakTypeB === 13 /* ZWJ */) {\r\n return false; // GB9\r\n }\r\n // The GB9a and GB9b rules only apply to extended grapheme clusters:\r\n // Do not break before SpacingMarks, or after Prepend characters.\r\n // GB9a × SpacingMark\r\n // GB9b Prepend ×\r\n if (breakTypeB === 7 /* SpacingMark */) {\r\n return false; // GB9a\r\n }\r\n if (breakTypeA === 1 /* Prepend */) {\r\n return false; // GB9b\r\n }\r\n // Do not break within emoji modifier sequences or emoji zwj sequences.\r\n // GB11 \\p{Extended_Pictographic} Extend* ZWJ × \\p{Extended_Pictographic}\r\n if (breakTypeA === 13 /* ZWJ */ && breakTypeB === 14 /* Extended_Pictographic */) {\r\n // Note: we are not implementing the rule entirely here to avoid introducing states\r\n return false; // GB11\r\n }\r\n // GB12 sot (RI RI)* RI × RI\r\n // GB13 [^RI] (RI RI)* RI × RI\r\n if (breakTypeA === 6 /* Regional_Indicator */ && breakTypeB === 6 /* Regional_Indicator */) {\r\n // Note: we are not implementing the rule entirely here to avoid introducing states\r\n return false; // GB12 & GB13\r\n }\r\n // GB999 Any ÷ Any\r\n return true;\r\n}\r\nclass GraphemeBreakTree {\r\n constructor() {\r\n this._data = getGraphemeBreakRawData();\r\n }\r\n static getInstance() {\r\n if (!GraphemeBreakTree._INSTANCE) {\r\n GraphemeBreakTree._INSTANCE = new GraphemeBreakTree();\r\n }\r\n return GraphemeBreakTree._INSTANCE;\r\n }\r\n getGraphemeBreakType(codePoint) {\r\n // !!! Let's make 7bit ASCII a bit faster: 0..31\r\n if (codePoint < 32) {\r\n if (codePoint === 10 /* LineFeed */) {\r\n return 3 /* LF */;\r\n }\r\n if (codePoint === 13 /* CarriageReturn */) {\r\n return 2 /* CR */;\r\n }\r\n return 4 /* Control */;\r\n }\r\n // !!! Let's make 7bit ASCII a bit faster: 32..126\r\n if (codePoint < 127) {\r\n return 0 /* Other */;\r\n }\r\n const data = this._data;\r\n const nodeCount = data.length / 3;\r\n let nodeIndex = 1;\r\n while (nodeIndex <= nodeCount) {\r\n if (codePoint < data[3 * nodeIndex]) {\r\n // go left\r\n nodeIndex = 2 * nodeIndex;\r\n }\r\n else if (codePoint > data[3 * nodeIndex + 1]) {\r\n // go right\r\n nodeIndex = 2 * nodeIndex + 1;\r\n }\r\n else {\r\n // hit\r\n return data[3 * nodeIndex + 2];\r\n }\r\n }\r\n return 0 /* Other */;\r\n }\r\n}\r\nGraphemeBreakTree._INSTANCE = null;\r\nfunction getGraphemeBreakRawData() {\r\n // generated using https://github.com/alexdima/unicode-utils/blob/master/generate-grapheme-break.js\r\n return JSON.parse('[0,0,0,51592,51592,11,44424,44424,11,72251,72254,5,7150,7150,7,48008,48008,11,55176,55176,11,128420,128420,14,3276,3277,5,9979,9980,14,46216,46216,11,49800,49800,11,53384,53384,11,70726,70726,5,122915,122916,5,129320,129327,14,2558,2558,5,5906,5908,5,9762,9763,14,43360,43388,8,45320,45320,11,47112,47112,11,48904,48904,11,50696,50696,11,52488,52488,11,54280,54280,11,70082,70083,1,71350,71350,7,73111,73111,5,127892,127893,14,128726,128727,14,129473,129474,14,2027,2035,5,2901,2902,5,3784,3789,5,6754,6754,5,8418,8420,5,9877,9877,14,11088,11088,14,44008,44008,5,44872,44872,11,45768,45768,11,46664,46664,11,47560,47560,11,48456,48456,11,49352,49352,11,50248,50248,11,51144,51144,11,52040,52040,11,52936,52936,11,53832,53832,11,54728,54728,11,69811,69814,5,70459,70460,5,71096,71099,7,71998,71998,5,72874,72880,5,119149,119149,7,127374,127374,14,128335,128335,14,128482,128482,14,128765,128767,14,129399,129400,14,129680,129685,14,1476,1477,5,2377,2380,7,2759,2760,5,3137,3140,7,3458,3459,7,4153,4154,5,6432,6434,5,6978,6978,5,7675,7679,5,9723,9726,14,9823,9823,14,9919,9923,14,10035,10036,14,42736,42737,5,43596,43596,5,44200,44200,11,44648,44648,11,45096,45096,11,45544,45544,11,45992,45992,11,46440,46440,11,46888,46888,11,47336,47336,11,47784,47784,11,48232,48232,11,48680,48680,11,49128,49128,11,49576,49576,11,50024,50024,11,50472,50472,11,50920,50920,11,51368,51368,11,51816,51816,11,52264,52264,11,52712,52712,11,53160,53160,11,53608,53608,11,54056,54056,11,54504,54504,11,54952,54952,11,68108,68111,5,69933,69940,5,70197,70197,7,70498,70499,7,70845,70845,5,71229,71229,5,71727,71735,5,72154,72155,5,72344,72345,5,73023,73029,5,94095,94098,5,121403,121452,5,126981,127182,14,127538,127546,14,127990,127990,14,128391,128391,14,128445,128449,14,128500,128505,14,128752,128752,14,129160,129167,14,129356,129356,14,129432,129442,14,129648,129651,14,129751,131069,14,173,173,4,1757,1757,1,2274,2274,1,2494,2494,5,2641,2641,5,2876,2876,5,3014,3016,7,3262,3262,7,3393,3396,5,3570,3571,7,3968,3972,5,4228,4228,7,6086,6086,5,6679,6680,5,6912,6915,5,7080,7081,5,7380,7392,5,8252,8252,14,9096,9096,14,9748,9749,14,9784,9786,14,9833,9850,14,9890,9894,14,9938,9938,14,9999,9999,14,10085,10087,14,12349,12349,14,43136,43137,7,43454,43456,7,43755,43755,7,44088,44088,11,44312,44312,11,44536,44536,11,44760,44760,11,44984,44984,11,45208,45208,11,45432,45432,11,45656,45656,11,45880,45880,11,46104,46104,11,46328,46328,11,46552,46552,11,46776,46776,11,47000,47000,11,47224,47224,11,47448,47448,11,47672,47672,11,47896,47896,11,48120,48120,11,48344,48344,11,48568,48568,11,48792,48792,11,49016,49016,11,49240,49240,11,49464,49464,11,49688,49688,11,49912,49912,11,50136,50136,11,50360,50360,11,50584,50584,11,50808,50808,11,51032,51032,11,51256,51256,11,51480,51480,11,51704,51704,11,51928,51928,11,52152,52152,11,52376,52376,11,52600,52600,11,52824,52824,11,53048,53048,11,53272,53272,11,53496,53496,11,53720,53720,11,53944,53944,11,54168,54168,11,54392,54392,11,54616,54616,11,54840,54840,11,55064,55064,11,65438,65439,5,69633,69633,5,69837,69837,1,70018,70018,7,70188,70190,7,70368,70370,7,70465,70468,7,70712,70719,5,70835,70840,5,70850,70851,5,71132,71133,5,71340,71340,7,71458,71461,5,71985,71989,7,72002,72002,7,72193,72202,5,72281,72283,5,72766,72766,7,72885,72886,5,73104,73105,5,92912,92916,5,113824,113827,4,119173,119179,5,121505,121519,5,125136,125142,5,127279,127279,14,127489,127490,14,127570,127743,14,127900,127901,14,128254,128254,14,128369,128370,14,128400,128400,14,128425,128432,14,128468,128475,14,128489,128494,14,128715,128720,14,128745,128745,14,128759,128760,14,129004,129023,14,129296,129304,14,129340,129342,14,129388,129392,14,129404,129407,14,129454,129455,14,129485,129487,14,129659,129663,14,129719,129727,14,917536,917631,5,13,13,2,1160,1161,5,1564,1564,4,1807,1807,1,2085,2087,5,2363,2363,7,2402,2403,5,2507,2508,7,2622,2624,7,2691,2691,7,2786,2787,5,2881,2884,5,3006,3006,5,3072,3072,5,3170,3171,5,3267,3268,7,3330,3331,7,3406,3406,1,3538,3540,5,3655,3662,5,3897,3897,5,4038,4038,5,4184,4185,5,4352,4447,8,6068,6069,5,6155,6157,5,6448,6449,7,6742,6742,5,6783,6783,5,6966,6970,5,7042,7042,7,7143,7143,7,7212,7219,5,7412,7412,5,8206,8207,4,8294,8303,4,8596,8601,14,9410,9410,14,9742,9742,14,9757,9757,14,9770,9770,14,9794,9794,14,9828,9828,14,9855,9855,14,9882,9882,14,9900,9903,14,9929,9933,14,9963,9967,14,9987,9988,14,10006,10006,14,10062,10062,14,10175,10175,14,11744,11775,5,42607,42607,5,43043,43044,7,43263,43263,5,43444,43445,7,43569,43570,5,43698,43700,5,43766,43766,5,44032,44032,11,44144,44144,11,44256,44256,11,44368,44368,11,44480,44480,11,44592,44592,11,44704,44704,11,44816,44816,11,44928,44928,11,45040,45040,11,45152,45152,11,45264,45264,11,45376,45376,11,45488,45488,11,45600,45600,11,45712,45712,11,45824,45824,11,45936,45936,11,46048,46048,11,46160,46160,11,46272,46272,11,46384,46384,11,46496,46496,11,46608,46608,11,46720,46720,11,46832,46832,11,46944,46944,11,47056,47056,11,47168,47168,11,47280,47280,11,47392,47392,11,47504,47504,11,47616,47616,11,47728,47728,11,47840,47840,11,47952,47952,11,48064,48064,11,48176,48176,11,48288,48288,11,48400,48400,11,48512,48512,11,48624,48624,11,48736,48736,11,48848,48848,11,48960,48960,11,49072,49072,11,49184,49184,11,49296,49296,11,49408,49408,11,49520,49520,11,49632,49632,11,49744,49744,11,49856,49856,11,49968,49968,11,50080,50080,11,50192,50192,11,50304,50304,11,50416,50416,11,50528,50528,11,50640,50640,11,50752,50752,11,50864,50864,11,50976,50976,11,51088,51088,11,51200,51200,11,51312,51312,11,51424,51424,11,51536,51536,11,51648,51648,11,51760,51760,11,51872,51872,11,51984,51984,11,52096,52096,11,52208,52208,11,52320,52320,11,52432,52432,11,52544,52544,11,52656,52656,11,52768,52768,11,52880,52880,11,52992,52992,11,53104,53104,11,53216,53216,11,53328,53328,11,53440,53440,11,53552,53552,11,53664,53664,11,53776,53776,11,53888,53888,11,54000,54000,11,54112,54112,11,54224,54224,11,54336,54336,11,54448,54448,11,54560,54560,11,54672,54672,11,54784,54784,11,54896,54896,11,55008,55008,11,55120,55120,11,64286,64286,5,66272,66272,5,68900,68903,5,69762,69762,7,69817,69818,5,69927,69931,5,70003,70003,5,70070,70078,5,70094,70094,7,70194,70195,7,70206,70206,5,70400,70401,5,70463,70463,7,70475,70477,7,70512,70516,5,70722,70724,5,70832,70832,5,70842,70842,5,70847,70848,5,71088,71089,7,71102,71102,7,71219,71226,5,71231,71232,5,71342,71343,7,71453,71455,5,71463,71467,5,71737,71738,5,71995,71996,5,72000,72000,7,72145,72147,7,72160,72160,5,72249,72249,7,72273,72278,5,72330,72342,5,72752,72758,5,72850,72871,5,72882,72883,5,73018,73018,5,73031,73031,5,73109,73109,5,73461,73462,7,94031,94031,5,94192,94193,7,119142,119142,7,119155,119162,4,119362,119364,5,121476,121476,5,122888,122904,5,123184,123190,5,126976,126979,14,127184,127231,14,127344,127345,14,127405,127461,14,127514,127514,14,127561,127567,14,127778,127779,14,127896,127896,14,127985,127986,14,127995,127999,5,128326,128328,14,128360,128366,14,128378,128378,14,128394,128397,14,128405,128406,14,128422,128423,14,128435,128443,14,128453,128464,14,128479,128480,14,128484,128487,14,128496,128498,14,128640,128709,14,128723,128724,14,128736,128741,14,128747,128748,14,128755,128755,14,128762,128762,14,128981,128991,14,129096,129103,14,129292,129292,14,129311,129311,14,129329,129330,14,129344,129349,14,129360,129374,14,129394,129394,14,129402,129402,14,129413,129425,14,129445,129450,14,129466,129471,14,129483,129483,14,129511,129535,14,129653,129655,14,129667,129670,14,129705,129711,14,129731,129743,14,917505,917505,4,917760,917999,5,10,10,3,127,159,4,768,879,5,1471,1471,5,1536,1541,1,1648,1648,5,1767,1768,5,1840,1866,5,2070,2073,5,2137,2139,5,2307,2307,7,2366,2368,7,2382,2383,7,2434,2435,7,2497,2500,5,2519,2519,5,2563,2563,7,2631,2632,5,2677,2677,5,2750,2752,7,2763,2764,7,2817,2817,5,2879,2879,5,2891,2892,7,2914,2915,5,3008,3008,5,3021,3021,5,3076,3076,5,3146,3149,5,3202,3203,7,3264,3265,7,3271,3272,7,3298,3299,5,3390,3390,5,3402,3404,7,3426,3427,5,3535,3535,5,3544,3550,7,3635,3635,7,3763,3763,7,3893,3893,5,3953,3966,5,3981,3991,5,4145,4145,7,4157,4158,5,4209,4212,5,4237,4237,5,4520,4607,10,5970,5971,5,6071,6077,5,6089,6099,5,6277,6278,5,6439,6440,5,6451,6456,7,6683,6683,5,6744,6750,5,6765,6770,7,6846,6846,5,6964,6964,5,6972,6972,5,7019,7027,5,7074,7077,5,7083,7085,5,7146,7148,7,7154,7155,7,7222,7223,5,7394,7400,5,7416,7417,5,8204,8204,5,8233,8233,4,8288,8292,4,8413,8416,5,8482,8482,14,8986,8987,14,9193,9203,14,9654,9654,14,9733,9733,14,9745,9745,14,9752,9752,14,9760,9760,14,9766,9766,14,9774,9775,14,9792,9792,14,9800,9811,14,9825,9826,14,9831,9831,14,9852,9853,14,9872,9873,14,9880,9880,14,9885,9887,14,9896,9897,14,9906,9916,14,9926,9927,14,9936,9936,14,9941,9960,14,9974,9974,14,9982,9985,14,9992,9997,14,10002,10002,14,10017,10017,14,10055,10055,14,10071,10071,14,10145,10145,14,11013,11015,14,11503,11505,5,12334,12335,5,12951,12951,14,42612,42621,5,43014,43014,5,43047,43047,7,43204,43205,5,43335,43345,5,43395,43395,7,43450,43451,7,43561,43566,5,43573,43574,5,43644,43644,5,43710,43711,5,43758,43759,7,44005,44005,5,44012,44012,7,44060,44060,11,44116,44116,11,44172,44172,11,44228,44228,11,44284,44284,11,44340,44340,11,44396,44396,11,44452,44452,11,44508,44508,11,44564,44564,11,44620,44620,11,44676,44676,11,44732,44732,11,44788,44788,11,44844,44844,11,44900,44900,11,44956,44956,11,45012,45012,11,45068,45068,11,45124,45124,11,45180,45180,11,45236,45236,11,45292,45292,11,45348,45348,11,45404,45404,11,45460,45460,11,45516,45516,11,45572,45572,11,45628,45628,11,45684,45684,11,45740,45740,11,45796,45796,11,45852,45852,11,45908,45908,11,45964,45964,11,46020,46020,11,46076,46076,11,46132,46132,11,46188,46188,11,46244,46244,11,46300,46300,11,46356,46356,11,46412,46412,11,46468,46468,11,46524,46524,11,46580,46580,11,46636,46636,11,46692,46692,11,46748,46748,11,46804,46804,11,46860,46860,11,46916,46916,11,46972,46972,11,47028,47028,11,47084,47084,11,47140,47140,11,47196,47196,11,47252,47252,11,47308,47308,11,47364,47364,11,47420,47420,11,47476,47476,11,47532,47532,11,47588,47588,11,47644,47644,11,47700,47700,11,47756,47756,11,47812,47812,11,47868,47868,11,47924,47924,11,47980,47980,11,48036,48036,11,48092,48092,11,48148,48148,11,48204,48204,11,48260,48260,11,48316,48316,11,48372,48372,11,48428,48428,11,48484,48484,11,48540,48540,11,48596,48596,11,48652,48652,11,48708,48708,11,48764,48764,11,48820,48820,11,48876,48876,11,48932,48932,11,48988,48988,11,49044,49044,11,49100,49100,11,49156,49156,11,49212,49212,11,49268,49268,11,49324,49324,11,49380,49380,11,49436,49436,11,49492,49492,11,49548,49548,11,49604,49604,11,49660,49660,11,49716,49716,11,49772,49772,11,49828,49828,11,49884,49884,11,49940,49940,11,49996,49996,11,50052,50052,11,50108,50108,11,50164,50164,11,50220,50220,11,50276,50276,11,50332,50332,11,50388,50388,11,50444,50444,11,50500,50500,11,50556,50556,11,50612,50612,11,50668,50668,11,50724,50724,11,50780,50780,11,50836,50836,11,50892,50892,11,50948,50948,11,51004,51004,11,51060,51060,11,51116,51116,11,51172,51172,11,51228,51228,11,51284,51284,11,51340,51340,11,51396,51396,11,51452,51452,11,51508,51508,11,51564,51564,11,51620,51620,11,51676,51676,11,51732,51732,11,51788,51788,11,51844,51844,11,51900,51900,11,51956,51956,11,52012,52012,11,52068,52068,11,52124,52124,11,52180,52180,11,52236,52236,11,52292,52292,11,52348,52348,11,52404,52404,11,52460,52460,11,52516,52516,11,52572,52572,11,52628,52628,11,52684,52684,11,52740,52740,11,52796,52796,11,52852,52852,11,52908,52908,11,52964,52964,11,53020,53020,11,53076,53076,11,53132,53132,11,53188,53188,11,53244,53244,11,53300,53300,11,53356,53356,11,53412,53412,11,53468,53468,11,53524,53524,11,53580,53580,11,53636,53636,11,53692,53692,11,53748,53748,11,53804,53804,11,53860,53860,11,53916,53916,11,53972,53972,11,54028,54028,11,54084,54084,11,54140,54140,11,54196,54196,11,54252,54252,11,54308,54308,11,54364,54364,11,54420,54420,11,54476,54476,11,54532,54532,11,54588,54588,11,54644,54644,11,54700,54700,11,54756,54756,11,54812,54812,11,54868,54868,11,54924,54924,11,54980,54980,11,55036,55036,11,55092,55092,11,55148,55148,11,55216,55238,9,65056,65071,5,65529,65531,4,68097,68099,5,68159,68159,5,69446,69456,5,69688,69702,5,69808,69810,7,69815,69816,7,69821,69821,1,69888,69890,5,69932,69932,7,69957,69958,7,70016,70017,5,70067,70069,7,70079,70080,7,70089,70092,5,70095,70095,5,70191,70193,5,70196,70196,5,70198,70199,5,70367,70367,5,70371,70378,5,70402,70403,7,70462,70462,5,70464,70464,5,70471,70472,7,70487,70487,5,70502,70508,5,70709,70711,7,70720,70721,7,70725,70725,7,70750,70750,5,70833,70834,7,70841,70841,7,70843,70844,7,70846,70846,7,70849,70849,7,71087,71087,5,71090,71093,5,71100,71101,5,71103,71104,5,71216,71218,7,71227,71228,7,71230,71230,7,71339,71339,5,71341,71341,5,71344,71349,5,71351,71351,5,71456,71457,7,71462,71462,7,71724,71726,7,71736,71736,7,71984,71984,5,71991,71992,7,71997,71997,7,71999,71999,1,72001,72001,1,72003,72003,5,72148,72151,5,72156,72159,7,72164,72164,7,72243,72248,5,72250,72250,1,72263,72263,5,72279,72280,7,72324,72329,1,72343,72343,7,72751,72751,7,72760,72765,5,72767,72767,5,72873,72873,7,72881,72881,7,72884,72884,7,73009,73014,5,73020,73021,5,73030,73030,1,73098,73102,7,73107,73108,7,73110,73110,7,73459,73460,5,78896,78904,4,92976,92982,5,94033,94087,7,94180,94180,5,113821,113822,5,119141,119141,5,119143,119145,5,119150,119154,5,119163,119170,5,119210,119213,5,121344,121398,5,121461,121461,5,121499,121503,5,122880,122886,5,122907,122913,5,122918,122922,5,123628,123631,5,125252,125258,5,126980,126980,14,127183,127183,14,127245,127247,14,127340,127343,14,127358,127359,14,127377,127386,14,127462,127487,6,127491,127503,14,127535,127535,14,127548,127551,14,127568,127569,14,127744,127777,14,127780,127891,14,127894,127895,14,127897,127899,14,127902,127984,14,127987,127989,14,127991,127994,14,128000,128253,14,128255,128317,14,128329,128334,14,128336,128359,14,128367,128368,14,128371,128377,14,128379,128390,14,128392,128393,14,128398,128399,14,128401,128404,14,128407,128419,14,128421,128421,14,128424,128424,14,128433,128434,14,128444,128444,14,128450,128452,14,128465,128467,14,128476,128478,14,128481,128481,14,128483,128483,14,128488,128488,14,128495,128495,14,128499,128499,14,128506,128591,14,128710,128714,14,128721,128722,14,128725,128725,14,128728,128735,14,128742,128744,14,128746,128746,14,128749,128751,14,128753,128754,14,128756,128758,14,128761,128761,14,128763,128764,14,128884,128895,14,128992,129003,14,129036,129039,14,129114,129119,14,129198,129279,14,129293,129295,14,129305,129310,14,129312,129319,14,129328,129328,14,129331,129338,14,129343,129343,14,129351,129355,14,129357,129359,14,129375,129387,14,129393,129393,14,129395,129398,14,129401,129401,14,129403,129403,14,129408,129412,14,129426,129431,14,129443,129444,14,129451,129453,14,129456,129465,14,129472,129472,14,129475,129482,14,129484,129484,14,129488,129510,14,129536,129647,14,129652,129652,14,129656,129658,14,129664,129666,14,129671,129679,14,129686,129704,14,129712,129718,14,129728,129730,14,129744,129750,14,917504,917504,4,917506,917535,4,917632,917759,4,918000,921599,4,0,9,4,11,12,4,14,31,4,169,169,14,174,174,14,1155,1159,5,1425,1469,5,1473,1474,5,1479,1479,5,1552,1562,5,1611,1631,5,1750,1756,5,1759,1764,5,1770,1773,5,1809,1809,5,1958,1968,5,2045,2045,5,2075,2083,5,2089,2093,5,2259,2273,5,2275,2306,5,2362,2362,5,2364,2364,5,2369,2376,5,2381,2381,5,2385,2391,5,2433,2433,5,2492,2492,5,2495,2496,7,2503,2504,7,2509,2509,5,2530,2531,5,2561,2562,5,2620,2620,5,2625,2626,5,2635,2637,5,2672,2673,5,2689,2690,5,2748,2748,5,2753,2757,5,2761,2761,7,2765,2765,5,2810,2815,5,2818,2819,7,2878,2878,5,2880,2880,7,2887,2888,7,2893,2893,5,2903,2903,5,2946,2946,5,3007,3007,7,3009,3010,7,3018,3020,7,3031,3031,5,3073,3075,7,3134,3136,5,3142,3144,5,3157,3158,5,3201,3201,5,3260,3260,5,3263,3263,5,3266,3266,5,3270,3270,5,3274,3275,7,3285,3286,5,3328,3329,5,3387,3388,5,3391,3392,7,3398,3400,7,3405,3405,5,3415,3415,5,3457,3457,5,3530,3530,5,3536,3537,7,3542,3542,5,3551,3551,5,3633,3633,5,3636,3642,5,3761,3761,5,3764,3772,5,3864,3865,5,3895,3895,5,3902,3903,7,3967,3967,7,3974,3975,5,3993,4028,5,4141,4144,5,4146,4151,5,4155,4156,7,4182,4183,7,4190,4192,5,4226,4226,5,4229,4230,5,4253,4253,5,4448,4519,9,4957,4959,5,5938,5940,5,6002,6003,5,6070,6070,7,6078,6085,7,6087,6088,7,6109,6109,5,6158,6158,4,6313,6313,5,6435,6438,7,6441,6443,7,6450,6450,5,6457,6459,5,6681,6682,7,6741,6741,7,6743,6743,7,6752,6752,5,6757,6764,5,6771,6780,5,6832,6845,5,6847,6848,5,6916,6916,7,6965,6965,5,6971,6971,7,6973,6977,7,6979,6980,7,7040,7041,5,7073,7073,7,7078,7079,7,7082,7082,7,7142,7142,5,7144,7145,5,7149,7149,5,7151,7153,5,7204,7211,7,7220,7221,7,7376,7378,5,7393,7393,7,7405,7405,5,7415,7415,7,7616,7673,5,8203,8203,4,8205,8205,13,8232,8232,4,8234,8238,4,8265,8265,14,8293,8293,4,8400,8412,5,8417,8417,5,8421,8432,5,8505,8505,14,8617,8618,14,9000,9000,14,9167,9167,14,9208,9210,14,9642,9643,14,9664,9664,14,9728,9732,14,9735,9741,14,9743,9744,14,9746,9746,14,9750,9751,14,9753,9756,14,9758,9759,14,9761,9761,14,9764,9765,14,9767,9769,14,9771,9773,14,9776,9783,14,9787,9791,14,9793,9793,14,9795,9799,14,9812,9822,14,9824,9824,14,9827,9827,14,9829,9830,14,9832,9832,14,9851,9851,14,9854,9854,14,9856,9861,14,9874,9876,14,9878,9879,14,9881,9881,14,9883,9884,14,9888,9889,14,9895,9895,14,9898,9899,14,9904,9905,14,9917,9918,14,9924,9925,14,9928,9928,14,9934,9935,14,9937,9937,14,9939,9940,14,9961,9962,14,9968,9973,14,9975,9978,14,9981,9981,14,9986,9986,14,9989,9989,14,9998,9998,14,10000,10001,14,10004,10004,14,10013,10013,14,10024,10024,14,10052,10052,14,10060,10060,14,10067,10069,14,10083,10084,14,10133,10135,14,10160,10160,14,10548,10549,14,11035,11036,14,11093,11093,14,11647,11647,5,12330,12333,5,12336,12336,14,12441,12442,5,12953,12953,14,42608,42610,5,42654,42655,5,43010,43010,5,43019,43019,5,43045,43046,5,43052,43052,5,43188,43203,7,43232,43249,5,43302,43309,5,43346,43347,7,43392,43394,5,43443,43443,5,43446,43449,5,43452,43453,5,43493,43493,5,43567,43568,7,43571,43572,7,43587,43587,5,43597,43597,7,43696,43696,5,43703,43704,5,43713,43713,5,43756,43757,5,43765,43765,7,44003,44004,7,44006,44007,7,44009,44010,7,44013,44013,5,44033,44059,12,44061,44087,12,44089,44115,12,44117,44143,12,44145,44171,12,44173,44199,12,44201,44227,12,44229,44255,12,44257,44283,12,44285,44311,12,44313,44339,12,44341,44367,12,44369,44395,12,44397,44423,12,44425,44451,12,44453,44479,12,44481,44507,12,44509,44535,12,44537,44563,12,44565,44591,12,44593,44619,12,44621,44647,12,44649,44675,12,44677,44703,12,44705,44731,12,44733,44759,12,44761,44787,12,44789,44815,12,44817,44843,12,44845,44871,12,44873,44899,12,44901,44927,12,44929,44955,12,44957,44983,12,44985,45011,12,45013,45039,12,45041,45067,12,45069,45095,12,45097,45123,12,45125,45151,12,45153,45179,12,45181,45207,12,45209,45235,12,45237,45263,12,45265,45291,12,45293,45319,12,45321,45347,12,45349,45375,12,45377,45403,12,45405,45431,12,45433,45459,12,45461,45487,12,45489,45515,12,45517,45543,12,45545,45571,12,45573,45599,12,45601,45627,12,45629,45655,12,45657,45683,12,45685,45711,12,45713,45739,12,45741,45767,12,45769,45795,12,45797,45823,12,45825,45851,12,45853,45879,12,45881,45907,12,45909,45935,12,45937,45963,12,45965,45991,12,45993,46019,12,46021,46047,12,46049,46075,12,46077,46103,12,46105,46131,12,46133,46159,12,46161,46187,12,46189,46215,12,46217,46243,12,46245,46271,12,46273,46299,12,46301,46327,12,46329,46355,12,46357,46383,12,46385,46411,12,46413,46439,12,46441,46467,12,46469,46495,12,46497,46523,12,46525,46551,12,46553,46579,12,46581,46607,12,46609,46635,12,46637,46663,12,46665,46691,12,46693,46719,12,46721,46747,12,46749,46775,12,46777,46803,12,46805,46831,12,46833,46859,12,46861,46887,12,46889,46915,12,46917,46943,12,46945,46971,12,46973,46999,12,47001,47027,12,47029,47055,12,47057,47083,12,47085,47111,12,47113,47139,12,47141,47167,12,47169,47195,12,47197,47223,12,47225,47251,12,47253,47279,12,47281,47307,12,47309,47335,12,47337,47363,12,47365,47391,12,47393,47419,12,47421,47447,12,47449,47475,12,47477,47503,12,47505,47531,12,47533,47559,12,47561,47587,12,47589,47615,12,47617,47643,12,47645,47671,12,47673,47699,12,47701,47727,12,47729,47755,12,47757,47783,12,47785,47811,12,47813,47839,12,47841,47867,12,47869,47895,12,47897,47923,12,47925,47951,12,47953,47979,12,47981,48007,12,48009,48035,12,48037,48063,12,48065,48091,12,48093,48119,12,48121,48147,12,48149,48175,12,48177,48203,12,48205,48231,12,48233,48259,12,48261,48287,12,48289,48315,12,48317,48343,12,48345,48371,12,48373,48399,12,48401,48427,12,48429,48455,12,48457,48483,12,48485,48511,12,48513,48539,12,48541,48567,12,48569,48595,12,48597,48623,12,48625,48651,12,48653,48679,12,48681,48707,12,48709,48735,12,48737,48763,12,48765,48791,12,48793,48819,12,48821,48847,12,48849,48875,12,48877,48903,12,48905,48931,12,48933,48959,12,48961,48987,12,48989,49015,12,49017,49043,12,49045,49071,12,49073,49099,12,49101,49127,12,49129,49155,12,49157,49183,12,49185,49211,12,49213,49239,12,49241,49267,12,49269,49295,12,49297,49323,12,49325,49351,12,49353,49379,12,49381,49407,12,49409,49435,12,49437,49463,12,49465,49491,12,49493,49519,12,49521,49547,12,49549,49575,12,49577,49603,12,49605,49631,12,49633,49659,12,49661,49687,12,49689,49715,12,49717,49743,12,49745,49771,12,49773,49799,12,49801,49827,12,49829,49855,12,49857,49883,12,49885,49911,12,49913,49939,12,49941,49967,12,49969,49995,12,49997,50023,12,50025,50051,12,50053,50079,12,50081,50107,12,50109,50135,12,50137,50163,12,50165,50191,12,50193,50219,12,50221,50247,12,50249,50275,12,50277,50303,12,50305,50331,12,50333,50359,12,50361,50387,12,50389,50415,12,50417,50443,12,50445,50471,12,50473,50499,12,50501,50527,12,50529,50555,12,50557,50583,12,50585,50611,12,50613,50639,12,50641,50667,12,50669,50695,12,50697,50723,12,50725,50751,12,50753,50779,12,50781,50807,12,50809,50835,12,50837,50863,12,50865,50891,12,50893,50919,12,50921,50947,12,50949,50975,12,50977,51003,12,51005,51031,12,51033,51059,12,51061,51087,12,51089,51115,12,51117,51143,12,51145,51171,12,51173,51199,12,51201,51227,12,51229,51255,12,51257,51283,12,51285,51311,12,51313,51339,12,51341,51367,12,51369,51395,12,51397,51423,12,51425,51451,12,51453,51479,12,51481,51507,12,51509,51535,12,51537,51563,12,51565,51591,12,51593,51619,12,51621,51647,12,51649,51675,12,51677,51703,12,51705,51731,12,51733,51759,12,51761,51787,12,51789,51815,12,51817,51843,12,51845,51871,12,51873,51899,12,51901,51927,12,51929,51955,12,51957,51983,12,51985,52011,12,52013,52039,12,52041,52067,12,52069,52095,12,52097,52123,12,52125,52151,12,52153,52179,12,52181,52207,12,52209,52235,12,52237,52263,12,52265,52291,12,52293,52319,12,52321,52347,12,52349,52375,12,52377,52403,12,52405,52431,12,52433,52459,12,52461,52487,12,52489,52515,12,52517,52543,12,52545,52571,12,52573,52599,12,52601,52627,12,52629,52655,12,52657,52683,12,52685,52711,12,52713,52739,12,52741,52767,12,52769,52795,12,52797,52823,12,52825,52851,12,52853,52879,12,52881,52907,12,52909,52935,12,52937,52963,12,52965,52991,12,52993,53019,12,53021,53047,12,53049,53075,12,53077,53103,12,53105,53131,12,53133,53159,12,53161,53187,12,53189,53215,12,53217,53243,12,53245,53271,12,53273,53299,12,53301,53327,12,53329,53355,12,53357,53383,12,53385,53411,12,53413,53439,12,53441,53467,12,53469,53495,12,53497,53523,12,53525,53551,12,53553,53579,12,53581,53607,12,53609,53635,12,53637,53663,12,53665,53691,12,53693,53719,12,53721,53747,12,53749,53775,12,53777,53803,12,53805,53831,12,53833,53859,12,53861,53887,12,53889,53915,12,53917,53943,12,53945,53971,12,53973,53999,12,54001,54027,12,54029,54055,12,54057,54083,12,54085,54111,12,54113,54139,12,54141,54167,12,54169,54195,12,54197,54223,12,54225,54251,12,54253,54279,12,54281,54307,12,54309,54335,12,54337,54363,12,54365,54391,12,54393,54419,12,54421,54447,12,54449,54475,12,54477,54503,12,54505,54531,12,54533,54559,12,54561,54587,12,54589,54615,12,54617,54643,12,54645,54671,12,54673,54699,12,54701,54727,12,54729,54755,12,54757,54783,12,54785,54811,12,54813,54839,12,54841,54867,12,54869,54895,12,54897,54923,12,54925,54951,12,54953,54979,12,54981,55007,12,55009,55035,12,55037,55063,12,55065,55091,12,55093,55119,12,55121,55147,12,55149,55175,12,55177,55203,12,55243,55291,10,65024,65039,5,65279,65279,4,65520,65528,4,66045,66045,5,66422,66426,5,68101,68102,5,68152,68154,5,68325,68326,5,69291,69292,5,69632,69632,7,69634,69634,7,69759,69761,5]');\r\n}\r\n//#endregion\r\n/**\r\n * Computes the offset after performing a left delete on the given string,\r\n * while considering unicode grapheme/emoji rules.\r\n*/\r\nexport function getLeftDeleteOffset(offset, str) {\r\n if (offset === 0) {\r\n return 0;\r\n }\r\n // Try to delete emoji part.\r\n const emojiOffset = getOffsetBeforeLastEmojiComponent(offset, str);\r\n if (emojiOffset !== undefined) {\r\n return emojiOffset;\r\n }\r\n // Otherwise, just skip a single code point.\r\n const codePoint = getPrevCodePoint(str, offset);\r\n offset -= getUTF16Length(codePoint);\r\n return offset;\r\n}\r\nfunction getOffsetBeforeLastEmojiComponent(offset, str) {\r\n // See https://www.unicode.org/reports/tr51/tr51-14.html#EBNF_and_Regex for the\r\n // structure of emojis.\r\n let codePoint = getPrevCodePoint(str, offset);\r\n offset -= getUTF16Length(codePoint);\r\n // Skip modifiers\r\n while ((isEmojiModifier(codePoint) || codePoint === 65039 /* emojiVariantSelector */ || codePoint === 8419 /* enclosingKeyCap */)) {\r\n if (offset === 0) {\r\n // Cannot skip modifier, no preceding emoji base.\r\n return undefined;\r\n }\r\n codePoint = getPrevCodePoint(str, offset);\r\n offset -= getUTF16Length(codePoint);\r\n }\r\n // Expect base emoji\r\n if (!isEmojiImprecise(codePoint)) {\r\n // Unexpected code point, not a valid emoji.\r\n return undefined;\r\n }\r\n if (offset >= 0) {\r\n // Skip optional ZWJ code points that combine multiple emojis.\r\n // In theory, we should check if that ZWJ actually combines multiple emojis\r\n // to prevent deleting ZWJs in situations we didn't account for.\r\n const optionalZwjCodePoint = getPrevCodePoint(str, offset);\r\n if (optionalZwjCodePoint === 8205 /* zwj */) {\r\n offset -= getUTF16Length(optionalZwjCodePoint);\r\n }\r\n }\r\n return offset;\r\n}\r\nfunction getUTF16Length(codePoint) {\r\n return codePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1;\r\n}\r\nfunction isEmojiModifier(codePoint) {\r\n return 0x1F3FB <= codePoint && codePoint <= 0x1F3FF;\r\n}\r\n","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import _typeof from \"./typeof.js\";\nexport default function _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n };\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar _a;\r\nconst LANGUAGE_DEFAULT = 'en';\r\nlet _isWindows = false;\r\nlet _isMacintosh = false;\r\nlet _isLinux = false;\r\nlet _isLinuxSnap = false;\r\nlet _isNative = false;\r\nlet _isWeb = false;\r\nlet _isIOS = false;\r\nlet _locale = undefined;\r\nlet _language = LANGUAGE_DEFAULT;\r\nlet _translationsConfigFile = undefined;\r\nlet _userAgent = undefined;\r\nexport const globals = (typeof self === 'object' ? self : typeof global === 'object' ? global : {});\r\nlet nodeProcess = undefined;\r\nif (typeof globals.vscode !== 'undefined' && typeof globals.vscode.process !== 'undefined') {\r\n // Native environment (sandboxed)\r\n nodeProcess = globals.vscode.process;\r\n}\r\nelse if (typeof process !== 'undefined') {\r\n // Native environment (non-sandboxed)\r\n nodeProcess = process;\r\n}\r\nconst isElectronRenderer = typeof ((_a = nodeProcess === null || nodeProcess === void 0 ? void 0 : nodeProcess.versions) === null || _a === void 0 ? void 0 : _a.electron) === 'string' && nodeProcess.type === 'renderer';\r\nexport const isElectronSandboxed = isElectronRenderer && (nodeProcess === null || nodeProcess === void 0 ? void 0 : nodeProcess.sandboxed);\r\nexport const browserCodeLoadingCacheStrategy = (() => {\r\n // Always enabled when sandbox is enabled\r\n if (isElectronSandboxed) {\r\n return 'bypassHeatCheck';\r\n }\r\n // Otherwise, only enabled conditionally\r\n const env = nodeProcess === null || nodeProcess === void 0 ? void 0 : nodeProcess.env['VSCODE_BROWSER_CODE_LOADING'];\r\n if (typeof env === 'string') {\r\n if (env === 'none' || env === 'code' || env === 'bypassHeatCheck' || env === 'bypassHeatCheckAndEagerCompile') {\r\n return env;\r\n }\r\n return 'bypassHeatCheck';\r\n }\r\n return undefined;\r\n})();\r\nexport const isPreferringBrowserCodeLoad = typeof browserCodeLoadingCacheStrategy === 'string';\r\n// Web environment\r\nif (typeof navigator === 'object' && !isElectronRenderer) {\r\n _userAgent = navigator.userAgent;\r\n _isWindows = _userAgent.indexOf('Windows') >= 0;\r\n _isMacintosh = _userAgent.indexOf('Macintosh') >= 0;\r\n _isIOS = (_userAgent.indexOf('Macintosh') >= 0 || _userAgent.indexOf('iPad') >= 0 || _userAgent.indexOf('iPhone') >= 0) && !!navigator.maxTouchPoints && navigator.maxTouchPoints > 0;\r\n _isLinux = _userAgent.indexOf('Linux') >= 0;\r\n _isWeb = true;\r\n _locale = navigator.language;\r\n _language = _locale;\r\n}\r\n// Native environment\r\nelse if (typeof nodeProcess === 'object') {\r\n _isWindows = (nodeProcess.platform === 'win32');\r\n _isMacintosh = (nodeProcess.platform === 'darwin');\r\n _isLinux = (nodeProcess.platform === 'linux');\r\n _isLinuxSnap = _isLinux && !!nodeProcess.env['SNAP'] && !!nodeProcess.env['SNAP_REVISION'];\r\n _locale = LANGUAGE_DEFAULT;\r\n _language = LANGUAGE_DEFAULT;\r\n const rawNlsConfig = nodeProcess.env['VSCODE_NLS_CONFIG'];\r\n if (rawNlsConfig) {\r\n try {\r\n const nlsConfig = JSON.parse(rawNlsConfig);\r\n const resolved = nlsConfig.availableLanguages['*'];\r\n _locale = nlsConfig.locale;\r\n // VSCode's default language is 'en'\r\n _language = resolved ? resolved : LANGUAGE_DEFAULT;\r\n _translationsConfigFile = nlsConfig._translationsConfigFile;\r\n }\r\n catch (e) {\r\n }\r\n }\r\n _isNative = true;\r\n}\r\n// Unknown environment\r\nelse {\r\n console.error('Unable to resolve platform.');\r\n}\r\nlet _platform = 0 /* Web */;\r\nif (_isMacintosh) {\r\n _platform = 1 /* Mac */;\r\n}\r\nelse if (_isWindows) {\r\n _platform = 3 /* Windows */;\r\n}\r\nelse if (_isLinux) {\r\n _platform = 2 /* Linux */;\r\n}\r\nexport const isWindows = _isWindows;\r\nexport const isMacintosh = _isMacintosh;\r\nexport const isLinux = _isLinux;\r\nexport const isNative = _isNative;\r\nexport const isWeb = _isWeb;\r\nexport const isIOS = _isIOS;\r\nexport const userAgent = _userAgent;\r\nexport const setImmediate = (function defineSetImmediate() {\r\n if (globals.setImmediate) {\r\n return globals.setImmediate.bind(globals);\r\n }\r\n if (typeof globals.postMessage === 'function' && !globals.importScripts) {\r\n let pending = [];\r\n globals.addEventListener('message', (e) => {\r\n if (e.data && e.data.vscodeSetImmediateId) {\r\n for (let i = 0, len = pending.length; i < len; i++) {\r\n const candidate = pending[i];\r\n if (candidate.id === e.data.vscodeSetImmediateId) {\r\n pending.splice(i, 1);\r\n candidate.callback();\r\n return;\r\n }\r\n }\r\n }\r\n });\r\n let lastId = 0;\r\n return (callback) => {\r\n const myId = ++lastId;\r\n pending.push({\r\n id: myId,\r\n callback: callback\r\n });\r\n globals.postMessage({ vscodeSetImmediateId: myId }, '*');\r\n };\r\n }\r\n if (typeof (nodeProcess === null || nodeProcess === void 0 ? void 0 : nodeProcess.nextTick) === 'function') {\r\n return nodeProcess.nextTick.bind(nodeProcess);\r\n }\r\n const _promise = Promise.resolve();\r\n return (callback) => _promise.then(callback);\r\n})();\r\nexport const OS = (_isMacintosh || _isIOS ? 2 /* Macintosh */ : (_isWindows ? 1 /* Windows */ : 3 /* Linux */));\r\nlet _isLittleEndian = true;\r\nlet _isLittleEndianComputed = false;\r\nexport function isLittleEndian() {\r\n if (!_isLittleEndianComputed) {\r\n _isLittleEndianComputed = true;\r\n const test = new Uint8Array(2);\r\n test[0] = 1;\r\n test[1] = 2;\r\n const view = new Uint16Array(test.buffer);\r\n _isLittleEndian = (view[0] === (2 << 8) + 1);\r\n }\r\n return _isLittleEndian;\r\n}\r\n","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar _a;\r\n;\r\nvar UNDEFINED = \"undefined\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar Constructor = 'constructor';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar Prototype = 'prototype';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strFunction = 'function';\r\n/**\r\n * Used to define the name of the instance function lookup table\r\n * @ignore\r\n */\r\nvar DynInstFuncTable = '_dynInstFuncs';\r\n/**\r\n * Name used to tag the dynamic prototype function\r\n * @ignore\r\n */\r\nvar DynProxyTag = '_isDynProxy';\r\n/**\r\n * Name added to a prototype to define the dynamic prototype \"class\" name used to lookup the function table\r\n * @ignore\r\n */\r\nvar DynClassName = '_dynClass';\r\n/**\r\n * Prefix added to the classname to avoid any name clashes with other instance level properties\r\n * @ignore\r\n */\r\nvar DynClassNamePrefix = '_dynCls$';\r\n/**\r\n * A tag which is used to check if we have already to attempted to set the instance function if one is not present\r\n * @ignore\r\n */\r\nvar DynInstChkTag = '_dynInstChk';\r\n/**\r\n * A tag which is used to check if we are allows to try and set an instance function is one is not present. Using the same\r\n * tag name as the function level but a different const name for readability only.\r\n */\r\nvar DynAllowInstChkTag = DynInstChkTag;\r\n/**\r\n * The global (imported) instances where the global performance options are stored\r\n */\r\nvar DynProtoDefaultOptions = '_dfOpts';\r\n/**\r\n * Value used as the name of a class when it cannot be determined\r\n * @ignore\r\n */\r\nvar UnknownValue = '_unknown_';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar str__Proto = \"__proto__\";\r\n/**\r\n * The polyfill version of __proto__ so that it doesn't cause issues for anyone not expecting it to exist\r\n */\r\nvar DynProtoBaseProto = \"_dyn\" + str__Proto;\r\n/**\r\n * Runtime Global holder for dynamicProto settings\r\n */\r\nvar DynProtoGlobalSettings = \"__dynProto$Gbl\";\r\n/**\r\n * Track the current prototype for IE8 as you can't look back to get the prototype\r\n */\r\nvar DynProtoCurrent = \"_dynInstProto\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strUseBaseInst = 'useBaseInst';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strSetInstFuncs = 'setInstFuncs';\r\nvar Obj = Object;\r\n/**\r\n * Pre-lookup to check if we are running on a modern browser (i.e. not IE8)\r\n * @ignore\r\n */\r\nvar _objGetPrototypeOf = Obj[\"getPrototypeOf\"];\r\n/**\r\n * Pre-lookup to check for the existence of this function\r\n */\r\nvar _objGetOwnProps = Obj[\"getOwnPropertyNames\"];\r\n/**\r\n * Gets the runtime global reference\r\n * @returns\r\n */\r\nfunction _getGlobal() {\r\n var result;\r\n if (typeof globalThis !== UNDEFINED) {\r\n result = globalThis;\r\n }\r\n if (!result && typeof self !== UNDEFINED) {\r\n result = self;\r\n }\r\n if (!result && typeof window !== UNDEFINED) {\r\n result = window;\r\n }\r\n if (!result && typeof global !== UNDEFINED) {\r\n result = global;\r\n }\r\n return result || {};\r\n}\r\n// Since 1.1.7 moving these to the runtime global to work around mixed version and module issues\r\n// See Issue https://github.com/microsoft/DynamicProto-JS/issues/57 for details\r\nvar _gbl = _getGlobal();\r\nvar _gblInst = _gbl[DynProtoGlobalSettings] || (_gbl[DynProtoGlobalSettings] = {\r\n o: (_a = {},\r\n _a[strSetInstFuncs] = true,\r\n _a[strUseBaseInst] = true,\r\n _a),\r\n n: 1000 // Start new global index @ 1000 so we \"fix\" some cases when mixed with 1.1.6 or earlier\r\n});\r\n/**\r\n * Helper to check if the object contains a property of the name\r\n * @ignore\r\n */\r\nfunction _hasOwnProperty(obj, prop) {\r\n return obj && Obj[Prototype].hasOwnProperty.call(obj, prop);\r\n}\r\n/**\r\n * Helper used to check whether the target is an Object prototype or Array prototype\r\n * @ignore\r\n */\r\nfunction _isObjectOrArrayPrototype(target) {\r\n return target && (target === Obj[Prototype] || target === Array[Prototype]);\r\n}\r\n/**\r\n * Helper used to check whether the target is an Object prototype, Array prototype or Function prototype\r\n * @ignore\r\n */\r\nfunction _isObjectArrayOrFunctionPrototype(target) {\r\n return _isObjectOrArrayPrototype(target) || target === Function[Prototype];\r\n}\r\n/**\r\n * Helper used to get the prototype of the target object as getPrototypeOf is not available in an ES3 environment.\r\n * @ignore\r\n */\r\nfunction _getObjProto(target) {\r\n var newProto;\r\n if (target) {\r\n // This method doesn't exist in older browsers (e.g. IE8)\r\n if (_objGetPrototypeOf) {\r\n return _objGetPrototypeOf(target);\r\n }\r\n var curProto = target[str__Proto] || target[Prototype] || (target[Constructor] ? target[Constructor][Prototype] : null);\r\n // Using the pre-calculated value as IE8 doesn't support looking up the prototype of a prototype and thus fails for more than 1 base class\r\n newProto = target[DynProtoBaseProto] || curProto;\r\n if (!_hasOwnProperty(target, DynProtoBaseProto)) {\r\n // As this prototype doesn't have this property then this is from an inherited class so newProto is the base to return so save it\r\n // so we can look it up value (which for a multiple hierarchy dynamicProto will be the base class)\r\n delete target[DynProtoCurrent]; // Delete any current value allocated to this instance so we pick up the value from prototype hierarchy\r\n newProto = target[DynProtoBaseProto] = target[DynProtoCurrent] || target[DynProtoBaseProto];\r\n target[DynProtoCurrent] = curProto;\r\n }\r\n }\r\n return newProto;\r\n}\r\n/**\r\n * Helper to get the properties of an object, including none enumerable ones as functions on a prototype in ES6\r\n * are not enumerable.\r\n * @param target\r\n */\r\nfunction _forEachProp(target, func) {\r\n var props = [];\r\n if (_objGetOwnProps) {\r\n props = _objGetOwnProps(target);\r\n }\r\n else {\r\n for (var name_1 in target) {\r\n if (typeof name_1 === \"string\" && _hasOwnProperty(target, name_1)) {\r\n props.push(name_1);\r\n }\r\n }\r\n }\r\n if (props && props.length > 0) {\r\n for (var lp = 0; lp < props.length; lp++) {\r\n func(props[lp]);\r\n }\r\n }\r\n}\r\n/**\r\n * Helper function to check whether the provided function name is a potential candidate for dynamic\r\n * callback and prototype generation.\r\n * @param target The target object, may be a prototype or class object\r\n * @param funcName The function name\r\n * @param skipOwn Skips the check for own property\r\n * @ignore\r\n */\r\nfunction _isDynamicCandidate(target, funcName, skipOwn) {\r\n return (funcName !== Constructor && typeof target[funcName] === strFunction && (skipOwn || _hasOwnProperty(target, funcName)));\r\n}\r\n/**\r\n * Helper to throw a TypeError exception\r\n * @param message the message\r\n * @ignore\r\n */\r\nfunction _throwTypeError(message) {\r\n throw new TypeError(\"DynamicProto: \" + message);\r\n}\r\n/**\r\n * Returns a collection of the instance functions that are defined directly on the thisTarget object, it does\r\n * not return any inherited functions\r\n * @param thisTarget The object to get the instance functions from\r\n * @ignore\r\n */\r\nfunction _getInstanceFuncs(thisTarget) {\r\n // Get the base proto\r\n var instFuncs = {};\r\n // Save any existing instance functions\r\n _forEachProp(thisTarget, function (name) {\r\n // Don't include any dynamic prototype instances - as we only want the real functions\r\n if (!instFuncs[name] && _isDynamicCandidate(thisTarget, name, false)) {\r\n // Create an instance callback for passing the base function to the caller\r\n instFuncs[name] = thisTarget[name];\r\n }\r\n });\r\n return instFuncs;\r\n}\r\n/**\r\n * Returns whether the value is included in the array\r\n * @param values The array of values\r\n * @param value The value\r\n */\r\nfunction _hasVisited(values, value) {\r\n for (var lp = values.length - 1; lp >= 0; lp--) {\r\n if (values[lp] === value) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n/**\r\n * Returns an object that contains callback functions for all \"base/super\" functions, this is used to \"save\"\r\n * enabling calling super.xxx() functions without requiring that the base \"class\" has defined a prototype references\r\n * @param target The current instance\r\n * @ignore\r\n */\r\nfunction _getBaseFuncs(classProto, thisTarget, instFuncs, useBaseInst) {\r\n function _instFuncProxy(target, funcHost, funcName) {\r\n var theFunc = funcHost[funcName];\r\n if (theFunc[DynProxyTag] && useBaseInst) {\r\n // grab and reuse the hosted looking function (if available) otherwise the original passed function\r\n var instFuncTable = target[DynInstFuncTable] || {};\r\n if (instFuncTable[DynAllowInstChkTag] !== false) {\r\n theFunc = (instFuncTable[funcHost[DynClassName]] || {})[funcName] || theFunc;\r\n }\r\n }\r\n return function () {\r\n // eslint-disable-next-line prefer-rest-params\r\n return theFunc.apply(target, arguments);\r\n };\r\n }\r\n // Start creating a new baseFuncs by creating proxies for the instance functions (as they may get replaced)\r\n var baseFuncs = {};\r\n _forEachProp(instFuncs, function (name) {\r\n // Create an instance callback for passing the base function to the caller\r\n baseFuncs[name] = _instFuncProxy(thisTarget, instFuncs, name);\r\n });\r\n // Get the base prototype functions\r\n var baseProto = _getObjProto(classProto);\r\n var visited = [];\r\n // Don't include base object functions for Object, Array or Function\r\n while (baseProto && !_isObjectArrayOrFunctionPrototype(baseProto) && !_hasVisited(visited, baseProto)) {\r\n // look for prototype functions\r\n _forEachProp(baseProto, function (name) {\r\n // Don't include any dynamic prototype instances - as we only want the real functions\r\n // For IE 7/8 the prototype lookup doesn't provide the full chain so we need to bypass the \r\n // hasOwnProperty check we get all of the methods, main difference is that IE7/8 doesn't return\r\n // the Object prototype methods while bypassing the check\r\n if (!baseFuncs[name] && _isDynamicCandidate(baseProto, name, !_objGetPrototypeOf)) {\r\n // Create an instance callback for passing the base function to the caller\r\n baseFuncs[name] = _instFuncProxy(thisTarget, baseProto, name);\r\n }\r\n });\r\n // We need to find all possible functions that might be overloaded by walking the entire prototype chain\r\n // This avoids the caller from needing to check whether it's direct base class implements the function or not\r\n // by walking the entire chain it simplifies the usage and issues from upgrading any of the base classes.\r\n visited.push(baseProto);\r\n baseProto = _getObjProto(baseProto);\r\n }\r\n return baseFuncs;\r\n}\r\nfunction _getInstFunc(target, funcName, proto, currentDynProtoProxy) {\r\n var instFunc = null;\r\n // We need to check whether the class name is defined directly on this prototype otherwise\r\n // it will walk the proto chain and return any parent proto classname.\r\n if (target && _hasOwnProperty(proto, DynClassName)) {\r\n var instFuncTable = target[DynInstFuncTable] || {};\r\n instFunc = (instFuncTable[proto[DynClassName]] || {})[funcName];\r\n if (!instFunc) {\r\n // Avoid stack overflow from recursive calling the same function\r\n _throwTypeError(\"Missing [\" + funcName + \"] \" + strFunction);\r\n }\r\n // We have the instance function, lets check it we can speed up further calls\r\n // by adding the instance function back directly on the instance (avoiding the dynamic func lookup)\r\n if (!instFunc[DynInstChkTag] && instFuncTable[DynAllowInstChkTag] !== false) {\r\n // If the instance already has an instance function we can't replace it\r\n var canAddInst = !_hasOwnProperty(target, funcName);\r\n // Get current prototype\r\n var objProto = _getObjProto(target);\r\n var visited = [];\r\n // Lookup the function starting at the top (instance level prototype) and traverse down, if the first matching function\r\n // if nothing is found or if the first hit is a dynamic proto instance then we can safely add an instance shortcut\r\n while (canAddInst && objProto && !_isObjectArrayOrFunctionPrototype(objProto) && !_hasVisited(visited, objProto)) {\r\n var protoFunc = objProto[funcName];\r\n if (protoFunc) {\r\n canAddInst = (protoFunc === currentDynProtoProxy);\r\n break;\r\n }\r\n // We need to find all possible initial functions to ensure that we don't bypass a valid override function\r\n visited.push(objProto);\r\n objProto = _getObjProto(objProto);\r\n }\r\n try {\r\n if (canAddInst) {\r\n // This instance doesn't have an instance func and the class hierarchy does have a higher level prototype version\r\n // so it's safe to directly assign for any subsequent calls (for better performance)\r\n target[funcName] = instFunc;\r\n }\r\n // Block further attempts to set the instance function for any\r\n instFunc[DynInstChkTag] = 1;\r\n }\r\n catch (e) {\r\n // Don't crash if the object is readonly or the runtime doesn't allow changing this\r\n // And set a flag so we don't try again for any function\r\n instFuncTable[DynAllowInstChkTag] = false;\r\n }\r\n }\r\n }\r\n return instFunc;\r\n}\r\nfunction _getProtoFunc(funcName, proto, currentDynProtoProxy) {\r\n var protoFunc = proto[funcName];\r\n // Check that the prototype function is not a self reference -- try to avoid stack overflow!\r\n if (protoFunc === currentDynProtoProxy) {\r\n // It is so lookup the base prototype\r\n protoFunc = _getObjProto(proto)[funcName];\r\n }\r\n if (typeof protoFunc !== strFunction) {\r\n _throwTypeError(\"[\" + funcName + \"] is not a \" + strFunction);\r\n }\r\n return protoFunc;\r\n}\r\n/**\r\n * Add the required dynamic prototype methods to the the class prototype\r\n * @param proto - The class prototype\r\n * @param className - The instance classname\r\n * @param target - The target instance\r\n * @param baseInstFuncs - The base instance functions\r\n * @param setInstanceFunc - Flag to allow prototype function to reset the instance function if one does not exist\r\n * @ignore\r\n */\r\nfunction _populatePrototype(proto, className, target, baseInstFuncs, setInstanceFunc) {\r\n function _createDynamicPrototype(proto, funcName) {\r\n var dynProtoProxy = function () {\r\n // Use the instance or prototype function\r\n var instFunc = _getInstFunc(this, funcName, proto, dynProtoProxy) || _getProtoFunc(funcName, proto, dynProtoProxy);\r\n // eslint-disable-next-line prefer-rest-params\r\n return instFunc.apply(this, arguments);\r\n };\r\n // Tag this function as a proxy to support replacing dynamic proxy elements (primary use case is for unit testing\r\n // via which can dynamically replace the prototype function reference)\r\n dynProtoProxy[DynProxyTag] = 1;\r\n return dynProtoProxy;\r\n }\r\n if (!_isObjectOrArrayPrototype(proto)) {\r\n var instFuncTable = target[DynInstFuncTable] = target[DynInstFuncTable] || {};\r\n var instFuncs_1 = instFuncTable[className] = (instFuncTable[className] || {}); // fetch and assign if as it may not exist yet\r\n // Set whether we are allow to lookup instances, if someone has set to false then do not re-enable\r\n if (instFuncTable[DynAllowInstChkTag] !== false) {\r\n instFuncTable[DynAllowInstChkTag] = !!setInstanceFunc;\r\n }\r\n _forEachProp(target, function (name) {\r\n // Only add overridden functions\r\n if (_isDynamicCandidate(target, name, false) && target[name] !== baseInstFuncs[name]) {\r\n // Save the instance Function to the lookup table and remove it from the instance as it's not a dynamic proto function\r\n instFuncs_1[name] = target[name];\r\n delete target[name];\r\n // Add a dynamic proto if one doesn't exist or if a prototype function exists and it's not a dynamic one\r\n if (!_hasOwnProperty(proto, name) || (proto[name] && !proto[name][DynProxyTag])) {\r\n proto[name] = _createDynamicPrototype(proto, name);\r\n }\r\n }\r\n });\r\n }\r\n}\r\n/**\r\n * Checks whether the passed prototype object appears to be correct by walking the prototype hierarchy of the instance\r\n * @param classProto The class prototype instance\r\n * @param thisTarget The current instance that will be checked whether the passed prototype instance is in the hierarchy\r\n * @ignore\r\n */\r\nfunction _checkPrototype(classProto, thisTarget) {\r\n // This method doesn't existing in older browsers (e.g. IE8)\r\n if (_objGetPrototypeOf) {\r\n // As this is primarily a coding time check, don't bother checking if running in IE8 or lower\r\n var visited = [];\r\n var thisProto = _getObjProto(thisTarget);\r\n while (thisProto && !_isObjectArrayOrFunctionPrototype(thisProto) && !_hasVisited(visited, thisProto)) {\r\n if (thisProto === classProto) {\r\n return true;\r\n }\r\n // This avoids the caller from needing to check whether it's direct base class implements the function or not\r\n // by walking the entire chain it simplifies the usage and issues from upgrading any of the base classes.\r\n visited.push(thisProto);\r\n thisProto = _getObjProto(thisProto);\r\n }\r\n return false;\r\n }\r\n // If objGetPrototypeOf doesn't exist then just assume everything is ok.\r\n return true;\r\n}\r\n/**\r\n * Gets the current prototype name using the ES6 name if available otherwise falling back to a use unknown as the name.\r\n * It's not critical for this to return a name, it's used to decorate the generated unique name for easier debugging only.\r\n * @param target\r\n * @param unknownValue\r\n * @ignore\r\n */\r\nfunction _getObjName(target, unknownValue) {\r\n if (_hasOwnProperty(target, Prototype)) {\r\n // Look like a prototype\r\n return target.name || unknownValue || UnknownValue;\r\n }\r\n return (((target || {})[Constructor]) || {}).name || unknownValue || UnknownValue;\r\n}\r\n/**\r\n * Helper function when creating dynamic (inline) functions for classes, this helper performs the following tasks :-\r\n * - Saves references to all defined base class functions\r\n * - Calls the delegateFunc with the current target (this) and a base object reference that can be used to call all \"super\" functions.\r\n * - Will populate the class prototype for all overridden functions to support class extension that call the prototype instance.\r\n * Callers should use this helper when declaring all function within the constructor of a class, as mentioned above the delegateFunc is\r\n * passed both the target \"this\" and an object that can be used to call any base (super) functions, using this based object in place of\r\n * super.XXX() (which gets expanded to _super.prototype.XXX()) provides a better minification outcome and also ensures the correct \"this\"\r\n * context is maintained as TypeScript creates incorrect references using super.XXXX() for dynamically defined functions i.e. Functions\r\n * defined in the constructor or some other function (rather than declared as complete typescript functions).\r\n * ### Usage\r\n * ```typescript\r\n * import dynamicProto from \"@microsoft/dynamicproto-js\";\r\n * class ExampleClass extends BaseClass {\r\n * constructor() {\r\n * dynamicProto(ExampleClass, this, (_self, base) => {\r\n * // This will define a function that will be converted to a prototype function\r\n * _self.newFunc = () => {\r\n * // Access any \"this\" instance property\r\n * if (_self.someProperty) {\r\n * ...\r\n * }\r\n * }\r\n * // This will define a function that will be converted to a prototype function\r\n * _self.myFunction = () => {\r\n * // Access any \"this\" instance property\r\n * if (_self.someProperty) {\r\n * // Call the base version of the function that we are overriding\r\n * base.myFunction();\r\n * }\r\n * ...\r\n * }\r\n * _self.initialize = () => {\r\n * ...\r\n * }\r\n * // Warnings: While the following will work as _self is simply a reference to\r\n * // this, if anyone overrides myFunction() the overridden will be called first\r\n * // as the normal JavaScript method resolution will occur and the defined\r\n * // _self.initialize() function is actually gets removed from the instance and\r\n * // a proxy prototype version is created to reference the created method.\r\n * _self.initialize();\r\n * });\r\n * }\r\n * }\r\n * ```\r\n * @typeparam DPType This is the generic type of the class, used to keep intellisense valid\r\n * @typeparam DPCls The type that contains the prototype of the current class\r\n * @param theClass - This is the current class instance which contains the prototype for the current class\r\n * @param target - The current \"this\" (target) reference, when the class has been extended this.prototype will not be the 'theClass' value.\r\n * @param delegateFunc - The callback function (closure) that will create the dynamic function\r\n * @param options - Additional options to configure how the dynamic prototype operates\r\n */\r\nexport default function dynamicProto(theClass, target, delegateFunc, options) {\r\n // Make sure that the passed theClass argument looks correct\r\n if (!_hasOwnProperty(theClass, Prototype)) {\r\n _throwTypeError(\"theClass is an invalid class definition.\");\r\n }\r\n // Quick check to make sure that the passed theClass argument looks correct (this is a common copy/paste error)\r\n var classProto = theClass[Prototype];\r\n if (!_checkPrototype(classProto, target)) {\r\n _throwTypeError(\"[\" + _getObjName(theClass) + \"] not in hierarchy of [\" + _getObjName(target) + \"]\");\r\n }\r\n var className = null;\r\n if (_hasOwnProperty(classProto, DynClassName)) {\r\n // Only grab the class name if it's defined on this prototype (i.e. don't walk the prototype chain)\r\n className = classProto[DynClassName];\r\n }\r\n else {\r\n // As not all browser support name on the prototype creating a unique dynamic one if we have not already\r\n // assigned one, so we can use a simple string as the lookup rather than an object for the dynamic instance\r\n // function table lookup.\r\n className = DynClassNamePrefix + _getObjName(theClass, \"_\") + \"$\" + _gblInst.n;\r\n _gblInst.n++;\r\n classProto[DynClassName] = className;\r\n }\r\n var perfOptions = dynamicProto[DynProtoDefaultOptions];\r\n var useBaseInst = !!perfOptions[strUseBaseInst];\r\n if (useBaseInst && options && options[strUseBaseInst] !== undefined) {\r\n useBaseInst = !!options[strUseBaseInst];\r\n }\r\n // Get the current instance functions\r\n var instFuncs = _getInstanceFuncs(target);\r\n // Get all of the functions for any base instance (before they are potentially overridden)\r\n var baseFuncs = _getBaseFuncs(classProto, target, instFuncs, useBaseInst);\r\n // Execute the delegate passing in both the current target \"this\" and \"base\" function references\r\n // Note casting the same type as we don't actually have the base class here and this will provide some intellisense support\r\n delegateFunc(target, baseFuncs);\r\n // Don't allow setting instance functions for older IE instances\r\n var setInstanceFunc = !!_objGetPrototypeOf && !!perfOptions[strSetInstFuncs];\r\n if (setInstanceFunc && options) {\r\n setInstanceFunc = !!options[strSetInstFuncs];\r\n }\r\n // Populate the Prototype for any overridden instance functions\r\n _populatePrototype(classProto, className, target, instFuncs, setInstanceFunc !== false);\r\n}\r\n/**\r\n * Exposes the default global options to allow global configuration, if the global values are disabled these will override\r\n * any passed values. This is primarily exposed to support unit-testing without the need for individual classes to expose\r\n * their internal usage of dynamic proto.\r\n */\r\ndynamicProto[DynProtoDefaultOptions] = _gblInst.o;\r\n//# sourceMappingURL=DynamicProto.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nexport const strShimFunction = \"function\";\r\nexport const strShimObject = \"object\";\r\nexport const strShimUndefined = \"undefined\";\r\nexport const strShimPrototype = \"prototype\";\r\nexport const strShimHasOwnProperty = \"hasOwnProperty\";\r\nexport const strDefault = \"default\";\r\n\r\nexport const ObjClass = Object;\r\nexport const ObjProto = ObjClass[strShimPrototype];\r\nexport const ObjAssign = ObjClass[\"assign\"];\r\nexport const ObjCreate = ObjClass[\"create\"];\r\nexport const ObjDefineProperty = ObjClass[\"defineProperty\"];\r\nexport const ObjHasOwnProperty = ObjProto[strShimHasOwnProperty];\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from './strings.js';\r\nconst hasBuffer = (typeof Buffer !== 'undefined');\r\nconst hasTextDecoder = (typeof TextDecoder !== 'undefined');\r\nlet textDecoder;\r\nexport class VSBuffer {\r\n constructor(buffer) {\r\n this.buffer = buffer;\r\n this.byteLength = this.buffer.byteLength;\r\n }\r\n static wrap(actual) {\r\n if (hasBuffer && !(Buffer.isBuffer(actual))) {\r\n // https://nodejs.org/dist/latest-v10.x/docs/api/buffer.html#buffer_class_method_buffer_from_arraybuffer_byteoffset_length\r\n // Create a zero-copy Buffer wrapper around the ArrayBuffer pointed to by the Uint8Array\r\n actual = Buffer.from(actual.buffer, actual.byteOffset, actual.byteLength);\r\n }\r\n return new VSBuffer(actual);\r\n }\r\n toString() {\r\n if (hasBuffer) {\r\n return this.buffer.toString();\r\n }\r\n else if (hasTextDecoder) {\r\n if (!textDecoder) {\r\n textDecoder = new TextDecoder();\r\n }\r\n return textDecoder.decode(this.buffer);\r\n }\r\n else {\r\n return strings.decodeUTF8(this.buffer);\r\n }\r\n }\r\n}\r\nexport function readUInt16LE(source, offset) {\r\n return (((source[offset + 0] << 0) >>> 0) |\r\n ((source[offset + 1] << 8) >>> 0));\r\n}\r\nexport function writeUInt16LE(destination, value, offset) {\r\n destination[offset + 0] = (value & 0b11111111);\r\n value = value >>> 8;\r\n destination[offset + 1] = (value & 0b11111111);\r\n}\r\nexport function readUInt32BE(source, offset) {\r\n return (source[offset] * Math.pow(2, 24)\r\n + source[offset + 1] * Math.pow(2, 16)\r\n + source[offset + 2] * Math.pow(2, 8)\r\n + source[offset + 3]);\r\n}\r\nexport function writeUInt32BE(destination, value, offset) {\r\n destination[offset + 3] = value;\r\n value = value >>> 8;\r\n destination[offset + 2] = value;\r\n value = value >>> 8;\r\n destination[offset + 1] = value;\r\n value = value >>> 8;\r\n destination[offset] = value;\r\n}\r\nexport function readUInt8(source, offset) {\r\n return source[offset];\r\n}\r\nexport function writeUInt8(destination, value, offset) {\r\n destination[offset] = value;\r\n}\r\n","\"use strict\";\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 __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createProtocolConnection = void 0;\nconst browser_1 = require(\"vscode-jsonrpc/browser\");\n__exportStar(require(\"vscode-jsonrpc/browser\"), exports);\n__exportStar(require(\"../common/api\"), exports);\nfunction createProtocolConnection(reader, writer, logger, options) {\n return browser_1.createMessageConnection(reader, writer, logger, options);\n}\nexports.createProtocolConnection = createProtocolConnection;\n//# sourceMappingURL=main.js.map","import PropTypes from 'prop-types'; // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.4/js/src/modal.js#L436-L443\n\nexport function getScrollbarWidth() {\n var scrollDiv = document.createElement('div'); // .modal-scrollbar-measure styles // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.4/scss/_modal.scss#L106-L113\n\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n}\nexport function setScrollbarWidth(padding) {\n document.body.style.paddingRight = padding > 0 ? padding + \"px\" : null;\n}\nexport function isBodyOverflowing() {\n return document.body.clientWidth < window.innerWidth;\n}\nexport function getOriginalBodyPadding() {\n var style = window.getComputedStyle(document.body, null);\n return parseInt(style && style.getPropertyValue('padding-right') || 0, 10);\n}\nexport function conditionallyUpdateScrollbar() {\n var scrollbarWidth = getScrollbarWidth(); // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.6/js/src/modal.js#L433\n\n var fixedContent = document.querySelectorAll('.fixed-top, .fixed-bottom, .is-fixed, .sticky-top')[0];\n var bodyPadding = fixedContent ? parseInt(fixedContent.style.paddingRight || 0, 10) : 0;\n\n if (isBodyOverflowing()) {\n setScrollbarWidth(bodyPadding + scrollbarWidth);\n }\n}\nvar globalCssModule;\nexport function setGlobalCssModule(cssModule) {\n globalCssModule = cssModule;\n}\nexport function mapToCssModules(className, cssModule) {\n if (className === void 0) {\n className = '';\n }\n\n if (cssModule === void 0) {\n cssModule = globalCssModule;\n }\n\n if (!cssModule) return className;\n return className.split(' ').map(function (c) {\n return cssModule[c] || c;\n }).join(' ');\n}\n/**\n * Returns a new object with the key/value pairs from `obj` that are not in the array `omitKeys`.\n */\n\nexport function omit(obj, omitKeys) {\n var result = {};\n Object.keys(obj).forEach(function (key) {\n if (omitKeys.indexOf(key) === -1) {\n result[key] = obj[key];\n }\n });\n return result;\n}\n/**\n * Returns a filtered copy of an object with only the specified keys.\n */\n\nexport function pick(obj, keys) {\n var pickKeys = Array.isArray(keys) ? keys : [keys];\n var length = pickKeys.length;\n var key;\n var result = {};\n\n while (length > 0) {\n length -= 1;\n key = pickKeys[length];\n result[key] = obj[key];\n }\n\n return result;\n}\nvar warned = {};\nexport function warnOnce(message) {\n if (!warned[message]) {\n /* istanbul ignore else */\n if (typeof console !== 'undefined') {\n console.error(message); // eslint-disable-line no-console\n }\n\n warned[message] = true;\n }\n}\nexport function deprecated(propType, explanation) {\n return function validate(props, propName, componentName) {\n if (props[propName] !== null && typeof props[propName] !== 'undefined') {\n warnOnce(\"\\\"\" + propName + \"\\\" property of \\\"\" + componentName + \"\\\" has been deprecated.\\n\" + explanation);\n }\n\n for (var _len = arguments.length, rest = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n rest[_key - 3] = arguments[_key];\n }\n\n return propType.apply(void 0, [props, propName, componentName].concat(rest));\n };\n} // Shim Element if needed (e.g. in Node environment)\n\nvar Element = typeof window === 'object' && window.Element || function () {};\n\nexport function DOMElement(props, propName, componentName) {\n if (!(props[propName] instanceof Element)) {\n return new Error('Invalid prop `' + propName + '` supplied to `' + componentName + '`. Expected prop to be an instance of Element. Validation failed.');\n }\n}\nexport var targetPropType = PropTypes.oneOfType([PropTypes.string, PropTypes.func, DOMElement, PropTypes.shape({\n current: PropTypes.any\n})]);\nexport var tagPropType = PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.shape({\n $$typeof: PropTypes.symbol,\n render: PropTypes.func\n}), PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.shape({\n $$typeof: PropTypes.symbol,\n render: PropTypes.func\n})]))]);\n/* eslint key-spacing: [\"error\", { afterColon: true, align: \"value\" }] */\n// These are all setup to match what is in the bootstrap _variables.scss\n// https://github.com/twbs/bootstrap/blob/v4-dev/scss/_variables.scss\n\nexport var TransitionTimeouts = {\n Fade: 150,\n // $transition-fade\n Collapse: 350,\n // $transition-collapse\n Modal: 300,\n // $modal-transition\n Carousel: 600 // $carousel-transition\n\n}; // Duplicated Transition.propType keys to ensure that Reactstrap builds\n// for distribution properly exclude these keys for nested child HTML attributes\n// since `react-transition-group` removes propTypes in production builds.\n\nexport var TransitionPropTypeKeys = ['in', 'mountOnEnter', 'unmountOnExit', 'appear', 'enter', 'exit', 'timeout', 'onEnter', 'onEntering', 'onEntered', 'onExit', 'onExiting', 'onExited'];\nexport var TransitionStatuses = {\n ENTERING: 'entering',\n ENTERED: 'entered',\n EXITING: 'exiting',\n EXITED: 'exited'\n};\nexport var keyCodes = {\n esc: 27,\n space: 32,\n enter: 13,\n tab: 9,\n up: 38,\n down: 40,\n home: 36,\n end: 35,\n n: 78,\n p: 80\n};\nexport var PopperPlacements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\nexport var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nexport function isReactRefObj(target) {\n if (target && typeof target === 'object') {\n return 'current' in target;\n }\n\n return false;\n}\n\nfunction getTag(value) {\n if (value == null) {\n return value === undefined ? '[object Undefined]' : '[object Null]';\n }\n\n return Object.prototype.toString.call(value);\n}\n\nexport function toNumber(value) {\n var type = typeof value;\n var NAN = 0 / 0;\n\n if (type === 'number') {\n return value;\n }\n\n if (type === 'symbol' || type === 'object' && getTag(value) === '[object Symbol]') {\n return NAN;\n }\n\n if (isObject(value)) {\n var other = typeof value.valueOf === 'function' ? value.valueOf() : value;\n value = isObject(other) ? \"\" + other : other;\n }\n\n if (type !== 'string') {\n return value === 0 ? value : +value;\n }\n\n value = value.replace(/^\\s+|\\s+$/g, '');\n var isBinary = /^0b[01]+$/i.test(value);\n return isBinary || /^0o[0-7]+$/i.test(value) ? parseInt(value.slice(2), isBinary ? 2 : 8) : /^[-+]0x[0-9a-f]+$/i.test(value) ? NAN : +value;\n}\nexport function isObject(value) {\n var type = typeof value;\n return value != null && (type === 'object' || type === 'function');\n}\nexport function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n\n var tag = getTag(value);\n return tag === '[object Function]' || tag === '[object AsyncFunction]' || tag === '[object GeneratorFunction]' || tag === '[object Proxy]';\n}\nexport function findDOMElements(target) {\n if (isReactRefObj(target)) {\n return target.current;\n }\n\n if (isFunction(target)) {\n return target();\n }\n\n if (typeof target === 'string' && canUseDOM) {\n var selection = document.querySelectorAll(target);\n\n if (!selection.length) {\n selection = document.querySelectorAll(\"#\" + target);\n }\n\n if (!selection.length) {\n throw new Error(\"The target '\" + target + \"' could not be identified in the dom, tip: check spelling\");\n }\n\n return selection;\n }\n\n return target;\n}\nexport function isArrayOrNodeList(els) {\n if (els === null) {\n return false;\n }\n\n return Array.isArray(els) || canUseDOM && typeof els.length === 'number';\n}\nexport function getTarget(target, allElements) {\n var els = findDOMElements(target);\n\n if (allElements) {\n if (isArrayOrNodeList(els)) {\n return els;\n }\n\n if (els === null) {\n return [];\n }\n\n return [els];\n } else {\n if (isArrayOrNodeList(els)) {\n return els[0];\n }\n\n return els;\n }\n}\nexport var defaultToggleEvents = ['touchstart', 'click'];\nexport function addMultipleEventListeners(_els, handler, _events, useCapture) {\n var els = _els;\n\n if (!isArrayOrNodeList(els)) {\n els = [els];\n }\n\n var events = _events;\n\n if (typeof events === 'string') {\n events = events.split(/\\s+/);\n }\n\n if (!isArrayOrNodeList(els) || typeof handler !== 'function' || !Array.isArray(events)) {\n throw new Error(\"\\n The first argument of this function must be DOM node or an array on DOM nodes or NodeList.\\n The second must be a function.\\n The third is a string or an array of strings that represents DOM events\\n \");\n }\n\n Array.prototype.forEach.call(events, function (event) {\n Array.prototype.forEach.call(els, function (el) {\n el.addEventListener(event, handler, useCapture);\n });\n });\n return function removeEvents() {\n Array.prototype.forEach.call(events, function (event) {\n Array.prototype.forEach.call(els, function (el) {\n el.removeEventListener(event, handler, useCapture);\n });\n });\n };\n}\nexport var focusableElements = ['a[href]', 'area[href]', 'input:not([disabled]):not([type=hidden])', 'select:not([disabled])', 'textarea:not([disabled])', 'button:not([disabled])', 'object', 'embed', '[tabindex]:not(.modal)', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable=\"false\"])'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nexport default createNamedContext;\n","import createNamedContext from \"./createNameContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","import createNamedContext from \"./createNameContext\";\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n } else {\n this._pendingLocation = location;\n }\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) {\n this.unlisten();\n this._isMounted = false;\n this._pendingLocation = null;\n }\n }\n\n render() {\n return (\n \n \n \n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change \"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && isEmptyChildren(children)) {\n children = null;\n }\n\n return (\n \n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n \n );\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use and in the same route; will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with \", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return ;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(RouterContext).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(RouterContext).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n const location = useLocation();\n const match = useContext(RouterContext).match;\n return path ? matchPath(location.pathname, path) : match;\n}\n","\"use strict\";\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 * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProtocolNotificationType = exports.ProtocolNotificationType0 = exports.ProtocolRequestType = exports.ProtocolRequestType0 = exports.RegistrationType = void 0;\nconst vscode_jsonrpc_1 = require(\"vscode-jsonrpc\");\nclass RegistrationType {\n constructor(method) {\n this.method = method;\n }\n}\nexports.RegistrationType = RegistrationType;\nclass ProtocolRequestType0 extends vscode_jsonrpc_1.RequestType0 {\n constructor(method) {\n super(method);\n }\n}\nexports.ProtocolRequestType0 = ProtocolRequestType0;\nclass ProtocolRequestType extends vscode_jsonrpc_1.RequestType {\n constructor(method) {\n super(method, vscode_jsonrpc_1.ParameterStructures.byName);\n }\n}\nexports.ProtocolRequestType = ProtocolRequestType;\nclass ProtocolNotificationType0 extends vscode_jsonrpc_1.NotificationType0 {\n constructor(method) {\n super(method);\n }\n}\nexports.ProtocolNotificationType0 = ProtocolNotificationType0;\nclass ProtocolNotificationType extends vscode_jsonrpc_1.NotificationType {\n constructor(method) {\n super(method, vscode_jsonrpc_1.ParameterStructures.byName);\n }\n}\nexports.ProtocolNotificationType = ProtocolNotificationType;\n// let x: ProtocolNotificationType;\n// let y: ProtocolNotificationType;\n// x = y;\n//# sourceMappingURL=messages.js.map","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n throw new Error(prefix + \": \" + (message || ''));\n}\n\nexport default invariant;\n","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { isWindows, isMacintosh, setImmediate, globals } from './platform.js';\r\nlet safeProcess;\r\n// Native sandbox environment\r\nif (typeof globals.vscode !== 'undefined' && typeof globals.vscode.process !== 'undefined') {\r\n const sandboxProcess = globals.vscode.process;\r\n safeProcess = {\r\n get platform() { return sandboxProcess.platform; },\r\n get env() { return sandboxProcess.env; },\r\n cwd() { return sandboxProcess.cwd(); },\r\n nextTick(callback) { return setImmediate(callback); }\r\n };\r\n}\r\n// Native node.js environment\r\nelse if (typeof process !== 'undefined') {\r\n safeProcess = {\r\n get platform() { return process.platform; },\r\n get env() { return process.env; },\r\n cwd() { return process.env['VSCODE_CWD'] || process.cwd(); },\r\n nextTick(callback) { return process.nextTick(callback); }\r\n };\r\n}\r\n// Web environment\r\nelse {\r\n safeProcess = {\r\n // Supported\r\n get platform() { return isWindows ? 'win32' : isMacintosh ? 'darwin' : 'linux'; },\r\n nextTick(callback) { return setImmediate(callback); },\r\n // Unsupported\r\n get env() { return {}; },\r\n cwd() { return '/'; }\r\n };\r\n}\r\n/**\r\n * Provides safe access to the `cwd` property in node.js, sandboxed or web\r\n * environments.\r\n *\r\n * Note: in web, this property is hardcoded to be `/`.\r\n */\r\nexport const cwd = safeProcess.cwd;\r\n/**\r\n * Provides safe access to the `env` property in node.js, sandboxed or web\r\n * environments.\r\n *\r\n * Note: in web, this property is hardcoded to be `{}`.\r\n */\r\nexport const env = safeProcess.env;\r\n/**\r\n * Provides safe access to the `platform` property in node.js, sandboxed or web\r\n * environments.\r\n */\r\nexport const platform = safeProcess.platform;\r\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nexport var reactFormulaEditorId = 'reactFormulaEditor';\n// Unfortunately the type definitions for monaco are old. Once the react formula bar is the only\n// formula bar this can be removed.\nexport var ErrorSeverity;\n(function (ErrorSeverity) {\n ErrorSeverity[ErrorSeverity[\"Info\"] = 1] = \"Info\";\n ErrorSeverity[ErrorSeverity[\"Warning\"] = 4] = \"Warning\";\n ErrorSeverity[ErrorSeverity[\"Error\"] = 8] = \"Error\";\n})(ErrorSeverity || (ErrorSeverity = {}));\nvar PowerFxFormulaEditorError = /** @class */ (function (_super) {\n __extends(PowerFxFormulaEditorError, _super);\n function PowerFxFormulaEditorError(message) {\n var _this = _super.call(this, message) || this;\n _this.name = 'PowerFxFormulaEditorError';\n return _this;\n }\n return PowerFxFormulaEditorError;\n}(Error));\nexport { PowerFxFormulaEditorError };\nexport var CommandName;\n(function (CommandName) {\n CommandName[\"CodeActionApplied\"] = \"codeActionApplied\";\n})(CommandName || (CommandName = {}));\n//# sourceMappingURL=FormulaEditor.types.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\nvar possibleConstructorReturn = require(\"./possibleConstructorReturn.js\");\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}\nmodule.exports = _createSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\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 * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nlet _ral;\nfunction RAL() {\n if (_ral === undefined) {\n throw new Error(`No runtime abstraction layer installed`);\n }\n return _ral;\n}\n(function (RAL) {\n function install(ral) {\n if (ral === undefined) {\n throw new Error(`No runtime abstraction layer provided`);\n }\n _ral = ral;\n }\n RAL.install = install;\n})(RAL || (RAL = {}));\nexports.default = RAL;\n//# sourceMappingURL=ral.js.map","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport { createPath } from 'history';\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n return ;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const isDuplicateNavigation = createPath(context.location) === createPath(normalizeToLocation(location));\n const method = (replace || isDuplicateNavigation) ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\", // TODO: deprecate\n activeStyle, // TODO: deprecate\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n sensitive,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n sensitive,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n let className =\n typeof classNameProp === \"function\"\n ? classNameProp(isActive)\n : classNameProp;\n\n let style =\n typeof styleProp === \"function\" ? styleProp(isActive) : styleProp;\n\n if (isActive) {\n className = joinClassnames(className, activeClassName);\n style = { ...style, ...activeStyle };\n }\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return ;\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\",\n \"false\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.oneOfType([PropTypes.object, PropTypes.func])\n };\n}\n\nexport default NavLink;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","\"use strict\";\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 * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Emitter = exports.Event = void 0;\nconst ral_1 = require(\"./ral\");\nvar Event;\n(function (Event) {\n const _disposable = { dispose() { } };\n Event.None = function () { return _disposable; };\n})(Event = exports.Event || (exports.Event = {}));\nclass CallbackList {\n add(callback, context = null, bucket) {\n if (!this._callbacks) {\n this._callbacks = [];\n this._contexts = [];\n }\n this._callbacks.push(callback);\n this._contexts.push(context);\n if (Array.isArray(bucket)) {\n bucket.push({ dispose: () => this.remove(callback, context) });\n }\n }\n remove(callback, context = null) {\n if (!this._callbacks) {\n return;\n }\n let foundCallbackWithDifferentContext = false;\n for (let i = 0, len = this._callbacks.length; i < len; i++) {\n if (this._callbacks[i] === callback) {\n if (this._contexts[i] === context) {\n // callback & context match => remove it\n this._callbacks.splice(i, 1);\n this._contexts.splice(i, 1);\n return;\n }\n else {\n foundCallbackWithDifferentContext = true;\n }\n }\n }\n if (foundCallbackWithDifferentContext) {\n throw new Error('When adding a listener with a context, you should remove it with the same context');\n }\n }\n invoke(...args) {\n if (!this._callbacks) {\n return [];\n }\n const ret = [], callbacks = this._callbacks.slice(0), contexts = this._contexts.slice(0);\n for (let i = 0, len = callbacks.length; i < len; i++) {\n try {\n ret.push(callbacks[i].apply(contexts[i], args));\n }\n catch (e) {\n // eslint-disable-next-line no-console\n ral_1.default().console.error(e);\n }\n }\n return ret;\n }\n isEmpty() {\n return !this._callbacks || this._callbacks.length === 0;\n }\n dispose() {\n this._callbacks = undefined;\n this._contexts = undefined;\n }\n}\nclass Emitter {\n constructor(_options) {\n this._options = _options;\n }\n /**\n * For the public to allow to subscribe\n * to events from this Emitter\n */\n get event() {\n if (!this._event) {\n this._event = (listener, thisArgs, disposables) => {\n if (!this._callbacks) {\n this._callbacks = new CallbackList();\n }\n if (this._options && this._options.onFirstListenerAdd && this._callbacks.isEmpty()) {\n this._options.onFirstListenerAdd(this);\n }\n this._callbacks.add(listener, thisArgs);\n const result = {\n dispose: () => {\n if (!this._callbacks) {\n // disposable is disposed after emitter is disposed.\n return;\n }\n this._callbacks.remove(listener, thisArgs);\n result.dispose = Emitter._noop;\n if (this._options && this._options.onLastListenerRemove && this._callbacks.isEmpty()) {\n this._options.onLastListenerRemove(this);\n }\n }\n };\n if (Array.isArray(disposables)) {\n disposables.push(result);\n }\n return result;\n };\n }\n return this._event;\n }\n /**\n * To be kept private to fire an event to\n * subscribers\n */\n fire(event) {\n if (this._callbacks) {\n this._callbacks.invoke.call(this._callbacks, event);\n }\n }\n dispose() {\n if (this._callbacks) {\n this._callbacks.dispose();\n this._callbacks = undefined;\n }\n }\n}\nexports.Emitter = Emitter;\nEmitter._noop = function () { };\n//# sourceMappingURL=events.js.map","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { ObjCreate, strShimFunction, strShimObject, strShimPrototype, strShimUndefined } from \"./Constants\";\r\n\r\ndeclare var globalThis: Window;\r\ndeclare var global: Window;\r\n\r\nlet _cachedGlobal: Window = null;\r\n\r\n/**\r\n * Returns the current global scope object, for a normal web page this will be the current\r\n * window, for a Web Worker this will be current worker global scope via \"self\". The internal\r\n * implementation returns the first available instance object in the following order\r\n * - globalThis (New standard)\r\n * - self (Will return the current window instance for supported browsers)\r\n * - window (fallback for older browser implementations)\r\n * - global (NodeJS standard)\r\n * - (When all else fails)\r\n * While the return type is a Window for the normal case, not all environments will support all\r\n * of the properties or functions.\r\n */\r\n export function getGlobal(useCached: boolean = true): Window {\r\n if (!_cachedGlobal || !useCached) {\r\n\r\n if (typeof globalThis !== strShimUndefined && globalThis) {\r\n _cachedGlobal = globalThis;\r\n }\r\n\r\n if (typeof self !== strShimUndefined && self) {\r\n _cachedGlobal = self;\r\n }\r\n\r\n if (typeof window !== strShimUndefined && window) {\r\n _cachedGlobal = window;\r\n }\r\n\r\n if (typeof global !== strShimUndefined && global) {\r\n _cachedGlobal = global;\r\n }\r\n }\r\n\r\n return _cachedGlobal;\r\n}\r\n\r\nexport function throwTypeError(message: string): never {\r\n throw new TypeError(message);\r\n}\r\n\r\n/**\r\n * Creates an object that has the specified prototype, and that optionally contains specified properties. This helper exists to avoid adding a polyfil\r\n * for older browsers that do not define Object.create eg. ES3 only, IE8 just in case any page checks for presence/absence of the prototype implementation.\r\n * Note: For consistency this will not use the Object.create implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param obj Object to use as a prototype. May be null\r\n */\r\nexport function objCreateFn(obj: any): any {\r\n var func = ObjCreate;\r\n // Use build in Object.create\r\n if (func) {\r\n // Use Object create method if it exists\r\n return func(obj);\r\n }\r\n if (obj == null) {\r\n return {};\r\n }\r\n var type = typeof obj;\r\n if (type !== strShimObject && type !== strShimFunction) {\r\n throwTypeError(\"Object prototype may only be an Object:\" + obj);\r\n }\r\n\r\n function tmpFunc() {}\r\n tmpFunc[strShimPrototype] = obj;\r\n\r\n return new (tmpFunc as any)();\r\n}\r\n\r\n","\"use strict\";\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 __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createMessageConnection = exports.BrowserMessageWriter = exports.BrowserMessageReader = void 0;\nconst ril_1 = require(\"./ril\");\n// Install the browser runtime abstract.\nril_1.default.install();\nconst api_1 = require(\"../common/api\");\n__exportStar(require(\"../common/api\"), exports);\nclass BrowserMessageReader extends api_1.AbstractMessageReader {\n constructor(context) {\n super();\n this._onData = new api_1.Emitter();\n this._messageListener = (event) => {\n this._onData.fire(event.data);\n };\n context.addEventListener('error', (event) => this.fireError(event));\n context.onmessage = this._messageListener;\n }\n listen(callback) {\n return this._onData.event(callback);\n }\n}\nexports.BrowserMessageReader = BrowserMessageReader;\nclass BrowserMessageWriter extends api_1.AbstractMessageWriter {\n constructor(context) {\n super();\n this.context = context;\n this.errorCount = 0;\n context.addEventListener('error', (event) => this.fireError(event));\n }\n write(msg) {\n try {\n this.context.postMessage(msg);\n return Promise.resolve();\n }\n catch (error) {\n this.handleError(error, msg);\n return Promise.reject(error);\n }\n }\n handleError(error, msg) {\n this.errorCount++;\n this.fireError(error, msg, this.errorCount);\n }\n end() {\n }\n}\nexports.BrowserMessageWriter = BrowserMessageWriter;\nfunction createMessageConnection(reader, writer, logger, options) {\n if (logger === undefined) {\n logger = api_1.NullLogger;\n }\n if (api_1.ConnectionStrategy.is(options)) {\n options = { connectionStrategy: options };\n }\n return api_1.createMessageConnection(reader, writer, logger, options);\n}\nexports.createMessageConnection = createMessageConnection;\n//# sourceMappingURL=main.js.map","\"use strict\";\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 * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stringArray = exports.array = exports.func = exports.error = exports.number = exports.string = exports.boolean = void 0;\nfunction boolean(value) {\n return value === true || value === false;\n}\nexports.boolean = boolean;\nfunction string(value) {\n return typeof value === 'string' || value instanceof String;\n}\nexports.string = string;\nfunction number(value) {\n return typeof value === 'number' || value instanceof Number;\n}\nexports.number = number;\nfunction error(value) {\n return value instanceof Error;\n}\nexports.error = error;\nfunction func(value) {\n return typeof value === 'function';\n}\nexports.func = func;\nfunction array(value) {\n return Array.isArray(value);\n}\nexports.array = array;\nfunction stringArray(value) {\n return array(value) && value.every(elem => string(elem));\n}\nexports.stringArray = stringArray;\n//# sourceMappingURL=is.js.map","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","\"use strict\";\n\nvar _CSSTransition = _interopRequireDefault(require(\"./CSSTransition\"));\n\nvar _ReplaceTransition = _interopRequireDefault(require(\"./ReplaceTransition\"));\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n Transition: _Transition.default,\n TransitionGroup: _TransitionGroup.default,\n ReplaceTransition: _ReplaceTransition.default,\n CSSTransition: _CSSTransition.default\n};","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\nmodule.exports = _createForOfIteratorHelper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 0 },\n * entered: { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context.transitionGroup; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n var _proto = Transition.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: null // allows for nested Transitions\n\n };\n };\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n var node = _reactDom.default.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing);\n\n _this2.onTransitionEnd(node, enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n this.props.addEndListener(node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n return children(status, childProps);\n }\n\n var child = _react.default.Children.only(children);\n\n return _react.default.cloneElement(child, childProps);\n };\n\n return Transition;\n}(_react.default.Component);\n\nTransition.contextTypes = {\n transitionGroup: PropTypes.object\n};\nTransition.childContextTypes = {\n transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`, `'unmounted'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * Normally a component is not transitioned if it is shown when the `` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = _PropTypes.timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. **Note:** Timeouts are still used as a fallback if provided.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(Transition);\n\nexports.default = _default;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n","\"use strict\";\n\nexports.__esModule = true;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar timeoutsShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n enter: _propTypes.default.number,\n exit: _propTypes.default.number,\n appear: _propTypes.default.number\n}).isRequired]) : null;\nexports.timeoutsShape = timeoutsShape;\nvar classNamesShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({\n enter: _propTypes.default.string,\n exit: _propTypes.default.string,\n active: _propTypes.default.string\n}), _propTypes.default.shape({\n enter: _propTypes.default.string,\n enterDone: _propTypes.default.string,\n enterActive: _propTypes.default.string,\n exit: _propTypes.default.string,\n exitDone: _propTypes.default.string,\n exitActive: _propTypes.default.string\n})]) : null;\nexports.classNamesShape = classNamesShape;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _ChildMapping = require(\"./utils/ChildMapping\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n /**\n * The `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the ``.\n *\n * Note that `` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\n};\n\nvar TransitionGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_assertThisInitialized(_this))); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: {\n isMounting: !this.appeared\n }\n };\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this.appeared = true;\n this.mounted = true;\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? (0, _ChildMapping.getInitialChildMapping)(nextProps, handleExited) : (0, _ChildMapping.getNextChildMapping)(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n };\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = (0, _ChildMapping.getChildMapping)(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return children;\n }\n\n return _react.default.createElement(Component, props, children);\n };\n\n return TransitionGroup;\n}(_react.default.Component);\n\nTransitionGroup.childContextTypes = {\n transitionGroup: _propTypes.default.object.isRequired\n};\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `` renders a `
` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `
` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: _propTypes.default.any,\n\n /**\n * A set of `` components, that are toggled `in` and out as they\n * leave. the `` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `` as\n * with our `` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: _propTypes.default.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: _propTypes.default.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: _propTypes.default.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(TransitionGroup);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\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'use strict';\n\nmodule.exports = require('./lib/browser/main');","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\nmodule.exports = _toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\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 *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Disposable = void 0;\nvar Disposable;\n(function (Disposable) {\n function create(func) {\n return {\n dispose: func\n };\n }\n Disposable.create = create;\n})(Disposable = exports.Disposable || (exports.Disposable = {}));\n//# sourceMappingURL=disposable.js.map","\"use strict\";\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/// \nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CancellationSenderStrategy = exports.CancellationReceiverStrategy = exports.ConnectionError = exports.ConnectionErrors = exports.LogTraceNotification = exports.SetTraceNotification = exports.TraceFormat = exports.Trace = exports.ProgressType = exports.createMessageConnection = exports.NullLogger = exports.ConnectionOptions = exports.ConnectionStrategy = exports.WriteableStreamMessageWriter = exports.AbstractMessageWriter = exports.MessageWriter = exports.ReadableStreamMessageReader = exports.AbstractMessageReader = exports.MessageReader = exports.CancellationToken = exports.CancellationTokenSource = exports.Emitter = exports.Event = exports.Disposable = exports.ParameterStructures = exports.NotificationType9 = exports.NotificationType8 = exports.NotificationType7 = exports.NotificationType6 = exports.NotificationType5 = exports.NotificationType4 = exports.NotificationType3 = exports.NotificationType2 = exports.NotificationType1 = exports.NotificationType0 = exports.NotificationType = exports.ErrorCodes = exports.ResponseError = exports.RequestType9 = exports.RequestType8 = exports.RequestType7 = exports.RequestType6 = exports.RequestType5 = exports.RequestType4 = exports.RequestType3 = exports.RequestType2 = exports.RequestType1 = exports.RequestType0 = exports.RequestType = exports.RAL = void 0;\nexports.CancellationStrategy = void 0;\nconst messages_1 = require(\"../common/messages\");\nObject.defineProperty(exports, \"RequestType\", { enumerable: true, get: function () { return messages_1.RequestType; } });\nObject.defineProperty(exports, \"RequestType0\", { enumerable: true, get: function () { return messages_1.RequestType0; } });\nObject.defineProperty(exports, \"RequestType1\", { enumerable: true, get: function () { return messages_1.RequestType1; } });\nObject.defineProperty(exports, \"RequestType2\", { enumerable: true, get: function () { return messages_1.RequestType2; } });\nObject.defineProperty(exports, \"RequestType3\", { enumerable: true, get: function () { return messages_1.RequestType3; } });\nObject.defineProperty(exports, \"RequestType4\", { enumerable: true, get: function () { return messages_1.RequestType4; } });\nObject.defineProperty(exports, \"RequestType5\", { enumerable: true, get: function () { return messages_1.RequestType5; } });\nObject.defineProperty(exports, \"RequestType6\", { enumerable: true, get: function () { return messages_1.RequestType6; } });\nObject.defineProperty(exports, \"RequestType7\", { enumerable: true, get: function () { return messages_1.RequestType7; } });\nObject.defineProperty(exports, \"RequestType8\", { enumerable: true, get: function () { return messages_1.RequestType8; } });\nObject.defineProperty(exports, \"RequestType9\", { enumerable: true, get: function () { return messages_1.RequestType9; } });\nObject.defineProperty(exports, \"ResponseError\", { enumerable: true, get: function () { return messages_1.ResponseError; } });\nObject.defineProperty(exports, \"ErrorCodes\", { enumerable: true, get: function () { return messages_1.ErrorCodes; } });\nObject.defineProperty(exports, \"NotificationType\", { enumerable: true, get: function () { return messages_1.NotificationType; } });\nObject.defineProperty(exports, \"NotificationType0\", { enumerable: true, get: function () { return messages_1.NotificationType0; } });\nObject.defineProperty(exports, \"NotificationType1\", { enumerable: true, get: function () { return messages_1.NotificationType1; } });\nObject.defineProperty(exports, \"NotificationType2\", { enumerable: true, get: function () { return messages_1.NotificationType2; } });\nObject.defineProperty(exports, \"NotificationType3\", { enumerable: true, get: function () { return messages_1.NotificationType3; } });\nObject.defineProperty(exports, \"NotificationType4\", { enumerable: true, get: function () { return messages_1.NotificationType4; } });\nObject.defineProperty(exports, \"NotificationType5\", { enumerable: true, get: function () { return messages_1.NotificationType5; } });\nObject.defineProperty(exports, \"NotificationType6\", { enumerable: true, get: function () { return messages_1.NotificationType6; } });\nObject.defineProperty(exports, \"NotificationType7\", { enumerable: true, get: function () { return messages_1.NotificationType7; } });\nObject.defineProperty(exports, \"NotificationType8\", { enumerable: true, get: function () { return messages_1.NotificationType8; } });\nObject.defineProperty(exports, \"NotificationType9\", { enumerable: true, get: function () { return messages_1.NotificationType9; } });\nObject.defineProperty(exports, \"ParameterStructures\", { enumerable: true, get: function () { return messages_1.ParameterStructures; } });\nconst disposable_1 = require(\"../common/disposable\");\nObject.defineProperty(exports, \"Disposable\", { enumerable: true, get: function () { return disposable_1.Disposable; } });\nconst events_1 = require(\"../common/events\");\nObject.defineProperty(exports, \"Event\", { enumerable: true, get: function () { return events_1.Event; } });\nObject.defineProperty(exports, \"Emitter\", { enumerable: true, get: function () { return events_1.Emitter; } });\nconst cancellation_1 = require(\"../common/cancellation\");\nObject.defineProperty(exports, \"CancellationTokenSource\", { enumerable: true, get: function () { return cancellation_1.CancellationTokenSource; } });\nObject.defineProperty(exports, \"CancellationToken\", { enumerable: true, get: function () { return cancellation_1.CancellationToken; } });\nconst messageReader_1 = require(\"../common/messageReader\");\nObject.defineProperty(exports, \"MessageReader\", { enumerable: true, get: function () { return messageReader_1.MessageReader; } });\nObject.defineProperty(exports, \"AbstractMessageReader\", { enumerable: true, get: function () { return messageReader_1.AbstractMessageReader; } });\nObject.defineProperty(exports, \"ReadableStreamMessageReader\", { enumerable: true, get: function () { return messageReader_1.ReadableStreamMessageReader; } });\nconst messageWriter_1 = require(\"../common/messageWriter\");\nObject.defineProperty(exports, \"MessageWriter\", { enumerable: true, get: function () { return messageWriter_1.MessageWriter; } });\nObject.defineProperty(exports, \"AbstractMessageWriter\", { enumerable: true, get: function () { return messageWriter_1.AbstractMessageWriter; } });\nObject.defineProperty(exports, \"WriteableStreamMessageWriter\", { enumerable: true, get: function () { return messageWriter_1.WriteableStreamMessageWriter; } });\nconst connection_1 = require(\"../common/connection\");\nObject.defineProperty(exports, \"ConnectionStrategy\", { enumerable: true, get: function () { return connection_1.ConnectionStrategy; } });\nObject.defineProperty(exports, \"ConnectionOptions\", { enumerable: true, get: function () { return connection_1.ConnectionOptions; } });\nObject.defineProperty(exports, \"NullLogger\", { enumerable: true, get: function () { return connection_1.NullLogger; } });\nObject.defineProperty(exports, \"createMessageConnection\", { enumerable: true, get: function () { return connection_1.createMessageConnection; } });\nObject.defineProperty(exports, \"ProgressType\", { enumerable: true, get: function () { return connection_1.ProgressType; } });\nObject.defineProperty(exports, \"Trace\", { enumerable: true, get: function () { return connection_1.Trace; } });\nObject.defineProperty(exports, \"TraceFormat\", { enumerable: true, get: function () { return connection_1.TraceFormat; } });\nObject.defineProperty(exports, \"SetTraceNotification\", { enumerable: true, get: function () { return connection_1.SetTraceNotification; } });\nObject.defineProperty(exports, \"LogTraceNotification\", { enumerable: true, get: function () { return connection_1.LogTraceNotification; } });\nObject.defineProperty(exports, \"ConnectionErrors\", { enumerable: true, get: function () { return connection_1.ConnectionErrors; } });\nObject.defineProperty(exports, \"ConnectionError\", { enumerable: true, get: function () { return connection_1.ConnectionError; } });\nObject.defineProperty(exports, \"CancellationReceiverStrategy\", { enumerable: true, get: function () { return connection_1.CancellationReceiverStrategy; } });\nObject.defineProperty(exports, \"CancellationSenderStrategy\", { enumerable: true, get: function () { return connection_1.CancellationSenderStrategy; } });\nObject.defineProperty(exports, \"CancellationStrategy\", { enumerable: true, get: function () { return connection_1.CancellationStrategy; } });\nconst ral_1 = require(\"./ral\");\nexports.RAL = ral_1.default;\n//# sourceMappingURL=api.js.map","\"use strict\";\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 * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isResponseMessage = exports.isNotificationMessage = exports.isRequestMessage = exports.NotificationType9 = exports.NotificationType8 = exports.NotificationType7 = exports.NotificationType6 = exports.NotificationType5 = exports.NotificationType4 = exports.NotificationType3 = exports.NotificationType2 = exports.NotificationType1 = exports.NotificationType0 = exports.NotificationType = exports.RequestType9 = exports.RequestType8 = exports.RequestType7 = exports.RequestType6 = exports.RequestType5 = exports.RequestType4 = exports.RequestType3 = exports.RequestType2 = exports.RequestType1 = exports.RequestType = exports.RequestType0 = exports.AbstractMessageSignature = exports.ParameterStructures = exports.ResponseError = exports.ErrorCodes = void 0;\nconst is = require(\"./is\");\n/**\n * Predefined error codes.\n */\nvar ErrorCodes;\n(function (ErrorCodes) {\n // Defined by JSON RPC\n ErrorCodes.ParseError = -32700;\n ErrorCodes.InvalidRequest = -32600;\n ErrorCodes.MethodNotFound = -32601;\n ErrorCodes.InvalidParams = -32602;\n ErrorCodes.InternalError = -32603;\n /**\n * This is the start range of JSON RPC reserved error codes.\n * It doesn't denote a real error code. No application error codes should\n * be defined between the start and end range. For backwards\n * compatibility the `ServerNotInitialized` and the `UnknownErrorCode`\n * are left in the range.\n *\n * @since 3.16.0\n */\n ErrorCodes.jsonrpcReservedErrorRangeStart = -32099;\n /** @deprecated use jsonrpcReservedErrorRangeStart */\n ErrorCodes.serverErrorStart = ErrorCodes.jsonrpcReservedErrorRangeStart;\n ErrorCodes.MessageWriteError = -32099;\n ErrorCodes.MessageReadError = -32098;\n ErrorCodes.ServerNotInitialized = -32002;\n ErrorCodes.UnknownErrorCode = -32001;\n /**\n * This is the end range of JSON RPC reserved error codes.\n * It doesn't denote a real error code.\n *\n * @since 3.16.0\n */\n ErrorCodes.jsonrpcReservedErrorRangeEnd = -32000;\n /** @deprecated use jsonrpcReservedErrorRangeEnd */\n ErrorCodes.serverErrorEnd = ErrorCodes.jsonrpcReservedErrorRangeEnd;\n})(ErrorCodes = exports.ErrorCodes || (exports.ErrorCodes = {}));\n/**\n * An error object return in a response in case a request\n * has failed.\n */\nclass ResponseError extends Error {\n constructor(code, message, data) {\n super(message);\n this.code = is.number(code) ? code : ErrorCodes.UnknownErrorCode;\n this.data = data;\n Object.setPrototypeOf(this, ResponseError.prototype);\n }\n toJson() {\n return {\n code: this.code,\n message: this.message,\n data: this.data,\n };\n }\n}\nexports.ResponseError = ResponseError;\nclass ParameterStructures {\n constructor(kind) {\n this.kind = kind;\n }\n static is(value) {\n return value === ParameterStructures.auto || value === ParameterStructures.byName || value === ParameterStructures.byPosition;\n }\n toString() {\n return this.kind;\n }\n}\nexports.ParameterStructures = ParameterStructures;\n/**\n * The parameter structure is automatically inferred on the number of parameters\n * and the parameter type in case of a single param.\n */\nParameterStructures.auto = new ParameterStructures('auto');\n/**\n * Forces `byPosition` parameter structure. This is useful if you have a single\n * parameter which has a literal type.\n */\nParameterStructures.byPosition = new ParameterStructures('byPosition');\n/**\n * Forces `byName` parameter structure. This is only useful when having a single\n * parameter. The library will report errors if used with a different number of\n * parameters.\n */\nParameterStructures.byName = new ParameterStructures('byName');\n/**\n * An abstract implementation of a MessageType.\n */\nclass AbstractMessageSignature {\n constructor(method, numberOfParams) {\n this.method = method;\n this.numberOfParams = numberOfParams;\n }\n get parameterStructures() {\n return ParameterStructures.auto;\n }\n}\nexports.AbstractMessageSignature = AbstractMessageSignature;\n/**\n * Classes to type request response pairs\n */\nclass RequestType0 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 0);\n }\n}\nexports.RequestType0 = RequestType0;\nclass RequestType extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.RequestType = RequestType;\nclass RequestType1 extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.RequestType1 = RequestType1;\nclass RequestType2 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 2);\n }\n}\nexports.RequestType2 = RequestType2;\nclass RequestType3 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 3);\n }\n}\nexports.RequestType3 = RequestType3;\nclass RequestType4 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 4);\n }\n}\nexports.RequestType4 = RequestType4;\nclass RequestType5 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 5);\n }\n}\nexports.RequestType5 = RequestType5;\nclass RequestType6 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 6);\n }\n}\nexports.RequestType6 = RequestType6;\nclass RequestType7 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 7);\n }\n}\nexports.RequestType7 = RequestType7;\nclass RequestType8 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 8);\n }\n}\nexports.RequestType8 = RequestType8;\nclass RequestType9 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 9);\n }\n}\nexports.RequestType9 = RequestType9;\nclass NotificationType extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.NotificationType = NotificationType;\nclass NotificationType0 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 0);\n }\n}\nexports.NotificationType0 = NotificationType0;\nclass NotificationType1 extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.NotificationType1 = NotificationType1;\nclass NotificationType2 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 2);\n }\n}\nexports.NotificationType2 = NotificationType2;\nclass NotificationType3 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 3);\n }\n}\nexports.NotificationType3 = NotificationType3;\nclass NotificationType4 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 4);\n }\n}\nexports.NotificationType4 = NotificationType4;\nclass NotificationType5 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 5);\n }\n}\nexports.NotificationType5 = NotificationType5;\nclass NotificationType6 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 6);\n }\n}\nexports.NotificationType6 = NotificationType6;\nclass NotificationType7 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 7);\n }\n}\nexports.NotificationType7 = NotificationType7;\nclass NotificationType8 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 8);\n }\n}\nexports.NotificationType8 = NotificationType8;\nclass NotificationType9 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 9);\n }\n}\nexports.NotificationType9 = NotificationType9;\n/**\n * Tests if the given message is a request message\n */\nfunction isRequestMessage(message) {\n const candidate = message;\n return candidate && is.string(candidate.method) && (is.string(candidate.id) || is.number(candidate.id));\n}\nexports.isRequestMessage = isRequestMessage;\n/**\n * Tests if the given message is a notification message\n */\nfunction isNotificationMessage(message) {\n const candidate = message;\n return candidate && is.string(candidate.method) && message.id === void 0;\n}\nexports.isNotificationMessage = isNotificationMessage;\n/**\n * Tests if the given message is a response message\n */\nfunction isResponseMessage(message) {\n const candidate = message;\n return candidate && (candidate.result !== void 0 || !!candidate.error) && (is.string(candidate.id) || is.number(candidate.id) || candidate.id === null);\n}\nexports.isResponseMessage = isResponseMessage;\n//# sourceMappingURL=messages.js.map","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\nvar isNativeFunction = require(\"./isNativeFunction.js\");\nvar construct = require(\"./construct.js\");\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _wrapNativeSuper(Class);\n}\nmodule.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\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 *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CancellationTokenSource = exports.CancellationToken = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst events_1 = require(\"./events\");\nvar CancellationToken;\n(function (CancellationToken) {\n CancellationToken.None = Object.freeze({\n isCancellationRequested: false,\n onCancellationRequested: events_1.Event.None\n });\n CancellationToken.Cancelled = Object.freeze({\n isCancellationRequested: true,\n onCancellationRequested: events_1.Event.None\n });\n function is(value) {\n const candidate = value;\n return candidate && (candidate === CancellationToken.None\n || candidate === CancellationToken.Cancelled\n || (Is.boolean(candidate.isCancellationRequested) && !!candidate.onCancellationRequested));\n }\n CancellationToken.is = is;\n})(CancellationToken = exports.CancellationToken || (exports.CancellationToken = {}));\nconst shortcutEvent = Object.freeze(function (callback, context) {\n const handle = ral_1.default().timer.setTimeout(callback.bind(context), 0);\n return { dispose() { ral_1.default().timer.clearTimeout(handle); } };\n});\nclass MutableToken {\n constructor() {\n this._isCancelled = false;\n }\n cancel() {\n if (!this._isCancelled) {\n this._isCancelled = true;\n if (this._emitter) {\n this._emitter.fire(undefined);\n this.dispose();\n }\n }\n }\n get isCancellationRequested() {\n return this._isCancelled;\n }\n get onCancellationRequested() {\n if (this._isCancelled) {\n return shortcutEvent;\n }\n if (!this._emitter) {\n this._emitter = new events_1.Emitter();\n }\n return this._emitter.event;\n }\n dispose() {\n if (this._emitter) {\n this._emitter.dispose();\n this._emitter = undefined;\n }\n }\n}\nclass CancellationTokenSource {\n get token() {\n if (!this._token) {\n // be lazy and create the token only when\n // actually needed\n this._token = new MutableToken();\n }\n return this._token;\n }\n cancel() {\n if (!this._token) {\n // save an object by returning the default\n // cancelled token when cancellation happens\n // before someone asks for the token\n this._token = CancellationToken.Cancelled;\n }\n else {\n this._token.cancel();\n }\n }\n dispose() {\n if (!this._token) {\n // ensure to initialize with an empty token if we had none\n this._token = CancellationToken.None;\n }\n else if (this._token instanceof MutableToken) {\n // actually dispose\n this._token.dispose();\n }\n }\n}\nexports.CancellationTokenSource = CancellationTokenSource;\n//# sourceMappingURL=cancellation.js.map","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import React, { Component } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {};\n\nfunction getUniqueId() {\n var key = '__global_unique_id__';\n return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1;\n}\n\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + getUniqueId() + '__';\n\n var Provider = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider() {\n var _this;\n\n _this = _Component.apply(this, arguments) || this;\n _this.emitter = createEventEmitter(_this.props.value);\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0;\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n if (process.env.NODE_ENV !== 'production') {\n warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: ' + changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n var Consumer = /*#__PURE__*/function (_Component2) {\n _inheritsLoose(Consumer, _Component2);\n\n function Consumer() {\n var _this2;\n\n _this2 = _Component2.apply(this, arguments) || this;\n _this2.state = {\n value: _this2.getValue()\n };\n\n _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({\n value: _this2.getValue()\n });\n }\n };\n\n return _this2;\n }\n\n var _proto2 = Consumer.prototype;\n\n _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n\n var observedBits = this.props.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n _proto2.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n _proto2.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nvar index = React.createContext || createReactContext;\n\nexport default index;\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","import { setVersion } from './setVersion';\nexport { setVersion };\n\nsetVersion('@fluentui/set-version', '6.0.0');\n","/*!\n * Copyright (C) Microsoft Corporation. All rights reserved.\n */\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { CommandName } from '../FormulaEditor.types';\nvar RepairHoverProvider = /** @class */ (function () {\n function RepairHoverProvider(monacoParam, lang, editor, options) {\n this._defaultOptions = {\n styles: {\n deletedBackgroundColorHex: '#FFCCCB',\n addedBackgroundColorHex: '#90EE90',\n },\n strings: {\n suggestedFixes: 'Suggested fixes',\n applyFix: '🔧 Apply Fix',\n applyFixToolTip: 'Corrects your formula with suggested fix',\n },\n notifyFixApplied: false,\n };\n this._monaco = monacoParam;\n this._languageClient = lang;\n this._editor = editor;\n options = options || {};\n this._options = __assign(__assign({}, this._defaultOptions), options);\n // register command for executing code changes\n this._monaco.editor.registerCommand('repair.applyQuickFixFromHover', this.runFixFromHoverSelection.bind(this));\n }\n RepairHoverProvider.createMarkdownLink = function (label, cmd, edits, tooltip, action) {\n // Create a base64 encoded representation of TextEdit object to avoid any parsing or stripping issues when\n // parsed by markdown.\n var input = { edits: edits, action: action };\n var base64args = { base64: Buffer.from(JSON.stringify(input)).toString('base64') };\n var encodedArgs = encodeURIComponent(JSON.stringify(base64args));\n return \"[\" + label + \"](command:\" + cmd + \"?\" + encodedArgs + \" \\\"\" + tooltip + \"\\\")\";\n };\n RepairHoverProvider.prototype.runFixFromHoverSelection = function (accessor, encodedArgs) {\n // Recover original TextEdit object from base64 encoded argument\n var _a = JSON.parse(atob(encodedArgs.base64)), edits = _a.edits, action = _a.action;\n var id = { major: 1, minor: 1 };\n var text = edits.newText;\n var range = {\n startLineNumber: edits.range.start.line,\n startColumn: edits.range.start.character,\n endLineNumber: edits.range.end.line,\n endColumn: edits.range.end.character,\n };\n var op = { identifier: id, range: range, text: text, forceMoveMarkers: true };\n // Apply Text Edit\n if (this._editor.executeEdits(null, [op])) {\n this._languageClient.notifyCommandExecutedAsync(CommandName.CodeActionApplied, action);\n }\n };\n RepairHoverProvider.prototype.createQuickFixLink = function (edits, action) {\n return RepairHoverProvider.createMarkdownLink(this._options.strings.applyFix, 'repair.applyQuickFixFromHover', edits, this._options.strings.applyFixToolTip, action);\n };\n RepairHoverProvider.prototype._format = function (text, textRange) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var codeActionResult, changes, _b, _c, action, _d, _e, change, strValue;\n var e_1, _f, e_2, _g;\n return __generator(this, function (_h) {\n switch (_h.label) {\n case 0: return [4 /*yield*/, ((_a = this._languageClient) === null || _a === void 0 ? void 0 : _a.requestCodeActionAsync(text, {\n start: { line: textRange.startLineNumber, character: textRange.startColumn },\n end: { line: textRange.endLineNumber, character: textRange.endColumn },\n }, 'quickfix'))];\n case 1:\n codeActionResult = _h.sent();\n changes = [];\n if (codeActionResult) {\n try {\n for (_b = __values(codeActionResult === null || codeActionResult === void 0 ? void 0 : codeActionResult.actions), _c = _b.next(); !_c.done; _c = _b.next()) {\n action = _c.value;\n try {\n for (_d = (e_2 = void 0, __values(action.edit.changes[codeActionResult.uri])), _e = _d.next(); !_e.done; _e = _d.next()) {\n change = _e.value;\n strValue = \"\" +\n text +\n '' +\n '' +\n ' => ' +\n (\"\") +\n change.newText +\n '' +\n '\\n\\n' +\n (this.createQuickFixLink(change, __assign(__assign({}, action), { id: codeActionResult.id })) + \"\\n\\n\");\n changes.push({ isTrusted: true, supportsHtml: true, value: strValue });\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_e && !_e.done && (_g = _d.return)) _g.call(_d);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_f = _b.return)) _f.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n return [2 /*return*/, {\n contents: __spread([{ value: \"**\" + this._options.strings.suggestedFixes + \"**\\n\" }], changes),\n }];\n }\n });\n });\n };\n RepairHoverProvider.prototype.provideHover = function (model, position, token) {\n if (this._monaco.editor.getModelMarkers({}).length > 0) {\n var textRange = model.getFullModelRange();\n var text = model.getValue();\n return this._format(text, textRange);\n }\n else {\n return { contents: [{ value: '' }] };\n }\n };\n return RepairHoverProvider;\n}());\nexport { RepairHoverProvider };\n//# sourceMappingURL=RepairHoverProvider.js.map","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { IStyleSet, IConcatenatedStyleSet } from './IStyleSet';\nimport { IStyleBase, IStyle } from './IStyle';\nimport { IStyleFunctionOrObject } from './IStyleFunction';\nimport { ObjectOnly } from './ObjectOnly';\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSet - The first style set to be concatenated.\n */\nexport function concatStyleSets(\n styleSet: TStyleSet | false | null | undefined,\n): IConcatenatedStyleSet>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSet1 - The first style set to be concatenated.\n * @param styleSet2 - The second style set to be concatenated.\n */\nexport function concatStyleSets(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n): IConcatenatedStyleSet & ObjectOnly>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSet1 - The first style set to be concatenated.\n * @param styleSet2 - The second style set to be concatenated.\n * @param styleSet3 - The third style set to be concatenated.\n */\nexport function concatStyleSets(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n styleSet3: TStyleSet3 | false | null | undefined,\n): IConcatenatedStyleSet & ObjectOnly & ObjectOnly>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSet1 - The first style set to be concatenated.\n * @param styleSet2 - The second style set to be concatenated.\n * @param styleSet3 - The third style set to be concatenated.\n * @param styleSet4 - The fourth style set to be concatenated.\n */\nexport function concatStyleSets(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n styleSet3: TStyleSet3 | false | null | undefined,\n styleSet4: TStyleSet4 | false | null | undefined,\n): IConcatenatedStyleSet<\n ObjectOnly & ObjectOnly & ObjectOnly & ObjectOnly\n>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSet1 - The first style set to be concatenated.\n * @param styleSet2 - The second style set to be concatenated.\n * @param styleSet3 - The third style set to be concatenated.\n * @param styleSet4 - The fourth style set to be concatenated.\n * @param styleSet5 - The fifth set to be concatenated.\n */\nexport function concatStyleSets(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n styleSet3: TStyleSet3 | false | null | undefined,\n styleSet4: TStyleSet4 | false | null | undefined,\n styleSet5: TStyleSet5 | false | null | undefined,\n): IConcatenatedStyleSet<\n ObjectOnly &\n ObjectOnly &\n ObjectOnly &\n ObjectOnly &\n ObjectOnly\n>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSet1 - The first style set to be concatenated.\n * @param styleSet2 - The second style set to be concatenated.\n * @param styleSet3 - The third style set to be concatenated.\n * @param styleSet4 - The fourth style set to be concatenated.\n * @param styleSet5 - The fifth set to be concatenated.\n * @param styleSet6 - The sixth set to be concatenated.\n */\nexport function concatStyleSets(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n styleSet3: TStyleSet3 | false | null | undefined,\n styleSet4: TStyleSet4 | false | null | undefined,\n styleSet5: TStyleSet5 | false | null | undefined,\n styleSet6: TStyleSet6 | false | null | undefined,\n): IConcatenatedStyleSet<\n ObjectOnly &\n ObjectOnly &\n ObjectOnly &\n ObjectOnly &\n ObjectOnly &\n ObjectOnly\n>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSets - One or more stylesets to be merged (each param can also be falsy).\n */\nexport function concatStyleSets(...styleSets: (IStyleSet | false | null | undefined)[]): IConcatenatedStyleSet;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSets - One or more stylesets to be merged (each param can also be falsy).\n */\nexport function concatStyleSets(...styleSets: (IStyleSet | false | null | undefined)[]): IConcatenatedStyleSet {\n if (styleSets && styleSets.length === 1 && styleSets[0] && !(styleSets[0] as IStyleSet).subComponentStyles) {\n return styleSets[0] as IConcatenatedStyleSet;\n }\n\n const mergedSet: IConcatenatedStyleSet = {};\n\n // We process sub component styles in two phases. First we collect them, then we combine them into 1 style function.\n const workingSubcomponentStyles: { [key: string]: Array> } = {};\n\n for (const currentSet of styleSets) {\n if (currentSet) {\n for (const prop in currentSet) {\n if (currentSet.hasOwnProperty(prop)) {\n if (prop === 'subComponentStyles' && currentSet.subComponentStyles !== undefined) {\n // subcomponent styles - style functions or objects\n\n const currentComponentStyles = currentSet.subComponentStyles;\n for (const subCompProp in currentComponentStyles) {\n if (currentComponentStyles.hasOwnProperty(subCompProp)) {\n if (workingSubcomponentStyles.hasOwnProperty(subCompProp)) {\n workingSubcomponentStyles[subCompProp].push(currentComponentStyles[subCompProp]);\n } else {\n workingSubcomponentStyles[subCompProp] = [currentComponentStyles[subCompProp]];\n }\n }\n }\n\n continue;\n }\n\n // the as any casts below is a workaround for ts 2.8.\n // todo: remove cast to any in ts 2.9.\n const mergedValue: IStyle = (mergedSet as any)[prop];\n const currentValue = (currentSet as any)[prop];\n\n if (mergedValue === undefined) {\n (mergedSet as any)[prop] = currentValue;\n } else {\n (mergedSet as any)[prop] = [\n // https://github.com/Microsoft/TypeScript/issues/25474\n ...(Array.isArray(mergedValue) ? mergedValue : [mergedValue as IStyleBase]),\n ...(Array.isArray(currentValue) ? currentValue : [currentValue as IStyleBase]),\n ];\n }\n }\n }\n }\n }\n\n if (Object.keys(workingSubcomponentStyles).length > 0) {\n mergedSet.subComponentStyles = {};\n const mergedSubStyles = mergedSet.subComponentStyles;\n\n // now we process the subcomponent styles if there are any\n for (const subCompProp in workingSubcomponentStyles) {\n if (workingSubcomponentStyles.hasOwnProperty(subCompProp)) {\n const workingSet = workingSubcomponentStyles[subCompProp];\n mergedSubStyles[subCompProp] = (styleProps: any) => {\n return concatStyleSets(\n ...workingSet.map((styleFunctionOrObject: IStyleFunctionOrObject) =>\n typeof styleFunctionOrObject === 'function' ? styleFunctionOrObject(styleProps) : styleFunctionOrObject,\n ),\n );\n };\n }\n }\n }\n\n return mergedSet;\n}\n","import { concatStyleSets } from './concatStyleSets';\nimport { IStyleSet } from './IStyleSet';\nimport { IStyleFunctionOrObject } from './IStyleFunction';\nimport { DeepPartial } from './DeepPartial';\n\n/**\n * Concatenates style sets into one, but resolves functional sets using the given props.\n * @param styleProps - Props used to resolve functional sets.\n * @param allStyles - Style sets, which can be functions or objects.\n */\nexport function concatStyleSetsWithProps>(\n styleProps: TStyleProps,\n ...allStyles: (IStyleFunctionOrObject | undefined)[]\n): DeepPartial {\n const result: DeepPartial[] = [];\n for (const styles of allStyles) {\n if (styles) {\n result.push(typeof styles === 'function' ? styles(styleProps) : styles);\n }\n }\n if (result.length === 1) {\n return result[0] as DeepPartial;\n } else if (result.length) {\n // cliffkoh: I cannot figure out how to avoid the cast to any here.\n // It is something to do with the use of Omit in IStyleSet.\n // It might not be necessary once Omit becomes part of lib.d.ts (when we remove our own Omit and rely on\n // the official version).\n return concatStyleSets(...(result as any)) as any;\n }\n\n return {};\n}\n","export let _isSSR = false;\n\n/**\n * Helper to set ssr mode to simulate no window object returned from getWindow helper.\n *\n * @public\n */\nexport function setSSR(isEnabled: boolean): void {\n _isSSR = isEnabled;\n}\n","import { _isSSR } from './setSSR';\n\nlet _window: Window | undefined = undefined;\n\n// Note: Accessing \"window\" in IE11 is somewhat expensive, and calling \"typeof window\"\n// hits a memory leak, whereas aliasing it and calling \"typeof _window\" does not.\n// Caching the window value at the file scope lets us minimize the impact.\ntry {\n _window = window;\n} catch (e) {\n /* no-op */\n}\n\n/**\n * Helper to get the window object. The helper will make sure to use a cached variable\n * of \"window\", to avoid overhead and memory leaks in IE11. Note that in popup scenarios the\n * window object won't match the \"global\" window object, and for these scenarios, you should\n * pass in an element hosted within the popup.\n *\n * @public\n */\nexport function getWindow(rootElement?: Element | null): Window | undefined {\n if (_isSSR || typeof _window === 'undefined') {\n return undefined;\n } else {\n const el = rootElement as Element;\n\n return el && el.ownerDocument && el.ownerDocument.defaultView ? el.ownerDocument.defaultView : _window;\n }\n}\n","import { getWindow } from './dom/getWindow';\n\n/**\n * Storing global state in local module variables has issues when more than one copy\n * if the module gets loaded on the page (due to a bundling error or simply by consuming\n * a prebundled script.)\n *\n * This file contains helpers to deal with the getting and setting local state, and allows\n * callers to get called back when it mutates.\n */\n\nconst GLOBAL_SETTINGS_PROP_NAME = '__globalSettings__';\nconst CALLBACK_STATE_PROP_NAME = '__callbacks__';\n\nlet _counter = 0;\n\n/**\n * Change description used for change callbacks in GlobalSettings.\n *\n * @public\n * {@docCategory IChangeDescription}\n */\nexport interface IChangeDescription {\n key: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n oldValue: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: any;\n}\n\n/**\n * Change event callback.\n *\n * @public\n * {@docCategory IChangeEventCallback}\n */\nexport interface IChangeEventCallback {\n __id__?: string;\n (changeDescription?: IChangeDescription): void;\n}\n\n/**\n * Global settings helper, which stores settings in the global (window) namespace.\n * If window is not provided, it will store settings in module scope. Provides a\n * way to observe changes as well when their values change.\n *\n * @public\n * {@docCategory GlobalSettings}\n */\nexport class GlobalSettings {\n public static getValue(key: string, defaultValue?: T | (() => T)): T {\n const globalSettings = _getGlobalSettings();\n\n if (globalSettings[key] === undefined) {\n globalSettings[key] = typeof defaultValue === 'function' ? (defaultValue as Function)() : defaultValue;\n }\n\n return globalSettings[key];\n }\n\n public static setValue(key: string, value: T): T {\n const globalSettings = _getGlobalSettings();\n const callbacks = globalSettings[CALLBACK_STATE_PROP_NAME];\n let oldValue = globalSettings[key];\n\n if (value !== oldValue) {\n globalSettings[key] = value;\n\n let changeDescription = {\n oldValue,\n value,\n key,\n };\n\n for (let id in callbacks) {\n if (callbacks.hasOwnProperty(id)) {\n callbacks[id](changeDescription);\n }\n }\n }\n\n return value;\n }\n\n public static addChangeListener(cb: IChangeEventCallback): void {\n // Note: we use generated ids on the callbacks to create a map of the callbacks, which optimizes removal.\n // (It's faster to delete a key than it is to look up the index of an object and splice an array.)\n let id = cb.__id__;\n const callbacks = _getCallbacks();\n\n if (!id) {\n id = cb.__id__ = String(_counter++);\n }\n\n callbacks[id] = cb;\n }\n\n public static removeChangeListener(cb: IChangeEventCallback): void {\n const callbacks = _getCallbacks();\n delete callbacks[cb.__id__ as string];\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _getGlobalSettings(): { [key: string]: any } {\n const win = getWindow();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const globalObj: { [key: string]: any } = win || {};\n\n if (!globalObj[GLOBAL_SETTINGS_PROP_NAME]) {\n globalObj[GLOBAL_SETTINGS_PROP_NAME] = {\n [CALLBACK_STATE_PROP_NAME]: {},\n };\n }\n\n return globalObj[GLOBAL_SETTINGS_PROP_NAME];\n}\n\nfunction _getCallbacks(): { [key: string]: () => void } {\n const globalSettings = _getGlobalSettings();\n return globalSettings[CALLBACK_STATE_PROP_NAME];\n}\n","import { GlobalSettings } from '../GlobalSettings';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ISettings = { [key: string]: any };\nexport type ISettingsFunction = (settings: ISettings) => ISettings;\n\n/**\n * @deprecated Use ISettings.\n */\nexport type Settings = ISettings;\n\n/**\n * @deprecated Use ISettingsFunction.\n */\nexport type SettingsFunction = ISettingsFunction;\n\nexport interface ICustomizations {\n settings: ISettings;\n scopedSettings: { [key: string]: ISettings };\n inCustomizerContext?: boolean;\n}\n\nconst CustomizationsGlobalKey = 'customizations';\nconst NO_CUSTOMIZATIONS = { settings: {}, scopedSettings: {}, inCustomizerContext: false };\n\nlet _allSettings = GlobalSettings.getValue(CustomizationsGlobalKey, {\n settings: {},\n scopedSettings: {},\n inCustomizerContext: false,\n});\n\nlet _events: (() => void)[] = [];\n\nexport class Customizations {\n private static _suppressUpdates: boolean;\n\n public static reset(): void {\n _allSettings.settings = {};\n _allSettings.scopedSettings = {};\n }\n\n /** Apply global Customization settings.\n * @example Customizations.applySettings(\\{ theme: \\{...\\} \\});\n */\n public static applySettings(settings: ISettings): void {\n _allSettings.settings = { ..._allSettings.settings, ...settings };\n Customizations._raiseChange();\n }\n\n /** Apply Customizations to a particular named scope, like a component.\n * @example Customizations.applyScopedSettings('Nav', \\{ styles: () =\\> \\{\\} \\});\n */\n public static applyScopedSettings(scopeName: string, settings: ISettings): void {\n _allSettings.scopedSettings[scopeName] = { ..._allSettings.scopedSettings[scopeName], ...settings };\n Customizations._raiseChange();\n }\n\n public static getSettings(\n properties: string[],\n scopeName?: string,\n localSettings: ICustomizations = NO_CUSTOMIZATIONS,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): any {\n const settings: ISettings = {};\n const localScopedSettings = (scopeName && localSettings.scopedSettings[scopeName]) || {};\n const globalScopedSettings = (scopeName && _allSettings.scopedSettings[scopeName]) || {};\n\n for (let property of properties) {\n settings[property] =\n localScopedSettings[property] ||\n localSettings.settings[property] ||\n globalScopedSettings[property] ||\n _allSettings.settings[property];\n }\n\n return settings;\n }\n\n /** Used to run some code that sets Customizations without triggering an update until the end.\n * Useful for applying Customizations that don't affect anything currently rendered, or for\n * applying many customizations at once.\n * @param suppressUpdate - Do not raise the change event at the end, preventing all updates\n */\n public static applyBatchedUpdates(code: () => void, suppressUpdate?: boolean): void {\n Customizations._suppressUpdates = true;\n try {\n code();\n } catch {\n /* do nothing */\n }\n Customizations._suppressUpdates = false;\n if (!suppressUpdate) {\n Customizations._raiseChange();\n }\n }\n\n public static observe(onChange: () => void): void {\n _events.push(onChange);\n }\n\n public static unobserve(onChange: () => void): void {\n _events = _events.filter((cb: () => void) => cb !== onChange);\n }\n\n private static _raiseChange(): void {\n if (!Customizations._suppressUpdates) {\n _events.forEach((cb: () => void) => cb());\n }\n }\n}\n","import * as React from 'react';\nimport type { ICustomizations } from './Customizations';\n\nexport interface ICustomizerContext {\n customizations: ICustomizations;\n}\n\nexport const CustomizerContext = React.createContext({\n customizations: {\n inCustomizerContext: false,\n settings: {},\n scopedSettings: {},\n },\n});\n","import * as React from 'react';\nimport { Customizations } from './Customizations';\nimport { CustomizerContext } from './CustomizerContext';\nimport type { ISettings } from './Customizations';\n\n/**\n * Hook to get Customizations settings from Customizations singleton or CustomizerContext.\n * It will trigger component state update on settings change observed.\n */\nexport function useCustomizationSettings(properties: string[], scopeName?: string): ISettings {\n const forceUpdate = useForceUpdate();\n const { customizations } = React.useContext(CustomizerContext);\n const { inCustomizerContext } = customizations;\n React.useEffect(() => {\n if (!inCustomizerContext) {\n Customizations.observe(forceUpdate);\n }\n return () => {\n if (!inCustomizerContext) {\n Customizations.unobserve(forceUpdate);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- exclude forceUpdate\n }, [inCustomizerContext]);\n\n return Customizations.getSettings(properties, scopeName, customizations);\n}\n\nfunction useForceUpdate() {\n const [, setValue] = React.useState(0);\n return () => setValue(value => ++value);\n}\n","import * as React from 'react';\nimport { concatStyleSetsWithProps } from '@fluentui/merge-styles';\nimport { useCustomizationSettings } from './customizations/useCustomizationSettings';\nimport type { IStyleSet, IStyleFunctionOrObject } from '@fluentui/merge-styles';\n\nexport interface IPropsWithStyles> {\n styles?: IStyleFunctionOrObject;\n}\n\nexport interface ICustomizableProps {\n /**\n * Name of scope, which can be targeted using the Customizer.\n */\n scope: string;\n\n /**\n * List of fields which can be customized.\n * @defaultvalue [ 'theme', 'styles' ]\n */\n fields?: string[];\n}\n\nconst DefaultFields = ['theme', 'styles'];\n\nexport type StyleFunction = IStyleFunctionOrObject & {\n /** Cache for all style functions. */\n __cachedInputs__: (IStyleFunctionOrObject | undefined)[];\n\n /** True if no styles prop or styles from Customizer is passed to wrapped component. */\n __noStyleOverride__: boolean;\n};\n\n/**\n * The styled HOC wrapper allows you to create a functional wrapper around a given component which will resolve\n * getStyles functional props, and mix customized props passed in using concatStyleSets.\n *\n * @example\n * ```tsx\n * export const Toggle = styled(\n * ToggleBase,\n * props => ({ root: { background: 'red' }})\n * );\n * ```\n * @param Component - The unstyled base component to render, which receives styles.\n * @param baseStyles - The styles which should be curried with the component.\n * @param getProps - A helper which provides default props.\n * @param customizable - An object which defines which props can be customized using the Customizer.\n * @param pure - A boolean indicating if the component should avoid re-rendering when props haven't changed.\n * Note that pure should not be used on components which allow children, or take in complex objects or\n * arrays as props which could mutate on every render.\n */\nexport function styled<\n TComponentProps extends IPropsWithStyles,\n TStyleProps,\n TStyleSet extends IStyleSet\n>(\n Component: React.ComponentClass | React.FunctionComponent,\n baseStyles: IStyleFunctionOrObject,\n getProps?: (props: TComponentProps) => Partial,\n customizable?: ICustomizableProps,\n pure?: boolean,\n): React.FunctionComponent;\nexport function styled<\n TComponentProps extends IPropsWithStyles & React.RefAttributes,\n TStyleProps,\n TStyleSet extends IStyleSet,\n TRef = unknown\n>(\n Component: React.ComponentClass | React.FunctionComponent,\n baseStyles: IStyleFunctionOrObject,\n getProps?: (props: TComponentProps) => Partial,\n customizable?: ICustomizableProps,\n pure?: boolean,\n): React.ForwardRefExoticComponent & React.RefAttributes>;\nexport function styled<\n TComponentProps extends IPropsWithStyles & React.RefAttributes,\n TStyleProps,\n TStyleSet extends IStyleSet,\n TRef = unknown\n>(\n Component: React.ComponentClass | React.FunctionComponent,\n baseStyles: IStyleFunctionOrObject,\n getProps?: (props: TComponentProps) => Partial,\n customizable?: ICustomizableProps,\n pure?: boolean,\n) {\n customizable = customizable || { scope: '', fields: undefined };\n\n const { scope, fields = DefaultFields } = customizable;\n\n const Wrapped = React.forwardRef((props: TComponentProps, forwardedRef: React.Ref) => {\n const styles = React.useRef>();\n\n const settings = useCustomizationSettings(fields, scope);\n const { styles: customizedStyles, dir, ...rest } = settings;\n const additionalProps = getProps ? getProps(props) : undefined;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const cache = (styles.current && (styles.current as any).__cachedInputs__) || [];\n const propStyles = props.styles;\n if (!styles.current || customizedStyles !== cache[1] || propStyles !== cache[2]) {\n // Using styled components as the Component arg will result in nested styling arrays.\n // The function can be cached and in order to prevent the props from being retained within it's closure\n // we pass in just the styles and not the entire props\n const concatenatedStyles: IStyleFunctionOrObject = (styleProps: TStyleProps) =>\n concatStyleSetsWithProps(styleProps, baseStyles, customizedStyles, propStyles);\n\n // The __cachedInputs__ array is attached to the function and consumed by the\n // classNamesFunction as a list of keys to include for memoizing classnames.\n (concatenatedStyles as StyleFunction).__cachedInputs__ = [\n baseStyles,\n customizedStyles,\n propStyles,\n ];\n\n (concatenatedStyles as StyleFunction).__noStyleOverride__ =\n !customizedStyles && !propStyles;\n\n styles.current = concatenatedStyles as StyleFunction;\n }\n\n return ;\n });\n // Function.prototype.name is an ES6 feature, so the cast to any is required until we're\n // able to drop IE 11 support and compile with ES6 libs\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Wrapped.displayName = `Styled${Component.displayName || (Component as any).name}`;\n\n // This preserves backwards compatibility.\n const pureComponent = pure ? React.memo(Wrapped) : Wrapped;\n // Check if the wrapper has a displayName after it has been memoized. Then assign it to the pure component.\n if (Wrapped.displayName) {\n pureComponent.displayName = Wrapped.displayName;\n }\n\n return pureComponent;\n}\n","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nexport { _arrayLikeToArray as arrayLikeToArray, _arrayWithHoles as arrayWithHoles, _defineProperty as defineProperty, _iterableToArrayLimit as iterableToArrayLimit, _nonIterableRest as nonIterableRest, _objectSpread2 as objectSpread2, _objectWithoutProperties as objectWithoutProperties, _objectWithoutPropertiesLoose as objectWithoutPropertiesLoose, _slicedToArray as slicedToArray, _unsupportedIterableToArray as unsupportedIterableToArray };\n","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction compose() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function (x) {\n return fns.reduceRight(function (y, f) {\n return f(y);\n }, x);\n };\n}\n\nfunction curry(fn) {\n return function curried() {\n var _this = this;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return args.length >= fn.length ? fn.apply(this, args) : function () {\n for (var _len3 = arguments.length, nextArgs = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n nextArgs[_key3] = arguments[_key3];\n }\n\n return curried.apply(_this, [].concat(args, nextArgs));\n };\n };\n}\n\nfunction isObject(value) {\n return {}.toString.call(value).includes('Object');\n}\n\nfunction isEmpty(obj) {\n return !Object.keys(obj).length;\n}\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n\nfunction hasOwnProperty(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nfunction validateChanges(initial, changes) {\n if (!isObject(changes)) errorHandler('changeType');\n if (Object.keys(changes).some(function (field) {\n return !hasOwnProperty(initial, field);\n })) errorHandler('changeField');\n return changes;\n}\n\nfunction validateSelector(selector) {\n if (!isFunction(selector)) errorHandler('selectorType');\n}\n\nfunction validateHandler(handler) {\n if (!(isFunction(handler) || isObject(handler))) errorHandler('handlerType');\n if (isObject(handler) && Object.values(handler).some(function (_handler) {\n return !isFunction(_handler);\n })) errorHandler('handlersType');\n}\n\nfunction validateInitial(initial) {\n if (!initial) errorHandler('initialIsRequired');\n if (!isObject(initial)) errorHandler('initialType');\n if (isEmpty(initial)) errorHandler('initialContent');\n}\n\nfunction throwError(errorMessages, type) {\n throw new Error(errorMessages[type] || errorMessages[\"default\"]);\n}\n\nvar errorMessages = {\n initialIsRequired: 'initial state is required',\n initialType: 'initial state should be an object',\n initialContent: 'initial state shouldn\\'t be an empty object',\n handlerType: 'handler should be an object or a function',\n handlersType: 'all handlers should be a functions',\n selectorType: 'selector should be a function',\n changeType: 'provided value of changes should be an object',\n changeField: 'it seams you want to change a field in the state which is not specified in the \"initial\" state',\n \"default\": 'an unknown error accured in `state-local` package'\n};\nvar errorHandler = curry(throwError)(errorMessages);\nvar validators = {\n changes: validateChanges,\n selector: validateSelector,\n handler: validateHandler,\n initial: validateInitial\n};\n\nfunction create(initial) {\n var handler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n validators.initial(initial);\n validators.handler(handler);\n var state = {\n current: initial\n };\n var didUpdate = curry(didStateUpdate)(state, handler);\n var update = curry(updateState)(state);\n var validate = curry(validators.changes)(initial);\n var getChanges = curry(extractChanges)(state);\n\n function getState() {\n var selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (state) {\n return state;\n };\n validators.selector(selector);\n return selector(state.current);\n }\n\n function setState(causedChanges) {\n compose(didUpdate, update, validate, getChanges)(causedChanges);\n }\n\n return [getState, setState];\n}\n\nfunction extractChanges(state, causedChanges) {\n return isFunction(causedChanges) ? causedChanges(state.current) : causedChanges;\n}\n\nfunction updateState(state, changes) {\n state.current = _objectSpread2(_objectSpread2({}, state.current), changes);\n return changes;\n}\n\nfunction didStateUpdate(state, handler, changes) {\n isFunction(handler) ? handler(state.current) : Object.keys(changes).forEach(function (field) {\n var _handler$field;\n\n return (_handler$field = handler[field]) === null || _handler$field === void 0 ? void 0 : _handler$field.call(handler, state.current[field]);\n });\n return changes;\n}\n\nvar index = {\n create: create\n};\n\nexport default index;\n","var config = {\n paths: {\n vs: 'https://cdn.jsdelivr.net/npm/monaco-editor@0.33.0/min/vs'\n }\n};\n\nexport default config;\n","function curry(fn) {\n return function curried() {\n var _this = this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return args.length >= fn.length ? fn.apply(this, args) : function () {\n for (var _len2 = arguments.length, nextArgs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n nextArgs[_key2] = arguments[_key2];\n }\n\n return curried.apply(_this, [].concat(args, nextArgs));\n };\n };\n}\n\nexport default curry;\n","function isObject(value) {\n return {}.toString.call(value).includes('Object');\n}\n\nexport default isObject;\n","import curry from '../utils/curry.js';\nimport isObject from '../utils/isObject.js';\n\n/**\n * validates the configuration object and informs about deprecation\n * @param {Object} config - the configuration object \n * @return {Object} config - the validated configuration object\n */\n\nfunction validateConfig(config) {\n if (!config) errorHandler('configIsRequired');\n if (!isObject(config)) errorHandler('configType');\n\n if (config.urls) {\n informAboutDeprecation();\n return {\n paths: {\n vs: config.urls.monacoBase\n }\n };\n }\n\n return config;\n}\n/**\n * logs deprecation message\n */\n\n\nfunction informAboutDeprecation() {\n console.warn(errorMessages.deprecation);\n}\n\nfunction throwError(errorMessages, type) {\n throw new Error(errorMessages[type] || errorMessages[\"default\"]);\n}\n\nvar errorMessages = {\n configIsRequired: 'the configuration object is required',\n configType: 'the configuration object should be an object',\n \"default\": 'an unknown error accured in `@monaco-editor/loader` package',\n deprecation: \"Deprecation warning!\\n You are using deprecated way of configuration.\\n\\n Instead of using\\n monaco.config({ urls: { monacoBase: '...' } })\\n use\\n monaco.config({ paths: { vs: '...' } })\\n\\n For more please check the link https://github.com/suren-atoyan/monaco-loader#config\\n \"\n};\nvar errorHandler = curry(throwError)(errorMessages);\nvar validators = {\n config: validateConfig\n};\n\nexport default validators;\nexport { errorHandler, errorMessages };\n","var compose = function compose() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function (x) {\n return fns.reduceRight(function (y, f) {\n return f(y);\n }, x);\n };\n};\n\nexport default compose;\n","import { objectSpread2 as _objectSpread2 } from '../_virtual/_rollupPluginBabelHelpers.js';\n\nfunction merge(target, source) {\n Object.keys(source).forEach(function (key) {\n if (source[key] instanceof Object) {\n if (target[key]) {\n Object.assign(source[key], merge(target[key], source[key]));\n }\n }\n });\n return _objectSpread2(_objectSpread2({}, target), source);\n}\n\nexport default merge;\n","// The source (has been changed) is https://github.com/facebook/react/issues/5465#issuecomment-157888325\nvar CANCELATION_MESSAGE = {\n type: 'cancelation',\n msg: 'operation is manually canceled'\n};\n\nfunction makeCancelable(promise) {\n var hasCanceled_ = false;\n var wrappedPromise = new Promise(function (resolve, reject) {\n promise.then(function (val) {\n return hasCanceled_ ? reject(CANCELATION_MESSAGE) : resolve(val);\n });\n promise[\"catch\"](reject);\n });\n return wrappedPromise.cancel = function () {\n return hasCanceled_ = true;\n }, wrappedPromise;\n}\n\nexport default makeCancelable;\nexport { CANCELATION_MESSAGE };\n","import { slicedToArray as _slicedToArray, objectWithoutProperties as _objectWithoutProperties } from '../_virtual/_rollupPluginBabelHelpers.js';\nimport state from 'state-local';\nimport config$1 from '../config/index.js';\nimport validators from '../validators/index.js';\nimport compose from '../utils/compose.js';\nimport merge from '../utils/deepMerge.js';\nimport makeCancelable from '../utils/makeCancelable.js';\n\n/** the local state of the module */\n\nvar _state$create = state.create({\n config: config$1,\n isInitialized: false,\n resolve: null,\n reject: null,\n monaco: null\n}),\n _state$create2 = _slicedToArray(_state$create, 2),\n getState = _state$create2[0],\n setState = _state$create2[1];\n/**\n * set the loader configuration\n * @param {Object} config - the configuration object\n */\n\n\nfunction config(globalConfig) {\n var _validators$config = validators.config(globalConfig),\n monaco = _validators$config.monaco,\n config = _objectWithoutProperties(_validators$config, [\"monaco\"]);\n\n setState(function (state) {\n return {\n config: merge(state.config, config),\n monaco: monaco\n };\n });\n}\n/**\n * handles the initialization of the monaco-editor\n * @return {Promise} - returns an instance of monaco (with a cancelable promise)\n */\n\n\nfunction init() {\n var state = getState(function (_ref) {\n var monaco = _ref.monaco,\n isInitialized = _ref.isInitialized,\n resolve = _ref.resolve;\n return {\n monaco: monaco,\n isInitialized: isInitialized,\n resolve: resolve\n };\n });\n\n if (!state.isInitialized) {\n setState({\n isInitialized: true\n });\n\n if (state.monaco) {\n state.resolve(state.monaco);\n return makeCancelable(wrapperPromise);\n }\n\n if (window.monaco && window.monaco.editor) {\n storeMonacoInstance(window.monaco);\n state.resolve(window.monaco);\n return makeCancelable(wrapperPromise);\n }\n\n compose(injectScripts, getMonacoLoaderScript)(configureLoader);\n }\n\n return makeCancelable(wrapperPromise);\n}\n/**\n * injects provided scripts into the document.body\n * @param {Object} script - an HTML script element\n * @return {Object} - the injected HTML script element\n */\n\n\nfunction injectScripts(script) {\n return document.body.appendChild(script);\n}\n/**\n * creates an HTML script element with/without provided src\n * @param {string} [src] - the source path of the script\n * @return {Object} - the created HTML script element\n */\n\n\nfunction createScript(src) {\n var script = document.createElement('script');\n return src && (script.src = src), script;\n}\n/**\n * creates an HTML script element with the monaco loader src\n * @return {Object} - the created HTML script element\n */\n\n\nfunction getMonacoLoaderScript(configureLoader) {\n var state = getState(function (_ref2) {\n var config = _ref2.config,\n reject = _ref2.reject;\n return {\n config: config,\n reject: reject\n };\n });\n var loaderScript = createScript(\"\".concat(state.config.paths.vs, \"/loader.js\"));\n\n loaderScript.onload = function () {\n return configureLoader();\n };\n\n loaderScript.onerror = state.reject;\n return loaderScript;\n}\n/**\n * configures the monaco loader\n */\n\n\nfunction configureLoader() {\n var state = getState(function (_ref3) {\n var config = _ref3.config,\n resolve = _ref3.resolve,\n reject = _ref3.reject;\n return {\n config: config,\n resolve: resolve,\n reject: reject\n };\n });\n var require = window.require;\n\n require.config(state.config);\n\n require(['vs/editor/editor.main'], function (monaco) {\n storeMonacoInstance(monaco);\n state.resolve(monaco);\n }, function (error) {\n state.reject(error);\n });\n}\n/**\n * store monaco instance in local state\n */\n\n\nfunction storeMonacoInstance(monaco) {\n if (!getState().monaco) {\n setState({\n monaco: monaco\n });\n }\n}\n/**\n * internal helper function\n * extracts stored monaco instance\n * @return {Object|null} - the monaco instance\n */\n\n\nfunction __getMonacoInstance() {\n return getState(function (_ref4) {\n var monaco = _ref4.monaco;\n return monaco;\n });\n}\n\nvar wrapperPromise = new Promise(function (resolve, reject) {\n return setState({\n resolve: resolve,\n reject: reject\n });\n});\nvar loader = {\n config: config,\n init: init,\n __getMonacoInstance: __getMonacoInstance\n};\n\nexport default loader;\n","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}","import React from 'react';\n\nconst loadingStyles = {\n display: 'flex',\n height: '100%',\n width: '100%',\n justifyContent: 'center',\n alignItems: 'center'\n};\n\nfunction Loading({\n content\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n style: loadingStyles\n }, content);\n}\n\nexport default Loading;\n","const styles = {\n wrapper: {\n display: 'flex',\n position: 'relative',\n textAlign: 'initial'\n },\n fullWidth: {\n width: '100%'\n },\n hide: {\n display: 'none'\n }\n};\n\nexport default styles;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Loading from '../Loading/Loading.js';\nimport styles from './styles.js';\n\n// one of the reasons why we use a separate prop for passing ref instead of using forwardref\n\nfunction MonacoContainer({\n width,\n height,\n isEditorReady,\n loading,\n _ref,\n className,\n wrapperClassName\n}) {\n return /*#__PURE__*/React.createElement(\"section\", {\n style: { ...styles.wrapper,\n width,\n height\n },\n className: wrapperClassName\n }, !isEditorReady && /*#__PURE__*/React.createElement(Loading, {\n content: loading\n }), /*#__PURE__*/React.createElement(\"div\", {\n ref: _ref,\n style: { ...styles.fullWidth,\n ...(!isEditorReady && styles.hide)\n },\n className: className\n }));\n}\n\nMonacoContainer.propTypes = {\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n loading: PropTypes.oneOfType([PropTypes.element, PropTypes.string]).isRequired,\n isEditorReady: PropTypes.bool.isRequired,\n className: PropTypes.string,\n wrapperClassName: PropTypes.string\n};\n\nexport default MonacoContainer;\n","import { memo } from 'react';\nimport MonacoContainer$1 from './MonacoContainer.js';\n\nvar MonacoContainer = /*#__PURE__*/memo(MonacoContainer$1);\n\nexport default MonacoContainer;\n","import { useEffect } from 'react';\n\nfunction useMount(effect) {\n useEffect(effect, []);\n}\n\nexport default useMount;\n","import { useRef, useEffect } from 'react';\n\nfunction useUpdate(effect, deps, applyChanges = true) {\n const isInitialMount = useRef(true);\n useEffect(isInitialMount.current || !applyChanges ? () => {\n isInitialMount.current = false;\n } : effect, deps);\n}\n\nexport default useUpdate;\n","function noop() {}\n\nfunction getOrCreateModel(monaco, value, language, path) {\n return getModel(monaco, path) || createModel(monaco, value, language, path);\n}\n\nfunction getModel(monaco, path) {\n return monaco.editor.getModel(crateModelUri(monaco, path));\n}\n\nfunction createModel(monaco, value, language, path) {\n return monaco.editor.createModel(value, language, path && crateModelUri(monaco, path));\n}\n\nfunction crateModelUri(monaco, path) {\n return monaco.Uri.parse(path);\n}\n\nfunction isUndefined(input) {\n return input === undefined;\n}\n\nexport { getOrCreateModel, isUndefined, noop };\n","import loader from '@monaco-editor/loader';\nimport React, { useState, useRef, useCallback, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport MonacoContainer from '../MonacoContainer/index.js';\nimport useMount from '../hooks/useMount/index.js';\nimport useUpdate from '../hooks/useUpdate/index.js';\nimport { noop } from '../utils/index.js';\n\nfunction DiffEditor({\n original,\n modified,\n language,\n originalLanguage,\n modifiedLanguage,\n\n /* === */\n originalModelPath,\n modifiedModelPath,\n keepCurrentOriginalModel,\n keepCurrentModifiedModel,\n theme,\n loading,\n options,\n\n /* === */\n height,\n width,\n className,\n wrapperClassName,\n\n /* === */\n beforeMount,\n onMount\n}) {\n const [isEditorReady, setIsEditorReady] = useState(false);\n const [isMonacoMounting, setIsMonacoMounting] = useState(true);\n const editorRef = useRef(null);\n const monacoRef = useRef(null);\n const containerRef = useRef(null);\n const onMountRef = useRef(onMount);\n const beforeMountRef = useRef(beforeMount);\n useMount(() => {\n const cancelable = loader.init();\n cancelable.then(monaco => (monacoRef.current = monaco) && setIsMonacoMounting(false)).catch(error => (error === null || error === void 0 ? void 0 : error.type) !== 'cancelation' && console.error('Monaco initialization: error:', error));\n return () => editorRef.current ? disposeEditor() : cancelable.cancel();\n });\n useUpdate(() => {\n const modifiedEditor = editorRef.current.getModifiedEditor();\n\n if (modifiedEditor.getOption(monacoRef.current.editor.EditorOption.readOnly)) {\n modifiedEditor.setValue(modified);\n } else {\n if (modified !== modifiedEditor.getValue()) {\n modifiedEditor.executeEdits('', [{\n range: modifiedEditor.getModel().getFullModelRange(),\n text: modified,\n forceMoveMarkers: true\n }]);\n modifiedEditor.pushUndoStop();\n }\n }\n }, [modified], isEditorReady);\n useUpdate(() => {\n editorRef.current.getModel().original.setValue(original);\n }, [original], isEditorReady);\n useUpdate(() => {\n const {\n original,\n modified\n } = editorRef.current.getModel();\n monacoRef.current.editor.setModelLanguage(original, originalLanguage || language);\n monacoRef.current.editor.setModelLanguage(modified, modifiedLanguage || language);\n }, [language, originalLanguage, modifiedLanguage], isEditorReady);\n useUpdate(() => {\n monacoRef.current.editor.setTheme(theme);\n }, [theme], isEditorReady);\n useUpdate(() => {\n editorRef.current.updateOptions(options);\n }, [options], isEditorReady);\n const setModels = useCallback(() => {\n beforeMountRef.current(monacoRef.current);\n const originalModel = monacoRef.current.editor.createModel(original, originalLanguage || language, originalModelPath && monacoRef.current.Uri.parse(originalModelPath));\n const modifiedModel = monacoRef.current.editor.createModel(modified, modifiedLanguage || language, modifiedModelPath && monacoRef.current.Uri.parse(modifiedModelPath));\n editorRef.current.setModel({\n original: originalModel,\n modified: modifiedModel\n });\n }, [language, modified, modifiedLanguage, original, originalLanguage, originalModelPath, modifiedModelPath]);\n const createEditor = useCallback(() => {\n editorRef.current = monacoRef.current.editor.createDiffEditor(containerRef.current, {\n automaticLayout: true,\n ...options\n });\n setModels();\n monacoRef.current.editor.setTheme(theme);\n setIsEditorReady(true);\n }, [options, theme, setModels]);\n useEffect(() => {\n if (isEditorReady) {\n onMountRef.current(editorRef.current, monacoRef.current);\n }\n }, [isEditorReady]);\n useEffect(() => {\n !isMonacoMounting && !isEditorReady && createEditor();\n }, [isMonacoMounting, isEditorReady, createEditor]);\n\n function disposeEditor() {\n const models = editorRef.current.getModel();\n\n if (!keepCurrentOriginalModel) {\n var _models$original;\n\n (_models$original = models.original) === null || _models$original === void 0 ? void 0 : _models$original.dispose();\n }\n\n if (!keepCurrentModifiedModel) {\n var _models$modified;\n\n (_models$modified = models.modified) === null || _models$modified === void 0 ? void 0 : _models$modified.dispose();\n }\n\n editorRef.current.dispose();\n }\n\n return /*#__PURE__*/React.createElement(MonacoContainer, {\n width: width,\n height: height,\n isEditorReady: isEditorReady,\n loading: loading,\n _ref: containerRef,\n className: className,\n wrapperClassName: wrapperClassName\n });\n}\n\nDiffEditor.propTypes = {\n original: PropTypes.string,\n modified: PropTypes.string,\n language: PropTypes.string,\n originalLanguage: PropTypes.string,\n modifiedLanguage: PropTypes.string,\n\n /* === */\n originalModelPath: PropTypes.string,\n modifiedModelPath: PropTypes.string,\n keepCurrentOriginalModel: PropTypes.bool,\n keepCurrentModifiedModel: PropTypes.bool,\n theme: PropTypes.string,\n loading: PropTypes.oneOfType([PropTypes.element, PropTypes.string]),\n options: PropTypes.object,\n\n /* === */\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n className: PropTypes.string,\n wrapperClassName: PropTypes.string,\n\n /* === */\n beforeMount: PropTypes.func,\n onMount: PropTypes.func\n};\nDiffEditor.defaultProps = {\n theme: 'light',\n loading: 'Loading...',\n options: {},\n keepCurrentOriginalModel: false,\n keepCurrentModifiedModel: false,\n\n /* === */\n width: '100%',\n height: '100%',\n\n /* === */\n beforeMount: noop,\n onMount: noop\n};\n\nexport default DiffEditor;\n","import { useRef, useEffect } from 'react';\n\nfunction usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n}\n\nexport default usePrevious;\n","import loader from '@monaco-editor/loader';\nimport React, { useState, useRef, useCallback, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport MonacoContainer from '../MonacoContainer/index.js';\nimport useMount from '../hooks/useMount/index.js';\nimport useUpdate from '../hooks/useUpdate/index.js';\nimport { getOrCreateModel, noop, isUndefined } from '../utils/index.js';\nimport state from 'state-local';\nimport usePrevious from '../hooks/usePrevious/index.js';\n\nconst [getModelMarkersSetter, setModelMarkersSetter] = state.create({\n backup: null\n});\nconst viewStates = new Map();\n\nfunction Editor({\n defaultValue,\n defaultLanguage,\n defaultPath,\n value,\n language,\n path,\n\n /* === */\n theme,\n line,\n loading,\n options,\n overrideServices,\n saveViewState,\n keepCurrentModel,\n\n /* === */\n width,\n height,\n className,\n wrapperClassName,\n\n /* === */\n beforeMount,\n onMount,\n onChange,\n onValidate\n}) {\n const [isEditorReady, setIsEditorReady] = useState(false);\n const [isMonacoMounting, setIsMonacoMounting] = useState(true);\n const monacoRef = useRef(null);\n const editorRef = useRef(null);\n const containerRef = useRef(null);\n const onMountRef = useRef(onMount);\n const beforeMountRef = useRef(beforeMount);\n const subscriptionRef = useRef(null);\n const valueRef = useRef(value);\n const previousPath = usePrevious(path);\n useMount(() => {\n const cancelable = loader.init();\n cancelable.then(monaco => (monacoRef.current = monaco) && setIsMonacoMounting(false)).catch(error => (error === null || error === void 0 ? void 0 : error.type) !== 'cancelation' && console.error('Monaco initialization: error:', error));\n return () => editorRef.current ? disposeEditor() : cancelable.cancel();\n });\n useUpdate(() => {\n const model = getOrCreateModel(monacoRef.current, defaultValue || value, defaultLanguage || language, path);\n\n if (model !== editorRef.current.getModel()) {\n saveViewState && viewStates.set(previousPath, editorRef.current.saveViewState());\n editorRef.current.setModel(model);\n saveViewState && editorRef.current.restoreViewState(viewStates.get(path));\n }\n }, [path], isEditorReady);\n useUpdate(() => {\n editorRef.current.updateOptions(options);\n }, [options], isEditorReady);\n useUpdate(() => {\n if (editorRef.current.getOption(monacoRef.current.editor.EditorOption.readOnly)) {\n editorRef.current.setValue(value);\n } else {\n if (value !== editorRef.current.getValue()) {\n editorRef.current.executeEdits('', [{\n range: editorRef.current.getModel().getFullModelRange(),\n text: value,\n forceMoveMarkers: true\n }]);\n editorRef.current.pushUndoStop();\n }\n }\n }, [value], isEditorReady);\n useUpdate(() => {\n monacoRef.current.editor.setModelLanguage(editorRef.current.getModel(), language);\n }, [language], isEditorReady);\n useUpdate(() => {\n // reason for undefined check: https://github.com/suren-atoyan/monaco-react/pull/188\n if (!isUndefined(line)) {\n editorRef.current.revealLine(line);\n }\n }, [line], isEditorReady);\n useUpdate(() => {\n monacoRef.current.editor.setTheme(theme);\n }, [theme], isEditorReady);\n const createEditor = useCallback(() => {\n beforeMountRef.current(monacoRef.current);\n const autoCreatedModelPath = path || defaultPath;\n const defaultModel = getOrCreateModel(monacoRef.current, value || defaultValue, defaultLanguage || language, autoCreatedModelPath);\n editorRef.current = monacoRef.current.editor.create(containerRef.current, {\n model: defaultModel,\n automaticLayout: true,\n ...options\n }, overrideServices);\n saveViewState && editorRef.current.restoreViewState(viewStates.get(autoCreatedModelPath));\n monacoRef.current.editor.setTheme(theme);\n\n if (!getModelMarkersSetter().backup) {\n setModelMarkersSetter({\n backup: monacoRef.current.editor.setModelMarkers\n });\n }\n\n setIsEditorReady(true);\n }, [defaultValue, defaultLanguage, defaultPath, value, language, path, options, overrideServices, saveViewState, theme]);\n useEffect(() => {\n if (isEditorReady) {\n onMountRef.current(editorRef.current, monacoRef.current);\n }\n }, [isEditorReady]);\n useEffect(() => {\n !isMonacoMounting && !isEditorReady && createEditor();\n }, [isMonacoMounting, isEditorReady, createEditor]); // subscription\n // to avoid unnecessary updates (attach - dispose listener) in subscription\n\n valueRef.current = value;\n useEffect(() => {\n if (isEditorReady && onChange) {\n var _subscriptionRef$curr, _editorRef$current;\n\n (_subscriptionRef$curr = subscriptionRef.current) === null || _subscriptionRef$curr === void 0 ? void 0 : _subscriptionRef$curr.dispose();\n subscriptionRef.current = (_editorRef$current = editorRef.current) === null || _editorRef$current === void 0 ? void 0 : _editorRef$current.onDidChangeModelContent(event => {\n const editorValue = editorRef.current.getValue();\n\n if (valueRef.current !== editorValue) {\n onChange(editorValue, event);\n }\n });\n }\n }, [isEditorReady, onChange]); // onValidate\n\n useEffect(() => {\n if (isEditorReady) {\n monacoRef.current.editor.setModelMarkers = function (model, owner, markers) {\n var _getModelMarkersSette;\n\n (_getModelMarkersSette = getModelMarkersSetter().backup) === null || _getModelMarkersSette === void 0 ? void 0 : _getModelMarkersSette.call(monacoRef.current.editor, model, owner, markers);\n onValidate === null || onValidate === void 0 ? void 0 : onValidate(markers);\n };\n }\n }, [isEditorReady, onValidate]);\n\n function disposeEditor() {\n var _subscriptionRef$curr2;\n\n (_subscriptionRef$curr2 = subscriptionRef.current) === null || _subscriptionRef$curr2 === void 0 ? void 0 : _subscriptionRef$curr2.dispose();\n\n if (keepCurrentModel) {\n saveViewState && viewStates.set(path, editorRef.current.saveViewState());\n } else {\n var _editorRef$current$ge;\n\n (_editorRef$current$ge = editorRef.current.getModel()) === null || _editorRef$current$ge === void 0 ? void 0 : _editorRef$current$ge.dispose();\n }\n\n editorRef.current.dispose();\n }\n\n return /*#__PURE__*/React.createElement(MonacoContainer, {\n width: width,\n height: height,\n isEditorReady: isEditorReady,\n loading: loading,\n _ref: containerRef,\n className: className,\n wrapperClassName: wrapperClassName\n });\n}\n\nEditor.propTypes = {\n defaultValue: PropTypes.string,\n defaultPath: PropTypes.string,\n defaultLanguage: PropTypes.string,\n value: PropTypes.string,\n language: PropTypes.string,\n path: PropTypes.string,\n\n /* === */\n theme: PropTypes.string,\n line: PropTypes.number,\n loading: PropTypes.oneOfType([PropTypes.element, PropTypes.string]),\n options: PropTypes.object,\n overrideServices: PropTypes.object,\n saveViewState: PropTypes.bool,\n keepCurrentModel: PropTypes.bool,\n\n /* === */\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n className: PropTypes.string,\n wrapperClassName: PropTypes.string,\n\n /* === */\n beforeMount: PropTypes.func,\n onMount: PropTypes.func,\n onChange: PropTypes.func,\n onValidate: PropTypes.func\n};\nEditor.defaultProps = {\n theme: 'light',\n loading: 'Loading...',\n options: {},\n overrideServices: {},\n saveViewState: true,\n keepCurrentModel: false,\n\n /* === */\n width: '100%',\n height: '100%',\n\n /* === */\n beforeMount: noop,\n onMount: noop,\n onValidate: noop\n};\n\nexport default Editor;\n","import { IStyle } from './IStyle';\n\nexport const InjectionMode = {\n /**\n * Avoids style injection, use getRules() to read the styles.\n */\n none: 0 as 0,\n\n /**\n * Inserts rules using the insertRule api.\n */\n insertNode: 1 as 1,\n\n /**\n * Appends rules using appendChild.\n */\n appendChild: 2 as 2,\n};\n\nexport type InjectionMode = typeof InjectionMode[keyof typeof InjectionMode];\n\n/**\n * CSP settings for the stylesheet\n */\nexport interface ICSPSettings {\n /**\n * Nonce to inject into script tag\n */\n nonce?: string;\n}\n\n/**\n * Stylesheet config.\n *\n * @public\n */\nexport interface IStyleSheetConfig {\n /**\n * Injection mode for how rules are inserted.\n */\n injectionMode?: InjectionMode;\n\n /**\n * Default 'displayName' to use for a className.\n * @defaultvalue 'css'\n */\n defaultPrefix?: string;\n\n /**\n * Defines the default direction of rules for auto-rtlifying things.\n * While typically this is represented as a DIR attribute in the markup,\n * the DIR is not enough to control whether padding goes on the left or\n * right. Use this to set the default direction when rules are registered.\n */\n rtl?: boolean;\n\n /**\n * Default 'namespace' to attach before the className.\n */\n namespace?: string;\n\n /**\n * CSP settings\n */\n cspSettings?: ICSPSettings;\n\n /**\n * Callback executed when a rule is inserted.\n * @deprecated Use `Stylesheet.onInsertRule` instead.\n */\n onInsertRule?: (rule: string) => void;\n\n /**\n * Initial value for classnames cache. Key is serialized css rules associated with a classname.\n */\n classNameCache?: { [key: string]: string };\n}\n\n/**\n * Representation of Stylesheet used for rehydration.\n */\nexport interface ISerializedStylesheet {\n classNameToArgs: Stylesheet['_classNameToArgs'];\n counter: Stylesheet['_counter'];\n keyToClassName: Stylesheet['_keyToClassName'];\n preservedRules: Stylesheet['_preservedRules'];\n rules: Stylesheet['_rules'];\n}\n\nconst STYLESHEET_SETTING = '__stylesheet__';\n/**\n * MSIE 11 doesn't cascade styles based on DOM ordering, but rather on the order that each style node\n * is created. As such, to maintain consistent priority, IE11 should reuse a single style node.\n */\nconst REUSE_STYLE_NODE = typeof navigator !== 'undefined' && /rv:11.0/.test(navigator.userAgent);\n\nlet _global: (Window | {}) & {\n [STYLESHEET_SETTING]?: Stylesheet;\n FabricConfig?: {\n mergeStyles?: IStyleSheetConfig;\n serializedStylesheet?: ISerializedStylesheet;\n };\n} = {};\n\n// Grab window.\ntry {\n _global = window || {};\n} catch {\n /* leave as blank object */\n}\n\nlet _stylesheet: Stylesheet | undefined;\n\n/**\n * Represents the state of styles registered in the page. Abstracts\n * the surface for adding styles to the stylesheet, exposes helpers\n * for reading the styles registered in server rendered scenarios.\n *\n * @public\n */\nexport class Stylesheet {\n private _lastStyleElement?: HTMLStyleElement;\n private _styleElement?: HTMLStyleElement;\n private _rules: string[] = [];\n private _preservedRules: string[] = [];\n private _config: IStyleSheetConfig;\n private _counter = 0;\n private _keyToClassName: { [key: string]: string } = {};\n private _onInsertRuleCallbacks: Function[] = [];\n private _onResetCallbacks: Function[] = [];\n private _classNameToArgs: { [key: string]: { args: any; rules: string[] } } = {};\n\n /**\n * Gets the singleton instance.\n */\n public static getInstance(): Stylesheet {\n _stylesheet = _global[STYLESHEET_SETTING] as Stylesheet;\n\n if (!_stylesheet || (_stylesheet._lastStyleElement && _stylesheet._lastStyleElement.ownerDocument !== document)) {\n const fabricConfig = _global?.FabricConfig || {};\n\n const stylesheet = new Stylesheet(fabricConfig.mergeStyles, fabricConfig.serializedStylesheet);\n _stylesheet = stylesheet;\n _global[STYLESHEET_SETTING] = stylesheet;\n }\n\n return _stylesheet;\n }\n\n constructor(config?: IStyleSheetConfig, serializedStylesheet?: ISerializedStylesheet) {\n this._config = {\n // If there is no document we won't have an element to inject into.\n injectionMode: typeof document === 'undefined' ? InjectionMode.none : InjectionMode.insertNode,\n defaultPrefix: 'css',\n namespace: undefined,\n cspSettings: undefined,\n ...config,\n };\n\n this._classNameToArgs = serializedStylesheet?.classNameToArgs ?? this._classNameToArgs;\n this._counter = serializedStylesheet?.counter ?? this._counter;\n this._keyToClassName = this._config.classNameCache ?? serializedStylesheet?.keyToClassName ?? this._keyToClassName;\n this._preservedRules = serializedStylesheet?.preservedRules ?? this._preservedRules;\n this._rules = serializedStylesheet?.rules ?? this._rules;\n }\n\n /**\n * Serializes the Stylesheet instance into a format which allows rehydration on creation.\n * @returns string representation of `ISerializedStylesheet` interface.\n */\n public serialize(): string {\n return JSON.stringify({\n classNameToArgs: this._classNameToArgs,\n counter: this._counter,\n keyToClassName: this._keyToClassName,\n preservedRules: this._preservedRules,\n rules: this._rules,\n });\n }\n\n /**\n * Configures the stylesheet.\n */\n public setConfig(config?: IStyleSheetConfig): void {\n this._config = {\n ...this._config,\n ...config,\n };\n }\n\n /**\n * Configures a reset callback.\n *\n * @param callback - A callback which will be called when the Stylesheet is reset.\n * @returns function which when called un-registers provided callback.\n */\n public onReset(callback: Function): Function {\n this._onResetCallbacks.push(callback);\n\n return () => {\n this._onResetCallbacks = this._onResetCallbacks.filter(cb => cb !== callback);\n };\n }\n\n /**\n * Configures an insert rule callback.\n *\n * @param callback - A callback which will be called when a rule is inserted.\n * @returns function which when called un-registers provided callback.\n */\n public onInsertRule(callback: Function): Function {\n this._onInsertRuleCallbacks.push(callback);\n\n return () => {\n this._onInsertRuleCallbacks = this._onInsertRuleCallbacks.filter(cb => cb !== callback);\n };\n }\n\n /**\n * Generates a unique classname.\n *\n * @param displayName - Optional value to use as a prefix.\n */\n public getClassName(displayName?: string): string {\n const { namespace } = this._config;\n const prefix = displayName || this._config.defaultPrefix;\n\n return `${namespace ? namespace + '-' : ''}${prefix}-${this._counter++}`;\n }\n\n /**\n * Used internally to cache information about a class which was\n * registered with the stylesheet.\n */\n public cacheClassName(className: string, key: string, args: IStyle[], rules: string[]): void {\n this._keyToClassName[key] = className;\n this._classNameToArgs[className] = {\n args,\n rules,\n };\n }\n\n /**\n * Gets the appropriate classname given a key which was previously\n * registered using cacheClassName.\n */\n public classNameFromKey(key: string): string | undefined {\n return this._keyToClassName[key];\n }\n\n /**\n * Gets all classnames cache with the stylesheet.\n */\n public getClassNameCache(): { [key: string]: string } {\n return this._keyToClassName;\n }\n\n /**\n * Gets the arguments associated with a given classname which was\n * previously registered using cacheClassName.\n */\n public argsFromClassName(className: string): IStyle[] | undefined {\n const entry = this._classNameToArgs[className];\n\n return entry && entry.args;\n }\n\n /**\n * Gets the rules associated with a given classname which was\n * previously registered using cacheClassName.\n */\n public insertedRulesFromClassName(className: string): string[] | undefined {\n const entry = this._classNameToArgs[className];\n\n return entry && entry.rules;\n }\n\n /**\n * Inserts a css rule into the stylesheet.\n * @param preserve - Preserves the rule beyond a reset boundary.\n */\n public insertRule(rule: string, preserve?: boolean): void {\n const { injectionMode } = this._config;\n const element = injectionMode !== InjectionMode.none ? this._getStyleElement() : undefined;\n\n if (preserve) {\n this._preservedRules.push(rule);\n }\n\n if (element) {\n switch (injectionMode) {\n case InjectionMode.insertNode:\n const { sheet } = element!;\n\n try {\n (sheet as CSSStyleSheet).insertRule(rule, (sheet as CSSStyleSheet).cssRules.length);\n } catch (e) {\n // The browser will throw exceptions on unsupported rules (such as a moz prefix in webkit.)\n // We need to swallow the exceptions for this scenario, otherwise we'd need to filter\n // which could be slower and bulkier.\n }\n break;\n\n case InjectionMode.appendChild:\n element.appendChild(document.createTextNode(rule));\n break;\n }\n } else {\n this._rules.push(rule);\n }\n\n // eslint-disable-next-line deprecation/deprecation\n if (this._config.onInsertRule) {\n // eslint-disable-next-line deprecation/deprecation\n this._config.onInsertRule(rule);\n }\n\n this._onInsertRuleCallbacks.forEach(callback => callback());\n }\n\n /**\n * Gets all rules registered with the stylesheet; only valid when\n * using InsertionMode.none.\n */\n public getRules(includePreservedRules?: boolean): string {\n return (includePreservedRules ? this._preservedRules.join('') : '') + this._rules.join('');\n }\n\n /**\n * Resets the internal state of the stylesheet. Only used in server\n * rendered scenarios where we're using InsertionMode.none.\n */\n public reset(): void {\n this._rules = [];\n this._counter = 0;\n this._classNameToArgs = {};\n this._keyToClassName = {};\n\n this._onResetCallbacks.forEach(callback => callback());\n }\n\n // Forces the regeneration of incoming styles without totally resetting the stylesheet.\n public resetKeys(): void {\n this._keyToClassName = {};\n }\n\n private _getStyleElement(): HTMLStyleElement | undefined {\n if (!this._styleElement && typeof document !== 'undefined') {\n this._styleElement = this._createStyleElement();\n\n if (!REUSE_STYLE_NODE) {\n // Reset the style element on the next frame.\n window.requestAnimationFrame(() => {\n this._styleElement = undefined;\n });\n }\n }\n return this._styleElement;\n }\n\n private _createStyleElement(): HTMLStyleElement {\n const head: HTMLHeadElement = document.head;\n const styleElement = document.createElement('style');\n let nodeToInsertBefore: Node | null = null;\n\n styleElement.setAttribute('data-merge-styles', 'true');\n\n const { cspSettings } = this._config;\n if (cspSettings) {\n if (cspSettings.nonce) {\n styleElement.setAttribute('nonce', cspSettings.nonce);\n }\n }\n if (this._lastStyleElement) {\n // If the `nextElementSibling` is null, then the insertBefore will act as a regular append.\n // https://developer.mozilla.org/en-US/docs/Web/API/Node/insertBefore#Syntax\n nodeToInsertBefore = this._lastStyleElement.nextElementSibling;\n } else {\n const placeholderStyleTag: Element | null = this._findPlaceholderStyleTag();\n\n if (placeholderStyleTag) {\n nodeToInsertBefore = placeholderStyleTag.nextElementSibling;\n } else {\n nodeToInsertBefore = head.childNodes[0];\n }\n }\n\n head!.insertBefore(styleElement, head!.contains(nodeToInsertBefore) ? nodeToInsertBefore : null);\n this._lastStyleElement = styleElement;\n\n return styleElement;\n }\n\n private _findPlaceholderStyleTag(): Element | null {\n const head: HTMLHeadElement = document.head;\n if (head) {\n return head.querySelector('style[data-merge-styles]');\n }\n return null;\n }\n}\n","import { memo } from 'react';\nimport Editor from './Editor.js';\n\nvar index = /*#__PURE__*/memo(Editor);\n\nexport default index;\n","import { IStyleOptions } from './IStyleOptions';\n\n/**\n * Sets the current RTL value.\n */\nexport function setRTL(isRTL: boolean): void {\n if (_rtl !== isRTL) {\n _rtl = isRTL;\n }\n}\n\n/**\n * Gets the current RTL value.\n */\nexport function getRTL(): boolean {\n if (_rtl === undefined) {\n _rtl =\n typeof document !== 'undefined' &&\n !!document.documentElement &&\n document.documentElement.getAttribute('dir') === 'rtl';\n }\n return _rtl;\n}\n\n// This has been split into 2 lines because it was working in Fabric due to the code being transpiled to es5, so this\n// was converted to var while not working in Fluent that uses babel to transpile the code to be es6-like. Splitting the\n// logic into two lines, however, allows it to work in both scenarios.\nlet _rtl: boolean;\n_rtl = getRTL();\n\nexport function getStyleOptions(): IStyleOptions {\n return {\n rtl: getRTL(),\n };\n}\n","import { IStyle, IStyleBaseArray } from './IStyle';\nimport { Stylesheet } from './Stylesheet';\n\n/**\n * Separates the classes and style objects. Any classes that are pre-registered\n * args are auto expanded into objects.\n */\nexport function extractStyleParts(\n ...args: (IStyle | IStyle[] | false | null | undefined)[]\n): { classes: string[]; objects: IStyleBaseArray } {\n const classes: string[] = [];\n const objects: {}[] = [];\n const stylesheet = Stylesheet.getInstance();\n\n function _processArgs(argsList: (IStyle | IStyle[])[]): void {\n for (const arg of argsList) {\n if (arg) {\n if (typeof arg === 'string') {\n if (arg.indexOf(' ') >= 0) {\n _processArgs(arg.split(' '));\n } else {\n const translatedArgs = stylesheet.argsFromClassName(arg);\n\n if (translatedArgs) {\n _processArgs(translatedArgs);\n } else {\n // Avoid adding the same class twice.\n if (classes.indexOf(arg) === -1) {\n classes.push(arg);\n }\n }\n }\n } else if (Array.isArray(arg)) {\n _processArgs(arg);\n } else if (typeof arg === 'object') {\n objects.push(arg);\n }\n }\n }\n }\n\n _processArgs(args);\n\n return {\n classes,\n objects,\n };\n}\n","const rules: { [key: string]: string } = {};\n\nexport function kebabRules(rulePairs: (string | number)[], index: number): void {\n const rule: string = rulePairs[index] as string;\n\n if (rule.charAt(0) !== '-') {\n rulePairs[index] = rules[rule] = rules[rule] || rule.replace(/([A-Z])/g, '-$1').toLowerCase();\n }\n}\n","export interface IVendorSettings {\n isWebkit?: boolean;\n isMoz?: boolean;\n isMs?: boolean;\n isOpera?: boolean;\n}\n\nlet _vendorSettings: IVendorSettings | undefined;\n\nexport function getVendorSettings(): IVendorSettings {\n if (!_vendorSettings) {\n const doc = typeof document !== 'undefined' ? document : undefined;\n const nav = typeof navigator !== 'undefined' ? navigator : undefined;\n const userAgent = nav?.userAgent?.toLowerCase();\n\n if (!doc) {\n _vendorSettings = {\n isWebkit: true,\n isMoz: true,\n isOpera: true,\n isMs: true,\n };\n } else {\n _vendorSettings = {\n isWebkit: !!(doc && 'WebkitAppearance' in doc.documentElement.style),\n isMoz: !!(userAgent && userAgent.indexOf('firefox') > -1),\n isOpera: !!(userAgent && userAgent.indexOf('opera') > -1),\n isMs: !!(nav && (/rv:11.0/i.test(nav.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent))),\n };\n }\n }\n\n return _vendorSettings;\n}\n\n/**\n * Sets the vendor settings for prefixing and vendor specific operations.\n */\nexport function setVendorSettings(vendorSettings?: IVendorSettings): void {\n _vendorSettings = vendorSettings;\n}\n","import { getVendorSettings } from '../getVendorSettings';\n\nconst autoPrefixNames: { [key: string]: number } = {\n 'user-select': 1,\n};\n\nexport function prefixRules(rulePairs: (string | number)[], index: number): void {\n const vendorSettings = getVendorSettings();\n\n const name = rulePairs[index];\n\n if (autoPrefixNames[name]) {\n const value = rulePairs[index + 1];\n\n if (autoPrefixNames[name]) {\n if (vendorSettings.isWebkit) {\n rulePairs.push('-webkit-' + name, value);\n }\n if (vendorSettings.isMoz) {\n rulePairs.push('-moz-' + name, value);\n }\n if (vendorSettings.isMs) {\n rulePairs.push('-ms-' + name, value);\n }\n if (vendorSettings.isOpera) {\n rulePairs.push('-o-' + name, value);\n }\n }\n }\n}\n","const NON_PIXEL_NUMBER_PROPS = [\n 'column-count',\n 'font-weight',\n 'flex',\n 'flex-grow',\n 'flex-shrink',\n 'fill-opacity',\n 'opacity',\n 'order',\n 'z-index',\n 'zoom',\n];\n\nexport function provideUnits(rulePairs: (string | number)[], index: number): void {\n const name = rulePairs[index] as string;\n const value = rulePairs[index + 1];\n\n if (typeof value === 'number') {\n const isNonPixelProp = NON_PIXEL_NUMBER_PROPS.indexOf(name as string) > -1;\n const isVariableOrPrefixed = name.indexOf('--') > -1;\n const unit = isNonPixelProp || isVariableOrPrefixed ? '' : 'px';\n\n rulePairs[index + 1] = `${value}${unit}`;\n }\n}\n","import { IStyleOptions } from '../IStyleOptions';\n\nconst LEFT = 'left';\nconst RIGHT = 'right';\nconst NO_FLIP = '@noflip';\nconst NAME_REPLACEMENTS: { [key: string]: string } = {\n [LEFT]: RIGHT,\n [RIGHT]: LEFT,\n};\nconst VALUE_REPLACEMENTS: { [key: string]: string } = {\n 'w-resize': 'e-resize',\n 'sw-resize': 'se-resize',\n 'nw-resize': 'ne-resize',\n};\n\n/**\n * RTLifies the rulePair in the array at the current index. This mutates the array for performance\n * reasons.\n */\nexport function rtlifyRules(options: IStyleOptions, rulePairs: (string | number)[], index: number): void {\n if (options.rtl) {\n const name = rulePairs[index] as string;\n\n if (!name) {\n return;\n }\n\n const value = rulePairs[index + 1] as string;\n\n if (typeof value === 'string' && value.indexOf(NO_FLIP) >= 0) {\n rulePairs[index + 1] = value.replace(/\\s*(?:\\/\\*\\s*)?\\@noflip\\b(?:\\s*\\*\\/)?\\s*?/g, '');\n } else if (name.indexOf(LEFT) >= 0) {\n rulePairs[index] = name.replace(LEFT, RIGHT);\n } else if (name.indexOf(RIGHT) >= 0) {\n rulePairs[index] = name.replace(RIGHT, LEFT);\n } else if (String(value).indexOf(LEFT) >= 0) {\n rulePairs[index + 1] = value.replace(LEFT, RIGHT);\n } else if (String(value).indexOf(RIGHT) >= 0) {\n rulePairs[index + 1] = value.replace(RIGHT, LEFT);\n } else if (NAME_REPLACEMENTS[name]) {\n rulePairs[index] = NAME_REPLACEMENTS[name];\n } else if (VALUE_REPLACEMENTS[value]) {\n rulePairs[index + 1] = VALUE_REPLACEMENTS[value];\n } else {\n switch (name) {\n case 'margin':\n case 'padding':\n rulePairs[index + 1] = flipQuad(value);\n break;\n case 'box-shadow':\n rulePairs[index + 1] = negateNum(value, 0);\n break;\n }\n }\n }\n}\n\n/**\n * Given a string value in a space delimited format (e.g. \"1 2 3 4\"), negates a particular value.\n */\nfunction negateNum(value: string, partIndex: number): string {\n const parts = value.split(' ');\n const numberVal = parseInt(parts[partIndex], 10);\n\n parts[0] = parts[0].replace(String(numberVal), String(numberVal * -1));\n\n return parts.join(' ');\n}\n\n/**\n * Given a string quad, flips the left and right values.\n */\nfunction flipQuad(value: string): string {\n if (typeof value === 'string') {\n const parts = value.split(' ');\n\n if (parts.length === 4) {\n return `${parts[0]} ${parts[3]} ${parts[2]} ${parts[1]}`;\n }\n }\n\n return value;\n}\n","import { IStyle } from './IStyle';\nimport { IRawStyle } from './IRawStyle';\n\nimport { Stylesheet } from './Stylesheet';\nimport { kebabRules } from './transforms/kebabRules';\nimport { prefixRules } from './transforms/prefixRules';\nimport { provideUnits } from './transforms/provideUnits';\nimport { rtlifyRules } from './transforms/rtlifyRules';\nimport { IStyleOptions } from './IStyleOptions';\nimport { tokenizeWithParentheses } from './tokenizeWithParentheses';\n\nconst DISPLAY_NAME = 'displayName';\n\ntype IDictionary = { [key: string]: any };\n\ninterface IRuleSet {\n __order: string[];\n [key: string]: IDictionary;\n}\n\nfunction getDisplayName(rules?: { [key: string]: IRawStyle }): string | undefined {\n const rootStyle: IStyle = rules && rules['&'];\n\n return rootStyle ? (rootStyle as IRawStyle).displayName : undefined;\n}\n\nconst globalSelectorRegExp = /\\:global\\((.+?)\\)/g;\n\ntype ReplacementInfo = [number, number, string];\n\n/**\n * Finds comma separated selectors in a :global() e.g. \":global(.class1, .class2, .class3)\"\n * and wraps them each in their own global \":global(.class1), :global(.class2), :global(.class3)\"\n *\n * @param selectorWithGlobals The selector to process\n * @returns The updated selector\n */\nfunction expandCommaSeparatedGlobals(selectorWithGlobals: string): string {\n // We the selector does not have a :global() we can shortcut\n if (!globalSelectorRegExp.test(selectorWithGlobals)) {\n return selectorWithGlobals;\n }\n\n const replacementInfo: ReplacementInfo[] = [];\n\n const findGlobal = /\\:global\\((.+?)\\)/g;\n let match = null;\n // Create a result list for global selectors so we can replace them.\n while ((match = findGlobal.exec(selectorWithGlobals))) {\n // Only if the found selector is a comma separated list we'll process it.\n if (match[1].indexOf(',') > -1) {\n replacementInfo.push([\n match.index,\n match.index + match[0].length,\n // Wrap each of the found selectors in :global()\n match[1]\n .split(',')\n .map((v: string) => `:global(${v.trim()})`)\n .join(', '),\n ]);\n }\n }\n\n // Replace the found selectors with their wrapped variants in reverse order\n return replacementInfo\n .reverse()\n .reduce((selector: string, [matchIndex, matchEndIndex, replacement]: ReplacementInfo) => {\n const prefix = selector.slice(0, matchIndex);\n const suffix = selector.slice(matchEndIndex);\n\n return prefix + replacement + suffix;\n }, selectorWithGlobals);\n}\n\nfunction expandSelector(newSelector: string, currentSelector: string): string {\n if (newSelector.indexOf(':global(') >= 0) {\n return newSelector.replace(globalSelectorRegExp, '$1');\n } else if (newSelector.indexOf(':') === 0) {\n return currentSelector + newSelector;\n } else if (newSelector.indexOf('&') < 0) {\n return currentSelector + ' ' + newSelector;\n }\n\n return newSelector;\n}\n\nfunction extractSelector(currentSelector: string, rules: IRuleSet = { __order: [] }, selector: string, value: IStyle) {\n if (selector.indexOf('@') === 0) {\n selector = selector + '{' + currentSelector;\n extractRules([value], rules, selector);\n } else if (selector.indexOf(',') > -1) {\n expandCommaSeparatedGlobals(selector)\n .split(',')\n .map((s: string) => s.trim())\n .forEach((separatedSelector: string) =>\n extractRules([value], rules, expandSelector(separatedSelector, currentSelector)),\n );\n } else {\n extractRules([value], rules, expandSelector(selector, currentSelector));\n }\n}\n\nfunction extractRules(args: IStyle[], rules: IRuleSet = { __order: [] }, currentSelector: string = '&'): IRuleSet {\n const stylesheet = Stylesheet.getInstance();\n let currentRules: IDictionary | undefined = rules[currentSelector] as IDictionary;\n\n if (!currentRules) {\n currentRules = {};\n rules[currentSelector] = currentRules;\n rules.__order.push(currentSelector);\n }\n\n for (const arg of args) {\n // If the arg is a string, we need to look up the class map and merge.\n if (typeof arg === 'string') {\n const expandedRules = stylesheet.argsFromClassName(arg);\n\n if (expandedRules) {\n extractRules(expandedRules, rules, currentSelector);\n }\n // Else if the arg is an array, we need to recurse in.\n } else if (Array.isArray(arg)) {\n extractRules(arg, rules, currentSelector);\n } else {\n for (const prop in arg as any) {\n if ((arg as any).hasOwnProperty(prop)) {\n const propValue = (arg as any)[prop];\n\n if (prop === 'selectors') {\n // every child is a selector.\n const selectors: { [key: string]: IStyle } = (arg as any).selectors;\n\n for (const newSelector in selectors) {\n if (selectors.hasOwnProperty(newSelector)) {\n extractSelector(currentSelector, rules, newSelector, selectors[newSelector]);\n }\n }\n } else if (typeof propValue === 'object') {\n // prop is a selector.\n if (propValue !== null) {\n extractSelector(currentSelector, rules, prop, propValue);\n }\n } else {\n if (propValue !== undefined) {\n // Else, add the rule to the currentSelector.\n if (prop === 'margin' || prop === 'padding') {\n expandQuads(currentRules, prop, propValue);\n } else {\n (currentRules as any)[prop] = propValue;\n }\n }\n }\n }\n }\n }\n }\n\n return rules;\n}\n\nfunction expandQuads(currentRules: IDictionary, name: string, value: string): void {\n let parts = typeof value === 'string' ? tokenizeWithParentheses(value) : [value];\n\n if (parts.length === 0) {\n parts.push(value);\n }\n\n if (parts[parts.length - 1] === '!important') {\n // Remove !important from parts, and append it to each part individually\n parts = parts.slice(0, -1).map(p => p + ' !important');\n }\n\n currentRules[name + 'Top'] = parts[0];\n currentRules[name + 'Right'] = parts[1] || parts[0];\n currentRules[name + 'Bottom'] = parts[2] || parts[0];\n currentRules[name + 'Left'] = parts[3] || parts[1] || parts[0];\n}\n\nfunction getKeyForRules(options: IStyleOptions, rules: IRuleSet): string | undefined {\n const serialized: string[] = [options.rtl ? 'rtl' : 'ltr'];\n let hasProps = false;\n\n for (const selector of rules.__order) {\n serialized.push(selector);\n const rulesForSelector = rules[selector];\n\n for (const propName in rulesForSelector) {\n if (rulesForSelector.hasOwnProperty(propName) && rulesForSelector[propName] !== undefined) {\n hasProps = true;\n serialized.push(propName, rulesForSelector[propName]);\n }\n }\n }\n\n return hasProps ? serialized.join('') : undefined;\n}\n\nfunction repeatString(target: string, count: number): string {\n if (count <= 0) {\n return '';\n }\n\n if (count === 1) {\n return target;\n }\n\n return target + repeatString(target, count - 1);\n}\n\nexport function serializeRuleEntries(options: IStyleOptions, ruleEntries: { [key: string]: string | number }): string {\n if (!ruleEntries) {\n return '';\n }\n\n const allEntries: (string | number)[] = [];\n\n for (const entry in ruleEntries) {\n if (ruleEntries.hasOwnProperty(entry) && entry !== DISPLAY_NAME && ruleEntries[entry] !== undefined) {\n allEntries.push(entry, ruleEntries[entry]);\n }\n }\n\n // Apply transforms.\n for (let i = 0; i < allEntries.length; i += 2) {\n kebabRules(allEntries, i);\n provideUnits(allEntries, i);\n rtlifyRules(options, allEntries, i);\n prefixRules(allEntries, i);\n }\n\n // Apply punctuation.\n for (let i = 1; i < allEntries.length; i += 4) {\n allEntries.splice(i, 1, ':', allEntries[i], ';');\n }\n\n return allEntries.join('');\n}\n\nexport interface IRegistration {\n className: string;\n key: string;\n args: IStyle[];\n rulesToInsert: string[];\n}\n\nexport function styleToRegistration(options: IStyleOptions, ...args: IStyle[]): IRegistration | undefined {\n const rules: IRuleSet = extractRules(args);\n const key = getKeyForRules(options, rules);\n\n if (key) {\n const stylesheet = Stylesheet.getInstance();\n const registration: Partial = {\n className: stylesheet.classNameFromKey(key),\n key,\n args,\n };\n\n if (!registration.className) {\n registration.className = stylesheet.getClassName(getDisplayName(rules));\n const rulesToInsert: string[] = [];\n\n for (const selector of rules.__order) {\n rulesToInsert.push(selector, serializeRuleEntries(options, rules[selector]));\n }\n registration.rulesToInsert = rulesToInsert;\n }\n\n return registration as IRegistration;\n }\n\n return undefined;\n}\n\n/**\n * Insert style to stylesheet.\n * @param registration Style registration.\n * @param specificityMultiplier Number of times classname selector is repeated in the css rule.\n * This is to increase css specificity in case it's needed. Default to 1.\n */\nexport function applyRegistration(registration: IRegistration, specificityMultiplier: number = 1): void {\n const stylesheet = Stylesheet.getInstance();\n const { className, key, args, rulesToInsert } = registration;\n\n if (rulesToInsert) {\n // rulesToInsert is an ordered array of selector/rule pairs.\n for (let i = 0; i < rulesToInsert.length; i += 2) {\n const rules = rulesToInsert[i + 1];\n if (rules) {\n let selector = rulesToInsert[i];\n selector = selector.replace(/&/g, repeatString(`.${registration.className}`, specificityMultiplier));\n\n // Insert. Note if a media query, we must close the query with a final bracket.\n const processedRule = `${selector}{${rules}}${selector.indexOf('@') === 0 ? '}' : ''}`;\n stylesheet.insertRule(processedRule);\n }\n }\n stylesheet.cacheClassName(className!, key!, args!, rulesToInsert);\n }\n}\n\nexport function styleToClassName(options: IStyleOptions, ...args: IStyle[]): string {\n const registration = styleToRegistration(options, ...args);\n if (registration) {\n applyRegistration(registration, options.specificityMultiplier);\n\n return registration.className;\n }\n\n return '';\n}\n","/**\n * Split a string into tokens separated by whitespace, except all text within parentheses\n * is treated as a single token (whitespace is ignored within parentheses).\n *\n * Unlike String.split(' '), multiple consecutive space characters are collapsed and\n * removed from the returned array (including leading and trailing spaces).\n *\n * For example:\n * `tokenizeWithParentheses(\"3px calc(var(--x) / 2) 9px 0 \")`\n * => `[\"3px\", \"calc(var(--x) / 2)\", \"9px\", \"0\"]`\n *\n * @returns The array of tokens. Returns an empty array if the string was empty or contained only whitespace.\n */\nexport function tokenizeWithParentheses(value: string): string[] {\n const parts = [];\n let partStart = 0;\n let parens = 0;\n\n for (let i = 0; i < value.length; i++) {\n switch (value[i]) {\n case '(':\n parens++;\n break;\n case ')':\n if (parens) {\n parens--;\n }\n break;\n case '\\t':\n case ' ':\n if (!parens) {\n // Add the new part if it's not an empty string\n if (i > partStart) {\n parts.push(value.substring(partStart, i));\n }\n partStart = i + 1;\n }\n break;\n }\n }\n\n // Add the last part\n if (partStart < value.length) {\n parts.push(value.substring(partStart));\n }\n\n return parts;\n}\n","import { concatStyleSets } from './concatStyleSets';\nimport { extractStyleParts } from './extractStyleParts';\nimport { IStyle } from './IStyle';\nimport { IStyleOptions } from './IStyleOptions';\nimport { IConcatenatedStyleSet, IProcessedStyleSet, IStyleSet } from './IStyleSet';\nimport { getStyleOptions } from './StyleOptionsState';\nimport { applyRegistration, styleToRegistration } from './styleToClassName';\nimport { ObjectOnly } from './ObjectOnly';\n\n/**\n * Takes in one or more style set objects, each consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeStyles` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSet - The first style set to be merged and reigstered.\n */\nexport function mergeStyleSets(\n styleSet: TStyleSet | false | null | undefined,\n): IProcessedStyleSet>;\n\n/**\n * Takes in one or more style set objects, each consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeStyles` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSet1 - The first style set to be merged.\n * @param styleSet2 - The second style set to be merged.\n */\nexport function mergeStyleSets(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n): IProcessedStyleSet & ObjectOnly>;\n\n/**\n * Takes in one or more style set objects, each consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeStyles` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSet1 - The first style set to be merged.\n * @param styleSet2 - The second style set to be merged.\n * @param styleSet3 - The third style set to be merged.\n */\nexport function mergeStyleSets(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n styleSet3: TStyleSet3 | false | null | undefined,\n): IProcessedStyleSet & ObjectOnly & ObjectOnly>;\n\n/**\n * Takes in one or more style set objects, each consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeStyles` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSet1 - The first style set to be merged.\n * @param styleSet2 - The second style set to be merged.\n * @param styleSet3 - The third style set to be merged.\n * @param styleSet4 - The fourth style set to be merged.\n */\nexport function mergeStyleSets(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n styleSet3: TStyleSet3 | false | null | undefined,\n styleSet4: TStyleSet4 | false | null | undefined,\n): IProcessedStyleSet<\n ObjectOnly & ObjectOnly & ObjectOnly & ObjectOnly\n>;\n\n/**\n * Takes in one or more style set objects, each consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeStyles` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n */\nexport function mergeStyleSets(...styleSets: Array): IProcessedStyleSet;\n\n/**\n * Takes in one or more style set objects, each consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeStyles` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n */\nexport function mergeStyleSets(...styleSets: Array): IProcessedStyleSet {\n return mergeCssSets(styleSets as any, getStyleOptions());\n}\n\n/**\n * Takes in one or more style set objects, each1consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeCss` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n * @param options - (optional) Options to use when creating rules.\n */\nexport function mergeCssSets(\n styleSets: [TStyleSet | false | null | undefined],\n options?: IStyleOptions,\n): IProcessedStyleSet;\n\n/**\n * Takes in one or more style set objects, each1consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeCss` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n * @param options - (optional) Options to use when creating rules.\n */\nexport function mergeCssSets(\n styleSets: [TStyleSet1 | false | null | undefined, TStyleSet2 | false | null | undefined],\n options?: IStyleOptions,\n): IProcessedStyleSet;\n\n/**\n * Takes in one or more style set objects, each1consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeCss` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n * @param options - (optional) Options to use when creating rules.\n */\nexport function mergeCssSets(\n styleSets: [\n TStyleSet1 | false | null | undefined,\n TStyleSet2 | false | null | undefined,\n TStyleSet3 | false | null | undefined,\n ],\n options?: IStyleOptions,\n): IProcessedStyleSet;\n\n/**\n * Takes in one or more style set objects, each1consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeCss` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n * @param options - (optional) Options to use when creating rules.\n */\nexport function mergeCssSets(\n styleSets: [\n TStyleSet1 | false | null | undefined,\n TStyleSet2 | false | null | undefined,\n TStyleSet3 | false | null | undefined,\n TStyleSet4 | false | null | undefined,\n ],\n options?: IStyleOptions,\n): IProcessedStyleSet<\n ObjectOnly & ObjectOnly & ObjectOnly & ObjectOnly\n>;\n\n/**\n * Takes in one or more style set objects, each1consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeCss` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n * @param options - (optional) Options to use when creating rules.\n */\nexport function mergeCssSets(\n styleSet: [TStyleSet | false | null | undefined],\n options?: IStyleOptions,\n): IProcessedStyleSet;\n\n/**\n * Takes in one or more style set objects, each1consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeCss` for each property in the object, but ensures the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n * @param options - (optional) Options to use when creating rules.\n */\nexport function mergeCssSets(\n styleSets: Array,\n options?: IStyleOptions,\n): IProcessedStyleSet {\n const classNameSet: IProcessedStyleSet = { subComponentStyles: {} };\n\n const styleSet = styleSets[0];\n\n if (!styleSet && styleSets.length <= 1) {\n return { subComponentStyles: {} } as any;\n }\n\n const concatenatedStyleSet = concatStyleSets(...styleSets);\n\n const registrations = [];\n\n for (const styleSetArea in concatenatedStyleSet) {\n if (concatenatedStyleSet.hasOwnProperty(styleSetArea)) {\n if (styleSetArea === 'subComponentStyles') {\n classNameSet.subComponentStyles = (concatenatedStyleSet as IConcatenatedStyleSet).subComponentStyles || {};\n continue;\n }\n\n const styles: IStyle = (concatenatedStyleSet as any)[styleSetArea];\n\n const { classes, objects } = extractStyleParts(styles);\n\n if (objects?.length) {\n const registration = styleToRegistration(options || {}, { displayName: styleSetArea }, objects);\n\n if (registration) {\n registrations.push(registration);\n classNameSet[styleSetArea] = classes.concat([registration.className]).join(' ');\n }\n } else {\n classNameSet[styleSetArea] = classes.join(' ');\n }\n }\n }\n\n for (const registration of registrations) {\n if (registration) {\n applyRegistration(registration, options?.specificityMultiplier);\n }\n }\n\n return classNameSet as any;\n}\n","/**\n * Simulated enum for keycodes. These will get inlined by uglify when used much like an enum\n *\n * @public\n * {@docCategory KeyCodes}\n */\nexport const KeyCodes = {\n backspace: 8 as 8,\n tab: 9 as 9,\n enter: 13 as 13,\n shift: 16 as 16,\n ctrl: 17 as 17,\n alt: 18 as 18,\n pauseBreak: 19 as 19,\n capslock: 20 as 20,\n escape: 27 as 27,\n space: 32 as 32,\n pageUp: 33 as 33,\n pageDown: 34 as 34,\n end: 35 as 35,\n home: 36 as 36,\n left: 37 as 37,\n up: 38 as 38,\n right: 39 as 39,\n down: 40 as 40,\n insert: 45 as 45,\n del: 46 as 46,\n zero: 48 as 48,\n one: 49 as 49,\n two: 50 as 50,\n three: 51 as 51,\n four: 52 as 52,\n five: 53 as 53,\n six: 54 as 54,\n seven: 55 as 55,\n eight: 56 as 56,\n nine: 57 as 57,\n colon: 58 as 58,\n a: 65 as 65,\n b: 66 as 66,\n c: 67 as 67,\n d: 68 as 68,\n e: 69 as 69,\n f: 70 as 70,\n g: 71 as 71,\n h: 72 as 72,\n i: 73 as 73,\n j: 74 as 74,\n k: 75 as 75,\n l: 76 as 76,\n m: 77 as 77,\n n: 78 as 78,\n o: 79 as 79,\n p: 80 as 80,\n q: 81 as 81,\n r: 82 as 82,\n s: 83 as 83,\n t: 84 as 84,\n u: 85 as 85,\n v: 86 as 86,\n w: 87 as 87,\n x: 88 as 88,\n y: 89 as 89,\n z: 90 as 90,\n leftWindow: 91 as 91,\n rightWindow: 92 as 92,\n select: 93 as 93,\n /* eslint-disable @typescript-eslint/naming-convention */\n zero_numpad: 96 as 96,\n one_numpad: 97 as 97,\n two_numpad: 98 as 98,\n three_numpad: 99 as 99,\n four_numpad: 100 as 100,\n five_numpad: 101 as 101,\n six_numpad: 102 as 102,\n seven_numpad: 103 as 103,\n eight_numpad: 104 as 104,\n nine_numpad: 105 as 105,\n /* eslint-enable @typescript-eslint/naming-convention */\n multiply: 106 as 106,\n add: 107 as 107,\n subtract: 109 as 109,\n decimalPoint: 110 as 110,\n divide: 111 as 111,\n f1: 112 as 112,\n f2: 113 as 113,\n f3: 114 as 114,\n f4: 115 as 115,\n f5: 116 as 116,\n f6: 117 as 117,\n f7: 118 as 118,\n f8: 119 as 119,\n f9: 120 as 120,\n f10: 121 as 121,\n f11: 122 as 122,\n f12: 123 as 123,\n numlock: 144 as 144,\n scrollLock: 145 as 145,\n semicolon: 186 as 186,\n equalSign: 187 as 187,\n comma: 188 as 188,\n dash: 189 as 189,\n period: 190 as 190,\n forwardSlash: 191 as 191,\n graveAccent: 192 as 192,\n openBracket: 219 as 219,\n backSlash: 220 as 220,\n closeBracket: 221 as 221,\n singleQuote: 222 as 222,\n};\nexport type KeyCodes = number;\n","import { _isSSR } from './setSSR';\n\n/**\n * Helper to get the document object. Note that in popup window cases, document\n * might be the wrong document, which is why we look at ownerDocument for the\n * truth. Also note that the SSR flag is used to test ssr scenarios even if\n * document is defined (from JSDOM for example.)\n *\n * @public\n */\nexport function getDocument(rootElement?: HTMLElement | null): Document | undefined {\n if (_isSSR || typeof document === 'undefined') {\n return undefined;\n } else {\n const el = rootElement as Element;\n\n return el && el.ownerDocument ? el.ownerDocument : document;\n }\n}\n","import { getWindow } from './dom/getWindow';\n\n/**\n * Fetches an item from session storage without throwing an exception\n * @param key The key of the item to fetch from session storage\n */\nexport function getItem(key: string): string | null {\n let result = null;\n try {\n const win = getWindow();\n result = win ? win.sessionStorage.getItem(key) : null;\n } catch (e) {\n /* Eat the exception */\n }\n return result;\n}\n\n/**\n * Inserts an item into session storage without throwing an exception\n * @param key The key of the item to add to session storage\n * @param data The data to put into session storage\n */\nexport function setItem(key: string, data: string): void {\n try {\n getWindow()?.sessionStorage.setItem(key, data);\n } catch (e) {\n /* Eat the exception */\n }\n}\n","import { KeyCodes } from './KeyCodes';\nimport { getDocument } from './dom/getDocument';\nimport { getItem, setItem } from './sessionStorage';\nimport { setRTL as mergeStylesSetRTL } from '@fluentui/merge-styles';\n\nconst RTL_LOCAL_STORAGE_KEY = 'isRTL';\n\n// Default to undefined so that we initialize on first read.\nlet _isRTL: boolean | undefined;\n\n/**\n * Gets the rtl state of the page (returns true if in rtl.)\n */\nexport function getRTL(theme: { rtl?: boolean } = {}): boolean {\n if (theme.rtl !== undefined) {\n return theme.rtl;\n }\n if (_isRTL === undefined) {\n // Fabric supports persisting the RTL setting between page refreshes via session storage\n let savedRTL = getItem(RTL_LOCAL_STORAGE_KEY);\n if (savedRTL !== null) {\n _isRTL = savedRTL === '1';\n setRTL(_isRTL);\n }\n\n let doc = getDocument();\n if (_isRTL === undefined && doc) {\n _isRTL = ((doc.body && doc.body.getAttribute('dir')) || doc.documentElement.getAttribute('dir')) === 'rtl';\n mergeStylesSetRTL(_isRTL);\n }\n }\n\n return !!_isRTL;\n}\n\n/**\n * Sets the rtl state of the page (by adjusting the dir attribute of the html element.)\n */\nexport function setRTL(isRTL: boolean, persistSetting: boolean = false): void {\n let doc = getDocument();\n if (doc) {\n doc.documentElement.setAttribute('dir', isRTL ? 'rtl' : 'ltr');\n }\n\n if (persistSetting) {\n setItem(RTL_LOCAL_STORAGE_KEY, isRTL ? '1' : '0');\n }\n\n _isRTL = isRTL;\n mergeStylesSetRTL(_isRTL);\n}\n\n/**\n * Returns the given key, but flips right/left arrows if necessary.\n */\nexport function getRTLSafeKeyCode(key: number, theme: { rtl?: boolean } = {}): number {\n if (getRTL(theme)) {\n if (key === KeyCodes.left) {\n key = KeyCodes.right;\n } else if (key === KeyCodes.right) {\n key = KeyCodes.left;\n }\n }\n\n return key;\n}\n","import { mergeCssSets, Stylesheet } from '@fluentui/merge-styles';\nimport { getRTL } from './rtl';\nimport { getWindow } from './dom';\nimport type { IStyleSet, IProcessedStyleSet, IStyleFunctionOrObject } from '@fluentui/merge-styles';\nimport type { StyleFunction } from './styled';\n\nconst MAX_CACHE_COUNT = 50;\nconst DEFAULT_SPECIFICITY_MULTIPLIER = 5;\n\nlet _memoizedClassNames = 0;\n\nconst stylesheet = Stylesheet.getInstance();\n\nif (stylesheet && stylesheet.onReset) {\n stylesheet.onReset(() => _memoizedClassNames++);\n}\n\n// Note that because of the caching nature within the classNames memoization,\n// I've disabled this rule to simply be able to work with any types.\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n// This represents a prop we attach to each Map to indicate the cached return value\n// associated with the graph node.\nconst retVal = '__retval__';\n\ninterface IRecursiveMemoNode extends Map {\n [retVal]?: string;\n}\n\ntype AppWindow = (Window & { FabricConfig?: { enableClassNameCacheFullWarning?: boolean } }) | undefined;\n\nexport interface IClassNamesFunctionOptions {\n /**\n * Disables class caching for scenarios where styleProp parts mutate frequently.\n */\n disableCaching?: boolean;\n\n /**\n * Size of the cache. It overwrites default cache size when defined.\n */\n cacheSize?: number;\n\n /**\n * Set to true if component base styles are implemented in scss instead of css-in-js.\n */\n useStaticStyles?: boolean;\n}\n\n/**\n * Creates a getClassNames function which calls getStyles given the props, and injects them\n * into mergeStyleSets.\n *\n * Note that the props you pass in on every render should be in the same order and\n * immutable (numbers, strings, and booleans). This will allow the results to be memoized. Violating\n * these will cause extra recalcs to occur.\n */\nexport function classNamesFunction>(\n options: IClassNamesFunctionOptions = {},\n): (\n getStyles: IStyleFunctionOrObject | undefined,\n styleProps?: TStyleProps,\n) => IProcessedStyleSet {\n // We build a trie where each node is a Map. The map entry key represents an argument\n // value, and the entry value is another node (Map). Each node has a `__retval__`\n // property which is used to hold the cached response.\n\n // To derive the response, we can simply ensure the arguments are added or already\n // exist in the trie. At the last node, if there is a `__retval__` we return that. Otherwise\n // we call the `getStyles` api to evaluate, cache on the property, and return that.\n let map: IRecursiveMemoNode = new Map();\n let styleCalcCount = 0;\n let getClassNamesCount = 0;\n let currentMemoizedClassNames = _memoizedClassNames;\n\n const getClassNames = (\n styleFunctionOrObject: IStyleFunctionOrObject | undefined,\n styleProps: TStyleProps = {} as TStyleProps,\n ): IProcessedStyleSet => {\n // If useStaticStyles is true, styleFunctionOrObject returns slot to classname mappings.\n // If there is also no style overrides, we can skip merge styles completely and\n // simply return the result from the style funcion.\n if (\n options.useStaticStyles &&\n typeof styleFunctionOrObject === 'function' &&\n (styleFunctionOrObject as StyleFunction).__noStyleOverride__\n ) {\n return styleFunctionOrObject(styleProps) as IProcessedStyleSet;\n }\n\n getClassNamesCount++;\n let current: Map = map;\n const { theme } = styleProps as any;\n const rtl = theme && theme.rtl !== undefined ? theme.rtl : getRTL();\n\n const disableCaching = options.disableCaching;\n\n // On reset of our stylesheet, reset memoized cache.\n if (currentMemoizedClassNames !== _memoizedClassNames) {\n currentMemoizedClassNames = _memoizedClassNames;\n map = new Map();\n styleCalcCount = 0;\n }\n\n if (!options.disableCaching) {\n current = _traverseMap(map, styleFunctionOrObject as any);\n current = _traverseMap(current, styleProps);\n }\n\n if (disableCaching || !(current as any)[retVal]) {\n if (styleFunctionOrObject === undefined) {\n (current as any)[retVal] = {} as IProcessedStyleSet;\n } else {\n (current as any)[retVal] = mergeCssSets(\n [\n (typeof styleFunctionOrObject === 'function'\n ? styleFunctionOrObject(styleProps)\n : styleFunctionOrObject) as IStyleSet,\n ],\n { rtl: !!rtl, specificityMultiplier: options.useStaticStyles ? DEFAULT_SPECIFICITY_MULTIPLIER : undefined },\n );\n }\n\n if (!disableCaching) {\n styleCalcCount++;\n }\n }\n\n if (styleCalcCount > (options.cacheSize || MAX_CACHE_COUNT)) {\n const win = getWindow() as AppWindow;\n if (win?.FabricConfig?.enableClassNameCacheFullWarning) {\n // eslint-disable-next-line no-console\n console.warn(\n `Styles are being recalculated too frequently. Cache miss rate is ${styleCalcCount}/${getClassNamesCount}.`,\n );\n // eslint-disable-next-line no-console\n console.trace();\n }\n\n map.clear();\n styleCalcCount = 0;\n\n // Mutate the options passed in, that's all we can do.\n options.disableCaching = true;\n }\n\n // Note: the retVal is an attached property on the Map; not a key in the Map. We use this attached property to\n // cache the return value for this branch of the graph.\n return (current as any)[retVal];\n };\n\n return getClassNames;\n}\n\nfunction _traverseEdge(current: Map, value: any): Map {\n value = _normalizeValue(value);\n\n if (!current.has(value)) {\n current.set(value, new Map());\n }\n\n return current.get(value);\n}\n\nfunction _traverseMap(current: Map, inputs: any[] | Object): Map {\n if (typeof inputs === 'function') {\n const cachedInputsFromStyled = (inputs as StyleFunction).__cachedInputs__;\n if (cachedInputsFromStyled) {\n // The styled helper will generate the styles function and will attach the cached\n // inputs (consisting of the default styles, customzied styles, and user provided styles.)\n // These should be used as cache keys for deriving the memoized value.\n for (const input of (inputs as any).__cachedInputs__) {\n current = _traverseEdge(current, input);\n }\n } else {\n current = _traverseEdge(current, inputs);\n }\n } else if (typeof inputs === 'object') {\n for (const propName in inputs) {\n if (inputs.hasOwnProperty(propName)) {\n current = _traverseEdge(current, (inputs as any)[propName]);\n }\n }\n }\n\n return current;\n}\n\nfunction _normalizeValue(value: any): string {\n switch (value) {\n case undefined:\n return '__undefined__';\n case null:\n return '__null__';\n default:\n return value;\n }\n}\n","/*!\n * Copyright (C) Microsoft Corporation. All rights reserved.\n */\nexport var NameKind;\n(function (NameKind) {\n NameKind[NameKind[\"HostSymbol\"] = 0] = \"HostSymbol\";\n NameKind[NameKind[\"Variable\"] = 1] = \"Variable\";\n NameKind[NameKind[\"Function\"] = 2] = \"Function\";\n})(NameKind || (NameKind = {}));\n//# sourceMappingURL=PowerFxSyntaxTypes.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { NameKind } from './PowerFxSyntaxTypes';\n/** Name used to represent our language */\nexport var languageName = 'powerfx';\n/** Creates an entry for our language with the monaco editor */\nexport function ensureLanguageRegistered(monacoParam, syntax) {\n var _this = this;\n var _a;\n if (monacoParam.languages.getLanguages().some(function (language) { return language.id === languageName; })) {\n return;\n }\n monacoParam.languages.register({\n id: languageName,\n });\n function refresh(names) {\n monacoParam.languages.setMonarchTokensProvider(languageName, formulaEditorSyntax(syntax.useSemicolons, names));\n }\n refresh(syntax.highlightedNames);\n (_a = syntax.subscribeToNames) === null || _a === void 0 ? void 0 : _a.call(syntax, refresh);\n var getTokenForPosition = function (position, tokens) {\n for (var i = tokens.length - 1; i >= 0; i--) {\n var token = tokens[i];\n if (token.offset <= position.column) {\n return token;\n }\n }\n return null;\n };\n function isPositionAStringToken(position, model) {\n // Get 0'th element since we're tokenizing one line\n var tokens = monacoParam.editor.tokenize(model.getLineContent(position.lineNumber), languageName)[0];\n var token = getTokenForPosition(position, tokens);\n return !!(token && token.type.indexOf('string') === 0);\n }\n monacoParam.languages.registerCompletionItemProvider(languageName, {\n triggerCharacters: ['.', '!', '(', ',', '{'],\n provideCompletionItems: function (model) {\n var rest = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n return __awaiter(_this, void 0, void 0, function () {\n var completionProvider;\n return __generator(this, function (_a) {\n if (completionProviderMapping.has(model)) {\n completionProvider = completionProviderMapping.get(model);\n return [2 /*return*/, completionProvider.apply(void 0, __spread([model], rest))];\n }\n else {\n return [2 /*return*/, {\n incomplete: false,\n suggestions: [],\n }];\n }\n return [2 /*return*/];\n });\n });\n },\n });\n // Register an auto-fix for fixing case of auto-completion items\n monacoParam.languages.registerOnTypeFormattingEditProvider(languageName, {\n autoFormatTriggerCharacters: ['(', '[', '{', ')', ']', '}', ',', ';', '.'],\n provideOnTypeFormattingEdits: function (model, position) {\n if (!syntax.getNormalizedCompletionLookup) {\n return [];\n }\n // Get the token just before the trigger character\n var word = model.getWordUntilPosition(model.modifyPosition(position, -1));\n // Only normalize words that are part of the auto-completion table,\n // don't auto-format casing within strings\n var normalizedWord = word.word.toLowerCase();\n var normalizedCompletionLookup = syntax.getNormalizedCompletionLookup();\n if (normalizedWord in normalizedCompletionLookup && !isPositionAStringToken(position, model)) {\n return [\n {\n range: {\n startLineNumber: position.lineNumber,\n endLineNumber: position.lineNumber,\n startColumn: word.startColumn,\n endColumn: word.endColumn,\n },\n text: normalizedCompletionLookup[normalizedWord],\n },\n ];\n }\n return [];\n },\n });\n monacoParam.languages.registerSignatureHelpProvider(languageName, {\n signatureHelpTriggerCharacters: ['(', ','],\n signatureHelpRetriggerCharacters: ['(', ','],\n provideSignatureHelp: function (model, position, token, context) {\n if (signatureHelpProviderMapping.has(model)) {\n var signatureHelpProvider = signatureHelpProviderMapping.get(model);\n return signatureHelpProvider(model, position, token, context);\n }\n return {\n value: {\n signatures: [],\n activeSignature: 0,\n activeParameter: 0,\n },\n dispose: function () {\n return;\n },\n };\n },\n });\n monacoParam.languages.registerCodeActionProvider(languageName, {\n provideCodeActions: function (model /** ITextModel */, range /** Range */, context /** CodeActionContext */, token /** CancellationToken */) {\n if (codeActionProviderMapping.has(model)) {\n var codeActionProvider = codeActionProviderMapping.get(model);\n return codeActionProvider(model, range, context, token);\n }\n return {\n actions: [],\n dispose: function () {\n return;\n },\n };\n },\n });\n // Set language configuration to show matching brackets\n monacoParam.languages.setLanguageConfiguration(languageName, {\n surroundingPairs: [\n { open: '{', close: '}' },\n { open: '[', close: ']' },\n { open: '(', close: ')' },\n ],\n brackets: [\n ['{', '}'],\n ['[', ']'],\n ['(', ')'],\n ],\n });\n}\nexport function formulaEditorSyntax(useSemicolons, names) {\n return {\n booleans: ['true', 'false'],\n keywords: ['ThisItem', 'Self', 'Parent'],\n operators: [\n '+',\n '-',\n '*',\n '/',\n '^',\n '%',\n '=',\n '>',\n '>=',\n '<',\n '<=',\n '<>',\n '&',\n '&&',\n '||',\n '!',\n '.',\n '@',\n ';;',\n ],\n hostSymbols: names.filter(function (name) { return name.kind === NameKind.HostSymbol; }).map(function (name) { return name.name; }),\n variables: names.filter(function (name) { return name.kind === NameKind.Variable; }).map(function (name) { return name.name; }),\n functions: names.filter(function (name) { return name.kind === NameKind.Function; }).map(function (name) { return name.name; }),\n // Captures blocks of symbols that are checked for being operators later.\n symbols: /[=>](?!@symbols)/, '@brackets'],\n [\n /@symbols/,\n {\n cases: {\n '@operators': 'operator',\n '@default': '',\n },\n },\n ],\n // numbers\n [useSemicolons ? /\\d*\\,\\d+([eE][\\-+]?\\d+)?/ : /\\d*\\.\\d+([eE][\\-+]?\\d+)?/, 'number.float'],\n [/\\d+/, 'number'],\n // delimiter: after number because of .\\d floats\n [/[;,.]/, 'delimiter'],\n // strings\n [/\"([^\"\\\\]|\\\\.)*$/, 'string.invalid'],\n [/\"/, { token: 'string.quote', bracket: '@open', next: '@string' }],\n [/'([^'\\\\]|\\\\.)*$/, 'unicodeIdentifier.invalid'],\n [/'/, { token: 'unicodeIdentifier.quote', bracket: '@open', next: '@unicodeIdentifier' }],\n // Unknown literals (could be unicode names)\n [\n /.\\S*/,\n {\n cases: {\n '@hostSymbols': 'hostSymbol',\n '@variables': 'variable',\n '@default': 'identifier',\n },\n },\n ],\n ],\n comment: [\n [/[^\\/*]+/, 'comment'],\n [/\\/\\*/, 'comment', '@push'],\n ['\\\\*/', 'comment', '@pop'],\n [/[\\/*]/, 'comment'],\n ],\n string: [\n [/[^\\\\\"]+/, 'string'],\n [/@escapes/, 'string.escape'],\n [/\\\\./, 'string.escape.invalid'],\n [/\"/, { token: 'string.quote', bracket: '@close', next: '@pop' }],\n ],\n unicodeIdentifier: [\n [/[^\\\\']+/, 'unicodeIdentifier'],\n [/@escapes/, 'unicodeIdentifier.escape'],\n [/\\\\./, 'unicodeIdentifier.escape.invalid'],\n [/'/, { token: 'unicodeIdentifier.quote', bracket: '@close', next: '@pop' }],\n ],\n whitespace: [\n [/[ \\t\\r\\n]+/, 'white'],\n [/\\/\\*/, 'comment', '@comment'],\n [/\\/\\/.*$/, 'comment'],\n ],\n },\n };\n}\n/**\n * Because the language is a singleton, but our current language service has a completion provider per editor\n * we need to keep a mapping of models to the completion provider implementation to use\n */\nvar completionProviderMapping = new Map();\nvar signatureHelpProviderMapping = new Map();\nvar codeActionProviderMapping = new Map();\n/** Registers providers to be used for the specified model */\nexport function addProvidersForModel(model, completionProvider, signatureHelpProvider, codeActionProvider) {\n if (completionProviderMapping.has(model)) {\n throw new Error('Completion provider already exists for this model.');\n }\n if (signatureHelpProviderMapping.has(model)) {\n throw new Error('SignatureHelp provider already exists for this model.');\n }\n if (codeActionProviderMapping.has(model)) {\n throw new Error('codeActionProvider provider already exists for this model.');\n }\n completionProviderMapping.set(model, completionProvider);\n signatureHelpProviderMapping.set(model, signatureHelpProvider);\n codeActionProviderMapping.set(model, codeActionProvider);\n return {\n dispose: function () {\n completionProviderMapping.delete(model);\n signatureHelpProviderMapping.delete(model);\n codeActionProviderMapping.delete(model);\n },\n };\n}\n//# sourceMappingURL=PowerFxSyntax.js.map","export var themeName = 'powerfx-theme';\n/** Defines an editor theme to be used for PowerFx and sets it as the active theme. */\nexport function ensureThemeSetup(monacoParam) {\n monacoParam.editor.defineTheme(themeName, {\n base: 'vs',\n inherit: true,\n colors: {},\n rules: [\n { token: 'boolean', foreground: '#795548' },\n { token: 'keyword', foreground: '#B54B8C' },\n { token: 'function', foreground: '#295EA3' },\n { token: 'number', foreground: '#B64900' },\n { token: 'operator', foreground: '#656871' },\n { token: 'hostSymbol', foreground: '#742774', fontStyle: 'italic' },\n { token: 'variable', foreground: '#007C85' },\n ],\n });\n monacoParam.editor.setTheme(themeName);\n}\n//# sourceMappingURL=PowerFxTheme.js.map","/*!\n * Copyright (C) Microsoft Corporation. All rights reserved.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport * as React from 'react';\nimport MonacoEditor from '@monaco-editor/react';\nimport { classNamesFunction } from '@fluentui/react/lib/Utilities';\nimport { CommandName, } from './FormulaEditor.types';\nimport { addProvidersForModel, ensureLanguageRegistered, languageName } from './PowerFxSyntax';\nimport { ensureThemeSetup, themeName } from './PowerFxTheme';\nexport var editorFontFamily = \"'Menlo', 'Consolas', monospace,sans-serif\";\nexport var editorFontSize = 14;\n/** The default option configuration that we use for all the Monaco code editors inside PowerFx. */\nvar defaultEditorOptions = {\n fontSize: editorFontSize,\n lineDecorationsWidth: 4,\n scrollbar: {\n vertical: 'auto',\n verticalScrollbarSize: 8,\n horizontal: 'auto',\n horizontalScrollbarSize: 8,\n },\n // This fixes the first time render bug, and handles additional resizes.\n automaticLayout: true,\n contextmenu: false,\n // Don't show a border above and below the current line in the editor.\n renderLineHighlight: 'none',\n lineNumbers: 'off',\n wordWrap: 'on',\n autoClosingBrackets: 'never',\n quickSuggestions: true,\n scrollBeyondLastLine: false,\n // Don't show the minimap (the scaled down thumbnail view of the code)\n minimap: { enabled: false },\n selectionClipboard: false,\n // Don't add a margin on the left to render special editor symbols\n glyphMargin: false,\n revealHorizontalRightPadding: 24,\n find: {\n seedSearchStringFromSelection: 'never',\n autoFindInSelection: 'never',\n },\n suggestOnTriggerCharacters: true,\n codeLens: false,\n // Don't allow the user to collapse the curly brace sections\n folding: false,\n formatOnType: true,\n fontFamily: editorFontFamily,\n wordBasedSuggestions: false,\n // This option helps to fix some of the overflow issues when using the suggestion widget in grid rows\n // NOTE: This doesn't work when it's hosted inside Fluent Callout control\n // More details in https://github.com/microsoft/monaco-editor/issues/2503\n fixedOverflowWidgets: true,\n};\nvar getClassNames = classNamesFunction();\nvar FormulaEditorBase = /** @class */ (function (_super) {\n __extends(FormulaEditorBase, _super);\n function FormulaEditorBase(props) {\n var _this = _super.call(this, props) || this;\n _this._model = null;\n _this._editor = null;\n /** Manually resetting the editor text on context change calls onChange. We need to ignore the call to onChange in that case. */\n _this._ignoreOnChange = false;\n _this._subscriptions = [];\n _this._keyPressedToLeaveTextArea = false;\n _this._getCurrentCursorPosition = function () {\n var editor = _this._editor;\n var selection = editor.getSelection();\n var startPosition = selection.getStartPosition();\n var endPosition = selection.getEndPosition();\n var cursorStartIndex = _this._model.getOffsetAt(startPosition);\n var cursorEndIndex = _this._model.getOffsetAt(endPosition);\n return {\n position: editor.getPosition(),\n cursorStartIndex: cursorStartIndex,\n cursorEndIndex: cursorEndIndex,\n };\n };\n _this._onEditorDidMount = function (monacoEditor, monacoParam) {\n _this._model = monacoParam.editor.createModel(_this.props.defaultValue);\n monacoEditor.setModel(_this._model);\n _this._editor = monacoEditor;\n ensureLanguageRegistered(monacoParam, _this.props.syntaxParameters);\n ensureThemeSetup(monacoParam);\n _this._registerCommands(monacoParam);\n monacoParam.editor.setModelLanguage(_this._editor.getModel(), languageName);\n addProvidersForModel(_this._model, _this._provideCompletionItems, _this._provideSignatureHelp, _this._provideCodeAction);\n _this._disposeEditorSubscriptions();\n _this._subscriptions.push(monacoEditor.onDidBlurEditorWidget(_this._onBlur));\n _this._subscriptions.push(monacoEditor.onDidFocusEditorWidget(_this._onFocus));\n _this._subscriptions.push(monacoEditor.onDidChangeCursorPosition(_this._onDidChangeCursorPosition));\n _this._subscriptions.push(monacoEditor.onKeyDown(_this._onKeyDown));\n _this._subscriptions.push(monacoEditor.onKeyUp(_this._onKeyUp));\n _this._subscriptions.push(_this._model.onDidChangeContent(_this._onChange));\n _this._subscriptions.push(monacoEditor.onDidChangeCursorSelection(_this._onDidChangeCursorSelection));\n if (_this.props.focusOnMount) {\n monacoEditor.focus();\n // By default the cursor will move to the beginning. This looks bad and is annoying, so move it to the end.\n _this._moveCursorToEnd(_this._editor, _this._model);\n }\n if (_this.props.onEditorDidMount) {\n _this.props.onEditorDidMount(monacoEditor, monacoParam);\n }\n };\n _this._onChange = function (e) {\n if (_this._ignoreOnChange || !_this.props.onChange || !_this._model) {\n return;\n }\n _this.props.onChange(_this._model.getValue(), e);\n };\n _this._onContainerKeyDown = function (event) {\n if ((event.key === 'Enter' || event.key === ' ') &&\n _this._editor &&\n event.target === _this._boundaryRef.current) {\n // When focus is on the boundary allow users enter the editor region.\n _this._keyPressedToLeaveTextArea = false; // since we want to re-enter, we reset this\n _this._editor.focus();\n event.preventDefault();\n event.stopPropagation();\n }\n if (event.key === 'Tab') {\n // If Tab is pressed\n if (_this._keyPressedToLeaveTextArea) {\n // Previous key was Esc to leave the text area\n // Reset\n _this._keyPressedToLeaveTextArea = false;\n event.stopPropagation();\n }\n else if (_this._editor && event.target === _this._boundaryRef.current) {\n // When focus is on the boundary allow users enter the editor region.\n _this._editor.focus();\n event.preventDefault();\n event.stopPropagation();\n }\n }\n if (event.key === 'ArrowUp' && event.target !== _this._boundaryRef.current) {\n // This is being done because of a conflict when the control is used in\n // Fabric Focus Zones that use arrow keys to move focus. If the editor\n // has focus we don't want fabric handling it.\n event.stopPropagation();\n }\n return true;\n };\n _this._provideCompletionItems = function () {\n var rest = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n rest[_i] = arguments[_i];\n }\n return __awaiter(_this, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n if (!this.props.completionProvider) {\n return [2 /*return*/, {\n incomplete: false,\n suggestions: [],\n }];\n }\n return [2 /*return*/, (_a = this.props).completionProvider.apply(_a, __spread(rest))];\n });\n });\n };\n _this._provideSignatureHelp = function () {\n var rest = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n rest[_i] = arguments[_i];\n }\n return __awaiter(_this, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n // todo: test dispose\n if (!this.props.signatureHelpProvider) {\n return [2 /*return*/, {\n value: {\n signatures: [],\n activeSignature: 0,\n activeParameter: 0,\n },\n dispose: function () {\n return;\n },\n }];\n }\n return [2 /*return*/, (_a = this.props).signatureHelpProvider.apply(_a, __spread(rest))];\n });\n });\n };\n _this._provideCodeAction = function () {\n var rest = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n rest[_i] = arguments[_i];\n }\n return __awaiter(_this, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n if (!this.props.codeActionProvider) {\n return [2 /*return*/, {\n actions: [],\n dispose: function () {\n return;\n },\n }];\n }\n return [2 /*return*/, (_a = this.props).codeActionProvider.apply(_a, __spread(rest))];\n });\n });\n };\n _this._onBlur = function () {\n _this.setState({ focused: false });\n if (_this.props.onBlur) {\n var blurValue = '';\n if (_this._editor) {\n blurValue = _this._editor.getValue();\n }\n _this.props.onBlur(blurValue);\n }\n };\n _this._onFocus = function () {\n _this.setState({ focused: true });\n if (_this.props.onFocus) {\n var focusValue = '';\n if (_this._editor) {\n focusValue = _this._editor.getValue();\n }\n _this.props.onFocus(_this._getCurrentCursorPosition(), focusValue);\n }\n };\n _this._onKeyDown = function (event) {\n if (_this._boundaryRef.current &&\n (event.code === 'Escape' || (_this.props.leaveOnEnterKey && event.code === 'Enter' && !event.shiftKey))) {\n _this._boundaryRef.current.focus();\n event.preventDefault();\n event.stopPropagation();\n // record that we want to leave the formula bar\n _this._keyPressedToLeaveTextArea = true;\n _this._preventTextAreaFocus();\n return;\n }\n if (_this.props.onKeyDown) {\n _this.props.onKeyDown(event);\n }\n };\n _this._onKeyUp = function (event) {\n if (_this.props.onKeyUp) {\n _this.props.onKeyUp(event);\n }\n };\n _this._onDidChangeCursorPosition = function (event) {\n // Provide current position and value to the subscriber in order to guarantee\n // that the value they use is valid for the current position if the user is actively typing\n if (_this.props.onDidChangeCursorPosition) {\n _this.props.onDidChangeCursorPosition(_this._getCurrentCursorPosition(), _this._editor.getValue(), event);\n }\n };\n _this._onDidChangeCursorSelection = function (event) {\n // Provide current selection and value to the subscriber in order to guarantee\n // that the value they use is valid for the current selection if the user is actively typing\n if (_this.props.onDidChangeCursorSelection) {\n _this.props.onDidChangeCursorSelection(_this._getCurrentCursorPosition(), _this._editor.getValue(), event);\n }\n };\n _this._disposeEditorSubscriptions = function () {\n _this._subscriptions.forEach(function (element) { return element.dispose(); });\n _this._subscriptions = [];\n };\n _this.state = { focused: false };\n _this._boundaryRef = React.createRef();\n return _this;\n }\n FormulaEditorBase.prototype.render = function () {\n var _a = this.props, defaultValue = _a.defaultValue, width = _a.width, _b = _a.height, height = _b === void 0 ? 30 : _b, locked = _a.locked, className = _a.className, styles = _a.styles, theme = _a.theme, monacoEditorOptions = _a.monacoEditorOptions;\n var focused = this.state.focused;\n var classNames = getClassNames(styles, { className: className, theme: theme, locked: !!locked, focused: focused });\n return (React.createElement(\"div\", { className: classNames.root, onKeyDown: this._onContainerKeyDown, ref: this._boundaryRef, role: \"presentation\", tabIndex: 0 },\n React.createElement(\"div\", { className: classNames.editorBoundary },\n React.createElement(MonacoEditor, { language: languageName, theme: themeName, width: width, height: height, options: __assign(__assign({}, defaultEditorOptions), monacoEditorOptions), defaultValue: defaultValue, onMount: this._onEditorDidMount }))));\n };\n FormulaEditorBase.prototype.componentDidMount = function () {\n this._preventTextAreaFocus();\n };\n FormulaEditorBase.prototype.componentDidUpdate = function (prevProps) {\n // Determine whether the editor value needs to be reset.\n var lockedStateHasChanged = prevProps.locked !== this.props.locked;\n if (lockedStateHasChanged && this._editor) {\n this._editor.updateOptions({\n readOnly: this.props.locked,\n });\n }\n };\n FormulaEditorBase.prototype.componentWillUnmount = function () {\n this._disposeEditorSubscriptions();\n };\n FormulaEditorBase.prototype._preventTextAreaFocus = function () {\n if (this._boundaryRef.current) {\n var monacoInputTextarea = this._boundaryRef.current.querySelector('textarea');\n if (monacoInputTextarea) {\n // The editor MUST be manually focused, or the user will end up in an\n // inescapable element in keyboard navigation.\n monacoInputTextarea.tabIndex = -1;\n }\n }\n };\n FormulaEditorBase.prototype._registerCommands = function (monacoParam) {\n var _this = this;\n monacoParam.editor.registerCommand(CommandName.CodeActionApplied, function (_accessor, args) {\n if (_this.props.onCommandExecuted) {\n _this.props.onCommandExecuted(CommandName.CodeActionApplied, args);\n }\n });\n };\n /**\n * Moves the cursor to the end of the content.\n */\n FormulaEditorBase.prototype._moveCursorToEnd = function (monacoEditor, model) {\n var numberOfLines = model.getLineCount();\n var numberOfColumnsOnLastLine = model.getLineMaxColumn(numberOfLines);\n monacoEditor.setPosition({\n column: numberOfColumnsOnLastLine,\n lineNumber: numberOfLines,\n });\n };\n return FormulaEditorBase;\n}(React.Component));\nexport { FormulaEditorBase };\n//# sourceMappingURL=FormulaEditor.base.js.map","import { extractStyleParts } from './extractStyleParts';\nimport { IStyle, IStyleBaseArray } from './IStyle';\nimport { IStyleOptions } from './IStyleOptions';\nimport { getStyleOptions } from './StyleOptionsState';\nimport { styleToClassName } from './styleToClassName';\n\n/**\n * Concatenation helper, which can merge class names together. Skips over falsey values.\n *\n * @public\n */\nexport function mergeStyles(...args: (IStyle | IStyleBaseArray | false | null | undefined)[]): string {\n return mergeCss(args, getStyleOptions());\n}\n\n/**\n * Concatenation helper, which can merge class names together. Skips over falsey values.\n * Accepts a set of options that will be used when calculating styles.\n *\n * @public\n */\nexport function mergeCss(\n args: (IStyle | IStyleBaseArray | false | null | undefined) | (IStyle | IStyleBaseArray | false | null | undefined)[],\n options?: IStyleOptions,\n): string {\n const styleArgs = args instanceof Array ? args : [args];\n const { classes, objects } = extractStyleParts(styleArgs);\n\n if (objects.length) {\n classes.push(styleToClassName(options || {}, objects));\n }\n\n return classes.join(' ');\n}\n","import { IKeyframes } from './IKeyframes';\nimport { getStyleOptions } from './StyleOptionsState';\nimport { Stylesheet } from './Stylesheet';\nimport { serializeRuleEntries } from './styleToClassName';\n\n/**\n * Registers keyframe definitions.\n *\n * @public\n */\nexport function keyframes(timeline: IKeyframes): string {\n const stylesheet = Stylesheet.getInstance();\n const rulesArray: string[] = [];\n\n for (const prop in timeline) {\n if (timeline.hasOwnProperty(prop)) {\n rulesArray.push(prop, '{', serializeRuleEntries(getStyleOptions(), timeline[prop]), '}');\n }\n }\n const rules = rulesArray.join('');\n\n const className = stylesheet.classNameFromKey(rules);\n\n if (className) {\n return className;\n }\n\n const name = stylesheet.getClassName();\n stylesheet.insertRule(`@keyframes ${name}{${rules}}`, true);\n stylesheet.cacheClassName(name, rules, [], ['keyframes', rules]);\n\n return name;\n}\n","import { keyframes } from '@fluentui/merge-styles';\nimport type { IAnimationStyles, IAnimationVariables } from '../types/IAnimationStyles';\nimport type { IRawStyle } from '@fluentui/merge-styles';\n\n/* Register the keyframes */\n\nconst EASING_FUNCTION_1 = 'cubic-bezier(.1,.9,.2,1)';\nconst EASING_FUNCTION_2 = 'cubic-bezier(.1,.25,.75,.9)';\nconst DURATION_1 = '0.167s';\nconst DURATION_2 = '0.267s';\nconst DURATION_3 = '0.367s';\nconst DURATION_4 = '0.467s';\n\nconst FADE_IN: string = keyframes({\n from: { opacity: 0 },\n to: { opacity: 1 },\n});\n\nconst FADE_OUT: string = keyframes({\n from: { opacity: 1 },\n to: { opacity: 0, visibility: 'hidden' },\n});\n\nconst SLIDE_RIGHT_IN10: string = _createSlideInX(-10);\nconst SLIDE_RIGHT_IN20: string = _createSlideInX(-20);\nconst SLIDE_RIGHT_IN40: string = _createSlideInX(-40);\nconst SLIDE_RIGHT_IN400: string = _createSlideInX(-400);\nconst SLIDE_LEFT_IN10: string = _createSlideInX(10);\nconst SLIDE_LEFT_IN20: string = _createSlideInX(20);\nconst SLIDE_LEFT_IN40: string = _createSlideInX(40);\nconst SLIDE_LEFT_IN400: string = _createSlideInX(400);\nconst SLIDE_UP_IN10: string = _createSlideInY(10);\nconst SLIDE_UP_IN20: string = _createSlideInY(20);\nconst SLIDE_DOWN_IN10: string = _createSlideInY(-10);\nconst SLIDE_DOWN_IN20: string = _createSlideInY(-20);\n\nconst SLIDE_RIGHT_OUT10: string = _createSlideOutX(10);\nconst SLIDE_RIGHT_OUT20: string = _createSlideOutX(20);\nconst SLIDE_RIGHT_OUT40: string = _createSlideOutX(40);\nconst SLIDE_RIGHT_OUT400: string = _createSlideOutX(400);\nconst SLIDE_LEFT_OUT10: string = _createSlideOutX(-10);\nconst SLIDE_LEFT_OUT20: string = _createSlideOutX(-20);\nconst SLIDE_LEFT_OUT40: string = _createSlideOutX(-40);\nconst SLIDE_LEFT_OUT400: string = _createSlideOutX(-400);\nconst SLIDE_UP_OUT10: string = _createSlideOutY(-10);\nconst SLIDE_UP_OUT20: string = _createSlideOutY(-20);\nconst SLIDE_DOWN_OUT10: string = _createSlideOutY(10);\nconst SLIDE_DOWN_OUT20: string = _createSlideOutY(20);\n\nconst SCALE_UP100: string = keyframes({\n from: { transform: 'scale3d(.98,.98,1)' },\n to: { transform: 'scale3d(1,1,1)' },\n});\n\nconst SCALE_DOWN98: string = keyframes({\n from: { transform: 'scale3d(1,1,1)' },\n to: { transform: 'scale3d(.98,.98,1)' },\n});\n\nconst SCALE_DOWN100: string = keyframes({\n from: { transform: 'scale3d(1.03,1.03,1)' },\n to: { transform: 'scale3d(1,1,1)' },\n});\n\nconst SCALE_UP103: string = keyframes({\n from: { transform: 'scale3d(1,1,1)' },\n to: { transform: 'scale3d(1.03,1.03,1)' },\n});\n\nconst ROTATE90: string = keyframes({\n from: { transform: 'rotateZ(0deg)' },\n to: { transform: 'rotateZ(90deg)' },\n});\n\nconst ROTATE_N90: string = keyframes({\n from: { transform: 'rotateZ(0deg)' },\n to: { transform: 'rotateZ(-90deg)' },\n});\n\n/**\n * Exporting raw duraction values and easing functions to be used in custom animations\n */\nexport const AnimationVariables: IAnimationVariables = {\n easeFunction1: EASING_FUNCTION_1,\n easeFunction2: EASING_FUNCTION_2,\n durationValue1: DURATION_1,\n durationValue2: DURATION_2,\n durationValue3: DURATION_3,\n durationValue4: DURATION_4,\n};\n\n/**\n * All Fabric standard animations, exposed as json objects referencing predefined\n * keyframes. These objects can be mixed in with other class definitions.\n */\nexport const AnimationStyles: IAnimationStyles = {\n slideRightIn10: _createAnimation(`${FADE_IN},${SLIDE_RIGHT_IN10}`, DURATION_3, EASING_FUNCTION_1),\n slideRightIn20: _createAnimation(`${FADE_IN},${SLIDE_RIGHT_IN20}`, DURATION_3, EASING_FUNCTION_1),\n slideRightIn40: _createAnimation(`${FADE_IN},${SLIDE_RIGHT_IN40}`, DURATION_3, EASING_FUNCTION_1),\n slideRightIn400: _createAnimation(`${FADE_IN},${SLIDE_RIGHT_IN400}`, DURATION_3, EASING_FUNCTION_1),\n slideLeftIn10: _createAnimation(`${FADE_IN},${SLIDE_LEFT_IN10}`, DURATION_3, EASING_FUNCTION_1),\n slideLeftIn20: _createAnimation(`${FADE_IN},${SLIDE_LEFT_IN20}`, DURATION_3, EASING_FUNCTION_1),\n slideLeftIn40: _createAnimation(`${FADE_IN},${SLIDE_LEFT_IN40}`, DURATION_3, EASING_FUNCTION_1),\n slideLeftIn400: _createAnimation(`${FADE_IN},${SLIDE_LEFT_IN400}`, DURATION_3, EASING_FUNCTION_1),\n slideUpIn10: _createAnimation(`${FADE_IN},${SLIDE_UP_IN10}`, DURATION_3, EASING_FUNCTION_1),\n slideUpIn20: _createAnimation(`${FADE_IN},${SLIDE_UP_IN20}`, DURATION_3, EASING_FUNCTION_1),\n slideDownIn10: _createAnimation(`${FADE_IN},${SLIDE_DOWN_IN10}`, DURATION_3, EASING_FUNCTION_1),\n slideDownIn20: _createAnimation(`${FADE_IN},${SLIDE_DOWN_IN20}`, DURATION_3, EASING_FUNCTION_1),\n\n slideRightOut10: _createAnimation(`${FADE_OUT},${SLIDE_RIGHT_OUT10}`, DURATION_3, EASING_FUNCTION_1),\n slideRightOut20: _createAnimation(`${FADE_OUT},${SLIDE_RIGHT_OUT20}`, DURATION_3, EASING_FUNCTION_1),\n slideRightOut40: _createAnimation(`${FADE_OUT},${SLIDE_RIGHT_OUT40}`, DURATION_3, EASING_FUNCTION_1),\n slideRightOut400: _createAnimation(`${FADE_OUT},${SLIDE_RIGHT_OUT400}`, DURATION_3, EASING_FUNCTION_1),\n slideLeftOut10: _createAnimation(`${FADE_OUT},${SLIDE_LEFT_OUT10}`, DURATION_3, EASING_FUNCTION_1),\n slideLeftOut20: _createAnimation(`${FADE_OUT},${SLIDE_LEFT_OUT20}`, DURATION_3, EASING_FUNCTION_1),\n slideLeftOut40: _createAnimation(`${FADE_OUT},${SLIDE_LEFT_OUT40}`, DURATION_3, EASING_FUNCTION_1),\n slideLeftOut400: _createAnimation(`${FADE_OUT},${SLIDE_LEFT_OUT400}`, DURATION_3, EASING_FUNCTION_1),\n slideUpOut10: _createAnimation(`${FADE_OUT},${SLIDE_UP_OUT10}`, DURATION_3, EASING_FUNCTION_1),\n slideUpOut20: _createAnimation(`${FADE_OUT},${SLIDE_UP_OUT20}`, DURATION_3, EASING_FUNCTION_1),\n slideDownOut10: _createAnimation(`${FADE_OUT},${SLIDE_DOWN_OUT10}`, DURATION_3, EASING_FUNCTION_1),\n slideDownOut20: _createAnimation(`${FADE_OUT},${SLIDE_DOWN_OUT20}`, DURATION_3, EASING_FUNCTION_1),\n\n scaleUpIn100: _createAnimation(`${FADE_IN},${SCALE_UP100}`, DURATION_3, EASING_FUNCTION_1),\n scaleDownIn100: _createAnimation(`${FADE_IN},${SCALE_DOWN100}`, DURATION_3, EASING_FUNCTION_1),\n scaleUpOut103: _createAnimation(`${FADE_OUT},${SCALE_UP103}`, DURATION_1, EASING_FUNCTION_2),\n scaleDownOut98: _createAnimation(`${FADE_OUT},${SCALE_DOWN98}`, DURATION_1, EASING_FUNCTION_2),\n\n fadeIn100: _createAnimation(FADE_IN, DURATION_1, EASING_FUNCTION_2),\n fadeIn200: _createAnimation(FADE_IN, DURATION_2, EASING_FUNCTION_2),\n fadeIn400: _createAnimation(FADE_IN, DURATION_3, EASING_FUNCTION_2),\n fadeIn500: _createAnimation(FADE_IN, DURATION_4, EASING_FUNCTION_2),\n\n fadeOut100: _createAnimation(FADE_OUT, DURATION_1, EASING_FUNCTION_2),\n fadeOut200: _createAnimation(FADE_OUT, DURATION_2, EASING_FUNCTION_2),\n fadeOut400: _createAnimation(FADE_OUT, DURATION_3, EASING_FUNCTION_2),\n fadeOut500: _createAnimation(FADE_OUT, DURATION_4, EASING_FUNCTION_2),\n\n rotate90deg: _createAnimation(ROTATE90, '0.1s', EASING_FUNCTION_2),\n rotateN90deg: _createAnimation(ROTATE_N90, '0.1s', EASING_FUNCTION_2),\n\n // expandCollapse 100/200/400, delay 100/200\n};\n\nfunction _createAnimation(\n animationName: string,\n animationDuration: string,\n animationTimingFunction: string,\n): IRawStyle {\n return {\n animationName,\n animationDuration,\n animationTimingFunction,\n animationFillMode: 'both',\n };\n}\n\nfunction _createSlideInX(fromX: number): string {\n return keyframes({\n from: { transform: `translate3d(${fromX}px,0,0)`, pointerEvents: 'none' },\n to: { transform: `translate3d(0,0,0)`, pointerEvents: 'auto' },\n });\n}\n\nfunction _createSlideInY(fromY: number): string {\n return keyframes({\n from: { transform: `translate3d(0,${fromY}px,0)`, pointerEvents: 'none' },\n to: { transform: `translate3d(0,0,0)`, pointerEvents: 'auto' },\n });\n}\n\nfunction _createSlideOutX(toX: number): string {\n return keyframes({\n from: { transform: `translate3d(0,0,0)` },\n to: { transform: `translate3d(${toX}px,0,0)` },\n });\n}\n\nfunction _createSlideOutY(toY: number): string {\n return keyframes({\n from: { transform: `translate3d(0,0,0)` },\n to: { transform: `translate3d(0,${toY}px,0)` },\n });\n}\n","import { buildClassMap } from '../utilities/index';\nimport { AnimationStyles } from '../styles/index';\nimport type { IAnimationStyles } from '../interfaces/index';\n\n/**\n * {@docCategory AnimationClassNames}\n */\nexport const AnimationClassNames: { [key in keyof IAnimationStyles]?: string } = buildClassMap(AnimationStyles);\n","import type { IFontWeight } from '@fluentui/merge-styles';\n\n// Font face names to be registered.\nexport namespace LocalizedFontNames {\n export const Arabic = 'Segoe UI Web (Arabic)';\n export const Cyrillic = 'Segoe UI Web (Cyrillic)';\n export const EastEuropean = 'Segoe UI Web (East European)';\n export const Greek = 'Segoe UI Web (Greek)';\n export const Hebrew = 'Segoe UI Web (Hebrew)';\n export const Thai = 'Leelawadee UI Web';\n export const Vietnamese = 'Segoe UI Web (Vietnamese)';\n export const WestEuropean = 'Segoe UI Web (West European)';\n export const Selawik = 'Selawik Web';\n export const Armenian = 'Segoe UI Web (Armenian)';\n export const Georgian = 'Segoe UI Web (Georgian)';\n}\n\n// Font families with fallbacks, for the general regions.\nexport namespace LocalizedFontFamilies {\n export const Arabic = `'${LocalizedFontNames.Arabic}'`;\n export const ChineseSimplified = `'Microsoft Yahei UI', Verdana, Simsun`;\n export const ChineseTraditional = `'Microsoft Jhenghei UI', Pmingliu`;\n export const Cyrillic = `'${LocalizedFontNames.Cyrillic}'`;\n export const EastEuropean = `'${LocalizedFontNames.EastEuropean}'`;\n export const Greek = `'${LocalizedFontNames.Greek}'`;\n export const Hebrew = `'${LocalizedFontNames.Hebrew}'`;\n export const Hindi = `'Nirmala UI'`;\n export const Japanese = `'Yu Gothic UI', 'Meiryo UI', Meiryo, 'MS Pgothic', Osaka`;\n export const Korean = `'Malgun Gothic', Gulim`;\n export const Selawik = `'${LocalizedFontNames.Selawik}'`;\n export const Thai = `'Leelawadee UI Web', 'Kmer UI'`;\n export const Vietnamese = `'${LocalizedFontNames.Vietnamese}'`;\n export const WestEuropean = `'${LocalizedFontNames.WestEuropean}'`;\n export const Armenian = `'${LocalizedFontNames.Armenian}'`;\n export const Georgian = `'${LocalizedFontNames.Georgian}'`;\n}\n\n// Standard font sizes.\nexport namespace FontSizes {\n export const size10 = '10px';\n export const size12 = '12px';\n export const size14 = '14px';\n export const size16 = '16px';\n export const size18 = '18px';\n export const size20 = '20px';\n export const size24 = '24px';\n export const size28 = '28px';\n export const size32 = '32px';\n export const size42 = '42px';\n export const size68 = '68px';\n\n export const mini: string = '10px';\n export const xSmall: string = '10px';\n export const small: string = '12px';\n export const smallPlus: string = '12px';\n export const medium: string = '14px';\n export const mediumPlus: string = '16px';\n export const icon: string = '16px';\n export const large: string = '18px';\n export const xLarge: string = '20px';\n export const xLargePlus: string = '24px';\n export const xxLarge: string = '28px';\n export const xxLargePlus: string = '32px';\n export const superLarge: string = '42px';\n export const mega: string = '68px';\n}\n\n// Standard font weights.\nexport namespace FontWeights {\n export const light: IFontWeight = 100;\n export const semilight: IFontWeight = 300;\n export const regular: IFontWeight = 400;\n export const semibold: IFontWeight = 600;\n export const bold: IFontWeight = 700;\n}\n\n// Standard Icon Sizes.\nexport namespace IconFontSizes {\n export const xSmall: string = '10px';\n export const small: string = '12px';\n export const medium: string = '16px';\n export const large: string = '20px';\n}\n","import { mergeStyles } from '../MergeStyles';\n\n/**\n * Builds a class names object from a given map.\n *\n * @param styles - Map of unprocessed styles.\n * @returns Map of property name to class name.\n */\nexport function buildClassMap(styles: T): { [key in keyof T]?: string } {\n let classes: { [key in keyof T]?: string } = {};\n\n for (let styleName in styles) {\n if (styles.hasOwnProperty(styleName)) {\n let className: string;\n\n Object.defineProperty(classes, styleName, {\n get: (): string => {\n if (className === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n className = mergeStyles(styles[styleName] as any).toString();\n }\n return className;\n },\n enumerable: true,\n configurable: true,\n });\n }\n }\n\n return classes;\n}\n","import type { IRawStyle } from '../MergeStyles';\n\nexport const HighContrastSelector = '@media screen and (-ms-high-contrast: active), (forced-colors: active)';\nexport const HighContrastSelectorWhite =\n '@media screen and (-ms-high-contrast: black-on-white), (forced-colors: black-on-white)';\nexport const HighContrastSelectorBlack =\n '@media screen and (-ms-high-contrast: white-on-black), (forced-colors: white-on-black)';\nexport const EdgeChromiumHighContrastSelector = '@media screen and (forced-colors: active)';\n\nexport const ScreenWidthMinSmall = 320;\nexport const ScreenWidthMinMedium = 480;\nexport const ScreenWidthMinLarge = 640;\nexport const ScreenWidthMinXLarge = 1024;\nexport const ScreenWidthMinXXLarge = 1366;\nexport const ScreenWidthMinXXXLarge = 1920;\nexport const ScreenWidthMaxSmall = ScreenWidthMinMedium - 1;\nexport const ScreenWidthMaxMedium = ScreenWidthMinLarge - 1;\nexport const ScreenWidthMaxLarge = ScreenWidthMinXLarge - 1;\nexport const ScreenWidthMaxXLarge = ScreenWidthMinXXLarge - 1;\nexport const ScreenWidthMaxXXLarge = ScreenWidthMinXXXLarge - 1;\n\nexport const ScreenWidthMinUhfMobile = 768;\n\nexport function getScreenSelector(min: number | undefined, max: number | undefined): string {\n const minSelector = typeof min === 'number' ? ` and (min-width: ${min}px)` : '';\n const maxSelector = typeof max === 'number' ? ` and (max-width: ${max}px)` : '';\n return `@media only screen${minSelector}${maxSelector}`;\n}\n\n/**\n * The style which turns off high contrast adjustment in browsers.\n */\nexport function getHighContrastNoAdjustStyle(): IRawStyle {\n return {\n forcedColorAdjust: 'none',\n MsHighContrastAdjust: 'none',\n };\n}\n\n/**\n * The style which turns off high contrast adjustment in (only) Edge Chromium browser.\n * @deprecated Use `getHighContrastNoAdjustStyle`\n */\nexport function getEdgeChromiumNoHighContrastAdjustSelector(): { [EdgeChromiumHighContrastSelector]: IRawStyle } {\n return {\n [EdgeChromiumHighContrastSelector]: {\n forcedColorAdjust: 'none',\n },\n };\n}\n","import { getWindow } from './dom/getWindow';\nexport const IsFocusVisibleClassName = 'ms-Fabric--isFocusVisible';\nexport const IsFocusHiddenClassName = 'ms-Fabric--isFocusHidden';\n\n/**\n * Sets the visibility of focus styling.\n *\n * By default, focus styles (the box surrounding a focused Button, for example) only show up when navigational\n * keypresses occur (through Tab, arrows, PgUp/PgDn, Home and End), and are hidden when mouse interactions occur.\n * This API provides an imperative way to turn them on/off.\n *\n * A use case might be when you have a keypress like ctrl-f6 navigate to a particular region on the page,\n * and want focus to show up.\n *\n * @param enabled - whether to remove or add focus\n * @param target - optional target\n */\nexport function setFocusVisibility(enabled: boolean, target?: Element): void {\n const win = target ? getWindow(target) : getWindow();\n\n if (win) {\n const { classList } = win.document.body;\n classList.add(enabled ? IsFocusVisibleClassName : IsFocusHiddenClassName);\n classList.remove(enabled ? IsFocusHiddenClassName : IsFocusVisibleClassName);\n }\n}\n","export namespace ZIndexes {\n export const Nav: number = 1;\n /**\n * @deprecated Do not use\n */\n export const ScrollablePane: number = 1;\n export const FocusStyle: number = 1;\n export const Coachmark: number = 1000;\n export const Layer: number = 1000000;\n export const KeytipLayer: number = 1000001;\n}\n","import { HighContrastSelector } from './CommonStyles';\nimport { IsFocusVisibleClassName } from '@fluentui/utilities';\nimport { ZIndexes } from './zIndexes';\nimport type { IRawStyle } from '@fluentui/merge-styles';\nimport type { IGetFocusStylesOptions, ITheme } from '../interfaces/index';\n\n/**\n * Generates a focus style which can be used to define an :after focus border.\n *\n * @param theme - The theme object to use.\n * @param options - Options to customize the focus border.\n * @returns The style object.\n */\nexport function getFocusStyle(theme: ITheme, options?: IGetFocusStylesOptions): IRawStyle;\n/**\n * Generates a focus style which can be used to define an :after focus border.\n *\n * @param theme - The theme object to use.\n * @param inset - The number of pixels to inset the border.\n * @param position - The positioning applied to the container. Must\n * be 'relative' or 'absolute' so that the focus border can live around it.\n * @param highContrastStyle - Style for high contrast mode.\n * @param borderColor - Color of the border.\n * @param outlineColor - Color of the outline.\n * @param isFocusedOnly - If the styles should apply on focus or not.\n * @returns The style object.\n * @deprecated Use the object parameter version instead.\n */\nexport function getFocusStyle(\n theme: ITheme,\n inset?: number,\n position?: 'relative' | 'absolute',\n highContrastStyle?: IRawStyle | undefined,\n borderColor?: string,\n outlineColor?: string,\n isFocusedOnly?: boolean,\n): IRawStyle;\nexport function getFocusStyle(\n theme: ITheme,\n insetOrOptions?: number | IGetFocusStylesOptions,\n position?: 'relative' | 'absolute',\n highContrastStyle?: IRawStyle,\n borderColor?: string,\n outlineColor?: string,\n isFocusedOnly?: boolean,\n): IRawStyle {\n if (typeof insetOrOptions === 'number' || !insetOrOptions) {\n return _getFocusStyleInternal(theme, {\n inset: insetOrOptions,\n position,\n highContrastStyle,\n borderColor,\n outlineColor,\n isFocusedOnly,\n });\n } else {\n return _getFocusStyleInternal(theme, insetOrOptions);\n }\n}\n\nfunction _getFocusStyleInternal(theme: ITheme, options: IGetFocusStylesOptions = {}): IRawStyle {\n const {\n inset = 0,\n width = 1,\n position = 'relative',\n highContrastStyle,\n borderColor = theme.palette.white,\n outlineColor = theme.palette.neutralSecondary,\n isFocusedOnly = true,\n } = options;\n\n return {\n // Clear browser-specific focus styles and use 'transparent' as placeholder for focus style.\n outline: 'transparent',\n // Requirement because pseudo-element is absolutely positioned.\n position,\n\n selectors: {\n // Clear the focus border in Firefox.\n // Reference: http://stackoverflow.com/a/199319/1436671\n '::-moz-focus-inner': {\n border: '0',\n },\n\n // When the element that uses this mixin is in a :focus state, add a pseudo-element to\n // create a border.\n [`.${IsFocusVisibleClassName} &${isFocusedOnly ? ':focus' : ''}:after`]: {\n content: '\"\"',\n position: 'absolute',\n left: inset + 1,\n top: inset + 1,\n bottom: inset + 1,\n right: inset + 1,\n border: `${width}px solid ${borderColor}`,\n outline: `${width}px solid ${outlineColor}`,\n zIndex: ZIndexes.FocusStyle,\n selectors: {\n [HighContrastSelector]: highContrastStyle,\n },\n },\n },\n };\n}\n\n/**\n * Generates style to clear browser specific focus styles.\n */\nexport function focusClear(): IRawStyle {\n return {\n selectors: {\n '&::-moz-focus-inner': {\n // Clear the focus border in Firefox. Reference: http://stackoverflow.com/a/199319/1436671\n border: 0,\n },\n '&': {\n // Clear browser specific focus styles and use transparent as placeholder for focus style\n outline: 'transparent',\n },\n },\n };\n}\n\n/**\n * Generates a style which can be used to set a border on focus.\n *\n * @param theme - The theme object to use.\n * @param inset - The number of pixels to inset the border (default 0)\n * @param width - The border width in pixels (default 1)\n * @param color - Color of the outline (default `theme.palette.neutralSecondary`)\n * @returns The style object.\n */\nexport function getFocusOutlineStyle(theme: ITheme, inset: number = 0, width: number = 1, color?: string): IRawStyle {\n return {\n selectors: {\n [`:global(${IsFocusVisibleClassName}) &:focus`]: {\n outline: `${width} solid ${color || theme.palette.neutralSecondary}`,\n outlineOffset: `${-inset}px`,\n },\n },\n };\n}\n\n/**\n * Generates text input border styles on focus.\n *\n * @param borderColor - Color of the border.\n * @param borderRadius - Radius of the border.\n * @param borderType - Type of the border.\n * @param borderPosition - Position of the border relative to the input element (default to -1\n * as it's the most common border width of the input element)\n * @returns The style object.\n */\nexport const getInputFocusStyle = (\n borderColor: string,\n borderRadius: string | number,\n borderType: 'border' | 'borderBottom' = 'border',\n borderPosition: number = -1,\n): IRawStyle => {\n const isBorderBottom = borderType === 'borderBottom';\n\n return {\n borderColor,\n selectors: {\n ':after': {\n pointerEvents: 'none',\n content: \"''\",\n position: 'absolute',\n left: isBorderBottom ? 0 : borderPosition,\n top: borderPosition,\n bottom: borderPosition,\n right: isBorderBottom ? 0 : borderPosition,\n [borderType]: `2px solid ${borderColor}`,\n borderRadius,\n width: borderType === 'borderBottom' ? '100%' : undefined,\n selectors: {\n [HighContrastSelector]: {\n [borderType === 'border' ? 'borderColor' : 'borderBottomColor']: 'Highlight',\n },\n },\n },\n },\n };\n};\n","import type { IRawStyle } from '@fluentui/merge-styles';\n\nexport const hiddenContentStyle: IRawStyle = {\n position: 'absolute',\n width: 1,\n height: 1,\n margin: -1,\n padding: 0,\n border: 0,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n};\n","import { Stylesheet } from '@fluentui/merge-styles';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\ndeclare class WeakMap {\n public get(key: any): any;\n public set(key: any, value: any): void;\n public has(key: any): boolean;\n}\n\nlet _initializedStylesheetResets = false;\nlet _resetCounter = 0;\nconst _emptyObject = { empty: true };\nconst _dictionary: any = {};\nlet _weakMap = typeof WeakMap === 'undefined' ? null : WeakMap;\n\ninterface IMemoizeNode {\n map: WeakMap | null;\n value?: any;\n}\n\n/**\n * Test utility for providing a custom weakmap.\n *\n * @internal\n * */\nexport function setMemoizeWeakMap(weakMap: any): void {\n _weakMap = weakMap;\n}\n\n/**\n * Reset memoizations.\n */\nexport function resetMemoizations(): void {\n _resetCounter++;\n}\n\n/**\n * Memoize decorator to be used on class methods. WARNING: the `this` reference\n * will be inaccessible within a memoized method, given that a cached method's `this`\n * would not be instance-specific.\n *\n * @public\n */\nexport function memoize(\n _target: any,\n _key: string,\n descriptor: TypedPropertyDescriptor,\n): {\n configurable: boolean;\n get(): T;\n} {\n // We bind to \"null\" to prevent people from inadvertently pulling values from \"this\",\n // rather than passing them in as input values which can be memoized.\n let fn = memoizeFunction(descriptor.value && descriptor.value.bind(null));\n\n return {\n configurable: true,\n get(): T {\n return fn;\n },\n };\n}\n\n/**\n * Memoizes a function; when you pass in the same parameters multiple times, it returns a cached result.\n * Be careful when passing in objects, you need to pass in the same INSTANCE for caching to work. Otherwise\n * it will grow the cache unnecessarily. Also avoid using default values that evaluate functions; passing in\n * undefined for a value and relying on a default function will execute it the first time, but will not\n * re-evaluate subsequent times which may have been unexpected.\n *\n * By default, the cache will reset after 100 permutations, to avoid abuse cases where the function is\n * unintendedly called with unique objects. Without a reset, the cache could grow infinitely, so we safeguard\n * by resetting. To override this behavior, pass a value of 0 to the maxCacheSize parameter.\n *\n * @public\n * @param cb - The function to memoize.\n * @param maxCacheSize - Max results to cache. If the cache exceeds this value, it will reset on the next call.\n * @param ignoreNullOrUndefinedResult - Flag to decide whether to cache callback result if it is undefined/null.\n * If the flag is set to true, the callback result is recomputed every time till the callback result is\n * not undefined/null for the first time, and then the non-undefined/null version gets cached.\n * @returns A memoized version of the function.\n */\nexport function memoizeFunction RetType, RetType>(\n cb: T,\n maxCacheSize: number = 100,\n ignoreNullOrUndefinedResult: boolean = false,\n): T {\n // Avoid breaking scenarios which don't have weak map.\n if (!_weakMap) {\n return cb;\n }\n\n if (!_initializedStylesheetResets) {\n const stylesheet = Stylesheet.getInstance();\n\n if (stylesheet && (stylesheet as { onReset?: unknown }).onReset) {\n Stylesheet.getInstance().onReset(resetMemoizations);\n }\n _initializedStylesheetResets = true;\n }\n\n let rootNode: any;\n let cacheSize = 0;\n let localResetCounter = _resetCounter;\n\n return function memoizedFunction(...args: any[]): RetType {\n let currentNode: any = rootNode;\n\n if (\n rootNode === undefined ||\n localResetCounter !== _resetCounter ||\n (maxCacheSize > 0 && cacheSize > maxCacheSize)\n ) {\n rootNode = _createNode();\n cacheSize = 0;\n localResetCounter = _resetCounter;\n }\n\n currentNode = rootNode;\n\n // Traverse the tree until we find the match.\n for (let i = 0; i < args.length; i++) {\n let arg = _normalizeArg(args[i]);\n\n if (!currentNode.map.has(arg)) {\n currentNode.map.set(arg, _createNode());\n }\n\n currentNode = currentNode.map.get(arg);\n }\n\n if (!currentNode.hasOwnProperty('value')) {\n currentNode.value = cb(...args);\n cacheSize++;\n }\n\n if (ignoreNullOrUndefinedResult && (currentNode.value === null || currentNode.value === undefined)) {\n currentNode.value = cb(...args);\n }\n\n return currentNode.value;\n } as any;\n}\n\n/**\n * Creates a memoizer for a single-value function, backed by a WeakMap.\n * With a WeakMap, the memoized values are only kept as long as the source objects,\n * ensuring that there is no memory leak.\n *\n * This function assumes that the input values passed to the wrapped function will be\n * `function` or `object` types. To memoize functions which accept other inputs, use\n * `memoizeFunction`, which memoizes against arbitrary inputs using a lookup cache.\n *\n * @public\n */\nexport function createMemoizer any>(getValue: F): F {\n if (!_weakMap) {\n // Without a `WeakMap` implementation, memoization is not possible.\n return getValue;\n }\n\n const cache = new _weakMap();\n\n function memoizedGetValue(input: any): any {\n if (!input || (typeof input !== 'function' && typeof input !== 'object')) {\n // A WeakMap can only be used to test against reference values, i.e. 'function' and 'object'.\n // All other inputs cannot be memoized against in this manner.\n return getValue(input);\n }\n\n if (cache.has(input)) {\n return cache.get(input)!;\n }\n\n const value = getValue(input);\n\n cache.set(input, value);\n\n return value;\n }\n\n return memoizedGetValue as F;\n}\n\nfunction _normalizeArg(val: null | undefined): { empty: boolean } | any;\nfunction _normalizeArg(val: object): any;\nfunction _normalizeArg(val: any): any {\n if (!val) {\n return _emptyObject;\n } else if (typeof val === 'object' || typeof val === 'function') {\n return val;\n } else if (!_dictionary[val]) {\n _dictionary[val] = { val };\n }\n\n return _dictionary[val];\n}\n\nfunction _createNode(): IMemoizeNode {\n return {\n map: _weakMap ? new _weakMap() : null,\n };\n}\n","import { Stylesheet } from '@fluentui/merge-styles';\nimport { memoizeFunction } from '@fluentui/utilities';\nimport type { ITheme } from '../interfaces/index';\n\nexport type GlobalClassNames = Record;\n\n/**\n * Internal memoized function which simply takes in the class map and the\n * disable boolean. These immutable values can be memoized.\n */\nconst _getGlobalClassNames = memoizeFunction(\n (classNames: GlobalClassNames, disableGlobalClassNames?: boolean): GlobalClassNames => {\n const styleSheet = Stylesheet.getInstance();\n\n if (disableGlobalClassNames) {\n // disable global classnames\n return (Object.keys(classNames) as (keyof T)[]).reduce((acc, className) => {\n acc[className] = styleSheet.getClassName(classNames[className]);\n return acc;\n }, {} as GlobalClassNames);\n }\n\n // use global classnames\n return classNames;\n },\n);\n\n/**\n * Checks for the `disableGlobalClassNames` property on the `theme` to determine if it should return `classNames`\n * Note that calls to this function are memoized.\n *\n * @param classNames - The collection of global class names that apply when the flag is false. Make sure to pass in\n * the same instance on each call to benefit from memoization.\n * @param theme - The theme to check the flag on\n * @param disableGlobalClassNames - Optional. Explicitly opt in/out of disabling global classnames. Defaults to false.\n */\nexport function getGlobalClassNames(\n classNames: GlobalClassNames,\n theme: ITheme,\n disableGlobalClassNames?: boolean,\n): GlobalClassNames {\n return _getGlobalClassNames(\n classNames,\n disableGlobalClassNames !== undefined ? disableGlobalClassNames : theme.disableGlobalClassNames,\n );\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","export namespace Depths {\n export const depth0 = '0 0 0 0 transparent';\n export const depth4 = '0 1.6px 3.6px 0 rgba(0, 0, 0, 0.132), 0 0.3px 0.9px 0 rgba(0, 0, 0, 0.108)';\n export const depth8 = '0 3.2px 7.2px 0 rgba(0, 0, 0, 0.132), 0 0.6px 1.8px 0 rgba(0, 0, 0, 0.108)';\n export const depth16 = '0 6.4px 14.4px 0 rgba(0, 0, 0, 0.132), 0 1.2px 3.6px 0 rgba(0, 0, 0, 0.108)';\n export const depth64 = '0 25.6px 57.6px 0 rgba(0, 0, 0, 0.22), 0 4.8px 14.4px 0 rgba(0, 0, 0, 0.18)';\n}\n","import type { IPalette } from '../types/index';\n\n// When adding or removing a color, make sure you keep this consistent with IColorClassNames\n// by adding the color variants.\nexport const DefaultPalette: IPalette = {\n themeDarker: '#004578',\n themeDark: '#005a9e',\n themeDarkAlt: '#106ebe',\n themePrimary: '#0078d4',\n themeSecondary: '#2b88d8',\n themeTertiary: '#71afe5',\n themeLight: '#c7e0f4',\n themeLighter: '#deecf9',\n themeLighterAlt: '#eff6fc',\n black: '#000000',\n blackTranslucent40: 'rgba(0,0,0,.4)',\n neutralDark: '#201f1e',\n neutralPrimary: '#323130',\n neutralPrimaryAlt: '#3b3a39',\n neutralSecondary: '#605e5c',\n neutralSecondaryAlt: '#8a8886',\n neutralTertiary: '#a19f9d',\n neutralTertiaryAlt: '#c8c6c4',\n neutralQuaternary: '#d2d0ce',\n neutralQuaternaryAlt: '#e1dfdd',\n neutralLight: '#edebe9',\n neutralLighter: '#f3f2f1',\n neutralLighterAlt: '#faf9f8',\n accent: '#0078d4',\n white: '#ffffff',\n whiteTranslucent40: 'rgba(255,255,255,.4)',\n yellowDark: '#d29200',\n yellow: '#ffb900',\n yellowLight: '#fff100',\n orange: '#d83b01',\n orangeLight: '#ea4300',\n orangeLighter: '#ff8c00',\n redDark: '#a4262c',\n red: '#e81123',\n magentaDark: '#5c005c',\n magenta: '#b4009e',\n magentaLight: '#e3008c',\n purpleDark: '#32145a',\n purple: '#5c2d91',\n purpleLight: '#b4a0ff',\n blueDark: '#002050',\n blueMid: '#00188f',\n blue: '#0078d4',\n blueLight: '#00bcf2',\n tealDark: '#004b50',\n teal: '#008272',\n tealLight: '#00b294',\n greenDark: '#004b1c',\n green: '#107c10',\n greenLight: '#bad80a',\n};\n","import { Depths } from './FluentDepths';\nimport type { IEffects } from '../types/index';\n\nexport const DefaultEffects: IEffects = {\n elevation4: Depths.depth4,\n elevation8: Depths.depth8,\n elevation16: Depths.depth16,\n elevation64: Depths.depth64,\n\n roundedCorner2: '2px',\n roundedCorner4: '4px',\n roundedCorner6: '6px',\n};\n","import { IFontFace } from './IRawStyleBase';\nimport { getStyleOptions } from './StyleOptionsState';\nimport { Stylesheet } from './Stylesheet';\nimport { serializeRuleEntries } from './styleToClassName';\n\n/**\n * Registers a font face.\n * @public\n */\nexport function fontFace(font: IFontFace): void {\n const stylesheet = Stylesheet.getInstance();\n\n const rule = serializeRuleEntries(getStyleOptions(), font as {});\n\n const className = stylesheet.classNameFromKey(rule);\n\n if (className) {\n return;\n }\n\n const name = stylesheet.getClassName();\n stylesheet.insertRule(`@font-face{${rule}}`, true);\n stylesheet.cacheClassName(name, rule, [], ['font-face', rule]);\n}\n","import { FontSizes, FontWeights, LocalizedFontFamilies, LocalizedFontNames } from './FluentFonts';\nimport type { IFontWeight, IRawStyle } from '@fluentui/merge-styles';\nimport type { IFontStyles } from '../types/IFontStyles';\n\n// Fallback fonts, if specified system or web fonts are unavailable.\nconst FontFamilyFallbacks = `'Segoe UI', -apple-system, BlinkMacSystemFont, 'Roboto', 'Helvetica Neue', sans-serif`;\n\n// By default, we favor system fonts for the default.\n// All localized fonts use a web font and never use the system font.\nconst defaultFontFamily = `'Segoe UI', '${LocalizedFontNames.WestEuropean}'`;\n\n// Mapping of language prefix to to font family.\nconst LanguageToFontMap = {\n ar: LocalizedFontFamilies.Arabic,\n bg: LocalizedFontFamilies.Cyrillic,\n cs: LocalizedFontFamilies.EastEuropean,\n el: LocalizedFontFamilies.Greek,\n et: LocalizedFontFamilies.EastEuropean,\n he: LocalizedFontFamilies.Hebrew,\n hi: LocalizedFontFamilies.Hindi,\n hr: LocalizedFontFamilies.EastEuropean,\n hu: LocalizedFontFamilies.EastEuropean,\n ja: LocalizedFontFamilies.Japanese,\n kk: LocalizedFontFamilies.EastEuropean,\n ko: LocalizedFontFamilies.Korean,\n lt: LocalizedFontFamilies.EastEuropean,\n lv: LocalizedFontFamilies.EastEuropean,\n pl: LocalizedFontFamilies.EastEuropean,\n ru: LocalizedFontFamilies.Cyrillic,\n sk: LocalizedFontFamilies.EastEuropean,\n 'sr-latn': LocalizedFontFamilies.EastEuropean,\n th: LocalizedFontFamilies.Thai,\n tr: LocalizedFontFamilies.EastEuropean,\n uk: LocalizedFontFamilies.Cyrillic,\n vi: LocalizedFontFamilies.Vietnamese,\n 'zh-hans': LocalizedFontFamilies.ChineseSimplified,\n 'zh-hant': LocalizedFontFamilies.ChineseTraditional,\n hy: LocalizedFontFamilies.Armenian,\n ka: LocalizedFontFamilies.Georgian,\n};\n\nfunction _fontFamilyWithFallbacks(fontFamily: string): string {\n return `${fontFamily}, ${FontFamilyFallbacks}`;\n}\n\n/**\n * If there is a localized font for this language, return that.\n * Returns undefined if there is no localized font for that language.\n */\nfunction _getLocalizedFontFamily(language: string | null): string {\n for (const lang in LanguageToFontMap) {\n if (LanguageToFontMap.hasOwnProperty(lang) && language && lang.indexOf(language) === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (LanguageToFontMap as any)[lang];\n }\n }\n\n return defaultFontFamily;\n}\n\nfunction _createFont(size: string, weight: IFontWeight, fontFamily: string): IRawStyle {\n return {\n fontFamily: fontFamily,\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontSize: size,\n fontWeight: weight,\n };\n}\n\nexport function createFontStyles(localeCode: string | null): IFontStyles {\n const localizedFont = _getLocalizedFontFamily(localeCode);\n const fontFamilyWithFallback = _fontFamilyWithFallbacks(localizedFont);\n\n const fontStyles = {\n tiny: _createFont(FontSizes.mini, FontWeights.regular, fontFamilyWithFallback),\n xSmall: _createFont(FontSizes.xSmall, FontWeights.regular, fontFamilyWithFallback),\n small: _createFont(FontSizes.small, FontWeights.regular, fontFamilyWithFallback),\n smallPlus: _createFont(FontSizes.smallPlus, FontWeights.regular, fontFamilyWithFallback),\n medium: _createFont(FontSizes.medium, FontWeights.regular, fontFamilyWithFallback),\n mediumPlus: _createFont(FontSizes.mediumPlus, FontWeights.regular, fontFamilyWithFallback),\n large: _createFont(FontSizes.large, FontWeights.regular, fontFamilyWithFallback),\n xLarge: _createFont(FontSizes.xLarge, FontWeights.semibold, fontFamilyWithFallback),\n xLargePlus: _createFont(FontSizes.xLargePlus, FontWeights.semibold, fontFamilyWithFallback),\n xxLarge: _createFont(FontSizes.xxLarge, FontWeights.semibold, fontFamilyWithFallback),\n xxLargePlus: _createFont(FontSizes.xxLargePlus, FontWeights.semibold, fontFamilyWithFallback),\n superLarge: _createFont(FontSizes.superLarge, FontWeights.semibold, fontFamilyWithFallback),\n mega: _createFont(FontSizes.mega, FontWeights.semibold, fontFamilyWithFallback),\n };\n\n return fontStyles;\n}\n","import { getDocument } from './dom/getDocument';\nimport * as localStorage from './localStorage';\nimport * as sessionStorage from './sessionStorage';\n\n// Default to undefined so that we initialize on first read.\nlet _language: string | null;\n\nconst STORAGE_KEY = 'language';\n\n/**\n * Gets the language set for the page.\n * @param persistenceType - Where to persist the value. Default is `sessionStorage` if available.\n */\nexport function getLanguage(\n persistenceType: 'localStorage' | 'sessionStorage' | 'none' = 'sessionStorage',\n): string | null {\n if (_language === undefined) {\n let doc = getDocument();\n const savedLanguage =\n persistenceType === 'localStorage'\n ? localStorage.getItem(STORAGE_KEY)\n : persistenceType === 'sessionStorage'\n ? sessionStorage.getItem(STORAGE_KEY)\n : undefined;\n\n if (savedLanguage) {\n _language = savedLanguage;\n }\n\n if (_language === undefined && doc) {\n _language = doc.documentElement.getAttribute('lang');\n }\n\n if (_language === undefined) {\n _language = 'en';\n }\n }\n\n return _language;\n}\n\n/**\n * Sets the language for the page (by adjusting the lang attribute of the html element).\n * @param language - Language to set.\n * @param persistenceType - Where to persist the value. Default is `sessionStorage` if available.\n */\nexport function setLanguage(language: string, persistenceType?: 'localStorage' | 'sessionStorage' | 'none'): void;\n/**\n * Sets the language for the page (by adjusting the lang attribute of the html element).\n * @deprecated Use string parameter version.\n * @param language - Language to set.\n * @param avoidPersisting - If true, don't store the value.\n */\nexport function setLanguage(language: string, avoidPersisting?: boolean): void;\nexport function setLanguage(\n language: string,\n persistenceParam?: 'localStorage' | 'sessionStorage' | 'none' | boolean,\n): void {\n let doc = getDocument();\n\n if (doc) {\n doc.documentElement.setAttribute('lang', language);\n }\n\n const persistenceType = persistenceParam === true ? 'none' : !persistenceParam ? 'sessionStorage' : persistenceParam;\n if (persistenceType === 'localStorage') {\n localStorage.setItem(STORAGE_KEY, language);\n } else if (persistenceType === 'sessionStorage') {\n sessionStorage.setItem(STORAGE_KEY, language);\n }\n\n _language = language;\n}\n","import { fontFace } from '@fluentui/merge-styles';\nimport { FontWeights, LocalizedFontFamilies, LocalizedFontNames } from './FluentFonts';\nimport { createFontStyles } from './createFontStyles';\nimport { getLanguage, getWindow } from '@fluentui/utilities';\nimport type { IFontWeight } from '@fluentui/merge-styles';\nimport type { IFontStyles } from '../types/IFontStyles';\nimport type { IFabricConfig } from '../types/IFabricConfig';\n\n// Default urls.\nconst DefaultBaseUrl = 'https://static2.sharepointonline.com/files/fabric/assets';\n\n// Standard font styling.\nexport const DefaultFontStyles: IFontStyles = createFontStyles(getLanguage());\n\nfunction _registerFontFace(fontFamily: string, url: string, fontWeight?: IFontWeight, localFontName?: string): void {\n fontFamily = `'${fontFamily}'`;\n\n const localFontSrc = localFontName !== undefined ? `local('${localFontName}'),` : '';\n\n fontFace({\n fontFamily,\n src: localFontSrc + `url('${url}.woff2') format('woff2'),` + `url('${url}.woff') format('woff')`,\n fontWeight,\n fontStyle: 'normal',\n fontDisplay: 'swap',\n });\n}\n\nfunction _registerFontFaceSet(\n baseUrl: string,\n fontFamily: string,\n cdnFolder: string,\n cdnFontName: string = 'segoeui',\n localFontName?: string,\n): void {\n const urlBase = `${baseUrl}/${cdnFolder}/${cdnFontName}`;\n\n _registerFontFace(fontFamily, urlBase + '-light', FontWeights.light, localFontName && localFontName + ' Light');\n _registerFontFace(\n fontFamily,\n urlBase + '-semilight',\n FontWeights.semilight,\n localFontName && localFontName + ' SemiLight',\n );\n _registerFontFace(fontFamily, urlBase + '-regular', FontWeights.regular, localFontName);\n _registerFontFace(\n fontFamily,\n urlBase + '-semibold',\n FontWeights.semibold,\n localFontName && localFontName + ' SemiBold',\n );\n _registerFontFace(fontFamily, urlBase + '-bold', FontWeights.bold, localFontName && localFontName + ' Bold');\n}\n\nexport function registerDefaultFontFaces(baseUrl: string): void {\n if (baseUrl) {\n const fontUrl = `${baseUrl}/fonts`;\n\n // Produce @font-face definitions for all supported web fonts.\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Thai, 'leelawadeeui-thai', 'leelawadeeui');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Arabic, 'segoeui-arabic');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Cyrillic, 'segoeui-cyrillic');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.EastEuropean, 'segoeui-easteuropean');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Greek, 'segoeui-greek');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Hebrew, 'segoeui-hebrew');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Vietnamese, 'segoeui-vietnamese');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.WestEuropean, 'segoeui-westeuropean', 'segoeui', 'Segoe UI');\n _registerFontFaceSet(fontUrl, LocalizedFontFamilies.Selawik, 'selawik', 'selawik');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Armenian, 'segoeui-armenian');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Georgian, 'segoeui-georgian');\n\n // Leelawadee UI (Thai) does not have a 'light' weight, so we override\n // the font-face generated above to use the 'semilight' weight instead.\n _registerFontFace('Leelawadee UI Web', `${fontUrl}/leelawadeeui-thai/leelawadeeui-semilight`, FontWeights.light);\n\n // Leelawadee UI (Thai) does not have a 'semibold' weight, so we override\n // the font-face generated above to use the 'bold' weight instead.\n _registerFontFace('Leelawadee UI Web', `${fontUrl}/leelawadeeui-thai/leelawadeeui-bold`, FontWeights.semibold);\n }\n}\n\n/**\n * Reads the fontBaseUrl from window.FabricConfig.fontBaseUrl or falls back to a default.\n */\nfunction _getFontBaseUrl(): string {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const fabricConfig: IFabricConfig | undefined = (getWindow() as any)?.FabricConfig;\n\n return fabricConfig?.fontBaseUrl ?? DefaultBaseUrl;\n}\n\n/**\n * Register the font faces.\n */\nregisterDefaultFontFaces(_getFontBaseUrl());\n","import { getWindow } from './dom/getWindow';\n\n/**\n * Fetches an item from local storage without throwing an exception\n * @param key The key of the item to fetch from local storage\n */\nexport function getItem(key: string): string | null {\n let result = null;\n try {\n const win = getWindow();\n result = win ? win.localStorage.getItem(key) : null;\n } catch (e) {\n /* Eat the exception */\n }\n return result;\n}\n\n/**\n * Inserts an item into local storage without throwing an exception\n * @param key The key of the item to add to local storage\n * @param data The data to put into local storage\n */\nexport function setItem(key: string, data: string): void {\n try {\n const win = getWindow();\n\n win && win.localStorage.setItem(key, data);\n } catch (e) {\n /* Eat the exception */\n }\n}\n","/**\n * Simple deep merge function. Takes all arguments and returns a deep copy of the objects merged\n * together in the order provided. If an object creates a circular reference, it will assign the\n * original reference.\n */\nexport function merge(target: Partial, ...args: (Partial | null | undefined | false)[]): T {\n for (const arg of args) {\n _merge(target || {}, arg as Partial);\n }\n\n return target as T;\n}\n\n/**\n * The _merge helper iterates through all props on source and assigns them to target.\n * When the value is an object, we will create a deep clone of the object. However if\n * there is a circular reference, the value will not be deep cloned and will persist\n * the reference.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _merge(target: T, source: T, circularReferences: any[] = []): T {\n circularReferences.push(source);\n\n for (let name in source) {\n if (source.hasOwnProperty(name)) {\n if (name !== '__proto__' && name !== 'constructor' && name !== 'prototype') {\n const value: T[Extract] = source[name];\n if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n const isCircularReference = circularReferences.indexOf(value) > -1;\n target[name] = (isCircularReference\n ? value\n : _merge(target[name] || {}, value, circularReferences)) as T[Extract];\n } else {\n target[name] = value;\n }\n }\n }\n }\n\n circularReferences.pop();\n\n return target;\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import type { IEffects, IPalette, ISemanticColors } from '../types/index';\n\n/** Generates all the semantic slot colors based on the theme so far\n * We'll use these as fallbacks for semantic slots that the passed in theme did not define.\n * The caller must still mix in the customized semantic slots at the end.\n */\nexport function makeSemanticColors(\n p: IPalette,\n e: IEffects,\n s: Partial | undefined,\n isInverted: boolean,\n depComments: boolean = false,\n): ISemanticColors {\n const semanticColors: Partial = {\n primaryButtonBorder: 'transparent',\n\n errorText: !isInverted ? '#a4262c' : '#F1707B',\n\n messageText: !isInverted ? '#323130' : '#F3F2F1',\n messageLink: !isInverted ? '#005A9E' : '#6CB8F6',\n messageLinkHovered: !isInverted ? '#004578' : '#82C7FF',\n\n infoIcon: !isInverted ? '#605e5c' : '#C8C6C4',\n errorIcon: !isInverted ? '#A80000' : '#F1707B',\n blockingIcon: !isInverted ? '#FDE7E9' : '#442726',\n warningIcon: !isInverted ? '#797775' : '#C8C6C4',\n severeWarningIcon: !isInverted ? '#D83B01' : '#FCE100',\n successIcon: !isInverted ? '#107C10' : '#92C353',\n\n infoBackground: !isInverted ? '#f3f2f1' : '#323130',\n errorBackground: !isInverted ? '#FDE7E9' : '#442726',\n blockingBackground: !isInverted ? '#FDE7E9' : '#442726',\n warningBackground: !isInverted ? '#FFF4CE' : '#433519',\n severeWarningBackground: !isInverted ? '#FED9CC' : '#4F2A0F',\n successBackground: !isInverted ? '#DFF6DD' : '#393D1B',\n\n // deprecated\n warningHighlight: !isInverted ? '#ffb900' : '#fff100',\n successText: !isInverted ? '#107C10' : '#92c353',\n\n ...s,\n };\n\n const fullSemanticColors = getSemanticColors(p, e, semanticColors, isInverted);\n return _fixDeprecatedSlots(fullSemanticColors, depComments);\n}\n\n/**\n * Map partial platte and effects to partial semantic colors.\n */\nexport function getSemanticColors>(\n p: Partial | undefined,\n e: Partial | undefined,\n s: Partial | undefined,\n isInverted: boolean,\n depComments: boolean = false,\n): TResult {\n let result: Partial = {};\n\n // map palette\n const {\n white,\n black,\n themePrimary,\n themeDark,\n themeDarker,\n themeDarkAlt,\n themeLighter,\n neutralLight,\n neutralLighter,\n neutralDark,\n neutralQuaternary,\n neutralQuaternaryAlt,\n neutralPrimary,\n neutralSecondary,\n neutralSecondaryAlt,\n neutralTertiary,\n neutralTertiaryAlt,\n neutralLighterAlt,\n accent,\n } = p || {};\n\n if (white) {\n result.bodyBackground = white;\n result.bodyFrameBackground = white;\n result.accentButtonText = white;\n result.buttonBackground = white;\n result.primaryButtonText = white;\n result.primaryButtonTextHovered = white;\n result.primaryButtonTextPressed = white;\n result.inputBackground = white;\n result.inputForegroundChecked = white;\n result.listBackground = white;\n result.menuBackground = white;\n result.cardStandoutBackground = white;\n }\n if (black) {\n result.bodyTextChecked = black;\n result.buttonTextCheckedHovered = black;\n }\n if (themePrimary) {\n result.link = themePrimary;\n result.primaryButtonBackground = themePrimary;\n result.inputBackgroundChecked = themePrimary;\n result.inputIcon = themePrimary;\n result.inputFocusBorderAlt = themePrimary;\n result.menuIcon = themePrimary;\n result.menuHeader = themePrimary;\n result.accentButtonBackground = themePrimary;\n }\n if (themeDark) {\n result.primaryButtonBackgroundPressed = themeDark;\n result.inputBackgroundCheckedHovered = themeDark;\n result.inputIconHovered = themeDark;\n }\n if (themeDarker) {\n result.linkHovered = themeDarker;\n }\n if (themeDarkAlt) {\n result.primaryButtonBackgroundHovered = themeDarkAlt;\n }\n if (themeLighter) {\n result.inputPlaceholderBackgroundChecked = themeLighter;\n }\n if (neutralLight) {\n result.bodyBackgroundChecked = neutralLight;\n result.bodyFrameDivider = neutralLight;\n result.bodyDivider = neutralLight;\n result.variantBorder = neutralLight;\n result.buttonBackgroundCheckedHovered = neutralLight;\n result.buttonBackgroundPressed = neutralLight;\n result.listItemBackgroundChecked = neutralLight;\n result.listHeaderBackgroundPressed = neutralLight;\n result.menuItemBackgroundPressed = neutralLight;\n // eslint-disable-next-line deprecation/deprecation\n result.menuItemBackgroundChecked = neutralLight;\n }\n if (neutralLighter) {\n result.bodyBackgroundHovered = neutralLighter;\n result.buttonBackgroundHovered = neutralLighter;\n result.buttonBackgroundDisabled = neutralLighter;\n result.buttonBorderDisabled = neutralLighter;\n result.primaryButtonBackgroundDisabled = neutralLighter;\n result.disabledBackground = neutralLighter;\n result.listItemBackgroundHovered = neutralLighter;\n result.listHeaderBackgroundHovered = neutralLighter;\n result.menuItemBackgroundHovered = neutralLighter;\n }\n if (neutralQuaternary) {\n result.primaryButtonTextDisabled = neutralQuaternary;\n result.disabledSubtext = neutralQuaternary;\n }\n if (neutralQuaternaryAlt) {\n result.listItemBackgroundCheckedHovered = neutralQuaternaryAlt;\n }\n if (neutralTertiary) {\n result.disabledBodyText = neutralTertiary;\n result.variantBorderHovered = s?.variantBorderHovered || neutralTertiary;\n result.buttonTextDisabled = neutralTertiary;\n result.inputIconDisabled = neutralTertiary;\n result.disabledText = neutralTertiary;\n }\n if (neutralPrimary) {\n result.bodyText = neutralPrimary;\n result.actionLink = neutralPrimary;\n result.buttonText = neutralPrimary;\n result.inputBorderHovered = neutralPrimary;\n result.inputText = neutralPrimary;\n result.listText = neutralPrimary;\n result.menuItemText = neutralPrimary;\n }\n if (neutralLighterAlt) {\n result.bodyStandoutBackground = neutralLighterAlt;\n result.defaultStateBackground = neutralLighterAlt;\n }\n if (neutralDark) {\n result.actionLinkHovered = neutralDark;\n result.buttonTextHovered = neutralDark;\n result.buttonTextChecked = neutralDark;\n result.buttonTextPressed = neutralDark;\n result.inputTextHovered = neutralDark;\n result.menuItemTextHovered = neutralDark;\n }\n if (neutralSecondary) {\n result.bodySubtext = neutralSecondary;\n result.focusBorder = neutralSecondary;\n result.inputBorder = neutralSecondary;\n result.smallInputBorder = neutralSecondary;\n result.inputPlaceholderText = neutralSecondary;\n }\n if (neutralSecondaryAlt) {\n result.buttonBorder = neutralSecondaryAlt;\n }\n if (neutralTertiaryAlt) {\n result.disabledBodySubtext = neutralTertiaryAlt;\n result.disabledBorder = neutralTertiaryAlt;\n result.buttonBackgroundChecked = neutralTertiaryAlt;\n result.menuDivider = neutralTertiaryAlt;\n }\n if (accent) {\n result.accentButtonBackground = accent;\n }\n\n // map effects\n if (e?.elevation4) {\n result.cardShadow = e.elevation4;\n }\n if (!isInverted && e?.elevation8) {\n result.cardShadowHovered = e.elevation8;\n } else if (result.variantBorderHovered) {\n result.cardShadowHovered = '0 0 1px ' + result.variantBorderHovered;\n }\n\n result = {\n ...result,\n // mix in customized semantic slots\n ...s,\n };\n\n return result as TResult;\n}\n\nfunction _fixDeprecatedSlots(s: ISemanticColors, depComments: boolean): ISemanticColors {\n // Add @deprecated tag as comment if enabled\n let dep = '';\n if (depComments === true) {\n dep = ' /* @deprecated */';\n }\n\n /* eslint-disable deprecation/deprecation */\n s.listTextColor = s.listText + dep;\n s.menuItemBackgroundChecked += dep;\n s.warningHighlight += dep;\n s.warningText = s.messageText + dep;\n s.successText += dep;\n /* eslint-enable deprecation/deprecation */\n return s;\n}\n","import type { ISpacing } from '../types/index';\n\nexport const DefaultSpacing: ISpacing = {\n s2: '4px',\n s1: '8px',\n m: '16px',\n l1: '20px',\n l2: '32px',\n};\n","import { DefaultPalette } from './colors/index';\nimport { DefaultEffects } from './effects/index';\nimport { DefaultFontStyles } from './fonts/index';\nimport { mergeThemes } from './mergeThemes';\nimport { DefaultSpacing } from './spacing/index';\nimport { makeSemanticColors } from './utilities/makeSemanticColors';\nimport type { PartialTheme, Theme } from './types/index';\n\n/**\n * Creates a custom theme definition.\n * @param theme - Partial theme object.\n * @param depComments - Whether to include deprecated tags as comments for deprecated slots.\n */\nexport function createTheme(theme: PartialTheme = {}, depComments: boolean = false): Theme {\n const isInverted = !!theme.isInverted;\n const baseTheme: Theme = {\n palette: DefaultPalette,\n effects: DefaultEffects,\n fonts: DefaultFontStyles,\n spacing: DefaultSpacing,\n isInverted,\n disableGlobalClassNames: false,\n semanticColors: makeSemanticColors(DefaultPalette, DefaultEffects, undefined, isInverted, depComments),\n rtl: undefined,\n };\n\n return mergeThemes(baseTheme, theme);\n}\n","import { merge } from '@fluentui/utilities';\nimport { getSemanticColors } from './utilities/makeSemanticColors';\nimport type { IFontStyles, PartialTheme, Theme } from './types/index';\n\n/**\n * Merge a partial/full theme into a full theme and returns a merged full theme.\n */\nexport function mergeThemes(theme: Theme, partialTheme: PartialTheme = {}): Theme {\n const mergedTheme = merge({}, theme, partialTheme, {\n semanticColors: getSemanticColors(\n partialTheme.palette,\n partialTheme.effects,\n partialTheme.semanticColors,\n partialTheme.isInverted === undefined ? theme.isInverted : partialTheme.isInverted,\n ),\n }) as Theme;\n\n if (partialTheme.palette?.themePrimary && !partialTheme.palette?.accent) {\n mergedTheme.palette.accent = partialTheme.palette.themePrimary;\n }\n\n if (partialTheme.defaultFontStyle) {\n for (const fontStyle of Object.keys(mergedTheme.fonts) as (keyof IFontStyles)[]) {\n mergedTheme.fonts[fontStyle] = merge(\n mergedTheme.fonts[fontStyle],\n partialTheme.defaultFontStyle,\n partialTheme?.fonts?.[fontStyle],\n );\n }\n }\n\n return mergedTheme;\n}\n","import { Customizations, getWindow } from '@fluentui/utilities';\nimport { loadTheme as legacyLoadTheme } from '@microsoft/load-themed-styles';\nimport { createTheme } from '@fluentui/theme';\nimport type { ITheme, IPartialTheme, IFontStyles } from '../interfaces/index';\nimport type { IRawStyle } from '@fluentui/merge-styles';\n\nexport { createTheme } from '@fluentui/theme';\n\nlet _theme: ITheme = createTheme({});\nlet _onThemeChangeCallbacks: Array<(theme: ITheme) => void> = [];\n\nexport const ThemeSettingName = 'theme';\n\nexport function initializeThemeInCustomizations(): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const win: any = getWindow();\n\n if (win?.FabricConfig?.legacyTheme) {\n // does everything the `else` clause does and more, such as invoke legacy theming\n loadTheme(win.FabricConfig.legacyTheme);\n } else if (!Customizations.getSettings([ThemeSettingName]).theme) {\n if (win?.FabricConfig?.theme) {\n _theme = createTheme(win.FabricConfig.theme);\n }\n\n // Set the default theme.\n Customizations.applySettings({ [ThemeSettingName]: _theme });\n }\n}\n\ninitializeThemeInCustomizations();\n\n/**\n * Gets the theme object\n * @param depComments - Whether to include deprecated tags as comments for deprecated slots.\n */\nexport function getTheme(depComments: boolean = false): ITheme {\n if (depComments === true) {\n _theme = createTheme({}, depComments);\n }\n return _theme;\n}\n\n/**\n * Registers a callback that gets called whenever the theme changes.\n * This should only be used when the component cannot automatically get theme changes through its state.\n * This will not register duplicate callbacks.\n */\nexport function registerOnThemeChangeCallback(callback: (theme: ITheme) => void): void {\n if (_onThemeChangeCallbacks.indexOf(callback) === -1) {\n _onThemeChangeCallbacks.push(callback);\n }\n}\n\n/**\n * See registerOnThemeChangeCallback().\n * Removes previously registered callbacks.\n */\nexport function removeOnThemeChangeCallback(callback: (theme: ITheme) => void): void {\n const i = _onThemeChangeCallbacks.indexOf(callback);\n if (i === -1) {\n return;\n }\n\n _onThemeChangeCallbacks.splice(i, 1);\n}\n\n/**\n * Applies the theme, while filling in missing slots.\n * @param theme - Partial theme object.\n * @param depComments - Whether to include deprecated tags as comments for deprecated slots.\n */\nexport function loadTheme(theme: IPartialTheme, depComments: boolean = false): ITheme {\n _theme = createTheme(theme, depComments);\n\n // Invoke the legacy method of theming the page as well.\n legacyLoadTheme({ ..._theme.palette, ..._theme.semanticColors, ..._theme.effects, ..._loadFonts(_theme) });\n\n Customizations.applySettings({ [ThemeSettingName]: _theme });\n\n _onThemeChangeCallbacks.forEach((callback: (theme: ITheme) => void) => {\n try {\n callback(_theme);\n } catch (e) {\n // don't let a bad callback break everything else\n }\n });\n\n return _theme;\n}\n\n/**\n * Loads font variables into a JSON object.\n * @param theme - The theme object\n */\nfunction _loadFonts(theme: ITheme): { [name: string]: string } {\n const lines: { [key: string]: string } = {};\n\n for (const fontName of Object.keys(theme.fonts)) {\n const font: IRawStyle = theme.fonts[fontName as keyof IFontStyles];\n\n for (const propName of Object.keys(font)) {\n const name: string = fontName + propName.charAt(0).toUpperCase() + propName.slice(1);\n let value = font[propName as keyof IRawStyle] as string;\n\n if (propName === 'fontSize' && typeof value === 'number') {\n // if it's a number, convert it to px by default like our theming system does\n value = value + 'px';\n }\n lines[name] = value;\n }\n }\n return lines;\n}\n","/* eslint-disable no-console */\n\nlet _warningCallback: ((message: string) => void) | undefined = undefined;\n\nexport type ISettingsMap = { [P in keyof T]?: string };\n\n/**\n * Sends a warning to console, if the api is present.\n *\n * @public\n * @param message - Warning message.\n */\nexport function warn(message: string): void {\n if (_warningCallback && process.env.NODE_ENV !== 'production') {\n _warningCallback(message);\n } else if (console && console.warn) {\n console.warn(message);\n }\n}\n\n/**\n * Configures the warning callback. Passing in undefined will reset it to use the default\n * console.warn function.\n *\n * @public\n * @param warningCallback - Callback to override the generated warnings.\n */\nexport function setWarningCallback(warningCallback?: (message: string) => void): void {\n _warningCallback = warningCallback;\n}\n","import { GlobalSettings, warn } from '@fluentui/utilities';\nimport { fontFace, mergeStyles, Stylesheet } from '@fluentui/merge-styles';\nimport type { IRawStyle, IFontFace } from '@fluentui/merge-styles';\n\nexport interface IIconSubset {\n fontFace?: IFontFace;\n icons: {\n [key: string]: string | JSX.Element;\n };\n\n style?: IRawStyle;\n /**\n * Indicates to the icon renderer that it is safe to merge any props on the original `Icon` element\n * onto the child content element registered for the icon which are valid for HTML images.\n */\n mergeImageProps?: boolean;\n}\n\nexport interface IIconSubsetRecord extends IIconSubset {\n isRegistered?: boolean;\n className?: string;\n}\n\nexport interface IIconRecord {\n code: string | undefined;\n subset: IIconSubsetRecord;\n}\n\nexport interface IIconOptions {\n /**\n * By default, registering the same set of icons will generate a console warning per duplicate icon\n * registered, because this scenario can create unexpected consequences.\n *\n * Some scenarios include:\n *\n * Icon set was previously registered using a different base url.\n * Icon set was previously registered but a different version was provided.\n * Icons in a previous registered set overlap with a new set.\n *\n * To simply ignore previously registered icons, you can specify to disable warnings. This means\n * that if an icon which was previous registered is registered again, it will be silently ignored.\n * However, consider whether the problems listed above will cause issues.\n **/\n disableWarnings: boolean;\n\n /**\n * @deprecated Use `disableWarnings` instead.\n */\n warnOnMissingIcons?: boolean;\n}\n\nexport interface IIconRecords {\n __options: IIconOptions;\n __remapped: { [key: string]: string };\n [key: string]: IIconRecord | {};\n}\n\nconst ICON_SETTING_NAME = 'icons';\n\nconst _iconSettings = GlobalSettings.getValue(ICON_SETTING_NAME, {\n __options: {\n disableWarnings: false,\n warnOnMissingIcons: true,\n },\n __remapped: {},\n});\n\n// Reset icon registration on stylesheet resets.\nconst stylesheet = Stylesheet.getInstance();\n\nif (stylesheet && stylesheet.onReset) {\n stylesheet.onReset(() => {\n for (const name in _iconSettings) {\n if (_iconSettings.hasOwnProperty(name) && !!(_iconSettings[name] as IIconRecord).subset) {\n (_iconSettings[name] as IIconRecord).subset.className = undefined;\n }\n }\n });\n}\n\n/**\n * Normalizes an icon name for consistent mapping.\n * Current implementation is to convert the icon name to lower case.\n *\n * @param name - Icon name to normalize.\n * @returns {string} Normalized icon name to use for indexing and mapping.\n */\nconst normalizeIconName = (name: string): string => name.toLowerCase();\n\n/**\n * Registers a given subset of icons.\n *\n * @param iconSubset - the icon subset definition.\n */\nexport function registerIcons(iconSubset: IIconSubset, options?: Partial): void {\n let subset = {\n ...iconSubset,\n isRegistered: false,\n className: undefined,\n };\n let { icons } = iconSubset;\n\n // Grab options, optionally mix user provided ones on top.\n options = options ? { ..._iconSettings.__options, ...options } : _iconSettings.__options;\n\n for (const iconName in icons) {\n if (icons.hasOwnProperty(iconName)) {\n const code = icons[iconName];\n const normalizedIconName = normalizeIconName(iconName);\n\n if (_iconSettings[normalizedIconName]) {\n _warnDuplicateIcon(iconName);\n } else {\n _iconSettings[normalizedIconName] = {\n code,\n subset,\n } as IIconRecord;\n }\n }\n }\n}\n\n/**\n * Unregisters icons by name.\n *\n * @param iconNames - List of icons to unregister.\n */\nexport function unregisterIcons(iconNames: string[]): void {\n const options = _iconSettings.__options;\n\n for (const iconName of iconNames) {\n const normalizedIconName = normalizeIconName(iconName);\n if (_iconSettings[normalizedIconName]) {\n delete _iconSettings[normalizedIconName];\n } else {\n // Warn that we are trying to delete an icon that doesn't exist\n if (!options.disableWarnings) {\n warn(`The icon \"${iconName}\" tried to unregister but was not registered.`);\n }\n }\n\n // Delete any aliases for this iconName\n if (_iconSettings.__remapped[normalizedIconName]) {\n delete _iconSettings.__remapped[normalizedIconName];\n }\n\n // Delete any items that were an alias for this iconName\n Object.keys(_iconSettings.__remapped).forEach((key: string) => {\n if (_iconSettings.__remapped[key] === normalizedIconName) {\n delete _iconSettings.__remapped[key];\n }\n });\n }\n}\n\n/**\n * Remaps one icon name to another.\n */\nexport function registerIconAlias(iconName: string, mappedToName: string): void {\n _iconSettings.__remapped[normalizeIconName(iconName)] = normalizeIconName(mappedToName);\n}\n\n/**\n * Gets an icon definition. If an icon is requested but the subset has yet to be registered,\n * it will get registered immediately.\n *\n * @public\n * @param name - Name of icon.\n */\nexport function getIcon(name?: string): IIconRecord | undefined {\n let icon: IIconRecord | undefined = undefined;\n const options = _iconSettings.__options;\n\n name = name ? normalizeIconName(name) : '';\n name = _iconSettings.__remapped[name] || name;\n\n if (name) {\n icon = _iconSettings[name!] as IIconRecord;\n\n if (icon) {\n let { subset } = icon;\n if (subset && subset.fontFace) {\n if (!subset.isRegistered) {\n fontFace(subset.fontFace);\n subset.isRegistered = true;\n }\n\n if (!subset.className) {\n subset.className = mergeStyles(subset.style, {\n fontFamily: subset.fontFace.fontFamily,\n fontWeight: subset.fontFace.fontWeight || 'normal',\n fontStyle: subset.fontFace.fontStyle || 'normal',\n });\n }\n }\n } else {\n // eslint-disable-next-line deprecation/deprecation\n if (!options.disableWarnings && options.warnOnMissingIcons) {\n warn(\n `The icon \"${name}\" was used but not registered. See https://github.com/microsoft/fluentui/wiki/Using-icons for more information.`,\n );\n }\n }\n }\n\n return icon;\n}\n\n/**\n * Sets the icon options.\n *\n * @public\n */\nexport function setIconOptions(options: Partial): void {\n _iconSettings.__options = {\n ..._iconSettings.__options,\n ...options,\n };\n}\n\nlet _missingIcons: string[] = [];\nlet _missingIconsTimer: number | undefined = undefined;\n\nfunction _warnDuplicateIcon(iconName: string): void {\n const options = _iconSettings.__options;\n const warningDelay = 2000;\n const maxIconsInMessage = 10;\n\n if (!options.disableWarnings) {\n _missingIcons.push(iconName);\n if (_missingIconsTimer === undefined) {\n _missingIconsTimer = setTimeout(() => {\n warn(\n `Some icons were re-registered. Applications should only call registerIcons for any given ` +\n `icon once. Redefining what an icon is may have unintended consequences. Duplicates ` +\n `include: \\n` +\n _missingIcons.slice(0, maxIconsInMessage).join(', ') +\n (_missingIcons.length > maxIconsInMessage ? ` (+ ${_missingIcons.length - maxIconsInMessage} more)` : ''),\n );\n _missingIconsTimer = undefined;\n _missingIcons = [];\n }, warningDelay);\n }\n }\n}\n","// Do not modify this file; it is generated as part of publish.\n// The checked in version is a placeholder only and will not be updated.\nimport { setVersion } from '@fluentui/set-version';\nsetVersion('@fluentui/style-utilities', '8.6.0');","/*!\n * Copyright (C) Microsoft Corporation. All rights reserved.\n */\nimport { styled } from '@fluentui/react/lib/Utilities';\nimport { FormulaEditorBase } from './FormulaEditor.base';\nimport { getStyles } from './FormulaEditor.styles';\nexport var FormulaEditor = styled(FormulaEditorBase, getStyles);\n//# sourceMappingURL=FormulaEditor.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n/*!\n * Copyright (C) Microsoft Corporation. All rights reserved.\n */\nimport { getFocusStyle } from '@fluentui/react/lib/Styling';\nexport function getStyles(props) {\n var locked = props.locked, theme = props.theme, focused = props.focused;\n var widgetStyles = {\n fontFamily: \"'Segoe UI','Helvetica Neue',Helvetica,Arial,sans-serif\",\n backgroundColor: theme.palette.white,\n border: 'none',\n };\n return {\n root: [\n {\n border: '0',\n width: '100%',\n },\n getFocusStyle(theme),\n ],\n editorBoundary: [\n {\n borderWidth: 1,\n borderColor: theme.palette.neutralQuaternary,\n borderRadius: 2,\n borderStyle: 'solid',\n selectors: {\n '& .monaco-tokenized-source': {\n wordBreak: 'initial',\n },\n '& .monaco-editor .parameter-hints-widget > .wrapper': {\n maxWidth: '900px',\n },\n '& .monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon.constant::before': {\n backgroundImage: \"url(\\\"data:image/svg+xml,%3Csvg width='2048px' height='2048px' viewBox='0 0 2048 2048' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg fill='%23742774'%3E%3Cpath transform='translate(0,2048) scale(1,-1)' d= 'M960 1920Q1032 1920 1119.5 1912Q1207 1904 1294.5 1884.5Q1382 1865 1461 1831Q1540 1797 1594 1746Q1625 1717 1644.5 1680Q1664 1643 1664 1600L1664 448Q1664 403 1644.5 367.5Q1625 332 1594 302Q1542 251 1462.5 217.5Q1383 184 1294.5 164Q1206 144 1118 136Q1030 128 960 128Q888 128 800.5 136Q713 144 625.5 163.5Q538 183 459 217Q380 251 326 302Q295 331 275.5 368Q256 405 256 448L256 1600Q256 1645 275.5 1680.5Q295 1716 326 1746Q378 1797 457.5 1830.5Q537 1864 625.5 1884Q714 1904 802 1912Q890 1920 960 1920ZM960 1792Q909 1792 853.5 1788.5Q798 1785 742 1776.5Q686 1768 632.5 1754.5Q579 1741 531 1722Q516 1716 491 1703.5Q466 1691 442 1675Q418 1659 401 1639.5Q384 1620 384 1600Q384 1592 387 1585Q390 1578 395 1571Q416 1539 455.5 1515Q495 1491 544.5 1473Q594 1455 650 1442.5Q706 1430 761.5 1422.5Q817 1415 868.5 1411.5Q920 1408 960 1408Q1000 1408 1051.5 1411.5Q1103 1415 1158.5 1422.5Q1214 1430 1270 1442.5Q1326 1455 1375.5 1473Q1425 1491 1464 1515Q1503 1539 1525 1571Q1530 1578 1533 1585Q1536 1592 1536 1600Q1536 1620 1519 1639.5Q1502 1659 1478 1675Q1454 1691 1429 1703.5Q1404 1716 1389 1722Q1341 1741 1287.5 1754.5Q1234 1768 1178 1776.5Q1122 1785 1066.5 1788.5Q1011 1792 960 1792ZM960 256Q1011 256 1066.5 259.5Q1122 263 1178 271.5Q1234 280 1287.5 293Q1341 306 1389 326Q1404 332 1429 344.5Q1454 357 1478 373Q1502 389 1519 408.5Q1536 428 1536 448L1536 1410Q1479 1373 1407 1348Q1335 1323 1257.5 1308Q1180 1293 1103 1286.5Q1026 1280 960 1280Q894 1280 816.5 1286.5Q739 1293 662 1308Q585 1323 513 1348Q441 1373 384 1410L384 448Q384 428 401 408.5Q418 389 442 373Q466 357 491 344.5Q516 332 531 326Q579 306 632.5 293Q686 280 742 271.5Q798 263 853.5 259.5Q909 256 960 256Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\\\")\",\n },\n '& .monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon.class::before': {\n backgroundImage: \"url(\\\"data:image/svg+xml,%3Csvg width='2048px' height='2048px' viewBox='0 0 2048 2048' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg fill='%23742774'%3E%3Cpath transform='translate(0,2048) scale(1,-1)' d= 'M1024 1792L1024 1024L1792 1024L1792 128L128 128L128 1792L1024 1792ZM896 1664L256 1664L256 1024L896 1024L896 1664ZM256 256L896 256L896 896L256 896L256 256ZM1024 256L1664 256L1664 896L1024 896L1024 256ZM1280 1280L1280 2048L2048 2048L2048 1280L1280 1280ZM1408 1408L1920 1408L1920 1920L1408 1920L1408 1408Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\\\")\",\n },\n '& .monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon.function::before': {\n backgroundImage: \"url(\\\"data:image/svg+xml,%3Csvg width='2048px' height='2048px' viewBox='0 0 2048 2048' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg fill='%23742774'%3E%3Cpath transform='translate(0,2048) scale(1,-1)' d= 'M1091 1397L1072 1316L848 1316L689 573Q672 495 631 414.5Q590 334 530.5 268.5Q471 203 394.5 161.5Q318 120 231 120Q205 120 178 125Q151 130 129 142Q107 154 92.5 174.5Q78 195 78 226Q78 266 102.5 294.5Q127 323 169 323Q194 323 214 312Q234 301 250 284Q266 267 279 246Q292 225 304 206L311 194Q343 196 369 216Q395 236 415.5 266Q436 296 452 333.5Q468 371 480 408.5Q492 446 500.5 480.5Q509 515 514 539L681 1316L505 1316L525 1397L698 1397L710 1459Q726 1539 764.5 1620Q803 1701 861 1766Q919 1831 994.5 1871.5Q1070 1912 1160 1912Q1186 1912 1213 1907Q1240 1902 1262.5 1890Q1285 1878 1299 1857.5Q1313 1837 1313 1806Q1313 1764 1290.5 1735.5Q1268 1707 1223 1707Q1191 1707 1170 1719.5Q1149 1732 1134 1751Q1119 1770 1106.5 1793Q1094 1816 1081 1838Q1044 1836 1015 1810Q986 1784 963.5 1743.5Q941 1703 925 1654Q909 1605 897.5 1556.5Q886 1508 878 1465.5Q870 1423 865 1397L1091 1397ZM1736 1252Q1711 1232 1683 1199Q1655 1166 1628.5 1129.5Q1602 1093 1578.5 1056Q1555 1019 1539 991Q1549 950 1558 910Q1567 870 1578 829Q1588 792 1600.5 752Q1613 712 1634 678.5Q1655 645 1686 623.5Q1717 602 1764 602Q1776 602 1792 603.5Q1808 605 1824.5 607.5Q1841 610 1856.5 613.5Q1872 617 1883 622L1867 563Q1837 550 1810.5 539Q1784 528 1758 520Q1732 512 1703.5 507.5Q1675 503 1642 503Q1598 503 1569.5 515.5Q1541 528 1522.5 550.5Q1504 573 1492 605Q1480 637 1468 675Q1454 719 1443 762Q1432 805 1421 850Q1383 790 1345 734.5Q1307 679 1262 625Q1242 601 1222 579Q1202 557 1178.5 540Q1155 523 1128 513Q1101 503 1068 503Q1026 503 998.5 527Q971 551 971 595Q971 621 981 640.5Q991 660 1008 673Q1025 686 1047 692.5Q1069 699 1093 699Q1123 699 1150.5 688Q1178 677 1207 669Q1264 726 1313.5 790Q1363 854 1401 924L1399 934Q1395 953 1387 985Q1379 1017 1369.5 1054.5Q1360 1092 1348 1131Q1336 1170 1323.5 1203Q1311 1236 1297.5 1260.5Q1284 1285 1271 1293Q1237 1313 1194 1313Q1167 1313 1138 1307.5Q1109 1302 1084 1291L1100 1351Q1114 1357 1142 1368Q1170 1379 1200 1390Q1230 1401 1258 1409Q1286 1417 1300 1417Q1344 1417 1373.5 1403Q1403 1389 1423 1364Q1443 1339 1456 1306Q1469 1273 1480 1235Q1491 1196 1500.5 1155.5Q1510 1115 1518 1075L1520 1067Q1520 1065 1520.5 1064Q1521 1063 1521 1061Q1540 1091 1562 1129Q1584 1167 1610 1207Q1636 1247 1665.5 1285.5Q1695 1324 1728 1354Q1761 1384 1798 1402.5Q1835 1421 1876 1421Q1915 1421 1942.5 1395Q1970 1369 1970 1329Q1970 1304 1960 1285Q1950 1266 1933.5 1253Q1917 1240 1895.5 1233.5Q1874 1227 1851 1227Q1825 1227 1793 1235.5Q1761 1244 1736 1252Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\\\")\",\n },\n '& .monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon.value::before': {\n backgroundImage: \"url(\\\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='59.479mm' height='49.338mm' version='1.1' viewBox='0 0 59.479 49.338' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform='translate(-120.02 -74.306)'%3E%3Cg %3E%3Cpath d='m179.5 99.945q-2.4837 0.07761-3.7256 1.216-1.216 1.1125-1.216 2.8977 0 0.93138 0.59505 3.6738 0.62093 2.7424 0.62093 4.8898 0 5.5625-3.027 8.2273-3.0011 2.6907-9.081 2.7942h-0.67266v-1.9663h0.38807q3.7514 0 5.8729-1.9663 2.1215-1.9404 2.1215-6.6232 0-1.811-0.51744-4.4758-0.51744-2.6648-0.51744-3.8032 0-2.1991 1.2936-3.5962 1.2936-1.423 3.0788-2.0956v-0.46569q-1.7852-0.67267-3.0788-2.0698-1.2936-1.423-1.2936-3.6221 0-1.1384 0.51744-3.8032 0.51744-2.6648 0.51744-4.4758 0-4.5017-2.1215-6.4421-2.1215-1.9663-5.8729-1.9663h-0.38807v-1.9663h0.67266q6.0799 0.10349 9.081 2.7942 3.027 2.6648 3.027 8.0462 0 2.1474-0.62093 4.8898-0.59505 2.7424-0.59505 3.6738 0 1.7852 1.216 2.9235 1.2418 1.1125 3.7256 1.1901zm-59.479-2.1474q2.4837-0.07762 3.6997-1.1901 1.2418-1.1384 1.2418-2.9235 0-0.93139-0.62092-3.6738-0.59506-2.7424-0.59506-4.8898 0-5.3555 3.0011-8.0203 3.027-2.6907 9.1069-2.7942h0.67267v1.9663h-0.38808q-3.7514 0-5.8729 1.9663-2.1215 1.9404-2.1215 6.4162 0 1.811 0.51744 4.4758 0.51744 2.6648 0.51744 3.8032 0 2.1991-1.2936 3.6221-1.2936 1.3971-3.0788 2.0698v0.46569q1.7852 0.67267 3.0788 2.0956 1.2936 1.3971 1.2936 3.5962 0 1.1384-0.51744 3.8032-0.51744 2.6648-0.51744 4.4758 0 4.7087 2.1215 6.6491 2.1215 1.9663 5.8729 1.9663h0.38808v1.9663h-0.67267q-6.0799-0.10348-9.1069-2.7942-3.0011-2.6648-3.0011-8.2531 0-2.1474 0.59506-4.8898 0.62092-2.7424 0.62092-3.6738 0-1.7852-1.2418-2.8976-1.216-1.1384-3.6997-1.216zm37.153-6.5078q-0.70147 0.56117-1.4871 1.4871-0.78564 0.92594-1.5292 1.9501-0.74356 1.0241-1.4029 2.0623-0.65938 1.0382-1.1083 1.8238 0.28059 1.1504 0.53312 2.2728 0.25253 1.1224 0.56117 2.2728 0.28059 1.0382 0.63133 2.1605 0.35073 1.1224 0.93996 2.0623 0.58924 0.93996 1.4591 1.5432 0.86982 0.60326 2.1886 0.60326 0.33671 0 0.78565-0.0421t0.91191-0.11223q0.46297-0.0701 0.89788-0.16835 0.43491-0.0982 0.74356-0.23851l-0.44895 1.6555q-0.84175 0.36477-1.5853 0.67341t-1.4731 0.53312q-0.72953 0.22447-1.5292 0.35073-0.79967 0.12627-1.7256 0.12627-1.2346 0-2.0343-0.35073-0.79967-0.35075-1.3188-0.98206-0.51909-0.63133-0.85579-1.5292-0.33671-0.89788-0.67341-1.9641-0.39282-1.2346-0.70147-2.4411-0.30864-1.2065-0.61729-2.4692-1.0662 1.6835-2.1325 3.2408-1.0662 1.5573-2.3289 3.0724-0.56118 0.67341-1.1224 1.2907-0.56118 0.6173-1.2206 1.0943-0.65939 0.477-1.417 0.75759-0.75759 0.28059-1.6835 0.28059-1.1785 0-1.9501-0.67341t-0.77161-1.908q0-0.72953 0.28058-1.2767 0.28059-0.54715 0.75759-0.91191t1.0943-0.54714q0.6173-0.18239 1.2907-0.18239 0.84175 0 1.6134 0.30865 0.77162 0.30864 1.5853 0.53311 1.5994-1.5994 2.9883-3.3951 1.3889-1.7958 2.4551-3.7599l-0.0561-0.28059q-0.11224-0.53312-0.33671-1.431-0.22446-0.89788-0.49102-1.9501-0.26656-1.0522-0.60327-2.1465-0.3367-1.0943-0.68744-2.0202-0.35073-0.92594-0.72953-1.6134-0.37879-0.68744-0.74355-0.91191-0.954-0.56118-2.1605-0.56118-0.75759 0-1.5713 0.15433-0.8137 0.15432-1.5152 0.46297l0.44894-1.6835q0.39282-0.16835 1.1785-0.477 0.78565-0.30864 1.6274-0.61728 0.84177-0.30865 1.6274-0.53312 0.78566-0.22447 1.1785-0.22447 1.2346 0 2.0623 0.39283 0.82773 0.39282 1.3889 1.0943 0.56118 0.70147 0.92594 1.6274t0.67341 1.9922q0.30864 1.0943 0.57521 2.2307 0.26655 1.1364 0.49102 2.2587l0.0561 0.22446q0 0.05609 0.014 0.08418 0.014 0.02808 0.014 0.08418 0.53312-0.84176 1.1504-1.908 0.6173-1.0662 1.3468-2.1886 0.72954-1.1223 1.5573-2.2026t1.7537-1.922 1.9641-1.3609q1.0382-0.51908 2.1886-0.51908 1.0943 0 1.8659 0.72953 0.77161 0.72952 0.77161 1.8519 0 0.70147-0.28059 1.2346-0.28058 0.53312-0.74355 0.89788-0.46297 0.36476-1.0662 0.54715-0.60326 0.18238-1.2486 0.18238-0.72952 0-1.6274-0.2385-0.89788-0.2385-1.5994-0.46297z' fill='%23742774' stroke-width='.27597'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E%0A\\\")\",\n },\n '& .squiggly-warning': {\n background: \"url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='3' width='6'%3E%3Cg stroke='%230078d7' stroke-width='1'%3E%3Cline x1='0' y1='0.5' x2='6' y2='0.5'/%3E%3Cline x1='0' y1='2.5' x2='6' y2='2.5'/%3E%3C/g%3E%3C/svg%3E\\\") repeat-x bottom left\",\n },\n '& .editor-widget': {\n fontFamily: \"'Segoe UI','Helvetica Neue',Helvetica,Arial,sans-serif\",\n },\n // Monaco doesn't let you remove the \"quick fix\" etc. buttons from the error windows.\n '& .monaco-editor-hover .hover-row.status-bar': {\n display: 'none',\n visibility: 'hidden',\n height: '0px',\n padding: '0px',\n },\n '& .suggest-widget > .tree': __assign(__assign({}, widgetStyles), { boxShadow: 'rgba(0, 0, 0, 0.15) 0px 5px 15px 3px' }),\n '& .parameter-hints-widget': __assign(__assign({}, widgetStyles), { boxShadow: 'rgba(0, 0, 0, 0.15) 0px -5px 15px 3px' }),\n },\n },\n locked && {\n selectors: {\n // Monaco does have a way to configure background color through the 'theme', but its common\n // between all editor, and so can't be set piece-by-piece.\n '& .monaco-editor-background': {\n backgroundColor: theme.palette.neutralLight,\n },\n '& .current-line': {\n backgroundColor: theme.palette.neutralLight,\n },\n },\n },\n focused && {\n borderColor: theme.palette.themePrimary,\n },\n ],\n };\n}\n//# sourceMappingURL=FormulaEditor.styles.js.map","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nfunction _format(message, args) {\r\n let result;\r\n if (args.length === 0) {\r\n result = message;\r\n }\r\n else {\r\n result = message.replace(/\\{(\\d+)\\}/g, function (match, rest) {\r\n const index = rest[0];\r\n return typeof args[index] !== 'undefined' ? args[index] : match;\r\n });\r\n }\r\n return result;\r\n}\r\nexport function localize(data, message, ...args) {\r\n return _format(message, args);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport const USUAL_WORD_SEPARATORS = '`~!@#$%^&*()-=+[{]}\\\\|;:\\'\",.<>/?';\r\n/**\r\n * Create a word definition regular expression based on default word separators.\r\n * Optionally provide allowed separators that should be included in words.\r\n *\r\n * The default would look like this:\r\n * /(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)\\-\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\?\\s]+)/g\r\n */\r\nfunction createWordRegExp(allowInWords = '') {\r\n let source = '(-?\\\\d*\\\\.\\\\d\\\\w*)|([^';\r\n for (const sep of USUAL_WORD_SEPARATORS) {\r\n if (allowInWords.indexOf(sep) >= 0) {\r\n continue;\r\n }\r\n source += '\\\\' + sep;\r\n }\r\n source += '\\\\s]+)';\r\n return new RegExp(source, 'g');\r\n}\r\n// catches numbers (including floating numbers) in the first group, and alphanum in the second\r\nexport const DEFAULT_WORD_REGEXP = createWordRegExp();\r\nexport function ensureValidWordDefinition(wordDefinition) {\r\n let result = DEFAULT_WORD_REGEXP;\r\n if (wordDefinition && (wordDefinition instanceof RegExp)) {\r\n if (!wordDefinition.global) {\r\n let flags = 'g';\r\n if (wordDefinition.ignoreCase) {\r\n flags += 'i';\r\n }\r\n if (wordDefinition.multiline) {\r\n flags += 'm';\r\n }\r\n if (wordDefinition.unicode) {\r\n flags += 'u';\r\n }\r\n result = new RegExp(wordDefinition.source, flags);\r\n }\r\n else {\r\n result = wordDefinition;\r\n }\r\n }\r\n result.lastIndex = 0;\r\n return result;\r\n}\r\nconst _defaultConfig = {\r\n maxLen: 1000,\r\n windowSize: 15,\r\n timeBudget: 150\r\n};\r\nexport function getWordAtText(column, wordDefinition, text, textOffset, config = _defaultConfig) {\r\n if (text.length > config.maxLen) {\r\n // don't throw strings that long at the regexp\r\n // but use a sub-string in which a word must occur\r\n let start = column - config.maxLen / 2;\r\n if (start < 0) {\r\n start = 0;\r\n }\r\n else {\r\n textOffset += start;\r\n }\r\n text = text.substring(start, column + config.maxLen / 2);\r\n return getWordAtText(column, wordDefinition, text, textOffset, config);\r\n }\r\n const t1 = Date.now();\r\n const pos = column - 1 - textOffset;\r\n let prevRegexIndex = -1;\r\n let match = null;\r\n for (let i = 1;; i++) {\r\n // check time budget\r\n if (Date.now() - t1 >= config.timeBudget) {\r\n break;\r\n }\r\n // reset the index at which the regexp should start matching, also know where it\r\n // should stop so that subsequent search don't repeat previous searches\r\n const regexIndex = pos - config.windowSize * i;\r\n wordDefinition.lastIndex = Math.max(0, regexIndex);\r\n const thisMatch = _findRegexMatchEnclosingPosition(wordDefinition, text, pos, prevRegexIndex);\r\n if (!thisMatch && match) {\r\n // stop: we have something\r\n break;\r\n }\r\n match = thisMatch;\r\n // stop: searched at start\r\n if (regexIndex <= 0) {\r\n break;\r\n }\r\n prevRegexIndex = regexIndex;\r\n }\r\n if (match) {\r\n let result = {\r\n word: match[0],\r\n startColumn: textOffset + 1 + match.index,\r\n endColumn: textOffset + 1 + match.index + match[0].length\r\n };\r\n wordDefinition.lastIndex = 0;\r\n return result;\r\n }\r\n return null;\r\n}\r\nfunction _findRegexMatchEnclosingPosition(wordDefinition, text, pos, stopPos) {\r\n let match;\r\n while (match = wordDefinition.exec(text)) {\r\n const matchIndex = match.index || 0;\r\n if (matchIndex <= pos && wordDefinition.lastIndex >= pos) {\r\n return match;\r\n }\r\n else if (stopPos > 0 && matchIndex > stopPos) {\r\n return null;\r\n }\r\n }\r\n return null;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport * as platform from '../../../base/common/platform.js';\r\nimport { USUAL_WORD_SEPARATORS } from '../model/wordHelper.js';\r\n/**\r\n * @internal\r\n * The width of the minimap gutter, in pixels.\r\n */\r\nexport const MINIMAP_GUTTER_WIDTH = 8;\r\n//#endregion\r\n/**\r\n * An event describing that the configuration of the editor has changed.\r\n */\r\nexport class ConfigurationChangedEvent {\r\n /**\r\n * @internal\r\n */\r\n constructor(values) {\r\n this._values = values;\r\n }\r\n hasChanged(id) {\r\n return this._values[id];\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport class ValidatedEditorOptions {\r\n constructor() {\r\n this._values = [];\r\n }\r\n _read(option) {\r\n return this._values[option];\r\n }\r\n get(id) {\r\n return this._values[id];\r\n }\r\n _write(option, value) {\r\n this._values[option] = value;\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport class ComputeOptionsMemory {\r\n constructor() {\r\n this.stableMinimapLayoutInput = null;\r\n this.stableFitMaxMinimapScale = 0;\r\n this.stableFitRemainingWidth = 0;\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nclass BaseEditorOption {\r\n constructor(id, name, defaultValue, schema) {\r\n this.id = id;\r\n this.name = name;\r\n this.defaultValue = defaultValue;\r\n this.schema = schema;\r\n }\r\n compute(env, options, value) {\r\n return value;\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nclass ComputedEditorOption {\r\n constructor(id, deps = null) {\r\n this.schema = undefined;\r\n this.id = id;\r\n this.name = '_never_';\r\n this.defaultValue = undefined;\r\n this.deps = deps;\r\n }\r\n validate(input) {\r\n return this.defaultValue;\r\n }\r\n}\r\nclass SimpleEditorOption {\r\n constructor(id, name, defaultValue, schema) {\r\n this.id = id;\r\n this.name = name;\r\n this.defaultValue = defaultValue;\r\n this.schema = schema;\r\n }\r\n validate(input) {\r\n if (typeof input === 'undefined') {\r\n return this.defaultValue;\r\n }\r\n return input;\r\n }\r\n compute(env, options, value) {\r\n return value;\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport function boolean(value, defaultValue) {\r\n if (typeof value === 'undefined') {\r\n return defaultValue;\r\n }\r\n if (value === 'false') {\r\n // treat the string 'false' as false\r\n return false;\r\n }\r\n return Boolean(value);\r\n}\r\nclass EditorBooleanOption extends SimpleEditorOption {\r\n constructor(id, name, defaultValue, schema = undefined) {\r\n if (typeof schema !== 'undefined') {\r\n schema.type = 'boolean';\r\n schema.default = defaultValue;\r\n }\r\n super(id, name, defaultValue, schema);\r\n }\r\n validate(input) {\r\n return boolean(input, this.defaultValue);\r\n }\r\n}\r\nclass EditorIntOption extends SimpleEditorOption {\r\n constructor(id, name, defaultValue, minimum, maximum, schema = undefined) {\r\n if (typeof schema !== 'undefined') {\r\n schema.type = 'integer';\r\n schema.default = defaultValue;\r\n schema.minimum = minimum;\r\n schema.maximum = maximum;\r\n }\r\n super(id, name, defaultValue, schema);\r\n this.minimum = minimum;\r\n this.maximum = maximum;\r\n }\r\n static clampedInt(value, defaultValue, minimum, maximum) {\r\n if (typeof value === 'undefined') {\r\n return defaultValue;\r\n }\r\n let r = parseInt(value, 10);\r\n if (isNaN(r)) {\r\n return defaultValue;\r\n }\r\n r = Math.max(minimum, r);\r\n r = Math.min(maximum, r);\r\n return r | 0;\r\n }\r\n validate(input) {\r\n return EditorIntOption.clampedInt(input, this.defaultValue, this.minimum, this.maximum);\r\n }\r\n}\r\nclass EditorFloatOption extends SimpleEditorOption {\r\n constructor(id, name, defaultValue, validationFn, schema) {\r\n if (typeof schema !== 'undefined') {\r\n schema.type = 'number';\r\n schema.default = defaultValue;\r\n }\r\n super(id, name, defaultValue, schema);\r\n this.validationFn = validationFn;\r\n }\r\n static clamp(n, min, max) {\r\n if (n < min) {\r\n return min;\r\n }\r\n if (n > max) {\r\n return max;\r\n }\r\n return n;\r\n }\r\n static float(value, defaultValue) {\r\n if (typeof value === 'number') {\r\n return value;\r\n }\r\n if (typeof value === 'undefined') {\r\n return defaultValue;\r\n }\r\n const r = parseFloat(value);\r\n return (isNaN(r) ? defaultValue : r);\r\n }\r\n validate(input) {\r\n return this.validationFn(EditorFloatOption.float(input, this.defaultValue));\r\n }\r\n}\r\nclass EditorStringOption extends SimpleEditorOption {\r\n static string(value, defaultValue) {\r\n if (typeof value !== 'string') {\r\n return defaultValue;\r\n }\r\n return value;\r\n }\r\n constructor(id, name, defaultValue, schema = undefined) {\r\n if (typeof schema !== 'undefined') {\r\n schema.type = 'string';\r\n schema.default = defaultValue;\r\n }\r\n super(id, name, defaultValue, schema);\r\n }\r\n validate(input) {\r\n return EditorStringOption.string(input, this.defaultValue);\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport function stringSet(value, defaultValue, allowedValues) {\r\n if (typeof value !== 'string') {\r\n return defaultValue;\r\n }\r\n if (allowedValues.indexOf(value) === -1) {\r\n return defaultValue;\r\n }\r\n return value;\r\n}\r\nclass EditorStringEnumOption extends SimpleEditorOption {\r\n constructor(id, name, defaultValue, allowedValues, schema = undefined) {\r\n if (typeof schema !== 'undefined') {\r\n schema.type = 'string';\r\n schema.enum = allowedValues;\r\n schema.default = defaultValue;\r\n }\r\n super(id, name, defaultValue, schema);\r\n this._allowedValues = allowedValues;\r\n }\r\n validate(input) {\r\n return stringSet(input, this.defaultValue, this._allowedValues);\r\n }\r\n}\r\nclass EditorEnumOption extends BaseEditorOption {\r\n constructor(id, name, defaultValue, defaultStringValue, allowedValues, convert, schema = undefined) {\r\n if (typeof schema !== 'undefined') {\r\n schema.type = 'string';\r\n schema.enum = allowedValues;\r\n schema.default = defaultStringValue;\r\n }\r\n super(id, name, defaultValue, schema);\r\n this._allowedValues = allowedValues;\r\n this._convert = convert;\r\n }\r\n validate(input) {\r\n if (typeof input !== 'string') {\r\n return this.defaultValue;\r\n }\r\n if (this._allowedValues.indexOf(input) === -1) {\r\n return this.defaultValue;\r\n }\r\n return this._convert(input);\r\n }\r\n}\r\n//#endregion\r\n//#region autoIndent\r\nfunction _autoIndentFromString(autoIndent) {\r\n switch (autoIndent) {\r\n case 'none': return 0 /* None */;\r\n case 'keep': return 1 /* Keep */;\r\n case 'brackets': return 2 /* Brackets */;\r\n case 'advanced': return 3 /* Advanced */;\r\n case 'full': return 4 /* Full */;\r\n }\r\n}\r\n//#endregion\r\n//#region accessibilitySupport\r\nclass EditorAccessibilitySupport extends BaseEditorOption {\r\n constructor() {\r\n super(2 /* accessibilitySupport */, 'accessibilitySupport', 0 /* Unknown */, {\r\n type: 'string',\r\n enum: ['auto', 'on', 'off'],\r\n enumDescriptions: [\r\n nls.localize('accessibilitySupport.auto', \"The editor will use platform APIs to detect when a Screen Reader is attached.\"),\r\n nls.localize('accessibilitySupport.on', \"The editor will be permanently optimized for usage with a Screen Reader. Word wrapping will be disabled.\"),\r\n nls.localize('accessibilitySupport.off', \"The editor will never be optimized for usage with a Screen Reader.\"),\r\n ],\r\n default: 'auto',\r\n description: nls.localize('accessibilitySupport', \"Controls whether the editor should run in a mode where it is optimized for screen readers. Setting to on will disable word wrapping.\")\r\n });\r\n }\r\n validate(input) {\r\n switch (input) {\r\n case 'auto': return 0 /* Unknown */;\r\n case 'off': return 1 /* Disabled */;\r\n case 'on': return 2 /* Enabled */;\r\n }\r\n return this.defaultValue;\r\n }\r\n compute(env, options, value) {\r\n if (value === 0 /* Unknown */) {\r\n // The editor reads the `accessibilitySupport` from the environment\r\n return env.accessibilitySupport;\r\n }\r\n return value;\r\n }\r\n}\r\nclass EditorComments extends BaseEditorOption {\r\n constructor() {\r\n const defaults = {\r\n insertSpace: true,\r\n ignoreEmptyLines: true,\r\n };\r\n super(17 /* comments */, 'comments', defaults, {\r\n 'editor.comments.insertSpace': {\r\n type: 'boolean',\r\n default: defaults.insertSpace,\r\n description: nls.localize('comments.insertSpace', \"Controls whether a space character is inserted when commenting.\")\r\n },\r\n 'editor.comments.ignoreEmptyLines': {\r\n type: 'boolean',\r\n default: defaults.ignoreEmptyLines,\r\n description: nls.localize('comments.ignoreEmptyLines', 'Controls if empty lines should be ignored with toggle, add or remove actions for line comments.')\r\n },\r\n });\r\n }\r\n validate(_input) {\r\n if (!_input || typeof _input !== 'object') {\r\n return this.defaultValue;\r\n }\r\n const input = _input;\r\n return {\r\n insertSpace: boolean(input.insertSpace, this.defaultValue.insertSpace),\r\n ignoreEmptyLines: boolean(input.ignoreEmptyLines, this.defaultValue.ignoreEmptyLines),\r\n };\r\n }\r\n}\r\nfunction _cursorBlinkingStyleFromString(cursorBlinkingStyle) {\r\n switch (cursorBlinkingStyle) {\r\n case 'blink': return 1 /* Blink */;\r\n case 'smooth': return 2 /* Smooth */;\r\n case 'phase': return 3 /* Phase */;\r\n case 'expand': return 4 /* Expand */;\r\n case 'solid': return 5 /* Solid */;\r\n }\r\n}\r\n//#endregion\r\n//#region cursorStyle\r\n/**\r\n * The style in which the editor's cursor should be rendered.\r\n */\r\nexport var TextEditorCursorStyle;\r\n(function (TextEditorCursorStyle) {\r\n /**\r\n * As a vertical line (sitting between two characters).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"Line\"] = 1] = \"Line\";\r\n /**\r\n * As a block (sitting on top of a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"Block\"] = 2] = \"Block\";\r\n /**\r\n * As a horizontal line (sitting under a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"Underline\"] = 3] = \"Underline\";\r\n /**\r\n * As a thin vertical line (sitting between two characters).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"LineThin\"] = 4] = \"LineThin\";\r\n /**\r\n * As an outlined block (sitting on top of a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"BlockOutline\"] = 5] = \"BlockOutline\";\r\n /**\r\n * As a thin horizontal line (sitting under a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"UnderlineThin\"] = 6] = \"UnderlineThin\";\r\n})(TextEditorCursorStyle || (TextEditorCursorStyle = {}));\r\nfunction _cursorStyleFromString(cursorStyle) {\r\n switch (cursorStyle) {\r\n case 'line': return TextEditorCursorStyle.Line;\r\n case 'block': return TextEditorCursorStyle.Block;\r\n case 'underline': return TextEditorCursorStyle.Underline;\r\n case 'line-thin': return TextEditorCursorStyle.LineThin;\r\n case 'block-outline': return TextEditorCursorStyle.BlockOutline;\r\n case 'underline-thin': return TextEditorCursorStyle.UnderlineThin;\r\n }\r\n}\r\n//#endregion\r\n//#region editorClassName\r\nclass EditorClassName extends ComputedEditorOption {\r\n constructor() {\r\n super(126 /* editorClassName */, [64 /* mouseStyle */, 31 /* extraEditorClassName */]);\r\n }\r\n compute(env, options, _) {\r\n const classNames = ['monaco-editor'];\r\n if (options.get(31 /* extraEditorClassName */)) {\r\n classNames.push(options.get(31 /* extraEditorClassName */));\r\n }\r\n if (env.extraEditorClassName) {\r\n classNames.push(env.extraEditorClassName);\r\n }\r\n if (options.get(64 /* mouseStyle */) === 'default') {\r\n classNames.push('mouse-default');\r\n }\r\n else if (options.get(64 /* mouseStyle */) === 'copy') {\r\n classNames.push('mouse-copy');\r\n }\r\n if (options.get(99 /* showUnused */)) {\r\n classNames.push('showUnused');\r\n }\r\n if (options.get(124 /* showDeprecated */)) {\r\n classNames.push('showDeprecated');\r\n }\r\n return classNames.join(' ');\r\n }\r\n}\r\n//#endregion\r\n//#region emptySelectionClipboard\r\nclass EditorEmptySelectionClipboard extends EditorBooleanOption {\r\n constructor() {\r\n super(30 /* emptySelectionClipboard */, 'emptySelectionClipboard', true, { description: nls.localize('emptySelectionClipboard', \"Controls whether copying without a selection copies the current line.\") });\r\n }\r\n compute(env, options, value) {\r\n return value && env.emptySelectionClipboard;\r\n }\r\n}\r\nclass EditorFind extends BaseEditorOption {\r\n constructor() {\r\n const defaults = {\r\n cursorMoveOnType: true,\r\n seedSearchStringFromSelection: 'always',\r\n autoFindInSelection: 'never',\r\n globalFindClipboard: false,\r\n addExtraSpaceOnTop: true,\r\n loop: true\r\n };\r\n super(33 /* find */, 'find', defaults, {\r\n 'editor.find.cursorMoveOnType': {\r\n type: 'boolean',\r\n default: defaults.cursorMoveOnType,\r\n description: nls.localize('find.cursorMoveOnType', \"Controls whether the cursor should jump to find matches while typing.\")\r\n },\r\n 'editor.find.seedSearchStringFromSelection': {\r\n type: 'string',\r\n enum: ['never', 'always', 'selection'],\r\n default: defaults.seedSearchStringFromSelection,\r\n enumDescriptions: [\r\n nls.localize('editor.find.seedSearchStringFromSelection.never', 'Never seed search string from the editor selection.'),\r\n nls.localize('editor.find.seedSearchStringFromSelection.always', 'Always seed search string from the editor selection, including word at cursor position.'),\r\n nls.localize('editor.find.seedSearchStringFromSelection.selection', 'Only seed search string from the editor selection.')\r\n ],\r\n description: nls.localize('find.seedSearchStringFromSelection', \"Controls whether the search string in the Find Widget is seeded from the editor selection.\")\r\n },\r\n 'editor.find.autoFindInSelection': {\r\n type: 'string',\r\n enum: ['never', 'always', 'multiline'],\r\n default: defaults.autoFindInSelection,\r\n enumDescriptions: [\r\n nls.localize('editor.find.autoFindInSelection.never', 'Never turn on Find in Selection automatically (default).'),\r\n nls.localize('editor.find.autoFindInSelection.always', 'Always turn on Find in Selection automatically.'),\r\n nls.localize('editor.find.autoFindInSelection.multiline', 'Turn on Find in Selection automatically when multiple lines of content are selected.')\r\n ],\r\n description: nls.localize('find.autoFindInSelection', \"Controls the condition for turning on Find in Selection automatically.\")\r\n },\r\n 'editor.find.globalFindClipboard': {\r\n type: 'boolean',\r\n default: defaults.globalFindClipboard,\r\n description: nls.localize('find.globalFindClipboard', \"Controls whether the Find Widget should read or modify the shared find clipboard on macOS.\"),\r\n included: platform.isMacintosh\r\n },\r\n 'editor.find.addExtraSpaceOnTop': {\r\n type: 'boolean',\r\n default: defaults.addExtraSpaceOnTop,\r\n description: nls.localize('find.addExtraSpaceOnTop', \"Controls whether the Find Widget should add extra lines on top of the editor. When true, you can scroll beyond the first line when the Find Widget is visible.\")\r\n },\r\n 'editor.find.loop': {\r\n type: 'boolean',\r\n default: defaults.loop,\r\n description: nls.localize('find.loop', \"Controls whether the search automatically restarts from the beginning (or the end) when no further matches can be found.\")\r\n },\r\n });\r\n }\r\n validate(_input) {\r\n if (!_input || typeof _input !== 'object') {\r\n return this.defaultValue;\r\n }\r\n const input = _input;\r\n return {\r\n cursorMoveOnType: boolean(input.cursorMoveOnType, this.defaultValue.cursorMoveOnType),\r\n seedSearchStringFromSelection: typeof _input.seedSearchStringFromSelection === 'boolean'\r\n ? (_input.seedSearchStringFromSelection ? 'always' : 'never')\r\n : stringSet(input.seedSearchStringFromSelection, this.defaultValue.seedSearchStringFromSelection, ['never', 'always', 'selection']),\r\n autoFindInSelection: typeof _input.autoFindInSelection === 'boolean'\r\n ? (_input.autoFindInSelection ? 'always' : 'never')\r\n : stringSet(input.autoFindInSelection, this.defaultValue.autoFindInSelection, ['never', 'always', 'multiline']),\r\n globalFindClipboard: boolean(input.globalFindClipboard, this.defaultValue.globalFindClipboard),\r\n addExtraSpaceOnTop: boolean(input.addExtraSpaceOnTop, this.defaultValue.addExtraSpaceOnTop),\r\n loop: boolean(input.loop, this.defaultValue.loop),\r\n };\r\n }\r\n}\r\n//#endregion\r\n//#region fontLigatures\r\n/**\r\n * @internal\r\n */\r\nexport class EditorFontLigatures extends BaseEditorOption {\r\n constructor() {\r\n super(42 /* fontLigatures */, 'fontLigatures', EditorFontLigatures.OFF, {\r\n anyOf: [\r\n {\r\n type: 'boolean',\r\n description: nls.localize('fontLigatures', \"Enables/Disables font ligatures ('calt' and 'liga' font features). Change this to a string for fine-grained control of the 'font-feature-settings' CSS property.\"),\r\n },\r\n {\r\n type: 'string',\r\n description: nls.localize('fontFeatureSettings', \"Explicit 'font-feature-settings' CSS property. A boolean can be passed instead if one only needs to turn on/off ligatures.\")\r\n }\r\n ],\r\n description: nls.localize('fontLigaturesGeneral', \"Configures font ligatures or font features. Can be either a boolean to enable/disable ligatures or a string for the value of the CSS 'font-feature-settings' property.\"),\r\n default: false\r\n });\r\n }\r\n validate(input) {\r\n if (typeof input === 'undefined') {\r\n return this.defaultValue;\r\n }\r\n if (typeof input === 'string') {\r\n if (input === 'false') {\r\n return EditorFontLigatures.OFF;\r\n }\r\n if (input === 'true') {\r\n return EditorFontLigatures.ON;\r\n }\r\n return input;\r\n }\r\n if (Boolean(input)) {\r\n return EditorFontLigatures.ON;\r\n }\r\n return EditorFontLigatures.OFF;\r\n }\r\n}\r\nEditorFontLigatures.OFF = '\"liga\" off, \"calt\" off';\r\nEditorFontLigatures.ON = '\"liga\" on, \"calt\" on';\r\n//#endregion\r\n//#region fontInfo\r\nclass EditorFontInfo extends ComputedEditorOption {\r\n constructor() {\r\n super(41 /* fontInfo */);\r\n }\r\n compute(env, options, _) {\r\n return env.fontInfo;\r\n }\r\n}\r\n//#endregion\r\n//#region fontSize\r\nclass EditorFontSize extends SimpleEditorOption {\r\n constructor() {\r\n super(43 /* fontSize */, 'fontSize', EDITOR_FONT_DEFAULTS.fontSize, {\r\n type: 'number',\r\n minimum: 6,\r\n maximum: 100,\r\n default: EDITOR_FONT_DEFAULTS.fontSize,\r\n description: nls.localize('fontSize', \"Controls the font size in pixels.\")\r\n });\r\n }\r\n validate(input) {\r\n let r = EditorFloatOption.float(input, this.defaultValue);\r\n if (r === 0) {\r\n return EDITOR_FONT_DEFAULTS.fontSize;\r\n }\r\n return EditorFloatOption.clamp(r, 6, 100);\r\n }\r\n compute(env, options, value) {\r\n // The final fontSize respects the editor zoom level.\r\n // So take the result from env.fontInfo\r\n return env.fontInfo.fontSize;\r\n }\r\n}\r\n//#endregion\r\n//#region fontWeight\r\nclass EditorFontWeight extends BaseEditorOption {\r\n constructor() {\r\n super(44 /* fontWeight */, 'fontWeight', EDITOR_FONT_DEFAULTS.fontWeight, {\r\n anyOf: [\r\n {\r\n type: 'number',\r\n minimum: EditorFontWeight.MINIMUM_VALUE,\r\n maximum: EditorFontWeight.MAXIMUM_VALUE,\r\n errorMessage: nls.localize('fontWeightErrorMessage', \"Only \\\"normal\\\" and \\\"bold\\\" keywords or numbers between 1 and 1000 are allowed.\")\r\n },\r\n {\r\n type: 'string',\r\n pattern: '^(normal|bold|1000|[1-9][0-9]{0,2})$'\r\n },\r\n {\r\n enum: EditorFontWeight.SUGGESTION_VALUES\r\n }\r\n ],\r\n default: EDITOR_FONT_DEFAULTS.fontWeight,\r\n description: nls.localize('fontWeight', \"Controls the font weight. Accepts \\\"normal\\\" and \\\"bold\\\" keywords or numbers between 1 and 1000.\")\r\n });\r\n }\r\n validate(input) {\r\n if (input === 'normal' || input === 'bold') {\r\n return input;\r\n }\r\n return String(EditorIntOption.clampedInt(input, EDITOR_FONT_DEFAULTS.fontWeight, EditorFontWeight.MINIMUM_VALUE, EditorFontWeight.MAXIMUM_VALUE));\r\n }\r\n}\r\nEditorFontWeight.SUGGESTION_VALUES = ['normal', 'bold', '100', '200', '300', '400', '500', '600', '700', '800', '900'];\r\nEditorFontWeight.MINIMUM_VALUE = 1;\r\nEditorFontWeight.MAXIMUM_VALUE = 1000;\r\nclass EditorGoToLocation extends BaseEditorOption {\r\n constructor() {\r\n const defaults = {\r\n multiple: 'peek',\r\n multipleDefinitions: 'peek',\r\n multipleTypeDefinitions: 'peek',\r\n multipleDeclarations: 'peek',\r\n multipleImplementations: 'peek',\r\n multipleReferences: 'peek',\r\n alternativeDefinitionCommand: 'editor.action.goToReferences',\r\n alternativeTypeDefinitionCommand: 'editor.action.goToReferences',\r\n alternativeDeclarationCommand: 'editor.action.goToReferences',\r\n alternativeImplementationCommand: '',\r\n alternativeReferenceCommand: '',\r\n };\r\n const jsonSubset = {\r\n type: 'string',\r\n enum: ['peek', 'gotoAndPeek', 'goto'],\r\n default: defaults.multiple,\r\n enumDescriptions: [\r\n nls.localize('editor.gotoLocation.multiple.peek', 'Show peek view of the results (default)'),\r\n nls.localize('editor.gotoLocation.multiple.gotoAndPeek', 'Go to the primary result and show a peek view'),\r\n nls.localize('editor.gotoLocation.multiple.goto', 'Go to the primary result and enable peek-less navigation to others')\r\n ]\r\n };\r\n const alternativeCommandOptions = ['', 'editor.action.referenceSearch.trigger', 'editor.action.goToReferences', 'editor.action.peekImplementation', 'editor.action.goToImplementation', 'editor.action.peekTypeDefinition', 'editor.action.goToTypeDefinition', 'editor.action.peekDeclaration', 'editor.action.revealDeclaration', 'editor.action.peekDefinition', 'editor.action.revealDefinitionAside', 'editor.action.revealDefinition'];\r\n super(48 /* gotoLocation */, 'gotoLocation', defaults, {\r\n 'editor.gotoLocation.multiple': {\r\n deprecationMessage: nls.localize('editor.gotoLocation.multiple.deprecated', \"This setting is deprecated, please use separate settings like 'editor.editor.gotoLocation.multipleDefinitions' or 'editor.editor.gotoLocation.multipleImplementations' instead.\"),\r\n },\r\n 'editor.gotoLocation.multipleDefinitions': Object.assign({ description: nls.localize('editor.editor.gotoLocation.multipleDefinitions', \"Controls the behavior the 'Go to Definition'-command when multiple target locations exist.\") }, jsonSubset),\r\n 'editor.gotoLocation.multipleTypeDefinitions': Object.assign({ description: nls.localize('editor.editor.gotoLocation.multipleTypeDefinitions', \"Controls the behavior the 'Go to Type Definition'-command when multiple target locations exist.\") }, jsonSubset),\r\n 'editor.gotoLocation.multipleDeclarations': Object.assign({ description: nls.localize('editor.editor.gotoLocation.multipleDeclarations', \"Controls the behavior the 'Go to Declaration'-command when multiple target locations exist.\") }, jsonSubset),\r\n 'editor.gotoLocation.multipleImplementations': Object.assign({ description: nls.localize('editor.editor.gotoLocation.multipleImplemenattions', \"Controls the behavior the 'Go to Implementations'-command when multiple target locations exist.\") }, jsonSubset),\r\n 'editor.gotoLocation.multipleReferences': Object.assign({ description: nls.localize('editor.editor.gotoLocation.multipleReferences', \"Controls the behavior the 'Go to References'-command when multiple target locations exist.\") }, jsonSubset),\r\n 'editor.gotoLocation.alternativeDefinitionCommand': {\r\n type: 'string',\r\n default: defaults.alternativeDefinitionCommand,\r\n enum: alternativeCommandOptions,\r\n description: nls.localize('alternativeDefinitionCommand', \"Alternative command id that is being executed when the result of 'Go to Definition' is the current location.\")\r\n },\r\n 'editor.gotoLocation.alternativeTypeDefinitionCommand': {\r\n type: 'string',\r\n default: defaults.alternativeTypeDefinitionCommand,\r\n enum: alternativeCommandOptions,\r\n description: nls.localize('alternativeTypeDefinitionCommand', \"Alternative command id that is being executed when the result of 'Go to Type Definition' is the current location.\")\r\n },\r\n 'editor.gotoLocation.alternativeDeclarationCommand': {\r\n type: 'string',\r\n default: defaults.alternativeDeclarationCommand,\r\n enum: alternativeCommandOptions,\r\n description: nls.localize('alternativeDeclarationCommand', \"Alternative command id that is being executed when the result of 'Go to Declaration' is the current location.\")\r\n },\r\n 'editor.gotoLocation.alternativeImplementationCommand': {\r\n type: 'string',\r\n default: defaults.alternativeImplementationCommand,\r\n enum: alternativeCommandOptions,\r\n description: nls.localize('alternativeImplementationCommand', \"Alternative command id that is being executed when the result of 'Go to Implementation' is the current location.\")\r\n },\r\n 'editor.gotoLocation.alternativeReferenceCommand': {\r\n type: 'string',\r\n default: defaults.alternativeReferenceCommand,\r\n enum: alternativeCommandOptions,\r\n description: nls.localize('alternativeReferenceCommand', \"Alternative command id that is being executed when the result of 'Go to Reference' is the current location.\")\r\n },\r\n });\r\n }\r\n validate(_input) {\r\n var _a, _b, _c, _d, _e;\r\n if (!_input || typeof _input !== 'object') {\r\n return this.defaultValue;\r\n }\r\n const input = _input;\r\n return {\r\n multiple: stringSet(input.multiple, this.defaultValue.multiple, ['peek', 'gotoAndPeek', 'goto']),\r\n multipleDefinitions: (_a = input.multipleDefinitions) !== null && _a !== void 0 ? _a : stringSet(input.multipleDefinitions, 'peek', ['peek', 'gotoAndPeek', 'goto']),\r\n multipleTypeDefinitions: (_b = input.multipleTypeDefinitions) !== null && _b !== void 0 ? _b : stringSet(input.multipleTypeDefinitions, 'peek', ['peek', 'gotoAndPeek', 'goto']),\r\n multipleDeclarations: (_c = input.multipleDeclarations) !== null && _c !== void 0 ? _c : stringSet(input.multipleDeclarations, 'peek', ['peek', 'gotoAndPeek', 'goto']),\r\n multipleImplementations: (_d = input.multipleImplementations) !== null && _d !== void 0 ? _d : stringSet(input.multipleImplementations, 'peek', ['peek', 'gotoAndPeek', 'goto']),\r\n multipleReferences: (_e = input.multipleReferences) !== null && _e !== void 0 ? _e : stringSet(input.multipleReferences, 'peek', ['peek', 'gotoAndPeek', 'goto']),\r\n alternativeDefinitionCommand: EditorStringOption.string(input.alternativeDefinitionCommand, this.defaultValue.alternativeDefinitionCommand),\r\n alternativeTypeDefinitionCommand: EditorStringOption.string(input.alternativeTypeDefinitionCommand, this.defaultValue.alternativeTypeDefinitionCommand),\r\n alternativeDeclarationCommand: EditorStringOption.string(input.alternativeDeclarationCommand, this.defaultValue.alternativeDeclarationCommand),\r\n alternativeImplementationCommand: EditorStringOption.string(input.alternativeImplementationCommand, this.defaultValue.alternativeImplementationCommand),\r\n alternativeReferenceCommand: EditorStringOption.string(input.alternativeReferenceCommand, this.defaultValue.alternativeReferenceCommand),\r\n };\r\n }\r\n}\r\nclass EditorHover extends BaseEditorOption {\r\n constructor() {\r\n const defaults = {\r\n enabled: true,\r\n delay: 300,\r\n sticky: true\r\n };\r\n super(51 /* hover */, 'hover', defaults, {\r\n 'editor.hover.enabled': {\r\n type: 'boolean',\r\n default: defaults.enabled,\r\n description: nls.localize('hover.enabled', \"Controls whether the hover is shown.\")\r\n },\r\n 'editor.hover.delay': {\r\n type: 'number',\r\n default: defaults.delay,\r\n description: nls.localize('hover.delay', \"Controls the delay in milliseconds after which the hover is shown.\")\r\n },\r\n 'editor.hover.sticky': {\r\n type: 'boolean',\r\n default: defaults.sticky,\r\n description: nls.localize('hover.sticky', \"Controls whether the hover should remain visible when mouse is moved over it.\")\r\n },\r\n });\r\n }\r\n validate(_input) {\r\n if (!_input || typeof _input !== 'object') {\r\n return this.defaultValue;\r\n }\r\n const input = _input;\r\n return {\r\n enabled: boolean(input.enabled, this.defaultValue.enabled),\r\n delay: EditorIntOption.clampedInt(input.delay, this.defaultValue.delay, 0, 10000),\r\n sticky: boolean(input.sticky, this.defaultValue.sticky)\r\n };\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport class EditorLayoutInfoComputer extends ComputedEditorOption {\r\n constructor() {\r\n super(129 /* layoutInfo */, [\r\n 47 /* glyphMargin */, 56 /* lineDecorationsWidth */, 35 /* folding */,\r\n 63 /* minimap */, 91 /* scrollbar */, 58 /* lineNumbers */,\r\n 59 /* lineNumbersMinChars */, 93 /* scrollBeyondLastLine */,\r\n 116 /* wordWrap */, 119 /* wordWrapColumn */, 120 /* wordWrapOverride1 */, 121 /* wordWrapOverride2 */,\r\n 2 /* accessibilitySupport */\r\n ]);\r\n }\r\n compute(env, options, _) {\r\n return EditorLayoutInfoComputer.computeLayout(options, {\r\n memory: env.memory,\r\n outerWidth: env.outerWidth,\r\n outerHeight: env.outerHeight,\r\n isDominatedByLongLines: env.isDominatedByLongLines,\r\n lineHeight: env.fontInfo.lineHeight,\r\n viewLineCount: env.viewLineCount,\r\n lineNumbersDigitCount: env.lineNumbersDigitCount,\r\n typicalHalfwidthCharacterWidth: env.fontInfo.typicalHalfwidthCharacterWidth,\r\n maxDigitWidth: env.fontInfo.maxDigitWidth,\r\n pixelRatio: env.pixelRatio\r\n });\r\n }\r\n static computeContainedMinimapLineCount(input) {\r\n const typicalViewportLineCount = input.height / input.lineHeight;\r\n const extraLinesBeyondLastLine = input.scrollBeyondLastLine ? (typicalViewportLineCount - 1) : 0;\r\n const desiredRatio = (input.viewLineCount + extraLinesBeyondLastLine) / (input.pixelRatio * input.height);\r\n const minimapLineCount = Math.floor(input.viewLineCount / desiredRatio);\r\n return { typicalViewportLineCount, extraLinesBeyondLastLine, desiredRatio, minimapLineCount };\r\n }\r\n static _computeMinimapLayout(input, memory) {\r\n const outerWidth = input.outerWidth;\r\n const outerHeight = input.outerHeight;\r\n const pixelRatio = input.pixelRatio;\r\n if (!input.minimap.enabled) {\r\n return {\r\n renderMinimap: 0 /* None */,\r\n minimapLeft: 0,\r\n minimapWidth: 0,\r\n minimapHeightIsEditorHeight: false,\r\n minimapIsSampling: false,\r\n minimapScale: 1,\r\n minimapLineHeight: 1,\r\n minimapCanvasInnerWidth: 0,\r\n minimapCanvasInnerHeight: Math.floor(pixelRatio * outerHeight),\r\n minimapCanvasOuterWidth: 0,\r\n minimapCanvasOuterHeight: outerHeight,\r\n };\r\n }\r\n // Can use memory if only the `viewLineCount` and `remainingWidth` have changed\r\n const stableMinimapLayoutInput = memory.stableMinimapLayoutInput;\r\n const couldUseMemory = (stableMinimapLayoutInput\r\n // && input.outerWidth === lastMinimapLayoutInput.outerWidth !!! INTENTIONAL OMITTED\r\n && input.outerHeight === stableMinimapLayoutInput.outerHeight\r\n && input.lineHeight === stableMinimapLayoutInput.lineHeight\r\n && input.typicalHalfwidthCharacterWidth === stableMinimapLayoutInput.typicalHalfwidthCharacterWidth\r\n && input.pixelRatio === stableMinimapLayoutInput.pixelRatio\r\n && input.scrollBeyondLastLine === stableMinimapLayoutInput.scrollBeyondLastLine\r\n && input.minimap.enabled === stableMinimapLayoutInput.minimap.enabled\r\n && input.minimap.side === stableMinimapLayoutInput.minimap.side\r\n && input.minimap.size === stableMinimapLayoutInput.minimap.size\r\n && input.minimap.showSlider === stableMinimapLayoutInput.minimap.showSlider\r\n && input.minimap.renderCharacters === stableMinimapLayoutInput.minimap.renderCharacters\r\n && input.minimap.maxColumn === stableMinimapLayoutInput.minimap.maxColumn\r\n && input.minimap.scale === stableMinimapLayoutInput.minimap.scale\r\n && input.verticalScrollbarWidth === stableMinimapLayoutInput.verticalScrollbarWidth\r\n // && input.viewLineCount === lastMinimapLayoutInput.viewLineCount !!! INTENTIONAL OMITTED\r\n // && input.remainingWidth === lastMinimapLayoutInput.remainingWidth !!! INTENTIONAL OMITTED\r\n && input.isViewportWrapping === stableMinimapLayoutInput.isViewportWrapping);\r\n const lineHeight = input.lineHeight;\r\n const typicalHalfwidthCharacterWidth = input.typicalHalfwidthCharacterWidth;\r\n const scrollBeyondLastLine = input.scrollBeyondLastLine;\r\n const minimapRenderCharacters = input.minimap.renderCharacters;\r\n let minimapScale = (pixelRatio >= 2 ? Math.round(input.minimap.scale * 2) : input.minimap.scale);\r\n const minimapMaxColumn = input.minimap.maxColumn;\r\n const minimapSize = input.minimap.size;\r\n const minimapSide = input.minimap.side;\r\n const verticalScrollbarWidth = input.verticalScrollbarWidth;\r\n const viewLineCount = input.viewLineCount;\r\n const remainingWidth = input.remainingWidth;\r\n const isViewportWrapping = input.isViewportWrapping;\r\n const baseCharHeight = minimapRenderCharacters ? 2 : 3;\r\n let minimapCanvasInnerHeight = Math.floor(pixelRatio * outerHeight);\r\n const minimapCanvasOuterHeight = minimapCanvasInnerHeight / pixelRatio;\r\n let minimapHeightIsEditorHeight = false;\r\n let minimapIsSampling = false;\r\n let minimapLineHeight = baseCharHeight * minimapScale;\r\n let minimapCharWidth = minimapScale / pixelRatio;\r\n let minimapWidthMultiplier = 1;\r\n if (minimapSize === 'fill' || minimapSize === 'fit') {\r\n const { typicalViewportLineCount, extraLinesBeyondLastLine, desiredRatio, minimapLineCount } = EditorLayoutInfoComputer.computeContainedMinimapLineCount({\r\n viewLineCount: viewLineCount,\r\n scrollBeyondLastLine: scrollBeyondLastLine,\r\n height: outerHeight,\r\n lineHeight: lineHeight,\r\n pixelRatio: pixelRatio\r\n });\r\n // ratio is intentionally not part of the layout to avoid the layout changing all the time\r\n // when doing sampling\r\n const ratio = viewLineCount / minimapLineCount;\r\n if (ratio > 1) {\r\n minimapHeightIsEditorHeight = true;\r\n minimapIsSampling = true;\r\n minimapScale = 1;\r\n minimapLineHeight = 1;\r\n minimapCharWidth = minimapScale / pixelRatio;\r\n }\r\n else {\r\n let fitBecomesFill = false;\r\n let maxMinimapScale = minimapScale + 1;\r\n if (minimapSize === 'fit') {\r\n const effectiveMinimapHeight = Math.ceil((viewLineCount + extraLinesBeyondLastLine) * minimapLineHeight);\r\n if (isViewportWrapping && couldUseMemory && remainingWidth <= memory.stableFitRemainingWidth) {\r\n // There is a loop when using `fit` and viewport wrapping:\r\n // - view line count impacts minimap layout\r\n // - minimap layout impacts viewport width\r\n // - viewport width impacts view line count\r\n // To break the loop, once we go to a smaller minimap scale, we try to stick with it.\r\n fitBecomesFill = true;\r\n maxMinimapScale = memory.stableFitMaxMinimapScale;\r\n }\r\n else {\r\n fitBecomesFill = (effectiveMinimapHeight > minimapCanvasInnerHeight);\r\n }\r\n }\r\n if (minimapSize === 'fill' || fitBecomesFill) {\r\n minimapHeightIsEditorHeight = true;\r\n const configuredMinimapScale = minimapScale;\r\n minimapLineHeight = Math.min(lineHeight * pixelRatio, Math.max(1, Math.floor(1 / desiredRatio)));\r\n if (isViewportWrapping && couldUseMemory && remainingWidth <= memory.stableFitRemainingWidth) {\r\n // There is a loop when using `fill` and viewport wrapping:\r\n // - view line count impacts minimap layout\r\n // - minimap layout impacts viewport width\r\n // - viewport width impacts view line count\r\n // To break the loop, once we go to a smaller minimap scale, we try to stick with it.\r\n maxMinimapScale = memory.stableFitMaxMinimapScale;\r\n }\r\n minimapScale = Math.min(maxMinimapScale, Math.max(1, Math.floor(minimapLineHeight / baseCharHeight)));\r\n if (minimapScale > configuredMinimapScale) {\r\n minimapWidthMultiplier = Math.min(2, minimapScale / configuredMinimapScale);\r\n }\r\n minimapCharWidth = minimapScale / pixelRatio / minimapWidthMultiplier;\r\n minimapCanvasInnerHeight = Math.ceil((Math.max(typicalViewportLineCount, viewLineCount + extraLinesBeyondLastLine)) * minimapLineHeight);\r\n if (isViewportWrapping) {\r\n // remember for next time\r\n memory.stableMinimapLayoutInput = input;\r\n memory.stableFitRemainingWidth = remainingWidth;\r\n memory.stableFitMaxMinimapScale = minimapScale;\r\n }\r\n else {\r\n memory.stableMinimapLayoutInput = null;\r\n memory.stableFitRemainingWidth = 0;\r\n }\r\n }\r\n }\r\n }\r\n // Given:\r\n // (leaving 2px for the cursor to have space after the last character)\r\n // viewportColumn = (contentWidth - verticalScrollbarWidth - 2) / typicalHalfwidthCharacterWidth\r\n // minimapWidth = viewportColumn * minimapCharWidth\r\n // contentWidth = remainingWidth - minimapWidth\r\n // What are good values for contentWidth and minimapWidth ?\r\n // minimapWidth = ((contentWidth - verticalScrollbarWidth - 2) / typicalHalfwidthCharacterWidth) * minimapCharWidth\r\n // typicalHalfwidthCharacterWidth * minimapWidth = (contentWidth - verticalScrollbarWidth - 2) * minimapCharWidth\r\n // typicalHalfwidthCharacterWidth * minimapWidth = (remainingWidth - minimapWidth - verticalScrollbarWidth - 2) * minimapCharWidth\r\n // (typicalHalfwidthCharacterWidth + minimapCharWidth) * minimapWidth = (remainingWidth - verticalScrollbarWidth - 2) * minimapCharWidth\r\n // minimapWidth = ((remainingWidth - verticalScrollbarWidth - 2) * minimapCharWidth) / (typicalHalfwidthCharacterWidth + minimapCharWidth)\r\n const minimapMaxWidth = Math.floor(minimapMaxColumn * minimapCharWidth);\r\n const minimapWidth = Math.min(minimapMaxWidth, Math.max(0, Math.floor(((remainingWidth - verticalScrollbarWidth - 2) * minimapCharWidth) / (typicalHalfwidthCharacterWidth + minimapCharWidth))) + MINIMAP_GUTTER_WIDTH);\r\n let minimapCanvasInnerWidth = Math.floor(pixelRatio * minimapWidth);\r\n const minimapCanvasOuterWidth = minimapCanvasInnerWidth / pixelRatio;\r\n minimapCanvasInnerWidth = Math.floor(minimapCanvasInnerWidth * minimapWidthMultiplier);\r\n const renderMinimap = (minimapRenderCharacters ? 1 /* Text */ : 2 /* Blocks */);\r\n const minimapLeft = (minimapSide === 'left' ? 0 : (outerWidth - minimapWidth - verticalScrollbarWidth));\r\n return {\r\n renderMinimap,\r\n minimapLeft,\r\n minimapWidth,\r\n minimapHeightIsEditorHeight,\r\n minimapIsSampling,\r\n minimapScale,\r\n minimapLineHeight,\r\n minimapCanvasInnerWidth,\r\n minimapCanvasInnerHeight,\r\n minimapCanvasOuterWidth,\r\n minimapCanvasOuterHeight,\r\n };\r\n }\r\n static computeLayout(options, env) {\r\n const outerWidth = env.outerWidth | 0;\r\n const outerHeight = env.outerHeight | 0;\r\n const lineHeight = env.lineHeight | 0;\r\n const lineNumbersDigitCount = env.lineNumbersDigitCount | 0;\r\n const typicalHalfwidthCharacterWidth = env.typicalHalfwidthCharacterWidth;\r\n const maxDigitWidth = env.maxDigitWidth;\r\n const pixelRatio = env.pixelRatio;\r\n const viewLineCount = env.viewLineCount;\r\n const wordWrapOverride2 = options.get(121 /* wordWrapOverride2 */);\r\n const wordWrapOverride1 = (wordWrapOverride2 === 'inherit' ? options.get(120 /* wordWrapOverride1 */) : wordWrapOverride2);\r\n const wordWrap = (wordWrapOverride1 === 'inherit' ? options.get(116 /* wordWrap */) : wordWrapOverride1);\r\n const wordWrapColumn = options.get(119 /* wordWrapColumn */);\r\n const accessibilitySupport = options.get(2 /* accessibilitySupport */);\r\n const isDominatedByLongLines = env.isDominatedByLongLines;\r\n const showGlyphMargin = options.get(47 /* glyphMargin */);\r\n const showLineNumbers = (options.get(58 /* lineNumbers */).renderType !== 0 /* Off */);\r\n const lineNumbersMinChars = options.get(59 /* lineNumbersMinChars */);\r\n const scrollBeyondLastLine = options.get(93 /* scrollBeyondLastLine */);\r\n const minimap = options.get(63 /* minimap */);\r\n const scrollbar = options.get(91 /* scrollbar */);\r\n const verticalScrollbarWidth = scrollbar.verticalScrollbarSize;\r\n const verticalScrollbarHasArrows = scrollbar.verticalHasArrows;\r\n const scrollbarArrowSize = scrollbar.arrowSize;\r\n const horizontalScrollbarHeight = scrollbar.horizontalScrollbarSize;\r\n const rawLineDecorationsWidth = options.get(56 /* lineDecorationsWidth */);\r\n const folding = options.get(35 /* folding */);\r\n let lineDecorationsWidth;\r\n if (typeof rawLineDecorationsWidth === 'string' && /^\\d+(\\.\\d+)?ch$/.test(rawLineDecorationsWidth)) {\r\n const multiple = parseFloat(rawLineDecorationsWidth.substr(0, rawLineDecorationsWidth.length - 2));\r\n lineDecorationsWidth = EditorIntOption.clampedInt(multiple * typicalHalfwidthCharacterWidth, 0, 0, 1000);\r\n }\r\n else {\r\n lineDecorationsWidth = EditorIntOption.clampedInt(rawLineDecorationsWidth, 0, 0, 1000);\r\n }\r\n if (folding) {\r\n lineDecorationsWidth += 16;\r\n }\r\n let lineNumbersWidth = 0;\r\n if (showLineNumbers) {\r\n const digitCount = Math.max(lineNumbersDigitCount, lineNumbersMinChars);\r\n lineNumbersWidth = Math.round(digitCount * maxDigitWidth);\r\n }\r\n let glyphMarginWidth = 0;\r\n if (showGlyphMargin) {\r\n glyphMarginWidth = lineHeight;\r\n }\r\n let glyphMarginLeft = 0;\r\n let lineNumbersLeft = glyphMarginLeft + glyphMarginWidth;\r\n let decorationsLeft = lineNumbersLeft + lineNumbersWidth;\r\n let contentLeft = decorationsLeft + lineDecorationsWidth;\r\n const remainingWidth = outerWidth - glyphMarginWidth - lineNumbersWidth - lineDecorationsWidth;\r\n let isWordWrapMinified = false;\r\n let isViewportWrapping = false;\r\n let wrappingColumn = -1;\r\n if (accessibilitySupport !== 2 /* Enabled */) {\r\n // See https://github.com/microsoft/vscode/issues/27766\r\n // Never enable wrapping when a screen reader is attached\r\n // because arrow down etc. will not move the cursor in the way\r\n // a screen reader expects.\r\n if (wordWrapOverride1 === 'inherit' && isDominatedByLongLines) {\r\n // Force viewport width wrapping if model is dominated by long lines\r\n isWordWrapMinified = true;\r\n isViewportWrapping = true;\r\n }\r\n else if (wordWrap === 'on' || wordWrap === 'bounded') {\r\n isViewportWrapping = true;\r\n }\r\n else if (wordWrap === 'wordWrapColumn') {\r\n wrappingColumn = wordWrapColumn;\r\n }\r\n }\r\n const minimapLayout = EditorLayoutInfoComputer._computeMinimapLayout({\r\n outerWidth: outerWidth,\r\n outerHeight: outerHeight,\r\n lineHeight: lineHeight,\r\n typicalHalfwidthCharacterWidth: typicalHalfwidthCharacterWidth,\r\n pixelRatio: pixelRatio,\r\n scrollBeyondLastLine: scrollBeyondLastLine,\r\n minimap: minimap,\r\n verticalScrollbarWidth: verticalScrollbarWidth,\r\n viewLineCount: viewLineCount,\r\n remainingWidth: remainingWidth,\r\n isViewportWrapping: isViewportWrapping,\r\n }, env.memory || new ComputeOptionsMemory());\r\n if (minimapLayout.renderMinimap !== 0 /* None */ && minimapLayout.minimapLeft === 0) {\r\n // the minimap is rendered to the left, so move everything to the right\r\n glyphMarginLeft += minimapLayout.minimapWidth;\r\n lineNumbersLeft += minimapLayout.minimapWidth;\r\n decorationsLeft += minimapLayout.minimapWidth;\r\n contentLeft += minimapLayout.minimapWidth;\r\n }\r\n const contentWidth = remainingWidth - minimapLayout.minimapWidth;\r\n // (leaving 2px for the cursor to have space after the last character)\r\n const viewportColumn = Math.max(1, Math.floor((contentWidth - verticalScrollbarWidth - 2) / typicalHalfwidthCharacterWidth));\r\n const verticalArrowSize = (verticalScrollbarHasArrows ? scrollbarArrowSize : 0);\r\n if (isViewportWrapping) {\r\n // compute the actual wrappingColumn\r\n wrappingColumn = Math.max(1, viewportColumn);\r\n if (wordWrap === 'bounded') {\r\n wrappingColumn = Math.min(wrappingColumn, wordWrapColumn);\r\n }\r\n }\r\n return {\r\n width: outerWidth,\r\n height: outerHeight,\r\n glyphMarginLeft: glyphMarginLeft,\r\n glyphMarginWidth: glyphMarginWidth,\r\n lineNumbersLeft: lineNumbersLeft,\r\n lineNumbersWidth: lineNumbersWidth,\r\n decorationsLeft: decorationsLeft,\r\n decorationsWidth: lineDecorationsWidth,\r\n contentLeft: contentLeft,\r\n contentWidth: contentWidth,\r\n minimap: minimapLayout,\r\n viewportColumn: viewportColumn,\r\n isWordWrapMinified: isWordWrapMinified,\r\n isViewportWrapping: isViewportWrapping,\r\n wrappingColumn: wrappingColumn,\r\n verticalScrollbarWidth: verticalScrollbarWidth,\r\n horizontalScrollbarHeight: horizontalScrollbarHeight,\r\n overviewRuler: {\r\n top: verticalArrowSize,\r\n width: verticalScrollbarWidth,\r\n height: (outerHeight - 2 * verticalArrowSize),\r\n right: 0\r\n }\r\n };\r\n }\r\n}\r\nclass EditorLightbulb extends BaseEditorOption {\r\n constructor() {\r\n const defaults = { enabled: true };\r\n super(55 /* lightbulb */, 'lightbulb', defaults, {\r\n 'editor.lightbulb.enabled': {\r\n type: 'boolean',\r\n default: defaults.enabled,\r\n description: nls.localize('codeActions', \"Enables the code action lightbulb in the editor.\")\r\n },\r\n });\r\n }\r\n validate(_input) {\r\n if (!_input || typeof _input !== 'object') {\r\n return this.defaultValue;\r\n }\r\n const input = _input;\r\n return {\r\n enabled: boolean(input.enabled, this.defaultValue.enabled)\r\n };\r\n }\r\n}\r\nclass EditorInlayHints extends BaseEditorOption {\r\n constructor() {\r\n const defaults = { enabled: true, fontSize: 0, fontFamily: '' };\r\n super(125 /* inlayHints */, 'inlayHints', defaults, {\r\n 'editor.inlayHints.enabled': {\r\n type: 'boolean',\r\n default: defaults.enabled,\r\n description: nls.localize('inlayHints.enable', \"Enables the inlay hints in the editor.\")\r\n },\r\n 'editor.inlayHints.fontSize': {\r\n type: 'number',\r\n default: defaults.fontSize,\r\n markdownDescription: nls.localize('inlayHints.fontSize', \"Controls font size of inlay hints in the editor. When set to `0`, the 90% of `#editor.fontSize#` is used.\")\r\n },\r\n 'editor.inlayHints.fontFamily': {\r\n type: 'string',\r\n default: defaults.fontFamily,\r\n description: nls.localize('inlayHints.fontFamily', \"Controls font family of inlay hints in the editor. When set to empty, the `#editor.fontFamily#` is used.\")\r\n },\r\n });\r\n }\r\n validate(_input) {\r\n if (!_input || typeof _input !== 'object') {\r\n return this.defaultValue;\r\n }\r\n const input = _input;\r\n return {\r\n enabled: boolean(input.enabled, this.defaultValue.enabled),\r\n fontSize: EditorIntOption.clampedInt(input.fontSize, this.defaultValue.fontSize, 0, 100),\r\n fontFamily: EditorStringOption.string(input.fontFamily, this.defaultValue.fontFamily)\r\n };\r\n }\r\n}\r\n//#endregion\r\n//#region lineHeight\r\nclass EditorLineHeight extends EditorFloatOption {\r\n constructor() {\r\n super(57 /* lineHeight */, 'lineHeight', EDITOR_FONT_DEFAULTS.lineHeight, x => EditorFloatOption.clamp(x, 0, 150), { markdownDescription: nls.localize('lineHeight', \"Controls the line height. \\n - Use 0 to automatically compute the line height from the font size.\\n - Values between 0 and 8 will be used as a multiplier with the font size.\\n - Values greater than or equal to 8 will be used as effective values.\") });\r\n }\r\n compute(env, options, value) {\r\n // The lineHeight is computed from the fontSize if it is 0.\r\n // Moreover, the final lineHeight respects the editor zoom level.\r\n // So take the result from env.fontInfo\r\n return env.fontInfo.lineHeight;\r\n }\r\n}\r\nclass EditorMinimap extends BaseEditorOption {\r\n constructor() {\r\n const defaults = {\r\n enabled: true,\r\n size: 'proportional',\r\n side: 'right',\r\n showSlider: 'mouseover',\r\n renderCharacters: true,\r\n maxColumn: 120,\r\n scale: 1,\r\n };\r\n super(63 /* minimap */, 'minimap', defaults, {\r\n 'editor.minimap.enabled': {\r\n type: 'boolean',\r\n default: defaults.enabled,\r\n description: nls.localize('minimap.enabled', \"Controls whether the minimap is shown.\")\r\n },\r\n 'editor.minimap.size': {\r\n type: 'string',\r\n enum: ['proportional', 'fill', 'fit'],\r\n enumDescriptions: [\r\n nls.localize('minimap.size.proportional', \"The minimap has the same size as the editor contents (and might scroll).\"),\r\n nls.localize('minimap.size.fill', \"The minimap will stretch or shrink as necessary to fill the height of the editor (no scrolling).\"),\r\n nls.localize('minimap.size.fit', \"The minimap will shrink as necessary to never be larger than the editor (no scrolling).\"),\r\n ],\r\n default: defaults.size,\r\n description: nls.localize('minimap.size', \"Controls the size of the minimap.\")\r\n },\r\n 'editor.minimap.side': {\r\n type: 'string',\r\n enum: ['left', 'right'],\r\n default: defaults.side,\r\n description: nls.localize('minimap.side', \"Controls the side where to render the minimap.\")\r\n },\r\n 'editor.minimap.showSlider': {\r\n type: 'string',\r\n enum: ['always', 'mouseover'],\r\n default: defaults.showSlider,\r\n description: nls.localize('minimap.showSlider', \"Controls when the minimap slider is shown.\")\r\n },\r\n 'editor.minimap.scale': {\r\n type: 'number',\r\n default: defaults.scale,\r\n minimum: 1,\r\n maximum: 3,\r\n enum: [1, 2, 3],\r\n description: nls.localize('minimap.scale', \"Scale of content drawn in the minimap: 1, 2 or 3.\")\r\n },\r\n 'editor.minimap.renderCharacters': {\r\n type: 'boolean',\r\n default: defaults.renderCharacters,\r\n description: nls.localize('minimap.renderCharacters', \"Render the actual characters on a line as opposed to color blocks.\")\r\n },\r\n 'editor.minimap.maxColumn': {\r\n type: 'number',\r\n default: defaults.maxColumn,\r\n description: nls.localize('minimap.maxColumn', \"Limit the width of the minimap to render at most a certain number of columns.\")\r\n }\r\n });\r\n }\r\n validate(_input) {\r\n if (!_input || typeof _input !== 'object') {\r\n return this.defaultValue;\r\n }\r\n const input = _input;\r\n return {\r\n enabled: boolean(input.enabled, this.defaultValue.enabled),\r\n size: stringSet(input.size, this.defaultValue.size, ['proportional', 'fill', 'fit']),\r\n side: stringSet(input.side, this.defaultValue.side, ['right', 'left']),\r\n showSlider: stringSet(input.showSlider, this.defaultValue.showSlider, ['always', 'mouseover']),\r\n renderCharacters: boolean(input.renderCharacters, this.defaultValue.renderCharacters),\r\n scale: EditorIntOption.clampedInt(input.scale, 1, 1, 3),\r\n maxColumn: EditorIntOption.clampedInt(input.maxColumn, this.defaultValue.maxColumn, 1, 10000),\r\n };\r\n }\r\n}\r\n//#endregion\r\n//#region multiCursorModifier\r\nfunction _multiCursorModifierFromString(multiCursorModifier) {\r\n if (multiCursorModifier === 'ctrlCmd') {\r\n return (platform.isMacintosh ? 'metaKey' : 'ctrlKey');\r\n }\r\n return 'altKey';\r\n}\r\nclass EditorPadding extends BaseEditorOption {\r\n constructor() {\r\n super(73 /* padding */, 'padding', { top: 0, bottom: 0 }, {\r\n 'editor.padding.top': {\r\n type: 'number',\r\n default: 0,\r\n minimum: 0,\r\n maximum: 1000,\r\n description: nls.localize('padding.top', \"Controls the amount of space between the top edge of the editor and the first line.\")\r\n },\r\n 'editor.padding.bottom': {\r\n type: 'number',\r\n default: 0,\r\n minimum: 0,\r\n maximum: 1000,\r\n description: nls.localize('padding.bottom', \"Controls the amount of space between the bottom edge of the editor and the last line.\")\r\n }\r\n });\r\n }\r\n validate(_input) {\r\n if (!_input || typeof _input !== 'object') {\r\n return this.defaultValue;\r\n }\r\n const input = _input;\r\n return {\r\n top: EditorIntOption.clampedInt(input.top, 0, 0, 1000),\r\n bottom: EditorIntOption.clampedInt(input.bottom, 0, 0, 1000)\r\n };\r\n }\r\n}\r\nclass EditorParameterHints extends BaseEditorOption {\r\n constructor() {\r\n const defaults = {\r\n enabled: true,\r\n cycle: false\r\n };\r\n super(74 /* parameterHints */, 'parameterHints', defaults, {\r\n 'editor.parameterHints.enabled': {\r\n type: 'boolean',\r\n default: defaults.enabled,\r\n description: nls.localize('parameterHints.enabled', \"Enables a pop-up that shows parameter documentation and type information as you type.\")\r\n },\r\n 'editor.parameterHints.cycle': {\r\n type: 'boolean',\r\n default: defaults.cycle,\r\n description: nls.localize('parameterHints.cycle', \"Controls whether the parameter hints menu cycles or closes when reaching the end of the list.\")\r\n },\r\n });\r\n }\r\n validate(_input) {\r\n if (!_input || typeof _input !== 'object') {\r\n return this.defaultValue;\r\n }\r\n const input = _input;\r\n return {\r\n enabled: boolean(input.enabled, this.defaultValue.enabled),\r\n cycle: boolean(input.cycle, this.defaultValue.cycle)\r\n };\r\n }\r\n}\r\n//#endregion\r\n//#region pixelRatio\r\nclass EditorPixelRatio extends ComputedEditorOption {\r\n constructor() {\r\n super(127 /* pixelRatio */);\r\n }\r\n compute(env, options, _) {\r\n return env.pixelRatio;\r\n }\r\n}\r\nclass EditorQuickSuggestions extends BaseEditorOption {\r\n constructor() {\r\n const defaults = {\r\n other: true,\r\n comments: false,\r\n strings: false\r\n };\r\n super(77 /* quickSuggestions */, 'quickSuggestions', defaults, {\r\n anyOf: [\r\n {\r\n type: 'boolean',\r\n },\r\n {\r\n type: 'object',\r\n properties: {\r\n strings: {\r\n type: 'boolean',\r\n default: defaults.strings,\r\n description: nls.localize('quickSuggestions.strings', \"Enable quick suggestions inside strings.\")\r\n },\r\n comments: {\r\n type: 'boolean',\r\n default: defaults.comments,\r\n description: nls.localize('quickSuggestions.comments', \"Enable quick suggestions inside comments.\")\r\n },\r\n other: {\r\n type: 'boolean',\r\n default: defaults.other,\r\n description: nls.localize('quickSuggestions.other', \"Enable quick suggestions outside of strings and comments.\")\r\n },\r\n }\r\n }\r\n ],\r\n default: defaults,\r\n description: nls.localize('quickSuggestions', \"Controls whether suggestions should automatically show up while typing.\")\r\n });\r\n this.defaultValue = defaults;\r\n }\r\n validate(_input) {\r\n if (typeof _input === 'boolean') {\r\n return _input;\r\n }\r\n if (_input && typeof _input === 'object') {\r\n const input = _input;\r\n const opts = {\r\n other: boolean(input.other, this.defaultValue.other),\r\n comments: boolean(input.comments, this.defaultValue.comments),\r\n strings: boolean(input.strings, this.defaultValue.strings),\r\n };\r\n if (opts.other && opts.comments && opts.strings) {\r\n return true; // all on\r\n }\r\n else if (!opts.other && !opts.comments && !opts.strings) {\r\n return false; // all off\r\n }\r\n else {\r\n return opts;\r\n }\r\n }\r\n return this.defaultValue;\r\n }\r\n}\r\nclass EditorRenderLineNumbersOption extends BaseEditorOption {\r\n constructor() {\r\n super(58 /* lineNumbers */, 'lineNumbers', { renderType: 1 /* On */, renderFn: null }, {\r\n type: 'string',\r\n enum: ['off', 'on', 'relative', 'interval'],\r\n enumDescriptions: [\r\n nls.localize('lineNumbers.off', \"Line numbers are not rendered.\"),\r\n nls.localize('lineNumbers.on', \"Line numbers are rendered as absolute number.\"),\r\n nls.localize('lineNumbers.relative', \"Line numbers are rendered as distance in lines to cursor position.\"),\r\n nls.localize('lineNumbers.interval', \"Line numbers are rendered every 10 lines.\")\r\n ],\r\n default: 'on',\r\n description: nls.localize('lineNumbers', \"Controls the display of line numbers.\")\r\n });\r\n }\r\n validate(lineNumbers) {\r\n let renderType = this.defaultValue.renderType;\r\n let renderFn = this.defaultValue.renderFn;\r\n if (typeof lineNumbers !== 'undefined') {\r\n if (typeof lineNumbers === 'function') {\r\n renderType = 4 /* Custom */;\r\n renderFn = lineNumbers;\r\n }\r\n else if (lineNumbers === 'interval') {\r\n renderType = 3 /* Interval */;\r\n }\r\n else if (lineNumbers === 'relative') {\r\n renderType = 2 /* Relative */;\r\n }\r\n else if (lineNumbers === 'on') {\r\n renderType = 1 /* On */;\r\n }\r\n else {\r\n renderType = 0 /* Off */;\r\n }\r\n }\r\n return {\r\n renderType,\r\n renderFn\r\n };\r\n }\r\n}\r\n//#endregion\r\n//#region renderValidationDecorations\r\n/**\r\n * @internal\r\n */\r\nexport function filterValidationDecorations(options) {\r\n const renderValidationDecorations = options.get(86 /* renderValidationDecorations */);\r\n if (renderValidationDecorations === 'editable') {\r\n return options.get(79 /* readOnly */);\r\n }\r\n return renderValidationDecorations === 'on' ? false : true;\r\n}\r\nclass EditorRulers extends BaseEditorOption {\r\n constructor() {\r\n const defaults = [];\r\n const columnSchema = { type: 'number', description: nls.localize('rulers.size', \"Number of monospace characters at which this editor ruler will render.\") };\r\n super(90 /* rulers */, 'rulers', defaults, {\r\n type: 'array',\r\n items: {\r\n anyOf: [\r\n columnSchema,\r\n {\r\n type: [\r\n 'object'\r\n ],\r\n properties: {\r\n column: columnSchema,\r\n color: {\r\n type: 'string',\r\n description: nls.localize('rulers.color', \"Color of this editor ruler.\"),\r\n format: 'color-hex'\r\n }\r\n }\r\n }\r\n ]\r\n },\r\n default: defaults,\r\n description: nls.localize('rulers', \"Render vertical rulers after a certain number of monospace characters. Use multiple values for multiple rulers. No rulers are drawn if array is empty.\")\r\n });\r\n }\r\n validate(input) {\r\n if (Array.isArray(input)) {\r\n let rulers = [];\r\n for (let _element of input) {\r\n if (typeof _element === 'number') {\r\n rulers.push({\r\n column: EditorIntOption.clampedInt(_element, 0, 0, 10000),\r\n color: null\r\n });\r\n }\r\n else if (_element && typeof _element === 'object') {\r\n const element = _element;\r\n rulers.push({\r\n column: EditorIntOption.clampedInt(element.column, 0, 0, 10000),\r\n color: element.color\r\n });\r\n }\r\n }\r\n rulers.sort((a, b) => a.column - b.column);\r\n return rulers;\r\n }\r\n return this.defaultValue;\r\n }\r\n}\r\nfunction _scrollbarVisibilityFromString(visibility, defaultValue) {\r\n if (typeof visibility !== 'string') {\r\n return defaultValue;\r\n }\r\n switch (visibility) {\r\n case 'hidden': return 2 /* Hidden */;\r\n case 'visible': return 3 /* Visible */;\r\n default: return 1 /* Auto */;\r\n }\r\n}\r\nclass EditorScrollbar extends BaseEditorOption {\r\n constructor() {\r\n const defaults = {\r\n vertical: 1 /* Auto */,\r\n horizontal: 1 /* Auto */,\r\n arrowSize: 11,\r\n useShadows: true,\r\n verticalHasArrows: false,\r\n horizontalHasArrows: false,\r\n horizontalScrollbarSize: 12,\r\n horizontalSliderSize: 12,\r\n verticalScrollbarSize: 14,\r\n verticalSliderSize: 14,\r\n handleMouseWheel: true,\r\n alwaysConsumeMouseWheel: true,\r\n scrollByPage: false\r\n };\r\n super(91 /* scrollbar */, 'scrollbar', defaults, {\r\n 'editor.scrollbar.vertical': {\r\n type: 'string',\r\n enum: ['auto', 'visible', 'hidden'],\r\n enumDescriptions: [\r\n nls.localize('scrollbar.vertical.auto', \"The vertical scrollbar will be visible only when necessary.\"),\r\n nls.localize('scrollbar.vertical.visible', \"The vertical scrollbar will always be visible.\"),\r\n nls.localize('scrollbar.vertical.fit', \"The vertical scrollbar will always be hidden.\"),\r\n ],\r\n default: 'auto',\r\n description: nls.localize('scrollbar.vertical', \"Controls the visibility of the vertical scrollbar.\")\r\n },\r\n 'editor.scrollbar.horizontal': {\r\n type: 'string',\r\n enum: ['auto', 'visible', 'hidden'],\r\n enumDescriptions: [\r\n nls.localize('scrollbar.horizontal.auto', \"The horizontal scrollbar will be visible only when necessary.\"),\r\n nls.localize('scrollbar.horizontal.visible', \"The horizontal scrollbar will always be visible.\"),\r\n nls.localize('scrollbar.horizontal.fit', \"The horizontal scrollbar will always be hidden.\"),\r\n ],\r\n default: 'auto',\r\n description: nls.localize('scrollbar.horizontal', \"Controls the visibility of the horizontal scrollbar.\")\r\n },\r\n 'editor.scrollbar.verticalScrollbarSize': {\r\n type: 'number',\r\n default: defaults.verticalScrollbarSize,\r\n description: nls.localize('scrollbar.verticalScrollbarSize', \"The width of the vertical scrollbar.\")\r\n },\r\n 'editor.scrollbar.horizontalScrollbarSize': {\r\n type: 'number',\r\n default: defaults.horizontalScrollbarSize,\r\n description: nls.localize('scrollbar.horizontalScrollbarSize', \"The height of the horizontal scrollbar.\")\r\n },\r\n 'editor.scrollbar.scrollByPage': {\r\n type: 'boolean',\r\n default: defaults.scrollByPage,\r\n description: nls.localize('scrollbar.scrollByPage', \"Controls whether clicks scroll by page or jump to click position.\")\r\n }\r\n });\r\n }\r\n validate(_input) {\r\n if (!_input || typeof _input !== 'object') {\r\n return this.defaultValue;\r\n }\r\n const input = _input;\r\n const horizontalScrollbarSize = EditorIntOption.clampedInt(input.horizontalScrollbarSize, this.defaultValue.horizontalScrollbarSize, 0, 1000);\r\n const verticalScrollbarSize = EditorIntOption.clampedInt(input.verticalScrollbarSize, this.defaultValue.verticalScrollbarSize, 0, 1000);\r\n return {\r\n arrowSize: EditorIntOption.clampedInt(input.arrowSize, this.defaultValue.arrowSize, 0, 1000),\r\n vertical: _scrollbarVisibilityFromString(input.vertical, this.defaultValue.vertical),\r\n horizontal: _scrollbarVisibilityFromString(input.horizontal, this.defaultValue.horizontal),\r\n useShadows: boolean(input.useShadows, this.defaultValue.useShadows),\r\n verticalHasArrows: boolean(input.verticalHasArrows, this.defaultValue.verticalHasArrows),\r\n horizontalHasArrows: boolean(input.horizontalHasArrows, this.defaultValue.horizontalHasArrows),\r\n handleMouseWheel: boolean(input.handleMouseWheel, this.defaultValue.handleMouseWheel),\r\n alwaysConsumeMouseWheel: boolean(input.alwaysConsumeMouseWheel, this.defaultValue.alwaysConsumeMouseWheel),\r\n horizontalScrollbarSize: horizontalScrollbarSize,\r\n horizontalSliderSize: EditorIntOption.clampedInt(input.horizontalSliderSize, horizontalScrollbarSize, 0, 1000),\r\n verticalScrollbarSize: verticalScrollbarSize,\r\n verticalSliderSize: EditorIntOption.clampedInt(input.verticalSliderSize, verticalScrollbarSize, 0, 1000),\r\n scrollByPage: boolean(input.scrollByPage, this.defaultValue.scrollByPage),\r\n };\r\n }\r\n}\r\n/**\r\n * Configuration options for inline suggestions\r\n */\r\nclass InlineEditorSuggest extends BaseEditorOption {\r\n constructor() {\r\n const defaults = {\r\n enabled: false,\r\n mode: 'subwordSmart'\r\n };\r\n super(53 /* inlineSuggest */, 'inlineSuggest', defaults, {\r\n 'editor.inlineSuggest.enabled': {\r\n type: 'boolean',\r\n default: defaults.enabled,\r\n description: nls.localize('inlineSuggest.enabled', \"Controls whether to automatically show inline suggestions in the editor.\")\r\n },\r\n 'editor.inlineSuggest.mode': {\r\n type: 'string',\r\n enum: ['prefix', 'subword', 'subwordSmart'],\r\n enumDescriptions: [\r\n nls.localize('inlineSuggest.mode.prefix', \"Only render an inline suggestion if the replace text is a prefix of the insert text.\"),\r\n nls.localize('inlineSuggest.mode.subword', \"Only render an inline suggestion if the replace text is a subword of the insert text.\"),\r\n nls.localize('inlineSuggest.mode.subwordSmart', \"Only render an inline suggestion if the replace text is a subword of the insert text, but the subword must start after the cursor.\"),\r\n ],\r\n default: defaults.mode,\r\n description: nls.localize('inlineSuggest.mode', \"Controls which mode to use for rendering inline suggestions.\")\r\n },\r\n });\r\n }\r\n validate(_input) {\r\n if (!_input || typeof _input !== 'object') {\r\n return this.defaultValue;\r\n }\r\n const input = _input;\r\n return {\r\n enabled: boolean(input.enabled, this.defaultValue.enabled),\r\n mode: stringSet(input.mode, this.defaultValue.mode, ['prefix', 'subword', 'subwordSmart']),\r\n };\r\n }\r\n}\r\nclass EditorSuggest extends BaseEditorOption {\r\n constructor() {\r\n const defaults = {\r\n insertMode: 'insert',\r\n filterGraceful: true,\r\n snippetsPreventQuickSuggestions: true,\r\n localityBonus: false,\r\n shareSuggestSelections: false,\r\n showIcons: true,\r\n showStatusBar: false,\r\n preview: false,\r\n previewMode: 'subwordSmart',\r\n showInlineDetails: true,\r\n showMethods: true,\r\n showFunctions: true,\r\n showConstructors: true,\r\n showDeprecated: true,\r\n showFields: true,\r\n showVariables: true,\r\n showClasses: true,\r\n showStructs: true,\r\n showInterfaces: true,\r\n showModules: true,\r\n showProperties: true,\r\n showEvents: true,\r\n showOperators: true,\r\n showUnits: true,\r\n showValues: true,\r\n showConstants: true,\r\n showEnums: true,\r\n showEnumMembers: true,\r\n showKeywords: true,\r\n showWords: true,\r\n showColors: true,\r\n showFiles: true,\r\n showReferences: true,\r\n showFolders: true,\r\n showTypeParameters: true,\r\n showSnippets: true,\r\n showUsers: true,\r\n showIssues: true,\r\n };\r\n super(105 /* suggest */, 'suggest', defaults, {\r\n 'editor.suggest.insertMode': {\r\n type: 'string',\r\n enum: ['insert', 'replace'],\r\n enumDescriptions: [\r\n nls.localize('suggest.insertMode.insert', \"Insert suggestion without overwriting text right of the cursor.\"),\r\n nls.localize('suggest.insertMode.replace', \"Insert suggestion and overwrite text right of the cursor.\"),\r\n ],\r\n default: defaults.insertMode,\r\n description: nls.localize('suggest.insertMode', \"Controls whether words are overwritten when accepting completions. Note that this depends on extensions opting into this feature.\")\r\n },\r\n 'editor.suggest.filterGraceful': {\r\n type: 'boolean',\r\n default: defaults.filterGraceful,\r\n description: nls.localize('suggest.filterGraceful', \"Controls whether filtering and sorting suggestions accounts for small typos.\")\r\n },\r\n 'editor.suggest.localityBonus': {\r\n type: 'boolean',\r\n default: defaults.localityBonus,\r\n description: nls.localize('suggest.localityBonus', \"Controls whether sorting favors words that appear close to the cursor.\")\r\n },\r\n 'editor.suggest.shareSuggestSelections': {\r\n type: 'boolean',\r\n default: defaults.shareSuggestSelections,\r\n markdownDescription: nls.localize('suggest.shareSuggestSelections', \"Controls whether remembered suggestion selections are shared between multiple workspaces and windows (needs `#editor.suggestSelection#`).\")\r\n },\r\n 'editor.suggest.snippetsPreventQuickSuggestions': {\r\n type: 'boolean',\r\n default: defaults.snippetsPreventQuickSuggestions,\r\n description: nls.localize('suggest.snippetsPreventQuickSuggestions', \"Controls whether an active snippet prevents quick suggestions.\")\r\n },\r\n 'editor.suggest.showIcons': {\r\n type: 'boolean',\r\n default: defaults.showIcons,\r\n description: nls.localize('suggest.showIcons', \"Controls whether to show or hide icons in suggestions.\")\r\n },\r\n 'editor.suggest.showStatusBar': {\r\n type: 'boolean',\r\n default: defaults.showStatusBar,\r\n description: nls.localize('suggest.showStatusBar', \"Controls the visibility of the status bar at the bottom of the suggest widget.\")\r\n },\r\n 'editor.suggest.preview': {\r\n type: 'boolean',\r\n default: defaults.preview,\r\n description: nls.localize('suggest.preview', \"Controls whether to preview the suggestion outcome in the editor.\")\r\n },\r\n 'editor.suggest.previewMode': {\r\n type: 'string',\r\n enum: ['prefix', 'subword', 'subwordSmart'],\r\n enumDescriptions: [\r\n nls.localize('suggest.previewMode.prefix', \"Only render a preview if the replace text is a prefix of the insert text.\"),\r\n nls.localize('suggest.previewMode.subword', \"Only render a preview if the replace text is a subword of the insert text.\"),\r\n nls.localize('suggest.previewMode.subwordSmart', \"Render a preview if the replace text is a subword of the insert text, or if it is a prefix of the insert text.\"),\r\n ],\r\n default: defaults.previewMode,\r\n description: nls.localize('suggest.previewMode', \"Controls which mode to use for rendering the suggest preview.\")\r\n },\r\n 'editor.suggest.showInlineDetails': {\r\n type: 'boolean',\r\n default: defaults.showInlineDetails,\r\n description: nls.localize('suggest.showInlineDetails', \"Controls whether suggest details show inline with the label or only in the details widget\")\r\n },\r\n 'editor.suggest.maxVisibleSuggestions': {\r\n type: 'number',\r\n deprecationMessage: nls.localize('suggest.maxVisibleSuggestions.dep', \"This setting is deprecated. The suggest widget can now be resized.\"),\r\n },\r\n 'editor.suggest.filteredTypes': {\r\n type: 'object',\r\n deprecationMessage: nls.localize('deprecated', \"This setting is deprecated, please use separate settings like 'editor.suggest.showKeywords' or 'editor.suggest.showSnippets' instead.\")\r\n },\r\n 'editor.suggest.showMethods': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showMethods', \"When enabled IntelliSense shows `method`-suggestions.\")\r\n },\r\n 'editor.suggest.showFunctions': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showFunctions', \"When enabled IntelliSense shows `function`-suggestions.\")\r\n },\r\n 'editor.suggest.showConstructors': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showConstructors', \"When enabled IntelliSense shows `constructor`-suggestions.\")\r\n },\r\n 'editor.suggest.showDeprecated': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showDeprecated', \"When enabled IntelliSense shows `deprecated`-suggestions.\")\r\n },\r\n 'editor.suggest.showFields': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showFields', \"When enabled IntelliSense shows `field`-suggestions.\")\r\n },\r\n 'editor.suggest.showVariables': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showVariables', \"When enabled IntelliSense shows `variable`-suggestions.\")\r\n },\r\n 'editor.suggest.showClasses': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showClasss', \"When enabled IntelliSense shows `class`-suggestions.\")\r\n },\r\n 'editor.suggest.showStructs': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showStructs', \"When enabled IntelliSense shows `struct`-suggestions.\")\r\n },\r\n 'editor.suggest.showInterfaces': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showInterfaces', \"When enabled IntelliSense shows `interface`-suggestions.\")\r\n },\r\n 'editor.suggest.showModules': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showModules', \"When enabled IntelliSense shows `module`-suggestions.\")\r\n },\r\n 'editor.suggest.showProperties': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showPropertys', \"When enabled IntelliSense shows `property`-suggestions.\")\r\n },\r\n 'editor.suggest.showEvents': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showEvents', \"When enabled IntelliSense shows `event`-suggestions.\")\r\n },\r\n 'editor.suggest.showOperators': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showOperators', \"When enabled IntelliSense shows `operator`-suggestions.\")\r\n },\r\n 'editor.suggest.showUnits': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showUnits', \"When enabled IntelliSense shows `unit`-suggestions.\")\r\n },\r\n 'editor.suggest.showValues': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showValues', \"When enabled IntelliSense shows `value`-suggestions.\")\r\n },\r\n 'editor.suggest.showConstants': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showConstants', \"When enabled IntelliSense shows `constant`-suggestions.\")\r\n },\r\n 'editor.suggest.showEnums': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showEnums', \"When enabled IntelliSense shows `enum`-suggestions.\")\r\n },\r\n 'editor.suggest.showEnumMembers': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showEnumMembers', \"When enabled IntelliSense shows `enumMember`-suggestions.\")\r\n },\r\n 'editor.suggest.showKeywords': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showKeywords', \"When enabled IntelliSense shows `keyword`-suggestions.\")\r\n },\r\n 'editor.suggest.showWords': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showTexts', \"When enabled IntelliSense shows `text`-suggestions.\")\r\n },\r\n 'editor.suggest.showColors': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showColors', \"When enabled IntelliSense shows `color`-suggestions.\")\r\n },\r\n 'editor.suggest.showFiles': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showFiles', \"When enabled IntelliSense shows `file`-suggestions.\")\r\n },\r\n 'editor.suggest.showReferences': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showReferences', \"When enabled IntelliSense shows `reference`-suggestions.\")\r\n },\r\n 'editor.suggest.showCustomcolors': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showCustomcolors', \"When enabled IntelliSense shows `customcolor`-suggestions.\")\r\n },\r\n 'editor.suggest.showFolders': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showFolders', \"When enabled IntelliSense shows `folder`-suggestions.\")\r\n },\r\n 'editor.suggest.showTypeParameters': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showTypeParameters', \"When enabled IntelliSense shows `typeParameter`-suggestions.\")\r\n },\r\n 'editor.suggest.showSnippets': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showSnippets', \"When enabled IntelliSense shows `snippet`-suggestions.\")\r\n },\r\n 'editor.suggest.showUsers': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showUsers', \"When enabled IntelliSense shows `user`-suggestions.\")\r\n },\r\n 'editor.suggest.showIssues': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showIssues', \"When enabled IntelliSense shows `issues`-suggestions.\")\r\n }\r\n });\r\n }\r\n validate(_input) {\r\n if (!_input || typeof _input !== 'object') {\r\n return this.defaultValue;\r\n }\r\n const input = _input;\r\n return {\r\n insertMode: stringSet(input.insertMode, this.defaultValue.insertMode, ['insert', 'replace']),\r\n filterGraceful: boolean(input.filterGraceful, this.defaultValue.filterGraceful),\r\n snippetsPreventQuickSuggestions: boolean(input.snippetsPreventQuickSuggestions, this.defaultValue.filterGraceful),\r\n localityBonus: boolean(input.localityBonus, this.defaultValue.localityBonus),\r\n shareSuggestSelections: boolean(input.shareSuggestSelections, this.defaultValue.shareSuggestSelections),\r\n showIcons: boolean(input.showIcons, this.defaultValue.showIcons),\r\n showStatusBar: boolean(input.showStatusBar, this.defaultValue.showStatusBar),\r\n preview: boolean(input.preview, this.defaultValue.preview),\r\n previewMode: stringSet(input.previewMode, this.defaultValue.previewMode, ['prefix', 'subword', 'subwordSmart']),\r\n showInlineDetails: boolean(input.showInlineDetails, this.defaultValue.showInlineDetails),\r\n showMethods: boolean(input.showMethods, this.defaultValue.showMethods),\r\n showFunctions: boolean(input.showFunctions, this.defaultValue.showFunctions),\r\n showConstructors: boolean(input.showConstructors, this.defaultValue.showConstructors),\r\n showDeprecated: boolean(input.showDeprecated, this.defaultValue.showDeprecated),\r\n showFields: boolean(input.showFields, this.defaultValue.showFields),\r\n showVariables: boolean(input.showVariables, this.defaultValue.showVariables),\r\n showClasses: boolean(input.showClasses, this.defaultValue.showClasses),\r\n showStructs: boolean(input.showStructs, this.defaultValue.showStructs),\r\n showInterfaces: boolean(input.showInterfaces, this.defaultValue.showInterfaces),\r\n showModules: boolean(input.showModules, this.defaultValue.showModules),\r\n showProperties: boolean(input.showProperties, this.defaultValue.showProperties),\r\n showEvents: boolean(input.showEvents, this.defaultValue.showEvents),\r\n showOperators: boolean(input.showOperators, this.defaultValue.showOperators),\r\n showUnits: boolean(input.showUnits, this.defaultValue.showUnits),\r\n showValues: boolean(input.showValues, this.defaultValue.showValues),\r\n showConstants: boolean(input.showConstants, this.defaultValue.showConstants),\r\n showEnums: boolean(input.showEnums, this.defaultValue.showEnums),\r\n showEnumMembers: boolean(input.showEnumMembers, this.defaultValue.showEnumMembers),\r\n showKeywords: boolean(input.showKeywords, this.defaultValue.showKeywords),\r\n showWords: boolean(input.showWords, this.defaultValue.showWords),\r\n showColors: boolean(input.showColors, this.defaultValue.showColors),\r\n showFiles: boolean(input.showFiles, this.defaultValue.showFiles),\r\n showReferences: boolean(input.showReferences, this.defaultValue.showReferences),\r\n showFolders: boolean(input.showFolders, this.defaultValue.showFolders),\r\n showTypeParameters: boolean(input.showTypeParameters, this.defaultValue.showTypeParameters),\r\n showSnippets: boolean(input.showSnippets, this.defaultValue.showSnippets),\r\n showUsers: boolean(input.showUsers, this.defaultValue.showUsers),\r\n showIssues: boolean(input.showIssues, this.defaultValue.showIssues),\r\n };\r\n }\r\n}\r\nclass SmartSelect extends BaseEditorOption {\r\n constructor() {\r\n super(101 /* smartSelect */, 'smartSelect', {\r\n selectLeadingAndTrailingWhitespace: true\r\n }, {\r\n 'editor.smartSelect.selectLeadingAndTrailingWhitespace': {\r\n description: nls.localize('selectLeadingAndTrailingWhitespace', \"Whether leading and trailing whitespace should always be selected.\"),\r\n default: true,\r\n type: 'boolean'\r\n }\r\n });\r\n }\r\n validate(input) {\r\n if (!input || typeof input !== 'object') {\r\n return this.defaultValue;\r\n }\r\n return {\r\n selectLeadingAndTrailingWhitespace: boolean(input.selectLeadingAndTrailingWhitespace, this.defaultValue.selectLeadingAndTrailingWhitespace)\r\n };\r\n }\r\n}\r\n//#endregion\r\n//#region tabFocusMode\r\nclass EditorTabFocusMode extends ComputedEditorOption {\r\n constructor() {\r\n super(128 /* tabFocusMode */, [79 /* readOnly */]);\r\n }\r\n compute(env, options, _) {\r\n const readOnly = options.get(79 /* readOnly */);\r\n return (readOnly ? true : env.tabFocusMode);\r\n }\r\n}\r\nfunction _wrappingIndentFromString(wrappingIndent) {\r\n switch (wrappingIndent) {\r\n case 'none': return 0 /* None */;\r\n case 'same': return 1 /* Same */;\r\n case 'indent': return 2 /* Indent */;\r\n case 'deepIndent': return 3 /* DeepIndent */;\r\n }\r\n}\r\nclass EditorWrappingInfoComputer extends ComputedEditorOption {\r\n constructor() {\r\n super(130 /* wrappingInfo */, [129 /* layoutInfo */]);\r\n }\r\n compute(env, options, _) {\r\n const layoutInfo = options.get(129 /* layoutInfo */);\r\n return {\r\n isDominatedByLongLines: env.isDominatedByLongLines,\r\n isWordWrapMinified: layoutInfo.isWordWrapMinified,\r\n isViewportWrapping: layoutInfo.isViewportWrapping,\r\n wrappingColumn: layoutInfo.wrappingColumn,\r\n };\r\n }\r\n}\r\n//#endregion\r\nconst DEFAULT_WINDOWS_FONT_FAMILY = 'Consolas, \\'Courier New\\', monospace';\r\nconst DEFAULT_MAC_FONT_FAMILY = 'Menlo, Monaco, \\'Courier New\\', monospace';\r\nconst DEFAULT_LINUX_FONT_FAMILY = '\\'Droid Sans Mono\\', \\'monospace\\', monospace, \\'Droid Sans Fallback\\'';\r\n/**\r\n * @internal\r\n */\r\nexport const EDITOR_FONT_DEFAULTS = {\r\n fontFamily: (platform.isMacintosh ? DEFAULT_MAC_FONT_FAMILY : (platform.isLinux ? DEFAULT_LINUX_FONT_FAMILY : DEFAULT_WINDOWS_FONT_FAMILY)),\r\n fontWeight: 'normal',\r\n fontSize: (platform.isMacintosh ? 12 : 14),\r\n lineHeight: 0,\r\n letterSpacing: 0,\r\n};\r\n/**\r\n * @internal\r\n */\r\nexport const EDITOR_MODEL_DEFAULTS = {\r\n tabSize: 4,\r\n indentSize: 4,\r\n insertSpaces: true,\r\n detectIndentation: true,\r\n trimAutoWhitespace: true,\r\n largeFileOptimizations: true\r\n};\r\n/**\r\n * @internal\r\n */\r\nexport const editorOptionsRegistry = [];\r\nfunction register(option) {\r\n editorOptionsRegistry[option.id] = option;\r\n return option;\r\n}\r\n/**\r\n * WORKAROUND: TS emits \"any\" for complex editor options values (anything except string, bool, enum, etc. ends up being \"any\")\r\n * @monacodtsreplace\r\n * /accessibilitySupport, any/accessibilitySupport, AccessibilitySupport/\r\n * /comments, any/comments, EditorCommentsOptions/\r\n * /find, any/find, EditorFindOptions/\r\n * /fontInfo, any/fontInfo, FontInfo/\r\n * /gotoLocation, any/gotoLocation, GoToLocationOptions/\r\n * /hover, any/hover, EditorHoverOptions/\r\n * /lightbulb, any/lightbulb, EditorLightbulbOptions/\r\n * /minimap, any/minimap, EditorMinimapOptions/\r\n * /parameterHints, any/parameterHints, InternalParameterHintOptions/\r\n * /quickSuggestions, any/quickSuggestions, ValidQuickSuggestionsOptions/\r\n * /suggest, any/suggest, InternalSuggestOptions/\r\n */\r\nexport const EditorOptions = {\r\n acceptSuggestionOnCommitCharacter: register(new EditorBooleanOption(0 /* acceptSuggestionOnCommitCharacter */, 'acceptSuggestionOnCommitCharacter', true, { markdownDescription: nls.localize('acceptSuggestionOnCommitCharacter', \"Controls whether suggestions should be accepted on commit characters. For example, in JavaScript, the semi-colon (`;`) can be a commit character that accepts a suggestion and types that character.\") })),\r\n acceptSuggestionOnEnter: register(new EditorStringEnumOption(1 /* acceptSuggestionOnEnter */, 'acceptSuggestionOnEnter', 'on', ['on', 'smart', 'off'], {\r\n markdownEnumDescriptions: [\r\n '',\r\n nls.localize('acceptSuggestionOnEnterSmart', \"Only accept a suggestion with `Enter` when it makes a textual change.\"),\r\n ''\r\n ],\r\n markdownDescription: nls.localize('acceptSuggestionOnEnter', \"Controls whether suggestions should be accepted on `Enter`, in addition to `Tab`. Helps to avoid ambiguity between inserting new lines or accepting suggestions.\")\r\n })),\r\n accessibilitySupport: register(new EditorAccessibilitySupport()),\r\n accessibilityPageSize: register(new EditorIntOption(3 /* accessibilityPageSize */, 'accessibilityPageSize', 10, 1, 1073741824 /* MAX_SAFE_SMALL_INTEGER */, {\r\n description: nls.localize('accessibilityPageSize', \"Controls the number of lines in the editor that can be read out by a screen reader at once. When we detect a screen reader we automatically set the default to be 500. Warning: this has a performance implication for numbers larger than the default.\")\r\n })),\r\n ariaLabel: register(new EditorStringOption(4 /* ariaLabel */, 'ariaLabel', nls.localize('editorViewAccessibleLabel', \"Editor content\"))),\r\n autoClosingBrackets: register(new EditorStringEnumOption(5 /* autoClosingBrackets */, 'autoClosingBrackets', 'languageDefined', ['always', 'languageDefined', 'beforeWhitespace', 'never'], {\r\n enumDescriptions: [\r\n '',\r\n nls.localize('editor.autoClosingBrackets.languageDefined', \"Use language configurations to determine when to autoclose brackets.\"),\r\n nls.localize('editor.autoClosingBrackets.beforeWhitespace', \"Autoclose brackets only when the cursor is to the left of whitespace.\"),\r\n '',\r\n ],\r\n description: nls.localize('autoClosingBrackets', \"Controls whether the editor should automatically close brackets after the user adds an opening bracket.\")\r\n })),\r\n autoClosingDelete: register(new EditorStringEnumOption(6 /* autoClosingDelete */, 'autoClosingDelete', 'auto', ['always', 'auto', 'never'], {\r\n enumDescriptions: [\r\n '',\r\n nls.localize('editor.autoClosingDelete.auto', \"Remove adjacent closing quotes or brackets only if they were automatically inserted.\"),\r\n '',\r\n ],\r\n description: nls.localize('autoClosingDelete', \"Controls whether the editor should remove adjacent closing quotes or brackets when deleting.\")\r\n })),\r\n autoClosingOvertype: register(new EditorStringEnumOption(7 /* autoClosingOvertype */, 'autoClosingOvertype', 'auto', ['always', 'auto', 'never'], {\r\n enumDescriptions: [\r\n '',\r\n nls.localize('editor.autoClosingOvertype.auto', \"Type over closing quotes or brackets only if they were automatically inserted.\"),\r\n '',\r\n ],\r\n description: nls.localize('autoClosingOvertype', \"Controls whether the editor should type over closing quotes or brackets.\")\r\n })),\r\n autoClosingQuotes: register(new EditorStringEnumOption(8 /* autoClosingQuotes */, 'autoClosingQuotes', 'languageDefined', ['always', 'languageDefined', 'beforeWhitespace', 'never'], {\r\n enumDescriptions: [\r\n '',\r\n nls.localize('editor.autoClosingQuotes.languageDefined', \"Use language configurations to determine when to autoclose quotes.\"),\r\n nls.localize('editor.autoClosingQuotes.beforeWhitespace', \"Autoclose quotes only when the cursor is to the left of whitespace.\"),\r\n '',\r\n ],\r\n description: nls.localize('autoClosingQuotes', \"Controls whether the editor should automatically close quotes after the user adds an opening quote.\")\r\n })),\r\n autoIndent: register(new EditorEnumOption(9 /* autoIndent */, 'autoIndent', 4 /* Full */, 'full', ['none', 'keep', 'brackets', 'advanced', 'full'], _autoIndentFromString, {\r\n enumDescriptions: [\r\n nls.localize('editor.autoIndent.none', \"The editor will not insert indentation automatically.\"),\r\n nls.localize('editor.autoIndent.keep', \"The editor will keep the current line's indentation.\"),\r\n nls.localize('editor.autoIndent.brackets', \"The editor will keep the current line's indentation and honor language defined brackets.\"),\r\n nls.localize('editor.autoIndent.advanced', \"The editor will keep the current line's indentation, honor language defined brackets and invoke special onEnterRules defined by languages.\"),\r\n nls.localize('editor.autoIndent.full', \"The editor will keep the current line's indentation, honor language defined brackets, invoke special onEnterRules defined by languages, and honor indentationRules defined by languages.\"),\r\n ],\r\n description: nls.localize('autoIndent', \"Controls whether the editor should automatically adjust the indentation when users type, paste, move or indent lines.\")\r\n })),\r\n automaticLayout: register(new EditorBooleanOption(10 /* automaticLayout */, 'automaticLayout', false)),\r\n autoSurround: register(new EditorStringEnumOption(11 /* autoSurround */, 'autoSurround', 'languageDefined', ['languageDefined', 'quotes', 'brackets', 'never'], {\r\n enumDescriptions: [\r\n nls.localize('editor.autoSurround.languageDefined', \"Use language configurations to determine when to automatically surround selections.\"),\r\n nls.localize('editor.autoSurround.quotes', \"Surround with quotes but not brackets.\"),\r\n nls.localize('editor.autoSurround.brackets', \"Surround with brackets but not quotes.\"),\r\n ''\r\n ],\r\n description: nls.localize('autoSurround', \"Controls whether the editor should automatically surround selections when typing quotes or brackets.\")\r\n })),\r\n stickyTabStops: register(new EditorBooleanOption(103 /* stickyTabStops */, 'stickyTabStops', false, { description: nls.localize('stickyTabStops', \"Emulate selection behavior of tab characters when using spaces for indentation. Selection will stick to tab stops.\") })),\r\n codeLens: register(new EditorBooleanOption(12 /* codeLens */, 'codeLens', true, { description: nls.localize('codeLens', \"Controls whether the editor shows CodeLens.\") })),\r\n codeLensFontFamily: register(new EditorStringOption(13 /* codeLensFontFamily */, 'codeLensFontFamily', '', { description: nls.localize('codeLensFontFamily', \"Controls the font family for CodeLens.\") })),\r\n codeLensFontSize: register(new EditorIntOption(14 /* codeLensFontSize */, 'codeLensFontSize', 0, 0, 100, {\r\n type: 'number',\r\n default: 0,\r\n minimum: 0,\r\n maximum: 100,\r\n markdownDescription: nls.localize('codeLensFontSize', \"Controls the font size in pixels for CodeLens. When set to `0`, the 90% of `#editor.fontSize#` is used.\")\r\n })),\r\n colorDecorators: register(new EditorBooleanOption(15 /* colorDecorators */, 'colorDecorators', true, { description: nls.localize('colorDecorators', \"Controls whether the editor should render the inline color decorators and color picker.\") })),\r\n columnSelection: register(new EditorBooleanOption(16 /* columnSelection */, 'columnSelection', false, { description: nls.localize('columnSelection', \"Enable that the selection with the mouse and keys is doing column selection.\") })),\r\n comments: register(new EditorComments()),\r\n contextmenu: register(new EditorBooleanOption(18 /* contextmenu */, 'contextmenu', true)),\r\n copyWithSyntaxHighlighting: register(new EditorBooleanOption(19 /* copyWithSyntaxHighlighting */, 'copyWithSyntaxHighlighting', true, { description: nls.localize('copyWithSyntaxHighlighting', \"Controls whether syntax highlighting should be copied into the clipboard.\") })),\r\n cursorBlinking: register(new EditorEnumOption(20 /* cursorBlinking */, 'cursorBlinking', 1 /* Blink */, 'blink', ['blink', 'smooth', 'phase', 'expand', 'solid'], _cursorBlinkingStyleFromString, { description: nls.localize('cursorBlinking', \"Control the cursor animation style.\") })),\r\n cursorSmoothCaretAnimation: register(new EditorBooleanOption(21 /* cursorSmoothCaretAnimation */, 'cursorSmoothCaretAnimation', false, { description: nls.localize('cursorSmoothCaretAnimation', \"Controls whether the smooth caret animation should be enabled.\") })),\r\n cursorStyle: register(new EditorEnumOption(22 /* cursorStyle */, 'cursorStyle', TextEditorCursorStyle.Line, 'line', ['line', 'block', 'underline', 'line-thin', 'block-outline', 'underline-thin'], _cursorStyleFromString, { description: nls.localize('cursorStyle', \"Controls the cursor style.\") })),\r\n cursorSurroundingLines: register(new EditorIntOption(23 /* cursorSurroundingLines */, 'cursorSurroundingLines', 0, 0, 1073741824 /* MAX_SAFE_SMALL_INTEGER */, { description: nls.localize('cursorSurroundingLines', \"Controls the minimal number of visible leading and trailing lines surrounding the cursor. Known as 'scrollOff' or 'scrollOffset' in some other editors.\") })),\r\n cursorSurroundingLinesStyle: register(new EditorStringEnumOption(24 /* cursorSurroundingLinesStyle */, 'cursorSurroundingLinesStyle', 'default', ['default', 'all'], {\r\n enumDescriptions: [\r\n nls.localize('cursorSurroundingLinesStyle.default', \"`cursorSurroundingLines` is enforced only when triggered via the keyboard or API.\"),\r\n nls.localize('cursorSurroundingLinesStyle.all', \"`cursorSurroundingLines` is enforced always.\")\r\n ],\r\n description: nls.localize('cursorSurroundingLinesStyle', \"Controls when `cursorSurroundingLines` should be enforced.\")\r\n })),\r\n cursorWidth: register(new EditorIntOption(25 /* cursorWidth */, 'cursorWidth', 0, 0, 1073741824 /* MAX_SAFE_SMALL_INTEGER */, { markdownDescription: nls.localize('cursorWidth', \"Controls the width of the cursor when `#editor.cursorStyle#` is set to `line`.\") })),\r\n disableLayerHinting: register(new EditorBooleanOption(26 /* disableLayerHinting */, 'disableLayerHinting', false)),\r\n disableMonospaceOptimizations: register(new EditorBooleanOption(27 /* disableMonospaceOptimizations */, 'disableMonospaceOptimizations', false)),\r\n domReadOnly: register(new EditorBooleanOption(28 /* domReadOnly */, 'domReadOnly', false)),\r\n dragAndDrop: register(new EditorBooleanOption(29 /* dragAndDrop */, 'dragAndDrop', true, { description: nls.localize('dragAndDrop', \"Controls whether the editor should allow moving selections via drag and drop.\") })),\r\n emptySelectionClipboard: register(new EditorEmptySelectionClipboard()),\r\n extraEditorClassName: register(new EditorStringOption(31 /* extraEditorClassName */, 'extraEditorClassName', '')),\r\n fastScrollSensitivity: register(new EditorFloatOption(32 /* fastScrollSensitivity */, 'fastScrollSensitivity', 5, x => (x <= 0 ? 5 : x), { markdownDescription: nls.localize('fastScrollSensitivity', \"Scrolling speed multiplier when pressing `Alt`.\") })),\r\n find: register(new EditorFind()),\r\n fixedOverflowWidgets: register(new EditorBooleanOption(34 /* fixedOverflowWidgets */, 'fixedOverflowWidgets', false)),\r\n folding: register(new EditorBooleanOption(35 /* folding */, 'folding', true, { description: nls.localize('folding', \"Controls whether the editor has code folding enabled.\") })),\r\n foldingStrategy: register(new EditorStringEnumOption(36 /* foldingStrategy */, 'foldingStrategy', 'auto', ['auto', 'indentation'], {\r\n enumDescriptions: [\r\n nls.localize('foldingStrategy.auto', \"Use a language-specific folding strategy if available, else the indentation-based one.\"),\r\n nls.localize('foldingStrategy.indentation', \"Use the indentation-based folding strategy.\"),\r\n ],\r\n description: nls.localize('foldingStrategy', \"Controls the strategy for computing folding ranges.\")\r\n })),\r\n foldingHighlight: register(new EditorBooleanOption(37 /* foldingHighlight */, 'foldingHighlight', true, { description: nls.localize('foldingHighlight', \"Controls whether the editor should highlight folded ranges.\") })),\r\n foldingImportsByDefault: register(new EditorBooleanOption(38 /* foldingImportsByDefault */, 'foldingImportsByDefault', false, { description: nls.localize('foldingImportsByDefault', \"Controls whether the editor automatically collapses import ranges.\") })),\r\n unfoldOnClickAfterEndOfLine: register(new EditorBooleanOption(39 /* unfoldOnClickAfterEndOfLine */, 'unfoldOnClickAfterEndOfLine', false, { description: nls.localize('unfoldOnClickAfterEndOfLine', \"Controls whether clicking on the empty content after a folded line will unfold the line.\") })),\r\n fontFamily: register(new EditorStringOption(40 /* fontFamily */, 'fontFamily', EDITOR_FONT_DEFAULTS.fontFamily, { description: nls.localize('fontFamily', \"Controls the font family.\") })),\r\n fontInfo: register(new EditorFontInfo()),\r\n fontLigatures2: register(new EditorFontLigatures()),\r\n fontSize: register(new EditorFontSize()),\r\n fontWeight: register(new EditorFontWeight()),\r\n formatOnPaste: register(new EditorBooleanOption(45 /* formatOnPaste */, 'formatOnPaste', false, { description: nls.localize('formatOnPaste', \"Controls whether the editor should automatically format the pasted content. A formatter must be available and the formatter should be able to format a range in a document.\") })),\r\n formatOnType: register(new EditorBooleanOption(46 /* formatOnType */, 'formatOnType', false, { description: nls.localize('formatOnType', \"Controls whether the editor should automatically format the line after typing.\") })),\r\n glyphMargin: register(new EditorBooleanOption(47 /* glyphMargin */, 'glyphMargin', true, { description: nls.localize('glyphMargin', \"Controls whether the editor should render the vertical glyph margin. Glyph margin is mostly used for debugging.\") })),\r\n gotoLocation: register(new EditorGoToLocation()),\r\n hideCursorInOverviewRuler: register(new EditorBooleanOption(49 /* hideCursorInOverviewRuler */, 'hideCursorInOverviewRuler', false, { description: nls.localize('hideCursorInOverviewRuler', \"Controls whether the cursor should be hidden in the overview ruler.\") })),\r\n highlightActiveIndentGuide: register(new EditorBooleanOption(50 /* highlightActiveIndentGuide */, 'highlightActiveIndentGuide', true, { description: nls.localize('highlightActiveIndentGuide', \"Controls whether the editor should highlight the active indent guide.\") })),\r\n hover: register(new EditorHover()),\r\n inDiffEditor: register(new EditorBooleanOption(52 /* inDiffEditor */, 'inDiffEditor', false)),\r\n letterSpacing: register(new EditorFloatOption(54 /* letterSpacing */, 'letterSpacing', EDITOR_FONT_DEFAULTS.letterSpacing, x => EditorFloatOption.clamp(x, -5, 20), { description: nls.localize('letterSpacing', \"Controls the letter spacing in pixels.\") })),\r\n lightbulb: register(new EditorLightbulb()),\r\n lineDecorationsWidth: register(new SimpleEditorOption(56 /* lineDecorationsWidth */, 'lineDecorationsWidth', 10)),\r\n lineHeight: register(new EditorLineHeight()),\r\n lineNumbers: register(new EditorRenderLineNumbersOption()),\r\n lineNumbersMinChars: register(new EditorIntOption(59 /* lineNumbersMinChars */, 'lineNumbersMinChars', 5, 1, 300)),\r\n linkedEditing: register(new EditorBooleanOption(60 /* linkedEditing */, 'linkedEditing', false, { description: nls.localize('linkedEditing', \"Controls whether the editor has linked editing enabled. Depending on the language, related symbols, e.g. HTML tags, are updated while editing.\") })),\r\n links: register(new EditorBooleanOption(61 /* links */, 'links', true, { description: nls.localize('links', \"Controls whether the editor should detect links and make them clickable.\") })),\r\n matchBrackets: register(new EditorStringEnumOption(62 /* matchBrackets */, 'matchBrackets', 'always', ['always', 'near', 'never'], { description: nls.localize('matchBrackets', \"Highlight matching brackets.\") })),\r\n minimap: register(new EditorMinimap()),\r\n mouseStyle: register(new EditorStringEnumOption(64 /* mouseStyle */, 'mouseStyle', 'text', ['text', 'default', 'copy'])),\r\n mouseWheelScrollSensitivity: register(new EditorFloatOption(65 /* mouseWheelScrollSensitivity */, 'mouseWheelScrollSensitivity', 1, x => (x === 0 ? 1 : x), { markdownDescription: nls.localize('mouseWheelScrollSensitivity', \"A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.\") })),\r\n mouseWheelZoom: register(new EditorBooleanOption(66 /* mouseWheelZoom */, 'mouseWheelZoom', false, { markdownDescription: nls.localize('mouseWheelZoom', \"Zoom the font of the editor when using mouse wheel and holding `Ctrl`.\") })),\r\n multiCursorMergeOverlapping: register(new EditorBooleanOption(67 /* multiCursorMergeOverlapping */, 'multiCursorMergeOverlapping', true, { description: nls.localize('multiCursorMergeOverlapping', \"Merge multiple cursors when they are overlapping.\") })),\r\n multiCursorModifier: register(new EditorEnumOption(68 /* multiCursorModifier */, 'multiCursorModifier', 'altKey', 'alt', ['ctrlCmd', 'alt'], _multiCursorModifierFromString, {\r\n markdownEnumDescriptions: [\r\n nls.localize('multiCursorModifier.ctrlCmd', \"Maps to `Control` on Windows and Linux and to `Command` on macOS.\"),\r\n nls.localize('multiCursorModifier.alt', \"Maps to `Alt` on Windows and Linux and to `Option` on macOS.\")\r\n ],\r\n markdownDescription: nls.localize({\r\n key: 'multiCursorModifier',\r\n comment: [\r\n '- `ctrlCmd` refers to a value the setting can take and should not be localized.',\r\n '- `Control` and `Command` refer to the modifier keys Ctrl or Cmd on the keyboard and can be localized.'\r\n ]\r\n }, \"The modifier to be used to add multiple cursors with the mouse. The Go To Definition and Open Link mouse gestures will adapt such that they do not conflict with the multicursor modifier. [Read more](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modifier).\")\r\n })),\r\n multiCursorPaste: register(new EditorStringEnumOption(69 /* multiCursorPaste */, 'multiCursorPaste', 'spread', ['spread', 'full'], {\r\n markdownEnumDescriptions: [\r\n nls.localize('multiCursorPaste.spread', \"Each cursor pastes a single line of the text.\"),\r\n nls.localize('multiCursorPaste.full', \"Each cursor pastes the full text.\")\r\n ],\r\n markdownDescription: nls.localize('multiCursorPaste', \"Controls pasting when the line count of the pasted text matches the cursor count.\")\r\n })),\r\n occurrencesHighlight: register(new EditorBooleanOption(70 /* occurrencesHighlight */, 'occurrencesHighlight', true, { description: nls.localize('occurrencesHighlight', \"Controls whether the editor should highlight semantic symbol occurrences.\") })),\r\n overviewRulerBorder: register(new EditorBooleanOption(71 /* overviewRulerBorder */, 'overviewRulerBorder', true, { description: nls.localize('overviewRulerBorder', \"Controls whether a border should be drawn around the overview ruler.\") })),\r\n overviewRulerLanes: register(new EditorIntOption(72 /* overviewRulerLanes */, 'overviewRulerLanes', 3, 0, 3)),\r\n padding: register(new EditorPadding()),\r\n parameterHints: register(new EditorParameterHints()),\r\n peekWidgetDefaultFocus: register(new EditorStringEnumOption(75 /* peekWidgetDefaultFocus */, 'peekWidgetDefaultFocus', 'tree', ['tree', 'editor'], {\r\n enumDescriptions: [\r\n nls.localize('peekWidgetDefaultFocus.tree', \"Focus the tree when opening peek\"),\r\n nls.localize('peekWidgetDefaultFocus.editor', \"Focus the editor when opening peek\")\r\n ],\r\n description: nls.localize('peekWidgetDefaultFocus', \"Controls whether to focus the inline editor or the tree in the peek widget.\")\r\n })),\r\n definitionLinkOpensInPeek: register(new EditorBooleanOption(76 /* definitionLinkOpensInPeek */, 'definitionLinkOpensInPeek', false, { description: nls.localize('definitionLinkOpensInPeek', \"Controls whether the Go to Definition mouse gesture always opens the peek widget.\") })),\r\n quickSuggestions: register(new EditorQuickSuggestions()),\r\n quickSuggestionsDelay: register(new EditorIntOption(78 /* quickSuggestionsDelay */, 'quickSuggestionsDelay', 10, 0, 1073741824 /* MAX_SAFE_SMALL_INTEGER */, { description: nls.localize('quickSuggestionsDelay', \"Controls the delay in milliseconds after which quick suggestions will show up.\") })),\r\n readOnly: register(new EditorBooleanOption(79 /* readOnly */, 'readOnly', false)),\r\n renameOnType: register(new EditorBooleanOption(80 /* renameOnType */, 'renameOnType', false, { description: nls.localize('renameOnType', \"Controls whether the editor auto renames on type.\"), markdownDeprecationMessage: nls.localize('renameOnTypeDeprecate', \"Deprecated, use `editor.linkedEditing` instead.\") })),\r\n renderControlCharacters: register(new EditorBooleanOption(81 /* renderControlCharacters */, 'renderControlCharacters', false, { description: nls.localize('renderControlCharacters', \"Controls whether the editor should render control characters.\") })),\r\n renderIndentGuides: register(new EditorBooleanOption(82 /* renderIndentGuides */, 'renderIndentGuides', true, { description: nls.localize('renderIndentGuides', \"Controls whether the editor should render indent guides.\") })),\r\n renderFinalNewline: register(new EditorBooleanOption(83 /* renderFinalNewline */, 'renderFinalNewline', true, { description: nls.localize('renderFinalNewline', \"Render last line number when the file ends with a newline.\") })),\r\n renderLineHighlight: register(new EditorStringEnumOption(84 /* renderLineHighlight */, 'renderLineHighlight', 'line', ['none', 'gutter', 'line', 'all'], {\r\n enumDescriptions: [\r\n '',\r\n '',\r\n '',\r\n nls.localize('renderLineHighlight.all', \"Highlights both the gutter and the current line.\"),\r\n ],\r\n description: nls.localize('renderLineHighlight', \"Controls how the editor should render the current line highlight.\")\r\n })),\r\n renderLineHighlightOnlyWhenFocus: register(new EditorBooleanOption(85 /* renderLineHighlightOnlyWhenFocus */, 'renderLineHighlightOnlyWhenFocus', false, { description: nls.localize('renderLineHighlightOnlyWhenFocus', \"Controls if the editor should render the current line highlight only when the editor is focused.\") })),\r\n renderValidationDecorations: register(new EditorStringEnumOption(86 /* renderValidationDecorations */, 'renderValidationDecorations', 'editable', ['editable', 'on', 'off'])),\r\n renderWhitespace: register(new EditorStringEnumOption(87 /* renderWhitespace */, 'renderWhitespace', 'selection', ['none', 'boundary', 'selection', 'trailing', 'all'], {\r\n enumDescriptions: [\r\n '',\r\n nls.localize('renderWhitespace.boundary', \"Render whitespace characters except for single spaces between words.\"),\r\n nls.localize('renderWhitespace.selection', \"Render whitespace characters only on selected text.\"),\r\n nls.localize('renderWhitespace.trailing', \"Render only trailing whitespace characters.\"),\r\n ''\r\n ],\r\n description: nls.localize('renderWhitespace', \"Controls how the editor should render whitespace characters.\")\r\n })),\r\n revealHorizontalRightPadding: register(new EditorIntOption(88 /* revealHorizontalRightPadding */, 'revealHorizontalRightPadding', 30, 0, 1000)),\r\n roundedSelection: register(new EditorBooleanOption(89 /* roundedSelection */, 'roundedSelection', true, { description: nls.localize('roundedSelection', \"Controls whether selections should have rounded corners.\") })),\r\n rulers: register(new EditorRulers()),\r\n scrollbar: register(new EditorScrollbar()),\r\n scrollBeyondLastColumn: register(new EditorIntOption(92 /* scrollBeyondLastColumn */, 'scrollBeyondLastColumn', 5, 0, 1073741824 /* MAX_SAFE_SMALL_INTEGER */, { description: nls.localize('scrollBeyondLastColumn', \"Controls the number of extra characters beyond which the editor will scroll horizontally.\") })),\r\n scrollBeyondLastLine: register(new EditorBooleanOption(93 /* scrollBeyondLastLine */, 'scrollBeyondLastLine', true, { description: nls.localize('scrollBeyondLastLine', \"Controls whether the editor will scroll beyond the last line.\") })),\r\n scrollPredominantAxis: register(new EditorBooleanOption(94 /* scrollPredominantAxis */, 'scrollPredominantAxis', true, { description: nls.localize('scrollPredominantAxis', \"Scroll only along the predominant axis when scrolling both vertically and horizontally at the same time. Prevents horizontal drift when scrolling vertically on a trackpad.\") })),\r\n selectionClipboard: register(new EditorBooleanOption(95 /* selectionClipboard */, 'selectionClipboard', true, {\r\n description: nls.localize('selectionClipboard', \"Controls whether the Linux primary clipboard should be supported.\"),\r\n included: platform.isLinux\r\n })),\r\n selectionHighlight: register(new EditorBooleanOption(96 /* selectionHighlight */, 'selectionHighlight', true, { description: nls.localize('selectionHighlight', \"Controls whether the editor should highlight matches similar to the selection.\") })),\r\n selectOnLineNumbers: register(new EditorBooleanOption(97 /* selectOnLineNumbers */, 'selectOnLineNumbers', true)),\r\n showFoldingControls: register(new EditorStringEnumOption(98 /* showFoldingControls */, 'showFoldingControls', 'mouseover', ['always', 'mouseover'], {\r\n enumDescriptions: [\r\n nls.localize('showFoldingControls.always', \"Always show the folding controls.\"),\r\n nls.localize('showFoldingControls.mouseover', \"Only show the folding controls when the mouse is over the gutter.\"),\r\n ],\r\n description: nls.localize('showFoldingControls', \"Controls when the folding controls on the gutter are shown.\")\r\n })),\r\n showUnused: register(new EditorBooleanOption(99 /* showUnused */, 'showUnused', true, { description: nls.localize('showUnused', \"Controls fading out of unused code.\") })),\r\n showDeprecated: register(new EditorBooleanOption(124 /* showDeprecated */, 'showDeprecated', true, { description: nls.localize('showDeprecated', \"Controls strikethrough deprecated variables.\") })),\r\n inlayHints: register(new EditorInlayHints()),\r\n snippetSuggestions: register(new EditorStringEnumOption(100 /* snippetSuggestions */, 'snippetSuggestions', 'inline', ['top', 'bottom', 'inline', 'none'], {\r\n enumDescriptions: [\r\n nls.localize('snippetSuggestions.top', \"Show snippet suggestions on top of other suggestions.\"),\r\n nls.localize('snippetSuggestions.bottom', \"Show snippet suggestions below other suggestions.\"),\r\n nls.localize('snippetSuggestions.inline', \"Show snippets suggestions with other suggestions.\"),\r\n nls.localize('snippetSuggestions.none', \"Do not show snippet suggestions.\"),\r\n ],\r\n description: nls.localize('snippetSuggestions', \"Controls whether snippets are shown with other suggestions and how they are sorted.\")\r\n })),\r\n smartSelect: register(new SmartSelect()),\r\n smoothScrolling: register(new EditorBooleanOption(102 /* smoothScrolling */, 'smoothScrolling', false, { description: nls.localize('smoothScrolling', \"Controls whether the editor will scroll using an animation.\") })),\r\n stopRenderingLineAfter: register(new EditorIntOption(104 /* stopRenderingLineAfter */, 'stopRenderingLineAfter', 10000, -1, 1073741824 /* MAX_SAFE_SMALL_INTEGER */)),\r\n suggest: register(new EditorSuggest()),\r\n inlineSuggest: register(new InlineEditorSuggest()),\r\n suggestFontSize: register(new EditorIntOption(106 /* suggestFontSize */, 'suggestFontSize', 0, 0, 1000, { markdownDescription: nls.localize('suggestFontSize', \"Font size for the suggest widget. When set to `0`, the value of `#editor.fontSize#` is used.\") })),\r\n suggestLineHeight: register(new EditorIntOption(107 /* suggestLineHeight */, 'suggestLineHeight', 0, 0, 1000, { markdownDescription: nls.localize('suggestLineHeight', \"Line height for the suggest widget. When set to `0`, the value of `#editor.lineHeight#` is used. The minimum value is 8.\") })),\r\n suggestOnTriggerCharacters: register(new EditorBooleanOption(108 /* suggestOnTriggerCharacters */, 'suggestOnTriggerCharacters', true, { description: nls.localize('suggestOnTriggerCharacters', \"Controls whether suggestions should automatically show up when typing trigger characters.\") })),\r\n suggestSelection: register(new EditorStringEnumOption(109 /* suggestSelection */, 'suggestSelection', 'recentlyUsed', ['first', 'recentlyUsed', 'recentlyUsedByPrefix'], {\r\n markdownEnumDescriptions: [\r\n nls.localize('suggestSelection.first', \"Always select the first suggestion.\"),\r\n nls.localize('suggestSelection.recentlyUsed', \"Select recent suggestions unless further typing selects one, e.g. `console.| -> console.log` because `log` has been completed recently.\"),\r\n nls.localize('suggestSelection.recentlyUsedByPrefix', \"Select suggestions based on previous prefixes that have completed those suggestions, e.g. `co -> console` and `con -> const`.\"),\r\n ],\r\n description: nls.localize('suggestSelection', \"Controls how suggestions are pre-selected when showing the suggest list.\")\r\n })),\r\n tabCompletion: register(new EditorStringEnumOption(110 /* tabCompletion */, 'tabCompletion', 'off', ['on', 'off', 'onlySnippets'], {\r\n enumDescriptions: [\r\n nls.localize('tabCompletion.on', \"Tab complete will insert the best matching suggestion when pressing tab.\"),\r\n nls.localize('tabCompletion.off', \"Disable tab completions.\"),\r\n nls.localize('tabCompletion.onlySnippets', \"Tab complete snippets when their prefix match. Works best when 'quickSuggestions' aren't enabled.\"),\r\n ],\r\n description: nls.localize('tabCompletion', \"Enables tab completions.\")\r\n })),\r\n tabIndex: register(new EditorIntOption(111 /* tabIndex */, 'tabIndex', 0, -1, 1073741824 /* MAX_SAFE_SMALL_INTEGER */)),\r\n unusualLineTerminators: register(new EditorStringEnumOption(112 /* unusualLineTerminators */, 'unusualLineTerminators', 'prompt', ['auto', 'off', 'prompt'], {\r\n enumDescriptions: [\r\n nls.localize('unusualLineTerminators.auto', \"Unusual line terminators are automatically removed.\"),\r\n nls.localize('unusualLineTerminators.off', \"Unusual line terminators are ignored.\"),\r\n nls.localize('unusualLineTerminators.prompt', \"Unusual line terminators prompt to be removed.\"),\r\n ],\r\n description: nls.localize('unusualLineTerminators', \"Remove unusual line terminators that might cause problems.\")\r\n })),\r\n useShadowDOM: register(new EditorBooleanOption(113 /* useShadowDOM */, 'useShadowDOM', true)),\r\n useTabStops: register(new EditorBooleanOption(114 /* useTabStops */, 'useTabStops', true, { description: nls.localize('useTabStops', \"Inserting and deleting whitespace follows tab stops.\") })),\r\n wordSeparators: register(new EditorStringOption(115 /* wordSeparators */, 'wordSeparators', USUAL_WORD_SEPARATORS, { description: nls.localize('wordSeparators', \"Characters that will be used as word separators when doing word related navigations or operations.\") })),\r\n wordWrap: register(new EditorStringEnumOption(116 /* wordWrap */, 'wordWrap', 'off', ['off', 'on', 'wordWrapColumn', 'bounded'], {\r\n markdownEnumDescriptions: [\r\n nls.localize('wordWrap.off', \"Lines will never wrap.\"),\r\n nls.localize('wordWrap.on', \"Lines will wrap at the viewport width.\"),\r\n nls.localize({\r\n key: 'wordWrap.wordWrapColumn',\r\n comment: [\r\n '- `editor.wordWrapColumn` refers to a different setting and should not be localized.'\r\n ]\r\n }, \"Lines will wrap at `#editor.wordWrapColumn#`.\"),\r\n nls.localize({\r\n key: 'wordWrap.bounded',\r\n comment: [\r\n '- viewport means the edge of the visible window size.',\r\n '- `editor.wordWrapColumn` refers to a different setting and should not be localized.'\r\n ]\r\n }, \"Lines will wrap at the minimum of viewport and `#editor.wordWrapColumn#`.\"),\r\n ],\r\n description: nls.localize({\r\n key: 'wordWrap',\r\n comment: [\r\n '- \\'off\\', \\'on\\', \\'wordWrapColumn\\' and \\'bounded\\' refer to values the setting can take and should not be localized.',\r\n '- `editor.wordWrapColumn` refers to a different setting and should not be localized.'\r\n ]\r\n }, \"Controls how lines should wrap.\")\r\n })),\r\n wordWrapBreakAfterCharacters: register(new EditorStringOption(117 /* wordWrapBreakAfterCharacters */, 'wordWrapBreakAfterCharacters', ' \\t})]?|/&.,;¢°′″‰℃、。。、¢,.:;?!%・・ゝゞヽヾーァィゥェォッャュョヮヵヶぁぃぅぇぉっゃゅょゎゕゖㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ々〻ァィゥェォャュョッー”〉》」』】〕)]}」')),\r\n wordWrapBreakBeforeCharacters: register(new EditorStringOption(118 /* wordWrapBreakBeforeCharacters */, 'wordWrapBreakBeforeCharacters', '([{‘“〈《「『【〔([{「£¥$£¥++')),\r\n wordWrapColumn: register(new EditorIntOption(119 /* wordWrapColumn */, 'wordWrapColumn', 80, 1, 1073741824 /* MAX_SAFE_SMALL_INTEGER */, {\r\n markdownDescription: nls.localize({\r\n key: 'wordWrapColumn',\r\n comment: [\r\n '- `editor.wordWrap` refers to a different setting and should not be localized.',\r\n '- \\'wordWrapColumn\\' and \\'bounded\\' refer to values the different setting can take and should not be localized.'\r\n ]\r\n }, \"Controls the wrapping column of the editor when `#editor.wordWrap#` is `wordWrapColumn` or `bounded`.\")\r\n })),\r\n wordWrapOverride1: register(new EditorStringEnumOption(120 /* wordWrapOverride1 */, 'wordWrapOverride1', 'inherit', ['off', 'on', 'inherit'])),\r\n wordWrapOverride2: register(new EditorStringEnumOption(121 /* wordWrapOverride2 */, 'wordWrapOverride2', 'inherit', ['off', 'on', 'inherit'])),\r\n wrappingIndent: register(new EditorEnumOption(122 /* wrappingIndent */, 'wrappingIndent', 1 /* Same */, 'same', ['none', 'same', 'indent', 'deepIndent'], _wrappingIndentFromString, {\r\n enumDescriptions: [\r\n nls.localize('wrappingIndent.none', \"No indentation. Wrapped lines begin at column 1.\"),\r\n nls.localize('wrappingIndent.same', \"Wrapped lines get the same indentation as the parent.\"),\r\n nls.localize('wrappingIndent.indent', \"Wrapped lines get +1 indentation toward the parent.\"),\r\n nls.localize('wrappingIndent.deepIndent', \"Wrapped lines get +2 indentation toward the parent.\"),\r\n ],\r\n description: nls.localize('wrappingIndent', \"Controls the indentation of wrapped lines.\"),\r\n })),\r\n wrappingStrategy: register(new EditorStringEnumOption(123 /* wrappingStrategy */, 'wrappingStrategy', 'simple', ['simple', 'advanced'], {\r\n enumDescriptions: [\r\n nls.localize('wrappingStrategy.simple', \"Assumes that all characters are of the same width. This is a fast algorithm that works correctly for monospace fonts and certain scripts (like Latin characters) where glyphs are of equal width.\"),\r\n nls.localize('wrappingStrategy.advanced', \"Delegates wrapping points computation to the browser. This is a slow algorithm, that might cause freezes for large files, but it works correctly in all cases.\")\r\n ],\r\n description: nls.localize('wrappingStrategy', \"Controls the algorithm that computes wrapping points.\")\r\n })),\r\n // Leave these at the end (because they have dependencies!)\r\n editorClassName: register(new EditorClassName()),\r\n pixelRatio: register(new EditorPixelRatio()),\r\n tabFocusMode: register(new EditorTabFocusMode()),\r\n layoutInfo: register(new EditorLayoutInfoComputer()),\r\n wrappingInfo: register(new EditorWrappingInfoComputer())\r\n};\r\n","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n return desc.value;\n };\n }\n return _get.apply(this, arguments);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","// Avoid circular dependency on EventEmitter by implementing a subset of the interface.\r\nexport class ErrorHandler {\r\n constructor() {\r\n this.listeners = [];\r\n this.unexpectedErrorHandler = function (e) {\r\n setTimeout(() => {\r\n if (e.stack) {\r\n throw new Error(e.message + '\\n\\n' + e.stack);\r\n }\r\n throw e;\r\n }, 0);\r\n };\r\n }\r\n emit(e) {\r\n this.listeners.forEach((listener) => {\r\n listener(e);\r\n });\r\n }\r\n onUnexpectedError(e) {\r\n this.unexpectedErrorHandler(e);\r\n this.emit(e);\r\n }\r\n // For external errors, we don't want the listeners to be called\r\n onUnexpectedExternalError(e) {\r\n this.unexpectedErrorHandler(e);\r\n }\r\n}\r\nexport const errorHandler = new ErrorHandler();\r\nexport function onUnexpectedError(e) {\r\n // ignore errors from cancelled promises\r\n if (!isPromiseCanceledError(e)) {\r\n errorHandler.onUnexpectedError(e);\r\n }\r\n return undefined;\r\n}\r\nexport function onUnexpectedExternalError(e) {\r\n // ignore errors from cancelled promises\r\n if (!isPromiseCanceledError(e)) {\r\n errorHandler.onUnexpectedExternalError(e);\r\n }\r\n return undefined;\r\n}\r\nexport function transformErrorForSerialization(error) {\r\n if (error instanceof Error) {\r\n let { name, message } = error;\r\n const stack = error.stacktrace || error.stack;\r\n return {\r\n $isError: true,\r\n name,\r\n message,\r\n stack\r\n };\r\n }\r\n // return as is\r\n return error;\r\n}\r\nconst canceledName = 'Canceled';\r\n/**\r\n * Checks if the given error is a promise in canceled state\r\n */\r\nexport function isPromiseCanceledError(error) {\r\n return error instanceof Error && error.name === canceledName && error.message === canceledName;\r\n}\r\n/**\r\n * Returns an error that signals cancellation.\r\n */\r\nexport function canceled() {\r\n const error = new Error(canceledName);\r\n error.name = error.message;\r\n return error;\r\n}\r\nexport function illegalArgument(name) {\r\n if (name) {\r\n return new Error(`Illegal argument: ${name}`);\r\n }\r\n else {\r\n return new Error('Illegal argument');\r\n }\r\n}\r\nexport function illegalState(name) {\r\n if (name) {\r\n return new Error(`Illegal state: ${name}`);\r\n }\r\n else {\r\n return new Error('Illegal state');\r\n }\r\n}\r\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport function once(fn) {\r\n const _this = this;\r\n let didCall = false;\r\n let result;\r\n return function () {\r\n if (didCall) {\r\n return result;\r\n }\r\n didCall = true;\r\n result = fn.apply(_this, arguments);\r\n return result;\r\n };\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport var Iterable;\r\n(function (Iterable) {\r\n function is(thing) {\r\n return thing && typeof thing === 'object' && typeof thing[Symbol.iterator] === 'function';\r\n }\r\n Iterable.is = is;\r\n const _empty = Object.freeze([]);\r\n function empty() {\r\n return _empty;\r\n }\r\n Iterable.empty = empty;\r\n function* single(element) {\r\n yield element;\r\n }\r\n Iterable.single = single;\r\n function from(iterable) {\r\n return iterable || _empty;\r\n }\r\n Iterable.from = from;\r\n function isEmpty(iterable) {\r\n return !iterable || iterable[Symbol.iterator]().next().done === true;\r\n }\r\n Iterable.isEmpty = isEmpty;\r\n function first(iterable) {\r\n return iterable[Symbol.iterator]().next().value;\r\n }\r\n Iterable.first = first;\r\n function some(iterable, predicate) {\r\n for (const element of iterable) {\r\n if (predicate(element)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n Iterable.some = some;\r\n function find(iterable, predicate) {\r\n for (const element of iterable) {\r\n if (predicate(element)) {\r\n return element;\r\n }\r\n }\r\n return undefined;\r\n }\r\n Iterable.find = find;\r\n function* filter(iterable, predicate) {\r\n for (const element of iterable) {\r\n if (predicate(element)) {\r\n yield element;\r\n }\r\n }\r\n }\r\n Iterable.filter = filter;\r\n function* map(iterable, fn) {\r\n let index = 0;\r\n for (const element of iterable) {\r\n yield fn(element, index++);\r\n }\r\n }\r\n Iterable.map = map;\r\n function* concat(...iterables) {\r\n for (const iterable of iterables) {\r\n for (const element of iterable) {\r\n yield element;\r\n }\r\n }\r\n }\r\n Iterable.concat = concat;\r\n function* concatNested(iterables) {\r\n for (const iterable of iterables) {\r\n for (const element of iterable) {\r\n yield element;\r\n }\r\n }\r\n }\r\n Iterable.concatNested = concatNested;\r\n function reduce(iterable, reducer, initialValue) {\r\n let value = initialValue;\r\n for (const element of iterable) {\r\n value = reducer(value, element);\r\n }\r\n return value;\r\n }\r\n Iterable.reduce = reduce;\r\n /**\r\n * Returns an iterable slice of the array, with the same semantics as `array.slice()`.\r\n */\r\n function* slice(arr, from, to = arr.length) {\r\n if (from < 0) {\r\n from += arr.length;\r\n }\r\n if (to < 0) {\r\n to += arr.length;\r\n }\r\n else if (to > arr.length) {\r\n to = arr.length;\r\n }\r\n for (; from < to; from++) {\r\n yield arr[from];\r\n }\r\n }\r\n Iterable.slice = slice;\r\n /**\r\n * Consumes `atMost` elements from iterable and returns the consumed elements,\r\n * and an iterable for the rest of the elements.\r\n */\r\n function consume(iterable, atMost = Number.POSITIVE_INFINITY) {\r\n const consumed = [];\r\n if (atMost === 0) {\r\n return [consumed, iterable];\r\n }\r\n const iterator = iterable[Symbol.iterator]();\r\n for (let i = 0; i < atMost; i++) {\r\n const next = iterator.next();\r\n if (next.done) {\r\n return [consumed, Iterable.empty()];\r\n }\r\n consumed.push(next.value);\r\n }\r\n return [consumed, { [Symbol.iterator]() { return iterator; } }];\r\n }\r\n Iterable.consume = consume;\r\n /**\r\n * Returns whether the iterables are the same length and all items are\r\n * equal using the comparator function.\r\n */\r\n function equals(a, b, comparator = (at, bt) => at === bt) {\r\n const ai = a[Symbol.iterator]();\r\n const bi = b[Symbol.iterator]();\r\n while (true) {\r\n const an = ai.next();\r\n const bn = bi.next();\r\n if (an.done !== bn.done) {\r\n return false;\r\n }\r\n else if (an.done) {\r\n return true;\r\n }\r\n else if (!comparator(an.value, bn.value)) {\r\n return false;\r\n }\r\n }\r\n }\r\n Iterable.equals = equals;\r\n})(Iterable || (Iterable = {}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { once } from './functional.js';\r\nimport { Iterable } from './iterator.js';\r\n/**\r\n * Enables logging of potentially leaked disposables.\r\n *\r\n * A disposable is considered leaked if it is not disposed or not registered as the child of\r\n * another disposable. This tracking is very simple an only works for classes that either\r\n * extend Disposable or use a DisposableStore. This means there are a lot of false positives.\r\n */\r\nconst TRACK_DISPOSABLES = false;\r\nlet disposableTracker = null;\r\nexport function setDisposableTracker(tracker) {\r\n disposableTracker = tracker;\r\n}\r\nif (TRACK_DISPOSABLES) {\r\n const __is_disposable_tracked__ = '__is_disposable_tracked__';\r\n setDisposableTracker(new class {\r\n trackDisposable(x) {\r\n const stack = new Error('Potentially leaked disposable').stack;\r\n setTimeout(() => {\r\n if (!x[__is_disposable_tracked__]) {\r\n console.log(stack);\r\n }\r\n }, 3000);\r\n }\r\n setParent(child, parent) {\r\n if (child && child !== Disposable.None) {\r\n try {\r\n child[__is_disposable_tracked__] = true;\r\n }\r\n catch (_a) {\r\n // noop\r\n }\r\n }\r\n }\r\n markAsDisposed(disposable) {\r\n if (disposable && disposable !== Disposable.None) {\r\n try {\r\n disposable[__is_disposable_tracked__] = true;\r\n }\r\n catch (_a) {\r\n // noop\r\n }\r\n }\r\n }\r\n markAsSingleton(disposable) { }\r\n });\r\n}\r\nfunction trackDisposable(x) {\r\n disposableTracker === null || disposableTracker === void 0 ? void 0 : disposableTracker.trackDisposable(x);\r\n return x;\r\n}\r\nfunction markAsDisposed(disposable) {\r\n disposableTracker === null || disposableTracker === void 0 ? void 0 : disposableTracker.markAsDisposed(disposable);\r\n}\r\nfunction setParentOfDisposable(child, parent) {\r\n disposableTracker === null || disposableTracker === void 0 ? void 0 : disposableTracker.setParent(child, parent);\r\n}\r\nfunction setParentOfDisposables(children, parent) {\r\n if (!disposableTracker) {\r\n return;\r\n }\r\n for (const child of children) {\r\n disposableTracker.setParent(child, parent);\r\n }\r\n}\r\n/**\r\n * Indicates that the given object is a singleton which does not need to be disposed.\r\n*/\r\nexport function markAsSingleton(singleton) {\r\n disposableTracker === null || disposableTracker === void 0 ? void 0 : disposableTracker.markAsSingleton(singleton);\r\n return singleton;\r\n}\r\nexport class MultiDisposeError extends Error {\r\n constructor(errors) {\r\n super(`Encountered errors while disposing of store. Errors: [${errors.join(', ')}]`);\r\n this.errors = errors;\r\n }\r\n}\r\nexport function isDisposable(thing) {\r\n return typeof thing.dispose === 'function' && thing.dispose.length === 0;\r\n}\r\nexport function dispose(arg) {\r\n if (Iterable.is(arg)) {\r\n let errors = [];\r\n for (const d of arg) {\r\n if (d) {\r\n try {\r\n d.dispose();\r\n }\r\n catch (e) {\r\n errors.push(e);\r\n }\r\n }\r\n }\r\n if (errors.length === 1) {\r\n throw errors[0];\r\n }\r\n else if (errors.length > 1) {\r\n throw new MultiDisposeError(errors);\r\n }\r\n return Array.isArray(arg) ? [] : arg;\r\n }\r\n else if (arg) {\r\n arg.dispose();\r\n return arg;\r\n }\r\n}\r\nexport function combinedDisposable(...disposables) {\r\n const parent = toDisposable(() => dispose(disposables));\r\n setParentOfDisposables(disposables, parent);\r\n return parent;\r\n}\r\nexport function toDisposable(fn) {\r\n const self = trackDisposable({\r\n dispose: once(() => {\r\n markAsDisposed(self);\r\n fn();\r\n })\r\n });\r\n return self;\r\n}\r\nexport class DisposableStore {\r\n constructor() {\r\n this._toDispose = new Set();\r\n this._isDisposed = false;\r\n trackDisposable(this);\r\n }\r\n /**\r\n * Dispose of all registered disposables and mark this object as disposed.\r\n *\r\n * Any future disposables added to this object will be disposed of on `add`.\r\n */\r\n dispose() {\r\n if (this._isDisposed) {\r\n return;\r\n }\r\n markAsDisposed(this);\r\n this._isDisposed = true;\r\n this.clear();\r\n }\r\n /**\r\n * Dispose of all registered disposables but do not mark this object as disposed.\r\n */\r\n clear() {\r\n try {\r\n dispose(this._toDispose.values());\r\n }\r\n finally {\r\n this._toDispose.clear();\r\n }\r\n }\r\n add(o) {\r\n if (!o) {\r\n return o;\r\n }\r\n if (o === this) {\r\n throw new Error('Cannot register a disposable on itself!');\r\n }\r\n setParentOfDisposable(o, this);\r\n if (this._isDisposed) {\r\n if (!DisposableStore.DISABLE_DISPOSED_WARNING) {\r\n console.warn(new Error('Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!').stack);\r\n }\r\n }\r\n else {\r\n this._toDispose.add(o);\r\n }\r\n return o;\r\n }\r\n}\r\nDisposableStore.DISABLE_DISPOSED_WARNING = false;\r\nexport class Disposable {\r\n constructor() {\r\n this._store = new DisposableStore();\r\n trackDisposable(this);\r\n setParentOfDisposable(this._store, this);\r\n }\r\n dispose() {\r\n markAsDisposed(this);\r\n this._store.dispose();\r\n }\r\n _register(o) {\r\n if (o === this) {\r\n throw new Error('Cannot register a disposable on itself!');\r\n }\r\n return this._store.add(o);\r\n }\r\n}\r\nDisposable.None = Object.freeze({ dispose() { } });\r\n/**\r\n * Manages the lifecycle of a disposable value that may be changed.\r\n *\r\n * This ensures that when the disposable value is changed, the previously held disposable is disposed of. You can\r\n * also register a `MutableDisposable` on a `Disposable` to ensure it is automatically cleaned up.\r\n */\r\nexport class MutableDisposable {\r\n constructor() {\r\n this._isDisposed = false;\r\n trackDisposable(this);\r\n }\r\n get value() {\r\n return this._isDisposed ? undefined : this._value;\r\n }\r\n set value(value) {\r\n var _a;\r\n if (this._isDisposed || value === this._value) {\r\n return;\r\n }\r\n (_a = this._value) === null || _a === void 0 ? void 0 : _a.dispose();\r\n if (value) {\r\n setParentOfDisposable(value, this);\r\n }\r\n this._value = value;\r\n }\r\n clear() {\r\n this.value = undefined;\r\n }\r\n dispose() {\r\n var _a;\r\n this._isDisposed = true;\r\n markAsDisposed(this);\r\n (_a = this._value) === null || _a === void 0 ? void 0 : _a.dispose();\r\n this._value = undefined;\r\n }\r\n /**\r\n * Clears the value, but does not dispose it.\r\n * The old value is returned.\r\n */\r\n clearAndLeak() {\r\n const oldValue = this._value;\r\n this._value = undefined;\r\n if (oldValue) {\r\n setParentOfDisposable(oldValue, null);\r\n }\r\n return oldValue;\r\n }\r\n}\r\nexport class ImmortalReference {\r\n constructor(object) {\r\n this.object = object;\r\n }\r\n dispose() { }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nclass Node {\r\n constructor(element) {\r\n this.element = element;\r\n this.next = Node.Undefined;\r\n this.prev = Node.Undefined;\r\n }\r\n}\r\nNode.Undefined = new Node(undefined);\r\nexport class LinkedList {\r\n constructor() {\r\n this._first = Node.Undefined;\r\n this._last = Node.Undefined;\r\n this._size = 0;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n isEmpty() {\r\n return this._first === Node.Undefined;\r\n }\r\n clear() {\r\n let node = this._first;\r\n while (node !== Node.Undefined) {\r\n const next = node.next;\r\n node.prev = Node.Undefined;\r\n node.next = Node.Undefined;\r\n node = next;\r\n }\r\n this._first = Node.Undefined;\r\n this._last = Node.Undefined;\r\n this._size = 0;\r\n }\r\n unshift(element) {\r\n return this._insert(element, false);\r\n }\r\n push(element) {\r\n return this._insert(element, true);\r\n }\r\n _insert(element, atTheEnd) {\r\n const newNode = new Node(element);\r\n if (this._first === Node.Undefined) {\r\n this._first = newNode;\r\n this._last = newNode;\r\n }\r\n else if (atTheEnd) {\r\n // push\r\n const oldLast = this._last;\r\n this._last = newNode;\r\n newNode.prev = oldLast;\r\n oldLast.next = newNode;\r\n }\r\n else {\r\n // unshift\r\n const oldFirst = this._first;\r\n this._first = newNode;\r\n newNode.next = oldFirst;\r\n oldFirst.prev = newNode;\r\n }\r\n this._size += 1;\r\n let didRemove = false;\r\n return () => {\r\n if (!didRemove) {\r\n didRemove = true;\r\n this._remove(newNode);\r\n }\r\n };\r\n }\r\n shift() {\r\n if (this._first === Node.Undefined) {\r\n return undefined;\r\n }\r\n else {\r\n const res = this._first.element;\r\n this._remove(this._first);\r\n return res;\r\n }\r\n }\r\n pop() {\r\n if (this._last === Node.Undefined) {\r\n return undefined;\r\n }\r\n else {\r\n const res = this._last.element;\r\n this._remove(this._last);\r\n return res;\r\n }\r\n }\r\n _remove(node) {\r\n if (node.prev !== Node.Undefined && node.next !== Node.Undefined) {\r\n // middle\r\n const anchor = node.prev;\r\n anchor.next = node.next;\r\n node.next.prev = anchor;\r\n }\r\n else if (node.prev === Node.Undefined && node.next === Node.Undefined) {\r\n // only node\r\n this._first = Node.Undefined;\r\n this._last = Node.Undefined;\r\n }\r\n else if (node.next === Node.Undefined) {\r\n // last\r\n this._last = this._last.prev;\r\n this._last.next = Node.Undefined;\r\n }\r\n else if (node.prev === Node.Undefined) {\r\n // first\r\n this._first = this._first.next;\r\n this._first.prev = Node.Undefined;\r\n }\r\n // done\r\n this._size -= 1;\r\n }\r\n *[Symbol.iterator]() {\r\n let node = this._first;\r\n while (node !== Node.Undefined) {\r\n yield node.element;\r\n node = node.next;\r\n }\r\n }\r\n}\r\n","import { onUnexpectedError } from './errors.js';\r\nimport { Disposable, combinedDisposable, DisposableStore, toDisposable } from './lifecycle.js';\r\nimport { LinkedList } from './linkedList.js';\r\nimport { StopWatch } from './stopwatch.js';\r\nexport var Event;\r\n(function (Event) {\r\n Event.None = () => Disposable.None;\r\n /**\r\n * Given an event, returns another event which only fires once.\r\n */\r\n function once(event) {\r\n return (listener, thisArgs = null, disposables) => {\r\n // we need this, in case the event fires during the listener call\r\n let didFire = false;\r\n let result;\r\n result = event(e => {\r\n if (didFire) {\r\n return;\r\n }\r\n else if (result) {\r\n result.dispose();\r\n }\r\n else {\r\n didFire = true;\r\n }\r\n return listener.call(thisArgs, e);\r\n }, null, disposables);\r\n if (didFire) {\r\n result.dispose();\r\n }\r\n return result;\r\n };\r\n }\r\n Event.once = once;\r\n /**\r\n * @deprecated DO NOT use, this leaks memory\r\n */\r\n function map(event, map) {\r\n return snapshot((listener, thisArgs = null, disposables) => event(i => listener.call(thisArgs, map(i)), null, disposables));\r\n }\r\n Event.map = map;\r\n /**\r\n * @deprecated DO NOT use, this leaks memory\r\n */\r\n function forEach(event, each) {\r\n return snapshot((listener, thisArgs = null, disposables) => event(i => { each(i); listener.call(thisArgs, i); }, null, disposables));\r\n }\r\n Event.forEach = forEach;\r\n function filter(event, filter) {\r\n return snapshot((listener, thisArgs = null, disposables) => event(e => filter(e) && listener.call(thisArgs, e), null, disposables));\r\n }\r\n Event.filter = filter;\r\n /**\r\n * Given an event, returns the same event but typed as `Event`.\r\n */\r\n function signal(event) {\r\n return event;\r\n }\r\n Event.signal = signal;\r\n function any(...events) {\r\n return (listener, thisArgs = null, disposables) => combinedDisposable(...events.map(event => event(e => listener.call(thisArgs, e), null, disposables)));\r\n }\r\n Event.any = any;\r\n /**\r\n * @deprecated DO NOT use, this leaks memory\r\n */\r\n function reduce(event, merge, initial) {\r\n let output = initial;\r\n return map(event, e => {\r\n output = merge(output, e);\r\n return output;\r\n });\r\n }\r\n Event.reduce = reduce;\r\n /**\r\n * @deprecated DO NOT use, this leaks memory\r\n */\r\n function snapshot(event) {\r\n let listener;\r\n const emitter = new Emitter({\r\n onFirstListenerAdd() {\r\n listener = event(emitter.fire, emitter);\r\n },\r\n onLastListenerRemove() {\r\n listener.dispose();\r\n }\r\n });\r\n return emitter.event;\r\n }\r\n /**\r\n * @deprecated DO NOT use, this leaks memory\r\n */\r\n function debounce(event, merge, delay = 100, leading = false, leakWarningThreshold) {\r\n let subscription;\r\n let output = undefined;\r\n let handle = undefined;\r\n let numDebouncedCalls = 0;\r\n const emitter = new Emitter({\r\n leakWarningThreshold,\r\n onFirstListenerAdd() {\r\n subscription = event(cur => {\r\n numDebouncedCalls++;\r\n output = merge(output, cur);\r\n if (leading && !handle) {\r\n emitter.fire(output);\r\n output = undefined;\r\n }\r\n clearTimeout(handle);\r\n handle = setTimeout(() => {\r\n const _output = output;\r\n output = undefined;\r\n handle = undefined;\r\n if (!leading || numDebouncedCalls > 1) {\r\n emitter.fire(_output);\r\n }\r\n numDebouncedCalls = 0;\r\n }, delay);\r\n });\r\n },\r\n onLastListenerRemove() {\r\n subscription.dispose();\r\n }\r\n });\r\n return emitter.event;\r\n }\r\n Event.debounce = debounce;\r\n /**\r\n * @deprecated DO NOT use, this leaks memory\r\n */\r\n function latch(event, equals = (a, b) => a === b) {\r\n let firstCall = true;\r\n let cache;\r\n return filter(event, value => {\r\n const shouldEmit = firstCall || !equals(value, cache);\r\n firstCall = false;\r\n cache = value;\r\n return shouldEmit;\r\n });\r\n }\r\n Event.latch = latch;\r\n /**\r\n * @deprecated DO NOT use, this leaks memory\r\n */\r\n function split(event, isT) {\r\n return [\r\n Event.filter(event, isT),\r\n Event.filter(event, e => !isT(e)),\r\n ];\r\n }\r\n Event.split = split;\r\n /**\r\n * @deprecated DO NOT use, this leaks memory\r\n */\r\n function buffer(event, nextTick = false, _buffer = []) {\r\n let buffer = _buffer.slice();\r\n let listener = event(e => {\r\n if (buffer) {\r\n buffer.push(e);\r\n }\r\n else {\r\n emitter.fire(e);\r\n }\r\n });\r\n const flush = () => {\r\n if (buffer) {\r\n buffer.forEach(e => emitter.fire(e));\r\n }\r\n buffer = null;\r\n };\r\n const emitter = new Emitter({\r\n onFirstListenerAdd() {\r\n if (!listener) {\r\n listener = event(e => emitter.fire(e));\r\n }\r\n },\r\n onFirstListenerDidAdd() {\r\n if (buffer) {\r\n if (nextTick) {\r\n setTimeout(flush);\r\n }\r\n else {\r\n flush();\r\n }\r\n }\r\n },\r\n onLastListenerRemove() {\r\n if (listener) {\r\n listener.dispose();\r\n }\r\n listener = null;\r\n }\r\n });\r\n return emitter.event;\r\n }\r\n Event.buffer = buffer;\r\n class ChainableEvent {\r\n constructor(event) {\r\n this.event = event;\r\n }\r\n map(fn) {\r\n return new ChainableEvent(map(this.event, fn));\r\n }\r\n forEach(fn) {\r\n return new ChainableEvent(forEach(this.event, fn));\r\n }\r\n filter(fn) {\r\n return new ChainableEvent(filter(this.event, fn));\r\n }\r\n reduce(merge, initial) {\r\n return new ChainableEvent(reduce(this.event, merge, initial));\r\n }\r\n latch() {\r\n return new ChainableEvent(latch(this.event));\r\n }\r\n debounce(merge, delay = 100, leading = false, leakWarningThreshold) {\r\n return new ChainableEvent(debounce(this.event, merge, delay, leading, leakWarningThreshold));\r\n }\r\n on(listener, thisArgs, disposables) {\r\n return this.event(listener, thisArgs, disposables);\r\n }\r\n once(listener, thisArgs, disposables) {\r\n return once(this.event)(listener, thisArgs, disposables);\r\n }\r\n }\r\n /**\r\n * @deprecated DO NOT use, this leaks memory\r\n */\r\n function chain(event) {\r\n return new ChainableEvent(event);\r\n }\r\n Event.chain = chain;\r\n function fromNodeEventEmitter(emitter, eventName, map = id => id) {\r\n const fn = (...args) => result.fire(map(...args));\r\n const onFirstListenerAdd = () => emitter.on(eventName, fn);\r\n const onLastListenerRemove = () => emitter.removeListener(eventName, fn);\r\n const result = new Emitter({ onFirstListenerAdd, onLastListenerRemove });\r\n return result.event;\r\n }\r\n Event.fromNodeEventEmitter = fromNodeEventEmitter;\r\n function fromDOMEventEmitter(emitter, eventName, map = id => id) {\r\n const fn = (...args) => result.fire(map(...args));\r\n const onFirstListenerAdd = () => emitter.addEventListener(eventName, fn);\r\n const onLastListenerRemove = () => emitter.removeEventListener(eventName, fn);\r\n const result = new Emitter({ onFirstListenerAdd, onLastListenerRemove });\r\n return result.event;\r\n }\r\n Event.fromDOMEventEmitter = fromDOMEventEmitter;\r\n function toPromise(event) {\r\n return new Promise(resolve => once(event)(resolve));\r\n }\r\n Event.toPromise = toPromise;\r\n})(Event || (Event = {}));\r\nclass EventProfiling {\r\n constructor(name) {\r\n this._listenerCount = 0;\r\n this._invocationCount = 0;\r\n this._elapsedOverall = 0;\r\n this._name = `${name}_${EventProfiling._idPool++}`;\r\n }\r\n start(listenerCount) {\r\n this._stopWatch = new StopWatch(true);\r\n this._listenerCount = listenerCount;\r\n }\r\n stop() {\r\n if (this._stopWatch) {\r\n const elapsed = this._stopWatch.elapsed();\r\n this._elapsedOverall += elapsed;\r\n this._invocationCount += 1;\r\n console.info(`did FIRE ${this._name}: elapsed_ms: ${elapsed.toFixed(5)}, listener: ${this._listenerCount} (elapsed_overall: ${this._elapsedOverall.toFixed(2)}, invocations: ${this._invocationCount})`);\r\n this._stopWatch = undefined;\r\n }\r\n }\r\n}\r\nEventProfiling._idPool = 0;\r\nlet _globalLeakWarningThreshold = -1;\r\nclass LeakageMonitor {\r\n constructor(customThreshold, name = Math.random().toString(18).slice(2, 5)) {\r\n this.customThreshold = customThreshold;\r\n this.name = name;\r\n this._warnCountdown = 0;\r\n }\r\n dispose() {\r\n if (this._stacks) {\r\n this._stacks.clear();\r\n }\r\n }\r\n check(listenerCount) {\r\n let threshold = _globalLeakWarningThreshold;\r\n if (typeof this.customThreshold === 'number') {\r\n threshold = this.customThreshold;\r\n }\r\n if (threshold <= 0 || listenerCount < threshold) {\r\n return undefined;\r\n }\r\n if (!this._stacks) {\r\n this._stacks = new Map();\r\n }\r\n const stack = new Error().stack.split('\\n').slice(3).join('\\n');\r\n const count = (this._stacks.get(stack) || 0);\r\n this._stacks.set(stack, count + 1);\r\n this._warnCountdown -= 1;\r\n if (this._warnCountdown <= 0) {\r\n // only warn on first exceed and then every time the limit\r\n // is exceeded by 50% again\r\n this._warnCountdown = threshold * 0.5;\r\n // find most frequent listener and print warning\r\n let topStack;\r\n let topCount = 0;\r\n for (const [stack, count] of this._stacks) {\r\n if (!topStack || topCount < count) {\r\n topStack = stack;\r\n topCount = count;\r\n }\r\n }\r\n console.warn(`[${this.name}] potential listener LEAK detected, having ${listenerCount} listeners already. MOST frequent listener (${topCount}):`);\r\n console.warn(topStack);\r\n }\r\n return () => {\r\n const count = (this._stacks.get(stack) || 0);\r\n this._stacks.set(stack, count - 1);\r\n };\r\n }\r\n}\r\n/**\r\n * The Emitter can be used to expose an Event to the public\r\n * to fire it from the insides.\r\n * Sample:\r\n class Document {\r\n\r\n private readonly _onDidChange = new Emitter<(value:string)=>any>();\r\n\r\n public onDidChange = this._onDidChange.event;\r\n\r\n // getter-style\r\n // get onDidChange(): Event<(value:string)=>any> {\r\n // \treturn this._onDidChange.event;\r\n // }\r\n\r\n private _doIt() {\r\n //...\r\n this._onDidChange.fire(value);\r\n }\r\n }\r\n */\r\nexport class Emitter {\r\n constructor(options) {\r\n var _a;\r\n this._disposed = false;\r\n this._options = options;\r\n this._leakageMon = _globalLeakWarningThreshold > 0 ? new LeakageMonitor(this._options && this._options.leakWarningThreshold) : undefined;\r\n this._perfMon = ((_a = this._options) === null || _a === void 0 ? void 0 : _a._profName) ? new EventProfiling(this._options._profName) : undefined;\r\n }\r\n /**\r\n * For the public to allow to subscribe\r\n * to events from this Emitter\r\n */\r\n get event() {\r\n if (!this._event) {\r\n this._event = (listener, thisArgs, disposables) => {\r\n var _a;\r\n if (!this._listeners) {\r\n this._listeners = new LinkedList();\r\n }\r\n const firstListener = this._listeners.isEmpty();\r\n if (firstListener && this._options && this._options.onFirstListenerAdd) {\r\n this._options.onFirstListenerAdd(this);\r\n }\r\n const remove = this._listeners.push(!thisArgs ? listener : [listener, thisArgs]);\r\n if (firstListener && this._options && this._options.onFirstListenerDidAdd) {\r\n this._options.onFirstListenerDidAdd(this);\r\n }\r\n if (this._options && this._options.onListenerDidAdd) {\r\n this._options.onListenerDidAdd(this, listener, thisArgs);\r\n }\r\n // check and record this emitter for potential leakage\r\n const removeMonitor = (_a = this._leakageMon) === null || _a === void 0 ? void 0 : _a.check(this._listeners.size);\r\n const result = toDisposable(() => {\r\n if (removeMonitor) {\r\n removeMonitor();\r\n }\r\n if (!this._disposed) {\r\n remove();\r\n if (this._options && this._options.onLastListenerRemove) {\r\n const hasListeners = (this._listeners && !this._listeners.isEmpty());\r\n if (!hasListeners) {\r\n this._options.onLastListenerRemove(this);\r\n }\r\n }\r\n }\r\n });\r\n if (disposables instanceof DisposableStore) {\r\n disposables.add(result);\r\n }\r\n else if (Array.isArray(disposables)) {\r\n disposables.push(result);\r\n }\r\n return result;\r\n };\r\n }\r\n return this._event;\r\n }\r\n /**\r\n * To be kept private to fire an event to\r\n * subscribers\r\n */\r\n fire(event) {\r\n var _a, _b;\r\n if (this._listeners) {\r\n // put all [listener,event]-pairs into delivery queue\r\n // then emit all event. an inner/nested event might be\r\n // the driver of this\r\n if (!this._deliveryQueue) {\r\n this._deliveryQueue = new LinkedList();\r\n }\r\n for (let listener of this._listeners) {\r\n this._deliveryQueue.push([listener, event]);\r\n }\r\n // start/stop performance insight collection\r\n (_a = this._perfMon) === null || _a === void 0 ? void 0 : _a.start(this._deliveryQueue.size);\r\n while (this._deliveryQueue.size > 0) {\r\n const [listener, event] = this._deliveryQueue.shift();\r\n try {\r\n if (typeof listener === 'function') {\r\n listener.call(undefined, event);\r\n }\r\n else {\r\n listener[0].call(listener[1], event);\r\n }\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n }\r\n }\r\n (_b = this._perfMon) === null || _b === void 0 ? void 0 : _b.stop();\r\n }\r\n }\r\n dispose() {\r\n var _a, _b, _c, _d, _e;\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n (_a = this._listeners) === null || _a === void 0 ? void 0 : _a.clear();\r\n (_b = this._deliveryQueue) === null || _b === void 0 ? void 0 : _b.clear();\r\n (_d = (_c = this._options) === null || _c === void 0 ? void 0 : _c.onLastListenerRemove) === null || _d === void 0 ? void 0 : _d.call(_c);\r\n (_e = this._leakageMon) === null || _e === void 0 ? void 0 : _e.dispose();\r\n }\r\n }\r\n}\r\nexport class PauseableEmitter extends Emitter {\r\n constructor(options) {\r\n super(options);\r\n this._isPaused = 0;\r\n this._eventQueue = new LinkedList();\r\n this._mergeFn = options === null || options === void 0 ? void 0 : options.merge;\r\n }\r\n pause() {\r\n this._isPaused++;\r\n }\r\n resume() {\r\n if (this._isPaused !== 0 && --this._isPaused === 0) {\r\n if (this._mergeFn) {\r\n // use the merge function to create a single composite\r\n // event. make a copy in case firing pauses this emitter\r\n const events = Array.from(this._eventQueue);\r\n this._eventQueue.clear();\r\n super.fire(this._mergeFn(events));\r\n }\r\n else {\r\n // no merging, fire each event individually and test\r\n // that this emitter isn't paused halfway through\r\n while (!this._isPaused && this._eventQueue.size !== 0) {\r\n super.fire(this._eventQueue.shift());\r\n }\r\n }\r\n }\r\n }\r\n fire(event) {\r\n if (this._listeners) {\r\n if (this._isPaused !== 0) {\r\n this._eventQueue.push(event);\r\n }\r\n else {\r\n super.fire(event);\r\n }\r\n }\r\n }\r\n}\r\nexport class DebounceEmitter extends PauseableEmitter {\r\n constructor(options) {\r\n var _a;\r\n super(options);\r\n this._delay = (_a = options.delay) !== null && _a !== void 0 ? _a : 100;\r\n }\r\n fire(event) {\r\n if (!this._handle) {\r\n this.pause();\r\n this._handle = setTimeout(() => {\r\n this._handle = undefined;\r\n this.resume();\r\n }, this._delay);\r\n }\r\n super.fire(event);\r\n }\r\n}\r\n/**\r\n * The EventBufferer is useful in situations in which you want\r\n * to delay firing your events during some code.\r\n * You can wrap that code and be sure that the event will not\r\n * be fired during that wrap.\r\n *\r\n * ```\r\n * const emitter: Emitter;\r\n * const delayer = new EventDelayer();\r\n * const delayedEvent = delayer.wrapEvent(emitter.event);\r\n *\r\n * delayedEvent(console.log);\r\n *\r\n * delayer.bufferEvents(() => {\r\n * emitter.fire(); // event will not be fired yet\r\n * });\r\n *\r\n * // event will only be fired at this point\r\n * ```\r\n */\r\nexport class EventBufferer {\r\n constructor() {\r\n this.buffers = [];\r\n }\r\n wrapEvent(event) {\r\n return (listener, thisArgs, disposables) => {\r\n return event(i => {\r\n const buffer = this.buffers[this.buffers.length - 1];\r\n if (buffer) {\r\n buffer.push(() => listener.call(thisArgs, i));\r\n }\r\n else {\r\n listener.call(thisArgs, i);\r\n }\r\n }, undefined, disposables);\r\n };\r\n }\r\n bufferEvents(fn) {\r\n const buffer = [];\r\n this.buffers.push(buffer);\r\n const r = fn();\r\n this.buffers.pop();\r\n buffer.forEach(flush => flush());\r\n return r;\r\n }\r\n}\r\n/**\r\n * A Relay is an event forwarder which functions as a replugabble event pipe.\r\n * Once created, you can connect an input event to it and it will simply forward\r\n * events from that input event through its own `event` property. The `input`\r\n * can be changed at any point in time.\r\n */\r\nexport class Relay {\r\n constructor() {\r\n this.listening = false;\r\n this.inputEvent = Event.None;\r\n this.inputEventListener = Disposable.None;\r\n this.emitter = new Emitter({\r\n onFirstListenerDidAdd: () => {\r\n this.listening = true;\r\n this.inputEventListener = this.inputEvent(this.emitter.fire, this.emitter);\r\n },\r\n onLastListenerRemove: () => {\r\n this.listening = false;\r\n this.inputEventListener.dispose();\r\n }\r\n });\r\n this.event = this.emitter.event;\r\n }\r\n set input(event) {\r\n this.inputEvent = event;\r\n if (this.listening) {\r\n this.inputEventListener.dispose();\r\n this.inputEventListener = event(this.emitter.fire, this.emitter);\r\n }\r\n }\r\n dispose() {\r\n this.inputEventListener.dispose();\r\n this.emitter.dispose();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { globals } from './platform.js';\r\nconst hasPerformanceNow = (globals.performance && typeof globals.performance.now === 'function');\r\nexport class StopWatch {\r\n constructor(highResolution) {\r\n this._highResolution = hasPerformanceNow && highResolution;\r\n this._startTime = this._now();\r\n this._stopTime = -1;\r\n }\r\n static create(highResolution = true) {\r\n return new StopWatch(highResolution);\r\n }\r\n stop() {\r\n this._stopTime = this._now();\r\n }\r\n elapsed() {\r\n if (this._stopTime !== -1) {\r\n return this._stopTime - this._startTime;\r\n }\r\n return this._now() - this._startTime;\r\n }\r\n _now() {\r\n return this._highResolution ? globals.performance.now() : Date.now();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter, Event } from './event.js';\r\nconst shortcutEvent = Object.freeze(function (callback, context) {\r\n const handle = setTimeout(callback.bind(context), 0);\r\n return { dispose() { clearTimeout(handle); } };\r\n});\r\nexport var CancellationToken;\r\n(function (CancellationToken) {\r\n function isCancellationToken(thing) {\r\n if (thing === CancellationToken.None || thing === CancellationToken.Cancelled) {\r\n return true;\r\n }\r\n if (thing instanceof MutableToken) {\r\n return true;\r\n }\r\n if (!thing || typeof thing !== 'object') {\r\n return false;\r\n }\r\n return typeof thing.isCancellationRequested === 'boolean'\r\n && typeof thing.onCancellationRequested === 'function';\r\n }\r\n CancellationToken.isCancellationToken = isCancellationToken;\r\n CancellationToken.None = Object.freeze({\r\n isCancellationRequested: false,\r\n onCancellationRequested: Event.None\r\n });\r\n CancellationToken.Cancelled = Object.freeze({\r\n isCancellationRequested: true,\r\n onCancellationRequested: shortcutEvent\r\n });\r\n})(CancellationToken || (CancellationToken = {}));\r\nclass MutableToken {\r\n constructor() {\r\n this._isCancelled = false;\r\n this._emitter = null;\r\n }\r\n cancel() {\r\n if (!this._isCancelled) {\r\n this._isCancelled = true;\r\n if (this._emitter) {\r\n this._emitter.fire(undefined);\r\n this.dispose();\r\n }\r\n }\r\n }\r\n get isCancellationRequested() {\r\n return this._isCancelled;\r\n }\r\n get onCancellationRequested() {\r\n if (this._isCancelled) {\r\n return shortcutEvent;\r\n }\r\n if (!this._emitter) {\r\n this._emitter = new Emitter();\r\n }\r\n return this._emitter.event;\r\n }\r\n dispose() {\r\n if (this._emitter) {\r\n this._emitter.dispose();\r\n this._emitter = null;\r\n }\r\n }\r\n}\r\nexport class CancellationTokenSource {\r\n constructor(parent) {\r\n this._token = undefined;\r\n this._parentListener = undefined;\r\n this._parentListener = parent && parent.onCancellationRequested(this.cancel, this);\r\n }\r\n get token() {\r\n if (!this._token) {\r\n // be lazy and create the token only when\r\n // actually needed\r\n this._token = new MutableToken();\r\n }\r\n return this._token;\r\n }\r\n cancel() {\r\n if (!this._token) {\r\n // save an object by returning the default\r\n // cancelled token when cancellation happens\r\n // before someone asks for the token\r\n this._token = CancellationToken.Cancelled;\r\n }\r\n else if (this._token instanceof MutableToken) {\r\n // actually cancel\r\n this._token.cancel();\r\n }\r\n }\r\n dispose(cancel = false) {\r\n if (cancel) {\r\n this.cancel();\r\n }\r\n if (this._parentListener) {\r\n this._parentListener.dispose();\r\n }\r\n if (!this._token) {\r\n // ensure to initialize with an empty token if we had none\r\n this._token = CancellationToken.None;\r\n }\r\n else if (this._token instanceof MutableToken) {\r\n // actually dispose\r\n this._token.dispose();\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { illegalArgument } from './errors.js';\r\nclass KeyCodeStrMap {\r\n constructor() {\r\n this._keyCodeToStr = [];\r\n this._strToKeyCode = Object.create(null);\r\n }\r\n define(keyCode, str) {\r\n this._keyCodeToStr[keyCode] = str;\r\n this._strToKeyCode[str.toLowerCase()] = keyCode;\r\n }\r\n keyCodeToStr(keyCode) {\r\n return this._keyCodeToStr[keyCode];\r\n }\r\n strToKeyCode(str) {\r\n return this._strToKeyCode[str.toLowerCase()] || 0 /* Unknown */;\r\n }\r\n}\r\nconst uiMap = new KeyCodeStrMap();\r\nconst userSettingsUSMap = new KeyCodeStrMap();\r\nconst userSettingsGeneralMap = new KeyCodeStrMap();\r\n(function () {\r\n function define(keyCode, uiLabel, usUserSettingsLabel = uiLabel, generalUserSettingsLabel = usUserSettingsLabel) {\r\n uiMap.define(keyCode, uiLabel);\r\n userSettingsUSMap.define(keyCode, usUserSettingsLabel);\r\n userSettingsGeneralMap.define(keyCode, generalUserSettingsLabel);\r\n }\r\n define(0 /* Unknown */, 'unknown');\r\n define(1 /* Backspace */, 'Backspace');\r\n define(2 /* Tab */, 'Tab');\r\n define(3 /* Enter */, 'Enter');\r\n define(4 /* Shift */, 'Shift');\r\n define(5 /* Ctrl */, 'Ctrl');\r\n define(6 /* Alt */, 'Alt');\r\n define(7 /* PauseBreak */, 'PauseBreak');\r\n define(8 /* CapsLock */, 'CapsLock');\r\n define(9 /* Escape */, 'Escape');\r\n define(10 /* Space */, 'Space');\r\n define(11 /* PageUp */, 'PageUp');\r\n define(12 /* PageDown */, 'PageDown');\r\n define(13 /* End */, 'End');\r\n define(14 /* Home */, 'Home');\r\n define(15 /* LeftArrow */, 'LeftArrow', 'Left');\r\n define(16 /* UpArrow */, 'UpArrow', 'Up');\r\n define(17 /* RightArrow */, 'RightArrow', 'Right');\r\n define(18 /* DownArrow */, 'DownArrow', 'Down');\r\n define(19 /* Insert */, 'Insert');\r\n define(20 /* Delete */, 'Delete');\r\n define(21 /* KEY_0 */, '0');\r\n define(22 /* KEY_1 */, '1');\r\n define(23 /* KEY_2 */, '2');\r\n define(24 /* KEY_3 */, '3');\r\n define(25 /* KEY_4 */, '4');\r\n define(26 /* KEY_5 */, '5');\r\n define(27 /* KEY_6 */, '6');\r\n define(28 /* KEY_7 */, '7');\r\n define(29 /* KEY_8 */, '8');\r\n define(30 /* KEY_9 */, '9');\r\n define(31 /* KEY_A */, 'A');\r\n define(32 /* KEY_B */, 'B');\r\n define(33 /* KEY_C */, 'C');\r\n define(34 /* KEY_D */, 'D');\r\n define(35 /* KEY_E */, 'E');\r\n define(36 /* KEY_F */, 'F');\r\n define(37 /* KEY_G */, 'G');\r\n define(38 /* KEY_H */, 'H');\r\n define(39 /* KEY_I */, 'I');\r\n define(40 /* KEY_J */, 'J');\r\n define(41 /* KEY_K */, 'K');\r\n define(42 /* KEY_L */, 'L');\r\n define(43 /* KEY_M */, 'M');\r\n define(44 /* KEY_N */, 'N');\r\n define(45 /* KEY_O */, 'O');\r\n define(46 /* KEY_P */, 'P');\r\n define(47 /* KEY_Q */, 'Q');\r\n define(48 /* KEY_R */, 'R');\r\n define(49 /* KEY_S */, 'S');\r\n define(50 /* KEY_T */, 'T');\r\n define(51 /* KEY_U */, 'U');\r\n define(52 /* KEY_V */, 'V');\r\n define(53 /* KEY_W */, 'W');\r\n define(54 /* KEY_X */, 'X');\r\n define(55 /* KEY_Y */, 'Y');\r\n define(56 /* KEY_Z */, 'Z');\r\n define(57 /* Meta */, 'Meta');\r\n define(58 /* ContextMenu */, 'ContextMenu');\r\n define(59 /* F1 */, 'F1');\r\n define(60 /* F2 */, 'F2');\r\n define(61 /* F3 */, 'F3');\r\n define(62 /* F4 */, 'F4');\r\n define(63 /* F5 */, 'F5');\r\n define(64 /* F6 */, 'F6');\r\n define(65 /* F7 */, 'F7');\r\n define(66 /* F8 */, 'F8');\r\n define(67 /* F9 */, 'F9');\r\n define(68 /* F10 */, 'F10');\r\n define(69 /* F11 */, 'F11');\r\n define(70 /* F12 */, 'F12');\r\n define(71 /* F13 */, 'F13');\r\n define(72 /* F14 */, 'F14');\r\n define(73 /* F15 */, 'F15');\r\n define(74 /* F16 */, 'F16');\r\n define(75 /* F17 */, 'F17');\r\n define(76 /* F18 */, 'F18');\r\n define(77 /* F19 */, 'F19');\r\n define(78 /* NumLock */, 'NumLock');\r\n define(79 /* ScrollLock */, 'ScrollLock');\r\n define(80 /* US_SEMICOLON */, ';', ';', 'OEM_1');\r\n define(81 /* US_EQUAL */, '=', '=', 'OEM_PLUS');\r\n define(82 /* US_COMMA */, ',', ',', 'OEM_COMMA');\r\n define(83 /* US_MINUS */, '-', '-', 'OEM_MINUS');\r\n define(84 /* US_DOT */, '.', '.', 'OEM_PERIOD');\r\n define(85 /* US_SLASH */, '/', '/', 'OEM_2');\r\n define(86 /* US_BACKTICK */, '`', '`', 'OEM_3');\r\n define(110 /* ABNT_C1 */, 'ABNT_C1');\r\n define(111 /* ABNT_C2 */, 'ABNT_C2');\r\n define(87 /* US_OPEN_SQUARE_BRACKET */, '[', '[', 'OEM_4');\r\n define(88 /* US_BACKSLASH */, '\\\\', '\\\\', 'OEM_5');\r\n define(89 /* US_CLOSE_SQUARE_BRACKET */, ']', ']', 'OEM_6');\r\n define(90 /* US_QUOTE */, '\\'', '\\'', 'OEM_7');\r\n define(91 /* OEM_8 */, 'OEM_8');\r\n define(92 /* OEM_102 */, 'OEM_102');\r\n define(93 /* NUMPAD_0 */, 'NumPad0');\r\n define(94 /* NUMPAD_1 */, 'NumPad1');\r\n define(95 /* NUMPAD_2 */, 'NumPad2');\r\n define(96 /* NUMPAD_3 */, 'NumPad3');\r\n define(97 /* NUMPAD_4 */, 'NumPad4');\r\n define(98 /* NUMPAD_5 */, 'NumPad5');\r\n define(99 /* NUMPAD_6 */, 'NumPad6');\r\n define(100 /* NUMPAD_7 */, 'NumPad7');\r\n define(101 /* NUMPAD_8 */, 'NumPad8');\r\n define(102 /* NUMPAD_9 */, 'NumPad9');\r\n define(103 /* NUMPAD_MULTIPLY */, 'NumPad_Multiply');\r\n define(104 /* NUMPAD_ADD */, 'NumPad_Add');\r\n define(105 /* NUMPAD_SEPARATOR */, 'NumPad_Separator');\r\n define(106 /* NUMPAD_SUBTRACT */, 'NumPad_Subtract');\r\n define(107 /* NUMPAD_DECIMAL */, 'NumPad_Decimal');\r\n define(108 /* NUMPAD_DIVIDE */, 'NumPad_Divide');\r\n})();\r\nexport var KeyCodeUtils;\r\n(function (KeyCodeUtils) {\r\n function toString(keyCode) {\r\n return uiMap.keyCodeToStr(keyCode);\r\n }\r\n KeyCodeUtils.toString = toString;\r\n function fromString(key) {\r\n return uiMap.strToKeyCode(key);\r\n }\r\n KeyCodeUtils.fromString = fromString;\r\n function toUserSettingsUS(keyCode) {\r\n return userSettingsUSMap.keyCodeToStr(keyCode);\r\n }\r\n KeyCodeUtils.toUserSettingsUS = toUserSettingsUS;\r\n function toUserSettingsGeneral(keyCode) {\r\n return userSettingsGeneralMap.keyCodeToStr(keyCode);\r\n }\r\n KeyCodeUtils.toUserSettingsGeneral = toUserSettingsGeneral;\r\n function fromUserSettings(key) {\r\n return userSettingsUSMap.strToKeyCode(key) || userSettingsGeneralMap.strToKeyCode(key);\r\n }\r\n KeyCodeUtils.fromUserSettings = fromUserSettings;\r\n})(KeyCodeUtils || (KeyCodeUtils = {}));\r\nexport function KeyChord(firstPart, secondPart) {\r\n const chordPart = ((secondPart & 0x0000FFFF) << 16) >>> 0;\r\n return (firstPart | chordPart) >>> 0;\r\n}\r\nexport function createKeybinding(keybinding, OS) {\r\n if (keybinding === 0) {\r\n return null;\r\n }\r\n const firstPart = (keybinding & 0x0000FFFF) >>> 0;\r\n const chordPart = (keybinding & 0xFFFF0000) >>> 16;\r\n if (chordPart !== 0) {\r\n return new ChordKeybinding([\r\n createSimpleKeybinding(firstPart, OS),\r\n createSimpleKeybinding(chordPart, OS)\r\n ]);\r\n }\r\n return new ChordKeybinding([createSimpleKeybinding(firstPart, OS)]);\r\n}\r\nexport function createSimpleKeybinding(keybinding, OS) {\r\n const ctrlCmd = (keybinding & 2048 /* CtrlCmd */ ? true : false);\r\n const winCtrl = (keybinding & 256 /* WinCtrl */ ? true : false);\r\n const ctrlKey = (OS === 2 /* Macintosh */ ? winCtrl : ctrlCmd);\r\n const shiftKey = (keybinding & 1024 /* Shift */ ? true : false);\r\n const altKey = (keybinding & 512 /* Alt */ ? true : false);\r\n const metaKey = (OS === 2 /* Macintosh */ ? ctrlCmd : winCtrl);\r\n const keyCode = (keybinding & 255 /* KeyCode */);\r\n return new SimpleKeybinding(ctrlKey, shiftKey, altKey, metaKey, keyCode);\r\n}\r\nexport class SimpleKeybinding {\r\n constructor(ctrlKey, shiftKey, altKey, metaKey, keyCode) {\r\n this.ctrlKey = ctrlKey;\r\n this.shiftKey = shiftKey;\r\n this.altKey = altKey;\r\n this.metaKey = metaKey;\r\n this.keyCode = keyCode;\r\n }\r\n equals(other) {\r\n return (this.ctrlKey === other.ctrlKey\r\n && this.shiftKey === other.shiftKey\r\n && this.altKey === other.altKey\r\n && this.metaKey === other.metaKey\r\n && this.keyCode === other.keyCode);\r\n }\r\n isModifierKey() {\r\n return (this.keyCode === 0 /* Unknown */\r\n || this.keyCode === 5 /* Ctrl */\r\n || this.keyCode === 57 /* Meta */\r\n || this.keyCode === 6 /* Alt */\r\n || this.keyCode === 4 /* Shift */);\r\n }\r\n toChord() {\r\n return new ChordKeybinding([this]);\r\n }\r\n /**\r\n * Does this keybinding refer to the key code of a modifier and it also has the modifier flag?\r\n */\r\n isDuplicateModifierCase() {\r\n return ((this.ctrlKey && this.keyCode === 5 /* Ctrl */)\r\n || (this.shiftKey && this.keyCode === 4 /* Shift */)\r\n || (this.altKey && this.keyCode === 6 /* Alt */)\r\n || (this.metaKey && this.keyCode === 57 /* Meta */));\r\n }\r\n}\r\nexport class ChordKeybinding {\r\n constructor(parts) {\r\n if (parts.length === 0) {\r\n throw illegalArgument(`parts`);\r\n }\r\n this.parts = parts;\r\n }\r\n}\r\nexport class ResolvedKeybindingPart {\r\n constructor(ctrlKey, shiftKey, altKey, metaKey, kbLabel, kbAriaLabel) {\r\n this.ctrlKey = ctrlKey;\r\n this.shiftKey = shiftKey;\r\n this.altKey = altKey;\r\n this.metaKey = metaKey;\r\n this.keyLabel = kbLabel;\r\n this.keyAriaLabel = kbAriaLabel;\r\n }\r\n}\r\n/**\r\n * A resolved keybinding. Can be a simple keybinding or a chord keybinding.\r\n */\r\nexport class ResolvedKeybinding {\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n// NOTE: VSCode's copy of nodejs path library to be usable in common (non-node) namespace\r\n// Copied from: https://github.com/nodejs/node/blob/v12.8.1/lib/path.js\r\n/**\r\n * Copyright Joyent, Inc. and other Node contributors.\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a\r\n * copy of this software and associated documentation files (the\r\n * \"Software\"), to deal in the Software without restriction, including\r\n * without limitation the rights to use, copy, modify, merge, publish,\r\n * distribute, sublicense, and/or sell copies of the Software, and to permit\r\n * persons to whom the Software is furnished to do so, subject to the\r\n * following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included\r\n * in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\r\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\r\n * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\r\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\r\n * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\r\n * USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n */\r\nimport * as process from './process.js';\r\nconst CHAR_UPPERCASE_A = 65; /* A */\r\nconst CHAR_LOWERCASE_A = 97; /* a */\r\nconst CHAR_UPPERCASE_Z = 90; /* Z */\r\nconst CHAR_LOWERCASE_Z = 122; /* z */\r\nconst CHAR_DOT = 46; /* . */\r\nconst CHAR_FORWARD_SLASH = 47; /* / */\r\nconst CHAR_BACKWARD_SLASH = 92; /* \\ */\r\nconst CHAR_COLON = 58; /* : */\r\nconst CHAR_QUESTION_MARK = 63; /* ? */\r\nclass ErrorInvalidArgType extends Error {\r\n constructor(name, expected, actual) {\r\n // determiner: 'must be' or 'must not be'\r\n let determiner;\r\n if (typeof expected === 'string' && expected.indexOf('not ') === 0) {\r\n determiner = 'must not be';\r\n expected = expected.replace(/^not /, '');\r\n }\r\n else {\r\n determiner = 'must be';\r\n }\r\n const type = name.indexOf('.') !== -1 ? 'property' : 'argument';\r\n let msg = `The \"${name}\" ${type} ${determiner} of type ${expected}`;\r\n msg += `. Received type ${typeof actual}`;\r\n super(msg);\r\n this.code = 'ERR_INVALID_ARG_TYPE';\r\n }\r\n}\r\nfunction validateString(value, name) {\r\n if (typeof value !== 'string') {\r\n throw new ErrorInvalidArgType(name, 'string', value);\r\n }\r\n}\r\nfunction isPathSeparator(code) {\r\n return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\r\n}\r\nfunction isPosixPathSeparator(code) {\r\n return code === CHAR_FORWARD_SLASH;\r\n}\r\nfunction isWindowsDeviceRoot(code) {\r\n return code >= CHAR_UPPERCASE_A && code <= CHAR_UPPERCASE_Z ||\r\n code >= CHAR_LOWERCASE_A && code <= CHAR_LOWERCASE_Z;\r\n}\r\n// Resolves . and .. elements in a path with directory names\r\nfunction normalizeString(path, allowAboveRoot, separator, isPathSeparator) {\r\n let res = '';\r\n let lastSegmentLength = 0;\r\n let lastSlash = -1;\r\n let dots = 0;\r\n let code = 0;\r\n for (let i = 0; i <= path.length; ++i) {\r\n if (i < path.length) {\r\n code = path.charCodeAt(i);\r\n }\r\n else if (isPathSeparator(code)) {\r\n break;\r\n }\r\n else {\r\n code = CHAR_FORWARD_SLASH;\r\n }\r\n if (isPathSeparator(code)) {\r\n if (lastSlash === i - 1 || dots === 1) {\r\n // NOOP\r\n }\r\n else if (dots === 2) {\r\n if (res.length < 2 || lastSegmentLength !== 2 ||\r\n res.charCodeAt(res.length - 1) !== CHAR_DOT ||\r\n res.charCodeAt(res.length - 2) !== CHAR_DOT) {\r\n if (res.length > 2) {\r\n const lastSlashIndex = res.lastIndexOf(separator);\r\n if (lastSlashIndex === -1) {\r\n res = '';\r\n lastSegmentLength = 0;\r\n }\r\n else {\r\n res = res.slice(0, lastSlashIndex);\r\n lastSegmentLength = res.length - 1 - res.lastIndexOf(separator);\r\n }\r\n lastSlash = i;\r\n dots = 0;\r\n continue;\r\n }\r\n else if (res.length !== 0) {\r\n res = '';\r\n lastSegmentLength = 0;\r\n lastSlash = i;\r\n dots = 0;\r\n continue;\r\n }\r\n }\r\n if (allowAboveRoot) {\r\n res += res.length > 0 ? `${separator}..` : '..';\r\n lastSegmentLength = 2;\r\n }\r\n }\r\n else {\r\n if (res.length > 0) {\r\n res += `${separator}${path.slice(lastSlash + 1, i)}`;\r\n }\r\n else {\r\n res = path.slice(lastSlash + 1, i);\r\n }\r\n lastSegmentLength = i - lastSlash - 1;\r\n }\r\n lastSlash = i;\r\n dots = 0;\r\n }\r\n else if (code === CHAR_DOT && dots !== -1) {\r\n ++dots;\r\n }\r\n else {\r\n dots = -1;\r\n }\r\n }\r\n return res;\r\n}\r\nfunction _format(sep, pathObject) {\r\n if (pathObject === null || typeof pathObject !== 'object') {\r\n throw new ErrorInvalidArgType('pathObject', 'Object', pathObject);\r\n }\r\n const dir = pathObject.dir || pathObject.root;\r\n const base = pathObject.base ||\r\n `${pathObject.name || ''}${pathObject.ext || ''}`;\r\n if (!dir) {\r\n return base;\r\n }\r\n return dir === pathObject.root ? `${dir}${base}` : `${dir}${sep}${base}`;\r\n}\r\nexport const win32 = {\r\n // path.resolve([from ...], to)\r\n resolve(...pathSegments) {\r\n let resolvedDevice = '';\r\n let resolvedTail = '';\r\n let resolvedAbsolute = false;\r\n for (let i = pathSegments.length - 1; i >= -1; i--) {\r\n let path;\r\n if (i >= 0) {\r\n path = pathSegments[i];\r\n validateString(path, 'path');\r\n // Skip empty entries\r\n if (path.length === 0) {\r\n continue;\r\n }\r\n }\r\n else if (resolvedDevice.length === 0) {\r\n path = process.cwd();\r\n }\r\n else {\r\n // Windows has the concept of drive-specific current working\r\n // directories. If we've resolved a drive letter but not yet an\r\n // absolute path, get cwd for that drive, or the process cwd if\r\n // the drive cwd is not available. We're sure the device is not\r\n // a UNC path at this points, because UNC paths are always absolute.\r\n path = process.env[`=${resolvedDevice}`] || process.cwd();\r\n // Verify that a cwd was found and that it actually points\r\n // to our drive. If not, default to the drive's root.\r\n if (path === undefined ||\r\n path.slice(0, 2).toLowerCase() !== resolvedDevice.toLowerCase() &&\r\n path.charCodeAt(2) === CHAR_BACKWARD_SLASH) {\r\n path = `${resolvedDevice}\\\\`;\r\n }\r\n }\r\n const len = path.length;\r\n let rootEnd = 0;\r\n let device = '';\r\n let isAbsolute = false;\r\n const code = path.charCodeAt(0);\r\n // Try to match a root\r\n if (len === 1) {\r\n if (isPathSeparator(code)) {\r\n // `path` contains just a path separator\r\n rootEnd = 1;\r\n isAbsolute = true;\r\n }\r\n }\r\n else if (isPathSeparator(code)) {\r\n // Possible UNC root\r\n // If we started with a separator, we know we at least have an\r\n // absolute path of some kind (UNC or otherwise)\r\n isAbsolute = true;\r\n if (isPathSeparator(path.charCodeAt(1))) {\r\n // Matched double path separator at beginning\r\n let j = 2;\r\n let last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n const firstPart = path.slice(last, j);\r\n // Matched!\r\n last = j;\r\n // Match 1 or more path separators\r\n while (j < len && isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j === len || j !== last) {\r\n // We matched a UNC root\r\n device = `\\\\\\\\${firstPart}\\\\${path.slice(last, j)}`;\r\n rootEnd = j;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n rootEnd = 1;\r\n }\r\n }\r\n else if (isWindowsDeviceRoot(code) &&\r\n path.charCodeAt(1) === CHAR_COLON) {\r\n // Possible device root\r\n device = path.slice(0, 2);\r\n rootEnd = 2;\r\n if (len > 2 && isPathSeparator(path.charCodeAt(2))) {\r\n // Treat separator following drive name as an absolute path\r\n // indicator\r\n isAbsolute = true;\r\n rootEnd = 3;\r\n }\r\n }\r\n if (device.length > 0) {\r\n if (resolvedDevice.length > 0) {\r\n if (device.toLowerCase() !== resolvedDevice.toLowerCase()) {\r\n // This path points to another device so it is not applicable\r\n continue;\r\n }\r\n }\r\n else {\r\n resolvedDevice = device;\r\n }\r\n }\r\n if (resolvedAbsolute) {\r\n if (resolvedDevice.length > 0) {\r\n break;\r\n }\r\n }\r\n else {\r\n resolvedTail = `${path.slice(rootEnd)}\\\\${resolvedTail}`;\r\n resolvedAbsolute = isAbsolute;\r\n if (isAbsolute && resolvedDevice.length > 0) {\r\n break;\r\n }\r\n }\r\n }\r\n // At this point the path should be resolved to a full absolute path,\r\n // but handle relative paths to be safe (might happen when process.cwd()\r\n // fails)\r\n // Normalize the tail path\r\n resolvedTail = normalizeString(resolvedTail, !resolvedAbsolute, '\\\\', isPathSeparator);\r\n return resolvedAbsolute ?\r\n `${resolvedDevice}\\\\${resolvedTail}` :\r\n `${resolvedDevice}${resolvedTail}` || '.';\r\n },\r\n normalize(path) {\r\n validateString(path, 'path');\r\n const len = path.length;\r\n if (len === 0) {\r\n return '.';\r\n }\r\n let rootEnd = 0;\r\n let device;\r\n let isAbsolute = false;\r\n const code = path.charCodeAt(0);\r\n // Try to match a root\r\n if (len === 1) {\r\n // `path` contains just a single char, exit early to avoid\r\n // unnecessary work\r\n return isPosixPathSeparator(code) ? '\\\\' : path;\r\n }\r\n if (isPathSeparator(code)) {\r\n // Possible UNC root\r\n // If we started with a separator, we know we at least have an absolute\r\n // path of some kind (UNC or otherwise)\r\n isAbsolute = true;\r\n if (isPathSeparator(path.charCodeAt(1))) {\r\n // Matched double path separator at beginning\r\n let j = 2;\r\n let last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n const firstPart = path.slice(last, j);\r\n // Matched!\r\n last = j;\r\n // Match 1 or more path separators\r\n while (j < len && isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j === len) {\r\n // We matched a UNC root only\r\n // Return the normalized version of the UNC root since there\r\n // is nothing left to process\r\n return `\\\\\\\\${firstPart}\\\\${path.slice(last)}\\\\`;\r\n }\r\n if (j !== last) {\r\n // We matched a UNC root with leftovers\r\n device = `\\\\\\\\${firstPart}\\\\${path.slice(last, j)}`;\r\n rootEnd = j;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n rootEnd = 1;\r\n }\r\n }\r\n else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\r\n // Possible device root\r\n device = path.slice(0, 2);\r\n rootEnd = 2;\r\n if (len > 2 && isPathSeparator(path.charCodeAt(2))) {\r\n // Treat separator following drive name as an absolute path\r\n // indicator\r\n isAbsolute = true;\r\n rootEnd = 3;\r\n }\r\n }\r\n let tail = rootEnd < len ?\r\n normalizeString(path.slice(rootEnd), !isAbsolute, '\\\\', isPathSeparator) :\r\n '';\r\n if (tail.length === 0 && !isAbsolute) {\r\n tail = '.';\r\n }\r\n if (tail.length > 0 && isPathSeparator(path.charCodeAt(len - 1))) {\r\n tail += '\\\\';\r\n }\r\n if (device === undefined) {\r\n return isAbsolute ? `\\\\${tail}` : tail;\r\n }\r\n return isAbsolute ? `${device}\\\\${tail}` : `${device}${tail}`;\r\n },\r\n isAbsolute(path) {\r\n validateString(path, 'path');\r\n const len = path.length;\r\n if (len === 0) {\r\n return false;\r\n }\r\n const code = path.charCodeAt(0);\r\n return isPathSeparator(code) ||\r\n // Possible device root\r\n len > 2 &&\r\n isWindowsDeviceRoot(code) &&\r\n path.charCodeAt(1) === CHAR_COLON &&\r\n isPathSeparator(path.charCodeAt(2));\r\n },\r\n join(...paths) {\r\n if (paths.length === 0) {\r\n return '.';\r\n }\r\n let joined;\r\n let firstPart;\r\n for (let i = 0; i < paths.length; ++i) {\r\n const arg = paths[i];\r\n validateString(arg, 'path');\r\n if (arg.length > 0) {\r\n if (joined === undefined) {\r\n joined = firstPart = arg;\r\n }\r\n else {\r\n joined += `\\\\${arg}`;\r\n }\r\n }\r\n }\r\n if (joined === undefined) {\r\n return '.';\r\n }\r\n // Make sure that the joined path doesn't start with two slashes, because\r\n // normalize() will mistake it for an UNC path then.\r\n //\r\n // This step is skipped when it is very clear that the user actually\r\n // intended to point at an UNC path. This is assumed when the first\r\n // non-empty string arguments starts with exactly two slashes followed by\r\n // at least one more non-slash character.\r\n //\r\n // Note that for normalize() to treat a path as an UNC path it needs to\r\n // have at least 2 components, so we don't filter for that here.\r\n // This means that the user can use join to construct UNC paths from\r\n // a server name and a share name; for example:\r\n // path.join('//server', 'share') -> '\\\\\\\\server\\\\share\\\\')\r\n let needsReplace = true;\r\n let slashCount = 0;\r\n if (typeof firstPart === 'string' && isPathSeparator(firstPart.charCodeAt(0))) {\r\n ++slashCount;\r\n const firstLen = firstPart.length;\r\n if (firstLen > 1 && isPathSeparator(firstPart.charCodeAt(1))) {\r\n ++slashCount;\r\n if (firstLen > 2) {\r\n if (isPathSeparator(firstPart.charCodeAt(2))) {\r\n ++slashCount;\r\n }\r\n else {\r\n // We matched a UNC path in the first part\r\n needsReplace = false;\r\n }\r\n }\r\n }\r\n }\r\n if (needsReplace) {\r\n // Find any more consecutive slashes we need to replace\r\n while (slashCount < joined.length &&\r\n isPathSeparator(joined.charCodeAt(slashCount))) {\r\n slashCount++;\r\n }\r\n // Replace the slashes if needed\r\n if (slashCount >= 2) {\r\n joined = `\\\\${joined.slice(slashCount)}`;\r\n }\r\n }\r\n return win32.normalize(joined);\r\n },\r\n // It will solve the relative path from `from` to `to`, for instance:\r\n // from = 'C:\\\\orandea\\\\test\\\\aaa'\r\n // to = 'C:\\\\orandea\\\\impl\\\\bbb'\r\n // The output of the function should be: '..\\\\..\\\\impl\\\\bbb'\r\n relative(from, to) {\r\n validateString(from, 'from');\r\n validateString(to, 'to');\r\n if (from === to) {\r\n return '';\r\n }\r\n const fromOrig = win32.resolve(from);\r\n const toOrig = win32.resolve(to);\r\n if (fromOrig === toOrig) {\r\n return '';\r\n }\r\n from = fromOrig.toLowerCase();\r\n to = toOrig.toLowerCase();\r\n if (from === to) {\r\n return '';\r\n }\r\n // Trim any leading backslashes\r\n let fromStart = 0;\r\n while (fromStart < from.length &&\r\n from.charCodeAt(fromStart) === CHAR_BACKWARD_SLASH) {\r\n fromStart++;\r\n }\r\n // Trim trailing backslashes (applicable to UNC paths only)\r\n let fromEnd = from.length;\r\n while (fromEnd - 1 > fromStart &&\r\n from.charCodeAt(fromEnd - 1) === CHAR_BACKWARD_SLASH) {\r\n fromEnd--;\r\n }\r\n const fromLen = fromEnd - fromStart;\r\n // Trim any leading backslashes\r\n let toStart = 0;\r\n while (toStart < to.length &&\r\n to.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) {\r\n toStart++;\r\n }\r\n // Trim trailing backslashes (applicable to UNC paths only)\r\n let toEnd = to.length;\r\n while (toEnd - 1 > toStart &&\r\n to.charCodeAt(toEnd - 1) === CHAR_BACKWARD_SLASH) {\r\n toEnd--;\r\n }\r\n const toLen = toEnd - toStart;\r\n // Compare paths to find the longest common path from root\r\n const length = fromLen < toLen ? fromLen : toLen;\r\n let lastCommonSep = -1;\r\n let i = 0;\r\n for (; i < length; i++) {\r\n const fromCode = from.charCodeAt(fromStart + i);\r\n if (fromCode !== to.charCodeAt(toStart + i)) {\r\n break;\r\n }\r\n else if (fromCode === CHAR_BACKWARD_SLASH) {\r\n lastCommonSep = i;\r\n }\r\n }\r\n // We found a mismatch before the first common path separator was seen, so\r\n // return the original `to`.\r\n if (i !== length) {\r\n if (lastCommonSep === -1) {\r\n return toOrig;\r\n }\r\n }\r\n else {\r\n if (toLen > length) {\r\n if (to.charCodeAt(toStart + i) === CHAR_BACKWARD_SLASH) {\r\n // We get here if `from` is the exact base path for `to`.\r\n // For example: from='C:\\\\foo\\\\bar'; to='C:\\\\foo\\\\bar\\\\baz'\r\n return toOrig.slice(toStart + i + 1);\r\n }\r\n if (i === 2) {\r\n // We get here if `from` is the device root.\r\n // For example: from='C:\\\\'; to='C:\\\\foo'\r\n return toOrig.slice(toStart + i);\r\n }\r\n }\r\n if (fromLen > length) {\r\n if (from.charCodeAt(fromStart + i) === CHAR_BACKWARD_SLASH) {\r\n // We get here if `to` is the exact base path for `from`.\r\n // For example: from='C:\\\\foo\\\\bar'; to='C:\\\\foo'\r\n lastCommonSep = i;\r\n }\r\n else if (i === 2) {\r\n // We get here if `to` is the device root.\r\n // For example: from='C:\\\\foo\\\\bar'; to='C:\\\\'\r\n lastCommonSep = 3;\r\n }\r\n }\r\n if (lastCommonSep === -1) {\r\n lastCommonSep = 0;\r\n }\r\n }\r\n let out = '';\r\n // Generate the relative path based on the path difference between `to` and\r\n // `from`\r\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\r\n if (i === fromEnd || from.charCodeAt(i) === CHAR_BACKWARD_SLASH) {\r\n out += out.length === 0 ? '..' : '\\\\..';\r\n }\r\n }\r\n toStart += lastCommonSep;\r\n // Lastly, append the rest of the destination (`to`) path that comes after\r\n // the common path parts\r\n if (out.length > 0) {\r\n return `${out}${toOrig.slice(toStart, toEnd)}`;\r\n }\r\n if (toOrig.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) {\r\n ++toStart;\r\n }\r\n return toOrig.slice(toStart, toEnd);\r\n },\r\n toNamespacedPath(path) {\r\n // Note: this will *probably* throw somewhere.\r\n if (typeof path !== 'string') {\r\n return path;\r\n }\r\n if (path.length === 0) {\r\n return '';\r\n }\r\n const resolvedPath = win32.resolve(path);\r\n if (resolvedPath.length <= 2) {\r\n return path;\r\n }\r\n if (resolvedPath.charCodeAt(0) === CHAR_BACKWARD_SLASH) {\r\n // Possible UNC root\r\n if (resolvedPath.charCodeAt(1) === CHAR_BACKWARD_SLASH) {\r\n const code = resolvedPath.charCodeAt(2);\r\n if (code !== CHAR_QUESTION_MARK && code !== CHAR_DOT) {\r\n // Matched non-long UNC root, convert the path to a long UNC path\r\n return `\\\\\\\\?\\\\UNC\\\\${resolvedPath.slice(2)}`;\r\n }\r\n }\r\n }\r\n else if (isWindowsDeviceRoot(resolvedPath.charCodeAt(0)) &&\r\n resolvedPath.charCodeAt(1) === CHAR_COLON &&\r\n resolvedPath.charCodeAt(2) === CHAR_BACKWARD_SLASH) {\r\n // Matched device root, convert the path to a long UNC path\r\n return `\\\\\\\\?\\\\${resolvedPath}`;\r\n }\r\n return path;\r\n },\r\n dirname(path) {\r\n validateString(path, 'path');\r\n const len = path.length;\r\n if (len === 0) {\r\n return '.';\r\n }\r\n let rootEnd = -1;\r\n let offset = 0;\r\n const code = path.charCodeAt(0);\r\n if (len === 1) {\r\n // `path` contains just a path separator, exit early to avoid\r\n // unnecessary work or a dot.\r\n return isPathSeparator(code) ? path : '.';\r\n }\r\n // Try to match a root\r\n if (isPathSeparator(code)) {\r\n // Possible UNC root\r\n rootEnd = offset = 1;\r\n if (isPathSeparator(path.charCodeAt(1))) {\r\n // Matched double path separator at beginning\r\n let j = 2;\r\n let last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more path separators\r\n while (j < len && isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j === len) {\r\n // We matched a UNC root only\r\n return path;\r\n }\r\n if (j !== last) {\r\n // We matched a UNC root with leftovers\r\n // Offset by 1 to include the separator after the UNC root to\r\n // treat it as a \"normal root\" on top of a (UNC) root\r\n rootEnd = offset = j + 1;\r\n }\r\n }\r\n }\r\n }\r\n // Possible device root\r\n }\r\n else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\r\n rootEnd = len > 2 && isPathSeparator(path.charCodeAt(2)) ? 3 : 2;\r\n offset = rootEnd;\r\n }\r\n let end = -1;\r\n let matchedSlash = true;\r\n for (let i = len - 1; i >= offset; --i) {\r\n if (isPathSeparator(path.charCodeAt(i))) {\r\n if (!matchedSlash) {\r\n end = i;\r\n break;\r\n }\r\n }\r\n else {\r\n // We saw the first non-path separator\r\n matchedSlash = false;\r\n }\r\n }\r\n if (end === -1) {\r\n if (rootEnd === -1) {\r\n return '.';\r\n }\r\n end = rootEnd;\r\n }\r\n return path.slice(0, end);\r\n },\r\n basename(path, ext) {\r\n if (ext !== undefined) {\r\n validateString(ext, 'ext');\r\n }\r\n validateString(path, 'path');\r\n let start = 0;\r\n let end = -1;\r\n let matchedSlash = true;\r\n let i;\r\n // Check for a drive letter prefix so as not to mistake the following\r\n // path separator as an extra separator at the end of the path that can be\r\n // disregarded\r\n if (path.length >= 2 &&\r\n isWindowsDeviceRoot(path.charCodeAt(0)) &&\r\n path.charCodeAt(1) === CHAR_COLON) {\r\n start = 2;\r\n }\r\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\r\n if (ext === path) {\r\n return '';\r\n }\r\n let extIdx = ext.length - 1;\r\n let firstNonSlashEnd = -1;\r\n for (i = path.length - 1; i >= start; --i) {\r\n const code = path.charCodeAt(i);\r\n if (isPathSeparator(code)) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n start = i + 1;\r\n break;\r\n }\r\n }\r\n else {\r\n if (firstNonSlashEnd === -1) {\r\n // We saw the first non-path separator, remember this index in case\r\n // we need it if the extension ends up not matching\r\n matchedSlash = false;\r\n firstNonSlashEnd = i + 1;\r\n }\r\n if (extIdx >= 0) {\r\n // Try to match the explicit extension\r\n if (code === ext.charCodeAt(extIdx)) {\r\n if (--extIdx === -1) {\r\n // We matched the extension, so mark this as the end of our path\r\n // component\r\n end = i;\r\n }\r\n }\r\n else {\r\n // Extension does not match, so our result is the entire path\r\n // component\r\n extIdx = -1;\r\n end = firstNonSlashEnd;\r\n }\r\n }\r\n }\r\n }\r\n if (start === end) {\r\n end = firstNonSlashEnd;\r\n }\r\n else if (end === -1) {\r\n end = path.length;\r\n }\r\n return path.slice(start, end);\r\n }\r\n for (i = path.length - 1; i >= start; --i) {\r\n if (isPathSeparator(path.charCodeAt(i))) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n start = i + 1;\r\n break;\r\n }\r\n }\r\n else if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // path component\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n }\r\n if (end === -1) {\r\n return '';\r\n }\r\n return path.slice(start, end);\r\n },\r\n extname(path) {\r\n validateString(path, 'path');\r\n let start = 0;\r\n let startDot = -1;\r\n let startPart = 0;\r\n let end = -1;\r\n let matchedSlash = true;\r\n // Track the state of characters (if any) we see before our first dot and\r\n // after any path separator we find\r\n let preDotState = 0;\r\n // Check for a drive letter prefix so as not to mistake the following\r\n // path separator as an extra separator at the end of the path that can be\r\n // disregarded\r\n if (path.length >= 2 &&\r\n path.charCodeAt(1) === CHAR_COLON &&\r\n isWindowsDeviceRoot(path.charCodeAt(0))) {\r\n start = startPart = 2;\r\n }\r\n for (let i = path.length - 1; i >= start; --i) {\r\n const code = path.charCodeAt(i);\r\n if (isPathSeparator(code)) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n startPart = i + 1;\r\n break;\r\n }\r\n continue;\r\n }\r\n if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // extension\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n if (code === CHAR_DOT) {\r\n // If this is our first dot, mark it as the start of our extension\r\n if (startDot === -1) {\r\n startDot = i;\r\n }\r\n else if (preDotState !== 1) {\r\n preDotState = 1;\r\n }\r\n }\r\n else if (startDot !== -1) {\r\n // We saw a non-dot and non-path separator before our dot, so we should\r\n // have a good chance at having a non-empty extension\r\n preDotState = -1;\r\n }\r\n }\r\n if (startDot === -1 ||\r\n end === -1 ||\r\n // We saw a non-dot character immediately before the dot\r\n preDotState === 0 ||\r\n // The (right-most) trimmed path component is exactly '..'\r\n (preDotState === 1 &&\r\n startDot === end - 1 &&\r\n startDot === startPart + 1)) {\r\n return '';\r\n }\r\n return path.slice(startDot, end);\r\n },\r\n format: _format.bind(null, '\\\\'),\r\n parse(path) {\r\n validateString(path, 'path');\r\n const ret = { root: '', dir: '', base: '', ext: '', name: '' };\r\n if (path.length === 0) {\r\n return ret;\r\n }\r\n const len = path.length;\r\n let rootEnd = 0;\r\n let code = path.charCodeAt(0);\r\n if (len === 1) {\r\n if (isPathSeparator(code)) {\r\n // `path` contains just a path separator, exit early to avoid\r\n // unnecessary work\r\n ret.root = ret.dir = path;\r\n return ret;\r\n }\r\n ret.base = ret.name = path;\r\n return ret;\r\n }\r\n // Try to match a root\r\n if (isPathSeparator(code)) {\r\n // Possible UNC root\r\n rootEnd = 1;\r\n if (isPathSeparator(path.charCodeAt(1))) {\r\n // Matched double path separator at beginning\r\n let j = 2;\r\n let last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more path separators\r\n while (j < len && isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j === len) {\r\n // We matched a UNC root only\r\n rootEnd = j;\r\n }\r\n else if (j !== last) {\r\n // We matched a UNC root with leftovers\r\n rootEnd = j + 1;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\r\n // Possible device root\r\n if (len <= 2) {\r\n // `path` contains just a drive root, exit early to avoid\r\n // unnecessary work\r\n ret.root = ret.dir = path;\r\n return ret;\r\n }\r\n rootEnd = 2;\r\n if (isPathSeparator(path.charCodeAt(2))) {\r\n if (len === 3) {\r\n // `path` contains just a drive root, exit early to avoid\r\n // unnecessary work\r\n ret.root = ret.dir = path;\r\n return ret;\r\n }\r\n rootEnd = 3;\r\n }\r\n }\r\n if (rootEnd > 0) {\r\n ret.root = path.slice(0, rootEnd);\r\n }\r\n let startDot = -1;\r\n let startPart = rootEnd;\r\n let end = -1;\r\n let matchedSlash = true;\r\n let i = path.length - 1;\r\n // Track the state of characters (if any) we see before our first dot and\r\n // after any path separator we find\r\n let preDotState = 0;\r\n // Get non-dir info\r\n for (; i >= rootEnd; --i) {\r\n code = path.charCodeAt(i);\r\n if (isPathSeparator(code)) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n startPart = i + 1;\r\n break;\r\n }\r\n continue;\r\n }\r\n if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // extension\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n if (code === CHAR_DOT) {\r\n // If this is our first dot, mark it as the start of our extension\r\n if (startDot === -1) {\r\n startDot = i;\r\n }\r\n else if (preDotState !== 1) {\r\n preDotState = 1;\r\n }\r\n }\r\n else if (startDot !== -1) {\r\n // We saw a non-dot and non-path separator before our dot, so we should\r\n // have a good chance at having a non-empty extension\r\n preDotState = -1;\r\n }\r\n }\r\n if (end !== -1) {\r\n if (startDot === -1 ||\r\n // We saw a non-dot character immediately before the dot\r\n preDotState === 0 ||\r\n // The (right-most) trimmed path component is exactly '..'\r\n (preDotState === 1 &&\r\n startDot === end - 1 &&\r\n startDot === startPart + 1)) {\r\n ret.base = ret.name = path.slice(startPart, end);\r\n }\r\n else {\r\n ret.name = path.slice(startPart, startDot);\r\n ret.base = path.slice(startPart, end);\r\n ret.ext = path.slice(startDot, end);\r\n }\r\n }\r\n // If the directory is the root, use the entire root as the `dir` including\r\n // the trailing slash if any (`C:\\abc` -> `C:\\`). Otherwise, strip out the\r\n // trailing slash (`C:\\abc\\def` -> `C:\\abc`).\r\n if (startPart > 0 && startPart !== rootEnd) {\r\n ret.dir = path.slice(0, startPart - 1);\r\n }\r\n else {\r\n ret.dir = ret.root;\r\n }\r\n return ret;\r\n },\r\n sep: '\\\\',\r\n delimiter: ';',\r\n win32: null,\r\n posix: null\r\n};\r\nexport const posix = {\r\n // path.resolve([from ...], to)\r\n resolve(...pathSegments) {\r\n let resolvedPath = '';\r\n let resolvedAbsolute = false;\r\n for (let i = pathSegments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\r\n const path = i >= 0 ? pathSegments[i] : process.cwd();\r\n validateString(path, 'path');\r\n // Skip empty entries\r\n if (path.length === 0) {\r\n continue;\r\n }\r\n resolvedPath = `${path}/${resolvedPath}`;\r\n resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\r\n }\r\n // At this point the path should be resolved to a full absolute path, but\r\n // handle relative paths to be safe (might happen when process.cwd() fails)\r\n // Normalize the path\r\n resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, '/', isPosixPathSeparator);\r\n if (resolvedAbsolute) {\r\n return `/${resolvedPath}`;\r\n }\r\n return resolvedPath.length > 0 ? resolvedPath : '.';\r\n },\r\n normalize(path) {\r\n validateString(path, 'path');\r\n if (path.length === 0) {\r\n return '.';\r\n }\r\n const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\r\n const trailingSeparator = path.charCodeAt(path.length - 1) === CHAR_FORWARD_SLASH;\r\n // Normalize the path\r\n path = normalizeString(path, !isAbsolute, '/', isPosixPathSeparator);\r\n if (path.length === 0) {\r\n if (isAbsolute) {\r\n return '/';\r\n }\r\n return trailingSeparator ? './' : '.';\r\n }\r\n if (trailingSeparator) {\r\n path += '/';\r\n }\r\n return isAbsolute ? `/${path}` : path;\r\n },\r\n isAbsolute(path) {\r\n validateString(path, 'path');\r\n return path.length > 0 && path.charCodeAt(0) === CHAR_FORWARD_SLASH;\r\n },\r\n join(...paths) {\r\n if (paths.length === 0) {\r\n return '.';\r\n }\r\n let joined;\r\n for (let i = 0; i < paths.length; ++i) {\r\n const arg = paths[i];\r\n validateString(arg, 'path');\r\n if (arg.length > 0) {\r\n if (joined === undefined) {\r\n joined = arg;\r\n }\r\n else {\r\n joined += `/${arg}`;\r\n }\r\n }\r\n }\r\n if (joined === undefined) {\r\n return '.';\r\n }\r\n return posix.normalize(joined);\r\n },\r\n relative(from, to) {\r\n validateString(from, 'from');\r\n validateString(to, 'to');\r\n if (from === to) {\r\n return '';\r\n }\r\n // Trim leading forward slashes.\r\n from = posix.resolve(from);\r\n to = posix.resolve(to);\r\n if (from === to) {\r\n return '';\r\n }\r\n const fromStart = 1;\r\n const fromEnd = from.length;\r\n const fromLen = fromEnd - fromStart;\r\n const toStart = 1;\r\n const toLen = to.length - toStart;\r\n // Compare paths to find the longest common path from root\r\n const length = (fromLen < toLen ? fromLen : toLen);\r\n let lastCommonSep = -1;\r\n let i = 0;\r\n for (; i < length; i++) {\r\n const fromCode = from.charCodeAt(fromStart + i);\r\n if (fromCode !== to.charCodeAt(toStart + i)) {\r\n break;\r\n }\r\n else if (fromCode === CHAR_FORWARD_SLASH) {\r\n lastCommonSep = i;\r\n }\r\n }\r\n if (i === length) {\r\n if (toLen > length) {\r\n if (to.charCodeAt(toStart + i) === CHAR_FORWARD_SLASH) {\r\n // We get here if `from` is the exact base path for `to`.\r\n // For example: from='/foo/bar'; to='/foo/bar/baz'\r\n return to.slice(toStart + i + 1);\r\n }\r\n if (i === 0) {\r\n // We get here if `from` is the root\r\n // For example: from='/'; to='/foo'\r\n return to.slice(toStart + i);\r\n }\r\n }\r\n else if (fromLen > length) {\r\n if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) {\r\n // We get here if `to` is the exact base path for `from`.\r\n // For example: from='/foo/bar/baz'; to='/foo/bar'\r\n lastCommonSep = i;\r\n }\r\n else if (i === 0) {\r\n // We get here if `to` is the root.\r\n // For example: from='/foo/bar'; to='/'\r\n lastCommonSep = 0;\r\n }\r\n }\r\n }\r\n let out = '';\r\n // Generate the relative path based on the path difference between `to`\r\n // and `from`.\r\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\r\n if (i === fromEnd || from.charCodeAt(i) === CHAR_FORWARD_SLASH) {\r\n out += out.length === 0 ? '..' : '/..';\r\n }\r\n }\r\n // Lastly, append the rest of the destination (`to`) path that comes after\r\n // the common path parts.\r\n return `${out}${to.slice(toStart + lastCommonSep)}`;\r\n },\r\n toNamespacedPath(path) {\r\n // Non-op on posix systems\r\n return path;\r\n },\r\n dirname(path) {\r\n validateString(path, 'path');\r\n if (path.length === 0) {\r\n return '.';\r\n }\r\n const hasRoot = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\r\n let end = -1;\r\n let matchedSlash = true;\r\n for (let i = path.length - 1; i >= 1; --i) {\r\n if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) {\r\n if (!matchedSlash) {\r\n end = i;\r\n break;\r\n }\r\n }\r\n else {\r\n // We saw the first non-path separator\r\n matchedSlash = false;\r\n }\r\n }\r\n if (end === -1) {\r\n return hasRoot ? '/' : '.';\r\n }\r\n if (hasRoot && end === 1) {\r\n return '//';\r\n }\r\n return path.slice(0, end);\r\n },\r\n basename(path, ext) {\r\n if (ext !== undefined) {\r\n validateString(ext, 'ext');\r\n }\r\n validateString(path, 'path');\r\n let start = 0;\r\n let end = -1;\r\n let matchedSlash = true;\r\n let i;\r\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\r\n if (ext === path) {\r\n return '';\r\n }\r\n let extIdx = ext.length - 1;\r\n let firstNonSlashEnd = -1;\r\n for (i = path.length - 1; i >= 0; --i) {\r\n const code = path.charCodeAt(i);\r\n if (code === CHAR_FORWARD_SLASH) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n start = i + 1;\r\n break;\r\n }\r\n }\r\n else {\r\n if (firstNonSlashEnd === -1) {\r\n // We saw the first non-path separator, remember this index in case\r\n // we need it if the extension ends up not matching\r\n matchedSlash = false;\r\n firstNonSlashEnd = i + 1;\r\n }\r\n if (extIdx >= 0) {\r\n // Try to match the explicit extension\r\n if (code === ext.charCodeAt(extIdx)) {\r\n if (--extIdx === -1) {\r\n // We matched the extension, so mark this as the end of our path\r\n // component\r\n end = i;\r\n }\r\n }\r\n else {\r\n // Extension does not match, so our result is the entire path\r\n // component\r\n extIdx = -1;\r\n end = firstNonSlashEnd;\r\n }\r\n }\r\n }\r\n }\r\n if (start === end) {\r\n end = firstNonSlashEnd;\r\n }\r\n else if (end === -1) {\r\n end = path.length;\r\n }\r\n return path.slice(start, end);\r\n }\r\n for (i = path.length - 1; i >= 0; --i) {\r\n if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n start = i + 1;\r\n break;\r\n }\r\n }\r\n else if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // path component\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n }\r\n if (end === -1) {\r\n return '';\r\n }\r\n return path.slice(start, end);\r\n },\r\n extname(path) {\r\n validateString(path, 'path');\r\n let startDot = -1;\r\n let startPart = 0;\r\n let end = -1;\r\n let matchedSlash = true;\r\n // Track the state of characters (if any) we see before our first dot and\r\n // after any path separator we find\r\n let preDotState = 0;\r\n for (let i = path.length - 1; i >= 0; --i) {\r\n const code = path.charCodeAt(i);\r\n if (code === CHAR_FORWARD_SLASH) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n startPart = i + 1;\r\n break;\r\n }\r\n continue;\r\n }\r\n if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // extension\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n if (code === CHAR_DOT) {\r\n // If this is our first dot, mark it as the start of our extension\r\n if (startDot === -1) {\r\n startDot = i;\r\n }\r\n else if (preDotState !== 1) {\r\n preDotState = 1;\r\n }\r\n }\r\n else if (startDot !== -1) {\r\n // We saw a non-dot and non-path separator before our dot, so we should\r\n // have a good chance at having a non-empty extension\r\n preDotState = -1;\r\n }\r\n }\r\n if (startDot === -1 ||\r\n end === -1 ||\r\n // We saw a non-dot character immediately before the dot\r\n preDotState === 0 ||\r\n // The (right-most) trimmed path component is exactly '..'\r\n (preDotState === 1 &&\r\n startDot === end - 1 &&\r\n startDot === startPart + 1)) {\r\n return '';\r\n }\r\n return path.slice(startDot, end);\r\n },\r\n format: _format.bind(null, '/'),\r\n parse(path) {\r\n validateString(path, 'path');\r\n const ret = { root: '', dir: '', base: '', ext: '', name: '' };\r\n if (path.length === 0) {\r\n return ret;\r\n }\r\n const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\r\n let start;\r\n if (isAbsolute) {\r\n ret.root = '/';\r\n start = 1;\r\n }\r\n else {\r\n start = 0;\r\n }\r\n let startDot = -1;\r\n let startPart = 0;\r\n let end = -1;\r\n let matchedSlash = true;\r\n let i = path.length - 1;\r\n // Track the state of characters (if any) we see before our first dot and\r\n // after any path separator we find\r\n let preDotState = 0;\r\n // Get non-dir info\r\n for (; i >= start; --i) {\r\n const code = path.charCodeAt(i);\r\n if (code === CHAR_FORWARD_SLASH) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n startPart = i + 1;\r\n break;\r\n }\r\n continue;\r\n }\r\n if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // extension\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n if (code === CHAR_DOT) {\r\n // If this is our first dot, mark it as the start of our extension\r\n if (startDot === -1) {\r\n startDot = i;\r\n }\r\n else if (preDotState !== 1) {\r\n preDotState = 1;\r\n }\r\n }\r\n else if (startDot !== -1) {\r\n // We saw a non-dot and non-path separator before our dot, so we should\r\n // have a good chance at having a non-empty extension\r\n preDotState = -1;\r\n }\r\n }\r\n if (end !== -1) {\r\n const start = startPart === 0 && isAbsolute ? 1 : startPart;\r\n if (startDot === -1 ||\r\n // We saw a non-dot character immediately before the dot\r\n preDotState === 0 ||\r\n // The (right-most) trimmed path component is exactly '..'\r\n (preDotState === 1 &&\r\n startDot === end - 1 &&\r\n startDot === startPart + 1)) {\r\n ret.base = ret.name = path.slice(start, end);\r\n }\r\n else {\r\n ret.name = path.slice(start, startDot);\r\n ret.base = path.slice(start, end);\r\n ret.ext = path.slice(startDot, end);\r\n }\r\n }\r\n if (startPart > 0) {\r\n ret.dir = path.slice(0, startPart - 1);\r\n }\r\n else if (isAbsolute) {\r\n ret.dir = '/';\r\n }\r\n return ret;\r\n },\r\n sep: '/',\r\n delimiter: ':',\r\n win32: null,\r\n posix: null\r\n};\r\nposix.win32 = win32.win32 = win32;\r\nposix.posix = win32.posix = posix;\r\nexport const normalize = (process.platform === 'win32' ? win32.normalize : posix.normalize);\r\nexport const resolve = (process.platform === 'win32' ? win32.resolve : posix.resolve);\r\nexport const relative = (process.platform === 'win32' ? win32.relative : posix.relative);\r\nexport const dirname = (process.platform === 'win32' ? win32.dirname : posix.dirname);\r\nexport const basename = (process.platform === 'win32' ? win32.basename : posix.basename);\r\nexport const extname = (process.platform === 'win32' ? win32.extname : posix.extname);\r\nexport const sep = (process.platform === 'win32' ? win32.sep : posix.sep);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { isWindows } from './platform.js';\r\nimport * as paths from './path.js';\r\nconst _schemePattern = /^\\w[\\w\\d+.-]*$/;\r\nconst _singleSlashStart = /^\\//;\r\nconst _doubleSlashStart = /^\\/\\//;\r\nfunction _validateUri(ret, _strict) {\r\n // scheme, must be set\r\n if (!ret.scheme && _strict) {\r\n throw new Error(`[UriError]: Scheme is missing: {scheme: \"\", authority: \"${ret.authority}\", path: \"${ret.path}\", query: \"${ret.query}\", fragment: \"${ret.fragment}\"}`);\r\n }\r\n // scheme, https://tools.ietf.org/html/rfc3986#section-3.1\r\n // ALPHA *( ALPHA / DIGIT / \"+\" / \"-\" / \".\" )\r\n if (ret.scheme && !_schemePattern.test(ret.scheme)) {\r\n throw new Error('[UriError]: Scheme contains illegal characters.');\r\n }\r\n // path, http://tools.ietf.org/html/rfc3986#section-3.3\r\n // If a URI contains an authority component, then the path component\r\n // must either be empty or begin with a slash (\"/\") character. If a URI\r\n // does not contain an authority component, then the path cannot begin\r\n // with two slash characters (\"//\").\r\n if (ret.path) {\r\n if (ret.authority) {\r\n if (!_singleSlashStart.test(ret.path)) {\r\n throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash (\"/\") character');\r\n }\r\n }\r\n else {\r\n if (_doubleSlashStart.test(ret.path)) {\r\n throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters (\"//\")');\r\n }\r\n }\r\n }\r\n}\r\n// for a while we allowed uris *without* schemes and this is the migration\r\n// for them, e.g. an uri without scheme and without strict-mode warns and falls\r\n// back to the file-scheme. that should cause the least carnage and still be a\r\n// clear warning\r\nfunction _schemeFix(scheme, _strict) {\r\n if (!scheme && !_strict) {\r\n return 'file';\r\n }\r\n return scheme;\r\n}\r\n// implements a bit of https://tools.ietf.org/html/rfc3986#section-5\r\nfunction _referenceResolution(scheme, path) {\r\n // the slash-character is our 'default base' as we don't\r\n // support constructing URIs relative to other URIs. This\r\n // also means that we alter and potentially break paths.\r\n // see https://tools.ietf.org/html/rfc3986#section-5.1.4\r\n switch (scheme) {\r\n case 'https':\r\n case 'http':\r\n case 'file':\r\n if (!path) {\r\n path = _slash;\r\n }\r\n else if (path[0] !== _slash) {\r\n path = _slash + path;\r\n }\r\n break;\r\n }\r\n return path;\r\n}\r\nconst _empty = '';\r\nconst _slash = '/';\r\nconst _regexp = /^(([^:/?#]+?):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/;\r\n/**\r\n * Uniform Resource Identifier (URI) http://tools.ietf.org/html/rfc3986.\r\n * This class is a simple parser which creates the basic component parts\r\n * (http://tools.ietf.org/html/rfc3986#section-3) with minimal validation\r\n * and encoding.\r\n *\r\n * ```txt\r\n * foo://example.com:8042/over/there?name=ferret#nose\r\n * \\_/ \\______________/\\_________/ \\_________/ \\__/\r\n * | | | | |\r\n * scheme authority path query fragment\r\n * | _____________________|__\r\n * / \\ / \\\r\n * urn:example:animal:ferret:nose\r\n * ```\r\n */\r\nexport class URI {\r\n /**\r\n * @internal\r\n */\r\n constructor(schemeOrData, authority, path, query, fragment, _strict = false) {\r\n if (typeof schemeOrData === 'object') {\r\n this.scheme = schemeOrData.scheme || _empty;\r\n this.authority = schemeOrData.authority || _empty;\r\n this.path = schemeOrData.path || _empty;\r\n this.query = schemeOrData.query || _empty;\r\n this.fragment = schemeOrData.fragment || _empty;\r\n // no validation because it's this URI\r\n // that creates uri components.\r\n // _validateUri(this);\r\n }\r\n else {\r\n this.scheme = _schemeFix(schemeOrData, _strict);\r\n this.authority = authority || _empty;\r\n this.path = _referenceResolution(this.scheme, path || _empty);\r\n this.query = query || _empty;\r\n this.fragment = fragment || _empty;\r\n _validateUri(this, _strict);\r\n }\r\n }\r\n static isUri(thing) {\r\n if (thing instanceof URI) {\r\n return true;\r\n }\r\n if (!thing) {\r\n return false;\r\n }\r\n return typeof thing.authority === 'string'\r\n && typeof thing.fragment === 'string'\r\n && typeof thing.path === 'string'\r\n && typeof thing.query === 'string'\r\n && typeof thing.scheme === 'string'\r\n && typeof thing.fsPath === 'string'\r\n && typeof thing.with === 'function'\r\n && typeof thing.toString === 'function';\r\n }\r\n // ---- filesystem path -----------------------\r\n /**\r\n * Returns a string representing the corresponding file system path of this URI.\r\n * Will handle UNC paths, normalizes windows drive letters to lower-case, and uses the\r\n * platform specific path separator.\r\n *\r\n * * Will *not* validate the path for invalid characters and semantics.\r\n * * Will *not* look at the scheme of this URI.\r\n * * The result shall *not* be used for display purposes but for accessing a file on disk.\r\n *\r\n *\r\n * The *difference* to `URI#path` is the use of the platform specific separator and the handling\r\n * of UNC paths. See the below sample of a file-uri with an authority (UNC path).\r\n *\r\n * ```ts\r\n const u = URI.parse('file://server/c$/folder/file.txt')\r\n u.authority === 'server'\r\n u.path === '/shares/c$/file.txt'\r\n u.fsPath === '\\\\server\\c$\\folder\\file.txt'\r\n ```\r\n *\r\n * Using `URI#path` to read a file (using fs-apis) would not be enough because parts of the path,\r\n * namely the server name, would be missing. Therefore `URI#fsPath` exists - it's sugar to ease working\r\n * with URIs that represent files on disk (`file` scheme).\r\n */\r\n get fsPath() {\r\n // if (this.scheme !== 'file') {\r\n // \tconsole.warn(`[UriError] calling fsPath with scheme ${this.scheme}`);\r\n // }\r\n return uriToFsPath(this, false);\r\n }\r\n // ---- modify to new -------------------------\r\n with(change) {\r\n if (!change) {\r\n return this;\r\n }\r\n let { scheme, authority, path, query, fragment } = change;\r\n if (scheme === undefined) {\r\n scheme = this.scheme;\r\n }\r\n else if (scheme === null) {\r\n scheme = _empty;\r\n }\r\n if (authority === undefined) {\r\n authority = this.authority;\r\n }\r\n else if (authority === null) {\r\n authority = _empty;\r\n }\r\n if (path === undefined) {\r\n path = this.path;\r\n }\r\n else if (path === null) {\r\n path = _empty;\r\n }\r\n if (query === undefined) {\r\n query = this.query;\r\n }\r\n else if (query === null) {\r\n query = _empty;\r\n }\r\n if (fragment === undefined) {\r\n fragment = this.fragment;\r\n }\r\n else if (fragment === null) {\r\n fragment = _empty;\r\n }\r\n if (scheme === this.scheme\r\n && authority === this.authority\r\n && path === this.path\r\n && query === this.query\r\n && fragment === this.fragment) {\r\n return this;\r\n }\r\n return new Uri(scheme, authority, path, query, fragment);\r\n }\r\n // ---- parse & validate ------------------------\r\n /**\r\n * Creates a new URI from a string, e.g. `http://www.msft.com/some/path`,\r\n * `file:///usr/home`, or `scheme:with/path`.\r\n *\r\n * @param value A string which represents an URI (see `URI#toString`).\r\n */\r\n static parse(value, _strict = false) {\r\n const match = _regexp.exec(value);\r\n if (!match) {\r\n return new Uri(_empty, _empty, _empty, _empty, _empty);\r\n }\r\n return new Uri(match[2] || _empty, percentDecode(match[4] || _empty), percentDecode(match[5] || _empty), percentDecode(match[7] || _empty), percentDecode(match[9] || _empty), _strict);\r\n }\r\n /**\r\n * Creates a new URI from a file system path, e.g. `c:\\my\\files`,\r\n * `/usr/home`, or `\\\\server\\share\\some\\path`.\r\n *\r\n * The *difference* between `URI#parse` and `URI#file` is that the latter treats the argument\r\n * as path, not as stringified-uri. E.g. `URI.file(path)` is **not the same as**\r\n * `URI.parse('file://' + path)` because the path might contain characters that are\r\n * interpreted (# and ?). See the following sample:\r\n * ```ts\r\n const good = URI.file('/coding/c#/project1');\r\n good.scheme === 'file';\r\n good.path === '/coding/c#/project1';\r\n good.fragment === '';\r\n const bad = URI.parse('file://' + '/coding/c#/project1');\r\n bad.scheme === 'file';\r\n bad.path === '/coding/c'; // path is now broken\r\n bad.fragment === '/project1';\r\n ```\r\n *\r\n * @param path A file system path (see `URI#fsPath`)\r\n */\r\n static file(path) {\r\n let authority = _empty;\r\n // normalize to fwd-slashes on windows,\r\n // on other systems bwd-slashes are valid\r\n // filename character, eg /f\\oo/ba\\r.txt\r\n if (isWindows) {\r\n path = path.replace(/\\\\/g, _slash);\r\n }\r\n // check for authority as used in UNC shares\r\n // or use the path as given\r\n if (path[0] === _slash && path[1] === _slash) {\r\n const idx = path.indexOf(_slash, 2);\r\n if (idx === -1) {\r\n authority = path.substring(2);\r\n path = _slash;\r\n }\r\n else {\r\n authority = path.substring(2, idx);\r\n path = path.substring(idx) || _slash;\r\n }\r\n }\r\n return new Uri('file', authority, path, _empty, _empty);\r\n }\r\n static from(components) {\r\n const result = new Uri(components.scheme, components.authority, components.path, components.query, components.fragment);\r\n _validateUri(result, true);\r\n return result;\r\n }\r\n /**\r\n * Join a URI path with path fragments and normalizes the resulting path.\r\n *\r\n * @param uri The input URI.\r\n * @param pathFragment The path fragment to add to the URI path.\r\n * @returns The resulting URI.\r\n */\r\n static joinPath(uri, ...pathFragment) {\r\n if (!uri.path) {\r\n throw new Error(`[UriError]: cannot call joinPath on URI without path`);\r\n }\r\n let newPath;\r\n if (isWindows && uri.scheme === 'file') {\r\n newPath = URI.file(paths.win32.join(uriToFsPath(uri, true), ...pathFragment)).path;\r\n }\r\n else {\r\n newPath = paths.posix.join(uri.path, ...pathFragment);\r\n }\r\n return uri.with({ path: newPath });\r\n }\r\n // ---- printing/externalize ---------------------------\r\n /**\r\n * Creates a string representation for this URI. It's guaranteed that calling\r\n * `URI.parse` with the result of this function creates an URI which is equal\r\n * to this URI.\r\n *\r\n * * The result shall *not* be used for display purposes but for externalization or transport.\r\n * * The result will be encoded using the percentage encoding and encoding happens mostly\r\n * ignore the scheme-specific encoding rules.\r\n *\r\n * @param skipEncoding Do not encode the result, default is `false`\r\n */\r\n toString(skipEncoding = false) {\r\n return _asFormatted(this, skipEncoding);\r\n }\r\n toJSON() {\r\n return this;\r\n }\r\n static revive(data) {\r\n if (!data) {\r\n return data;\r\n }\r\n else if (data instanceof URI) {\r\n return data;\r\n }\r\n else {\r\n const result = new Uri(data);\r\n result._formatted = data.external;\r\n result._fsPath = data._sep === _pathSepMarker ? data.fsPath : null;\r\n return result;\r\n }\r\n }\r\n}\r\nconst _pathSepMarker = isWindows ? 1 : undefined;\r\n// This class exists so that URI is compatibile with vscode.Uri (API).\r\nclass Uri extends URI {\r\n constructor() {\r\n super(...arguments);\r\n this._formatted = null;\r\n this._fsPath = null;\r\n }\r\n get fsPath() {\r\n if (!this._fsPath) {\r\n this._fsPath = uriToFsPath(this, false);\r\n }\r\n return this._fsPath;\r\n }\r\n toString(skipEncoding = false) {\r\n if (!skipEncoding) {\r\n if (!this._formatted) {\r\n this._formatted = _asFormatted(this, false);\r\n }\r\n return this._formatted;\r\n }\r\n else {\r\n // we don't cache that\r\n return _asFormatted(this, true);\r\n }\r\n }\r\n toJSON() {\r\n const res = {\r\n $mid: 1 /* Uri */\r\n };\r\n // cached state\r\n if (this._fsPath) {\r\n res.fsPath = this._fsPath;\r\n res._sep = _pathSepMarker;\r\n }\r\n if (this._formatted) {\r\n res.external = this._formatted;\r\n }\r\n // uri components\r\n if (this.path) {\r\n res.path = this.path;\r\n }\r\n if (this.scheme) {\r\n res.scheme = this.scheme;\r\n }\r\n if (this.authority) {\r\n res.authority = this.authority;\r\n }\r\n if (this.query) {\r\n res.query = this.query;\r\n }\r\n if (this.fragment) {\r\n res.fragment = this.fragment;\r\n }\r\n return res;\r\n }\r\n}\r\n// reserved characters: https://tools.ietf.org/html/rfc3986#section-2.2\r\nconst encodeTable = {\r\n [58 /* Colon */]: '%3A',\r\n [47 /* Slash */]: '%2F',\r\n [63 /* QuestionMark */]: '%3F',\r\n [35 /* Hash */]: '%23',\r\n [91 /* OpenSquareBracket */]: '%5B',\r\n [93 /* CloseSquareBracket */]: '%5D',\r\n [64 /* AtSign */]: '%40',\r\n [33 /* ExclamationMark */]: '%21',\r\n [36 /* DollarSign */]: '%24',\r\n [38 /* Ampersand */]: '%26',\r\n [39 /* SingleQuote */]: '%27',\r\n [40 /* OpenParen */]: '%28',\r\n [41 /* CloseParen */]: '%29',\r\n [42 /* Asterisk */]: '%2A',\r\n [43 /* Plus */]: '%2B',\r\n [44 /* Comma */]: '%2C',\r\n [59 /* Semicolon */]: '%3B',\r\n [61 /* Equals */]: '%3D',\r\n [32 /* Space */]: '%20',\r\n};\r\nfunction encodeURIComponentFast(uriComponent, allowSlash) {\r\n let res = undefined;\r\n let nativeEncodePos = -1;\r\n for (let pos = 0; pos < uriComponent.length; pos++) {\r\n const code = uriComponent.charCodeAt(pos);\r\n // unreserved characters: https://tools.ietf.org/html/rfc3986#section-2.3\r\n if ((code >= 97 /* a */ && code <= 122 /* z */)\r\n || (code >= 65 /* A */ && code <= 90 /* Z */)\r\n || (code >= 48 /* Digit0 */ && code <= 57 /* Digit9 */)\r\n || code === 45 /* Dash */\r\n || code === 46 /* Period */\r\n || code === 95 /* Underline */\r\n || code === 126 /* Tilde */\r\n || (allowSlash && code === 47 /* Slash */)) {\r\n // check if we are delaying native encode\r\n if (nativeEncodePos !== -1) {\r\n res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos));\r\n nativeEncodePos = -1;\r\n }\r\n // check if we write into a new string (by default we try to return the param)\r\n if (res !== undefined) {\r\n res += uriComponent.charAt(pos);\r\n }\r\n }\r\n else {\r\n // encoding needed, we need to allocate a new string\r\n if (res === undefined) {\r\n res = uriComponent.substr(0, pos);\r\n }\r\n // check with default table first\r\n const escaped = encodeTable[code];\r\n if (escaped !== undefined) {\r\n // check if we are delaying native encode\r\n if (nativeEncodePos !== -1) {\r\n res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos));\r\n nativeEncodePos = -1;\r\n }\r\n // append escaped variant to result\r\n res += escaped;\r\n }\r\n else if (nativeEncodePos === -1) {\r\n // use native encode only when needed\r\n nativeEncodePos = pos;\r\n }\r\n }\r\n }\r\n if (nativeEncodePos !== -1) {\r\n res += encodeURIComponent(uriComponent.substring(nativeEncodePos));\r\n }\r\n return res !== undefined ? res : uriComponent;\r\n}\r\nfunction encodeURIComponentMinimal(path) {\r\n let res = undefined;\r\n for (let pos = 0; pos < path.length; pos++) {\r\n const code = path.charCodeAt(pos);\r\n if (code === 35 /* Hash */ || code === 63 /* QuestionMark */) {\r\n if (res === undefined) {\r\n res = path.substr(0, pos);\r\n }\r\n res += encodeTable[code];\r\n }\r\n else {\r\n if (res !== undefined) {\r\n res += path[pos];\r\n }\r\n }\r\n }\r\n return res !== undefined ? res : path;\r\n}\r\n/**\r\n * Compute `fsPath` for the given uri\r\n */\r\nexport function uriToFsPath(uri, keepDriveLetterCasing) {\r\n let value;\r\n if (uri.authority && uri.path.length > 1 && uri.scheme === 'file') {\r\n // unc path: file://shares/c$/far/boo\r\n value = `//${uri.authority}${uri.path}`;\r\n }\r\n else if (uri.path.charCodeAt(0) === 47 /* Slash */\r\n && (uri.path.charCodeAt(1) >= 65 /* A */ && uri.path.charCodeAt(1) <= 90 /* Z */ || uri.path.charCodeAt(1) >= 97 /* a */ && uri.path.charCodeAt(1) <= 122 /* z */)\r\n && uri.path.charCodeAt(2) === 58 /* Colon */) {\r\n if (!keepDriveLetterCasing) {\r\n // windows drive letter: file:///c:/far/boo\r\n value = uri.path[1].toLowerCase() + uri.path.substr(2);\r\n }\r\n else {\r\n value = uri.path.substr(1);\r\n }\r\n }\r\n else {\r\n // other path\r\n value = uri.path;\r\n }\r\n if (isWindows) {\r\n value = value.replace(/\\//g, '\\\\');\r\n }\r\n return value;\r\n}\r\n/**\r\n * Create the external version of a uri\r\n */\r\nfunction _asFormatted(uri, skipEncoding) {\r\n const encoder = !skipEncoding\r\n ? encodeURIComponentFast\r\n : encodeURIComponentMinimal;\r\n let res = '';\r\n let { scheme, authority, path, query, fragment } = uri;\r\n if (scheme) {\r\n res += scheme;\r\n res += ':';\r\n }\r\n if (authority || scheme === 'file') {\r\n res += _slash;\r\n res += _slash;\r\n }\r\n if (authority) {\r\n let idx = authority.indexOf('@');\r\n if (idx !== -1) {\r\n // @\r\n const userinfo = authority.substr(0, idx);\r\n authority = authority.substr(idx + 1);\r\n idx = userinfo.indexOf(':');\r\n if (idx === -1) {\r\n res += encoder(userinfo, false);\r\n }\r\n else {\r\n // :@\r\n res += encoder(userinfo.substr(0, idx), false);\r\n res += ':';\r\n res += encoder(userinfo.substr(idx + 1), false);\r\n }\r\n res += '@';\r\n }\r\n authority = authority.toLowerCase();\r\n idx = authority.indexOf(':');\r\n if (idx === -1) {\r\n res += encoder(authority, false);\r\n }\r\n else {\r\n // :\r\n res += encoder(authority.substr(0, idx), false);\r\n res += authority.substr(idx);\r\n }\r\n }\r\n if (path) {\r\n // lower-case windows drive letters in /C:/fff or C:/fff\r\n if (path.length >= 3 && path.charCodeAt(0) === 47 /* Slash */ && path.charCodeAt(2) === 58 /* Colon */) {\r\n const code = path.charCodeAt(1);\r\n if (code >= 65 /* A */ && code <= 90 /* Z */) {\r\n path = `/${String.fromCharCode(code + 32)}:${path.substr(3)}`; // \"/c:\".length === 3\r\n }\r\n }\r\n else if (path.length >= 2 && path.charCodeAt(1) === 58 /* Colon */) {\r\n const code = path.charCodeAt(0);\r\n if (code >= 65 /* A */ && code <= 90 /* Z */) {\r\n path = `${String.fromCharCode(code + 32)}:${path.substr(2)}`; // \"/c:\".length === 3\r\n }\r\n }\r\n // encode the rest of the path\r\n res += encoder(path, true);\r\n }\r\n if (query) {\r\n res += '?';\r\n res += encoder(query, false);\r\n }\r\n if (fragment) {\r\n res += '#';\r\n res += !skipEncoding ? encodeURIComponentFast(fragment, false) : fragment;\r\n }\r\n return res;\r\n}\r\n// --- decode\r\nfunction decodeURIComponentGraceful(str) {\r\n try {\r\n return decodeURIComponent(str);\r\n }\r\n catch (_a) {\r\n if (str.length > 3) {\r\n return str.substr(0, 3) + decodeURIComponentGraceful(str.substr(3));\r\n }\r\n else {\r\n return str;\r\n }\r\n }\r\n}\r\nconst _rEncodedAsHex = /(%[0-9A-Za-z][0-9A-Za-z])+/g;\r\nfunction percentDecode(str) {\r\n if (!str.match(_rEncodedAsHex)) {\r\n return str;\r\n }\r\n return str.replace(_rEncodedAsHex, (match) => decodeURIComponentGraceful(match));\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/**\r\n * A position in the editor.\r\n */\r\nexport class Position {\r\n constructor(lineNumber, column) {\r\n this.lineNumber = lineNumber;\r\n this.column = column;\r\n }\r\n /**\r\n * Create a new position from this position.\r\n *\r\n * @param newLineNumber new line number\r\n * @param newColumn new column\r\n */\r\n with(newLineNumber = this.lineNumber, newColumn = this.column) {\r\n if (newLineNumber === this.lineNumber && newColumn === this.column) {\r\n return this;\r\n }\r\n else {\r\n return new Position(newLineNumber, newColumn);\r\n }\r\n }\r\n /**\r\n * Derive a new position from this position.\r\n *\r\n * @param deltaLineNumber line number delta\r\n * @param deltaColumn column delta\r\n */\r\n delta(deltaLineNumber = 0, deltaColumn = 0) {\r\n return this.with(this.lineNumber + deltaLineNumber, this.column + deltaColumn);\r\n }\r\n /**\r\n * Test if this position equals other position\r\n */\r\n equals(other) {\r\n return Position.equals(this, other);\r\n }\r\n /**\r\n * Test if position `a` equals position `b`\r\n */\r\n static equals(a, b) {\r\n if (!a && !b) {\r\n return true;\r\n }\r\n return (!!a &&\r\n !!b &&\r\n a.lineNumber === b.lineNumber &&\r\n a.column === b.column);\r\n }\r\n /**\r\n * Test if this position is before other position.\r\n * If the two positions are equal, the result will be false.\r\n */\r\n isBefore(other) {\r\n return Position.isBefore(this, other);\r\n }\r\n /**\r\n * Test if position `a` is before position `b`.\r\n * If the two positions are equal, the result will be false.\r\n */\r\n static isBefore(a, b) {\r\n if (a.lineNumber < b.lineNumber) {\r\n return true;\r\n }\r\n if (b.lineNumber < a.lineNumber) {\r\n return false;\r\n }\r\n return a.column < b.column;\r\n }\r\n /**\r\n * Test if this position is before other position.\r\n * If the two positions are equal, the result will be true.\r\n */\r\n isBeforeOrEqual(other) {\r\n return Position.isBeforeOrEqual(this, other);\r\n }\r\n /**\r\n * Test if position `a` is before position `b`.\r\n * If the two positions are equal, the result will be true.\r\n */\r\n static isBeforeOrEqual(a, b) {\r\n if (a.lineNumber < b.lineNumber) {\r\n return true;\r\n }\r\n if (b.lineNumber < a.lineNumber) {\r\n return false;\r\n }\r\n return a.column <= b.column;\r\n }\r\n /**\r\n * A function that compares positions, useful for sorting\r\n */\r\n static compare(a, b) {\r\n let aLineNumber = a.lineNumber | 0;\r\n let bLineNumber = b.lineNumber | 0;\r\n if (aLineNumber === bLineNumber) {\r\n let aColumn = a.column | 0;\r\n let bColumn = b.column | 0;\r\n return aColumn - bColumn;\r\n }\r\n return aLineNumber - bLineNumber;\r\n }\r\n /**\r\n * Clone this position.\r\n */\r\n clone() {\r\n return new Position(this.lineNumber, this.column);\r\n }\r\n /**\r\n * Convert to a human-readable representation.\r\n */\r\n toString() {\r\n return '(' + this.lineNumber + ',' + this.column + ')';\r\n }\r\n // ---\r\n /**\r\n * Create a `Position` from an `IPosition`.\r\n */\r\n static lift(pos) {\r\n return new Position(pos.lineNumber, pos.column);\r\n }\r\n /**\r\n * Test if `obj` is an `IPosition`.\r\n */\r\n static isIPosition(obj) {\r\n return (obj\r\n && (typeof obj.lineNumber === 'number')\r\n && (typeof obj.column === 'number'));\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n// THIS IS A GENERATED FILE. DO NOT EDIT DIRECTLY.\r\nexport var AccessibilitySupport;\r\n(function (AccessibilitySupport) {\r\n /**\r\n * This should be the browser case where it is not known if a screen reader is attached or no.\r\n */\r\n AccessibilitySupport[AccessibilitySupport[\"Unknown\"] = 0] = \"Unknown\";\r\n AccessibilitySupport[AccessibilitySupport[\"Disabled\"] = 1] = \"Disabled\";\r\n AccessibilitySupport[AccessibilitySupport[\"Enabled\"] = 2] = \"Enabled\";\r\n})(AccessibilitySupport || (AccessibilitySupport = {}));\r\nexport var CompletionItemInsertTextRule;\r\n(function (CompletionItemInsertTextRule) {\r\n /**\r\n * Adjust whitespace/indentation of multiline insert texts to\r\n * match the current line indentation.\r\n */\r\n CompletionItemInsertTextRule[CompletionItemInsertTextRule[\"KeepWhitespace\"] = 1] = \"KeepWhitespace\";\r\n /**\r\n * `insertText` is a snippet.\r\n */\r\n CompletionItemInsertTextRule[CompletionItemInsertTextRule[\"InsertAsSnippet\"] = 4] = \"InsertAsSnippet\";\r\n})(CompletionItemInsertTextRule || (CompletionItemInsertTextRule = {}));\r\nexport var CompletionItemKind;\r\n(function (CompletionItemKind) {\r\n CompletionItemKind[CompletionItemKind[\"Method\"] = 0] = \"Method\";\r\n CompletionItemKind[CompletionItemKind[\"Function\"] = 1] = \"Function\";\r\n CompletionItemKind[CompletionItemKind[\"Constructor\"] = 2] = \"Constructor\";\r\n CompletionItemKind[CompletionItemKind[\"Field\"] = 3] = \"Field\";\r\n CompletionItemKind[CompletionItemKind[\"Variable\"] = 4] = \"Variable\";\r\n CompletionItemKind[CompletionItemKind[\"Class\"] = 5] = \"Class\";\r\n CompletionItemKind[CompletionItemKind[\"Struct\"] = 6] = \"Struct\";\r\n CompletionItemKind[CompletionItemKind[\"Interface\"] = 7] = \"Interface\";\r\n CompletionItemKind[CompletionItemKind[\"Module\"] = 8] = \"Module\";\r\n CompletionItemKind[CompletionItemKind[\"Property\"] = 9] = \"Property\";\r\n CompletionItemKind[CompletionItemKind[\"Event\"] = 10] = \"Event\";\r\n CompletionItemKind[CompletionItemKind[\"Operator\"] = 11] = \"Operator\";\r\n CompletionItemKind[CompletionItemKind[\"Unit\"] = 12] = \"Unit\";\r\n CompletionItemKind[CompletionItemKind[\"Value\"] = 13] = \"Value\";\r\n CompletionItemKind[CompletionItemKind[\"Constant\"] = 14] = \"Constant\";\r\n CompletionItemKind[CompletionItemKind[\"Enum\"] = 15] = \"Enum\";\r\n CompletionItemKind[CompletionItemKind[\"EnumMember\"] = 16] = \"EnumMember\";\r\n CompletionItemKind[CompletionItemKind[\"Keyword\"] = 17] = \"Keyword\";\r\n CompletionItemKind[CompletionItemKind[\"Text\"] = 18] = \"Text\";\r\n CompletionItemKind[CompletionItemKind[\"Color\"] = 19] = \"Color\";\r\n CompletionItemKind[CompletionItemKind[\"File\"] = 20] = \"File\";\r\n CompletionItemKind[CompletionItemKind[\"Reference\"] = 21] = \"Reference\";\r\n CompletionItemKind[CompletionItemKind[\"Customcolor\"] = 22] = \"Customcolor\";\r\n CompletionItemKind[CompletionItemKind[\"Folder\"] = 23] = \"Folder\";\r\n CompletionItemKind[CompletionItemKind[\"TypeParameter\"] = 24] = \"TypeParameter\";\r\n CompletionItemKind[CompletionItemKind[\"User\"] = 25] = \"User\";\r\n CompletionItemKind[CompletionItemKind[\"Issue\"] = 26] = \"Issue\";\r\n CompletionItemKind[CompletionItemKind[\"Snippet\"] = 27] = \"Snippet\";\r\n})(CompletionItemKind || (CompletionItemKind = {}));\r\nexport var CompletionItemTag;\r\n(function (CompletionItemTag) {\r\n CompletionItemTag[CompletionItemTag[\"Deprecated\"] = 1] = \"Deprecated\";\r\n})(CompletionItemTag || (CompletionItemTag = {}));\r\n/**\r\n * How a suggest provider was triggered.\r\n */\r\nexport var CompletionTriggerKind;\r\n(function (CompletionTriggerKind) {\r\n CompletionTriggerKind[CompletionTriggerKind[\"Invoke\"] = 0] = \"Invoke\";\r\n CompletionTriggerKind[CompletionTriggerKind[\"TriggerCharacter\"] = 1] = \"TriggerCharacter\";\r\n CompletionTriggerKind[CompletionTriggerKind[\"TriggerForIncompleteCompletions\"] = 2] = \"TriggerForIncompleteCompletions\";\r\n})(CompletionTriggerKind || (CompletionTriggerKind = {}));\r\n/**\r\n * A positioning preference for rendering content widgets.\r\n */\r\nexport var ContentWidgetPositionPreference;\r\n(function (ContentWidgetPositionPreference) {\r\n /**\r\n * Place the content widget exactly at a position\r\n */\r\n ContentWidgetPositionPreference[ContentWidgetPositionPreference[\"EXACT\"] = 0] = \"EXACT\";\r\n /**\r\n * Place the content widget above a position\r\n */\r\n ContentWidgetPositionPreference[ContentWidgetPositionPreference[\"ABOVE\"] = 1] = \"ABOVE\";\r\n /**\r\n * Place the content widget below a position\r\n */\r\n ContentWidgetPositionPreference[ContentWidgetPositionPreference[\"BELOW\"] = 2] = \"BELOW\";\r\n})(ContentWidgetPositionPreference || (ContentWidgetPositionPreference = {}));\r\n/**\r\n * Describes the reason the cursor has changed its position.\r\n */\r\nexport var CursorChangeReason;\r\n(function (CursorChangeReason) {\r\n /**\r\n * Unknown or not set.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"NotSet\"] = 0] = \"NotSet\";\r\n /**\r\n * A `model.setValue()` was called.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"ContentFlush\"] = 1] = \"ContentFlush\";\r\n /**\r\n * The `model` has been changed outside of this cursor and the cursor recovers its position from associated markers.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"RecoverFromMarkers\"] = 2] = \"RecoverFromMarkers\";\r\n /**\r\n * There was an explicit user gesture.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"Explicit\"] = 3] = \"Explicit\";\r\n /**\r\n * There was a Paste.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"Paste\"] = 4] = \"Paste\";\r\n /**\r\n * There was an Undo.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"Undo\"] = 5] = \"Undo\";\r\n /**\r\n * There was a Redo.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"Redo\"] = 6] = \"Redo\";\r\n})(CursorChangeReason || (CursorChangeReason = {}));\r\n/**\r\n * The default end of line to use when instantiating models.\r\n */\r\nexport var DefaultEndOfLine;\r\n(function (DefaultEndOfLine) {\r\n /**\r\n * Use line feed (\\n) as the end of line character.\r\n */\r\n DefaultEndOfLine[DefaultEndOfLine[\"LF\"] = 1] = \"LF\";\r\n /**\r\n * Use carriage return and line feed (\\r\\n) as the end of line character.\r\n */\r\n DefaultEndOfLine[DefaultEndOfLine[\"CRLF\"] = 2] = \"CRLF\";\r\n})(DefaultEndOfLine || (DefaultEndOfLine = {}));\r\n/**\r\n * A document highlight kind.\r\n */\r\nexport var DocumentHighlightKind;\r\n(function (DocumentHighlightKind) {\r\n /**\r\n * A textual occurrence.\r\n */\r\n DocumentHighlightKind[DocumentHighlightKind[\"Text\"] = 0] = \"Text\";\r\n /**\r\n * Read-access of a symbol, like reading a variable.\r\n */\r\n DocumentHighlightKind[DocumentHighlightKind[\"Read\"] = 1] = \"Read\";\r\n /**\r\n * Write-access of a symbol, like writing to a variable.\r\n */\r\n DocumentHighlightKind[DocumentHighlightKind[\"Write\"] = 2] = \"Write\";\r\n})(DocumentHighlightKind || (DocumentHighlightKind = {}));\r\n/**\r\n * Configuration options for auto indentation in the editor\r\n */\r\nexport var EditorAutoIndentStrategy;\r\n(function (EditorAutoIndentStrategy) {\r\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"None\"] = 0] = \"None\";\r\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Keep\"] = 1] = \"Keep\";\r\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Brackets\"] = 2] = \"Brackets\";\r\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Advanced\"] = 3] = \"Advanced\";\r\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Full\"] = 4] = \"Full\";\r\n})(EditorAutoIndentStrategy || (EditorAutoIndentStrategy = {}));\r\nexport var EditorOption;\r\n(function (EditorOption) {\r\n EditorOption[EditorOption[\"acceptSuggestionOnCommitCharacter\"] = 0] = \"acceptSuggestionOnCommitCharacter\";\r\n EditorOption[EditorOption[\"acceptSuggestionOnEnter\"] = 1] = \"acceptSuggestionOnEnter\";\r\n EditorOption[EditorOption[\"accessibilitySupport\"] = 2] = \"accessibilitySupport\";\r\n EditorOption[EditorOption[\"accessibilityPageSize\"] = 3] = \"accessibilityPageSize\";\r\n EditorOption[EditorOption[\"ariaLabel\"] = 4] = \"ariaLabel\";\r\n EditorOption[EditorOption[\"autoClosingBrackets\"] = 5] = \"autoClosingBrackets\";\r\n EditorOption[EditorOption[\"autoClosingDelete\"] = 6] = \"autoClosingDelete\";\r\n EditorOption[EditorOption[\"autoClosingOvertype\"] = 7] = \"autoClosingOvertype\";\r\n EditorOption[EditorOption[\"autoClosingQuotes\"] = 8] = \"autoClosingQuotes\";\r\n EditorOption[EditorOption[\"autoIndent\"] = 9] = \"autoIndent\";\r\n EditorOption[EditorOption[\"automaticLayout\"] = 10] = \"automaticLayout\";\r\n EditorOption[EditorOption[\"autoSurround\"] = 11] = \"autoSurround\";\r\n EditorOption[EditorOption[\"codeLens\"] = 12] = \"codeLens\";\r\n EditorOption[EditorOption[\"codeLensFontFamily\"] = 13] = \"codeLensFontFamily\";\r\n EditorOption[EditorOption[\"codeLensFontSize\"] = 14] = \"codeLensFontSize\";\r\n EditorOption[EditorOption[\"colorDecorators\"] = 15] = \"colorDecorators\";\r\n EditorOption[EditorOption[\"columnSelection\"] = 16] = \"columnSelection\";\r\n EditorOption[EditorOption[\"comments\"] = 17] = \"comments\";\r\n EditorOption[EditorOption[\"contextmenu\"] = 18] = \"contextmenu\";\r\n EditorOption[EditorOption[\"copyWithSyntaxHighlighting\"] = 19] = \"copyWithSyntaxHighlighting\";\r\n EditorOption[EditorOption[\"cursorBlinking\"] = 20] = \"cursorBlinking\";\r\n EditorOption[EditorOption[\"cursorSmoothCaretAnimation\"] = 21] = \"cursorSmoothCaretAnimation\";\r\n EditorOption[EditorOption[\"cursorStyle\"] = 22] = \"cursorStyle\";\r\n EditorOption[EditorOption[\"cursorSurroundingLines\"] = 23] = \"cursorSurroundingLines\";\r\n EditorOption[EditorOption[\"cursorSurroundingLinesStyle\"] = 24] = \"cursorSurroundingLinesStyle\";\r\n EditorOption[EditorOption[\"cursorWidth\"] = 25] = \"cursorWidth\";\r\n EditorOption[EditorOption[\"disableLayerHinting\"] = 26] = \"disableLayerHinting\";\r\n EditorOption[EditorOption[\"disableMonospaceOptimizations\"] = 27] = \"disableMonospaceOptimizations\";\r\n EditorOption[EditorOption[\"domReadOnly\"] = 28] = \"domReadOnly\";\r\n EditorOption[EditorOption[\"dragAndDrop\"] = 29] = \"dragAndDrop\";\r\n EditorOption[EditorOption[\"emptySelectionClipboard\"] = 30] = \"emptySelectionClipboard\";\r\n EditorOption[EditorOption[\"extraEditorClassName\"] = 31] = \"extraEditorClassName\";\r\n EditorOption[EditorOption[\"fastScrollSensitivity\"] = 32] = \"fastScrollSensitivity\";\r\n EditorOption[EditorOption[\"find\"] = 33] = \"find\";\r\n EditorOption[EditorOption[\"fixedOverflowWidgets\"] = 34] = \"fixedOverflowWidgets\";\r\n EditorOption[EditorOption[\"folding\"] = 35] = \"folding\";\r\n EditorOption[EditorOption[\"foldingStrategy\"] = 36] = \"foldingStrategy\";\r\n EditorOption[EditorOption[\"foldingHighlight\"] = 37] = \"foldingHighlight\";\r\n EditorOption[EditorOption[\"foldingImportsByDefault\"] = 38] = \"foldingImportsByDefault\";\r\n EditorOption[EditorOption[\"unfoldOnClickAfterEndOfLine\"] = 39] = \"unfoldOnClickAfterEndOfLine\";\r\n EditorOption[EditorOption[\"fontFamily\"] = 40] = \"fontFamily\";\r\n EditorOption[EditorOption[\"fontInfo\"] = 41] = \"fontInfo\";\r\n EditorOption[EditorOption[\"fontLigatures\"] = 42] = \"fontLigatures\";\r\n EditorOption[EditorOption[\"fontSize\"] = 43] = \"fontSize\";\r\n EditorOption[EditorOption[\"fontWeight\"] = 44] = \"fontWeight\";\r\n EditorOption[EditorOption[\"formatOnPaste\"] = 45] = \"formatOnPaste\";\r\n EditorOption[EditorOption[\"formatOnType\"] = 46] = \"formatOnType\";\r\n EditorOption[EditorOption[\"glyphMargin\"] = 47] = \"glyphMargin\";\r\n EditorOption[EditorOption[\"gotoLocation\"] = 48] = \"gotoLocation\";\r\n EditorOption[EditorOption[\"hideCursorInOverviewRuler\"] = 49] = \"hideCursorInOverviewRuler\";\r\n EditorOption[EditorOption[\"highlightActiveIndentGuide\"] = 50] = \"highlightActiveIndentGuide\";\r\n EditorOption[EditorOption[\"hover\"] = 51] = \"hover\";\r\n EditorOption[EditorOption[\"inDiffEditor\"] = 52] = \"inDiffEditor\";\r\n EditorOption[EditorOption[\"inlineSuggest\"] = 53] = \"inlineSuggest\";\r\n EditorOption[EditorOption[\"letterSpacing\"] = 54] = \"letterSpacing\";\r\n EditorOption[EditorOption[\"lightbulb\"] = 55] = \"lightbulb\";\r\n EditorOption[EditorOption[\"lineDecorationsWidth\"] = 56] = \"lineDecorationsWidth\";\r\n EditorOption[EditorOption[\"lineHeight\"] = 57] = \"lineHeight\";\r\n EditorOption[EditorOption[\"lineNumbers\"] = 58] = \"lineNumbers\";\r\n EditorOption[EditorOption[\"lineNumbersMinChars\"] = 59] = \"lineNumbersMinChars\";\r\n EditorOption[EditorOption[\"linkedEditing\"] = 60] = \"linkedEditing\";\r\n EditorOption[EditorOption[\"links\"] = 61] = \"links\";\r\n EditorOption[EditorOption[\"matchBrackets\"] = 62] = \"matchBrackets\";\r\n EditorOption[EditorOption[\"minimap\"] = 63] = \"minimap\";\r\n EditorOption[EditorOption[\"mouseStyle\"] = 64] = \"mouseStyle\";\r\n EditorOption[EditorOption[\"mouseWheelScrollSensitivity\"] = 65] = \"mouseWheelScrollSensitivity\";\r\n EditorOption[EditorOption[\"mouseWheelZoom\"] = 66] = \"mouseWheelZoom\";\r\n EditorOption[EditorOption[\"multiCursorMergeOverlapping\"] = 67] = \"multiCursorMergeOverlapping\";\r\n EditorOption[EditorOption[\"multiCursorModifier\"] = 68] = \"multiCursorModifier\";\r\n EditorOption[EditorOption[\"multiCursorPaste\"] = 69] = \"multiCursorPaste\";\r\n EditorOption[EditorOption[\"occurrencesHighlight\"] = 70] = \"occurrencesHighlight\";\r\n EditorOption[EditorOption[\"overviewRulerBorder\"] = 71] = \"overviewRulerBorder\";\r\n EditorOption[EditorOption[\"overviewRulerLanes\"] = 72] = \"overviewRulerLanes\";\r\n EditorOption[EditorOption[\"padding\"] = 73] = \"padding\";\r\n EditorOption[EditorOption[\"parameterHints\"] = 74] = \"parameterHints\";\r\n EditorOption[EditorOption[\"peekWidgetDefaultFocus\"] = 75] = \"peekWidgetDefaultFocus\";\r\n EditorOption[EditorOption[\"definitionLinkOpensInPeek\"] = 76] = \"definitionLinkOpensInPeek\";\r\n EditorOption[EditorOption[\"quickSuggestions\"] = 77] = \"quickSuggestions\";\r\n EditorOption[EditorOption[\"quickSuggestionsDelay\"] = 78] = \"quickSuggestionsDelay\";\r\n EditorOption[EditorOption[\"readOnly\"] = 79] = \"readOnly\";\r\n EditorOption[EditorOption[\"renameOnType\"] = 80] = \"renameOnType\";\r\n EditorOption[EditorOption[\"renderControlCharacters\"] = 81] = \"renderControlCharacters\";\r\n EditorOption[EditorOption[\"renderIndentGuides\"] = 82] = \"renderIndentGuides\";\r\n EditorOption[EditorOption[\"renderFinalNewline\"] = 83] = \"renderFinalNewline\";\r\n EditorOption[EditorOption[\"renderLineHighlight\"] = 84] = \"renderLineHighlight\";\r\n EditorOption[EditorOption[\"renderLineHighlightOnlyWhenFocus\"] = 85] = \"renderLineHighlightOnlyWhenFocus\";\r\n EditorOption[EditorOption[\"renderValidationDecorations\"] = 86] = \"renderValidationDecorations\";\r\n EditorOption[EditorOption[\"renderWhitespace\"] = 87] = \"renderWhitespace\";\r\n EditorOption[EditorOption[\"revealHorizontalRightPadding\"] = 88] = \"revealHorizontalRightPadding\";\r\n EditorOption[EditorOption[\"roundedSelection\"] = 89] = \"roundedSelection\";\r\n EditorOption[EditorOption[\"rulers\"] = 90] = \"rulers\";\r\n EditorOption[EditorOption[\"scrollbar\"] = 91] = \"scrollbar\";\r\n EditorOption[EditorOption[\"scrollBeyondLastColumn\"] = 92] = \"scrollBeyondLastColumn\";\r\n EditorOption[EditorOption[\"scrollBeyondLastLine\"] = 93] = \"scrollBeyondLastLine\";\r\n EditorOption[EditorOption[\"scrollPredominantAxis\"] = 94] = \"scrollPredominantAxis\";\r\n EditorOption[EditorOption[\"selectionClipboard\"] = 95] = \"selectionClipboard\";\r\n EditorOption[EditorOption[\"selectionHighlight\"] = 96] = \"selectionHighlight\";\r\n EditorOption[EditorOption[\"selectOnLineNumbers\"] = 97] = \"selectOnLineNumbers\";\r\n EditorOption[EditorOption[\"showFoldingControls\"] = 98] = \"showFoldingControls\";\r\n EditorOption[EditorOption[\"showUnused\"] = 99] = \"showUnused\";\r\n EditorOption[EditorOption[\"snippetSuggestions\"] = 100] = \"snippetSuggestions\";\r\n EditorOption[EditorOption[\"smartSelect\"] = 101] = \"smartSelect\";\r\n EditorOption[EditorOption[\"smoothScrolling\"] = 102] = \"smoothScrolling\";\r\n EditorOption[EditorOption[\"stickyTabStops\"] = 103] = \"stickyTabStops\";\r\n EditorOption[EditorOption[\"stopRenderingLineAfter\"] = 104] = \"stopRenderingLineAfter\";\r\n EditorOption[EditorOption[\"suggest\"] = 105] = \"suggest\";\r\n EditorOption[EditorOption[\"suggestFontSize\"] = 106] = \"suggestFontSize\";\r\n EditorOption[EditorOption[\"suggestLineHeight\"] = 107] = \"suggestLineHeight\";\r\n EditorOption[EditorOption[\"suggestOnTriggerCharacters\"] = 108] = \"suggestOnTriggerCharacters\";\r\n EditorOption[EditorOption[\"suggestSelection\"] = 109] = \"suggestSelection\";\r\n EditorOption[EditorOption[\"tabCompletion\"] = 110] = \"tabCompletion\";\r\n EditorOption[EditorOption[\"tabIndex\"] = 111] = \"tabIndex\";\r\n EditorOption[EditorOption[\"unusualLineTerminators\"] = 112] = \"unusualLineTerminators\";\r\n EditorOption[EditorOption[\"useShadowDOM\"] = 113] = \"useShadowDOM\";\r\n EditorOption[EditorOption[\"useTabStops\"] = 114] = \"useTabStops\";\r\n EditorOption[EditorOption[\"wordSeparators\"] = 115] = \"wordSeparators\";\r\n EditorOption[EditorOption[\"wordWrap\"] = 116] = \"wordWrap\";\r\n EditorOption[EditorOption[\"wordWrapBreakAfterCharacters\"] = 117] = \"wordWrapBreakAfterCharacters\";\r\n EditorOption[EditorOption[\"wordWrapBreakBeforeCharacters\"] = 118] = \"wordWrapBreakBeforeCharacters\";\r\n EditorOption[EditorOption[\"wordWrapColumn\"] = 119] = \"wordWrapColumn\";\r\n EditorOption[EditorOption[\"wordWrapOverride1\"] = 120] = \"wordWrapOverride1\";\r\n EditorOption[EditorOption[\"wordWrapOverride2\"] = 121] = \"wordWrapOverride2\";\r\n EditorOption[EditorOption[\"wrappingIndent\"] = 122] = \"wrappingIndent\";\r\n EditorOption[EditorOption[\"wrappingStrategy\"] = 123] = \"wrappingStrategy\";\r\n EditorOption[EditorOption[\"showDeprecated\"] = 124] = \"showDeprecated\";\r\n EditorOption[EditorOption[\"inlayHints\"] = 125] = \"inlayHints\";\r\n EditorOption[EditorOption[\"editorClassName\"] = 126] = \"editorClassName\";\r\n EditorOption[EditorOption[\"pixelRatio\"] = 127] = \"pixelRatio\";\r\n EditorOption[EditorOption[\"tabFocusMode\"] = 128] = \"tabFocusMode\";\r\n EditorOption[EditorOption[\"layoutInfo\"] = 129] = \"layoutInfo\";\r\n EditorOption[EditorOption[\"wrappingInfo\"] = 130] = \"wrappingInfo\";\r\n})(EditorOption || (EditorOption = {}));\r\n/**\r\n * End of line character preference.\r\n */\r\nexport var EndOfLinePreference;\r\n(function (EndOfLinePreference) {\r\n /**\r\n * Use the end of line character identified in the text buffer.\r\n */\r\n EndOfLinePreference[EndOfLinePreference[\"TextDefined\"] = 0] = \"TextDefined\";\r\n /**\r\n * Use line feed (\\n) as the end of line character.\r\n */\r\n EndOfLinePreference[EndOfLinePreference[\"LF\"] = 1] = \"LF\";\r\n /**\r\n * Use carriage return and line feed (\\r\\n) as the end of line character.\r\n */\r\n EndOfLinePreference[EndOfLinePreference[\"CRLF\"] = 2] = \"CRLF\";\r\n})(EndOfLinePreference || (EndOfLinePreference = {}));\r\n/**\r\n * End of line character preference.\r\n */\r\nexport var EndOfLineSequence;\r\n(function (EndOfLineSequence) {\r\n /**\r\n * Use line feed (\\n) as the end of line character.\r\n */\r\n EndOfLineSequence[EndOfLineSequence[\"LF\"] = 0] = \"LF\";\r\n /**\r\n * Use carriage return and line feed (\\r\\n) as the end of line character.\r\n */\r\n EndOfLineSequence[EndOfLineSequence[\"CRLF\"] = 1] = \"CRLF\";\r\n})(EndOfLineSequence || (EndOfLineSequence = {}));\r\n/**\r\n * Describes what to do with the indentation when pressing Enter.\r\n */\r\nexport var IndentAction;\r\n(function (IndentAction) {\r\n /**\r\n * Insert new line and copy the previous line's indentation.\r\n */\r\n IndentAction[IndentAction[\"None\"] = 0] = \"None\";\r\n /**\r\n * Insert new line and indent once (relative to the previous line's indentation).\r\n */\r\n IndentAction[IndentAction[\"Indent\"] = 1] = \"Indent\";\r\n /**\r\n * Insert two new lines:\r\n * - the first one indented which will hold the cursor\r\n * - the second one at the same indentation level\r\n */\r\n IndentAction[IndentAction[\"IndentOutdent\"] = 2] = \"IndentOutdent\";\r\n /**\r\n * Insert new line and outdent once (relative to the previous line's indentation).\r\n */\r\n IndentAction[IndentAction[\"Outdent\"] = 3] = \"Outdent\";\r\n})(IndentAction || (IndentAction = {}));\r\nexport var InlayHintKind;\r\n(function (InlayHintKind) {\r\n InlayHintKind[InlayHintKind[\"Other\"] = 0] = \"Other\";\r\n InlayHintKind[InlayHintKind[\"Type\"] = 1] = \"Type\";\r\n InlayHintKind[InlayHintKind[\"Parameter\"] = 2] = \"Parameter\";\r\n})(InlayHintKind || (InlayHintKind = {}));\r\n/**\r\n * How an {@link InlineCompletionsProvider inline completion provider} was triggered.\r\n */\r\nexport var InlineCompletionTriggerKind;\r\n(function (InlineCompletionTriggerKind) {\r\n /**\r\n * Completion was triggered automatically while editing.\r\n * It is sufficient to return a single completion item in this case.\r\n */\r\n InlineCompletionTriggerKind[InlineCompletionTriggerKind[\"Automatic\"] = 0] = \"Automatic\";\r\n /**\r\n * Completion was triggered explicitly by a user gesture.\r\n * Return multiple completion items to enable cycling through them.\r\n */\r\n InlineCompletionTriggerKind[InlineCompletionTriggerKind[\"Explicit\"] = 1] = \"Explicit\";\r\n})(InlineCompletionTriggerKind || (InlineCompletionTriggerKind = {}));\r\n/**\r\n * Virtual Key Codes, the value does not hold any inherent meaning.\r\n * Inspired somewhat from https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx\r\n * But these are \"more general\", as they should work across browsers & OS`s.\r\n */\r\nexport var KeyCode;\r\n(function (KeyCode) {\r\n KeyCode[KeyCode[\"DependsOnKbLayout\"] = -1] = \"DependsOnKbLayout\";\r\n /**\r\n * Placed first to cover the 0 value of the enum.\r\n */\r\n KeyCode[KeyCode[\"Unknown\"] = 0] = \"Unknown\";\r\n KeyCode[KeyCode[\"Backspace\"] = 1] = \"Backspace\";\r\n KeyCode[KeyCode[\"Tab\"] = 2] = \"Tab\";\r\n KeyCode[KeyCode[\"Enter\"] = 3] = \"Enter\";\r\n KeyCode[KeyCode[\"Shift\"] = 4] = \"Shift\";\r\n KeyCode[KeyCode[\"Ctrl\"] = 5] = \"Ctrl\";\r\n KeyCode[KeyCode[\"Alt\"] = 6] = \"Alt\";\r\n KeyCode[KeyCode[\"PauseBreak\"] = 7] = \"PauseBreak\";\r\n KeyCode[KeyCode[\"CapsLock\"] = 8] = \"CapsLock\";\r\n KeyCode[KeyCode[\"Escape\"] = 9] = \"Escape\";\r\n KeyCode[KeyCode[\"Space\"] = 10] = \"Space\";\r\n KeyCode[KeyCode[\"PageUp\"] = 11] = \"PageUp\";\r\n KeyCode[KeyCode[\"PageDown\"] = 12] = \"PageDown\";\r\n KeyCode[KeyCode[\"End\"] = 13] = \"End\";\r\n KeyCode[KeyCode[\"Home\"] = 14] = \"Home\";\r\n KeyCode[KeyCode[\"LeftArrow\"] = 15] = \"LeftArrow\";\r\n KeyCode[KeyCode[\"UpArrow\"] = 16] = \"UpArrow\";\r\n KeyCode[KeyCode[\"RightArrow\"] = 17] = \"RightArrow\";\r\n KeyCode[KeyCode[\"DownArrow\"] = 18] = \"DownArrow\";\r\n KeyCode[KeyCode[\"Insert\"] = 19] = \"Insert\";\r\n KeyCode[KeyCode[\"Delete\"] = 20] = \"Delete\";\r\n KeyCode[KeyCode[\"KEY_0\"] = 21] = \"KEY_0\";\r\n KeyCode[KeyCode[\"KEY_1\"] = 22] = \"KEY_1\";\r\n KeyCode[KeyCode[\"KEY_2\"] = 23] = \"KEY_2\";\r\n KeyCode[KeyCode[\"KEY_3\"] = 24] = \"KEY_3\";\r\n KeyCode[KeyCode[\"KEY_4\"] = 25] = \"KEY_4\";\r\n KeyCode[KeyCode[\"KEY_5\"] = 26] = \"KEY_5\";\r\n KeyCode[KeyCode[\"KEY_6\"] = 27] = \"KEY_6\";\r\n KeyCode[KeyCode[\"KEY_7\"] = 28] = \"KEY_7\";\r\n KeyCode[KeyCode[\"KEY_8\"] = 29] = \"KEY_8\";\r\n KeyCode[KeyCode[\"KEY_9\"] = 30] = \"KEY_9\";\r\n KeyCode[KeyCode[\"KEY_A\"] = 31] = \"KEY_A\";\r\n KeyCode[KeyCode[\"KEY_B\"] = 32] = \"KEY_B\";\r\n KeyCode[KeyCode[\"KEY_C\"] = 33] = \"KEY_C\";\r\n KeyCode[KeyCode[\"KEY_D\"] = 34] = \"KEY_D\";\r\n KeyCode[KeyCode[\"KEY_E\"] = 35] = \"KEY_E\";\r\n KeyCode[KeyCode[\"KEY_F\"] = 36] = \"KEY_F\";\r\n KeyCode[KeyCode[\"KEY_G\"] = 37] = \"KEY_G\";\r\n KeyCode[KeyCode[\"KEY_H\"] = 38] = \"KEY_H\";\r\n KeyCode[KeyCode[\"KEY_I\"] = 39] = \"KEY_I\";\r\n KeyCode[KeyCode[\"KEY_J\"] = 40] = \"KEY_J\";\r\n KeyCode[KeyCode[\"KEY_K\"] = 41] = \"KEY_K\";\r\n KeyCode[KeyCode[\"KEY_L\"] = 42] = \"KEY_L\";\r\n KeyCode[KeyCode[\"KEY_M\"] = 43] = \"KEY_M\";\r\n KeyCode[KeyCode[\"KEY_N\"] = 44] = \"KEY_N\";\r\n KeyCode[KeyCode[\"KEY_O\"] = 45] = \"KEY_O\";\r\n KeyCode[KeyCode[\"KEY_P\"] = 46] = \"KEY_P\";\r\n KeyCode[KeyCode[\"KEY_Q\"] = 47] = \"KEY_Q\";\r\n KeyCode[KeyCode[\"KEY_R\"] = 48] = \"KEY_R\";\r\n KeyCode[KeyCode[\"KEY_S\"] = 49] = \"KEY_S\";\r\n KeyCode[KeyCode[\"KEY_T\"] = 50] = \"KEY_T\";\r\n KeyCode[KeyCode[\"KEY_U\"] = 51] = \"KEY_U\";\r\n KeyCode[KeyCode[\"KEY_V\"] = 52] = \"KEY_V\";\r\n KeyCode[KeyCode[\"KEY_W\"] = 53] = \"KEY_W\";\r\n KeyCode[KeyCode[\"KEY_X\"] = 54] = \"KEY_X\";\r\n KeyCode[KeyCode[\"KEY_Y\"] = 55] = \"KEY_Y\";\r\n KeyCode[KeyCode[\"KEY_Z\"] = 56] = \"KEY_Z\";\r\n KeyCode[KeyCode[\"Meta\"] = 57] = \"Meta\";\r\n KeyCode[KeyCode[\"ContextMenu\"] = 58] = \"ContextMenu\";\r\n KeyCode[KeyCode[\"F1\"] = 59] = \"F1\";\r\n KeyCode[KeyCode[\"F2\"] = 60] = \"F2\";\r\n KeyCode[KeyCode[\"F3\"] = 61] = \"F3\";\r\n KeyCode[KeyCode[\"F4\"] = 62] = \"F4\";\r\n KeyCode[KeyCode[\"F5\"] = 63] = \"F5\";\r\n KeyCode[KeyCode[\"F6\"] = 64] = \"F6\";\r\n KeyCode[KeyCode[\"F7\"] = 65] = \"F7\";\r\n KeyCode[KeyCode[\"F8\"] = 66] = \"F8\";\r\n KeyCode[KeyCode[\"F9\"] = 67] = \"F9\";\r\n KeyCode[KeyCode[\"F10\"] = 68] = \"F10\";\r\n KeyCode[KeyCode[\"F11\"] = 69] = \"F11\";\r\n KeyCode[KeyCode[\"F12\"] = 70] = \"F12\";\r\n KeyCode[KeyCode[\"F13\"] = 71] = \"F13\";\r\n KeyCode[KeyCode[\"F14\"] = 72] = \"F14\";\r\n KeyCode[KeyCode[\"F15\"] = 73] = \"F15\";\r\n KeyCode[KeyCode[\"F16\"] = 74] = \"F16\";\r\n KeyCode[KeyCode[\"F17\"] = 75] = \"F17\";\r\n KeyCode[KeyCode[\"F18\"] = 76] = \"F18\";\r\n KeyCode[KeyCode[\"F19\"] = 77] = \"F19\";\r\n KeyCode[KeyCode[\"NumLock\"] = 78] = \"NumLock\";\r\n KeyCode[KeyCode[\"ScrollLock\"] = 79] = \"ScrollLock\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the ';:' key\r\n */\r\n KeyCode[KeyCode[\"US_SEMICOLON\"] = 80] = \"US_SEMICOLON\";\r\n /**\r\n * For any country/region, the '+' key\r\n * For the US standard keyboard, the '=+' key\r\n */\r\n KeyCode[KeyCode[\"US_EQUAL\"] = 81] = \"US_EQUAL\";\r\n /**\r\n * For any country/region, the ',' key\r\n * For the US standard keyboard, the ',<' key\r\n */\r\n KeyCode[KeyCode[\"US_COMMA\"] = 82] = \"US_COMMA\";\r\n /**\r\n * For any country/region, the '-' key\r\n * For the US standard keyboard, the '-_' key\r\n */\r\n KeyCode[KeyCode[\"US_MINUS\"] = 83] = \"US_MINUS\";\r\n /**\r\n * For any country/region, the '.' key\r\n * For the US standard keyboard, the '.>' key\r\n */\r\n KeyCode[KeyCode[\"US_DOT\"] = 84] = \"US_DOT\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the '/?' key\r\n */\r\n KeyCode[KeyCode[\"US_SLASH\"] = 85] = \"US_SLASH\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the '`~' key\r\n */\r\n KeyCode[KeyCode[\"US_BACKTICK\"] = 86] = \"US_BACKTICK\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the '[{' key\r\n */\r\n KeyCode[KeyCode[\"US_OPEN_SQUARE_BRACKET\"] = 87] = \"US_OPEN_SQUARE_BRACKET\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the '\\|' key\r\n */\r\n KeyCode[KeyCode[\"US_BACKSLASH\"] = 88] = \"US_BACKSLASH\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the ']}' key\r\n */\r\n KeyCode[KeyCode[\"US_CLOSE_SQUARE_BRACKET\"] = 89] = \"US_CLOSE_SQUARE_BRACKET\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the ''\"' key\r\n */\r\n KeyCode[KeyCode[\"US_QUOTE\"] = 90] = \"US_QUOTE\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n */\r\n KeyCode[KeyCode[\"OEM_8\"] = 91] = \"OEM_8\";\r\n /**\r\n * Either the angle bracket key or the backslash key on the RT 102-key keyboard.\r\n */\r\n KeyCode[KeyCode[\"OEM_102\"] = 92] = \"OEM_102\";\r\n KeyCode[KeyCode[\"NUMPAD_0\"] = 93] = \"NUMPAD_0\";\r\n KeyCode[KeyCode[\"NUMPAD_1\"] = 94] = \"NUMPAD_1\";\r\n KeyCode[KeyCode[\"NUMPAD_2\"] = 95] = \"NUMPAD_2\";\r\n KeyCode[KeyCode[\"NUMPAD_3\"] = 96] = \"NUMPAD_3\";\r\n KeyCode[KeyCode[\"NUMPAD_4\"] = 97] = \"NUMPAD_4\";\r\n KeyCode[KeyCode[\"NUMPAD_5\"] = 98] = \"NUMPAD_5\";\r\n KeyCode[KeyCode[\"NUMPAD_6\"] = 99] = \"NUMPAD_6\";\r\n KeyCode[KeyCode[\"NUMPAD_7\"] = 100] = \"NUMPAD_7\";\r\n KeyCode[KeyCode[\"NUMPAD_8\"] = 101] = \"NUMPAD_8\";\r\n KeyCode[KeyCode[\"NUMPAD_9\"] = 102] = \"NUMPAD_9\";\r\n KeyCode[KeyCode[\"NUMPAD_MULTIPLY\"] = 103] = \"NUMPAD_MULTIPLY\";\r\n KeyCode[KeyCode[\"NUMPAD_ADD\"] = 104] = \"NUMPAD_ADD\";\r\n KeyCode[KeyCode[\"NUMPAD_SEPARATOR\"] = 105] = \"NUMPAD_SEPARATOR\";\r\n KeyCode[KeyCode[\"NUMPAD_SUBTRACT\"] = 106] = \"NUMPAD_SUBTRACT\";\r\n KeyCode[KeyCode[\"NUMPAD_DECIMAL\"] = 107] = \"NUMPAD_DECIMAL\";\r\n KeyCode[KeyCode[\"NUMPAD_DIVIDE\"] = 108] = \"NUMPAD_DIVIDE\";\r\n /**\r\n * Cover all key codes when IME is processing input.\r\n */\r\n KeyCode[KeyCode[\"KEY_IN_COMPOSITION\"] = 109] = \"KEY_IN_COMPOSITION\";\r\n KeyCode[KeyCode[\"ABNT_C1\"] = 110] = \"ABNT_C1\";\r\n KeyCode[KeyCode[\"ABNT_C2\"] = 111] = \"ABNT_C2\";\r\n /**\r\n * Placed last to cover the length of the enum.\r\n * Please do not depend on this value!\r\n */\r\n KeyCode[KeyCode[\"MAX_VALUE\"] = 112] = \"MAX_VALUE\";\r\n})(KeyCode || (KeyCode = {}));\r\nexport var MarkerSeverity;\r\n(function (MarkerSeverity) {\r\n MarkerSeverity[MarkerSeverity[\"Hint\"] = 1] = \"Hint\";\r\n MarkerSeverity[MarkerSeverity[\"Info\"] = 2] = \"Info\";\r\n MarkerSeverity[MarkerSeverity[\"Warning\"] = 4] = \"Warning\";\r\n MarkerSeverity[MarkerSeverity[\"Error\"] = 8] = \"Error\";\r\n})(MarkerSeverity || (MarkerSeverity = {}));\r\nexport var MarkerTag;\r\n(function (MarkerTag) {\r\n MarkerTag[MarkerTag[\"Unnecessary\"] = 1] = \"Unnecessary\";\r\n MarkerTag[MarkerTag[\"Deprecated\"] = 2] = \"Deprecated\";\r\n})(MarkerTag || (MarkerTag = {}));\r\n/**\r\n * Position in the minimap to render the decoration.\r\n */\r\nexport var MinimapPosition;\r\n(function (MinimapPosition) {\r\n MinimapPosition[MinimapPosition[\"Inline\"] = 1] = \"Inline\";\r\n MinimapPosition[MinimapPosition[\"Gutter\"] = 2] = \"Gutter\";\r\n})(MinimapPosition || (MinimapPosition = {}));\r\n/**\r\n * Type of hit element with the mouse in the editor.\r\n */\r\nexport var MouseTargetType;\r\n(function (MouseTargetType) {\r\n /**\r\n * Mouse is on top of an unknown element.\r\n */\r\n MouseTargetType[MouseTargetType[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\r\n /**\r\n * Mouse is on top of the textarea used for input.\r\n */\r\n MouseTargetType[MouseTargetType[\"TEXTAREA\"] = 1] = \"TEXTAREA\";\r\n /**\r\n * Mouse is on top of the glyph margin\r\n */\r\n MouseTargetType[MouseTargetType[\"GUTTER_GLYPH_MARGIN\"] = 2] = \"GUTTER_GLYPH_MARGIN\";\r\n /**\r\n * Mouse is on top of the line numbers\r\n */\r\n MouseTargetType[MouseTargetType[\"GUTTER_LINE_NUMBERS\"] = 3] = \"GUTTER_LINE_NUMBERS\";\r\n /**\r\n * Mouse is on top of the line decorations\r\n */\r\n MouseTargetType[MouseTargetType[\"GUTTER_LINE_DECORATIONS\"] = 4] = \"GUTTER_LINE_DECORATIONS\";\r\n /**\r\n * Mouse is on top of the whitespace left in the gutter by a view zone.\r\n */\r\n MouseTargetType[MouseTargetType[\"GUTTER_VIEW_ZONE\"] = 5] = \"GUTTER_VIEW_ZONE\";\r\n /**\r\n * Mouse is on top of text in the content.\r\n */\r\n MouseTargetType[MouseTargetType[\"CONTENT_TEXT\"] = 6] = \"CONTENT_TEXT\";\r\n /**\r\n * Mouse is on top of empty space in the content (e.g. after line text or below last line)\r\n */\r\n MouseTargetType[MouseTargetType[\"CONTENT_EMPTY\"] = 7] = \"CONTENT_EMPTY\";\r\n /**\r\n * Mouse is on top of a view zone in the content.\r\n */\r\n MouseTargetType[MouseTargetType[\"CONTENT_VIEW_ZONE\"] = 8] = \"CONTENT_VIEW_ZONE\";\r\n /**\r\n * Mouse is on top of a content widget.\r\n */\r\n MouseTargetType[MouseTargetType[\"CONTENT_WIDGET\"] = 9] = \"CONTENT_WIDGET\";\r\n /**\r\n * Mouse is on top of the decorations overview ruler.\r\n */\r\n MouseTargetType[MouseTargetType[\"OVERVIEW_RULER\"] = 10] = \"OVERVIEW_RULER\";\r\n /**\r\n * Mouse is on top of a scrollbar.\r\n */\r\n MouseTargetType[MouseTargetType[\"SCROLLBAR\"] = 11] = \"SCROLLBAR\";\r\n /**\r\n * Mouse is on top of an overlay widget.\r\n */\r\n MouseTargetType[MouseTargetType[\"OVERLAY_WIDGET\"] = 12] = \"OVERLAY_WIDGET\";\r\n /**\r\n * Mouse is outside of the editor.\r\n */\r\n MouseTargetType[MouseTargetType[\"OUTSIDE_EDITOR\"] = 13] = \"OUTSIDE_EDITOR\";\r\n})(MouseTargetType || (MouseTargetType = {}));\r\n/**\r\n * A positioning preference for rendering overlay widgets.\r\n */\r\nexport var OverlayWidgetPositionPreference;\r\n(function (OverlayWidgetPositionPreference) {\r\n /**\r\n * Position the overlay widget in the top right corner\r\n */\r\n OverlayWidgetPositionPreference[OverlayWidgetPositionPreference[\"TOP_RIGHT_CORNER\"] = 0] = \"TOP_RIGHT_CORNER\";\r\n /**\r\n * Position the overlay widget in the bottom right corner\r\n */\r\n OverlayWidgetPositionPreference[OverlayWidgetPositionPreference[\"BOTTOM_RIGHT_CORNER\"] = 1] = \"BOTTOM_RIGHT_CORNER\";\r\n /**\r\n * Position the overlay widget in the top center\r\n */\r\n OverlayWidgetPositionPreference[OverlayWidgetPositionPreference[\"TOP_CENTER\"] = 2] = \"TOP_CENTER\";\r\n})(OverlayWidgetPositionPreference || (OverlayWidgetPositionPreference = {}));\r\n/**\r\n * Vertical Lane in the overview ruler of the editor.\r\n */\r\nexport var OverviewRulerLane;\r\n(function (OverviewRulerLane) {\r\n OverviewRulerLane[OverviewRulerLane[\"Left\"] = 1] = \"Left\";\r\n OverviewRulerLane[OverviewRulerLane[\"Center\"] = 2] = \"Center\";\r\n OverviewRulerLane[OverviewRulerLane[\"Right\"] = 4] = \"Right\";\r\n OverviewRulerLane[OverviewRulerLane[\"Full\"] = 7] = \"Full\";\r\n})(OverviewRulerLane || (OverviewRulerLane = {}));\r\nexport var RenderLineNumbersType;\r\n(function (RenderLineNumbersType) {\r\n RenderLineNumbersType[RenderLineNumbersType[\"Off\"] = 0] = \"Off\";\r\n RenderLineNumbersType[RenderLineNumbersType[\"On\"] = 1] = \"On\";\r\n RenderLineNumbersType[RenderLineNumbersType[\"Relative\"] = 2] = \"Relative\";\r\n RenderLineNumbersType[RenderLineNumbersType[\"Interval\"] = 3] = \"Interval\";\r\n RenderLineNumbersType[RenderLineNumbersType[\"Custom\"] = 4] = \"Custom\";\r\n})(RenderLineNumbersType || (RenderLineNumbersType = {}));\r\nexport var RenderMinimap;\r\n(function (RenderMinimap) {\r\n RenderMinimap[RenderMinimap[\"None\"] = 0] = \"None\";\r\n RenderMinimap[RenderMinimap[\"Text\"] = 1] = \"Text\";\r\n RenderMinimap[RenderMinimap[\"Blocks\"] = 2] = \"Blocks\";\r\n})(RenderMinimap || (RenderMinimap = {}));\r\nexport var ScrollType;\r\n(function (ScrollType) {\r\n ScrollType[ScrollType[\"Smooth\"] = 0] = \"Smooth\";\r\n ScrollType[ScrollType[\"Immediate\"] = 1] = \"Immediate\";\r\n})(ScrollType || (ScrollType = {}));\r\nexport var ScrollbarVisibility;\r\n(function (ScrollbarVisibility) {\r\n ScrollbarVisibility[ScrollbarVisibility[\"Auto\"] = 1] = \"Auto\";\r\n ScrollbarVisibility[ScrollbarVisibility[\"Hidden\"] = 2] = \"Hidden\";\r\n ScrollbarVisibility[ScrollbarVisibility[\"Visible\"] = 3] = \"Visible\";\r\n})(ScrollbarVisibility || (ScrollbarVisibility = {}));\r\n/**\r\n * The direction of a selection.\r\n */\r\nexport var SelectionDirection;\r\n(function (SelectionDirection) {\r\n /**\r\n * The selection starts above where it ends.\r\n */\r\n SelectionDirection[SelectionDirection[\"LTR\"] = 0] = \"LTR\";\r\n /**\r\n * The selection starts below where it ends.\r\n */\r\n SelectionDirection[SelectionDirection[\"RTL\"] = 1] = \"RTL\";\r\n})(SelectionDirection || (SelectionDirection = {}));\r\nexport var SignatureHelpTriggerKind;\r\n(function (SignatureHelpTriggerKind) {\r\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"Invoke\"] = 1] = \"Invoke\";\r\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"TriggerCharacter\"] = 2] = \"TriggerCharacter\";\r\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"ContentChange\"] = 3] = \"ContentChange\";\r\n})(SignatureHelpTriggerKind || (SignatureHelpTriggerKind = {}));\r\n/**\r\n * A symbol kind.\r\n */\r\nexport var SymbolKind;\r\n(function (SymbolKind) {\r\n SymbolKind[SymbolKind[\"File\"] = 0] = \"File\";\r\n SymbolKind[SymbolKind[\"Module\"] = 1] = \"Module\";\r\n SymbolKind[SymbolKind[\"Namespace\"] = 2] = \"Namespace\";\r\n SymbolKind[SymbolKind[\"Package\"] = 3] = \"Package\";\r\n SymbolKind[SymbolKind[\"Class\"] = 4] = \"Class\";\r\n SymbolKind[SymbolKind[\"Method\"] = 5] = \"Method\";\r\n SymbolKind[SymbolKind[\"Property\"] = 6] = \"Property\";\r\n SymbolKind[SymbolKind[\"Field\"] = 7] = \"Field\";\r\n SymbolKind[SymbolKind[\"Constructor\"] = 8] = \"Constructor\";\r\n SymbolKind[SymbolKind[\"Enum\"] = 9] = \"Enum\";\r\n SymbolKind[SymbolKind[\"Interface\"] = 10] = \"Interface\";\r\n SymbolKind[SymbolKind[\"Function\"] = 11] = \"Function\";\r\n SymbolKind[SymbolKind[\"Variable\"] = 12] = \"Variable\";\r\n SymbolKind[SymbolKind[\"Constant\"] = 13] = \"Constant\";\r\n SymbolKind[SymbolKind[\"String\"] = 14] = \"String\";\r\n SymbolKind[SymbolKind[\"Number\"] = 15] = \"Number\";\r\n SymbolKind[SymbolKind[\"Boolean\"] = 16] = \"Boolean\";\r\n SymbolKind[SymbolKind[\"Array\"] = 17] = \"Array\";\r\n SymbolKind[SymbolKind[\"Object\"] = 18] = \"Object\";\r\n SymbolKind[SymbolKind[\"Key\"] = 19] = \"Key\";\r\n SymbolKind[SymbolKind[\"Null\"] = 20] = \"Null\";\r\n SymbolKind[SymbolKind[\"EnumMember\"] = 21] = \"EnumMember\";\r\n SymbolKind[SymbolKind[\"Struct\"] = 22] = \"Struct\";\r\n SymbolKind[SymbolKind[\"Event\"] = 23] = \"Event\";\r\n SymbolKind[SymbolKind[\"Operator\"] = 24] = \"Operator\";\r\n SymbolKind[SymbolKind[\"TypeParameter\"] = 25] = \"TypeParameter\";\r\n})(SymbolKind || (SymbolKind = {}));\r\nexport var SymbolTag;\r\n(function (SymbolTag) {\r\n SymbolTag[SymbolTag[\"Deprecated\"] = 1] = \"Deprecated\";\r\n})(SymbolTag || (SymbolTag = {}));\r\n/**\r\n * The kind of animation in which the editor's cursor should be rendered.\r\n */\r\nexport var TextEditorCursorBlinkingStyle;\r\n(function (TextEditorCursorBlinkingStyle) {\r\n /**\r\n * Hidden\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Hidden\"] = 0] = \"Hidden\";\r\n /**\r\n * Blinking\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Blink\"] = 1] = \"Blink\";\r\n /**\r\n * Blinking with smooth fading\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Smooth\"] = 2] = \"Smooth\";\r\n /**\r\n * Blinking with prolonged filled state and smooth fading\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Phase\"] = 3] = \"Phase\";\r\n /**\r\n * Expand collapse animation on the y axis\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Expand\"] = 4] = \"Expand\";\r\n /**\r\n * No-Blinking\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Solid\"] = 5] = \"Solid\";\r\n})(TextEditorCursorBlinkingStyle || (TextEditorCursorBlinkingStyle = {}));\r\n/**\r\n * The style in which the editor's cursor should be rendered.\r\n */\r\nexport var TextEditorCursorStyle;\r\n(function (TextEditorCursorStyle) {\r\n /**\r\n * As a vertical line (sitting between two characters).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"Line\"] = 1] = \"Line\";\r\n /**\r\n * As a block (sitting on top of a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"Block\"] = 2] = \"Block\";\r\n /**\r\n * As a horizontal line (sitting under a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"Underline\"] = 3] = \"Underline\";\r\n /**\r\n * As a thin vertical line (sitting between two characters).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"LineThin\"] = 4] = \"LineThin\";\r\n /**\r\n * As an outlined block (sitting on top of a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"BlockOutline\"] = 5] = \"BlockOutline\";\r\n /**\r\n * As a thin horizontal line (sitting under a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"UnderlineThin\"] = 6] = \"UnderlineThin\";\r\n})(TextEditorCursorStyle || (TextEditorCursorStyle = {}));\r\n/**\r\n * Describes the behavior of decorations when typing/editing near their edges.\r\n * Note: Please do not edit the values, as they very carefully match `DecorationRangeBehavior`\r\n */\r\nexport var TrackedRangeStickiness;\r\n(function (TrackedRangeStickiness) {\r\n TrackedRangeStickiness[TrackedRangeStickiness[\"AlwaysGrowsWhenTypingAtEdges\"] = 0] = \"AlwaysGrowsWhenTypingAtEdges\";\r\n TrackedRangeStickiness[TrackedRangeStickiness[\"NeverGrowsWhenTypingAtEdges\"] = 1] = \"NeverGrowsWhenTypingAtEdges\";\r\n TrackedRangeStickiness[TrackedRangeStickiness[\"GrowsOnlyWhenTypingBefore\"] = 2] = \"GrowsOnlyWhenTypingBefore\";\r\n TrackedRangeStickiness[TrackedRangeStickiness[\"GrowsOnlyWhenTypingAfter\"] = 3] = \"GrowsOnlyWhenTypingAfter\";\r\n})(TrackedRangeStickiness || (TrackedRangeStickiness = {}));\r\n/**\r\n * Describes how to indent wrapped lines.\r\n */\r\nexport var WrappingIndent;\r\n(function (WrappingIndent) {\r\n /**\r\n * No indentation => wrapped lines begin at column 1.\r\n */\r\n WrappingIndent[WrappingIndent[\"None\"] = 0] = \"None\";\r\n /**\r\n * Same => wrapped lines get the same indentation as the parent.\r\n */\r\n WrappingIndent[WrappingIndent[\"Same\"] = 1] = \"Same\";\r\n /**\r\n * Indent => wrapped lines get +1 indentation toward the parent.\r\n */\r\n WrappingIndent[WrappingIndent[\"Indent\"] = 2] = \"Indent\";\r\n /**\r\n * DeepIndent => wrapped lines get +2 indentation toward the parent.\r\n */\r\n WrappingIndent[WrappingIndent[\"DeepIndent\"] = 3] = \"DeepIndent\";\r\n})(WrappingIndent || (WrappingIndent = {}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Position } from './position.js';\r\n/**\r\n * A range in the editor. (startLineNumber,startColumn) is <= (endLineNumber,endColumn)\r\n */\r\nexport class Range {\r\n constructor(startLineNumber, startColumn, endLineNumber, endColumn) {\r\n if ((startLineNumber > endLineNumber) || (startLineNumber === endLineNumber && startColumn > endColumn)) {\r\n this.startLineNumber = endLineNumber;\r\n this.startColumn = endColumn;\r\n this.endLineNumber = startLineNumber;\r\n this.endColumn = startColumn;\r\n }\r\n else {\r\n this.startLineNumber = startLineNumber;\r\n this.startColumn = startColumn;\r\n this.endLineNumber = endLineNumber;\r\n this.endColumn = endColumn;\r\n }\r\n }\r\n /**\r\n * Test if this range is empty.\r\n */\r\n isEmpty() {\r\n return Range.isEmpty(this);\r\n }\r\n /**\r\n * Test if `range` is empty.\r\n */\r\n static isEmpty(range) {\r\n return (range.startLineNumber === range.endLineNumber && range.startColumn === range.endColumn);\r\n }\r\n /**\r\n * Test if position is in this range. If the position is at the edges, will return true.\r\n */\r\n containsPosition(position) {\r\n return Range.containsPosition(this, position);\r\n }\r\n /**\r\n * Test if `position` is in `range`. If the position is at the edges, will return true.\r\n */\r\n static containsPosition(range, position) {\r\n if (position.lineNumber < range.startLineNumber || position.lineNumber > range.endLineNumber) {\r\n return false;\r\n }\r\n if (position.lineNumber === range.startLineNumber && position.column < range.startColumn) {\r\n return false;\r\n }\r\n if (position.lineNumber === range.endLineNumber && position.column > range.endColumn) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Test if range is in this range. If the range is equal to this range, will return true.\r\n */\r\n containsRange(range) {\r\n return Range.containsRange(this, range);\r\n }\r\n /**\r\n * Test if `otherRange` is in `range`. If the ranges are equal, will return true.\r\n */\r\n static containsRange(range, otherRange) {\r\n if (otherRange.startLineNumber < range.startLineNumber || otherRange.endLineNumber < range.startLineNumber) {\r\n return false;\r\n }\r\n if (otherRange.startLineNumber > range.endLineNumber || otherRange.endLineNumber > range.endLineNumber) {\r\n return false;\r\n }\r\n if (otherRange.startLineNumber === range.startLineNumber && otherRange.startColumn < range.startColumn) {\r\n return false;\r\n }\r\n if (otherRange.endLineNumber === range.endLineNumber && otherRange.endColumn > range.endColumn) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Test if `range` is strictly in this range. `range` must start after and end before this range for the result to be true.\r\n */\r\n strictContainsRange(range) {\r\n return Range.strictContainsRange(this, range);\r\n }\r\n /**\r\n * Test if `otherRange` is strinctly in `range` (must start after, and end before). If the ranges are equal, will return false.\r\n */\r\n static strictContainsRange(range, otherRange) {\r\n if (otherRange.startLineNumber < range.startLineNumber || otherRange.endLineNumber < range.startLineNumber) {\r\n return false;\r\n }\r\n if (otherRange.startLineNumber > range.endLineNumber || otherRange.endLineNumber > range.endLineNumber) {\r\n return false;\r\n }\r\n if (otherRange.startLineNumber === range.startLineNumber && otherRange.startColumn <= range.startColumn) {\r\n return false;\r\n }\r\n if (otherRange.endLineNumber === range.endLineNumber && otherRange.endColumn >= range.endColumn) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * A reunion of the two ranges.\r\n * The smallest position will be used as the start point, and the largest one as the end point.\r\n */\r\n plusRange(range) {\r\n return Range.plusRange(this, range);\r\n }\r\n /**\r\n * A reunion of the two ranges.\r\n * The smallest position will be used as the start point, and the largest one as the end point.\r\n */\r\n static plusRange(a, b) {\r\n let startLineNumber;\r\n let startColumn;\r\n let endLineNumber;\r\n let endColumn;\r\n if (b.startLineNumber < a.startLineNumber) {\r\n startLineNumber = b.startLineNumber;\r\n startColumn = b.startColumn;\r\n }\r\n else if (b.startLineNumber === a.startLineNumber) {\r\n startLineNumber = b.startLineNumber;\r\n startColumn = Math.min(b.startColumn, a.startColumn);\r\n }\r\n else {\r\n startLineNumber = a.startLineNumber;\r\n startColumn = a.startColumn;\r\n }\r\n if (b.endLineNumber > a.endLineNumber) {\r\n endLineNumber = b.endLineNumber;\r\n endColumn = b.endColumn;\r\n }\r\n else if (b.endLineNumber === a.endLineNumber) {\r\n endLineNumber = b.endLineNumber;\r\n endColumn = Math.max(b.endColumn, a.endColumn);\r\n }\r\n else {\r\n endLineNumber = a.endLineNumber;\r\n endColumn = a.endColumn;\r\n }\r\n return new Range(startLineNumber, startColumn, endLineNumber, endColumn);\r\n }\r\n /**\r\n * A intersection of the two ranges.\r\n */\r\n intersectRanges(range) {\r\n return Range.intersectRanges(this, range);\r\n }\r\n /**\r\n * A intersection of the two ranges.\r\n */\r\n static intersectRanges(a, b) {\r\n let resultStartLineNumber = a.startLineNumber;\r\n let resultStartColumn = a.startColumn;\r\n let resultEndLineNumber = a.endLineNumber;\r\n let resultEndColumn = a.endColumn;\r\n let otherStartLineNumber = b.startLineNumber;\r\n let otherStartColumn = b.startColumn;\r\n let otherEndLineNumber = b.endLineNumber;\r\n let otherEndColumn = b.endColumn;\r\n if (resultStartLineNumber < otherStartLineNumber) {\r\n resultStartLineNumber = otherStartLineNumber;\r\n resultStartColumn = otherStartColumn;\r\n }\r\n else if (resultStartLineNumber === otherStartLineNumber) {\r\n resultStartColumn = Math.max(resultStartColumn, otherStartColumn);\r\n }\r\n if (resultEndLineNumber > otherEndLineNumber) {\r\n resultEndLineNumber = otherEndLineNumber;\r\n resultEndColumn = otherEndColumn;\r\n }\r\n else if (resultEndLineNumber === otherEndLineNumber) {\r\n resultEndColumn = Math.min(resultEndColumn, otherEndColumn);\r\n }\r\n // Check if selection is now empty\r\n if (resultStartLineNumber > resultEndLineNumber) {\r\n return null;\r\n }\r\n if (resultStartLineNumber === resultEndLineNumber && resultStartColumn > resultEndColumn) {\r\n return null;\r\n }\r\n return new Range(resultStartLineNumber, resultStartColumn, resultEndLineNumber, resultEndColumn);\r\n }\r\n /**\r\n * Test if this range equals other.\r\n */\r\n equalsRange(other) {\r\n return Range.equalsRange(this, other);\r\n }\r\n /**\r\n * Test if range `a` equals `b`.\r\n */\r\n static equalsRange(a, b) {\r\n return (!!a &&\r\n !!b &&\r\n a.startLineNumber === b.startLineNumber &&\r\n a.startColumn === b.startColumn &&\r\n a.endLineNumber === b.endLineNumber &&\r\n a.endColumn === b.endColumn);\r\n }\r\n /**\r\n * Return the end position (which will be after or equal to the start position)\r\n */\r\n getEndPosition() {\r\n return Range.getEndPosition(this);\r\n }\r\n /**\r\n * Return the end position (which will be after or equal to the start position)\r\n */\r\n static getEndPosition(range) {\r\n return new Position(range.endLineNumber, range.endColumn);\r\n }\r\n /**\r\n * Return the start position (which will be before or equal to the end position)\r\n */\r\n getStartPosition() {\r\n return Range.getStartPosition(this);\r\n }\r\n /**\r\n * Return the start position (which will be before or equal to the end position)\r\n */\r\n static getStartPosition(range) {\r\n return new Position(range.startLineNumber, range.startColumn);\r\n }\r\n /**\r\n * Transform to a user presentable string representation.\r\n */\r\n toString() {\r\n return '[' + this.startLineNumber + ',' + this.startColumn + ' -> ' + this.endLineNumber + ',' + this.endColumn + ']';\r\n }\r\n /**\r\n * Create a new range using this range's start position, and using endLineNumber and endColumn as the end position.\r\n */\r\n setEndPosition(endLineNumber, endColumn) {\r\n return new Range(this.startLineNumber, this.startColumn, endLineNumber, endColumn);\r\n }\r\n /**\r\n * Create a new range using this range's end position, and using startLineNumber and startColumn as the start position.\r\n */\r\n setStartPosition(startLineNumber, startColumn) {\r\n return new Range(startLineNumber, startColumn, this.endLineNumber, this.endColumn);\r\n }\r\n /**\r\n * Create a new empty range using this range's start position.\r\n */\r\n collapseToStart() {\r\n return Range.collapseToStart(this);\r\n }\r\n /**\r\n * Create a new empty range using this range's start position.\r\n */\r\n static collapseToStart(range) {\r\n return new Range(range.startLineNumber, range.startColumn, range.startLineNumber, range.startColumn);\r\n }\r\n // ---\r\n static fromPositions(start, end = start) {\r\n return new Range(start.lineNumber, start.column, end.lineNumber, end.column);\r\n }\r\n static lift(range) {\r\n if (!range) {\r\n return null;\r\n }\r\n return new Range(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn);\r\n }\r\n /**\r\n * Test if `obj` is an `IRange`.\r\n */\r\n static isIRange(obj) {\r\n return (obj\r\n && (typeof obj.startLineNumber === 'number')\r\n && (typeof obj.startColumn === 'number')\r\n && (typeof obj.endLineNumber === 'number')\r\n && (typeof obj.endColumn === 'number'));\r\n }\r\n /**\r\n * Test if the two ranges are touching in any way.\r\n */\r\n static areIntersectingOrTouching(a, b) {\r\n // Check if `a` is before `b`\r\n if (a.endLineNumber < b.startLineNumber || (a.endLineNumber === b.startLineNumber && a.endColumn < b.startColumn)) {\r\n return false;\r\n }\r\n // Check if `b` is before `a`\r\n if (b.endLineNumber < a.startLineNumber || (b.endLineNumber === a.startLineNumber && b.endColumn < a.startColumn)) {\r\n return false;\r\n }\r\n // These ranges must intersect\r\n return true;\r\n }\r\n /**\r\n * Test if the two ranges are intersecting. If the ranges are touching it returns true.\r\n */\r\n static areIntersecting(a, b) {\r\n // Check if `a` is before `b`\r\n if (a.endLineNumber < b.startLineNumber || (a.endLineNumber === b.startLineNumber && a.endColumn <= b.startColumn)) {\r\n return false;\r\n }\r\n // Check if `b` is before `a`\r\n if (b.endLineNumber < a.startLineNumber || (b.endLineNumber === a.startLineNumber && b.endColumn <= a.startColumn)) {\r\n return false;\r\n }\r\n // These ranges must intersect\r\n return true;\r\n }\r\n /**\r\n * A function that compares ranges, useful for sorting ranges\r\n * It will first compare ranges on the startPosition and then on the endPosition\r\n */\r\n static compareRangesUsingStarts(a, b) {\r\n if (a && b) {\r\n const aStartLineNumber = a.startLineNumber | 0;\r\n const bStartLineNumber = b.startLineNumber | 0;\r\n if (aStartLineNumber === bStartLineNumber) {\r\n const aStartColumn = a.startColumn | 0;\r\n const bStartColumn = b.startColumn | 0;\r\n if (aStartColumn === bStartColumn) {\r\n const aEndLineNumber = a.endLineNumber | 0;\r\n const bEndLineNumber = b.endLineNumber | 0;\r\n if (aEndLineNumber === bEndLineNumber) {\r\n const aEndColumn = a.endColumn | 0;\r\n const bEndColumn = b.endColumn | 0;\r\n return aEndColumn - bEndColumn;\r\n }\r\n return aEndLineNumber - bEndLineNumber;\r\n }\r\n return aStartColumn - bStartColumn;\r\n }\r\n return aStartLineNumber - bStartLineNumber;\r\n }\r\n const aExists = (a ? 1 : 0);\r\n const bExists = (b ? 1 : 0);\r\n return aExists - bExists;\r\n }\r\n /**\r\n * A function that compares ranges, useful for sorting ranges\r\n * It will first compare ranges on the endPosition and then on the startPosition\r\n */\r\n static compareRangesUsingEnds(a, b) {\r\n if (a.endLineNumber === b.endLineNumber) {\r\n if (a.endColumn === b.endColumn) {\r\n if (a.startLineNumber === b.startLineNumber) {\r\n return a.startColumn - b.startColumn;\r\n }\r\n return a.startLineNumber - b.startLineNumber;\r\n }\r\n return a.endColumn - b.endColumn;\r\n }\r\n return a.endLineNumber - b.endLineNumber;\r\n }\r\n /**\r\n * Test if the range spans multiple lines.\r\n */\r\n static spansMultipleLines(range) {\r\n return range.endLineNumber > range.startLineNumber;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Position } from './position.js';\r\nimport { Range } from './range.js';\r\n/**\r\n * A selection in the editor.\r\n * The selection is a range that has an orientation.\r\n */\r\nexport class Selection extends Range {\r\n constructor(selectionStartLineNumber, selectionStartColumn, positionLineNumber, positionColumn) {\r\n super(selectionStartLineNumber, selectionStartColumn, positionLineNumber, positionColumn);\r\n this.selectionStartLineNumber = selectionStartLineNumber;\r\n this.selectionStartColumn = selectionStartColumn;\r\n this.positionLineNumber = positionLineNumber;\r\n this.positionColumn = positionColumn;\r\n }\r\n /**\r\n * Transform to a human-readable representation.\r\n */\r\n toString() {\r\n return '[' + this.selectionStartLineNumber + ',' + this.selectionStartColumn + ' -> ' + this.positionLineNumber + ',' + this.positionColumn + ']';\r\n }\r\n /**\r\n * Test if equals other selection.\r\n */\r\n equalsSelection(other) {\r\n return (Selection.selectionsEqual(this, other));\r\n }\r\n /**\r\n * Test if the two selections are equal.\r\n */\r\n static selectionsEqual(a, b) {\r\n return (a.selectionStartLineNumber === b.selectionStartLineNumber &&\r\n a.selectionStartColumn === b.selectionStartColumn &&\r\n a.positionLineNumber === b.positionLineNumber &&\r\n a.positionColumn === b.positionColumn);\r\n }\r\n /**\r\n * Get directions (LTR or RTL).\r\n */\r\n getDirection() {\r\n if (this.selectionStartLineNumber === this.startLineNumber && this.selectionStartColumn === this.startColumn) {\r\n return 0 /* LTR */;\r\n }\r\n return 1 /* RTL */;\r\n }\r\n /**\r\n * Create a new selection with a different `positionLineNumber` and `positionColumn`.\r\n */\r\n setEndPosition(endLineNumber, endColumn) {\r\n if (this.getDirection() === 0 /* LTR */) {\r\n return new Selection(this.startLineNumber, this.startColumn, endLineNumber, endColumn);\r\n }\r\n return new Selection(endLineNumber, endColumn, this.startLineNumber, this.startColumn);\r\n }\r\n /**\r\n * Get the position at `positionLineNumber` and `positionColumn`.\r\n */\r\n getPosition() {\r\n return new Position(this.positionLineNumber, this.positionColumn);\r\n }\r\n /**\r\n * Create a new selection with a different `selectionStartLineNumber` and `selectionStartColumn`.\r\n */\r\n setStartPosition(startLineNumber, startColumn) {\r\n if (this.getDirection() === 0 /* LTR */) {\r\n return new Selection(startLineNumber, startColumn, this.endLineNumber, this.endColumn);\r\n }\r\n return new Selection(this.endLineNumber, this.endColumn, startLineNumber, startColumn);\r\n }\r\n // ----\r\n /**\r\n * Create a `Selection` from one or two positions\r\n */\r\n static fromPositions(start, end = start) {\r\n return new Selection(start.lineNumber, start.column, end.lineNumber, end.column);\r\n }\r\n /**\r\n * Create a `Selection` from an `ISelection`.\r\n */\r\n static liftSelection(sel) {\r\n return new Selection(sel.selectionStartLineNumber, sel.selectionStartColumn, sel.positionLineNumber, sel.positionColumn);\r\n }\r\n /**\r\n * `a` equals `b`.\r\n */\r\n static selectionsArrEqual(a, b) {\r\n if (a && !b || !a && b) {\r\n return false;\r\n }\r\n if (!a && !b) {\r\n return true;\r\n }\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (let i = 0, len = a.length; i < len; i++) {\r\n if (!this.selectionsEqual(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * Test if `obj` is an `ISelection`.\r\n */\r\n static isISelection(obj) {\r\n return (obj\r\n && (typeof obj.selectionStartLineNumber === 'number')\r\n && (typeof obj.selectionStartColumn === 'number')\r\n && (typeof obj.positionLineNumber === 'number')\r\n && (typeof obj.positionColumn === 'number'));\r\n }\r\n /**\r\n * Create with a direction.\r\n */\r\n static createWithDirection(startLineNumber, startColumn, endLineNumber, endColumn, direction) {\r\n if (direction === 0 /* LTR */) {\r\n return new Selection(startLineNumber, startColumn, endLineNumber, endColumn);\r\n }\r\n return new Selection(endLineNumber, endColumn, startLineNumber, startColumn);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class Token {\r\n constructor(offset, type, language) {\r\n this._tokenBrand = undefined;\r\n this.offset = offset | 0; // @perf\r\n this.type = type;\r\n this.language = language;\r\n }\r\n toString() {\r\n return '(' + this.offset + ', ' + this.type + ')';\r\n }\r\n}\r\nexport class TokenizationResult {\r\n constructor(tokens, endState) {\r\n this._tokenizationResultBrand = undefined;\r\n this.tokens = tokens;\r\n this.endState = endState;\r\n }\r\n}\r\nexport class TokenizationResult2 {\r\n constructor(tokens, endState) {\r\n this._tokenizationResult2Brand = undefined;\r\n this.tokens = tokens;\r\n this.endState = endState;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { CancellationTokenSource } from '../../../base/common/cancellation.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { KeyChord } from '../../../base/common/keyCodes.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { Position } from '../core/position.js';\r\nimport { Range } from '../core/range.js';\r\nimport { Selection } from '../core/selection.js';\r\nimport { Token } from '../core/token.js';\r\nimport * as standaloneEnums from './standaloneEnums.js';\r\nexport class KeyMod {\r\n static chord(firstPart, secondPart) {\r\n return KeyChord(firstPart, secondPart);\r\n }\r\n}\r\nKeyMod.CtrlCmd = 2048 /* CtrlCmd */;\r\nKeyMod.Shift = 1024 /* Shift */;\r\nKeyMod.Alt = 512 /* Alt */;\r\nKeyMod.WinCtrl = 256 /* WinCtrl */;\r\nexport function createMonacoBaseAPI() {\r\n return {\r\n editor: undefined,\r\n languages: undefined,\r\n CancellationTokenSource: CancellationTokenSource,\r\n Emitter: Emitter,\r\n KeyCode: standaloneEnums.KeyCode,\r\n KeyMod: KeyMod,\r\n Position: Position,\r\n Range: Range,\r\n Selection: Selection,\r\n SelectionDirection: standaloneEnums.SelectionDirection,\r\n MarkerSeverity: standaloneEnums.MarkerSeverity,\r\n MarkerTag: standaloneEnums.MarkerTag,\r\n Uri: URI,\r\n Token: Token\r\n };\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n// ------ internal util\r\nexport var _util;\r\n(function (_util) {\r\n _util.serviceIds = new Map();\r\n _util.DI_TARGET = '$di$target';\r\n _util.DI_DEPENDENCIES = '$di$dependencies';\r\n function getServiceDependencies(ctor) {\r\n return ctor[_util.DI_DEPENDENCIES] || [];\r\n }\r\n _util.getServiceDependencies = getServiceDependencies;\r\n})(_util || (_util = {}));\r\nexport const IInstantiationService = createDecorator('instantiationService');\r\nfunction storeServiceDependency(id, target, index, optional) {\r\n if (target[_util.DI_TARGET] === target) {\r\n target[_util.DI_DEPENDENCIES].push({ id, index, optional });\r\n }\r\n else {\r\n target[_util.DI_DEPENDENCIES] = [{ id, index, optional }];\r\n target[_util.DI_TARGET] = target;\r\n }\r\n}\r\n/**\r\n * The *only* valid way to create a {{ServiceIdentifier}}.\r\n */\r\nexport function createDecorator(serviceId) {\r\n if (_util.serviceIds.has(serviceId)) {\r\n return _util.serviceIds.get(serviceId);\r\n }\r\n const id = function (target, key, index) {\r\n if (arguments.length !== 3) {\r\n throw new Error('@IServiceName-decorator can only be used to decorate a parameter');\r\n }\r\n storeServiceDependency(id, target, index, false);\r\n };\r\n id.toString = () => serviceId;\r\n _util.serviceIds.set(serviceId, id);\r\n return id;\r\n}\r\n/**\r\n * Mark a service dependency as optional.\r\n */\r\nexport function optional(serviceIdentifier) {\r\n return function (target, key, index) {\r\n if (arguments.length !== 3) {\r\n throw new Error('@optional-decorator can only be used to decorate a parameter');\r\n }\r\n storeServiceDependency(serviceIdentifier, target, index, true);\r\n };\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nexport const ICodeEditorService = createDecorator('codeEditorService');\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../common/event.js';\r\nclass WindowManager {\r\n constructor() {\r\n // --- Zoom Level\r\n this._zoomLevel = 0;\r\n this._lastZoomLevelChangeTime = 0;\r\n this._onDidChangeZoomLevel = new Emitter();\r\n this.onDidChangeZoomLevel = this._onDidChangeZoomLevel.event;\r\n // --- Zoom Factor\r\n this._zoomFactor = 1;\r\n }\r\n getZoomLevel() {\r\n return this._zoomLevel;\r\n }\r\n getTimeSinceLastZoomLevelChanged() {\r\n return Date.now() - this._lastZoomLevelChangeTime;\r\n }\r\n getZoomFactor() {\r\n return this._zoomFactor;\r\n }\r\n // --- Pixel Ratio\r\n getPixelRatio() {\r\n let ctx = document.createElement('canvas').getContext('2d');\r\n let dpr = window.devicePixelRatio || 1;\r\n let bsr = ctx.webkitBackingStorePixelRatio ||\r\n ctx.mozBackingStorePixelRatio ||\r\n ctx.msBackingStorePixelRatio ||\r\n ctx.oBackingStorePixelRatio ||\r\n ctx.backingStorePixelRatio || 1;\r\n return dpr / bsr;\r\n }\r\n}\r\nWindowManager.INSTANCE = new WindowManager();\r\nexport function getZoomLevel() {\r\n return WindowManager.INSTANCE.getZoomLevel();\r\n}\r\n/** Returns the time (in ms) since the zoom level was changed */\r\nexport function getTimeSinceLastZoomLevelChanged() {\r\n return WindowManager.INSTANCE.getTimeSinceLastZoomLevelChanged();\r\n}\r\nexport function onDidChangeZoomLevel(callback) {\r\n return WindowManager.INSTANCE.onDidChangeZoomLevel(callback);\r\n}\r\n/** The zoom scale for an index, e.g. 1, 1.2, 1.4 */\r\nexport function getZoomFactor() {\r\n return WindowManager.INSTANCE.getZoomFactor();\r\n}\r\nexport function getPixelRatio() {\r\n return WindowManager.INSTANCE.getPixelRatio();\r\n}\r\nconst userAgent = navigator.userAgent;\r\nexport const isFirefox = (userAgent.indexOf('Firefox') >= 0);\r\nexport const isWebKit = (userAgent.indexOf('AppleWebKit') >= 0);\r\nexport const isChrome = (userAgent.indexOf('Chrome') >= 0);\r\nexport const isSafari = (!isChrome && (userAgent.indexOf('Safari') >= 0));\r\nexport const isWebkitWebView = (!isChrome && !isSafari && isWebKit);\r\nexport const isAndroid = (userAgent.indexOf('Android') >= 0);\r\nexport const isStandalone = (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as browser from './browser.js';\r\nimport { KeyCodeUtils, SimpleKeybinding } from '../common/keyCodes.js';\r\nimport * as platform from '../common/platform.js';\r\nlet KEY_CODE_MAP = new Array(230);\r\nlet INVERSE_KEY_CODE_MAP = new Array(112 /* MAX_VALUE */);\r\n(function () {\r\n for (let i = 0; i < INVERSE_KEY_CODE_MAP.length; i++) {\r\n INVERSE_KEY_CODE_MAP[i] = -1;\r\n }\r\n function define(code, keyCode) {\r\n KEY_CODE_MAP[code] = keyCode;\r\n INVERSE_KEY_CODE_MAP[keyCode] = code;\r\n }\r\n define(3, 7 /* PauseBreak */); // VK_CANCEL 0x03 Control-break processing\r\n define(8, 1 /* Backspace */);\r\n define(9, 2 /* Tab */);\r\n define(13, 3 /* Enter */);\r\n define(16, 4 /* Shift */);\r\n define(17, 5 /* Ctrl */);\r\n define(18, 6 /* Alt */);\r\n define(19, 7 /* PauseBreak */);\r\n define(20, 8 /* CapsLock */);\r\n define(27, 9 /* Escape */);\r\n define(32, 10 /* Space */);\r\n define(33, 11 /* PageUp */);\r\n define(34, 12 /* PageDown */);\r\n define(35, 13 /* End */);\r\n define(36, 14 /* Home */);\r\n define(37, 15 /* LeftArrow */);\r\n define(38, 16 /* UpArrow */);\r\n define(39, 17 /* RightArrow */);\r\n define(40, 18 /* DownArrow */);\r\n define(45, 19 /* Insert */);\r\n define(46, 20 /* Delete */);\r\n define(48, 21 /* KEY_0 */);\r\n define(49, 22 /* KEY_1 */);\r\n define(50, 23 /* KEY_2 */);\r\n define(51, 24 /* KEY_3 */);\r\n define(52, 25 /* KEY_4 */);\r\n define(53, 26 /* KEY_5 */);\r\n define(54, 27 /* KEY_6 */);\r\n define(55, 28 /* KEY_7 */);\r\n define(56, 29 /* KEY_8 */);\r\n define(57, 30 /* KEY_9 */);\r\n define(65, 31 /* KEY_A */);\r\n define(66, 32 /* KEY_B */);\r\n define(67, 33 /* KEY_C */);\r\n define(68, 34 /* KEY_D */);\r\n define(69, 35 /* KEY_E */);\r\n define(70, 36 /* KEY_F */);\r\n define(71, 37 /* KEY_G */);\r\n define(72, 38 /* KEY_H */);\r\n define(73, 39 /* KEY_I */);\r\n define(74, 40 /* KEY_J */);\r\n define(75, 41 /* KEY_K */);\r\n define(76, 42 /* KEY_L */);\r\n define(77, 43 /* KEY_M */);\r\n define(78, 44 /* KEY_N */);\r\n define(79, 45 /* KEY_O */);\r\n define(80, 46 /* KEY_P */);\r\n define(81, 47 /* KEY_Q */);\r\n define(82, 48 /* KEY_R */);\r\n define(83, 49 /* KEY_S */);\r\n define(84, 50 /* KEY_T */);\r\n define(85, 51 /* KEY_U */);\r\n define(86, 52 /* KEY_V */);\r\n define(87, 53 /* KEY_W */);\r\n define(88, 54 /* KEY_X */);\r\n define(89, 55 /* KEY_Y */);\r\n define(90, 56 /* KEY_Z */);\r\n define(93, 58 /* ContextMenu */);\r\n define(96, 93 /* NUMPAD_0 */);\r\n define(97, 94 /* NUMPAD_1 */);\r\n define(98, 95 /* NUMPAD_2 */);\r\n define(99, 96 /* NUMPAD_3 */);\r\n define(100, 97 /* NUMPAD_4 */);\r\n define(101, 98 /* NUMPAD_5 */);\r\n define(102, 99 /* NUMPAD_6 */);\r\n define(103, 100 /* NUMPAD_7 */);\r\n define(104, 101 /* NUMPAD_8 */);\r\n define(105, 102 /* NUMPAD_9 */);\r\n define(106, 103 /* NUMPAD_MULTIPLY */);\r\n define(107, 104 /* NUMPAD_ADD */);\r\n define(108, 105 /* NUMPAD_SEPARATOR */);\r\n define(109, 106 /* NUMPAD_SUBTRACT */);\r\n define(110, 107 /* NUMPAD_DECIMAL */);\r\n define(111, 108 /* NUMPAD_DIVIDE */);\r\n define(112, 59 /* F1 */);\r\n define(113, 60 /* F2 */);\r\n define(114, 61 /* F3 */);\r\n define(115, 62 /* F4 */);\r\n define(116, 63 /* F5 */);\r\n define(117, 64 /* F6 */);\r\n define(118, 65 /* F7 */);\r\n define(119, 66 /* F8 */);\r\n define(120, 67 /* F9 */);\r\n define(121, 68 /* F10 */);\r\n define(122, 69 /* F11 */);\r\n define(123, 70 /* F12 */);\r\n define(124, 71 /* F13 */);\r\n define(125, 72 /* F14 */);\r\n define(126, 73 /* F15 */);\r\n define(127, 74 /* F16 */);\r\n define(128, 75 /* F17 */);\r\n define(129, 76 /* F18 */);\r\n define(130, 77 /* F19 */);\r\n define(144, 78 /* NumLock */);\r\n define(145, 79 /* ScrollLock */);\r\n define(186, 80 /* US_SEMICOLON */);\r\n define(187, 81 /* US_EQUAL */);\r\n define(188, 82 /* US_COMMA */);\r\n define(189, 83 /* US_MINUS */);\r\n define(190, 84 /* US_DOT */);\r\n define(191, 85 /* US_SLASH */);\r\n define(192, 86 /* US_BACKTICK */);\r\n define(193, 110 /* ABNT_C1 */);\r\n define(194, 111 /* ABNT_C2 */);\r\n define(219, 87 /* US_OPEN_SQUARE_BRACKET */);\r\n define(220, 88 /* US_BACKSLASH */);\r\n define(221, 89 /* US_CLOSE_SQUARE_BRACKET */);\r\n define(222, 90 /* US_QUOTE */);\r\n define(223, 91 /* OEM_8 */);\r\n define(226, 92 /* OEM_102 */);\r\n /**\r\n * https://lists.w3.org/Archives/Public/www-dom/2010JulSep/att-0182/keyCode-spec.html\r\n * If an Input Method Editor is processing key input and the event is keydown, return 229.\r\n */\r\n define(229, 109 /* KEY_IN_COMPOSITION */);\r\n if (browser.isFirefox) {\r\n define(59, 80 /* US_SEMICOLON */);\r\n define(107, 81 /* US_EQUAL */);\r\n define(109, 83 /* US_MINUS */);\r\n if (platform.isMacintosh) {\r\n define(224, 57 /* Meta */);\r\n }\r\n }\r\n else if (browser.isWebKit) {\r\n define(91, 57 /* Meta */);\r\n if (platform.isMacintosh) {\r\n // the two meta keys in the Mac have different key codes (91 and 93)\r\n define(93, 57 /* Meta */);\r\n }\r\n else {\r\n define(92, 57 /* Meta */);\r\n }\r\n }\r\n})();\r\nfunction extractKeyCode(e) {\r\n if (e.charCode) {\r\n // \"keypress\" events mostly\r\n let char = String.fromCharCode(e.charCode).toUpperCase();\r\n return KeyCodeUtils.fromString(char);\r\n }\r\n return KEY_CODE_MAP[e.keyCode] || 0 /* Unknown */;\r\n}\r\nconst ctrlKeyMod = (platform.isMacintosh ? 256 /* WinCtrl */ : 2048 /* CtrlCmd */);\r\nconst altKeyMod = 512 /* Alt */;\r\nconst shiftKeyMod = 1024 /* Shift */;\r\nconst metaKeyMod = (platform.isMacintosh ? 2048 /* CtrlCmd */ : 256 /* WinCtrl */);\r\nexport class StandardKeyboardEvent {\r\n constructor(source) {\r\n this._standardKeyboardEventBrand = true;\r\n let e = source;\r\n this.browserEvent = e;\r\n this.target = e.target;\r\n this.ctrlKey = e.ctrlKey;\r\n this.shiftKey = e.shiftKey;\r\n this.altKey = e.altKey;\r\n this.metaKey = e.metaKey;\r\n this.keyCode = extractKeyCode(e);\r\n this.code = e.code;\r\n // console.info(e.type + \": keyCode: \" + e.keyCode + \", which: \" + e.which + \", charCode: \" + e.charCode + \", detail: \" + e.detail + \" ====> \" + this.keyCode + ' -- ' + KeyCode[this.keyCode]);\r\n this.ctrlKey = this.ctrlKey || this.keyCode === 5 /* Ctrl */;\r\n this.altKey = this.altKey || this.keyCode === 6 /* Alt */;\r\n this.shiftKey = this.shiftKey || this.keyCode === 4 /* Shift */;\r\n this.metaKey = this.metaKey || this.keyCode === 57 /* Meta */;\r\n this._asKeybinding = this._computeKeybinding();\r\n this._asRuntimeKeybinding = this._computeRuntimeKeybinding();\r\n // console.log(`code: ${e.code}, keyCode: ${e.keyCode}, key: ${e.key}`);\r\n }\r\n preventDefault() {\r\n if (this.browserEvent && this.browserEvent.preventDefault) {\r\n this.browserEvent.preventDefault();\r\n }\r\n }\r\n stopPropagation() {\r\n if (this.browserEvent && this.browserEvent.stopPropagation) {\r\n this.browserEvent.stopPropagation();\r\n }\r\n }\r\n toKeybinding() {\r\n return this._asRuntimeKeybinding;\r\n }\r\n equals(other) {\r\n return this._asKeybinding === other;\r\n }\r\n _computeKeybinding() {\r\n let key = 0 /* Unknown */;\r\n if (this.keyCode !== 5 /* Ctrl */ && this.keyCode !== 4 /* Shift */ && this.keyCode !== 6 /* Alt */ && this.keyCode !== 57 /* Meta */) {\r\n key = this.keyCode;\r\n }\r\n let result = 0;\r\n if (this.ctrlKey) {\r\n result |= ctrlKeyMod;\r\n }\r\n if (this.altKey) {\r\n result |= altKeyMod;\r\n }\r\n if (this.shiftKey) {\r\n result |= shiftKeyMod;\r\n }\r\n if (this.metaKey) {\r\n result |= metaKeyMod;\r\n }\r\n result |= key;\r\n return result;\r\n }\r\n _computeRuntimeKeybinding() {\r\n let key = 0 /* Unknown */;\r\n if (this.keyCode !== 5 /* Ctrl */ && this.keyCode !== 4 /* Shift */ && this.keyCode !== 6 /* Alt */ && this.keyCode !== 57 /* Meta */) {\r\n key = this.keyCode;\r\n }\r\n return new SimpleKeybinding(this.ctrlKey, this.shiftKey, this.altKey, this.metaKey, key);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nlet hasDifferentOriginAncestorFlag = false;\r\nlet sameOriginWindowChainCache = null;\r\nfunction getParentWindowIfSameOrigin(w) {\r\n if (!w.parent || w.parent === w) {\r\n return null;\r\n }\r\n // Cannot really tell if we have access to the parent window unless we try to access something in it\r\n try {\r\n let location = w.location;\r\n let parentLocation = w.parent.location;\r\n if (location.origin !== 'null' && parentLocation.origin !== 'null') {\r\n if (location.protocol !== parentLocation.protocol || location.hostname !== parentLocation.hostname || location.port !== parentLocation.port) {\r\n hasDifferentOriginAncestorFlag = true;\r\n return null;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n hasDifferentOriginAncestorFlag = true;\r\n return null;\r\n }\r\n return w.parent;\r\n}\r\nexport class IframeUtils {\r\n /**\r\n * Returns a chain of embedded windows with the same origin (which can be accessed programmatically).\r\n * Having a chain of length 1 might mean that the current execution environment is running outside of an iframe or inside an iframe embedded in a window with a different origin.\r\n * To distinguish if at one point the current execution environment is running inside a window with a different origin, see hasDifferentOriginAncestor()\r\n */\r\n static getSameOriginWindowChain() {\r\n if (!sameOriginWindowChainCache) {\r\n sameOriginWindowChainCache = [];\r\n let w = window;\r\n let parent;\r\n do {\r\n parent = getParentWindowIfSameOrigin(w);\r\n if (parent) {\r\n sameOriginWindowChainCache.push({\r\n window: w,\r\n iframeElement: w.frameElement || null\r\n });\r\n }\r\n else {\r\n sameOriginWindowChainCache.push({\r\n window: w,\r\n iframeElement: null\r\n });\r\n }\r\n w = parent;\r\n } while (w);\r\n }\r\n return sameOriginWindowChainCache.slice(0);\r\n }\r\n /**\r\n * Returns true if the current execution environment is chained in a list of iframes which at one point ends in a window with a different origin.\r\n * Returns false if the current execution environment is not running inside an iframe or if the entire chain of iframes have the same origin.\r\n */\r\n static hasDifferentOriginAncestor() {\r\n if (!sameOriginWindowChainCache) {\r\n this.getSameOriginWindowChain();\r\n }\r\n return hasDifferentOriginAncestorFlag;\r\n }\r\n /**\r\n * Returns the position of `childWindow` relative to `ancestorWindow`\r\n */\r\n static getPositionOfChildWindowRelativeToAncestorWindow(childWindow, ancestorWindow) {\r\n if (!ancestorWindow || childWindow === ancestorWindow) {\r\n return {\r\n top: 0,\r\n left: 0\r\n };\r\n }\r\n let top = 0, left = 0;\r\n let windowChain = this.getSameOriginWindowChain();\r\n for (const windowChainEl of windowChain) {\r\n top += windowChainEl.window.scrollY;\r\n left += windowChainEl.window.scrollX;\r\n if (windowChainEl.window === ancestorWindow) {\r\n break;\r\n }\r\n if (!windowChainEl.iframeElement) {\r\n break;\r\n }\r\n let boundingRect = windowChainEl.iframeElement.getBoundingClientRect();\r\n top += boundingRect.top;\r\n left += boundingRect.left;\r\n }\r\n return {\r\n top: top,\r\n left: left\r\n };\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as browser from './browser.js';\r\nimport { IframeUtils } from './iframe.js';\r\nimport * as platform from '../common/platform.js';\r\nexport class StandardMouseEvent {\r\n constructor(e) {\r\n this.timestamp = Date.now();\r\n this.browserEvent = e;\r\n this.leftButton = e.button === 0;\r\n this.middleButton = e.button === 1;\r\n this.rightButton = e.button === 2;\r\n this.buttons = e.buttons;\r\n this.target = e.target;\r\n this.detail = e.detail || 1;\r\n if (e.type === 'dblclick') {\r\n this.detail = 2;\r\n }\r\n this.ctrlKey = e.ctrlKey;\r\n this.shiftKey = e.shiftKey;\r\n this.altKey = e.altKey;\r\n this.metaKey = e.metaKey;\r\n if (typeof e.pageX === 'number') {\r\n this.posx = e.pageX;\r\n this.posy = e.pageY;\r\n }\r\n else {\r\n // Probably hit by MSGestureEvent\r\n this.posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;\r\n this.posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;\r\n }\r\n // Find the position of the iframe this code is executing in relative to the iframe where the event was captured.\r\n let iframeOffsets = IframeUtils.getPositionOfChildWindowRelativeToAncestorWindow(self, e.view);\r\n this.posx -= iframeOffsets.left;\r\n this.posy -= iframeOffsets.top;\r\n }\r\n preventDefault() {\r\n this.browserEvent.preventDefault();\r\n }\r\n stopPropagation() {\r\n this.browserEvent.stopPropagation();\r\n }\r\n}\r\nexport class StandardWheelEvent {\r\n constructor(e, deltaX = 0, deltaY = 0) {\r\n this.browserEvent = e || null;\r\n this.target = e ? (e.target || e.targetNode || e.srcElement) : null;\r\n this.deltaY = deltaY;\r\n this.deltaX = deltaX;\r\n if (e) {\r\n // Old (deprecated) wheel events\r\n let e1 = e;\r\n let e2 = e;\r\n // vertical delta scroll\r\n if (typeof e1.wheelDeltaY !== 'undefined') {\r\n this.deltaY = e1.wheelDeltaY / 120;\r\n }\r\n else if (typeof e2.VERTICAL_AXIS !== 'undefined' && e2.axis === e2.VERTICAL_AXIS) {\r\n this.deltaY = -e2.detail / 3;\r\n }\r\n else if (e.type === 'wheel') {\r\n // Modern wheel event\r\n // https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent\r\n const ev = e;\r\n if (ev.deltaMode === ev.DOM_DELTA_LINE) {\r\n // the deltas are expressed in lines\r\n if (browser.isFirefox && !platform.isMacintosh) {\r\n this.deltaY = -e.deltaY / 3;\r\n }\r\n else {\r\n this.deltaY = -e.deltaY;\r\n }\r\n }\r\n else {\r\n this.deltaY = -e.deltaY / 40;\r\n }\r\n }\r\n // horizontal delta scroll\r\n if (typeof e1.wheelDeltaX !== 'undefined') {\r\n if (browser.isSafari && platform.isWindows) {\r\n this.deltaX = -(e1.wheelDeltaX / 120);\r\n }\r\n else {\r\n this.deltaX = e1.wheelDeltaX / 120;\r\n }\r\n }\r\n else if (typeof e2.HORIZONTAL_AXIS !== 'undefined' && e2.axis === e2.HORIZONTAL_AXIS) {\r\n this.deltaX = -e.detail / 3;\r\n }\r\n else if (e.type === 'wheel') {\r\n // Modern wheel event\r\n // https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent\r\n const ev = e;\r\n if (ev.deltaMode === ev.DOM_DELTA_LINE) {\r\n // the deltas are expressed in lines\r\n if (browser.isFirefox && !platform.isMacintosh) {\r\n this.deltaX = -e.deltaX / 3;\r\n }\r\n else {\r\n this.deltaX = -e.deltaX;\r\n }\r\n }\r\n else {\r\n this.deltaX = -e.deltaX / 40;\r\n }\r\n }\r\n // Assume a vertical scroll if nothing else worked\r\n if (this.deltaY === 0 && this.deltaX === 0 && e.wheelDelta) {\r\n this.deltaY = e.wheelDelta / 120;\r\n }\r\n }\r\n }\r\n preventDefault() {\r\n if (this.browserEvent) {\r\n this.browserEvent.preventDefault();\r\n }\r\n }\r\n stopPropagation() {\r\n if (this.browserEvent) {\r\n this.browserEvent.stopPropagation();\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { CancellationTokenSource } from './cancellation.js';\r\nimport { canceled } from './errors.js';\r\nimport { toDisposable } from './lifecycle.js';\r\nexport function isThenable(obj) {\r\n return !!obj && typeof obj.then === 'function';\r\n}\r\nexport function createCancelablePromise(callback) {\r\n const source = new CancellationTokenSource();\r\n const thenable = callback(source.token);\r\n const promise = new Promise((resolve, reject) => {\r\n const subscription = source.token.onCancellationRequested(() => {\r\n subscription.dispose();\r\n source.dispose();\r\n reject(canceled());\r\n });\r\n Promise.resolve(thenable).then(value => {\r\n subscription.dispose();\r\n source.dispose();\r\n resolve(value);\r\n }, err => {\r\n subscription.dispose();\r\n source.dispose();\r\n reject(err);\r\n });\r\n });\r\n return new class {\r\n cancel() {\r\n source.cancel();\r\n }\r\n then(resolve, reject) {\r\n return promise.then(resolve, reject);\r\n }\r\n catch(reject) {\r\n return this.then(undefined, reject);\r\n }\r\n finally(onfinally) {\r\n return promise.finally(onfinally);\r\n }\r\n };\r\n}\r\nexport function raceCancellation(promise, token, defaultValue) {\r\n return Promise.race([promise, new Promise(resolve => token.onCancellationRequested(() => resolve(defaultValue)))]);\r\n}\r\n/**\r\n * A helper to prevent accumulation of sequential async tasks.\r\n *\r\n * Imagine a mail man with the sole task of delivering letters. As soon as\r\n * a letter submitted for delivery, he drives to the destination, delivers it\r\n * and returns to his base. Imagine that during the trip, N more letters were submitted.\r\n * When the mail man returns, he picks those N letters and delivers them all in a\r\n * single trip. Even though N+1 submissions occurred, only 2 deliveries were made.\r\n *\r\n * The throttler implements this via the queue() method, by providing it a task\r\n * factory. Following the example:\r\n *\r\n * \t\tconst throttler = new Throttler();\r\n * \t\tconst letters = [];\r\n *\r\n * \t\tfunction deliver() {\r\n * \t\t\tconst lettersToDeliver = letters;\r\n * \t\t\tletters = [];\r\n * \t\t\treturn makeTheTrip(lettersToDeliver);\r\n * \t\t}\r\n *\r\n * \t\tfunction onLetterReceived(l) {\r\n * \t\t\tletters.push(l);\r\n * \t\t\tthrottler.queue(deliver);\r\n * \t\t}\r\n */\r\nexport class Throttler {\r\n constructor() {\r\n this.activePromise = null;\r\n this.queuedPromise = null;\r\n this.queuedPromiseFactory = null;\r\n }\r\n queue(promiseFactory) {\r\n if (this.activePromise) {\r\n this.queuedPromiseFactory = promiseFactory;\r\n if (!this.queuedPromise) {\r\n const onComplete = () => {\r\n this.queuedPromise = null;\r\n const result = this.queue(this.queuedPromiseFactory);\r\n this.queuedPromiseFactory = null;\r\n return result;\r\n };\r\n this.queuedPromise = new Promise(resolve => {\r\n this.activePromise.then(onComplete, onComplete).then(resolve);\r\n });\r\n }\r\n return new Promise((resolve, reject) => {\r\n this.queuedPromise.then(resolve, reject);\r\n });\r\n }\r\n this.activePromise = promiseFactory();\r\n return new Promise((resolve, reject) => {\r\n this.activePromise.then((result) => {\r\n this.activePromise = null;\r\n resolve(result);\r\n }, (err) => {\r\n this.activePromise = null;\r\n reject(err);\r\n });\r\n });\r\n }\r\n}\r\n/**\r\n * A helper to delay (debounce) execution of a task that is being requested often.\r\n *\r\n * Following the throttler, now imagine the mail man wants to optimize the number of\r\n * trips proactively. The trip itself can be long, so he decides not to make the trip\r\n * as soon as a letter is submitted. Instead he waits a while, in case more\r\n * letters are submitted. After said waiting period, if no letters were submitted, he\r\n * decides to make the trip. Imagine that N more letters were submitted after the first\r\n * one, all within a short period of time between each other. Even though N+1\r\n * submissions occurred, only 1 delivery was made.\r\n *\r\n * The delayer offers this behavior via the trigger() method, into which both the task\r\n * to be executed and the waiting period (delay) must be passed in as arguments. Following\r\n * the example:\r\n *\r\n * \t\tconst delayer = new Delayer(WAITING_PERIOD);\r\n * \t\tconst letters = [];\r\n *\r\n * \t\tfunction letterReceived(l) {\r\n * \t\t\tletters.push(l);\r\n * \t\t\tdelayer.trigger(() => { return makeTheTrip(); });\r\n * \t\t}\r\n */\r\nexport class Delayer {\r\n constructor(defaultDelay) {\r\n this.defaultDelay = defaultDelay;\r\n this.timeout = null;\r\n this.completionPromise = null;\r\n this.doResolve = null;\r\n this.doReject = null;\r\n this.task = null;\r\n }\r\n trigger(task, delay = this.defaultDelay) {\r\n this.task = task;\r\n this.cancelTimeout();\r\n if (!this.completionPromise) {\r\n this.completionPromise = new Promise((resolve, reject) => {\r\n this.doResolve = resolve;\r\n this.doReject = reject;\r\n }).then(() => {\r\n this.completionPromise = null;\r\n this.doResolve = null;\r\n if (this.task) {\r\n const task = this.task;\r\n this.task = null;\r\n return task();\r\n }\r\n return undefined;\r\n });\r\n }\r\n this.timeout = setTimeout(() => {\r\n this.timeout = null;\r\n if (this.doResolve) {\r\n this.doResolve(null);\r\n }\r\n }, delay);\r\n return this.completionPromise;\r\n }\r\n isTriggered() {\r\n return this.timeout !== null;\r\n }\r\n cancel() {\r\n this.cancelTimeout();\r\n if (this.completionPromise) {\r\n if (this.doReject) {\r\n this.doReject(canceled());\r\n }\r\n this.completionPromise = null;\r\n }\r\n }\r\n cancelTimeout() {\r\n if (this.timeout !== null) {\r\n clearTimeout(this.timeout);\r\n this.timeout = null;\r\n }\r\n }\r\n dispose() {\r\n this.cancel();\r\n }\r\n}\r\n/**\r\n * A helper to delay execution of a task that is being requested often, while\r\n * preventing accumulation of consecutive executions, while the task runs.\r\n *\r\n * The mail man is clever and waits for a certain amount of time, before going\r\n * out to deliver letters. While the mail man is going out, more letters arrive\r\n * and can only be delivered once he is back. Once he is back the mail man will\r\n * do one more trip to deliver the letters that have accumulated while he was out.\r\n */\r\nexport class ThrottledDelayer {\r\n constructor(defaultDelay) {\r\n this.delayer = new Delayer(defaultDelay);\r\n this.throttler = new Throttler();\r\n }\r\n trigger(promiseFactory, delay) {\r\n return this.delayer.trigger(() => this.throttler.queue(promiseFactory), delay);\r\n }\r\n dispose() {\r\n this.delayer.dispose();\r\n }\r\n}\r\nexport function timeout(millis, token) {\r\n if (!token) {\r\n return createCancelablePromise(token => timeout(millis, token));\r\n }\r\n return new Promise((resolve, reject) => {\r\n const handle = setTimeout(() => {\r\n disposable.dispose();\r\n resolve();\r\n }, millis);\r\n const disposable = token.onCancellationRequested(() => {\r\n clearTimeout(handle);\r\n disposable.dispose();\r\n reject(canceled());\r\n });\r\n });\r\n}\r\nexport function disposableTimeout(handler, timeout = 0) {\r\n const timer = setTimeout(handler, timeout);\r\n return toDisposable(() => clearTimeout(timer));\r\n}\r\nexport function first(promiseFactories, shouldStop = t => !!t, defaultValue = null) {\r\n let index = 0;\r\n const len = promiseFactories.length;\r\n const loop = () => {\r\n if (index >= len) {\r\n return Promise.resolve(defaultValue);\r\n }\r\n const factory = promiseFactories[index++];\r\n const promise = Promise.resolve(factory());\r\n return promise.then(result => {\r\n if (shouldStop(result)) {\r\n return Promise.resolve(result);\r\n }\r\n return loop();\r\n });\r\n };\r\n return loop();\r\n}\r\nexport class TimeoutTimer {\r\n constructor(runner, timeout) {\r\n this._token = -1;\r\n if (typeof runner === 'function' && typeof timeout === 'number') {\r\n this.setIfNotSet(runner, timeout);\r\n }\r\n }\r\n dispose() {\r\n this.cancel();\r\n }\r\n cancel() {\r\n if (this._token !== -1) {\r\n clearTimeout(this._token);\r\n this._token = -1;\r\n }\r\n }\r\n cancelAndSet(runner, timeout) {\r\n this.cancel();\r\n this._token = setTimeout(() => {\r\n this._token = -1;\r\n runner();\r\n }, timeout);\r\n }\r\n setIfNotSet(runner, timeout) {\r\n if (this._token !== -1) {\r\n // timer is already set\r\n return;\r\n }\r\n this._token = setTimeout(() => {\r\n this._token = -1;\r\n runner();\r\n }, timeout);\r\n }\r\n}\r\nexport class IntervalTimer {\r\n constructor() {\r\n this._token = -1;\r\n }\r\n dispose() {\r\n this.cancel();\r\n }\r\n cancel() {\r\n if (this._token !== -1) {\r\n clearInterval(this._token);\r\n this._token = -1;\r\n }\r\n }\r\n cancelAndSet(runner, interval) {\r\n this.cancel();\r\n this._token = setInterval(() => {\r\n runner();\r\n }, interval);\r\n }\r\n}\r\nexport class RunOnceScheduler {\r\n constructor(runner, delay) {\r\n this.timeoutToken = -1;\r\n this.runner = runner;\r\n this.timeout = delay;\r\n this.timeoutHandler = this.onTimeout.bind(this);\r\n }\r\n /**\r\n * Dispose RunOnceScheduler\r\n */\r\n dispose() {\r\n this.cancel();\r\n this.runner = null;\r\n }\r\n /**\r\n * Cancel current scheduled runner (if any).\r\n */\r\n cancel() {\r\n if (this.isScheduled()) {\r\n clearTimeout(this.timeoutToken);\r\n this.timeoutToken = -1;\r\n }\r\n }\r\n /**\r\n * Cancel previous runner (if any) & schedule a new runner.\r\n */\r\n schedule(delay = this.timeout) {\r\n this.cancel();\r\n this.timeoutToken = setTimeout(this.timeoutHandler, delay);\r\n }\r\n get delay() {\r\n return this.timeout;\r\n }\r\n set delay(value) {\r\n this.timeout = value;\r\n }\r\n /**\r\n * Returns true if scheduled.\r\n */\r\n isScheduled() {\r\n return this.timeoutToken !== -1;\r\n }\r\n onTimeout() {\r\n this.timeoutToken = -1;\r\n if (this.runner) {\r\n this.doRun();\r\n }\r\n }\r\n doRun() {\r\n if (this.runner) {\r\n this.runner();\r\n }\r\n }\r\n}\r\n/**\r\n * Execute the callback the next time the browser is idle\r\n */\r\nexport let runWhenIdle;\r\n(function () {\r\n if (typeof requestIdleCallback !== 'function' || typeof cancelIdleCallback !== 'function') {\r\n const dummyIdle = Object.freeze({\r\n didTimeout: true,\r\n timeRemaining() { return 15; }\r\n });\r\n runWhenIdle = (runner) => {\r\n const handle = setTimeout(() => runner(dummyIdle));\r\n let disposed = false;\r\n return {\r\n dispose() {\r\n if (disposed) {\r\n return;\r\n }\r\n disposed = true;\r\n clearTimeout(handle);\r\n }\r\n };\r\n };\r\n }\r\n else {\r\n runWhenIdle = (runner, timeout) => {\r\n const handle = requestIdleCallback(runner, typeof timeout === 'number' ? { timeout } : undefined);\r\n let disposed = false;\r\n return {\r\n dispose() {\r\n if (disposed) {\r\n return;\r\n }\r\n disposed = true;\r\n cancelIdleCallback(handle);\r\n }\r\n };\r\n };\r\n }\r\n})();\r\n/**\r\n * An implementation of the \"idle-until-urgent\"-strategy as introduced\r\n * here: https://philipwalton.com/articles/idle-until-urgent/\r\n */\r\nexport class IdleValue {\r\n constructor(executor) {\r\n this._didRun = false;\r\n this._executor = () => {\r\n try {\r\n this._value = executor();\r\n }\r\n catch (err) {\r\n this._error = err;\r\n }\r\n finally {\r\n this._didRun = true;\r\n }\r\n };\r\n this._handle = runWhenIdle(() => this._executor());\r\n }\r\n dispose() {\r\n this._handle.dispose();\r\n }\r\n get value() {\r\n if (!this._didRun) {\r\n this._handle.dispose();\r\n this._executor();\r\n }\r\n if (this._error) {\r\n throw this._error;\r\n }\r\n return this._value;\r\n }\r\n}\r\n//#endregion\r\n//#region Promises\r\nexport var Promises;\r\n(function (Promises) {\r\n /**\r\n * A drop-in replacement for `Promise.all` with the only difference\r\n * that the method awaits every promise to either fulfill or reject.\r\n *\r\n * Similar to `Promise.all`, only the first error will be returned\r\n * if any.\r\n */\r\n function settled(promises) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let firstError = undefined;\r\n const result = yield Promise.all(promises.map(promise => promise.then(value => value, error => {\r\n if (!firstError) {\r\n firstError = error;\r\n }\r\n return undefined; // do not rethrow so that other promises can settle\r\n })));\r\n if (typeof firstError !== 'undefined') {\r\n throw firstError;\r\n }\r\n return result; // cast is needed and protected by the `throw` above\r\n });\r\n }\r\n Promises.settled = settled;\r\n})(Promises || (Promises = {}));\r\n//#endregion\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { URI } from './uri.js';\r\nimport * as platform from './platform.js';\r\nexport var Schemas;\r\n(function (Schemas) {\r\n /**\r\n * A schema that is used for models that exist in memory\r\n * only and that have no correspondence on a server or such.\r\n */\r\n Schemas.inMemory = 'inmemory';\r\n /**\r\n * A schema that is used for setting files\r\n */\r\n Schemas.vscode = 'vscode';\r\n /**\r\n * A schema that is used for internal private files\r\n */\r\n Schemas.internal = 'private';\r\n /**\r\n * A walk-through document.\r\n */\r\n Schemas.walkThrough = 'walkThrough';\r\n /**\r\n * An embedded code snippet.\r\n */\r\n Schemas.walkThroughSnippet = 'walkThroughSnippet';\r\n Schemas.http = 'http';\r\n Schemas.https = 'https';\r\n Schemas.file = 'file';\r\n Schemas.mailto = 'mailto';\r\n Schemas.untitled = 'untitled';\r\n Schemas.data = 'data';\r\n Schemas.command = 'command';\r\n Schemas.vscodeRemote = 'vscode-remote';\r\n Schemas.vscodeRemoteResource = 'vscode-remote-resource';\r\n Schemas.userData = 'vscode-userdata';\r\n Schemas.vscodeCustomEditor = 'vscode-custom-editor';\r\n Schemas.vscodeNotebook = 'vscode-notebook';\r\n Schemas.vscodeNotebookCell = 'vscode-notebook-cell';\r\n Schemas.vscodeNotebookCellMetadata = 'vscode-notebook-cell-metadata';\r\n Schemas.vscodeNotebookCellOutput = 'vscode-notebook-cell-output';\r\n Schemas.vscodeInteractive = 'vscode-interactive';\r\n Schemas.vscodeInteractiveInput = 'vscode-interactive-input';\r\n Schemas.vscodeSettings = 'vscode-settings';\r\n Schemas.vscodeWorkspaceTrust = 'vscode-workspace-trust';\r\n Schemas.vscodeTerminal = 'vscode-terminal';\r\n Schemas.webviewPanel = 'webview-panel';\r\n /**\r\n * Scheme used for loading the wrapper html and script in webviews.\r\n */\r\n Schemas.vscodeWebview = 'vscode-webview';\r\n /**\r\n * Scheme used for extension pages\r\n */\r\n Schemas.extension = 'extension';\r\n /**\r\n * Scheme used as a replacement of `file` scheme to load\r\n * files with our custom protocol handler (desktop only).\r\n */\r\n Schemas.vscodeFileResource = 'vscode-file';\r\n /**\r\n * Scheme used for temporary resources\r\n */\r\n Schemas.tmp = 'tmp';\r\n})(Schemas || (Schemas = {}));\r\nclass RemoteAuthoritiesImpl {\r\n constructor() {\r\n this._hosts = Object.create(null);\r\n this._ports = Object.create(null);\r\n this._connectionTokens = Object.create(null);\r\n this._preferredWebSchema = 'http';\r\n this._delegate = null;\r\n }\r\n setPreferredWebSchema(schema) {\r\n this._preferredWebSchema = schema;\r\n }\r\n rewrite(uri) {\r\n if (this._delegate) {\r\n return this._delegate(uri);\r\n }\r\n const authority = uri.authority;\r\n let host = this._hosts[authority];\r\n if (host && host.indexOf(':') !== -1) {\r\n host = `[${host}]`;\r\n }\r\n const port = this._ports[authority];\r\n const connectionToken = this._connectionTokens[authority];\r\n let query = `path=${encodeURIComponent(uri.path)}`;\r\n if (typeof connectionToken === 'string') {\r\n query += `&tkn=${encodeURIComponent(connectionToken)}`;\r\n }\r\n return URI.from({\r\n scheme: platform.isWeb ? this._preferredWebSchema : Schemas.vscodeRemoteResource,\r\n authority: `${host}:${port}`,\r\n path: `/vscode-remote-resource`,\r\n query\r\n });\r\n }\r\n}\r\nexport const RemoteAuthorities = new RemoteAuthoritiesImpl();\r\nclass FileAccessImpl {\r\n constructor() {\r\n this.FALLBACK_AUTHORITY = 'vscode-app';\r\n }\r\n asBrowserUri(uriOrModule, moduleIdToUrl, __forceCodeFileUri) {\r\n const uri = this.toUri(uriOrModule, moduleIdToUrl);\r\n // Handle remote URIs via `RemoteAuthorities`\r\n if (uri.scheme === Schemas.vscodeRemote) {\r\n return RemoteAuthorities.rewrite(uri);\r\n }\r\n let convertToVSCodeFileResource = false;\r\n // Only convert the URI if we are in a native context and it has `file:` scheme\r\n // and we have explicitly enabled the conversion (sandbox, or VSCODE_BROWSER_CODE_LOADING)\r\n if (platform.isNative && (__forceCodeFileUri || platform.isPreferringBrowserCodeLoad) && uri.scheme === Schemas.file) {\r\n convertToVSCodeFileResource = true;\r\n }\r\n // Also convert `file:` URIs in the web worker extension host (running in desktop) case\r\n if (uri.scheme === Schemas.file && typeof platform.globals.importScripts === 'function' && platform.globals.origin === 'vscode-file://vscode-app') {\r\n convertToVSCodeFileResource = true;\r\n }\r\n if (convertToVSCodeFileResource) {\r\n return uri.with({\r\n scheme: Schemas.vscodeFileResource,\r\n // We need to provide an authority here so that it can serve\r\n // as origin for network and loading matters in chromium.\r\n // If the URI is not coming with an authority already, we\r\n // add our own\r\n authority: uri.authority || this.FALLBACK_AUTHORITY,\r\n query: null,\r\n fragment: null\r\n });\r\n }\r\n return uri;\r\n }\r\n toUri(uriOrModule, moduleIdToUrl) {\r\n if (URI.isUri(uriOrModule)) {\r\n return uriOrModule;\r\n }\r\n return URI.parse(moduleIdToUrl.toUrl(uriOrModule));\r\n }\r\n}\r\nexport const FileAccess = new FileAccessImpl();\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as browser from './browser.js';\r\nimport * as platform from '../common/platform.js';\r\n/**\r\n * Browser feature we can support in current platform, browser and environment.\r\n */\r\nexport const BrowserFeatures = {\r\n clipboard: {\r\n writeText: (platform.isNative\r\n || (document.queryCommandSupported && document.queryCommandSupported('copy'))\r\n || !!(navigator && navigator.clipboard && navigator.clipboard.writeText)),\r\n readText: (platform.isNative\r\n || !!(navigator && navigator.clipboard && navigator.clipboard.readText))\r\n },\r\n keyboard: (() => {\r\n if (platform.isNative || browser.isStandalone) {\r\n return 0 /* Always */;\r\n }\r\n if (navigator.keyboard || browser.isSafari) {\r\n return 1 /* FullScreen */;\r\n }\r\n return 2 /* None */;\r\n })(),\r\n // 'ontouchstart' in window always evaluates to true with typescript's modern typings. This causes `window` to be\r\n // `never` later in `window.navigator`. That's why we need the explicit `window as Window` cast\r\n touch: 'ontouchstart' in window || navigator.maxTouchPoints > 0,\r\n pointerEvents: window.PointerEvent && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0 || navigator.maxTouchPoints > 0)\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as browser from './browser.js';\r\nimport { StandardKeyboardEvent } from './keyboardEvent.js';\r\nimport { StandardMouseEvent } from './mouseEvent.js';\r\nimport { TimeoutTimer } from '../common/async.js';\r\nimport { onUnexpectedError } from '../common/errors.js';\r\nimport { Emitter } from '../common/event.js';\r\nimport { Disposable, DisposableStore, toDisposable } from '../common/lifecycle.js';\r\nimport * as platform from '../common/platform.js';\r\nimport { FileAccess, RemoteAuthorities } from '../common/network.js';\r\nimport { BrowserFeatures } from './canIUse.js';\r\nexport function clearNode(node) {\r\n while (node.firstChild) {\r\n node.firstChild.remove();\r\n }\r\n}\r\n/**\r\n * @deprecated Use node.isConnected directly\r\n */\r\nexport function isInDOM(node) {\r\n var _a;\r\n return (_a = node === null || node === void 0 ? void 0 : node.isConnected) !== null && _a !== void 0 ? _a : false;\r\n}\r\nclass DomListener {\r\n constructor(node, type, handler, options) {\r\n this._node = node;\r\n this._type = type;\r\n this._handler = handler;\r\n this._options = (options || false);\r\n this._node.addEventListener(this._type, this._handler, this._options);\r\n }\r\n dispose() {\r\n if (!this._handler) {\r\n // Already disposed\r\n return;\r\n }\r\n this._node.removeEventListener(this._type, this._handler, this._options);\r\n // Prevent leakers from holding on to the dom or handler func\r\n this._node = null;\r\n this._handler = null;\r\n }\r\n}\r\nexport function addDisposableListener(node, type, handler, useCaptureOrOptions) {\r\n return new DomListener(node, type, handler, useCaptureOrOptions);\r\n}\r\nfunction _wrapAsStandardMouseEvent(handler) {\r\n return function (e) {\r\n return handler(new StandardMouseEvent(e));\r\n };\r\n}\r\nfunction _wrapAsStandardKeyboardEvent(handler) {\r\n return function (e) {\r\n return handler(new StandardKeyboardEvent(e));\r\n };\r\n}\r\nexport let addStandardDisposableListener = function addStandardDisposableListener(node, type, handler, useCapture) {\r\n let wrapHandler = handler;\r\n if (type === 'click' || type === 'mousedown') {\r\n wrapHandler = _wrapAsStandardMouseEvent(handler);\r\n }\r\n else if (type === 'keydown' || type === 'keypress' || type === 'keyup') {\r\n wrapHandler = _wrapAsStandardKeyboardEvent(handler);\r\n }\r\n return addDisposableListener(node, type, wrapHandler, useCapture);\r\n};\r\nexport let addStandardDisposableGenericMouseDownListner = function addStandardDisposableListener(node, handler, useCapture) {\r\n let wrapHandler = _wrapAsStandardMouseEvent(handler);\r\n return addDisposableGenericMouseDownListner(node, wrapHandler, useCapture);\r\n};\r\nexport function addDisposableGenericMouseDownListner(node, handler, useCapture) {\r\n return addDisposableListener(node, platform.isIOS && BrowserFeatures.pointerEvents ? EventType.POINTER_DOWN : EventType.MOUSE_DOWN, handler, useCapture);\r\n}\r\nexport function addDisposableGenericMouseUpListner(node, handler, useCapture) {\r\n return addDisposableListener(node, platform.isIOS && BrowserFeatures.pointerEvents ? EventType.POINTER_UP : EventType.MOUSE_UP, handler, useCapture);\r\n}\r\nexport function addDisposableNonBubblingMouseOutListener(node, handler) {\r\n return addDisposableListener(node, 'mouseout', (e) => {\r\n // Mouse out bubbles, so this is an attempt to ignore faux mouse outs coming from children elements\r\n let toElement = (e.relatedTarget);\r\n while (toElement && toElement !== node) {\r\n toElement = toElement.parentNode;\r\n }\r\n if (toElement === node) {\r\n return;\r\n }\r\n handler(e);\r\n });\r\n}\r\nexport function addDisposableNonBubblingPointerOutListener(node, handler) {\r\n return addDisposableListener(node, 'pointerout', (e) => {\r\n // Mouse out bubbles, so this is an attempt to ignore faux mouse outs coming from children elements\r\n let toElement = (e.relatedTarget);\r\n while (toElement && toElement !== node) {\r\n toElement = toElement.parentNode;\r\n }\r\n if (toElement === node) {\r\n return;\r\n }\r\n handler(e);\r\n });\r\n}\r\nlet _animationFrame = null;\r\nfunction doRequestAnimationFrame(callback) {\r\n if (!_animationFrame) {\r\n const emulatedRequestAnimationFrame = (callback) => {\r\n return setTimeout(() => callback(new Date().getTime()), 0);\r\n };\r\n _animationFrame = (self.requestAnimationFrame\r\n || self.msRequestAnimationFrame\r\n || self.webkitRequestAnimationFrame\r\n || self.mozRequestAnimationFrame\r\n || self.oRequestAnimationFrame\r\n || emulatedRequestAnimationFrame);\r\n }\r\n return _animationFrame.call(self, callback);\r\n}\r\n/**\r\n * Schedule a callback to be run at the next animation frame.\r\n * This allows multiple parties to register callbacks that should run at the next animation frame.\r\n * If currently in an animation frame, `runner` will be executed immediately.\r\n * @return token that can be used to cancel the scheduled runner (only if `runner` was not executed immediately).\r\n */\r\nexport let runAtThisOrScheduleAtNextAnimationFrame;\r\n/**\r\n * Schedule a callback to be run at the next animation frame.\r\n * This allows multiple parties to register callbacks that should run at the next animation frame.\r\n * If currently in an animation frame, `runner` will be executed at the next animation frame.\r\n * @return token that can be used to cancel the scheduled runner.\r\n */\r\nexport let scheduleAtNextAnimationFrame;\r\nclass AnimationFrameQueueItem {\r\n constructor(runner, priority = 0) {\r\n this._runner = runner;\r\n this.priority = priority;\r\n this._canceled = false;\r\n }\r\n dispose() {\r\n this._canceled = true;\r\n }\r\n execute() {\r\n if (this._canceled) {\r\n return;\r\n }\r\n try {\r\n this._runner();\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n }\r\n }\r\n // Sort by priority (largest to lowest)\r\n static sort(a, b) {\r\n return b.priority - a.priority;\r\n }\r\n}\r\n(function () {\r\n /**\r\n * The runners scheduled at the next animation frame\r\n */\r\n let NEXT_QUEUE = [];\r\n /**\r\n * The runners scheduled at the current animation frame\r\n */\r\n let CURRENT_QUEUE = null;\r\n /**\r\n * A flag to keep track if the native requestAnimationFrame was already called\r\n */\r\n let animFrameRequested = false;\r\n /**\r\n * A flag to indicate if currently handling a native requestAnimationFrame callback\r\n */\r\n let inAnimationFrameRunner = false;\r\n let animationFrameRunner = () => {\r\n animFrameRequested = false;\r\n CURRENT_QUEUE = NEXT_QUEUE;\r\n NEXT_QUEUE = [];\r\n inAnimationFrameRunner = true;\r\n while (CURRENT_QUEUE.length > 0) {\r\n CURRENT_QUEUE.sort(AnimationFrameQueueItem.sort);\r\n let top = CURRENT_QUEUE.shift();\r\n top.execute();\r\n }\r\n inAnimationFrameRunner = false;\r\n };\r\n scheduleAtNextAnimationFrame = (runner, priority = 0) => {\r\n let item = new AnimationFrameQueueItem(runner, priority);\r\n NEXT_QUEUE.push(item);\r\n if (!animFrameRequested) {\r\n animFrameRequested = true;\r\n doRequestAnimationFrame(animationFrameRunner);\r\n }\r\n return item;\r\n };\r\n runAtThisOrScheduleAtNextAnimationFrame = (runner, priority) => {\r\n if (inAnimationFrameRunner) {\r\n let item = new AnimationFrameQueueItem(runner, priority);\r\n CURRENT_QUEUE.push(item);\r\n return item;\r\n }\r\n else {\r\n return scheduleAtNextAnimationFrame(runner, priority);\r\n }\r\n };\r\n})();\r\nconst MINIMUM_TIME_MS = 8;\r\nconst DEFAULT_EVENT_MERGER = function (lastEvent, currentEvent) {\r\n return currentEvent;\r\n};\r\nclass TimeoutThrottledDomListener extends Disposable {\r\n constructor(node, type, handler, eventMerger = DEFAULT_EVENT_MERGER, minimumTimeMs = MINIMUM_TIME_MS) {\r\n super();\r\n let lastEvent = null;\r\n let lastHandlerTime = 0;\r\n let timeout = this._register(new TimeoutTimer());\r\n let invokeHandler = () => {\r\n lastHandlerTime = (new Date()).getTime();\r\n handler(lastEvent);\r\n lastEvent = null;\r\n };\r\n this._register(addDisposableListener(node, type, (e) => {\r\n lastEvent = eventMerger(lastEvent, e);\r\n let elapsedTime = (new Date()).getTime() - lastHandlerTime;\r\n if (elapsedTime >= minimumTimeMs) {\r\n timeout.cancel();\r\n invokeHandler();\r\n }\r\n else {\r\n timeout.setIfNotSet(invokeHandler, minimumTimeMs - elapsedTime);\r\n }\r\n }));\r\n }\r\n}\r\nexport function addDisposableThrottledListener(node, type, handler, eventMerger, minimumTimeMs) {\r\n return new TimeoutThrottledDomListener(node, type, handler, eventMerger, minimumTimeMs);\r\n}\r\nexport function getComputedStyle(el) {\r\n return document.defaultView.getComputedStyle(el, null);\r\n}\r\nexport function getClientArea(element) {\r\n // Try with DOM clientWidth / clientHeight\r\n if (element !== document.body) {\r\n return new Dimension(element.clientWidth, element.clientHeight);\r\n }\r\n // If visual view port exits and it's on mobile, it should be used instead of window innerWidth / innerHeight, or document.body.clientWidth / document.body.clientHeight\r\n if (platform.isIOS && window.visualViewport) {\r\n return new Dimension(window.visualViewport.width, window.visualViewport.height);\r\n }\r\n // Try innerWidth / innerHeight\r\n if (window.innerWidth && window.innerHeight) {\r\n return new Dimension(window.innerWidth, window.innerHeight);\r\n }\r\n // Try with document.body.clientWidth / document.body.clientHeight\r\n if (document.body && document.body.clientWidth && document.body.clientHeight) {\r\n return new Dimension(document.body.clientWidth, document.body.clientHeight);\r\n }\r\n // Try with document.documentElement.clientWidth / document.documentElement.clientHeight\r\n if (document.documentElement && document.documentElement.clientWidth && document.documentElement.clientHeight) {\r\n return new Dimension(document.documentElement.clientWidth, document.documentElement.clientHeight);\r\n }\r\n throw new Error('Unable to figure out browser width and height');\r\n}\r\nclass SizeUtils {\r\n // Adapted from WinJS\r\n // Converts a CSS positioning string for the specified element to pixels.\r\n static convertToPixels(element, value) {\r\n return parseFloat(value) || 0;\r\n }\r\n static getDimension(element, cssPropertyName, jsPropertyName) {\r\n let computedStyle = getComputedStyle(element);\r\n let value = '0';\r\n if (computedStyle) {\r\n if (computedStyle.getPropertyValue) {\r\n value = computedStyle.getPropertyValue(cssPropertyName);\r\n }\r\n else {\r\n // IE8\r\n value = computedStyle.getAttribute(jsPropertyName);\r\n }\r\n }\r\n return SizeUtils.convertToPixels(element, value);\r\n }\r\n static getBorderLeftWidth(element) {\r\n return SizeUtils.getDimension(element, 'border-left-width', 'borderLeftWidth');\r\n }\r\n static getBorderRightWidth(element) {\r\n return SizeUtils.getDimension(element, 'border-right-width', 'borderRightWidth');\r\n }\r\n static getBorderTopWidth(element) {\r\n return SizeUtils.getDimension(element, 'border-top-width', 'borderTopWidth');\r\n }\r\n static getBorderBottomWidth(element) {\r\n return SizeUtils.getDimension(element, 'border-bottom-width', 'borderBottomWidth');\r\n }\r\n static getPaddingLeft(element) {\r\n return SizeUtils.getDimension(element, 'padding-left', 'paddingLeft');\r\n }\r\n static getPaddingRight(element) {\r\n return SizeUtils.getDimension(element, 'padding-right', 'paddingRight');\r\n }\r\n static getPaddingTop(element) {\r\n return SizeUtils.getDimension(element, 'padding-top', 'paddingTop');\r\n }\r\n static getPaddingBottom(element) {\r\n return SizeUtils.getDimension(element, 'padding-bottom', 'paddingBottom');\r\n }\r\n static getMarginLeft(element) {\r\n return SizeUtils.getDimension(element, 'margin-left', 'marginLeft');\r\n }\r\n static getMarginTop(element) {\r\n return SizeUtils.getDimension(element, 'margin-top', 'marginTop');\r\n }\r\n static getMarginRight(element) {\r\n return SizeUtils.getDimension(element, 'margin-right', 'marginRight');\r\n }\r\n static getMarginBottom(element) {\r\n return SizeUtils.getDimension(element, 'margin-bottom', 'marginBottom');\r\n }\r\n}\r\nexport class Dimension {\r\n constructor(width, height) {\r\n this.width = width;\r\n this.height = height;\r\n }\r\n with(width = this.width, height = this.height) {\r\n if (width !== this.width || height !== this.height) {\r\n return new Dimension(width, height);\r\n }\r\n else {\r\n return this;\r\n }\r\n }\r\n static is(obj) {\r\n return typeof obj === 'object' && typeof obj.height === 'number' && typeof obj.width === 'number';\r\n }\r\n static lift(obj) {\r\n if (obj instanceof Dimension) {\r\n return obj;\r\n }\r\n else {\r\n return new Dimension(obj.width, obj.height);\r\n }\r\n }\r\n static equals(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n if (!a || !b) {\r\n return false;\r\n }\r\n return a.width === b.width && a.height === b.height;\r\n }\r\n}\r\nexport function getTopLeftOffset(element) {\r\n // Adapted from WinJS.Utilities.getPosition\r\n // and added borders to the mix\r\n let offsetParent = element.offsetParent;\r\n let top = element.offsetTop;\r\n let left = element.offsetLeft;\r\n while ((element = element.parentNode) !== null\r\n && element !== document.body\r\n && element !== document.documentElement) {\r\n top -= element.scrollTop;\r\n const c = isShadowRoot(element) ? null : getComputedStyle(element);\r\n if (c) {\r\n left -= c.direction !== 'rtl' ? element.scrollLeft : -element.scrollLeft;\r\n }\r\n if (element === offsetParent) {\r\n left += SizeUtils.getBorderLeftWidth(element);\r\n top += SizeUtils.getBorderTopWidth(element);\r\n top += element.offsetTop;\r\n left += element.offsetLeft;\r\n offsetParent = element.offsetParent;\r\n }\r\n }\r\n return {\r\n left: left,\r\n top: top\r\n };\r\n}\r\nexport function size(element, width, height) {\r\n if (typeof width === 'number') {\r\n element.style.width = `${width}px`;\r\n }\r\n if (typeof height === 'number') {\r\n element.style.height = `${height}px`;\r\n }\r\n}\r\n/**\r\n * Returns the position of a dom node relative to the entire page.\r\n */\r\nexport function getDomNodePagePosition(domNode) {\r\n let bb = domNode.getBoundingClientRect();\r\n return {\r\n left: bb.left + StandardWindow.scrollX,\r\n top: bb.top + StandardWindow.scrollY,\r\n width: bb.width,\r\n height: bb.height\r\n };\r\n}\r\nexport const StandardWindow = new class {\r\n get scrollX() {\r\n if (typeof window.scrollX === 'number') {\r\n // modern browsers\r\n return window.scrollX;\r\n }\r\n else {\r\n return document.body.scrollLeft + document.documentElement.scrollLeft;\r\n }\r\n }\r\n get scrollY() {\r\n if (typeof window.scrollY === 'number') {\r\n // modern browsers\r\n return window.scrollY;\r\n }\r\n else {\r\n return document.body.scrollTop + document.documentElement.scrollTop;\r\n }\r\n }\r\n};\r\n// Adapted from WinJS\r\n// Gets the width of the element, including margins.\r\nexport function getTotalWidth(element) {\r\n let margin = SizeUtils.getMarginLeft(element) + SizeUtils.getMarginRight(element);\r\n return element.offsetWidth + margin;\r\n}\r\nexport function getContentWidth(element) {\r\n let border = SizeUtils.getBorderLeftWidth(element) + SizeUtils.getBorderRightWidth(element);\r\n let padding = SizeUtils.getPaddingLeft(element) + SizeUtils.getPaddingRight(element);\r\n return element.offsetWidth - border - padding;\r\n}\r\n// Adapted from WinJS\r\n// Gets the height of the content of the specified element. The content height does not include borders or padding.\r\nexport function getContentHeight(element) {\r\n let border = SizeUtils.getBorderTopWidth(element) + SizeUtils.getBorderBottomWidth(element);\r\n let padding = SizeUtils.getPaddingTop(element) + SizeUtils.getPaddingBottom(element);\r\n return element.offsetHeight - border - padding;\r\n}\r\n// Adapted from WinJS\r\n// Gets the height of the element, including its margins.\r\nexport function getTotalHeight(element) {\r\n let margin = SizeUtils.getMarginTop(element) + SizeUtils.getMarginBottom(element);\r\n return element.offsetHeight + margin;\r\n}\r\n// ----------------------------------------------------------------------------------------\r\nexport function isAncestor(testChild, testAncestor) {\r\n while (testChild) {\r\n if (testChild === testAncestor) {\r\n return true;\r\n }\r\n testChild = testChild.parentNode;\r\n }\r\n return false;\r\n}\r\nexport function findParentWithClass(node, clazz, stopAtClazzOrNode) {\r\n while (node && node.nodeType === node.ELEMENT_NODE) {\r\n if (node.classList.contains(clazz)) {\r\n return node;\r\n }\r\n if (stopAtClazzOrNode) {\r\n if (typeof stopAtClazzOrNode === 'string') {\r\n if (node.classList.contains(stopAtClazzOrNode)) {\r\n return null;\r\n }\r\n }\r\n else {\r\n if (node === stopAtClazzOrNode) {\r\n return null;\r\n }\r\n }\r\n }\r\n node = node.parentNode;\r\n }\r\n return null;\r\n}\r\nexport function hasParentWithClass(node, clazz, stopAtClazzOrNode) {\r\n return !!findParentWithClass(node, clazz, stopAtClazzOrNode);\r\n}\r\nexport function isShadowRoot(node) {\r\n return (node && !!node.host && !!node.mode);\r\n}\r\nexport function isInShadowDOM(domNode) {\r\n return !!getShadowRoot(domNode);\r\n}\r\nexport function getShadowRoot(domNode) {\r\n while (domNode.parentNode) {\r\n if (domNode === document.body) {\r\n // reached the body\r\n return null;\r\n }\r\n domNode = domNode.parentNode;\r\n }\r\n return isShadowRoot(domNode) ? domNode : null;\r\n}\r\nexport function getActiveElement() {\r\n let result = document.activeElement;\r\n while (result === null || result === void 0 ? void 0 : result.shadowRoot) {\r\n result = result.shadowRoot.activeElement;\r\n }\r\n return result;\r\n}\r\nexport function createStyleSheet(container = document.getElementsByTagName('head')[0]) {\r\n let style = document.createElement('style');\r\n style.type = 'text/css';\r\n style.media = 'screen';\r\n container.appendChild(style);\r\n return style;\r\n}\r\nlet _sharedStyleSheet = null;\r\nfunction getSharedStyleSheet() {\r\n if (!_sharedStyleSheet) {\r\n _sharedStyleSheet = createStyleSheet();\r\n }\r\n return _sharedStyleSheet;\r\n}\r\nfunction getDynamicStyleSheetRules(style) {\r\n var _a, _b;\r\n if ((_a = style === null || style === void 0 ? void 0 : style.sheet) === null || _a === void 0 ? void 0 : _a.rules) {\r\n // Chrome, IE\r\n return style.sheet.rules;\r\n }\r\n if ((_b = style === null || style === void 0 ? void 0 : style.sheet) === null || _b === void 0 ? void 0 : _b.cssRules) {\r\n // FF\r\n return style.sheet.cssRules;\r\n }\r\n return [];\r\n}\r\nexport function createCSSRule(selector, cssText, style = getSharedStyleSheet()) {\r\n if (!style || !cssText) {\r\n return;\r\n }\r\n style.sheet.insertRule(selector + '{' + cssText + '}', 0);\r\n}\r\nexport function removeCSSRulesContainingSelector(ruleName, style = getSharedStyleSheet()) {\r\n if (!style) {\r\n return;\r\n }\r\n let rules = getDynamicStyleSheetRules(style);\r\n let toDelete = [];\r\n for (let i = 0; i < rules.length; i++) {\r\n let rule = rules[i];\r\n if (rule.selectorText.indexOf(ruleName) !== -1) {\r\n toDelete.push(i);\r\n }\r\n }\r\n for (let i = toDelete.length - 1; i >= 0; i--) {\r\n style.sheet.deleteRule(toDelete[i]);\r\n }\r\n}\r\nexport function isHTMLElement(o) {\r\n if (typeof HTMLElement === 'object') {\r\n return o instanceof HTMLElement;\r\n }\r\n return o && typeof o === 'object' && o.nodeType === 1 && typeof o.nodeName === 'string';\r\n}\r\nexport const EventType = {\r\n // Mouse\r\n CLICK: 'click',\r\n AUXCLICK: 'auxclick',\r\n DBLCLICK: 'dblclick',\r\n MOUSE_UP: 'mouseup',\r\n MOUSE_DOWN: 'mousedown',\r\n MOUSE_OVER: 'mouseover',\r\n MOUSE_MOVE: 'mousemove',\r\n MOUSE_OUT: 'mouseout',\r\n MOUSE_ENTER: 'mouseenter',\r\n MOUSE_LEAVE: 'mouseleave',\r\n MOUSE_WHEEL: 'wheel',\r\n POINTER_UP: 'pointerup',\r\n POINTER_DOWN: 'pointerdown',\r\n POINTER_MOVE: 'pointermove',\r\n CONTEXT_MENU: 'contextmenu',\r\n WHEEL: 'wheel',\r\n // Keyboard\r\n KEY_DOWN: 'keydown',\r\n KEY_PRESS: 'keypress',\r\n KEY_UP: 'keyup',\r\n // HTML Document\r\n LOAD: 'load',\r\n BEFORE_UNLOAD: 'beforeunload',\r\n UNLOAD: 'unload',\r\n ABORT: 'abort',\r\n ERROR: 'error',\r\n RESIZE: 'resize',\r\n SCROLL: 'scroll',\r\n FULLSCREEN_CHANGE: 'fullscreenchange',\r\n WK_FULLSCREEN_CHANGE: 'webkitfullscreenchange',\r\n // Form\r\n SELECT: 'select',\r\n CHANGE: 'change',\r\n SUBMIT: 'submit',\r\n RESET: 'reset',\r\n FOCUS: 'focus',\r\n FOCUS_IN: 'focusin',\r\n FOCUS_OUT: 'focusout',\r\n BLUR: 'blur',\r\n INPUT: 'input',\r\n // Local Storage\r\n STORAGE: 'storage',\r\n // Drag\r\n DRAG_START: 'dragstart',\r\n DRAG: 'drag',\r\n DRAG_ENTER: 'dragenter',\r\n DRAG_LEAVE: 'dragleave',\r\n DRAG_OVER: 'dragover',\r\n DROP: 'drop',\r\n DRAG_END: 'dragend',\r\n // Animation\r\n ANIMATION_START: browser.isWebKit ? 'webkitAnimationStart' : 'animationstart',\r\n ANIMATION_END: browser.isWebKit ? 'webkitAnimationEnd' : 'animationend',\r\n ANIMATION_ITERATION: browser.isWebKit ? 'webkitAnimationIteration' : 'animationiteration'\r\n};\r\nexport const EventHelper = {\r\n stop: function (e, cancelBubble) {\r\n if (e.preventDefault) {\r\n e.preventDefault();\r\n }\r\n else {\r\n // IE8\r\n e.returnValue = false;\r\n }\r\n if (cancelBubble) {\r\n if (e.stopPropagation) {\r\n e.stopPropagation();\r\n }\r\n else {\r\n // IE8\r\n e.cancelBubble = true;\r\n }\r\n }\r\n }\r\n};\r\nexport function saveParentsScrollTop(node) {\r\n let r = [];\r\n for (let i = 0; node && node.nodeType === node.ELEMENT_NODE; i++) {\r\n r[i] = node.scrollTop;\r\n node = node.parentNode;\r\n }\r\n return r;\r\n}\r\nexport function restoreParentsScrollTop(node, state) {\r\n for (let i = 0; node && node.nodeType === node.ELEMENT_NODE; i++) {\r\n if (node.scrollTop !== state[i]) {\r\n node.scrollTop = state[i];\r\n }\r\n node = node.parentNode;\r\n }\r\n}\r\nclass FocusTracker extends Disposable {\r\n constructor(element) {\r\n super();\r\n this._onDidFocus = this._register(new Emitter());\r\n this.onDidFocus = this._onDidFocus.event;\r\n this._onDidBlur = this._register(new Emitter());\r\n this.onDidBlur = this._onDidBlur.event;\r\n let hasFocus = isAncestor(document.activeElement, element);\r\n let loosingFocus = false;\r\n const onFocus = () => {\r\n loosingFocus = false;\r\n if (!hasFocus) {\r\n hasFocus = true;\r\n this._onDidFocus.fire();\r\n }\r\n };\r\n const onBlur = () => {\r\n if (hasFocus) {\r\n loosingFocus = true;\r\n window.setTimeout(() => {\r\n if (loosingFocus) {\r\n loosingFocus = false;\r\n hasFocus = false;\r\n this._onDidBlur.fire();\r\n }\r\n }, 0);\r\n }\r\n };\r\n this._refreshStateHandler = () => {\r\n let currentNodeHasFocus = isAncestor(document.activeElement, element);\r\n if (currentNodeHasFocus !== hasFocus) {\r\n if (hasFocus) {\r\n onBlur();\r\n }\r\n else {\r\n onFocus();\r\n }\r\n }\r\n };\r\n this._register(addDisposableListener(element, EventType.FOCUS, onFocus, true));\r\n this._register(addDisposableListener(element, EventType.BLUR, onBlur, true));\r\n }\r\n}\r\nexport function trackFocus(element) {\r\n return new FocusTracker(element);\r\n}\r\nexport function append(parent, ...children) {\r\n parent.append(...children);\r\n if (children.length === 1 && typeof children[0] !== 'string') {\r\n return children[0];\r\n }\r\n}\r\nexport function prepend(parent, child) {\r\n parent.insertBefore(child, parent.firstChild);\r\n return child;\r\n}\r\n/**\r\n * Removes all children from `parent` and appends `children`\r\n */\r\nexport function reset(parent, ...children) {\r\n parent.innerText = '';\r\n append(parent, ...children);\r\n}\r\nconst SELECTOR_REGEX = /([\\w\\-]+)?(#([\\w\\-]+))?((\\.([\\w\\-]+))*)/;\r\nexport var Namespace;\r\n(function (Namespace) {\r\n Namespace[\"HTML\"] = \"http://www.w3.org/1999/xhtml\";\r\n Namespace[\"SVG\"] = \"http://www.w3.org/2000/svg\";\r\n})(Namespace || (Namespace = {}));\r\nfunction _$(namespace, description, attrs, ...children) {\r\n let match = SELECTOR_REGEX.exec(description);\r\n if (!match) {\r\n throw new Error('Bad use of emmet');\r\n }\r\n attrs = Object.assign({}, (attrs || {}));\r\n let tagName = match[1] || 'div';\r\n let result;\r\n if (namespace !== Namespace.HTML) {\r\n result = document.createElementNS(namespace, tagName);\r\n }\r\n else {\r\n result = document.createElement(tagName);\r\n }\r\n if (match[3]) {\r\n result.id = match[3];\r\n }\r\n if (match[4]) {\r\n result.className = match[4].replace(/\\./g, ' ').trim();\r\n }\r\n Object.keys(attrs).forEach(name => {\r\n const value = attrs[name];\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n if (/^on\\w+$/.test(name)) {\r\n result[name] = value;\r\n }\r\n else if (name === 'selected') {\r\n if (value) {\r\n result.setAttribute(name, 'true');\r\n }\r\n }\r\n else {\r\n result.setAttribute(name, value);\r\n }\r\n });\r\n result.append(...children);\r\n return result;\r\n}\r\nexport function $(description, attrs, ...children) {\r\n return _$(Namespace.HTML, description, attrs, ...children);\r\n}\r\n$.SVG = function (description, attrs, ...children) {\r\n return _$(Namespace.SVG, description, attrs, ...children);\r\n};\r\nexport function show(...elements) {\r\n for (let element of elements) {\r\n element.style.display = '';\r\n element.removeAttribute('aria-hidden');\r\n }\r\n}\r\nexport function hide(...elements) {\r\n for (let element of elements) {\r\n element.style.display = 'none';\r\n element.setAttribute('aria-hidden', 'true');\r\n }\r\n}\r\nexport function getElementsByTagName(tag) {\r\n return Array.prototype.slice.call(document.getElementsByTagName(tag), 0);\r\n}\r\n/**\r\n * Find a value usable for a dom node size such that the likelihood that it would be\r\n * displayed with constant screen pixels size is as high as possible.\r\n *\r\n * e.g. We would desire for the cursors to be 2px (CSS px) wide. Under a devicePixelRatio\r\n * of 1.25, the cursor will be 2.5 screen pixels wide. Depending on how the dom node aligns/\"snaps\"\r\n * with the screen pixels, it will sometimes be rendered with 2 screen pixels, and sometimes with 3 screen pixels.\r\n */\r\nexport function computeScreenAwareSize(cssPx) {\r\n const screenPx = window.devicePixelRatio * cssPx;\r\n return Math.max(1, Math.floor(screenPx)) / window.devicePixelRatio;\r\n}\r\n/**\r\n * Open safely a new window. This is the best way to do so, but you cannot tell\r\n * if the window was opened or if it was blocked by the brower's popup blocker.\r\n * If you want to tell if the browser blocked the new window, use `windowOpenNoOpenerWithSuccess`.\r\n *\r\n * See https://github.com/microsoft/monaco-editor/issues/601\r\n * To protect against malicious code in the linked site, particularly phishing attempts,\r\n * the window.opener should be set to null to prevent the linked site from having access\r\n * to change the location of the current page.\r\n * See https://mathiasbynens.github.io/rel-noopener/\r\n */\r\nexport function windowOpenNoOpener(url) {\r\n // By using 'noopener' in the `windowFeatures` argument, the newly created window will\r\n // not be able to use `window.opener` to reach back to the current page.\r\n // See https://stackoverflow.com/a/46958731\r\n // See https://developer.mozilla.org/en-US/docs/Web/API/Window/open#noopener\r\n // However, this also doesn't allow us to realize if the browser blocked\r\n // the creation of the window.\r\n window.open(url, '_blank', 'noopener');\r\n}\r\nexport function animate(fn) {\r\n const step = () => {\r\n fn();\r\n stepDisposable = scheduleAtNextAnimationFrame(step);\r\n };\r\n let stepDisposable = scheduleAtNextAnimationFrame(step);\r\n return toDisposable(() => stepDisposable.dispose());\r\n}\r\nRemoteAuthorities.setPreferredWebSchema(/^https:/.test(window.location.href) ? 'https' : 'http');\r\n/**\r\n * returns url('...')\r\n */\r\nexport function asCSSUrl(uri) {\r\n if (!uri) {\r\n return `url('')`;\r\n }\r\n return `url('${FileAccess.asBrowserUri(uri).toString(true).replace(/'/g, '%27')}')`;\r\n}\r\nexport function asCSSPropertyValue(value) {\r\n return `'${value.replace(/'/g, '%27')}'`;\r\n}\r\nexport class ModifierKeyEmitter extends Emitter {\r\n constructor() {\r\n super();\r\n this._subscriptions = new DisposableStore();\r\n this._keyStatus = {\r\n altKey: false,\r\n shiftKey: false,\r\n ctrlKey: false,\r\n metaKey: false\r\n };\r\n this._subscriptions.add(addDisposableListener(window, 'keydown', e => {\r\n if (e.defaultPrevented) {\r\n return;\r\n }\r\n const event = new StandardKeyboardEvent(e);\r\n // If Alt-key keydown event is repeated, ignore it #112347\r\n // Only known to be necessary for Alt-Key at the moment #115810\r\n if (event.keyCode === 6 /* Alt */ && e.repeat) {\r\n return;\r\n }\r\n if (e.altKey && !this._keyStatus.altKey) {\r\n this._keyStatus.lastKeyPressed = 'alt';\r\n }\r\n else if (e.ctrlKey && !this._keyStatus.ctrlKey) {\r\n this._keyStatus.lastKeyPressed = 'ctrl';\r\n }\r\n else if (e.metaKey && !this._keyStatus.metaKey) {\r\n this._keyStatus.lastKeyPressed = 'meta';\r\n }\r\n else if (e.shiftKey && !this._keyStatus.shiftKey) {\r\n this._keyStatus.lastKeyPressed = 'shift';\r\n }\r\n else if (event.keyCode !== 6 /* Alt */) {\r\n this._keyStatus.lastKeyPressed = undefined;\r\n }\r\n else {\r\n return;\r\n }\r\n this._keyStatus.altKey = e.altKey;\r\n this._keyStatus.ctrlKey = e.ctrlKey;\r\n this._keyStatus.metaKey = e.metaKey;\r\n this._keyStatus.shiftKey = e.shiftKey;\r\n if (this._keyStatus.lastKeyPressed) {\r\n this._keyStatus.event = e;\r\n this.fire(this._keyStatus);\r\n }\r\n }, true));\r\n this._subscriptions.add(addDisposableListener(window, 'keyup', e => {\r\n if (e.defaultPrevented) {\r\n return;\r\n }\r\n if (!e.altKey && this._keyStatus.altKey) {\r\n this._keyStatus.lastKeyReleased = 'alt';\r\n }\r\n else if (!e.ctrlKey && this._keyStatus.ctrlKey) {\r\n this._keyStatus.lastKeyReleased = 'ctrl';\r\n }\r\n else if (!e.metaKey && this._keyStatus.metaKey) {\r\n this._keyStatus.lastKeyReleased = 'meta';\r\n }\r\n else if (!e.shiftKey && this._keyStatus.shiftKey) {\r\n this._keyStatus.lastKeyReleased = 'shift';\r\n }\r\n else {\r\n this._keyStatus.lastKeyReleased = undefined;\r\n }\r\n if (this._keyStatus.lastKeyPressed !== this._keyStatus.lastKeyReleased) {\r\n this._keyStatus.lastKeyPressed = undefined;\r\n }\r\n this._keyStatus.altKey = e.altKey;\r\n this._keyStatus.ctrlKey = e.ctrlKey;\r\n this._keyStatus.metaKey = e.metaKey;\r\n this._keyStatus.shiftKey = e.shiftKey;\r\n if (this._keyStatus.lastKeyReleased) {\r\n this._keyStatus.event = e;\r\n this.fire(this._keyStatus);\r\n }\r\n }, true));\r\n this._subscriptions.add(addDisposableListener(document.body, 'mousedown', () => {\r\n this._keyStatus.lastKeyPressed = undefined;\r\n }, true));\r\n this._subscriptions.add(addDisposableListener(document.body, 'mouseup', () => {\r\n this._keyStatus.lastKeyPressed = undefined;\r\n }, true));\r\n this._subscriptions.add(addDisposableListener(document.body, 'mousemove', e => {\r\n if (e.buttons) {\r\n this._keyStatus.lastKeyPressed = undefined;\r\n }\r\n }, true));\r\n this._subscriptions.add(addDisposableListener(window, 'blur', () => {\r\n this.resetKeyStatus();\r\n }));\r\n }\r\n get keyStatus() {\r\n return this._keyStatus;\r\n }\r\n /**\r\n * Allows to explicitly reset the key status based on more knowledge (#109062)\r\n */\r\n resetKeyStatus() {\r\n this.doResetKeyStatus();\r\n this.fire(this._keyStatus);\r\n }\r\n doResetKeyStatus() {\r\n this._keyStatus = {\r\n altKey: false,\r\n shiftKey: false,\r\n ctrlKey: false,\r\n metaKey: false\r\n };\r\n }\r\n static getInstance() {\r\n if (!ModifierKeyEmitter.instance) {\r\n ModifierKeyEmitter.instance = new ModifierKeyEmitter();\r\n }\r\n return ModifierKeyEmitter.instance;\r\n }\r\n dispose() {\r\n super.dispose();\r\n this._subscriptions.dispose();\r\n }\r\n}\r\nexport function addMatchMediaChangeListener(query, callback) {\r\n const mediaQueryList = window.matchMedia(query);\r\n if (typeof mediaQueryList.addEventListener === 'function') {\r\n mediaQueryList.addEventListener('change', callback);\r\n }\r\n else {\r\n // Safari 13.x\r\n mediaQueryList.addListener(callback);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar _a, _b;\r\nimport { URI } from './uri.js';\r\nimport { compareSubstringIgnoreCase, compare, compareSubstring, compareIgnoreCase } from './strings.js';\r\nexport class StringIterator {\r\n constructor() {\r\n this._value = '';\r\n this._pos = 0;\r\n }\r\n reset(key) {\r\n this._value = key;\r\n this._pos = 0;\r\n return this;\r\n }\r\n next() {\r\n this._pos += 1;\r\n return this;\r\n }\r\n hasNext() {\r\n return this._pos < this._value.length - 1;\r\n }\r\n cmp(a) {\r\n const aCode = a.charCodeAt(0);\r\n const thisCode = this._value.charCodeAt(this._pos);\r\n return aCode - thisCode;\r\n }\r\n value() {\r\n return this._value[this._pos];\r\n }\r\n}\r\nexport class ConfigKeysIterator {\r\n constructor(_caseSensitive = true) {\r\n this._caseSensitive = _caseSensitive;\r\n }\r\n reset(key) {\r\n this._value = key;\r\n this._from = 0;\r\n this._to = 0;\r\n return this.next();\r\n }\r\n hasNext() {\r\n return this._to < this._value.length;\r\n }\r\n next() {\r\n // this._data = key.split(/[\\\\/]/).filter(s => !!s);\r\n this._from = this._to;\r\n let justSeps = true;\r\n for (; this._to < this._value.length; this._to++) {\r\n const ch = this._value.charCodeAt(this._to);\r\n if (ch === 46 /* Period */) {\r\n if (justSeps) {\r\n this._from++;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n else {\r\n justSeps = false;\r\n }\r\n }\r\n return this;\r\n }\r\n cmp(a) {\r\n return this._caseSensitive\r\n ? compareSubstring(a, this._value, 0, a.length, this._from, this._to)\r\n : compareSubstringIgnoreCase(a, this._value, 0, a.length, this._from, this._to);\r\n }\r\n value() {\r\n return this._value.substring(this._from, this._to);\r\n }\r\n}\r\nexport class PathIterator {\r\n constructor(_splitOnBackslash = true, _caseSensitive = true) {\r\n this._splitOnBackslash = _splitOnBackslash;\r\n this._caseSensitive = _caseSensitive;\r\n }\r\n reset(key) {\r\n this._value = key.replace(/\\\\$|\\/$/, '');\r\n this._from = 0;\r\n this._to = 0;\r\n return this.next();\r\n }\r\n hasNext() {\r\n return this._to < this._value.length;\r\n }\r\n next() {\r\n // this._data = key.split(/[\\\\/]/).filter(s => !!s);\r\n this._from = this._to;\r\n let justSeps = true;\r\n for (; this._to < this._value.length; this._to++) {\r\n const ch = this._value.charCodeAt(this._to);\r\n if (ch === 47 /* Slash */ || this._splitOnBackslash && ch === 92 /* Backslash */) {\r\n if (justSeps) {\r\n this._from++;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n else {\r\n justSeps = false;\r\n }\r\n }\r\n return this;\r\n }\r\n cmp(a) {\r\n return this._caseSensitive\r\n ? compareSubstring(a, this._value, 0, a.length, this._from, this._to)\r\n : compareSubstringIgnoreCase(a, this._value, 0, a.length, this._from, this._to);\r\n }\r\n value() {\r\n return this._value.substring(this._from, this._to);\r\n }\r\n}\r\nexport class UriIterator {\r\n constructor(_ignorePathCasing) {\r\n this._ignorePathCasing = _ignorePathCasing;\r\n this._states = [];\r\n this._stateIdx = 0;\r\n }\r\n reset(key) {\r\n this._value = key;\r\n this._states = [];\r\n if (this._value.scheme) {\r\n this._states.push(1 /* Scheme */);\r\n }\r\n if (this._value.authority) {\r\n this._states.push(2 /* Authority */);\r\n }\r\n if (this._value.path) {\r\n this._pathIterator = new PathIterator(false, !this._ignorePathCasing(key));\r\n this._pathIterator.reset(key.path);\r\n if (this._pathIterator.value()) {\r\n this._states.push(3 /* Path */);\r\n }\r\n }\r\n if (this._value.query) {\r\n this._states.push(4 /* Query */);\r\n }\r\n if (this._value.fragment) {\r\n this._states.push(5 /* Fragment */);\r\n }\r\n this._stateIdx = 0;\r\n return this;\r\n }\r\n next() {\r\n if (this._states[this._stateIdx] === 3 /* Path */ && this._pathIterator.hasNext()) {\r\n this._pathIterator.next();\r\n }\r\n else {\r\n this._stateIdx += 1;\r\n }\r\n return this;\r\n }\r\n hasNext() {\r\n return (this._states[this._stateIdx] === 3 /* Path */ && this._pathIterator.hasNext())\r\n || this._stateIdx < this._states.length - 1;\r\n }\r\n cmp(a) {\r\n if (this._states[this._stateIdx] === 1 /* Scheme */) {\r\n return compareIgnoreCase(a, this._value.scheme);\r\n }\r\n else if (this._states[this._stateIdx] === 2 /* Authority */) {\r\n return compareIgnoreCase(a, this._value.authority);\r\n }\r\n else if (this._states[this._stateIdx] === 3 /* Path */) {\r\n return this._pathIterator.cmp(a);\r\n }\r\n else if (this._states[this._stateIdx] === 4 /* Query */) {\r\n return compare(a, this._value.query);\r\n }\r\n else if (this._states[this._stateIdx] === 5 /* Fragment */) {\r\n return compare(a, this._value.fragment);\r\n }\r\n throw new Error();\r\n }\r\n value() {\r\n if (this._states[this._stateIdx] === 1 /* Scheme */) {\r\n return this._value.scheme;\r\n }\r\n else if (this._states[this._stateIdx] === 2 /* Authority */) {\r\n return this._value.authority;\r\n }\r\n else if (this._states[this._stateIdx] === 3 /* Path */) {\r\n return this._pathIterator.value();\r\n }\r\n else if (this._states[this._stateIdx] === 4 /* Query */) {\r\n return this._value.query;\r\n }\r\n else if (this._states[this._stateIdx] === 5 /* Fragment */) {\r\n return this._value.fragment;\r\n }\r\n throw new Error();\r\n }\r\n}\r\nclass TernarySearchTreeNode {\r\n isEmpty() {\r\n return !this.left && !this.mid && !this.right && !this.value;\r\n }\r\n}\r\nexport class TernarySearchTree {\r\n constructor(segments) {\r\n this._iter = segments;\r\n }\r\n static forUris(ignorePathCasing = () => false) {\r\n return new TernarySearchTree(new UriIterator(ignorePathCasing));\r\n }\r\n static forStrings() {\r\n return new TernarySearchTree(new StringIterator());\r\n }\r\n static forConfigKeys() {\r\n return new TernarySearchTree(new ConfigKeysIterator());\r\n }\r\n clear() {\r\n this._root = undefined;\r\n }\r\n set(key, element) {\r\n const iter = this._iter.reset(key);\r\n let node;\r\n if (!this._root) {\r\n this._root = new TernarySearchTreeNode();\r\n this._root.segment = iter.value();\r\n }\r\n node = this._root;\r\n while (true) {\r\n const val = iter.cmp(node.segment);\r\n if (val > 0) {\r\n // left\r\n if (!node.left) {\r\n node.left = new TernarySearchTreeNode();\r\n node.left.segment = iter.value();\r\n }\r\n node = node.left;\r\n }\r\n else if (val < 0) {\r\n // right\r\n if (!node.right) {\r\n node.right = new TernarySearchTreeNode();\r\n node.right.segment = iter.value();\r\n }\r\n node = node.right;\r\n }\r\n else if (iter.hasNext()) {\r\n // mid\r\n iter.next();\r\n if (!node.mid) {\r\n node.mid = new TernarySearchTreeNode();\r\n node.mid.segment = iter.value();\r\n }\r\n node = node.mid;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n const oldElement = node.value;\r\n node.value = element;\r\n node.key = key;\r\n return oldElement;\r\n }\r\n get(key) {\r\n var _c;\r\n return (_c = this._getNode(key)) === null || _c === void 0 ? void 0 : _c.value;\r\n }\r\n _getNode(key) {\r\n const iter = this._iter.reset(key);\r\n let node = this._root;\r\n while (node) {\r\n const val = iter.cmp(node.segment);\r\n if (val > 0) {\r\n // left\r\n node = node.left;\r\n }\r\n else if (val < 0) {\r\n // right\r\n node = node.right;\r\n }\r\n else if (iter.hasNext()) {\r\n // mid\r\n iter.next();\r\n node = node.mid;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return node;\r\n }\r\n has(key) {\r\n const node = this._getNode(key);\r\n return !((node === null || node === void 0 ? void 0 : node.value) === undefined && (node === null || node === void 0 ? void 0 : node.mid) === undefined);\r\n }\r\n delete(key) {\r\n return this._delete(key, false);\r\n }\r\n deleteSuperstr(key) {\r\n return this._delete(key, true);\r\n }\r\n _delete(key, superStr) {\r\n const iter = this._iter.reset(key);\r\n const stack = [];\r\n let node = this._root;\r\n // find and unset node\r\n while (node) {\r\n const val = iter.cmp(node.segment);\r\n if (val > 0) {\r\n // left\r\n stack.push([1, node]);\r\n node = node.left;\r\n }\r\n else if (val < 0) {\r\n // right\r\n stack.push([-1, node]);\r\n node = node.right;\r\n }\r\n else if (iter.hasNext()) {\r\n // mid\r\n iter.next();\r\n stack.push([0, node]);\r\n node = node.mid;\r\n }\r\n else {\r\n if (superStr) {\r\n // remove children\r\n node.left = undefined;\r\n node.mid = undefined;\r\n node.right = undefined;\r\n }\r\n else {\r\n // remove element\r\n node.value = undefined;\r\n }\r\n // clean up empty nodes\r\n while (stack.length > 0 && node.isEmpty()) {\r\n let [dir, parent] = stack.pop();\r\n switch (dir) {\r\n case 1:\r\n parent.left = undefined;\r\n break;\r\n case 0:\r\n parent.mid = undefined;\r\n break;\r\n case -1:\r\n parent.right = undefined;\r\n break;\r\n }\r\n node = parent;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n findSubstr(key) {\r\n const iter = this._iter.reset(key);\r\n let node = this._root;\r\n let candidate = undefined;\r\n while (node) {\r\n const val = iter.cmp(node.segment);\r\n if (val > 0) {\r\n // left\r\n node = node.left;\r\n }\r\n else if (val < 0) {\r\n // right\r\n node = node.right;\r\n }\r\n else if (iter.hasNext()) {\r\n // mid\r\n iter.next();\r\n candidate = node.value || candidate;\r\n node = node.mid;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return node && node.value || candidate;\r\n }\r\n findSuperstr(key) {\r\n const iter = this._iter.reset(key);\r\n let node = this._root;\r\n while (node) {\r\n const val = iter.cmp(node.segment);\r\n if (val > 0) {\r\n // left\r\n node = node.left;\r\n }\r\n else if (val < 0) {\r\n // right\r\n node = node.right;\r\n }\r\n else if (iter.hasNext()) {\r\n // mid\r\n iter.next();\r\n node = node.mid;\r\n }\r\n else {\r\n // collect\r\n if (!node.mid) {\r\n return undefined;\r\n }\r\n else {\r\n return this._entries(node.mid);\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n forEach(callback) {\r\n for (const [key, value] of this) {\r\n callback(value, key);\r\n }\r\n }\r\n *[Symbol.iterator]() {\r\n yield* this._entries(this._root);\r\n }\r\n *_entries(node) {\r\n // DFS\r\n if (!node) {\r\n return;\r\n }\r\n const stack = [node];\r\n while (stack.length > 0) {\r\n const node = stack.pop();\r\n if (node) {\r\n if (node.value) {\r\n yield [node.key, node.value];\r\n }\r\n if (node.left) {\r\n stack.push(node.left);\r\n }\r\n if (node.mid) {\r\n stack.push(node.mid);\r\n }\r\n if (node.right) {\r\n stack.push(node.right);\r\n }\r\n }\r\n }\r\n }\r\n}\r\nexport class ResourceMap {\r\n constructor(mapOrKeyFn, toKey) {\r\n this[_a] = 'ResourceMap';\r\n if (mapOrKeyFn instanceof ResourceMap) {\r\n this.map = new Map(mapOrKeyFn.map);\r\n this.toKey = toKey !== null && toKey !== void 0 ? toKey : ResourceMap.defaultToKey;\r\n }\r\n else {\r\n this.map = new Map();\r\n this.toKey = mapOrKeyFn !== null && mapOrKeyFn !== void 0 ? mapOrKeyFn : ResourceMap.defaultToKey;\r\n }\r\n }\r\n set(resource, value) {\r\n this.map.set(this.toKey(resource), value);\r\n return this;\r\n }\r\n get(resource) {\r\n return this.map.get(this.toKey(resource));\r\n }\r\n has(resource) {\r\n return this.map.has(this.toKey(resource));\r\n }\r\n get size() {\r\n return this.map.size;\r\n }\r\n clear() {\r\n this.map.clear();\r\n }\r\n delete(resource) {\r\n return this.map.delete(this.toKey(resource));\r\n }\r\n forEach(clb, thisArg) {\r\n if (typeof thisArg !== 'undefined') {\r\n clb = clb.bind(thisArg);\r\n }\r\n for (let [index, value] of this.map) {\r\n clb(value, URI.parse(index), this);\r\n }\r\n }\r\n values() {\r\n return this.map.values();\r\n }\r\n *keys() {\r\n for (let key of this.map.keys()) {\r\n yield URI.parse(key);\r\n }\r\n }\r\n *entries() {\r\n for (let tuple of this.map.entries()) {\r\n yield [URI.parse(tuple[0]), tuple[1]];\r\n }\r\n }\r\n *[(_a = Symbol.toStringTag, Symbol.iterator)]() {\r\n for (let item of this.map) {\r\n yield [URI.parse(item[0]), item[1]];\r\n }\r\n }\r\n}\r\nResourceMap.defaultToKey = (resource) => resource.toString();\r\nexport class LinkedMap {\r\n constructor() {\r\n this[_b] = 'LinkedMap';\r\n this._map = new Map();\r\n this._head = undefined;\r\n this._tail = undefined;\r\n this._size = 0;\r\n this._state = 0;\r\n }\r\n clear() {\r\n this._map.clear();\r\n this._head = undefined;\r\n this._tail = undefined;\r\n this._size = 0;\r\n this._state++;\r\n }\r\n isEmpty() {\r\n return !this._head && !this._tail;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n get first() {\r\n var _c;\r\n return (_c = this._head) === null || _c === void 0 ? void 0 : _c.value;\r\n }\r\n get last() {\r\n var _c;\r\n return (_c = this._tail) === null || _c === void 0 ? void 0 : _c.value;\r\n }\r\n has(key) {\r\n return this._map.has(key);\r\n }\r\n get(key, touch = 0 /* None */) {\r\n const item = this._map.get(key);\r\n if (!item) {\r\n return undefined;\r\n }\r\n if (touch !== 0 /* None */) {\r\n this.touch(item, touch);\r\n }\r\n return item.value;\r\n }\r\n set(key, value, touch = 0 /* None */) {\r\n let item = this._map.get(key);\r\n if (item) {\r\n item.value = value;\r\n if (touch !== 0 /* None */) {\r\n this.touch(item, touch);\r\n }\r\n }\r\n else {\r\n item = { key, value, next: undefined, previous: undefined };\r\n switch (touch) {\r\n case 0 /* None */:\r\n this.addItemLast(item);\r\n break;\r\n case 1 /* AsOld */:\r\n this.addItemFirst(item);\r\n break;\r\n case 2 /* AsNew */:\r\n this.addItemLast(item);\r\n break;\r\n default:\r\n this.addItemLast(item);\r\n break;\r\n }\r\n this._map.set(key, item);\r\n this._size++;\r\n }\r\n return this;\r\n }\r\n delete(key) {\r\n return !!this.remove(key);\r\n }\r\n remove(key) {\r\n const item = this._map.get(key);\r\n if (!item) {\r\n return undefined;\r\n }\r\n this._map.delete(key);\r\n this.removeItem(item);\r\n this._size--;\r\n return item.value;\r\n }\r\n shift() {\r\n if (!this._head && !this._tail) {\r\n return undefined;\r\n }\r\n if (!this._head || !this._tail) {\r\n throw new Error('Invalid list');\r\n }\r\n const item = this._head;\r\n this._map.delete(item.key);\r\n this.removeItem(item);\r\n this._size--;\r\n return item.value;\r\n }\r\n forEach(callbackfn, thisArg) {\r\n const state = this._state;\r\n let current = this._head;\r\n while (current) {\r\n if (thisArg) {\r\n callbackfn.bind(thisArg)(current.value, current.key, this);\r\n }\r\n else {\r\n callbackfn(current.value, current.key, this);\r\n }\r\n if (this._state !== state) {\r\n throw new Error(`LinkedMap got modified during iteration.`);\r\n }\r\n current = current.next;\r\n }\r\n }\r\n keys() {\r\n const map = this;\r\n const state = this._state;\r\n let current = this._head;\r\n const iterator = {\r\n [Symbol.iterator]() {\r\n return iterator;\r\n },\r\n next() {\r\n if (map._state !== state) {\r\n throw new Error(`LinkedMap got modified during iteration.`);\r\n }\r\n if (current) {\r\n const result = { value: current.key, done: false };\r\n current = current.next;\r\n return result;\r\n }\r\n else {\r\n return { value: undefined, done: true };\r\n }\r\n }\r\n };\r\n return iterator;\r\n }\r\n values() {\r\n const map = this;\r\n const state = this._state;\r\n let current = this._head;\r\n const iterator = {\r\n [Symbol.iterator]() {\r\n return iterator;\r\n },\r\n next() {\r\n if (map._state !== state) {\r\n throw new Error(`LinkedMap got modified during iteration.`);\r\n }\r\n if (current) {\r\n const result = { value: current.value, done: false };\r\n current = current.next;\r\n return result;\r\n }\r\n else {\r\n return { value: undefined, done: true };\r\n }\r\n }\r\n };\r\n return iterator;\r\n }\r\n entries() {\r\n const map = this;\r\n const state = this._state;\r\n let current = this._head;\r\n const iterator = {\r\n [Symbol.iterator]() {\r\n return iterator;\r\n },\r\n next() {\r\n if (map._state !== state) {\r\n throw new Error(`LinkedMap got modified during iteration.`);\r\n }\r\n if (current) {\r\n const result = { value: [current.key, current.value], done: false };\r\n current = current.next;\r\n return result;\r\n }\r\n else {\r\n return { value: undefined, done: true };\r\n }\r\n }\r\n };\r\n return iterator;\r\n }\r\n [(_b = Symbol.toStringTag, Symbol.iterator)]() {\r\n return this.entries();\r\n }\r\n trimOld(newSize) {\r\n if (newSize >= this.size) {\r\n return;\r\n }\r\n if (newSize === 0) {\r\n this.clear();\r\n return;\r\n }\r\n let current = this._head;\r\n let currentSize = this.size;\r\n while (current && currentSize > newSize) {\r\n this._map.delete(current.key);\r\n current = current.next;\r\n currentSize--;\r\n }\r\n this._head = current;\r\n this._size = currentSize;\r\n if (current) {\r\n current.previous = undefined;\r\n }\r\n this._state++;\r\n }\r\n addItemFirst(item) {\r\n // First time Insert\r\n if (!this._head && !this._tail) {\r\n this._tail = item;\r\n }\r\n else if (!this._head) {\r\n throw new Error('Invalid list');\r\n }\r\n else {\r\n item.next = this._head;\r\n this._head.previous = item;\r\n }\r\n this._head = item;\r\n this._state++;\r\n }\r\n addItemLast(item) {\r\n // First time Insert\r\n if (!this._head && !this._tail) {\r\n this._head = item;\r\n }\r\n else if (!this._tail) {\r\n throw new Error('Invalid list');\r\n }\r\n else {\r\n item.previous = this._tail;\r\n this._tail.next = item;\r\n }\r\n this._tail = item;\r\n this._state++;\r\n }\r\n removeItem(item) {\r\n if (item === this._head && item === this._tail) {\r\n this._head = undefined;\r\n this._tail = undefined;\r\n }\r\n else if (item === this._head) {\r\n // This can only happen if size === 1 which is handled\r\n // by the case above.\r\n if (!item.next) {\r\n throw new Error('Invalid list');\r\n }\r\n item.next.previous = undefined;\r\n this._head = item.next;\r\n }\r\n else if (item === this._tail) {\r\n // This can only happen if size === 1 which is handled\r\n // by the case above.\r\n if (!item.previous) {\r\n throw new Error('Invalid list');\r\n }\r\n item.previous.next = undefined;\r\n this._tail = item.previous;\r\n }\r\n else {\r\n const next = item.next;\r\n const previous = item.previous;\r\n if (!next || !previous) {\r\n throw new Error('Invalid list');\r\n }\r\n next.previous = previous;\r\n previous.next = next;\r\n }\r\n item.next = undefined;\r\n item.previous = undefined;\r\n this._state++;\r\n }\r\n touch(item, touch) {\r\n if (!this._head || !this._tail) {\r\n throw new Error('Invalid list');\r\n }\r\n if ((touch !== 1 /* AsOld */ && touch !== 2 /* AsNew */)) {\r\n return;\r\n }\r\n if (touch === 1 /* AsOld */) {\r\n if (item === this._head) {\r\n return;\r\n }\r\n const next = item.next;\r\n const previous = item.previous;\r\n // Unlink the item\r\n if (item === this._tail) {\r\n // previous must be defined since item was not head but is tail\r\n // So there are more than on item in the map\r\n previous.next = undefined;\r\n this._tail = previous;\r\n }\r\n else {\r\n // Both next and previous are not undefined since item was neither head nor tail.\r\n next.previous = previous;\r\n previous.next = next;\r\n }\r\n // Insert the node at head\r\n item.previous = undefined;\r\n item.next = this._head;\r\n this._head.previous = item;\r\n this._head = item;\r\n this._state++;\r\n }\r\n else if (touch === 2 /* AsNew */) {\r\n if (item === this._tail) {\r\n return;\r\n }\r\n const next = item.next;\r\n const previous = item.previous;\r\n // Unlink the item.\r\n if (item === this._head) {\r\n // next must be defined since item was not tail but is head\r\n // So there are more than on item in the map\r\n next.previous = undefined;\r\n this._head = next;\r\n }\r\n else {\r\n // Both next and previous are not undefined since item was neither head nor tail.\r\n next.previous = previous;\r\n previous.next = next;\r\n }\r\n item.next = undefined;\r\n item.previous = this._tail;\r\n this._tail.next = item;\r\n this._tail = item;\r\n this._state++;\r\n }\r\n }\r\n toJSON() {\r\n const data = [];\r\n this.forEach((value, key) => {\r\n data.push([key, value]);\r\n });\r\n return data;\r\n }\r\n fromJSON(data) {\r\n this.clear();\r\n for (const [key, value] of data) {\r\n this.set(key, value);\r\n }\r\n }\r\n}\r\nexport class LRUCache extends LinkedMap {\r\n constructor(limit, ratio = 1) {\r\n super();\r\n this._limit = limit;\r\n this._ratio = Math.min(Math.max(0, ratio), 1);\r\n }\r\n get limit() {\r\n return this._limit;\r\n }\r\n set limit(limit) {\r\n this._limit = limit;\r\n this.checkTrim();\r\n }\r\n get(key, touch = 2 /* AsNew */) {\r\n return super.get(key, touch);\r\n }\r\n peek(key) {\r\n return super.get(key, 0 /* None */);\r\n }\r\n set(key, value) {\r\n super.set(key, value, 2 /* AsNew */);\r\n this.checkTrim();\r\n return this;\r\n }\r\n checkTrim() {\r\n if (this.size > this._limit) {\r\n this.trimOld(Math.round(this._limit * this._ratio));\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { VSBuffer } from './buffer.js';\r\nimport { URI } from './uri.js';\r\nexport function parse(text) {\r\n let data = JSON.parse(text);\r\n data = revive(data);\r\n return data;\r\n}\r\nexport function revive(obj, depth = 0) {\r\n if (!obj || depth > 200) {\r\n return obj;\r\n }\r\n if (typeof obj === 'object') {\r\n switch (obj.$mid) {\r\n case 1 /* Uri */: return URI.revive(obj);\r\n case 2 /* Regexp */: return new RegExp(obj.source, obj.flags);\r\n }\r\n if (obj instanceof VSBuffer\r\n || obj instanceof Uint8Array) {\r\n return obj;\r\n }\r\n if (Array.isArray(obj)) {\r\n for (let i = 0; i < obj.length; ++i) {\r\n obj[i] = revive(obj[i], depth + 1);\r\n }\r\n }\r\n else {\r\n // walk object\r\n for (const key in obj) {\r\n if (Object.hasOwnProperty.call(obj, key)) {\r\n obj[key] = revive(obj[key], depth + 1);\r\n }\r\n }\r\n }\r\n }\r\n return obj;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { isWindows } from './platform.js';\r\nimport { startsWithIgnoreCase } from './strings.js';\r\nimport { sep, posix, normalize } from './path.js';\r\n/**\r\n * Takes a Windows OS path and changes backward slashes to forward slashes.\r\n * This should only be done for OS paths from Windows (or user provided paths potentially from Windows).\r\n * Using it on a Linux or MaxOS path might change it.\r\n */\r\nexport function toSlashes(osPath) {\r\n return osPath.replace(/[\\\\/]/g, posix.sep);\r\n}\r\n/**\r\n * Takes a Windows OS path (using backward or forward slashes) and turns it into a posix path:\r\n * - turns backward slashes into forward slashes\r\n * - makes it absolute if it starts with a drive letter\r\n * This should only be done for OS paths from Windows (or user provided paths potentially from Windows).\r\n * Using it on a Linux or MaxOS path might change it.\r\n */\r\nexport function toPosixPath(osPath) {\r\n if (osPath.indexOf('/') === -1) {\r\n osPath = toSlashes(osPath);\r\n }\r\n if (/^[a-zA-Z]:(\\/|$)/.test(osPath)) { // starts with a drive letter\r\n osPath = '/' + osPath;\r\n }\r\n return osPath;\r\n}\r\nexport function isEqualOrParent(base, parentCandidate, ignoreCase, separator = sep) {\r\n if (base === parentCandidate) {\r\n return true;\r\n }\r\n if (!base || !parentCandidate) {\r\n return false;\r\n }\r\n if (parentCandidate.length > base.length) {\r\n return false;\r\n }\r\n if (ignoreCase) {\r\n const beginsWith = startsWithIgnoreCase(base, parentCandidate);\r\n if (!beginsWith) {\r\n return false;\r\n }\r\n if (parentCandidate.length === base.length) {\r\n return true; // same path, different casing\r\n }\r\n let sepOffset = parentCandidate.length;\r\n if (parentCandidate.charAt(parentCandidate.length - 1) === separator) {\r\n sepOffset--; // adjust the expected sep offset in case our candidate already ends in separator character\r\n }\r\n return base.charAt(sepOffset) === separator;\r\n }\r\n if (parentCandidate.charAt(parentCandidate.length - 1) !== separator) {\r\n parentCandidate += separator;\r\n }\r\n return base.indexOf(parentCandidate) === 0;\r\n}\r\nexport function isWindowsDriveLetter(char0) {\r\n return char0 >= 65 /* A */ && char0 <= 90 /* Z */ || char0 >= 97 /* a */ && char0 <= 122 /* z */;\r\n}\r\nexport function isRootOrDriveLetter(path) {\r\n const pathNormalized = normalize(path);\r\n if (isWindows) {\r\n if (path.length > 3) {\r\n return false;\r\n }\r\n return hasDriveLetter(pathNormalized) &&\r\n (path.length === 2 || pathNormalized.charCodeAt(2) === 92 /* Backslash */);\r\n }\r\n return pathNormalized === posix.sep;\r\n}\r\nexport function hasDriveLetter(path) {\r\n if (isWindows) {\r\n return isWindowsDriveLetter(path.charCodeAt(0)) && path.charCodeAt(1) === 58 /* Colon */;\r\n }\r\n return false;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as extpath from './extpath.js';\r\nimport * as paths from './path.js';\r\nimport { URI, uriToFsPath } from './uri.js';\r\nimport { compare as strCompare } from './strings.js';\r\nimport { Schemas } from './network.js';\r\nexport function originalFSPath(uri) {\r\n return uriToFsPath(uri, true);\r\n}\r\nexport class ExtUri {\r\n constructor(_ignorePathCasing) {\r\n this._ignorePathCasing = _ignorePathCasing;\r\n }\r\n compare(uri1, uri2, ignoreFragment = false) {\r\n if (uri1 === uri2) {\r\n return 0;\r\n }\r\n return strCompare(this.getComparisonKey(uri1, ignoreFragment), this.getComparisonKey(uri2, ignoreFragment));\r\n }\r\n isEqual(uri1, uri2, ignoreFragment = false) {\r\n if (uri1 === uri2) {\r\n return true;\r\n }\r\n if (!uri1 || !uri2) {\r\n return false;\r\n }\r\n return this.getComparisonKey(uri1, ignoreFragment) === this.getComparisonKey(uri2, ignoreFragment);\r\n }\r\n getComparisonKey(uri, ignoreFragment = false) {\r\n return uri.with({\r\n path: this._ignorePathCasing(uri) ? uri.path.toLowerCase() : undefined,\r\n fragment: ignoreFragment ? null : undefined\r\n }).toString();\r\n }\r\n // --- path math\r\n joinPath(resource, ...pathFragment) {\r\n return URI.joinPath(resource, ...pathFragment);\r\n }\r\n basenameOrAuthority(resource) {\r\n return basename(resource) || resource.authority;\r\n }\r\n basename(resource) {\r\n return paths.posix.basename(resource.path);\r\n }\r\n dirname(resource) {\r\n if (resource.path.length === 0) {\r\n return resource;\r\n }\r\n let dirname;\r\n if (resource.scheme === Schemas.file) {\r\n dirname = URI.file(paths.dirname(originalFSPath(resource))).path;\r\n }\r\n else {\r\n dirname = paths.posix.dirname(resource.path);\r\n if (resource.authority && dirname.length && dirname.charCodeAt(0) !== 47 /* Slash */) {\r\n console.error(`dirname(\"${resource.toString})) resulted in a relative path`);\r\n dirname = '/'; // If a URI contains an authority component, then the path component must either be empty or begin with a CharCode.Slash (\"/\") character\r\n }\r\n }\r\n return resource.with({\r\n path: dirname\r\n });\r\n }\r\n normalizePath(resource) {\r\n if (!resource.path.length) {\r\n return resource;\r\n }\r\n let normalizedPath;\r\n if (resource.scheme === Schemas.file) {\r\n normalizedPath = URI.file(paths.normalize(originalFSPath(resource))).path;\r\n }\r\n else {\r\n normalizedPath = paths.posix.normalize(resource.path);\r\n }\r\n return resource.with({\r\n path: normalizedPath\r\n });\r\n }\r\n resolvePath(base, path) {\r\n if (base.scheme === Schemas.file) {\r\n const newURI = URI.file(paths.resolve(originalFSPath(base), path));\r\n return base.with({\r\n authority: newURI.authority,\r\n path: newURI.path\r\n });\r\n }\r\n path = extpath.toPosixPath(path); // we allow path to be a windows path\r\n return base.with({\r\n path: paths.posix.resolve(base.path, path)\r\n });\r\n }\r\n}\r\n/**\r\n * Unbiased utility that takes uris \"as they are\". This means it can be interchanged with\r\n * uri#toString() usages. The following is true\r\n * ```\r\n * assertEqual(aUri.toString() === bUri.toString(), exturi.isEqual(aUri, bUri))\r\n * ```\r\n */\r\nexport const extUri = new ExtUri(() => false);\r\nexport const isEqual = extUri.isEqual.bind(extUri);\r\nexport const basenameOrAuthority = extUri.basenameOrAuthority.bind(extUri);\r\nexport const basename = extUri.basename.bind(extUri);\r\nexport const dirname = extUri.dirname.bind(extUri);\r\nexport const joinPath = extUri.joinPath.bind(extUri);\r\nexport const normalizePath = extUri.normalizePath.bind(extUri);\r\nexport const resolvePath = extUri.resolvePath.bind(extUri);\r\n/**\r\n * Data URI related helpers.\r\n */\r\nexport var DataUri;\r\n(function (DataUri) {\r\n DataUri.META_DATA_LABEL = 'label';\r\n DataUri.META_DATA_DESCRIPTION = 'description';\r\n DataUri.META_DATA_SIZE = 'size';\r\n DataUri.META_DATA_MIME = 'mime';\r\n function parseMetaData(dataUri) {\r\n const metadata = new Map();\r\n // Given a URI of: data:image/png;size:2313;label:SomeLabel;description:SomeDescription;base64,77+9UE5...\r\n // the metadata is: size:2313;label:SomeLabel;description:SomeDescription\r\n const meta = dataUri.path.substring(dataUri.path.indexOf(';') + 1, dataUri.path.lastIndexOf(';'));\r\n meta.split(';').forEach(property => {\r\n const [key, value] = property.split(':');\r\n if (key && value) {\r\n metadata.set(key, value);\r\n }\r\n });\r\n // Given a URI of: data:image/png;size:2313;label:SomeLabel;description:SomeDescription;base64,77+9UE5...\r\n // the mime is: image/png\r\n const mime = dataUri.path.substring(0, dataUri.path.indexOf(';'));\r\n if (mime) {\r\n metadata.set(DataUri.META_DATA_MIME, mime);\r\n }\r\n return metadata;\r\n }\r\n DataUri.parseMetaData = parseMetaData;\r\n})(DataUri || (DataUri = {}));\r\n","/**\r\n * @returns whether the provided parameter is a JavaScript Array or not.\r\n */\r\nexport function isArray(array) {\r\n return Array.isArray(array);\r\n}\r\n/**\r\n * @returns whether the provided parameter is a JavaScript String or not.\r\n */\r\nexport function isString(str) {\r\n return (typeof str === 'string');\r\n}\r\n/**\r\n *\r\n * @returns whether the provided parameter is of type `object` but **not**\r\n *\t`null`, an `array`, a `regexp`, nor a `date`.\r\n */\r\nexport function isObject(obj) {\r\n // The method can't do a type cast since there are type (like strings) which\r\n // are subclasses of any put not positvely matched by the function. Hence type\r\n // narrowing results in wrong results.\r\n return typeof obj === 'object'\r\n && obj !== null\r\n && !Array.isArray(obj)\r\n && !(obj instanceof RegExp)\r\n && !(obj instanceof Date);\r\n}\r\n/**\r\n * In **contrast** to just checking `typeof` this will return `false` for `NaN`.\r\n * @returns whether the provided parameter is a JavaScript Number or not.\r\n */\r\nexport function isNumber(obj) {\r\n return (typeof obj === 'number' && !isNaN(obj));\r\n}\r\n/**\r\n * @returns whether the provided parameter is a JavaScript Boolean or not.\r\n */\r\nexport function isBoolean(obj) {\r\n return (obj === true || obj === false);\r\n}\r\n/**\r\n * @returns whether the provided parameter is undefined.\r\n */\r\nexport function isUndefined(obj) {\r\n return (typeof obj === 'undefined');\r\n}\r\n/**\r\n * @returns whether the provided parameter is undefined or null.\r\n */\r\nexport function isUndefinedOrNull(obj) {\r\n return (isUndefined(obj) || obj === null);\r\n}\r\nexport function assertType(condition, type) {\r\n if (!condition) {\r\n throw new Error(type ? `Unexpected type, expected '${type}'` : 'Unexpected type');\r\n }\r\n}\r\n/**\r\n * Asserts that the argument passed in is neither undefined nor null.\r\n */\r\nexport function assertIsDefined(arg) {\r\n if (isUndefinedOrNull(arg)) {\r\n throw new Error('Assertion Failed: argument is undefined or null');\r\n }\r\n return arg;\r\n}\r\n/**\r\n * @returns whether the provided parameter is a JavaScript Function or not.\r\n */\r\nexport function isFunction(obj) {\r\n return (typeof obj === 'function');\r\n}\r\nexport function validateConstraints(args, constraints) {\r\n const len = Math.min(args.length, constraints.length);\r\n for (let i = 0; i < len; i++) {\r\n validateConstraint(args[i], constraints[i]);\r\n }\r\n}\r\nexport function validateConstraint(arg, constraint) {\r\n if (isString(constraint)) {\r\n if (typeof arg !== constraint) {\r\n throw new Error(`argument does not match constraint: typeof ${constraint}`);\r\n }\r\n }\r\n else if (isFunction(constraint)) {\r\n try {\r\n if (arg instanceof constraint) {\r\n return;\r\n }\r\n }\r\n catch (_a) {\r\n // ignore\r\n }\r\n if (!isUndefinedOrNull(arg) && arg.constructor === constraint) {\r\n return;\r\n }\r\n if (constraint.length === 1 && constraint.call(undefined, arg) === true) {\r\n return;\r\n }\r\n throw new Error(`argument does not match one of these constraints: arg instanceof constraint, arg.constructor === constraint, nor constraint(arg) === true`);\r\n }\r\n}\r\nexport function getAllPropertyNames(obj) {\r\n let res = [];\r\n let proto = Object.getPrototypeOf(obj);\r\n while (Object.prototype !== proto) {\r\n res = res.concat(Object.getOwnPropertyNames(proto));\r\n proto = Object.getPrototypeOf(proto);\r\n }\r\n return res;\r\n}\r\nexport function getAllMethodNames(obj) {\r\n const methods = [];\r\n for (const prop of getAllPropertyNames(obj)) {\r\n if (typeof obj[prop] === 'function') {\r\n methods.push(prop);\r\n }\r\n }\r\n return methods;\r\n}\r\nexport function createProxyObject(methodNames, invoke) {\r\n const createProxyMethod = (method) => {\r\n return function () {\r\n const args = Array.prototype.slice.call(arguments, 0);\r\n return invoke(method, args);\r\n };\r\n };\r\n let result = {};\r\n for (const methodName of methodNames) {\r\n result[methodName] = createProxyMethod(methodName);\r\n }\r\n return result;\r\n}\r\n/**\r\n * Converts null to undefined, passes all other values through.\r\n */\r\nexport function withNullAsUndefined(x) {\r\n return x === null ? undefined : x;\r\n}\r\nexport function assertNever(value, message = 'Unreachable') {\r\n throw new Error(message);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { toDisposable } from '../../../base/common/lifecycle.js';\r\nimport { validateConstraints } from '../../../base/common/types.js';\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { LinkedList } from '../../../base/common/linkedList.js';\r\nimport { Iterable } from '../../../base/common/iterator.js';\r\nexport const ICommandService = createDecorator('commandService');\r\nexport const CommandsRegistry = new class {\r\n constructor() {\r\n this._commands = new Map();\r\n this._onDidRegisterCommand = new Emitter();\r\n this.onDidRegisterCommand = this._onDidRegisterCommand.event;\r\n }\r\n registerCommand(idOrCommand, handler) {\r\n if (!idOrCommand) {\r\n throw new Error(`invalid command`);\r\n }\r\n if (typeof idOrCommand === 'string') {\r\n if (!handler) {\r\n throw new Error(`invalid command`);\r\n }\r\n return this.registerCommand({ id: idOrCommand, handler });\r\n }\r\n // add argument validation if rich command metadata is provided\r\n if (idOrCommand.description) {\r\n const constraints = [];\r\n for (let arg of idOrCommand.description.args) {\r\n constraints.push(arg.constraint);\r\n }\r\n const actualHandler = idOrCommand.handler;\r\n idOrCommand.handler = function (accessor, ...args) {\r\n validateConstraints(args, constraints);\r\n return actualHandler(accessor, ...args);\r\n };\r\n }\r\n // find a place to store the command\r\n const { id } = idOrCommand;\r\n let commands = this._commands.get(id);\r\n if (!commands) {\r\n commands = new LinkedList();\r\n this._commands.set(id, commands);\r\n }\r\n let removeFn = commands.unshift(idOrCommand);\r\n let ret = toDisposable(() => {\r\n removeFn();\r\n const command = this._commands.get(id);\r\n if (command === null || command === void 0 ? void 0 : command.isEmpty()) {\r\n this._commands.delete(id);\r\n }\r\n });\r\n // tell the world about this command\r\n this._onDidRegisterCommand.fire(id);\r\n return ret;\r\n }\r\n registerCommandAlias(oldId, newId) {\r\n return CommandsRegistry.registerCommand(oldId, (accessor, ...args) => accessor.get(ICommandService).executeCommand(newId, ...args));\r\n }\r\n getCommand(id) {\r\n const list = this._commands.get(id);\r\n if (!list || list.isEmpty()) {\r\n return undefined;\r\n }\r\n return Iterable.first(list);\r\n }\r\n getCommands() {\r\n const result = new Map();\r\n for (const key of this._commands.keys()) {\r\n const command = this.getCommand(key);\r\n if (command) {\r\n result.set(key, command);\r\n }\r\n }\r\n return result;\r\n }\r\n};\r\nCommandsRegistry.registerCommand('noop', () => { });\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport var EditorOpenContext;\r\n(function (EditorOpenContext) {\r\n /**\r\n * Default: the editor is opening via a programmatic call\r\n * to the editor service API.\r\n */\r\n EditorOpenContext[EditorOpenContext[\"API\"] = 0] = \"API\";\r\n /**\r\n * Indicates that a user action triggered the opening, e.g.\r\n * via mouse or keyboard use.\r\n */\r\n EditorOpenContext[EditorOpenContext[\"USER\"] = 1] = \"USER\";\r\n})(EditorOpenContext || (EditorOpenContext = {}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { equalsIgnoreCase, startsWithIgnoreCase } from '../../../base/common/strings.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nexport const IOpenerService = createDecorator('openerService');\r\nexport const NullOpenerService = Object.freeze({\r\n _serviceBrand: undefined,\r\n registerOpener() { return Disposable.None; },\r\n registerValidator() { return Disposable.None; },\r\n registerExternalUriResolver() { return Disposable.None; },\r\n setDefaultExternalOpener() { },\r\n registerExternalOpener() { return Disposable.None; },\r\n open() {\r\n return __awaiter(this, void 0, void 0, function* () { return false; });\r\n },\r\n resolveExternalUri(uri) {\r\n return __awaiter(this, void 0, void 0, function* () { return { resolved: uri, dispose() { } }; });\r\n },\r\n});\r\nexport function matchesScheme(target, scheme) {\r\n if (URI.isUri(target)) {\r\n return equalsIgnoreCase(target.scheme, scheme);\r\n }\r\n else {\r\n return startsWithIgnoreCase(target, scheme + ':');\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { LinkedList } from '../../../base/common/linkedList.js';\r\nimport { ResourceMap } from '../../../base/common/map.js';\r\nimport { parse } from '../../../base/common/marshalling.js';\r\nimport { Schemas } from '../../../base/common/network.js';\r\nimport { normalizePath } from '../../../base/common/resources.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { ICodeEditorService } from './codeEditorService.js';\r\nimport { ICommandService } from '../../../platform/commands/common/commands.js';\r\nimport { EditorOpenContext } from '../../../platform/editor/common/editor.js';\r\nimport { matchesScheme } from '../../../platform/opener/common/opener.js';\r\nlet CommandOpener = class CommandOpener {\r\n constructor(_commandService) {\r\n this._commandService = _commandService;\r\n }\r\n open(target, options) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!matchesScheme(target, Schemas.command)) {\r\n return false;\r\n }\r\n if (!(options === null || options === void 0 ? void 0 : options.allowCommands)) {\r\n // silently ignore commands when command-links are disabled, also\r\n // surpress other openers by returning TRUE\r\n return true;\r\n }\r\n // run command or bail out if command isn't known\r\n if (typeof target === 'string') {\r\n target = URI.parse(target);\r\n }\r\n // execute as command\r\n let args = [];\r\n try {\r\n args = parse(decodeURIComponent(target.query));\r\n }\r\n catch (_a) {\r\n // ignore and retry\r\n try {\r\n args = parse(target.query);\r\n }\r\n catch (_b) {\r\n // ignore error\r\n }\r\n }\r\n if (!Array.isArray(args)) {\r\n args = [args];\r\n }\r\n yield this._commandService.executeCommand(target.path, ...args);\r\n return true;\r\n });\r\n }\r\n};\r\nCommandOpener = __decorate([\r\n __param(0, ICommandService)\r\n], CommandOpener);\r\nlet EditorOpener = class EditorOpener {\r\n constructor(_editorService) {\r\n this._editorService = _editorService;\r\n }\r\n open(target, options) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (typeof target === 'string') {\r\n target = URI.parse(target);\r\n }\r\n let selection = undefined;\r\n const match = /^L?(\\d+)(?:,(\\d+))?/.exec(target.fragment);\r\n if (match) {\r\n // support file:///some/file.js#73,84\r\n // support file:///some/file.js#L73\r\n selection = {\r\n startLineNumber: parseInt(match[1]),\r\n startColumn: match[2] ? parseInt(match[2]) : 1\r\n };\r\n // remove fragment\r\n target = target.with({ fragment: '' });\r\n }\r\n if (target.scheme === Schemas.file) {\r\n target = normalizePath(target); // workaround for non-normalized paths (https://github.com/microsoft/vscode/issues/12954)\r\n }\r\n yield this._editorService.openCodeEditor({\r\n resource: target,\r\n options: Object.assign({ selection, context: (options === null || options === void 0 ? void 0 : options.fromUserGesture) ? EditorOpenContext.USER : EditorOpenContext.API }, options === null || options === void 0 ? void 0 : options.editorOptions)\r\n }, this._editorService.getFocusedCodeEditor(), options === null || options === void 0 ? void 0 : options.openToSide);\r\n return true;\r\n });\r\n }\r\n};\r\nEditorOpener = __decorate([\r\n __param(0, ICodeEditorService)\r\n], EditorOpener);\r\nlet OpenerService = class OpenerService {\r\n constructor(editorService, commandService) {\r\n this._openers = new LinkedList();\r\n this._validators = new LinkedList();\r\n this._resolvers = new LinkedList();\r\n this._resolvedUriTargets = new ResourceMap(uri => uri.with({ path: null, fragment: null, query: null }).toString());\r\n this._externalOpeners = new LinkedList();\r\n // Default external opener is going through window.open()\r\n this._defaultExternalOpener = {\r\n openExternal: (href) => __awaiter(this, void 0, void 0, function* () {\r\n // ensure to open HTTP/HTTPS links into new windows\r\n // to not trigger a navigation. Any other link is\r\n // safe to be set as HREF to prevent a blank window\r\n // from opening.\r\n if (matchesScheme(href, Schemas.http) || matchesScheme(href, Schemas.https)) {\r\n dom.windowOpenNoOpener(href);\r\n }\r\n else {\r\n window.location.href = href;\r\n }\r\n return true;\r\n })\r\n };\r\n // Default opener: any external, maito, http(s), command, and catch-all-editors\r\n this._openers.push({\r\n open: (target, options) => __awaiter(this, void 0, void 0, function* () {\r\n if ((options === null || options === void 0 ? void 0 : options.openExternal) || matchesScheme(target, Schemas.mailto) || matchesScheme(target, Schemas.http) || matchesScheme(target, Schemas.https)) {\r\n // open externally\r\n yield this._doOpenExternal(target, options);\r\n return true;\r\n }\r\n return false;\r\n })\r\n });\r\n this._openers.push(new CommandOpener(commandService));\r\n this._openers.push(new EditorOpener(editorService));\r\n }\r\n registerOpener(opener) {\r\n const remove = this._openers.unshift(opener);\r\n return { dispose: remove };\r\n }\r\n registerValidator(validator) {\r\n const remove = this._validators.push(validator);\r\n return { dispose: remove };\r\n }\r\n registerExternalUriResolver(resolver) {\r\n const remove = this._resolvers.push(resolver);\r\n return { dispose: remove };\r\n }\r\n setDefaultExternalOpener(externalOpener) {\r\n this._defaultExternalOpener = externalOpener;\r\n }\r\n registerExternalOpener(opener) {\r\n const remove = this._externalOpeners.push(opener);\r\n return { dispose: remove };\r\n }\r\n open(target, options) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function* () {\r\n // check with contributed validators\r\n const targetURI = typeof target === 'string' ? URI.parse(target) : target;\r\n // validate against the original URI that this URI resolves to, if one exists\r\n const validationTarget = (_a = this._resolvedUriTargets.get(targetURI)) !== null && _a !== void 0 ? _a : target;\r\n for (const validator of this._validators) {\r\n if (!(yield validator.shouldOpen(validationTarget))) {\r\n return false;\r\n }\r\n }\r\n // check with contributed openers\r\n for (const opener of this._openers) {\r\n const handled = yield opener.open(target, options);\r\n if (handled) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n });\r\n }\r\n resolveExternalUri(resource, options) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n for (const resolver of this._resolvers) {\r\n try {\r\n const result = yield resolver.resolveExternalUri(resource, options);\r\n if (result) {\r\n if (!this._resolvedUriTargets.has(result.resolved)) {\r\n this._resolvedUriTargets.set(result.resolved, resource);\r\n }\r\n return result;\r\n }\r\n }\r\n catch (_a) {\r\n // noop\r\n }\r\n }\r\n throw new Error('Could not resolve external URI: ' + resource.toString());\r\n });\r\n }\r\n _doOpenExternal(resource, options) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n //todo@jrieken IExternalUriResolver should support `uri: URI | string`\r\n const uri = typeof resource === 'string' ? URI.parse(resource) : resource;\r\n let externalUri;\r\n try {\r\n externalUri = (yield this.resolveExternalUri(uri, options)).resolved;\r\n }\r\n catch (_a) {\r\n externalUri = uri;\r\n }\r\n let href;\r\n if (typeof resource === 'string' && uri.toString() === externalUri.toString()) {\r\n // open the url-string AS IS\r\n href = resource;\r\n }\r\n else {\r\n // open URI using the toString(noEncode)+encodeURI-trick\r\n href = encodeURI(externalUri.toString(true));\r\n }\r\n if (options === null || options === void 0 ? void 0 : options.allowContributedOpeners) {\r\n const preferredOpenerId = typeof (options === null || options === void 0 ? void 0 : options.allowContributedOpeners) === 'string' ? options === null || options === void 0 ? void 0 : options.allowContributedOpeners : undefined;\r\n for (const opener of this._externalOpeners) {\r\n const didOpen = yield opener.openExternal(href, {\r\n sourceUri: uri,\r\n preferredOpenerId,\r\n }, CancellationToken.None);\r\n if (didOpen) {\r\n return true;\r\n }\r\n }\r\n }\r\n return this._defaultExternalOpener.openExternal(href, { sourceUri: uri }, CancellationToken.None);\r\n });\r\n }\r\n dispose() {\r\n this._validators.clear();\r\n }\r\n};\r\nOpenerService = __decorate([\r\n __param(0, ICodeEditorService),\r\n __param(1, ICommandService)\r\n], OpenerService);\r\nexport { OpenerService };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/**\r\n * Throws an error with the provided message if the provided value does not evaluate to a true Javascript value.\r\n */\r\nexport function ok(value, message) {\r\n if (!value) {\r\n throw new Error(message ? `Assertion failed (${message})` : 'Assertion Failed');\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { isObject, isUndefinedOrNull, isArray } from './types.js';\r\nexport function deepClone(obj) {\r\n if (!obj || typeof obj !== 'object') {\r\n return obj;\r\n }\r\n if (obj instanceof RegExp) {\r\n // See https://github.com/microsoft/TypeScript/issues/10990\r\n return obj;\r\n }\r\n const result = Array.isArray(obj) ? [] : {};\r\n Object.keys(obj).forEach((key) => {\r\n if (obj[key] && typeof obj[key] === 'object') {\r\n result[key] = deepClone(obj[key]);\r\n }\r\n else {\r\n result[key] = obj[key];\r\n }\r\n });\r\n return result;\r\n}\r\nexport function deepFreeze(obj) {\r\n if (!obj || typeof obj !== 'object') {\r\n return obj;\r\n }\r\n const stack = [obj];\r\n while (stack.length > 0) {\r\n const obj = stack.shift();\r\n Object.freeze(obj);\r\n for (const key in obj) {\r\n if (_hasOwnProperty.call(obj, key)) {\r\n const prop = obj[key];\r\n if (typeof prop === 'object' && !Object.isFrozen(prop)) {\r\n stack.push(prop);\r\n }\r\n }\r\n }\r\n }\r\n return obj;\r\n}\r\nconst _hasOwnProperty = Object.prototype.hasOwnProperty;\r\nexport function cloneAndChange(obj, changer) {\r\n return _cloneAndChange(obj, changer, new Set());\r\n}\r\nfunction _cloneAndChange(obj, changer, seen) {\r\n if (isUndefinedOrNull(obj)) {\r\n return obj;\r\n }\r\n const changed = changer(obj);\r\n if (typeof changed !== 'undefined') {\r\n return changed;\r\n }\r\n if (isArray(obj)) {\r\n const r1 = [];\r\n for (const e of obj) {\r\n r1.push(_cloneAndChange(e, changer, seen));\r\n }\r\n return r1;\r\n }\r\n if (isObject(obj)) {\r\n if (seen.has(obj)) {\r\n throw new Error('Cannot clone recursive data-structure');\r\n }\r\n seen.add(obj);\r\n const r2 = {};\r\n for (let i2 in obj) {\r\n if (_hasOwnProperty.call(obj, i2)) {\r\n r2[i2] = _cloneAndChange(obj[i2], changer, seen);\r\n }\r\n }\r\n seen.delete(obj);\r\n return r2;\r\n }\r\n return obj;\r\n}\r\n/**\r\n * Copies all properties of source into destination. The optional parameter \"overwrite\" allows to control\r\n * if existing properties on the destination should be overwritten or not. Defaults to true (overwrite).\r\n */\r\nexport function mixin(destination, source, overwrite = true) {\r\n if (!isObject(destination)) {\r\n return source;\r\n }\r\n if (isObject(source)) {\r\n Object.keys(source).forEach(key => {\r\n if (key in destination) {\r\n if (overwrite) {\r\n if (isObject(destination[key]) && isObject(source[key])) {\r\n mixin(destination[key], source[key], overwrite);\r\n }\r\n else {\r\n destination[key] = source[key];\r\n }\r\n }\r\n }\r\n else {\r\n destination[key] = source[key];\r\n }\r\n });\r\n }\r\n return destination;\r\n}\r\nexport function equals(one, other) {\r\n if (one === other) {\r\n return true;\r\n }\r\n if (one === null || one === undefined || other === null || other === undefined) {\r\n return false;\r\n }\r\n if (typeof one !== typeof other) {\r\n return false;\r\n }\r\n if (typeof one !== 'object') {\r\n return false;\r\n }\r\n if ((Array.isArray(one)) !== (Array.isArray(other))) {\r\n return false;\r\n }\r\n let i;\r\n let key;\r\n if (Array.isArray(one)) {\r\n if (one.length !== other.length) {\r\n return false;\r\n }\r\n for (i = 0; i < one.length; i++) {\r\n if (!equals(one[i], other[i])) {\r\n return false;\r\n }\r\n }\r\n }\r\n else {\r\n const oneKeys = [];\r\n for (key in one) {\r\n oneKeys.push(key);\r\n }\r\n oneKeys.sort();\r\n const otherKeys = [];\r\n for (key in other) {\r\n otherKeys.push(key);\r\n }\r\n otherKeys.sort();\r\n if (!equals(oneKeys, otherKeys)) {\r\n return false;\r\n }\r\n for (i = 0; i < oneKeys.length; i++) {\r\n if (!equals(one[oneKeys[i]], other[oneKeys[i]])) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n}\r\nexport function getOrDefault(obj, fn, defaultValue) {\r\n const result = fn(obj);\r\n return typeof result === 'undefined' ? defaultValue : result;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as assert from '../../../base/common/assert.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport * as objects from '../../../base/common/objects.js';\r\nimport { Range } from '../../common/core/range.js';\r\nconst defaultOptions = {\r\n followsCaret: true,\r\n ignoreCharChanges: true,\r\n alwaysRevealFirst: true\r\n};\r\n/**\r\n * Create a new diff navigator for the provided diff editor.\r\n */\r\nexport class DiffNavigator extends Disposable {\r\n constructor(editor, options = {}) {\r\n super();\r\n this._onDidUpdate = this._register(new Emitter());\r\n this._editor = editor;\r\n this._options = objects.mixin(options, defaultOptions, false);\r\n this.disposed = false;\r\n this.nextIdx = -1;\r\n this.ranges = [];\r\n this.ignoreSelectionChange = false;\r\n this.revealFirst = Boolean(this._options.alwaysRevealFirst);\r\n // hook up to diff editor for diff, disposal, and caret move\r\n this._register(this._editor.onDidDispose(() => this.dispose()));\r\n this._register(this._editor.onDidUpdateDiff(() => this._onDiffUpdated()));\r\n if (this._options.followsCaret) {\r\n this._register(this._editor.getModifiedEditor().onDidChangeCursorPosition((e) => {\r\n if (this.ignoreSelectionChange) {\r\n return;\r\n }\r\n this.nextIdx = -1;\r\n }));\r\n }\r\n if (this._options.alwaysRevealFirst) {\r\n this._register(this._editor.getModifiedEditor().onDidChangeModel((e) => {\r\n this.revealFirst = true;\r\n }));\r\n }\r\n // init things\r\n this._init();\r\n }\r\n _init() {\r\n let changes = this._editor.getLineChanges();\r\n if (!changes) {\r\n return;\r\n }\r\n }\r\n _onDiffUpdated() {\r\n this._init();\r\n this._compute(this._editor.getLineChanges());\r\n if (this.revealFirst) {\r\n // Only reveal first on first non-null changes\r\n if (this._editor.getLineChanges() !== null) {\r\n this.revealFirst = false;\r\n this.nextIdx = -1;\r\n this.next(1 /* Immediate */);\r\n }\r\n }\r\n }\r\n _compute(lineChanges) {\r\n // new ranges\r\n this.ranges = [];\r\n if (lineChanges) {\r\n // create ranges from changes\r\n lineChanges.forEach((lineChange) => {\r\n if (!this._options.ignoreCharChanges && lineChange.charChanges) {\r\n lineChange.charChanges.forEach((charChange) => {\r\n this.ranges.push({\r\n rhs: true,\r\n range: new Range(charChange.modifiedStartLineNumber, charChange.modifiedStartColumn, charChange.modifiedEndLineNumber, charChange.modifiedEndColumn)\r\n });\r\n });\r\n }\r\n else {\r\n this.ranges.push({\r\n rhs: true,\r\n range: new Range(lineChange.modifiedStartLineNumber, 1, lineChange.modifiedStartLineNumber, 1)\r\n });\r\n }\r\n });\r\n }\r\n // sort\r\n this.ranges.sort((left, right) => {\r\n if (left.range.getStartPosition().isBeforeOrEqual(right.range.getStartPosition())) {\r\n return -1;\r\n }\r\n else if (right.range.getStartPosition().isBeforeOrEqual(left.range.getStartPosition())) {\r\n return 1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n });\r\n this._onDidUpdate.fire(this);\r\n }\r\n _initIdx(fwd) {\r\n let found = false;\r\n let position = this._editor.getPosition();\r\n if (!position) {\r\n this.nextIdx = 0;\r\n return;\r\n }\r\n for (let i = 0, len = this.ranges.length; i < len && !found; i++) {\r\n let range = this.ranges[i].range;\r\n if (position.isBeforeOrEqual(range.getStartPosition())) {\r\n this.nextIdx = i + (fwd ? 0 : -1);\r\n found = true;\r\n }\r\n }\r\n if (!found) {\r\n // after the last change\r\n this.nextIdx = fwd ? 0 : this.ranges.length - 1;\r\n }\r\n if (this.nextIdx < 0) {\r\n this.nextIdx = this.ranges.length - 1;\r\n }\r\n }\r\n _move(fwd, scrollType) {\r\n assert.ok(!this.disposed, 'Illegal State - diff navigator has been disposed');\r\n if (!this.canNavigate()) {\r\n return;\r\n }\r\n if (this.nextIdx === -1) {\r\n this._initIdx(fwd);\r\n }\r\n else if (fwd) {\r\n this.nextIdx += 1;\r\n if (this.nextIdx >= this.ranges.length) {\r\n this.nextIdx = 0;\r\n }\r\n }\r\n else {\r\n this.nextIdx -= 1;\r\n if (this.nextIdx < 0) {\r\n this.nextIdx = this.ranges.length - 1;\r\n }\r\n }\r\n let info = this.ranges[this.nextIdx];\r\n this.ignoreSelectionChange = true;\r\n try {\r\n let pos = info.range.getStartPosition();\r\n this._editor.setPosition(pos);\r\n this._editor.revealPositionInCenter(pos, scrollType);\r\n }\r\n finally {\r\n this.ignoreSelectionChange = false;\r\n }\r\n }\r\n canNavigate() {\r\n return this.ranges && this.ranges.length > 0;\r\n }\r\n next(scrollType = 0 /* Smooth */) {\r\n this._move(true, scrollType);\r\n }\r\n previous(scrollType = 0 /* Smooth */) {\r\n this._move(false, scrollType);\r\n }\r\n dispose() {\r\n super.dispose();\r\n this.ranges = [];\r\n this.disposed = true;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../../../base/common/event.js';\r\nexport const EditorZoom = new class {\r\n constructor() {\r\n this._zoomLevel = 0;\r\n this._onDidChangeZoomLevel = new Emitter();\r\n this.onDidChangeZoomLevel = this._onDidChangeZoomLevel.event;\r\n }\r\n getZoomLevel() {\r\n return this._zoomLevel;\r\n }\r\n setZoomLevel(zoomLevel) {\r\n zoomLevel = Math.min(Math.max(-5, zoomLevel), 20);\r\n if (this._zoomLevel === zoomLevel) {\r\n return;\r\n }\r\n this._zoomLevel = zoomLevel;\r\n this._onDidChangeZoomLevel.fire(this._zoomLevel);\r\n }\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as platform from '../../../base/common/platform.js';\r\nimport { EditorZoom } from './editorZoom.js';\r\n/**\r\n * Determined from empirical observations.\r\n * @internal\r\n */\r\nconst GOLDEN_LINE_HEIGHT_RATIO = platform.isMacintosh ? 1.5 : 1.35;\r\n/**\r\n * @internal\r\n */\r\nconst MINIMUM_LINE_HEIGHT = 8;\r\nexport class BareFontInfo {\r\n /**\r\n * @internal\r\n */\r\n constructor(opts) {\r\n this._bareFontInfoBrand = undefined;\r\n this.zoomLevel = opts.zoomLevel;\r\n this.pixelRatio = opts.pixelRatio;\r\n this.fontFamily = String(opts.fontFamily);\r\n this.fontWeight = String(opts.fontWeight);\r\n this.fontSize = opts.fontSize;\r\n this.fontFeatureSettings = opts.fontFeatureSettings;\r\n this.lineHeight = opts.lineHeight | 0;\r\n this.letterSpacing = opts.letterSpacing;\r\n }\r\n /**\r\n * @internal\r\n */\r\n static createFromValidatedSettings(options, zoomLevel, pixelRatio, ignoreEditorZoom) {\r\n const fontFamily = options.get(40 /* fontFamily */);\r\n const fontWeight = options.get(44 /* fontWeight */);\r\n const fontSize = options.get(43 /* fontSize */);\r\n const fontFeatureSettings = options.get(42 /* fontLigatures */);\r\n const lineHeight = options.get(57 /* lineHeight */);\r\n const letterSpacing = options.get(54 /* letterSpacing */);\r\n return BareFontInfo._create(fontFamily, fontWeight, fontSize, fontFeatureSettings, lineHeight, letterSpacing, zoomLevel, pixelRatio, ignoreEditorZoom);\r\n }\r\n /**\r\n * @internal\r\n */\r\n static _create(fontFamily, fontWeight, fontSize, fontFeatureSettings, lineHeight, letterSpacing, zoomLevel, pixelRatio, ignoreEditorZoom) {\r\n if (lineHeight === 0) {\r\n lineHeight = GOLDEN_LINE_HEIGHT_RATIO * fontSize;\r\n }\r\n else if (lineHeight < MINIMUM_LINE_HEIGHT) {\r\n // Values too small to be line heights in pixels are probably in ems. Accept them gracefully.\r\n lineHeight = lineHeight * fontSize;\r\n }\r\n // Enforce integer, minimum constraints\r\n lineHeight = Math.round(lineHeight);\r\n if (lineHeight < MINIMUM_LINE_HEIGHT) {\r\n lineHeight = MINIMUM_LINE_HEIGHT;\r\n }\r\n const editorZoomLevelMultiplier = 1 + (ignoreEditorZoom ? 0 : EditorZoom.getZoomLevel() * 0.1);\r\n fontSize *= editorZoomLevelMultiplier;\r\n lineHeight *= editorZoomLevelMultiplier;\r\n return new BareFontInfo({\r\n zoomLevel: zoomLevel,\r\n pixelRatio: pixelRatio,\r\n fontFamily: fontFamily,\r\n fontWeight: fontWeight,\r\n fontSize: fontSize,\r\n fontFeatureSettings: fontFeatureSettings,\r\n lineHeight: lineHeight,\r\n letterSpacing: letterSpacing\r\n });\r\n }\r\n /**\r\n * @internal\r\n */\r\n getId() {\r\n return this.zoomLevel + '-' + this.pixelRatio + '-' + this.fontFamily + '-' + this.fontWeight + '-' + this.fontSize + '-' + this.fontFeatureSettings + '-' + this.lineHeight + '-' + this.letterSpacing;\r\n }\r\n /**\r\n * @internal\r\n */\r\n getMassagedFontFamily() {\r\n if (/[,\"']/.test(this.fontFamily)) {\r\n // Looks like the font family might be already escaped\r\n return this.fontFamily;\r\n }\r\n if (/[+ ]/.test(this.fontFamily)) {\r\n // Wrap a font family using + or with quotes\r\n return `\"${this.fontFamily}\"`;\r\n }\r\n return this.fontFamily;\r\n }\r\n}\r\n// change this whenever `FontInfo` members are changed\r\nexport const SERIALIZED_FONT_INFO_VERSION = 1;\r\nexport class FontInfo extends BareFontInfo {\r\n /**\r\n * @internal\r\n */\r\n constructor(opts, isTrusted) {\r\n super(opts);\r\n this._editorStylingBrand = undefined;\r\n this.version = SERIALIZED_FONT_INFO_VERSION;\r\n this.isTrusted = isTrusted;\r\n this.isMonospace = opts.isMonospace;\r\n this.typicalHalfwidthCharacterWidth = opts.typicalHalfwidthCharacterWidth;\r\n this.typicalFullwidthCharacterWidth = opts.typicalFullwidthCharacterWidth;\r\n this.canUseHalfwidthRightwardsArrow = opts.canUseHalfwidthRightwardsArrow;\r\n this.spaceWidth = opts.spaceWidth;\r\n this.middotWidth = opts.middotWidth;\r\n this.wsmiddotWidth = opts.wsmiddotWidth;\r\n this.maxDigitWidth = opts.maxDigitWidth;\r\n }\r\n /**\r\n * @internal\r\n */\r\n equals(other) {\r\n return (this.fontFamily === other.fontFamily\r\n && this.fontWeight === other.fontWeight\r\n && this.fontSize === other.fontSize\r\n && this.fontFeatureSettings === other.fontFeatureSettings\r\n && this.lineHeight === other.lineHeight\r\n && this.letterSpacing === other.letterSpacing\r\n && this.typicalHalfwidthCharacterWidth === other.typicalHalfwidthCharacterWidth\r\n && this.typicalFullwidthCharacterWidth === other.typicalFullwidthCharacterWidth\r\n && this.canUseHalfwidthRightwardsArrow === other.canUseHalfwidthRightwardsArrow\r\n && this.spaceWidth === other.spaceWidth\r\n && this.middotWidth === other.middotWidth\r\n && this.wsmiddotWidth === other.wsmiddotWidth\r\n && this.maxDigitWidth === other.maxDigitWidth);\r\n }\r\n}\r\n","/**\r\n * @internal\r\n */\r\nexport function isThemeColor(o) {\r\n return o && typeof o.id === 'string';\r\n}\r\n/**\r\n * The type of the `IEditor`.\r\n */\r\nexport const EditorType = {\r\n ICodeEditor: 'vs.editor.ICodeEditor',\r\n IDiffEditor: 'vs.editor.IDiffEditor'\r\n};\r\n","/**\r\n * Vertical Lane in the overview ruler of the editor.\r\n */\r\nexport var OverviewRulerLane;\r\n(function (OverviewRulerLane) {\r\n OverviewRulerLane[OverviewRulerLane[\"Left\"] = 1] = \"Left\";\r\n OverviewRulerLane[OverviewRulerLane[\"Center\"] = 2] = \"Center\";\r\n OverviewRulerLane[OverviewRulerLane[\"Right\"] = 4] = \"Right\";\r\n OverviewRulerLane[OverviewRulerLane[\"Full\"] = 7] = \"Full\";\r\n})(OverviewRulerLane || (OverviewRulerLane = {}));\r\n/**\r\n * Position in the minimap to render the decoration.\r\n */\r\nexport var MinimapPosition;\r\n(function (MinimapPosition) {\r\n MinimapPosition[MinimapPosition[\"Inline\"] = 1] = \"Inline\";\r\n MinimapPosition[MinimapPosition[\"Gutter\"] = 2] = \"Gutter\";\r\n})(MinimapPosition || (MinimapPosition = {}));\r\nexport class TextModelResolvedOptions {\r\n /**\r\n * @internal\r\n */\r\n constructor(src) {\r\n this._textModelResolvedOptionsBrand = undefined;\r\n this.tabSize = Math.max(1, src.tabSize | 0);\r\n this.indentSize = src.tabSize | 0;\r\n this.insertSpaces = Boolean(src.insertSpaces);\r\n this.defaultEOL = src.defaultEOL | 0;\r\n this.trimAutoWhitespace = Boolean(src.trimAutoWhitespace);\r\n }\r\n /**\r\n * @internal\r\n */\r\n equals(other) {\r\n return (this.tabSize === other.tabSize\r\n && this.indentSize === other.indentSize\r\n && this.insertSpaces === other.insertSpaces\r\n && this.defaultEOL === other.defaultEOL\r\n && this.trimAutoWhitespace === other.trimAutoWhitespace);\r\n }\r\n /**\r\n * @internal\r\n */\r\n createChangeEvent(newOpts) {\r\n return {\r\n tabSize: this.tabSize !== newOpts.tabSize,\r\n indentSize: this.indentSize !== newOpts.indentSize,\r\n insertSpaces: this.insertSpaces !== newOpts.insertSpaces,\r\n trimAutoWhitespace: this.trimAutoWhitespace !== newOpts.trimAutoWhitespace,\r\n };\r\n }\r\n}\r\nexport class FindMatch {\r\n /**\r\n * @internal\r\n */\r\n constructor(range, matches) {\r\n this._findMatchBrand = undefined;\r\n this.range = range;\r\n this.matches = matches;\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport class ValidAnnotatedEditOperation {\r\n constructor(identifier, range, text, forceMoveMarkers, isAutoWhitespaceEdit, _isTracked) {\r\n this.identifier = identifier;\r\n this.range = range;\r\n this.text = text;\r\n this.forceMoveMarkers = forceMoveMarkers;\r\n this.isAutoWhitespaceEdit = isAutoWhitespaceEdit;\r\n this._isTracked = _isTracked;\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport class ApplyEditsResult {\r\n constructor(reverseEdits, changes, trimAutoWhitespaceLineNumbers) {\r\n this.reverseEdits = reverseEdits;\r\n this.changes = changes;\r\n this.trimAutoWhitespaceLineNumbers = trimAutoWhitespaceLineNumbers;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from './strings.js';\r\n/**\r\n * Return a hash value for an object.\r\n */\r\nexport function hash(obj) {\r\n return doHash(obj, 0);\r\n}\r\nexport function doHash(obj, hashVal) {\r\n switch (typeof obj) {\r\n case 'object':\r\n if (obj === null) {\r\n return numberHash(349, hashVal);\r\n }\r\n else if (Array.isArray(obj)) {\r\n return arrayHash(obj, hashVal);\r\n }\r\n return objectHash(obj, hashVal);\r\n case 'string':\r\n return stringHash(obj, hashVal);\r\n case 'boolean':\r\n return booleanHash(obj, hashVal);\r\n case 'number':\r\n return numberHash(obj, hashVal);\r\n case 'undefined':\r\n return numberHash(937, hashVal);\r\n default:\r\n return numberHash(617, hashVal);\r\n }\r\n}\r\nfunction numberHash(val, initialHashVal) {\r\n return (((initialHashVal << 5) - initialHashVal) + val) | 0; // hashVal * 31 + ch, keep as int32\r\n}\r\nfunction booleanHash(b, initialHashVal) {\r\n return numberHash(b ? 433 : 863, initialHashVal);\r\n}\r\nexport function stringHash(s, hashVal) {\r\n hashVal = numberHash(149417, hashVal);\r\n for (let i = 0, length = s.length; i < length; i++) {\r\n hashVal = numberHash(s.charCodeAt(i), hashVal);\r\n }\r\n return hashVal;\r\n}\r\nfunction arrayHash(arr, initialHashVal) {\r\n initialHashVal = numberHash(104579, initialHashVal);\r\n return arr.reduce((hashVal, item) => doHash(item, hashVal), initialHashVal);\r\n}\r\nfunction objectHash(obj, initialHashVal) {\r\n initialHashVal = numberHash(181387, initialHashVal);\r\n return Object.keys(obj).sort().reduce((hashVal, key) => {\r\n hashVal = stringHash(key, hashVal);\r\n return doHash(obj[key], hashVal);\r\n }, initialHashVal);\r\n}\r\nfunction leftRotate(value, bits, totalBits = 32) {\r\n // delta + bits = totalBits\r\n const delta = totalBits - bits;\r\n // All ones, expect `delta` zeros aligned to the right\r\n const mask = ~((1 << delta) - 1);\r\n // Join (value left-shifted `bits` bits) with (masked value right-shifted `delta` bits)\r\n return ((value << bits) | ((mask & value) >>> delta)) >>> 0;\r\n}\r\nfunction fill(dest, index = 0, count = dest.byteLength, value = 0) {\r\n for (let i = 0; i < count; i++) {\r\n dest[index + i] = value;\r\n }\r\n}\r\nfunction leftPad(value, length, char = '0') {\r\n while (value.length < length) {\r\n value = char + value;\r\n }\r\n return value;\r\n}\r\nexport function toHexString(bufferOrValue, bitsize = 32) {\r\n if (bufferOrValue instanceof ArrayBuffer) {\r\n return Array.from(new Uint8Array(bufferOrValue)).map(b => b.toString(16).padStart(2, '0')).join('');\r\n }\r\n return leftPad((bufferOrValue >>> 0).toString(16), bitsize / 4);\r\n}\r\n/**\r\n * A SHA1 implementation that works with strings and does not allocate.\r\n */\r\nexport class StringSHA1 {\r\n constructor() {\r\n this._h0 = 0x67452301;\r\n this._h1 = 0xEFCDAB89;\r\n this._h2 = 0x98BADCFE;\r\n this._h3 = 0x10325476;\r\n this._h4 = 0xC3D2E1F0;\r\n this._buff = new Uint8Array(64 /* BLOCK_SIZE */ + 3 /* to fit any utf-8 */);\r\n this._buffDV = new DataView(this._buff.buffer);\r\n this._buffLen = 0;\r\n this._totalLen = 0;\r\n this._leftoverHighSurrogate = 0;\r\n this._finished = false;\r\n }\r\n update(str) {\r\n const strLen = str.length;\r\n if (strLen === 0) {\r\n return;\r\n }\r\n const buff = this._buff;\r\n let buffLen = this._buffLen;\r\n let leftoverHighSurrogate = this._leftoverHighSurrogate;\r\n let charCode;\r\n let offset;\r\n if (leftoverHighSurrogate !== 0) {\r\n charCode = leftoverHighSurrogate;\r\n offset = -1;\r\n leftoverHighSurrogate = 0;\r\n }\r\n else {\r\n charCode = str.charCodeAt(0);\r\n offset = 0;\r\n }\r\n while (true) {\r\n let codePoint = charCode;\r\n if (strings.isHighSurrogate(charCode)) {\r\n if (offset + 1 < strLen) {\r\n const nextCharCode = str.charCodeAt(offset + 1);\r\n if (strings.isLowSurrogate(nextCharCode)) {\r\n offset++;\r\n codePoint = strings.computeCodePoint(charCode, nextCharCode);\r\n }\r\n else {\r\n // illegal => unicode replacement character\r\n codePoint = 65533 /* UNICODE_REPLACEMENT */;\r\n }\r\n }\r\n else {\r\n // last character is a surrogate pair\r\n leftoverHighSurrogate = charCode;\r\n break;\r\n }\r\n }\r\n else if (strings.isLowSurrogate(charCode)) {\r\n // illegal => unicode replacement character\r\n codePoint = 65533 /* UNICODE_REPLACEMENT */;\r\n }\r\n buffLen = this._push(buff, buffLen, codePoint);\r\n offset++;\r\n if (offset < strLen) {\r\n charCode = str.charCodeAt(offset);\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n this._buffLen = buffLen;\r\n this._leftoverHighSurrogate = leftoverHighSurrogate;\r\n }\r\n _push(buff, buffLen, codePoint) {\r\n if (codePoint < 0x0080) {\r\n buff[buffLen++] = codePoint;\r\n }\r\n else if (codePoint < 0x0800) {\r\n buff[buffLen++] = 0b11000000 | ((codePoint & 0b00000000000000000000011111000000) >>> 6);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000000000111111) >>> 0);\r\n }\r\n else if (codePoint < 0x10000) {\r\n buff[buffLen++] = 0b11100000 | ((codePoint & 0b00000000000000001111000000000000) >>> 12);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000111111000000) >>> 6);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000000000111111) >>> 0);\r\n }\r\n else {\r\n buff[buffLen++] = 0b11110000 | ((codePoint & 0b00000000000111000000000000000000) >>> 18);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000111111000000000000) >>> 12);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000111111000000) >>> 6);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000000000111111) >>> 0);\r\n }\r\n if (buffLen >= 64 /* BLOCK_SIZE */) {\r\n this._step();\r\n buffLen -= 64 /* BLOCK_SIZE */;\r\n this._totalLen += 64 /* BLOCK_SIZE */;\r\n // take last 3 in case of UTF8 overflow\r\n buff[0] = buff[64 /* BLOCK_SIZE */ + 0];\r\n buff[1] = buff[64 /* BLOCK_SIZE */ + 1];\r\n buff[2] = buff[64 /* BLOCK_SIZE */ + 2];\r\n }\r\n return buffLen;\r\n }\r\n digest() {\r\n if (!this._finished) {\r\n this._finished = true;\r\n if (this._leftoverHighSurrogate) {\r\n // illegal => unicode replacement character\r\n this._leftoverHighSurrogate = 0;\r\n this._buffLen = this._push(this._buff, this._buffLen, 65533 /* UNICODE_REPLACEMENT */);\r\n }\r\n this._totalLen += this._buffLen;\r\n this._wrapUp();\r\n }\r\n return toHexString(this._h0) + toHexString(this._h1) + toHexString(this._h2) + toHexString(this._h3) + toHexString(this._h4);\r\n }\r\n _wrapUp() {\r\n this._buff[this._buffLen++] = 0x80;\r\n fill(this._buff, this._buffLen);\r\n if (this._buffLen > 56) {\r\n this._step();\r\n fill(this._buff);\r\n }\r\n // this will fit because the mantissa can cover up to 52 bits\r\n const ml = 8 * this._totalLen;\r\n this._buffDV.setUint32(56, Math.floor(ml / 4294967296), false);\r\n this._buffDV.setUint32(60, ml % 4294967296, false);\r\n this._step();\r\n }\r\n _step() {\r\n const bigBlock32 = StringSHA1._bigBlock32;\r\n const data = this._buffDV;\r\n for (let j = 0; j < 64 /* 16*4 */; j += 4) {\r\n bigBlock32.setUint32(j, data.getUint32(j, false), false);\r\n }\r\n for (let j = 64; j < 320 /* 80*4 */; j += 4) {\r\n bigBlock32.setUint32(j, leftRotate((bigBlock32.getUint32(j - 12, false) ^ bigBlock32.getUint32(j - 32, false) ^ bigBlock32.getUint32(j - 56, false) ^ bigBlock32.getUint32(j - 64, false)), 1), false);\r\n }\r\n let a = this._h0;\r\n let b = this._h1;\r\n let c = this._h2;\r\n let d = this._h3;\r\n let e = this._h4;\r\n let f, k;\r\n let temp;\r\n for (let j = 0; j < 80; j++) {\r\n if (j < 20) {\r\n f = (b & c) | ((~b) & d);\r\n k = 0x5A827999;\r\n }\r\n else if (j < 40) {\r\n f = b ^ c ^ d;\r\n k = 0x6ED9EBA1;\r\n }\r\n else if (j < 60) {\r\n f = (b & c) | (b & d) | (c & d);\r\n k = 0x8F1BBCDC;\r\n }\r\n else {\r\n f = b ^ c ^ d;\r\n k = 0xCA62C1D6;\r\n }\r\n temp = (leftRotate(a, 5) + f + e + k + bigBlock32.getUint32(j * 4, false)) & 0xffffffff;\r\n e = d;\r\n d = c;\r\n c = leftRotate(b, 30);\r\n b = a;\r\n a = temp;\r\n }\r\n this._h0 = (this._h0 + a) & 0xffffffff;\r\n this._h1 = (this._h1 + b) & 0xffffffff;\r\n this._h2 = (this._h2 + c) & 0xffffffff;\r\n this._h3 = (this._h3 + d) & 0xffffffff;\r\n this._h4 = (this._h4 + e) & 0xffffffff;\r\n }\r\n}\r\nStringSHA1._bigBlock32 = new DataView(new ArrayBuffer(320)); // 80 * 4 = 320\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport function clamp(value, min, max) {\r\n return Math.min(Math.max(value, min), max);\r\n}\r\nexport class MovingAverage {\r\n constructor() {\r\n this._n = 1;\r\n this._val = 0;\r\n }\r\n update(value) {\r\n this._val = this._val + (value - this._val) / this._n;\r\n this._n += 1;\r\n return this;\r\n }\r\n get value() {\r\n return this._val;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from './strings.js';\r\nimport * as extpath from './extpath.js';\r\nimport * as paths from './path.js';\r\nimport { LRUCache } from './map.js';\r\nimport { isThenable } from './async.js';\r\nconst GLOBSTAR = '**';\r\nconst GLOB_SPLIT = '/';\r\nconst PATH_REGEX = '[/\\\\\\\\]'; // any slash or backslash\r\nconst NO_PATH_REGEX = '[^/\\\\\\\\]'; // any non-slash and non-backslash\r\nconst ALL_FORWARD_SLASHES = /\\//g;\r\nfunction starsToRegExp(starCount) {\r\n switch (starCount) {\r\n case 0:\r\n return '';\r\n case 1:\r\n return `${NO_PATH_REGEX}*?`; // 1 star matches any number of characters except path separator (/ and \\) - non greedy (?)\r\n default:\r\n // Matches: (Path Sep OR Path Val followed by Path Sep OR Path Sep followed by Path Val) 0-many times\r\n // Group is non capturing because we don't need to capture at all (?:...)\r\n // Overall we use non-greedy matching because it could be that we match too much\r\n return `(?:${PATH_REGEX}|${NO_PATH_REGEX}+${PATH_REGEX}|${PATH_REGEX}${NO_PATH_REGEX}+)*?`;\r\n }\r\n}\r\nexport function splitGlobAware(pattern, splitChar) {\r\n if (!pattern) {\r\n return [];\r\n }\r\n const segments = [];\r\n let inBraces = false;\r\n let inBrackets = false;\r\n let curVal = '';\r\n for (const char of pattern) {\r\n switch (char) {\r\n case splitChar:\r\n if (!inBraces && !inBrackets) {\r\n segments.push(curVal);\r\n curVal = '';\r\n continue;\r\n }\r\n break;\r\n case '{':\r\n inBraces = true;\r\n break;\r\n case '}':\r\n inBraces = false;\r\n break;\r\n case '[':\r\n inBrackets = true;\r\n break;\r\n case ']':\r\n inBrackets = false;\r\n break;\r\n }\r\n curVal += char;\r\n }\r\n // Tail\r\n if (curVal) {\r\n segments.push(curVal);\r\n }\r\n return segments;\r\n}\r\nfunction parseRegExp(pattern) {\r\n if (!pattern) {\r\n return '';\r\n }\r\n let regEx = '';\r\n // Split up into segments for each slash found\r\n const segments = splitGlobAware(pattern, GLOB_SPLIT);\r\n // Special case where we only have globstars\r\n if (segments.every(s => s === GLOBSTAR)) {\r\n regEx = '.*';\r\n }\r\n // Build regex over segments\r\n else {\r\n let previousSegmentWasGlobStar = false;\r\n segments.forEach((segment, index) => {\r\n // Globstar is special\r\n if (segment === GLOBSTAR) {\r\n // if we have more than one globstar after another, just ignore it\r\n if (!previousSegmentWasGlobStar) {\r\n regEx += starsToRegExp(2);\r\n previousSegmentWasGlobStar = true;\r\n }\r\n return;\r\n }\r\n // States\r\n let inBraces = false;\r\n let braceVal = '';\r\n let inBrackets = false;\r\n let bracketVal = '';\r\n for (const char of segment) {\r\n // Support brace expansion\r\n if (char !== '}' && inBraces) {\r\n braceVal += char;\r\n continue;\r\n }\r\n // Support brackets\r\n if (inBrackets && (char !== ']' || !bracketVal) /* ] is literally only allowed as first character in brackets to match it */) {\r\n let res;\r\n // range operator\r\n if (char === '-') {\r\n res = char;\r\n }\r\n // negation operator (only valid on first index in bracket)\r\n else if ((char === '^' || char === '!') && !bracketVal) {\r\n res = '^';\r\n }\r\n // glob split matching is not allowed within character ranges\r\n // see http://man7.org/linux/man-pages/man7/glob.7.html\r\n else if (char === GLOB_SPLIT) {\r\n res = '';\r\n }\r\n // anything else gets escaped\r\n else {\r\n res = strings.escapeRegExpCharacters(char);\r\n }\r\n bracketVal += res;\r\n continue;\r\n }\r\n switch (char) {\r\n case '{':\r\n inBraces = true;\r\n continue;\r\n case '[':\r\n inBrackets = true;\r\n continue;\r\n case '}':\r\n const choices = splitGlobAware(braceVal, ',');\r\n // Converts {foo,bar} => [foo|bar]\r\n const braceRegExp = `(?:${choices.map(c => parseRegExp(c)).join('|')})`;\r\n regEx += braceRegExp;\r\n inBraces = false;\r\n braceVal = '';\r\n break;\r\n case ']':\r\n regEx += ('[' + bracketVal + ']');\r\n inBrackets = false;\r\n bracketVal = '';\r\n break;\r\n case '?':\r\n regEx += NO_PATH_REGEX; // 1 ? matches any single character except path separator (/ and \\)\r\n continue;\r\n case '*':\r\n regEx += starsToRegExp(1);\r\n continue;\r\n default:\r\n regEx += strings.escapeRegExpCharacters(char);\r\n }\r\n }\r\n // Tail: Add the slash we had split on if there is more to come and the remaining pattern is not a globstar\r\n // For example if pattern: some/**/*.js we want the \"/\" after some to be included in the RegEx to prevent\r\n // a folder called \"something\" to match as well.\r\n // However, if pattern: some/**, we tolerate that we also match on \"something\" because our globstar behaviour\r\n // is to match 0-N segments.\r\n if (index < segments.length - 1 && (segments[index + 1] !== GLOBSTAR || index + 2 < segments.length)) {\r\n regEx += PATH_REGEX;\r\n }\r\n // reset state\r\n previousSegmentWasGlobStar = false;\r\n });\r\n }\r\n return regEx;\r\n}\r\n// regexes to check for trival glob patterns that just check for String#endsWith\r\nconst T1 = /^\\*\\*\\/\\*\\.[\\w\\.-]+$/; // **/*.something\r\nconst T2 = /^\\*\\*\\/([\\w\\.-]+)\\/?$/; // **/something\r\nconst T3 = /^{\\*\\*\\/[\\*\\.]?[\\w\\.-]+\\/?(,\\*\\*\\/[\\*\\.]?[\\w\\.-]+\\/?)*}$/; // {**/*.something,**/*.else} or {**/package.json,**/project.json}\r\nconst T3_2 = /^{\\*\\*\\/[\\*\\.]?[\\w\\.-]+(\\/(\\*\\*)?)?(,\\*\\*\\/[\\*\\.]?[\\w\\.-]+(\\/(\\*\\*)?)?)*}$/; // Like T3, with optional trailing /**\r\nconst T4 = /^\\*\\*((\\/[\\w\\.-]+)+)\\/?$/; // **/something/else\r\nconst T5 = /^([\\w\\.-]+(\\/[\\w\\.-]+)*)\\/?$/; // something/else\r\nconst CACHE = new LRUCache(10000); // bounded to 10000 elements\r\nconst FALSE = function () {\r\n return false;\r\n};\r\nconst NULL = function () {\r\n return null;\r\n};\r\nfunction parsePattern(arg1, options) {\r\n if (!arg1) {\r\n return NULL;\r\n }\r\n // Handle IRelativePattern\r\n let pattern;\r\n if (typeof arg1 !== 'string') {\r\n pattern = arg1.pattern;\r\n }\r\n else {\r\n pattern = arg1;\r\n }\r\n // Whitespace trimming\r\n pattern = pattern.trim();\r\n // Check cache\r\n const patternKey = `${pattern}_${!!options.trimForExclusions}`;\r\n let parsedPattern = CACHE.get(patternKey);\r\n if (parsedPattern) {\r\n return wrapRelativePattern(parsedPattern, arg1);\r\n }\r\n // Check for Trivias\r\n let match;\r\n if (T1.test(pattern)) { // common pattern: **/*.txt just need endsWith check\r\n const base = pattern.substr(4); // '**/*'.length === 4\r\n parsedPattern = function (path, basename) {\r\n return typeof path === 'string' && path.endsWith(base) ? pattern : null;\r\n };\r\n }\r\n else if (match = T2.exec(trimForExclusions(pattern, options))) { // common pattern: **/some.txt just need basename check\r\n parsedPattern = trivia2(match[1], pattern);\r\n }\r\n else if ((options.trimForExclusions ? T3_2 : T3).test(pattern)) { // repetition of common patterns (see above) {**/*.txt,**/*.png}\r\n parsedPattern = trivia3(pattern, options);\r\n }\r\n else if (match = T4.exec(trimForExclusions(pattern, options))) { // common pattern: **/something/else just need endsWith check\r\n parsedPattern = trivia4and5(match[1].substr(1), pattern, true);\r\n }\r\n else if (match = T5.exec(trimForExclusions(pattern, options))) { // common pattern: something/else just need equals check\r\n parsedPattern = trivia4and5(match[1], pattern, false);\r\n }\r\n // Otherwise convert to pattern\r\n else {\r\n parsedPattern = toRegExp(pattern);\r\n }\r\n // Cache\r\n CACHE.set(patternKey, parsedPattern);\r\n return wrapRelativePattern(parsedPattern, arg1);\r\n}\r\nfunction wrapRelativePattern(parsedPattern, arg2) {\r\n if (typeof arg2 === 'string') {\r\n return parsedPattern;\r\n }\r\n return function (path, basename) {\r\n if (!extpath.isEqualOrParent(path, arg2.base)) {\r\n return null;\r\n }\r\n return parsedPattern(paths.relative(arg2.base, path), basename);\r\n };\r\n}\r\nfunction trimForExclusions(pattern, options) {\r\n return options.trimForExclusions && pattern.endsWith('/**') ? pattern.substr(0, pattern.length - 2) : pattern; // dropping **, tailing / is dropped later\r\n}\r\n// common pattern: **/some.txt just need basename check\r\nfunction trivia2(base, originalPattern) {\r\n const slashBase = `/${base}`;\r\n const backslashBase = `\\\\${base}`;\r\n const parsedPattern = function (path, basename) {\r\n if (typeof path !== 'string') {\r\n return null;\r\n }\r\n if (basename) {\r\n return basename === base ? originalPattern : null;\r\n }\r\n return path === base || path.endsWith(slashBase) || path.endsWith(backslashBase) ? originalPattern : null;\r\n };\r\n const basenames = [base];\r\n parsedPattern.basenames = basenames;\r\n parsedPattern.patterns = [originalPattern];\r\n parsedPattern.allBasenames = basenames;\r\n return parsedPattern;\r\n}\r\n// repetition of common patterns (see above) {**/*.txt,**/*.png}\r\nfunction trivia3(pattern, options) {\r\n const parsedPatterns = aggregateBasenameMatches(pattern.slice(1, -1).split(',')\r\n .map(pattern => parsePattern(pattern, options))\r\n .filter(pattern => pattern !== NULL), pattern);\r\n const n = parsedPatterns.length;\r\n if (!n) {\r\n return NULL;\r\n }\r\n if (n === 1) {\r\n return parsedPatterns[0];\r\n }\r\n const parsedPattern = function (path, basename) {\r\n for (let i = 0, n = parsedPatterns.length; i < n; i++) {\r\n if (parsedPatterns[i](path, basename)) {\r\n return pattern;\r\n }\r\n }\r\n return null;\r\n };\r\n const withBasenames = parsedPatterns.find(pattern => !!pattern.allBasenames);\r\n if (withBasenames) {\r\n parsedPattern.allBasenames = withBasenames.allBasenames;\r\n }\r\n const allPaths = parsedPatterns.reduce((all, current) => current.allPaths ? all.concat(current.allPaths) : all, []);\r\n if (allPaths.length) {\r\n parsedPattern.allPaths = allPaths;\r\n }\r\n return parsedPattern;\r\n}\r\n// common patterns: **/something/else just need endsWith check, something/else just needs and equals check\r\nfunction trivia4and5(targetPath, pattern, matchPathEnds) {\r\n const usingPosixSep = paths.sep === paths.posix.sep;\r\n const nativePath = usingPosixSep ? targetPath : targetPath.replace(ALL_FORWARD_SLASHES, paths.sep);\r\n const nativePathEnd = paths.sep + nativePath;\r\n const targetPathEnd = paths.posix.sep + targetPath;\r\n const parsedPattern = matchPathEnds ? function (testPath, basename) {\r\n return typeof testPath === 'string' &&\r\n ((testPath === nativePath || testPath.endsWith(nativePathEnd))\r\n || !usingPosixSep && (testPath === targetPath || testPath.endsWith(targetPathEnd)))\r\n ? pattern : null;\r\n } : function (testPath, basename) {\r\n return typeof testPath === 'string' &&\r\n (testPath === nativePath\r\n || (!usingPosixSep && testPath === targetPath))\r\n ? pattern : null;\r\n };\r\n parsedPattern.allPaths = [(matchPathEnds ? '*/' : './') + targetPath];\r\n return parsedPattern;\r\n}\r\nfunction toRegExp(pattern) {\r\n try {\r\n const regExp = new RegExp(`^${parseRegExp(pattern)}$`);\r\n return function (path) {\r\n regExp.lastIndex = 0; // reset RegExp to its initial state to reuse it!\r\n return typeof path === 'string' && regExp.test(path) ? pattern : null;\r\n };\r\n }\r\n catch (error) {\r\n return NULL;\r\n }\r\n}\r\nexport function match(arg1, path, hasSibling) {\r\n if (!arg1 || typeof path !== 'string') {\r\n return false;\r\n }\r\n return parse(arg1)(path, undefined, hasSibling);\r\n}\r\nexport function parse(arg1, options = {}) {\r\n if (!arg1) {\r\n return FALSE;\r\n }\r\n // Glob with String\r\n if (typeof arg1 === 'string' || isRelativePattern(arg1)) {\r\n const parsedPattern = parsePattern(arg1, options);\r\n if (parsedPattern === NULL) {\r\n return FALSE;\r\n }\r\n const resultPattern = function (path, basename) {\r\n return !!parsedPattern(path, basename);\r\n };\r\n if (parsedPattern.allBasenames) {\r\n resultPattern.allBasenames = parsedPattern.allBasenames;\r\n }\r\n if (parsedPattern.allPaths) {\r\n resultPattern.allPaths = parsedPattern.allPaths;\r\n }\r\n return resultPattern;\r\n }\r\n // Glob with Expression\r\n return parsedExpression(arg1, options);\r\n}\r\nexport function isRelativePattern(obj) {\r\n const rp = obj;\r\n return rp && typeof rp.base === 'string' && typeof rp.pattern === 'string';\r\n}\r\nfunction parsedExpression(expression, options) {\r\n const parsedPatterns = aggregateBasenameMatches(Object.getOwnPropertyNames(expression)\r\n .map(pattern => parseExpressionPattern(pattern, expression[pattern], options))\r\n .filter(pattern => pattern !== NULL));\r\n const n = parsedPatterns.length;\r\n if (!n) {\r\n return NULL;\r\n }\r\n if (!parsedPatterns.some(parsedPattern => !!parsedPattern.requiresSiblings)) {\r\n if (n === 1) {\r\n return parsedPatterns[0];\r\n }\r\n const resultExpression = function (path, basename) {\r\n for (let i = 0, n = parsedPatterns.length; i < n; i++) {\r\n // Pattern matches path\r\n const result = parsedPatterns[i](path, basename);\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n return null;\r\n };\r\n const withBasenames = parsedPatterns.find(pattern => !!pattern.allBasenames);\r\n if (withBasenames) {\r\n resultExpression.allBasenames = withBasenames.allBasenames;\r\n }\r\n const allPaths = parsedPatterns.reduce((all, current) => current.allPaths ? all.concat(current.allPaths) : all, []);\r\n if (allPaths.length) {\r\n resultExpression.allPaths = allPaths;\r\n }\r\n return resultExpression;\r\n }\r\n const resultExpression = function (path, basename, hasSibling) {\r\n let name = undefined;\r\n for (let i = 0, n = parsedPatterns.length; i < n; i++) {\r\n // Pattern matches path\r\n const parsedPattern = parsedPatterns[i];\r\n if (parsedPattern.requiresSiblings && hasSibling) {\r\n if (!basename) {\r\n basename = paths.basename(path);\r\n }\r\n if (!name) {\r\n name = basename.substr(0, basename.length - paths.extname(path).length);\r\n }\r\n }\r\n const result = parsedPattern(path, basename, name, hasSibling);\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n return null;\r\n };\r\n const withBasenames = parsedPatterns.find(pattern => !!pattern.allBasenames);\r\n if (withBasenames) {\r\n resultExpression.allBasenames = withBasenames.allBasenames;\r\n }\r\n const allPaths = parsedPatterns.reduce((all, current) => current.allPaths ? all.concat(current.allPaths) : all, []);\r\n if (allPaths.length) {\r\n resultExpression.allPaths = allPaths;\r\n }\r\n return resultExpression;\r\n}\r\nfunction parseExpressionPattern(pattern, value, options) {\r\n if (value === false) {\r\n return NULL; // pattern is disabled\r\n }\r\n const parsedPattern = parsePattern(pattern, options);\r\n if (parsedPattern === NULL) {\r\n return NULL;\r\n }\r\n // Expression Pattern is \r\n if (typeof value === 'boolean') {\r\n return parsedPattern;\r\n }\r\n // Expression Pattern is \r\n if (value) {\r\n const when = value.when;\r\n if (typeof when === 'string') {\r\n const result = (path, basename, name, hasSibling) => {\r\n if (!hasSibling || !parsedPattern(path, basename)) {\r\n return null;\r\n }\r\n const clausePattern = when.replace('$(basename)', name);\r\n const matched = hasSibling(clausePattern);\r\n return isThenable(matched) ?\r\n matched.then(m => m ? pattern : null) :\r\n matched ? pattern : null;\r\n };\r\n result.requiresSiblings = true;\r\n return result;\r\n }\r\n }\r\n // Expression is Anything\r\n return parsedPattern;\r\n}\r\nfunction aggregateBasenameMatches(parsedPatterns, result) {\r\n const basenamePatterns = parsedPatterns.filter(parsedPattern => !!parsedPattern.basenames);\r\n if (basenamePatterns.length < 2) {\r\n return parsedPatterns;\r\n }\r\n const basenames = basenamePatterns.reduce((all, current) => {\r\n const basenames = current.basenames;\r\n return basenames ? all.concat(basenames) : all;\r\n }, []);\r\n let patterns;\r\n if (result) {\r\n patterns = [];\r\n for (let i = 0, n = basenames.length; i < n; i++) {\r\n patterns.push(result);\r\n }\r\n }\r\n else {\r\n patterns = basenamePatterns.reduce((all, current) => {\r\n const patterns = current.patterns;\r\n return patterns ? all.concat(patterns) : all;\r\n }, []);\r\n }\r\n const aggregate = function (path, basename) {\r\n if (typeof path !== 'string') {\r\n return null;\r\n }\r\n if (!basename) {\r\n let i;\r\n for (i = path.length; i > 0; i--) {\r\n const ch = path.charCodeAt(i - 1);\r\n if (ch === 47 /* Slash */ || ch === 92 /* Backslash */) {\r\n break;\r\n }\r\n }\r\n basename = path.substr(i);\r\n }\r\n const index = basenames.indexOf(basename);\r\n return index !== -1 ? patterns[index] : null;\r\n };\r\n aggregate.basenames = basenames;\r\n aggregate.patterns = patterns;\r\n aggregate.allBasenames = basenames;\r\n const aggregatedPatterns = parsedPatterns.filter(parsedPattern => !parsedPattern.basenames);\r\n aggregatedPatterns.push(aggregate);\r\n return aggregatedPatterns;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { match as matchGlobPattern } from '../../../base/common/glob.js';\r\nimport { normalize } from '../../../base/common/path.js';\r\nexport function score(selector, candidateUri, candidateLanguage, candidateIsSynchronized) {\r\n if (Array.isArray(selector)) {\r\n // array -> take max individual value\r\n let ret = 0;\r\n for (const filter of selector) {\r\n const value = score(filter, candidateUri, candidateLanguage, candidateIsSynchronized);\r\n if (value === 10) {\r\n return value; // already at the highest\r\n }\r\n if (value > ret) {\r\n ret = value;\r\n }\r\n }\r\n return ret;\r\n }\r\n else if (typeof selector === 'string') {\r\n if (!candidateIsSynchronized) {\r\n return 0;\r\n }\r\n // short-hand notion, desugars to\r\n // 'fooLang' -> { language: 'fooLang'}\r\n // '*' -> { language: '*' }\r\n if (selector === '*') {\r\n return 5;\r\n }\r\n else if (selector === candidateLanguage) {\r\n return 10;\r\n }\r\n else {\r\n return 0;\r\n }\r\n }\r\n else if (selector) {\r\n // filter -> select accordingly, use defaults for scheme\r\n const { language, pattern, scheme, hasAccessToAllModels } = selector; // TODO: microsoft/TypeScript#42768\r\n if (!candidateIsSynchronized && !hasAccessToAllModels) {\r\n return 0;\r\n }\r\n let ret = 0;\r\n if (scheme) {\r\n if (scheme === candidateUri.scheme) {\r\n ret = 10;\r\n }\r\n else if (scheme === '*') {\r\n ret = 5;\r\n }\r\n else {\r\n return 0;\r\n }\r\n }\r\n if (language) {\r\n if (language === candidateLanguage) {\r\n ret = 10;\r\n }\r\n else if (language === '*') {\r\n ret = Math.max(ret, 5);\r\n }\r\n else {\r\n return 0;\r\n }\r\n }\r\n if (pattern) {\r\n let normalizedPattern;\r\n if (typeof pattern === 'string') {\r\n normalizedPattern = pattern;\r\n }\r\n else {\r\n // Since this pattern has a `base` property, we need\r\n // to normalize this path first before passing it on\r\n // because we will compare it against `Uri.fsPath`\r\n // which uses platform specific separators.\r\n // Refs: https://github.com/microsoft/vscode/issues/99938\r\n normalizedPattern = Object.assign(Object.assign({}, pattern), { base: normalize(pattern.base) });\r\n }\r\n if (normalizedPattern === candidateUri.fsPath || matchGlobPattern(normalizedPattern, candidateUri.fsPath)) {\r\n ret = 10;\r\n }\r\n else {\r\n return 0;\r\n }\r\n }\r\n return ret;\r\n }\r\n else {\r\n return 0;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nexport const IModelService = createDecorator('modelService');\r\nexport function shouldSynchronizeModel(model) {\r\n return (!model.isTooLargeForSyncing() && !model.isForSimpleWidget);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { hash } from '../../../base/common/hash.js';\r\nimport { toDisposable } from '../../../base/common/lifecycle.js';\r\nimport { LRUCache } from '../../../base/common/map.js';\r\nimport { MovingAverage } from '../../../base/common/numbers.js';\r\nimport { score } from './languageSelector.js';\r\nimport { shouldSynchronizeModel } from '../services/modelService.js';\r\nfunction isExclusive(selector) {\r\n if (typeof selector === 'string') {\r\n return false;\r\n }\r\n else if (Array.isArray(selector)) {\r\n return selector.every(isExclusive);\r\n }\r\n else {\r\n return !!selector.exclusive; // TODO: microsoft/TypeScript#42768\r\n }\r\n}\r\nexport class LanguageFeatureRegistry {\r\n constructor() {\r\n this._clock = 0;\r\n this._entries = [];\r\n this._onDidChange = new Emitter();\r\n }\r\n get onDidChange() {\r\n return this._onDidChange.event;\r\n }\r\n register(selector, provider) {\r\n let entry = {\r\n selector,\r\n provider,\r\n _score: -1,\r\n _time: this._clock++\r\n };\r\n this._entries.push(entry);\r\n this._lastCandidate = undefined;\r\n this._onDidChange.fire(this._entries.length);\r\n return toDisposable(() => {\r\n if (entry) {\r\n let idx = this._entries.indexOf(entry);\r\n if (idx >= 0) {\r\n this._entries.splice(idx, 1);\r\n this._lastCandidate = undefined;\r\n this._onDidChange.fire(this._entries.length);\r\n entry = undefined;\r\n }\r\n }\r\n });\r\n }\r\n has(model) {\r\n return this.all(model).length > 0;\r\n }\r\n all(model) {\r\n if (!model) {\r\n return [];\r\n }\r\n this._updateScores(model);\r\n const result = [];\r\n // from registry\r\n for (let entry of this._entries) {\r\n if (entry._score > 0) {\r\n result.push(entry.provider);\r\n }\r\n }\r\n return result;\r\n }\r\n ordered(model) {\r\n const result = [];\r\n this._orderedForEach(model, entry => result.push(entry.provider));\r\n return result;\r\n }\r\n orderedGroups(model) {\r\n const result = [];\r\n let lastBucket;\r\n let lastBucketScore;\r\n this._orderedForEach(model, entry => {\r\n if (lastBucket && lastBucketScore === entry._score) {\r\n lastBucket.push(entry.provider);\r\n }\r\n else {\r\n lastBucketScore = entry._score;\r\n lastBucket = [entry.provider];\r\n result.push(lastBucket);\r\n }\r\n });\r\n return result;\r\n }\r\n _orderedForEach(model, callback) {\r\n if (!model) {\r\n return;\r\n }\r\n this._updateScores(model);\r\n for (const entry of this._entries) {\r\n if (entry._score > 0) {\r\n callback(entry);\r\n }\r\n }\r\n }\r\n _updateScores(model) {\r\n let candidate = {\r\n uri: model.uri.toString(),\r\n language: model.getLanguageIdentifier().language\r\n };\r\n if (this._lastCandidate\r\n && this._lastCandidate.language === candidate.language\r\n && this._lastCandidate.uri === candidate.uri) {\r\n // nothing has changed\r\n return;\r\n }\r\n this._lastCandidate = candidate;\r\n for (let entry of this._entries) {\r\n entry._score = score(entry.selector, model.uri, model.getLanguageIdentifier().language, shouldSynchronizeModel(model));\r\n if (isExclusive(entry.selector) && entry._score > 0) {\r\n // support for one exclusive selector that overwrites\r\n // any other selector\r\n for (let entry of this._entries) {\r\n entry._score = 0;\r\n }\r\n entry._score = 1000;\r\n break;\r\n }\r\n }\r\n // needs sorting\r\n this._entries.sort(LanguageFeatureRegistry._compareByScoreAndTime);\r\n }\r\n static _compareByScoreAndTime(a, b) {\r\n if (a._score < b._score) {\r\n return 1;\r\n }\r\n else if (a._score > b._score) {\r\n return -1;\r\n }\r\n else if (a._time < b._time) {\r\n return 1;\r\n }\r\n else if (a._time > b._time) {\r\n return -1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n }\r\n}\r\n/**\r\n * Keeps moving average per model and set of providers so that requests\r\n * can be debounce according to the provider performance\r\n */\r\nexport class LanguageFeatureRequestDelays {\r\n constructor(_registry, min, max = Number.MAX_SAFE_INTEGER) {\r\n this._registry = _registry;\r\n this.min = min;\r\n this.max = max;\r\n this._cache = new LRUCache(50, 0.7);\r\n }\r\n _key(model) {\r\n return model.id + hash(this._registry.all(model));\r\n }\r\n _clamp(value) {\r\n if (value === undefined) {\r\n return this.min;\r\n }\r\n else {\r\n return Math.min(this.max, Math.max(this.min, Math.floor(value * 1.3)));\r\n }\r\n }\r\n get(model) {\r\n const key = this._key(model);\r\n const avg = this._cache.get(key);\r\n return this._clamp(avg === null || avg === void 0 ? void 0 : avg.value);\r\n }\r\n update(model, value) {\r\n const key = this._key(model);\r\n let avg = this._cache.get(key);\r\n if (!avg) {\r\n avg = new MovingAverage();\r\n this._cache.set(key, avg);\r\n }\r\n avg.update(value);\r\n return this.get(model);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { toDisposable } from '../../../base/common/lifecycle.js';\r\nexport class TokenizationRegistryImpl {\r\n constructor() {\r\n this._map = new Map();\r\n this._promises = new Map();\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._colorMap = null;\r\n }\r\n fire(languages) {\r\n this._onDidChange.fire({\r\n changedLanguages: languages,\r\n changedColorMap: false\r\n });\r\n }\r\n register(language, support) {\r\n this._map.set(language, support);\r\n this.fire([language]);\r\n return toDisposable(() => {\r\n if (this._map.get(language) !== support) {\r\n return;\r\n }\r\n this._map.delete(language);\r\n this.fire([language]);\r\n });\r\n }\r\n registerPromise(language, supportPromise) {\r\n let registration = null;\r\n let isDisposed = false;\r\n this._promises.set(language, supportPromise.then(support => {\r\n this._promises.delete(language);\r\n if (isDisposed || !support) {\r\n return;\r\n }\r\n registration = this.register(language, support);\r\n }));\r\n return toDisposable(() => {\r\n isDisposed = true;\r\n if (registration) {\r\n registration.dispose();\r\n }\r\n });\r\n }\r\n getPromise(language) {\r\n const support = this.get(language);\r\n if (support) {\r\n return Promise.resolve(support);\r\n }\r\n const promise = this._promises.get(language);\r\n if (promise) {\r\n return promise.then(_ => this.get(language));\r\n }\r\n return null;\r\n }\r\n get(language) {\r\n return (this._map.get(language) || null);\r\n }\r\n setColorMap(colorMap) {\r\n this._colorMap = colorMap;\r\n this._onDidChange.fire({\r\n changedLanguages: Array.from(this._map.keys()),\r\n changedColorMap: true\r\n });\r\n }\r\n getColorMap() {\r\n return this._colorMap;\r\n }\r\n getDefaultBackground() {\r\n if (this._colorMap && this._colorMap.length > 2 /* DefaultBackground */) {\r\n return this._colorMap[2 /* DefaultBackground */];\r\n }\r\n return null;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from './event.js';\r\nclass Registry {\r\n constructor() {\r\n this._icons = new Map();\r\n this._onDidRegister = new Emitter();\r\n }\r\n add(icon) {\r\n const existing = this._icons.get(icon.id);\r\n if (!existing) {\r\n this._icons.set(icon.id, icon);\r\n this._onDidRegister.fire(icon);\r\n }\r\n else if (icon.description) {\r\n existing.description = icon.description;\r\n }\r\n else {\r\n console.error(`Duplicate registration of codicon ${icon.id}`);\r\n }\r\n }\r\n get(id) {\r\n return this._icons.get(id);\r\n }\r\n get all() {\r\n return this._icons.values();\r\n }\r\n get onDidRegister() {\r\n return this._onDidRegister.event;\r\n }\r\n}\r\nconst _registry = new Registry();\r\nexport const iconRegistry = _registry;\r\nexport function registerCodicon(id, def) {\r\n return new Codicon(id, def);\r\n}\r\n// Selects all codicon names encapsulated in the `$()` syntax and wraps the\r\n// results with spaces so that screen readers can read the text better.\r\nexport function getCodiconAriaLabel(text) {\r\n if (!text) {\r\n return '';\r\n }\r\n return text.replace(/\\$\\((.*?)\\)/g, (_match, codiconName) => ` ${codiconName} `).trim();\r\n}\r\nexport class Codicon {\r\n constructor(id, definition, description) {\r\n this.id = id;\r\n this.definition = definition;\r\n this.description = description;\r\n _registry.add(this);\r\n }\r\n get classNames() { return 'codicon codicon-' + this.id; }\r\n // classNamesArray is useful for migrating to ES6 classlist\r\n get classNamesArray() { return ['codicon', 'codicon-' + this.id]; }\r\n get cssSelector() { return '.codicon.codicon-' + this.id; }\r\n}\r\nexport var CSSIcon;\r\n(function (CSSIcon) {\r\n CSSIcon.iconNameSegment = '[A-Za-z0-9]+';\r\n CSSIcon.iconNameExpression = '[A-Za-z0-9\\\\-]+';\r\n CSSIcon.iconModifierExpression = '~[A-Za-z]+';\r\n const cssIconIdRegex = new RegExp(`^(${CSSIcon.iconNameExpression})(${CSSIcon.iconModifierExpression})?$`);\r\n function asClassNameArray(icon) {\r\n if (icon instanceof Codicon) {\r\n return ['codicon', 'codicon-' + icon.id];\r\n }\r\n const match = cssIconIdRegex.exec(icon.id);\r\n if (!match) {\r\n return asClassNameArray(Codicon.error);\r\n }\r\n let [, id, modifier] = match;\r\n const classNames = ['codicon', 'codicon-' + id];\r\n if (modifier) {\r\n classNames.push('codicon-modifier-' + modifier.substr(1));\r\n }\r\n return classNames;\r\n }\r\n CSSIcon.asClassNameArray = asClassNameArray;\r\n function asClassName(icon) {\r\n return asClassNameArray(icon).join(' ');\r\n }\r\n CSSIcon.asClassName = asClassName;\r\n function asCSSSelector(icon) {\r\n return '.' + asClassNameArray(icon).join('.');\r\n }\r\n CSSIcon.asCSSSelector = asCSSSelector;\r\n})(CSSIcon || (CSSIcon = {}));\r\n(function (Codicon) {\r\n // built-in icons, with image name\r\n Codicon.add = new Codicon('add', { fontCharacter: '\\\\ea60' });\r\n Codicon.plus = new Codicon('plus', { fontCharacter: '\\\\ea60' });\r\n Codicon.gistNew = new Codicon('gist-new', { fontCharacter: '\\\\ea60' });\r\n Codicon.repoCreate = new Codicon('repo-create', { fontCharacter: '\\\\ea60' });\r\n Codicon.lightbulb = new Codicon('lightbulb', { fontCharacter: '\\\\ea61' });\r\n Codicon.lightBulb = new Codicon('light-bulb', { fontCharacter: '\\\\ea61' });\r\n Codicon.repo = new Codicon('repo', { fontCharacter: '\\\\ea62' });\r\n Codicon.repoDelete = new Codicon('repo-delete', { fontCharacter: '\\\\ea62' });\r\n Codicon.gistFork = new Codicon('gist-fork', { fontCharacter: '\\\\ea63' });\r\n Codicon.repoForked = new Codicon('repo-forked', { fontCharacter: '\\\\ea63' });\r\n Codicon.gitPullRequest = new Codicon('git-pull-request', { fontCharacter: '\\\\ea64' });\r\n Codicon.gitPullRequestAbandoned = new Codicon('git-pull-request-abandoned', { fontCharacter: '\\\\ea64' });\r\n Codicon.recordKeys = new Codicon('record-keys', { fontCharacter: '\\\\ea65' });\r\n Codicon.keyboard = new Codicon('keyboard', { fontCharacter: '\\\\ea65' });\r\n Codicon.tag = new Codicon('tag', { fontCharacter: '\\\\ea66' });\r\n Codicon.tagAdd = new Codicon('tag-add', { fontCharacter: '\\\\ea66' });\r\n Codicon.tagRemove = new Codicon('tag-remove', { fontCharacter: '\\\\ea66' });\r\n Codicon.person = new Codicon('person', { fontCharacter: '\\\\ea67' });\r\n Codicon.personFollow = new Codicon('person-follow', { fontCharacter: '\\\\ea67' });\r\n Codicon.personOutline = new Codicon('person-outline', { fontCharacter: '\\\\ea67' });\r\n Codicon.personFilled = new Codicon('person-filled', { fontCharacter: '\\\\ea67' });\r\n Codicon.gitBranch = new Codicon('git-branch', { fontCharacter: '\\\\ea68' });\r\n Codicon.gitBranchCreate = new Codicon('git-branch-create', { fontCharacter: '\\\\ea68' });\r\n Codicon.gitBranchDelete = new Codicon('git-branch-delete', { fontCharacter: '\\\\ea68' });\r\n Codicon.sourceControl = new Codicon('source-control', { fontCharacter: '\\\\ea68' });\r\n Codicon.mirror = new Codicon('mirror', { fontCharacter: '\\\\ea69' });\r\n Codicon.mirrorPublic = new Codicon('mirror-public', { fontCharacter: '\\\\ea69' });\r\n Codicon.star = new Codicon('star', { fontCharacter: '\\\\ea6a' });\r\n Codicon.starAdd = new Codicon('star-add', { fontCharacter: '\\\\ea6a' });\r\n Codicon.starDelete = new Codicon('star-delete', { fontCharacter: '\\\\ea6a' });\r\n Codicon.starEmpty = new Codicon('star-empty', { fontCharacter: '\\\\ea6a' });\r\n Codicon.comment = new Codicon('comment', { fontCharacter: '\\\\ea6b' });\r\n Codicon.commentAdd = new Codicon('comment-add', { fontCharacter: '\\\\ea6b' });\r\n Codicon.alert = new Codicon('alert', { fontCharacter: '\\\\ea6c' });\r\n Codicon.warning = new Codicon('warning', { fontCharacter: '\\\\ea6c' });\r\n Codicon.search = new Codicon('search', { fontCharacter: '\\\\ea6d' });\r\n Codicon.searchSave = new Codicon('search-save', { fontCharacter: '\\\\ea6d' });\r\n Codicon.logOut = new Codicon('log-out', { fontCharacter: '\\\\ea6e' });\r\n Codicon.signOut = new Codicon('sign-out', { fontCharacter: '\\\\ea6e' });\r\n Codicon.logIn = new Codicon('log-in', { fontCharacter: '\\\\ea6f' });\r\n Codicon.signIn = new Codicon('sign-in', { fontCharacter: '\\\\ea6f' });\r\n Codicon.eye = new Codicon('eye', { fontCharacter: '\\\\ea70' });\r\n Codicon.eyeUnwatch = new Codicon('eye-unwatch', { fontCharacter: '\\\\ea70' });\r\n Codicon.eyeWatch = new Codicon('eye-watch', { fontCharacter: '\\\\ea70' });\r\n Codicon.circleFilled = new Codicon('circle-filled', { fontCharacter: '\\\\ea71' });\r\n Codicon.primitiveDot = new Codicon('primitive-dot', { fontCharacter: '\\\\ea71' });\r\n Codicon.closeDirty = new Codicon('close-dirty', { fontCharacter: '\\\\ea71' });\r\n Codicon.debugBreakpoint = new Codicon('debug-breakpoint', { fontCharacter: '\\\\ea71' });\r\n Codicon.debugBreakpointDisabled = new Codicon('debug-breakpoint-disabled', { fontCharacter: '\\\\ea71' });\r\n Codicon.debugHint = new Codicon('debug-hint', { fontCharacter: '\\\\ea71' });\r\n Codicon.primitiveSquare = new Codicon('primitive-square', { fontCharacter: '\\\\ea72' });\r\n Codicon.edit = new Codicon('edit', { fontCharacter: '\\\\ea73' });\r\n Codicon.pencil = new Codicon('pencil', { fontCharacter: '\\\\ea73' });\r\n Codicon.info = new Codicon('info', { fontCharacter: '\\\\ea74' });\r\n Codicon.issueOpened = new Codicon('issue-opened', { fontCharacter: '\\\\ea74' });\r\n Codicon.gistPrivate = new Codicon('gist-private', { fontCharacter: '\\\\ea75' });\r\n Codicon.gitForkPrivate = new Codicon('git-fork-private', { fontCharacter: '\\\\ea75' });\r\n Codicon.lock = new Codicon('lock', { fontCharacter: '\\\\ea75' });\r\n Codicon.mirrorPrivate = new Codicon('mirror-private', { fontCharacter: '\\\\ea75' });\r\n Codicon.close = new Codicon('close', { fontCharacter: '\\\\ea76' });\r\n Codicon.removeClose = new Codicon('remove-close', { fontCharacter: '\\\\ea76' });\r\n Codicon.x = new Codicon('x', { fontCharacter: '\\\\ea76' });\r\n Codicon.repoSync = new Codicon('repo-sync', { fontCharacter: '\\\\ea77' });\r\n Codicon.sync = new Codicon('sync', { fontCharacter: '\\\\ea77' });\r\n Codicon.clone = new Codicon('clone', { fontCharacter: '\\\\ea78' });\r\n Codicon.desktopDownload = new Codicon('desktop-download', { fontCharacter: '\\\\ea78' });\r\n Codicon.beaker = new Codicon('beaker', { fontCharacter: '\\\\ea79' });\r\n Codicon.microscope = new Codicon('microscope', { fontCharacter: '\\\\ea79' });\r\n Codicon.vm = new Codicon('vm', { fontCharacter: '\\\\ea7a' });\r\n Codicon.deviceDesktop = new Codicon('device-desktop', { fontCharacter: '\\\\ea7a' });\r\n Codicon.file = new Codicon('file', { fontCharacter: '\\\\ea7b' });\r\n Codicon.fileText = new Codicon('file-text', { fontCharacter: '\\\\ea7b' });\r\n Codicon.more = new Codicon('more', { fontCharacter: '\\\\ea7c' });\r\n Codicon.ellipsis = new Codicon('ellipsis', { fontCharacter: '\\\\ea7c' });\r\n Codicon.kebabHorizontal = new Codicon('kebab-horizontal', { fontCharacter: '\\\\ea7c' });\r\n Codicon.mailReply = new Codicon('mail-reply', { fontCharacter: '\\\\ea7d' });\r\n Codicon.reply = new Codicon('reply', { fontCharacter: '\\\\ea7d' });\r\n Codicon.organization = new Codicon('organization', { fontCharacter: '\\\\ea7e' });\r\n Codicon.organizationFilled = new Codicon('organization-filled', { fontCharacter: '\\\\ea7e' });\r\n Codicon.organizationOutline = new Codicon('organization-outline', { fontCharacter: '\\\\ea7e' });\r\n Codicon.newFile = new Codicon('new-file', { fontCharacter: '\\\\ea7f' });\r\n Codicon.fileAdd = new Codicon('file-add', { fontCharacter: '\\\\ea7f' });\r\n Codicon.newFolder = new Codicon('new-folder', { fontCharacter: '\\\\ea80' });\r\n Codicon.fileDirectoryCreate = new Codicon('file-directory-create', { fontCharacter: '\\\\ea80' });\r\n Codicon.trash = new Codicon('trash', { fontCharacter: '\\\\ea81' });\r\n Codicon.trashcan = new Codicon('trashcan', { fontCharacter: '\\\\ea81' });\r\n Codicon.history = new Codicon('history', { fontCharacter: '\\\\ea82' });\r\n Codicon.clock = new Codicon('clock', { fontCharacter: '\\\\ea82' });\r\n Codicon.folder = new Codicon('folder', { fontCharacter: '\\\\ea83' });\r\n Codicon.fileDirectory = new Codicon('file-directory', { fontCharacter: '\\\\ea83' });\r\n Codicon.symbolFolder = new Codicon('symbol-folder', { fontCharacter: '\\\\ea83' });\r\n Codicon.logoGithub = new Codicon('logo-github', { fontCharacter: '\\\\ea84' });\r\n Codicon.markGithub = new Codicon('mark-github', { fontCharacter: '\\\\ea84' });\r\n Codicon.github = new Codicon('github', { fontCharacter: '\\\\ea84' });\r\n Codicon.terminal = new Codicon('terminal', { fontCharacter: '\\\\ea85' });\r\n Codicon.console = new Codicon('console', { fontCharacter: '\\\\ea85' });\r\n Codicon.repl = new Codicon('repl', { fontCharacter: '\\\\ea85' });\r\n Codicon.zap = new Codicon('zap', { fontCharacter: '\\\\ea86' });\r\n Codicon.symbolEvent = new Codicon('symbol-event', { fontCharacter: '\\\\ea86' });\r\n Codicon.error = new Codicon('error', { fontCharacter: '\\\\ea87' });\r\n Codicon.stop = new Codicon('stop', { fontCharacter: '\\\\ea87' });\r\n Codicon.variable = new Codicon('variable', { fontCharacter: '\\\\ea88' });\r\n Codicon.symbolVariable = new Codicon('symbol-variable', { fontCharacter: '\\\\ea88' });\r\n Codicon.array = new Codicon('array', { fontCharacter: '\\\\ea8a' });\r\n Codicon.symbolArray = new Codicon('symbol-array', { fontCharacter: '\\\\ea8a' });\r\n Codicon.symbolModule = new Codicon('symbol-module', { fontCharacter: '\\\\ea8b' });\r\n Codicon.symbolPackage = new Codicon('symbol-package', { fontCharacter: '\\\\ea8b' });\r\n Codicon.symbolNamespace = new Codicon('symbol-namespace', { fontCharacter: '\\\\ea8b' });\r\n Codicon.symbolObject = new Codicon('symbol-object', { fontCharacter: '\\\\ea8b' });\r\n Codicon.symbolMethod = new Codicon('symbol-method', { fontCharacter: '\\\\ea8c' });\r\n Codicon.symbolFunction = new Codicon('symbol-function', { fontCharacter: '\\\\ea8c' });\r\n Codicon.symbolConstructor = new Codicon('symbol-constructor', { fontCharacter: '\\\\ea8c' });\r\n Codicon.symbolBoolean = new Codicon('symbol-boolean', { fontCharacter: '\\\\ea8f' });\r\n Codicon.symbolNull = new Codicon('symbol-null', { fontCharacter: '\\\\ea8f' });\r\n Codicon.symbolNumeric = new Codicon('symbol-numeric', { fontCharacter: '\\\\ea90' });\r\n Codicon.symbolNumber = new Codicon('symbol-number', { fontCharacter: '\\\\ea90' });\r\n Codicon.symbolStructure = new Codicon('symbol-structure', { fontCharacter: '\\\\ea91' });\r\n Codicon.symbolStruct = new Codicon('symbol-struct', { fontCharacter: '\\\\ea91' });\r\n Codicon.symbolParameter = new Codicon('symbol-parameter', { fontCharacter: '\\\\ea92' });\r\n Codicon.symbolTypeParameter = new Codicon('symbol-type-parameter', { fontCharacter: '\\\\ea92' });\r\n Codicon.symbolKey = new Codicon('symbol-key', { fontCharacter: '\\\\ea93' });\r\n Codicon.symbolText = new Codicon('symbol-text', { fontCharacter: '\\\\ea93' });\r\n Codicon.symbolReference = new Codicon('symbol-reference', { fontCharacter: '\\\\ea94' });\r\n Codicon.goToFile = new Codicon('go-to-file', { fontCharacter: '\\\\ea94' });\r\n Codicon.symbolEnum = new Codicon('symbol-enum', { fontCharacter: '\\\\ea95' });\r\n Codicon.symbolValue = new Codicon('symbol-value', { fontCharacter: '\\\\ea95' });\r\n Codicon.symbolRuler = new Codicon('symbol-ruler', { fontCharacter: '\\\\ea96' });\r\n Codicon.symbolUnit = new Codicon('symbol-unit', { fontCharacter: '\\\\ea96' });\r\n Codicon.activateBreakpoints = new Codicon('activate-breakpoints', { fontCharacter: '\\\\ea97' });\r\n Codicon.archive = new Codicon('archive', { fontCharacter: '\\\\ea98' });\r\n Codicon.arrowBoth = new Codicon('arrow-both', { fontCharacter: '\\\\ea99' });\r\n Codicon.arrowDown = new Codicon('arrow-down', { fontCharacter: '\\\\ea9a' });\r\n Codicon.arrowLeft = new Codicon('arrow-left', { fontCharacter: '\\\\ea9b' });\r\n Codicon.arrowRight = new Codicon('arrow-right', { fontCharacter: '\\\\ea9c' });\r\n Codicon.arrowSmallDown = new Codicon('arrow-small-down', { fontCharacter: '\\\\ea9d' });\r\n Codicon.arrowSmallLeft = new Codicon('arrow-small-left', { fontCharacter: '\\\\ea9e' });\r\n Codicon.arrowSmallRight = new Codicon('arrow-small-right', { fontCharacter: '\\\\ea9f' });\r\n Codicon.arrowSmallUp = new Codicon('arrow-small-up', { fontCharacter: '\\\\eaa0' });\r\n Codicon.arrowUp = new Codicon('arrow-up', { fontCharacter: '\\\\eaa1' });\r\n Codicon.bell = new Codicon('bell', { fontCharacter: '\\\\eaa2' });\r\n Codicon.bold = new Codicon('bold', { fontCharacter: '\\\\eaa3' });\r\n Codicon.book = new Codicon('book', { fontCharacter: '\\\\eaa4' });\r\n Codicon.bookmark = new Codicon('bookmark', { fontCharacter: '\\\\eaa5' });\r\n Codicon.debugBreakpointConditionalUnverified = new Codicon('debug-breakpoint-conditional-unverified', { fontCharacter: '\\\\eaa6' });\r\n Codicon.debugBreakpointConditional = new Codicon('debug-breakpoint-conditional', { fontCharacter: '\\\\eaa7' });\r\n Codicon.debugBreakpointConditionalDisabled = new Codicon('debug-breakpoint-conditional-disabled', { fontCharacter: '\\\\eaa7' });\r\n Codicon.debugBreakpointDataUnverified = new Codicon('debug-breakpoint-data-unverified', { fontCharacter: '\\\\eaa8' });\r\n Codicon.debugBreakpointData = new Codicon('debug-breakpoint-data', { fontCharacter: '\\\\eaa9' });\r\n Codicon.debugBreakpointDataDisabled = new Codicon('debug-breakpoint-data-disabled', { fontCharacter: '\\\\eaa9' });\r\n Codicon.debugBreakpointLogUnverified = new Codicon('debug-breakpoint-log-unverified', { fontCharacter: '\\\\eaaa' });\r\n Codicon.debugBreakpointLog = new Codicon('debug-breakpoint-log', { fontCharacter: '\\\\eaab' });\r\n Codicon.debugBreakpointLogDisabled = new Codicon('debug-breakpoint-log-disabled', { fontCharacter: '\\\\eaab' });\r\n Codicon.briefcase = new Codicon('briefcase', { fontCharacter: '\\\\eaac' });\r\n Codicon.broadcast = new Codicon('broadcast', { fontCharacter: '\\\\eaad' });\r\n Codicon.browser = new Codicon('browser', { fontCharacter: '\\\\eaae' });\r\n Codicon.bug = new Codicon('bug', { fontCharacter: '\\\\eaaf' });\r\n Codicon.calendar = new Codicon('calendar', { fontCharacter: '\\\\eab0' });\r\n Codicon.caseSensitive = new Codicon('case-sensitive', { fontCharacter: '\\\\eab1' });\r\n Codicon.check = new Codicon('check', { fontCharacter: '\\\\eab2' });\r\n Codicon.checklist = new Codicon('checklist', { fontCharacter: '\\\\eab3' });\r\n Codicon.chevronDown = new Codicon('chevron-down', { fontCharacter: '\\\\eab4' });\r\n Codicon.chevronLeft = new Codicon('chevron-left', { fontCharacter: '\\\\eab5' });\r\n Codicon.chevronRight = new Codicon('chevron-right', { fontCharacter: '\\\\eab6' });\r\n Codicon.chevronUp = new Codicon('chevron-up', { fontCharacter: '\\\\eab7' });\r\n Codicon.chromeClose = new Codicon('chrome-close', { fontCharacter: '\\\\eab8' });\r\n Codicon.chromeMaximize = new Codicon('chrome-maximize', { fontCharacter: '\\\\eab9' });\r\n Codicon.chromeMinimize = new Codicon('chrome-minimize', { fontCharacter: '\\\\eaba' });\r\n Codicon.chromeRestore = new Codicon('chrome-restore', { fontCharacter: '\\\\eabb' });\r\n Codicon.circleOutline = new Codicon('circle-outline', { fontCharacter: '\\\\eabc' });\r\n Codicon.debugBreakpointUnverified = new Codicon('debug-breakpoint-unverified', { fontCharacter: '\\\\eabc' });\r\n Codicon.circleSlash = new Codicon('circle-slash', { fontCharacter: '\\\\eabd' });\r\n Codicon.circuitBoard = new Codicon('circuit-board', { fontCharacter: '\\\\eabe' });\r\n Codicon.clearAll = new Codicon('clear-all', { fontCharacter: '\\\\eabf' });\r\n Codicon.clippy = new Codicon('clippy', { fontCharacter: '\\\\eac0' });\r\n Codicon.closeAll = new Codicon('close-all', { fontCharacter: '\\\\eac1' });\r\n Codicon.cloudDownload = new Codicon('cloud-download', { fontCharacter: '\\\\eac2' });\r\n Codicon.cloudUpload = new Codicon('cloud-upload', { fontCharacter: '\\\\eac3' });\r\n Codicon.code = new Codicon('code', { fontCharacter: '\\\\eac4' });\r\n Codicon.collapseAll = new Codicon('collapse-all', { fontCharacter: '\\\\eac5' });\r\n Codicon.colorMode = new Codicon('color-mode', { fontCharacter: '\\\\eac6' });\r\n Codicon.commentDiscussion = new Codicon('comment-discussion', { fontCharacter: '\\\\eac7' });\r\n Codicon.compareChanges = new Codicon('compare-changes', { fontCharacter: '\\\\eafd' });\r\n Codicon.creditCard = new Codicon('credit-card', { fontCharacter: '\\\\eac9' });\r\n Codicon.dash = new Codicon('dash', { fontCharacter: '\\\\eacc' });\r\n Codicon.dashboard = new Codicon('dashboard', { fontCharacter: '\\\\eacd' });\r\n Codicon.database = new Codicon('database', { fontCharacter: '\\\\eace' });\r\n Codicon.debugContinue = new Codicon('debug-continue', { fontCharacter: '\\\\eacf' });\r\n Codicon.debugDisconnect = new Codicon('debug-disconnect', { fontCharacter: '\\\\ead0' });\r\n Codicon.debugPause = new Codicon('debug-pause', { fontCharacter: '\\\\ead1' });\r\n Codicon.debugRestart = new Codicon('debug-restart', { fontCharacter: '\\\\ead2' });\r\n Codicon.debugStart = new Codicon('debug-start', { fontCharacter: '\\\\ead3' });\r\n Codicon.debugStepInto = new Codicon('debug-step-into', { fontCharacter: '\\\\ead4' });\r\n Codicon.debugStepOut = new Codicon('debug-step-out', { fontCharacter: '\\\\ead5' });\r\n Codicon.debugStepOver = new Codicon('debug-step-over', { fontCharacter: '\\\\ead6' });\r\n Codicon.debugStop = new Codicon('debug-stop', { fontCharacter: '\\\\ead7' });\r\n Codicon.debug = new Codicon('debug', { fontCharacter: '\\\\ead8' });\r\n Codicon.deviceCameraVideo = new Codicon('device-camera-video', { fontCharacter: '\\\\ead9' });\r\n Codicon.deviceCamera = new Codicon('device-camera', { fontCharacter: '\\\\eada' });\r\n Codicon.deviceMobile = new Codicon('device-mobile', { fontCharacter: '\\\\eadb' });\r\n Codicon.diffAdded = new Codicon('diff-added', { fontCharacter: '\\\\eadc' });\r\n Codicon.diffIgnored = new Codicon('diff-ignored', { fontCharacter: '\\\\eadd' });\r\n Codicon.diffModified = new Codicon('diff-modified', { fontCharacter: '\\\\eade' });\r\n Codicon.diffRemoved = new Codicon('diff-removed', { fontCharacter: '\\\\eadf' });\r\n Codicon.diffRenamed = new Codicon('diff-renamed', { fontCharacter: '\\\\eae0' });\r\n Codicon.diff = new Codicon('diff', { fontCharacter: '\\\\eae1' });\r\n Codicon.discard = new Codicon('discard', { fontCharacter: '\\\\eae2' });\r\n Codicon.editorLayout = new Codicon('editor-layout', { fontCharacter: '\\\\eae3' });\r\n Codicon.emptyWindow = new Codicon('empty-window', { fontCharacter: '\\\\eae4' });\r\n Codicon.exclude = new Codicon('exclude', { fontCharacter: '\\\\eae5' });\r\n Codicon.extensions = new Codicon('extensions', { fontCharacter: '\\\\eae6' });\r\n Codicon.eyeClosed = new Codicon('eye-closed', { fontCharacter: '\\\\eae7' });\r\n Codicon.fileBinary = new Codicon('file-binary', { fontCharacter: '\\\\eae8' });\r\n Codicon.fileCode = new Codicon('file-code', { fontCharacter: '\\\\eae9' });\r\n Codicon.fileMedia = new Codicon('file-media', { fontCharacter: '\\\\eaea' });\r\n Codicon.filePdf = new Codicon('file-pdf', { fontCharacter: '\\\\eaeb' });\r\n Codicon.fileSubmodule = new Codicon('file-submodule', { fontCharacter: '\\\\eaec' });\r\n Codicon.fileSymlinkDirectory = new Codicon('file-symlink-directory', { fontCharacter: '\\\\eaed' });\r\n Codicon.fileSymlinkFile = new Codicon('file-symlink-file', { fontCharacter: '\\\\eaee' });\r\n Codicon.fileZip = new Codicon('file-zip', { fontCharacter: '\\\\eaef' });\r\n Codicon.files = new Codicon('files', { fontCharacter: '\\\\eaf0' });\r\n Codicon.filter = new Codicon('filter', { fontCharacter: '\\\\eaf1' });\r\n Codicon.flame = new Codicon('flame', { fontCharacter: '\\\\eaf2' });\r\n Codicon.foldDown = new Codicon('fold-down', { fontCharacter: '\\\\eaf3' });\r\n Codicon.foldUp = new Codicon('fold-up', { fontCharacter: '\\\\eaf4' });\r\n Codicon.fold = new Codicon('fold', { fontCharacter: '\\\\eaf5' });\r\n Codicon.folderActive = new Codicon('folder-active', { fontCharacter: '\\\\eaf6' });\r\n Codicon.folderOpened = new Codicon('folder-opened', { fontCharacter: '\\\\eaf7' });\r\n Codicon.gear = new Codicon('gear', { fontCharacter: '\\\\eaf8' });\r\n Codicon.gift = new Codicon('gift', { fontCharacter: '\\\\eaf9' });\r\n Codicon.gistSecret = new Codicon('gist-secret', { fontCharacter: '\\\\eafa' });\r\n Codicon.gist = new Codicon('gist', { fontCharacter: '\\\\eafb' });\r\n Codicon.gitCommit = new Codicon('git-commit', { fontCharacter: '\\\\eafc' });\r\n Codicon.gitCompare = new Codicon('git-compare', { fontCharacter: '\\\\eafd' });\r\n Codicon.gitMerge = new Codicon('git-merge', { fontCharacter: '\\\\eafe' });\r\n Codicon.githubAction = new Codicon('github-action', { fontCharacter: '\\\\eaff' });\r\n Codicon.githubAlt = new Codicon('github-alt', { fontCharacter: '\\\\eb00' });\r\n Codicon.globe = new Codicon('globe', { fontCharacter: '\\\\eb01' });\r\n Codicon.grabber = new Codicon('grabber', { fontCharacter: '\\\\eb02' });\r\n Codicon.graph = new Codicon('graph', { fontCharacter: '\\\\eb03' });\r\n Codicon.gripper = new Codicon('gripper', { fontCharacter: '\\\\eb04' });\r\n Codicon.heart = new Codicon('heart', { fontCharacter: '\\\\eb05' });\r\n Codicon.home = new Codicon('home', { fontCharacter: '\\\\eb06' });\r\n Codicon.horizontalRule = new Codicon('horizontal-rule', { fontCharacter: '\\\\eb07' });\r\n Codicon.hubot = new Codicon('hubot', { fontCharacter: '\\\\eb08' });\r\n Codicon.inbox = new Codicon('inbox', { fontCharacter: '\\\\eb09' });\r\n Codicon.issueClosed = new Codicon('issue-closed', { fontCharacter: '\\\\eba4' });\r\n Codicon.issueReopened = new Codicon('issue-reopened', { fontCharacter: '\\\\eb0b' });\r\n Codicon.issues = new Codicon('issues', { fontCharacter: '\\\\eb0c' });\r\n Codicon.italic = new Codicon('italic', { fontCharacter: '\\\\eb0d' });\r\n Codicon.jersey = new Codicon('jersey', { fontCharacter: '\\\\eb0e' });\r\n Codicon.json = new Codicon('json', { fontCharacter: '\\\\eb0f' });\r\n Codicon.kebabVertical = new Codicon('kebab-vertical', { fontCharacter: '\\\\eb10' });\r\n Codicon.key = new Codicon('key', { fontCharacter: '\\\\eb11' });\r\n Codicon.law = new Codicon('law', { fontCharacter: '\\\\eb12' });\r\n Codicon.lightbulbAutofix = new Codicon('lightbulb-autofix', { fontCharacter: '\\\\eb13' });\r\n Codicon.linkExternal = new Codicon('link-external', { fontCharacter: '\\\\eb14' });\r\n Codicon.link = new Codicon('link', { fontCharacter: '\\\\eb15' });\r\n Codicon.listOrdered = new Codicon('list-ordered', { fontCharacter: '\\\\eb16' });\r\n Codicon.listUnordered = new Codicon('list-unordered', { fontCharacter: '\\\\eb17' });\r\n Codicon.liveShare = new Codicon('live-share', { fontCharacter: '\\\\eb18' });\r\n Codicon.loading = new Codicon('loading', { fontCharacter: '\\\\eb19' });\r\n Codicon.location = new Codicon('location', { fontCharacter: '\\\\eb1a' });\r\n Codicon.mailRead = new Codicon('mail-read', { fontCharacter: '\\\\eb1b' });\r\n Codicon.mail = new Codicon('mail', { fontCharacter: '\\\\eb1c' });\r\n Codicon.markdown = new Codicon('markdown', { fontCharacter: '\\\\eb1d' });\r\n Codicon.megaphone = new Codicon('megaphone', { fontCharacter: '\\\\eb1e' });\r\n Codicon.mention = new Codicon('mention', { fontCharacter: '\\\\eb1f' });\r\n Codicon.milestone = new Codicon('milestone', { fontCharacter: '\\\\eb20' });\r\n Codicon.mortarBoard = new Codicon('mortar-board', { fontCharacter: '\\\\eb21' });\r\n Codicon.move = new Codicon('move', { fontCharacter: '\\\\eb22' });\r\n Codicon.multipleWindows = new Codicon('multiple-windows', { fontCharacter: '\\\\eb23' });\r\n Codicon.mute = new Codicon('mute', { fontCharacter: '\\\\eb24' });\r\n Codicon.noNewline = new Codicon('no-newline', { fontCharacter: '\\\\eb25' });\r\n Codicon.note = new Codicon('note', { fontCharacter: '\\\\eb26' });\r\n Codicon.octoface = new Codicon('octoface', { fontCharacter: '\\\\eb27' });\r\n Codicon.openPreview = new Codicon('open-preview', { fontCharacter: '\\\\eb28' });\r\n Codicon.package_ = new Codicon('package', { fontCharacter: '\\\\eb29' });\r\n Codicon.paintcan = new Codicon('paintcan', { fontCharacter: '\\\\eb2a' });\r\n Codicon.pin = new Codicon('pin', { fontCharacter: '\\\\eb2b' });\r\n Codicon.play = new Codicon('play', { fontCharacter: '\\\\eb2c' });\r\n Codicon.run = new Codicon('run', { fontCharacter: '\\\\eb2c' });\r\n Codicon.plug = new Codicon('plug', { fontCharacter: '\\\\eb2d' });\r\n Codicon.preserveCase = new Codicon('preserve-case', { fontCharacter: '\\\\eb2e' });\r\n Codicon.preview = new Codicon('preview', { fontCharacter: '\\\\eb2f' });\r\n Codicon.project = new Codicon('project', { fontCharacter: '\\\\eb30' });\r\n Codicon.pulse = new Codicon('pulse', { fontCharacter: '\\\\eb31' });\r\n Codicon.question = new Codicon('question', { fontCharacter: '\\\\eb32' });\r\n Codicon.quote = new Codicon('quote', { fontCharacter: '\\\\eb33' });\r\n Codicon.radioTower = new Codicon('radio-tower', { fontCharacter: '\\\\eb34' });\r\n Codicon.reactions = new Codicon('reactions', { fontCharacter: '\\\\eb35' });\r\n Codicon.references = new Codicon('references', { fontCharacter: '\\\\eb36' });\r\n Codicon.refresh = new Codicon('refresh', { fontCharacter: '\\\\eb37' });\r\n Codicon.regex = new Codicon('regex', { fontCharacter: '\\\\eb38' });\r\n Codicon.remoteExplorer = new Codicon('remote-explorer', { fontCharacter: '\\\\eb39' });\r\n Codicon.remote = new Codicon('remote', { fontCharacter: '\\\\eb3a' });\r\n Codicon.remove = new Codicon('remove', { fontCharacter: '\\\\eb3b' });\r\n Codicon.replaceAll = new Codicon('replace-all', { fontCharacter: '\\\\eb3c' });\r\n Codicon.replace = new Codicon('replace', { fontCharacter: '\\\\eb3d' });\r\n Codicon.repoClone = new Codicon('repo-clone', { fontCharacter: '\\\\eb3e' });\r\n Codicon.repoForcePush = new Codicon('repo-force-push', { fontCharacter: '\\\\eb3f' });\r\n Codicon.repoPull = new Codicon('repo-pull', { fontCharacter: '\\\\eb40' });\r\n Codicon.repoPush = new Codicon('repo-push', { fontCharacter: '\\\\eb41' });\r\n Codicon.report = new Codicon('report', { fontCharacter: '\\\\eb42' });\r\n Codicon.requestChanges = new Codicon('request-changes', { fontCharacter: '\\\\eb43' });\r\n Codicon.rocket = new Codicon('rocket', { fontCharacter: '\\\\eb44' });\r\n Codicon.rootFolderOpened = new Codicon('root-folder-opened', { fontCharacter: '\\\\eb45' });\r\n Codicon.rootFolder = new Codicon('root-folder', { fontCharacter: '\\\\eb46' });\r\n Codicon.rss = new Codicon('rss', { fontCharacter: '\\\\eb47' });\r\n Codicon.ruby = new Codicon('ruby', { fontCharacter: '\\\\eb48' });\r\n Codicon.saveAll = new Codicon('save-all', { fontCharacter: '\\\\eb49' });\r\n Codicon.saveAs = new Codicon('save-as', { fontCharacter: '\\\\eb4a' });\r\n Codicon.save = new Codicon('save', { fontCharacter: '\\\\eb4b' });\r\n Codicon.screenFull = new Codicon('screen-full', { fontCharacter: '\\\\eb4c' });\r\n Codicon.screenNormal = new Codicon('screen-normal', { fontCharacter: '\\\\eb4d' });\r\n Codicon.searchStop = new Codicon('search-stop', { fontCharacter: '\\\\eb4e' });\r\n Codicon.server = new Codicon('server', { fontCharacter: '\\\\eb50' });\r\n Codicon.settingsGear = new Codicon('settings-gear', { fontCharacter: '\\\\eb51' });\r\n Codicon.settings = new Codicon('settings', { fontCharacter: '\\\\eb52' });\r\n Codicon.shield = new Codicon('shield', { fontCharacter: '\\\\eb53' });\r\n Codicon.smiley = new Codicon('smiley', { fontCharacter: '\\\\eb54' });\r\n Codicon.sortPrecedence = new Codicon('sort-precedence', { fontCharacter: '\\\\eb55' });\r\n Codicon.splitHorizontal = new Codicon('split-horizontal', { fontCharacter: '\\\\eb56' });\r\n Codicon.splitVertical = new Codicon('split-vertical', { fontCharacter: '\\\\eb57' });\r\n Codicon.squirrel = new Codicon('squirrel', { fontCharacter: '\\\\eb58' });\r\n Codicon.starFull = new Codicon('star-full', { fontCharacter: '\\\\eb59' });\r\n Codicon.starHalf = new Codicon('star-half', { fontCharacter: '\\\\eb5a' });\r\n Codicon.symbolClass = new Codicon('symbol-class', { fontCharacter: '\\\\eb5b' });\r\n Codicon.symbolColor = new Codicon('symbol-color', { fontCharacter: '\\\\eb5c' });\r\n Codicon.symbolConstant = new Codicon('symbol-constant', { fontCharacter: '\\\\eb5d' });\r\n Codicon.symbolEnumMember = new Codicon('symbol-enum-member', { fontCharacter: '\\\\eb5e' });\r\n Codicon.symbolField = new Codicon('symbol-field', { fontCharacter: '\\\\eb5f' });\r\n Codicon.symbolFile = new Codicon('symbol-file', { fontCharacter: '\\\\eb60' });\r\n Codicon.symbolInterface = new Codicon('symbol-interface', { fontCharacter: '\\\\eb61' });\r\n Codicon.symbolKeyword = new Codicon('symbol-keyword', { fontCharacter: '\\\\eb62' });\r\n Codicon.symbolMisc = new Codicon('symbol-misc', { fontCharacter: '\\\\eb63' });\r\n Codicon.symbolOperator = new Codicon('symbol-operator', { fontCharacter: '\\\\eb64' });\r\n Codicon.symbolProperty = new Codicon('symbol-property', { fontCharacter: '\\\\eb65' });\r\n Codicon.wrench = new Codicon('wrench', { fontCharacter: '\\\\eb65' });\r\n Codicon.wrenchSubaction = new Codicon('wrench-subaction', { fontCharacter: '\\\\eb65' });\r\n Codicon.symbolSnippet = new Codicon('symbol-snippet', { fontCharacter: '\\\\eb66' });\r\n Codicon.tasklist = new Codicon('tasklist', { fontCharacter: '\\\\eb67' });\r\n Codicon.telescope = new Codicon('telescope', { fontCharacter: '\\\\eb68' });\r\n Codicon.textSize = new Codicon('text-size', { fontCharacter: '\\\\eb69' });\r\n Codicon.threeBars = new Codicon('three-bars', { fontCharacter: '\\\\eb6a' });\r\n Codicon.thumbsdown = new Codicon('thumbsdown', { fontCharacter: '\\\\eb6b' });\r\n Codicon.thumbsup = new Codicon('thumbsup', { fontCharacter: '\\\\eb6c' });\r\n Codicon.tools = new Codicon('tools', { fontCharacter: '\\\\eb6d' });\r\n Codicon.triangleDown = new Codicon('triangle-down', { fontCharacter: '\\\\eb6e' });\r\n Codicon.triangleLeft = new Codicon('triangle-left', { fontCharacter: '\\\\eb6f' });\r\n Codicon.triangleRight = new Codicon('triangle-right', { fontCharacter: '\\\\eb70' });\r\n Codicon.triangleUp = new Codicon('triangle-up', { fontCharacter: '\\\\eb71' });\r\n Codicon.twitter = new Codicon('twitter', { fontCharacter: '\\\\eb72' });\r\n Codicon.unfold = new Codicon('unfold', { fontCharacter: '\\\\eb73' });\r\n Codicon.unlock = new Codicon('unlock', { fontCharacter: '\\\\eb74' });\r\n Codicon.unmute = new Codicon('unmute', { fontCharacter: '\\\\eb75' });\r\n Codicon.unverified = new Codicon('unverified', { fontCharacter: '\\\\eb76' });\r\n Codicon.verified = new Codicon('verified', { fontCharacter: '\\\\eb77' });\r\n Codicon.versions = new Codicon('versions', { fontCharacter: '\\\\eb78' });\r\n Codicon.vmActive = new Codicon('vm-active', { fontCharacter: '\\\\eb79' });\r\n Codicon.vmOutline = new Codicon('vm-outline', { fontCharacter: '\\\\eb7a' });\r\n Codicon.vmRunning = new Codicon('vm-running', { fontCharacter: '\\\\eb7b' });\r\n Codicon.watch = new Codicon('watch', { fontCharacter: '\\\\eb7c' });\r\n Codicon.whitespace = new Codicon('whitespace', { fontCharacter: '\\\\eb7d' });\r\n Codicon.wholeWord = new Codicon('whole-word', { fontCharacter: '\\\\eb7e' });\r\n Codicon.window = new Codicon('window', { fontCharacter: '\\\\eb7f' });\r\n Codicon.wordWrap = new Codicon('word-wrap', { fontCharacter: '\\\\eb80' });\r\n Codicon.zoomIn = new Codicon('zoom-in', { fontCharacter: '\\\\eb81' });\r\n Codicon.zoomOut = new Codicon('zoom-out', { fontCharacter: '\\\\eb82' });\r\n Codicon.listFilter = new Codicon('list-filter', { fontCharacter: '\\\\eb83' });\r\n Codicon.listFlat = new Codicon('list-flat', { fontCharacter: '\\\\eb84' });\r\n Codicon.listSelection = new Codicon('list-selection', { fontCharacter: '\\\\eb85' });\r\n Codicon.selection = new Codicon('selection', { fontCharacter: '\\\\eb85' });\r\n Codicon.listTree = new Codicon('list-tree', { fontCharacter: '\\\\eb86' });\r\n Codicon.debugBreakpointFunctionUnverified = new Codicon('debug-breakpoint-function-unverified', { fontCharacter: '\\\\eb87' });\r\n Codicon.debugBreakpointFunction = new Codicon('debug-breakpoint-function', { fontCharacter: '\\\\eb88' });\r\n Codicon.debugBreakpointFunctionDisabled = new Codicon('debug-breakpoint-function-disabled', { fontCharacter: '\\\\eb88' });\r\n Codicon.debugStackframeActive = new Codicon('debug-stackframe-active', { fontCharacter: '\\\\eb89' });\r\n Codicon.debugStackframeDot = new Codicon('debug-stackframe-dot', { fontCharacter: '\\\\eb8a' });\r\n Codicon.debugStackframe = new Codicon('debug-stackframe', { fontCharacter: '\\\\eb8b' });\r\n Codicon.debugStackframeFocused = new Codicon('debug-stackframe-focused', { fontCharacter: '\\\\eb8b' });\r\n Codicon.debugBreakpointUnsupported = new Codicon('debug-breakpoint-unsupported', { fontCharacter: '\\\\eb8c' });\r\n Codicon.symbolString = new Codicon('symbol-string', { fontCharacter: '\\\\eb8d' });\r\n Codicon.debugReverseContinue = new Codicon('debug-reverse-continue', { fontCharacter: '\\\\eb8e' });\r\n Codicon.debugStepBack = new Codicon('debug-step-back', { fontCharacter: '\\\\eb8f' });\r\n Codicon.debugRestartFrame = new Codicon('debug-restart-frame', { fontCharacter: '\\\\eb90' });\r\n Codicon.callIncoming = new Codicon('call-incoming', { fontCharacter: '\\\\eb92' });\r\n Codicon.callOutgoing = new Codicon('call-outgoing', { fontCharacter: '\\\\eb93' });\r\n Codicon.menu = new Codicon('menu', { fontCharacter: '\\\\eb94' });\r\n Codicon.expandAll = new Codicon('expand-all', { fontCharacter: '\\\\eb95' });\r\n Codicon.feedback = new Codicon('feedback', { fontCharacter: '\\\\eb96' });\r\n Codicon.groupByRefType = new Codicon('group-by-ref-type', { fontCharacter: '\\\\eb97' });\r\n Codicon.ungroupByRefType = new Codicon('ungroup-by-ref-type', { fontCharacter: '\\\\eb98' });\r\n Codicon.account = new Codicon('account', { fontCharacter: '\\\\eb99' });\r\n Codicon.bellDot = new Codicon('bell-dot', { fontCharacter: '\\\\eb9a' });\r\n Codicon.debugConsole = new Codicon('debug-console', { fontCharacter: '\\\\eb9b' });\r\n Codicon.library = new Codicon('library', { fontCharacter: '\\\\eb9c' });\r\n Codicon.output = new Codicon('output', { fontCharacter: '\\\\eb9d' });\r\n Codicon.runAll = new Codicon('run-all', { fontCharacter: '\\\\eb9e' });\r\n Codicon.syncIgnored = new Codicon('sync-ignored', { fontCharacter: '\\\\eb9f' });\r\n Codicon.pinned = new Codicon('pinned', { fontCharacter: '\\\\eba0' });\r\n Codicon.githubInverted = new Codicon('github-inverted', { fontCharacter: '\\\\eba1' });\r\n Codicon.debugAlt = new Codicon('debug-alt', { fontCharacter: '\\\\eb91' });\r\n Codicon.serverProcess = new Codicon('server-process', { fontCharacter: '\\\\eba2' });\r\n Codicon.serverEnvironment = new Codicon('server-environment', { fontCharacter: '\\\\eba3' });\r\n Codicon.pass = new Codicon('pass', { fontCharacter: '\\\\eba4' });\r\n Codicon.stopCircle = new Codicon('stop-circle', { fontCharacter: '\\\\eba5' });\r\n Codicon.playCircle = new Codicon('play-circle', { fontCharacter: '\\\\eba6' });\r\n Codicon.record = new Codicon('record', { fontCharacter: '\\\\eba7' });\r\n Codicon.debugAltSmall = new Codicon('debug-alt-small', { fontCharacter: '\\\\eba8' });\r\n Codicon.vmConnect = new Codicon('vm-connect', { fontCharacter: '\\\\eba9' });\r\n Codicon.cloud = new Codicon('cloud', { fontCharacter: '\\\\ebaa' });\r\n Codicon.merge = new Codicon('merge', { fontCharacter: '\\\\ebab' });\r\n Codicon.exportIcon = new Codicon('export', { fontCharacter: '\\\\ebac' });\r\n Codicon.graphLeft = new Codicon('graph-left', { fontCharacter: '\\\\ebad' });\r\n Codicon.magnet = new Codicon('magnet', { fontCharacter: '\\\\ebae' });\r\n Codicon.notebook = new Codicon('notebook', { fontCharacter: '\\\\ebaf' });\r\n Codicon.redo = new Codicon('redo', { fontCharacter: '\\\\ebb0' });\r\n Codicon.checkAll = new Codicon('check-all', { fontCharacter: '\\\\ebb1' });\r\n Codicon.pinnedDirty = new Codicon('pinned-dirty', { fontCharacter: '\\\\ebb2' });\r\n Codicon.passFilled = new Codicon('pass-filled', { fontCharacter: '\\\\ebb3' });\r\n Codicon.circleLargeFilled = new Codicon('circle-large-filled', { fontCharacter: '\\\\ebb4' });\r\n Codicon.circleLargeOutline = new Codicon('circle-large-outline', { fontCharacter: '\\\\ebb5' });\r\n Codicon.combine = new Codicon('combine', { fontCharacter: '\\\\ebb6' });\r\n Codicon.gather = new Codicon('gather', { fontCharacter: '\\\\ebb6' });\r\n Codicon.table = new Codicon('table', { fontCharacter: '\\\\ebb7' });\r\n Codicon.variableGroup = new Codicon('variable-group', { fontCharacter: '\\\\ebb8' });\r\n Codicon.typeHierarchy = new Codicon('type-hierarchy', { fontCharacter: '\\\\ebb9' });\r\n Codicon.typeHierarchySub = new Codicon('type-hierarchy-sub', { fontCharacter: '\\\\ebba' });\r\n Codicon.typeHierarchySuper = new Codicon('type-hierarchy-super', { fontCharacter: '\\\\ebbb' });\r\n Codicon.gitPullRequestCreate = new Codicon('git-pull-request-create', { fontCharacter: '\\\\ebbc' });\r\n Codicon.runAbove = new Codicon('run-above', { fontCharacter: '\\\\ebbd' });\r\n Codicon.runBelow = new Codicon('run-below', { fontCharacter: '\\\\ebbe' });\r\n Codicon.notebookTemplate = new Codicon('notebook-template', { fontCharacter: '\\\\ebbf' });\r\n Codicon.debugRerun = new Codicon('debug-rerun', { fontCharacter: '\\\\ebc0' });\r\n Codicon.workspaceTrusted = new Codicon('workspace-trusted', { fontCharacter: '\\\\ebc1' });\r\n Codicon.workspaceUntrusted = new Codicon('workspace-untrusted', { fontCharacter: '\\\\ebc2' });\r\n Codicon.workspaceUnspecified = new Codicon('workspace-unspecified', { fontCharacter: '\\\\ebc3' });\r\n Codicon.terminalCmd = new Codicon('terminal-cmd', { fontCharacter: '\\\\ebc4' });\r\n Codicon.terminalDebian = new Codicon('terminal-debian', { fontCharacter: '\\\\ebc5' });\r\n Codicon.terminalLinux = new Codicon('terminal-linux', { fontCharacter: '\\\\ebc6' });\r\n Codicon.terminalPowershell = new Codicon('terminal-powershell', { fontCharacter: '\\\\ebc7' });\r\n Codicon.terminalTmux = new Codicon('terminal-tmux', { fontCharacter: '\\\\ebc8' });\r\n Codicon.terminalUbuntu = new Codicon('terminal-ubuntu', { fontCharacter: '\\\\ebc9' });\r\n Codicon.terminalBash = new Codicon('terminal-bash', { fontCharacter: '\\\\ebca' });\r\n Codicon.arrowSwap = new Codicon('arrow-swap', { fontCharacter: '\\\\ebcb' });\r\n Codicon.copy = new Codicon('copy', { fontCharacter: '\\\\ebcc' });\r\n Codicon.personAdd = new Codicon('person-add', { fontCharacter: '\\\\ebcd' });\r\n Codicon.filterFilled = new Codicon('filter-filled', { fontCharacter: '\\\\ebce' });\r\n Codicon.wand = new Codicon('wand', { fontCharacter: '\\\\ebcf' });\r\n Codicon.debugLineByLine = new Codicon('debug-line-by-line', { fontCharacter: '\\\\ebd0' });\r\n Codicon.inspect = new Codicon('inspect', { fontCharacter: '\\\\ebd1' });\r\n Codicon.layers = new Codicon('layers', { fontCharacter: '\\\\ebd2' });\r\n Codicon.layersDot = new Codicon('layers-dot', { fontCharacter: '\\\\ebd3' });\r\n Codicon.layersActive = new Codicon('layers-active', { fontCharacter: '\\\\ebd4' });\r\n Codicon.compass = new Codicon('compass', { fontCharacter: '\\\\ebd5' });\r\n Codicon.compassDot = new Codicon('compass-dot', { fontCharacter: '\\\\ebd6' });\r\n Codicon.compassActive = new Codicon('compass-active', { fontCharacter: '\\\\ebd7' });\r\n Codicon.azure = new Codicon('azure', { fontCharacter: '\\\\ebd8' });\r\n Codicon.issueDraft = new Codicon('issue-draft', { fontCharacter: '\\\\ebd9' });\r\n Codicon.gitPullRequestClosed = new Codicon('git-pull-request-closed', { fontCharacter: '\\\\ebda' });\r\n Codicon.gitPullRequestDraft = new Codicon('git-pull-request-draft', { fontCharacter: '\\\\ebdb' });\r\n Codicon.debugAll = new Codicon('debug-all', { fontCharacter: '\\\\ebdc' });\r\n Codicon.debugCoverage = new Codicon('debug-coverage', { fontCharacter: '\\\\ebdd' });\r\n Codicon.dropDownButton = new Codicon('drop-down-button', Codicon.chevronDown.definition);\r\n})(Codicon || (Codicon = {}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { URI } from '../../base/common/uri.js';\r\nimport { Range } from './core/range.js';\r\nimport { LanguageFeatureRegistry } from './modes/languageFeatureRegistry.js';\r\nimport { TokenizationRegistryImpl } from './modes/tokenizationRegistry.js';\r\nimport { iconRegistry, Codicon } from '../../base/common/codicons.js';\r\n/**\r\n * @internal\r\n */\r\nexport class LanguageIdentifier {\r\n constructor(language, id) {\r\n this.language = language;\r\n this.id = id;\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport class TokenMetadata {\r\n static getLanguageId(metadata) {\r\n return (metadata & 255 /* LANGUAGEID_MASK */) >>> 0 /* LANGUAGEID_OFFSET */;\r\n }\r\n static getTokenType(metadata) {\r\n return (metadata & 1792 /* TOKEN_TYPE_MASK */) >>> 8 /* TOKEN_TYPE_OFFSET */;\r\n }\r\n static getFontStyle(metadata) {\r\n return (metadata & 14336 /* FONT_STYLE_MASK */) >>> 11 /* FONT_STYLE_OFFSET */;\r\n }\r\n static getForeground(metadata) {\r\n return (metadata & 8372224 /* FOREGROUND_MASK */) >>> 14 /* FOREGROUND_OFFSET */;\r\n }\r\n static getBackground(metadata) {\r\n return (metadata & 4286578688 /* BACKGROUND_MASK */) >>> 23 /* BACKGROUND_OFFSET */;\r\n }\r\n static getClassNameFromMetadata(metadata) {\r\n let foreground = this.getForeground(metadata);\r\n let className = 'mtk' + foreground;\r\n let fontStyle = this.getFontStyle(metadata);\r\n if (fontStyle & 1 /* Italic */) {\r\n className += ' mtki';\r\n }\r\n if (fontStyle & 2 /* Bold */) {\r\n className += ' mtkb';\r\n }\r\n if (fontStyle & 4 /* Underline */) {\r\n className += ' mtku';\r\n }\r\n return className;\r\n }\r\n static getInlineStyleFromMetadata(metadata, colorMap) {\r\n const foreground = this.getForeground(metadata);\r\n const fontStyle = this.getFontStyle(metadata);\r\n let result = `color: ${colorMap[foreground]};`;\r\n if (fontStyle & 1 /* Italic */) {\r\n result += 'font-style: italic;';\r\n }\r\n if (fontStyle & 2 /* Bold */) {\r\n result += 'font-weight: bold;';\r\n }\r\n if (fontStyle & 4 /* Underline */) {\r\n result += 'text-decoration: underline;';\r\n }\r\n return result;\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport const completionKindToCssClass = (function () {\r\n let data = Object.create(null);\r\n data[0 /* Method */] = 'symbol-method';\r\n data[1 /* Function */] = 'symbol-function';\r\n data[2 /* Constructor */] = 'symbol-constructor';\r\n data[3 /* Field */] = 'symbol-field';\r\n data[4 /* Variable */] = 'symbol-variable';\r\n data[5 /* Class */] = 'symbol-class';\r\n data[6 /* Struct */] = 'symbol-struct';\r\n data[7 /* Interface */] = 'symbol-interface';\r\n data[8 /* Module */] = 'symbol-module';\r\n data[9 /* Property */] = 'symbol-property';\r\n data[10 /* Event */] = 'symbol-event';\r\n data[11 /* Operator */] = 'symbol-operator';\r\n data[12 /* Unit */] = 'symbol-unit';\r\n data[13 /* Value */] = 'symbol-value';\r\n data[14 /* Constant */] = 'symbol-constant';\r\n data[15 /* Enum */] = 'symbol-enum';\r\n data[16 /* EnumMember */] = 'symbol-enum-member';\r\n data[17 /* Keyword */] = 'symbol-keyword';\r\n data[27 /* Snippet */] = 'symbol-snippet';\r\n data[18 /* Text */] = 'symbol-text';\r\n data[19 /* Color */] = 'symbol-color';\r\n data[20 /* File */] = 'symbol-file';\r\n data[21 /* Reference */] = 'symbol-reference';\r\n data[22 /* Customcolor */] = 'symbol-customcolor';\r\n data[23 /* Folder */] = 'symbol-folder';\r\n data[24 /* TypeParameter */] = 'symbol-type-parameter';\r\n data[25 /* User */] = 'account';\r\n data[26 /* Issue */] = 'issues';\r\n return function (kind) {\r\n const name = data[kind];\r\n let codicon = name && iconRegistry.get(name);\r\n if (!codicon) {\r\n console.info('No codicon found for CompletionItemKind ' + kind);\r\n codicon = Codicon.symbolProperty;\r\n }\r\n return codicon.classNames;\r\n };\r\n})();\r\n/**\r\n * @internal\r\n */\r\nexport let completionKindFromString = (function () {\r\n let data = Object.create(null);\r\n data['method'] = 0 /* Method */;\r\n data['function'] = 1 /* Function */;\r\n data['constructor'] = 2 /* Constructor */;\r\n data['field'] = 3 /* Field */;\r\n data['variable'] = 4 /* Variable */;\r\n data['class'] = 5 /* Class */;\r\n data['struct'] = 6 /* Struct */;\r\n data['interface'] = 7 /* Interface */;\r\n data['module'] = 8 /* Module */;\r\n data['property'] = 9 /* Property */;\r\n data['event'] = 10 /* Event */;\r\n data['operator'] = 11 /* Operator */;\r\n data['unit'] = 12 /* Unit */;\r\n data['value'] = 13 /* Value */;\r\n data['constant'] = 14 /* Constant */;\r\n data['enum'] = 15 /* Enum */;\r\n data['enum-member'] = 16 /* EnumMember */;\r\n data['enumMember'] = 16 /* EnumMember */;\r\n data['keyword'] = 17 /* Keyword */;\r\n data['snippet'] = 27 /* Snippet */;\r\n data['text'] = 18 /* Text */;\r\n data['color'] = 19 /* Color */;\r\n data['file'] = 20 /* File */;\r\n data['reference'] = 21 /* Reference */;\r\n data['customcolor'] = 22 /* Customcolor */;\r\n data['folder'] = 23 /* Folder */;\r\n data['type-parameter'] = 24 /* TypeParameter */;\r\n data['typeParameter'] = 24 /* TypeParameter */;\r\n data['account'] = 25 /* User */;\r\n data['issue'] = 26 /* Issue */;\r\n return function (value, strict) {\r\n let res = data[value];\r\n if (typeof res === 'undefined' && !strict) {\r\n res = 9 /* Property */;\r\n }\r\n return res;\r\n };\r\n})();\r\n/**\r\n * How an {@link InlineCompletionsProvider inline completion provider} was triggered.\r\n */\r\nexport var InlineCompletionTriggerKind;\r\n(function (InlineCompletionTriggerKind) {\r\n /**\r\n * Completion was triggered automatically while editing.\r\n * It is sufficient to return a single completion item in this case.\r\n */\r\n InlineCompletionTriggerKind[InlineCompletionTriggerKind[\"Automatic\"] = 0] = \"Automatic\";\r\n /**\r\n * Completion was triggered explicitly by a user gesture.\r\n * Return multiple completion items to enable cycling through them.\r\n */\r\n InlineCompletionTriggerKind[InlineCompletionTriggerKind[\"Explicit\"] = 1] = \"Explicit\";\r\n})(InlineCompletionTriggerKind || (InlineCompletionTriggerKind = {}));\r\nexport var SignatureHelpTriggerKind;\r\n(function (SignatureHelpTriggerKind) {\r\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"Invoke\"] = 1] = \"Invoke\";\r\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"TriggerCharacter\"] = 2] = \"TriggerCharacter\";\r\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"ContentChange\"] = 3] = \"ContentChange\";\r\n})(SignatureHelpTriggerKind || (SignatureHelpTriggerKind = {}));\r\n/**\r\n * A document highlight kind.\r\n */\r\nexport var DocumentHighlightKind;\r\n(function (DocumentHighlightKind) {\r\n /**\r\n * A textual occurrence.\r\n */\r\n DocumentHighlightKind[DocumentHighlightKind[\"Text\"] = 0] = \"Text\";\r\n /**\r\n * Read-access of a symbol, like reading a variable.\r\n */\r\n DocumentHighlightKind[DocumentHighlightKind[\"Read\"] = 1] = \"Read\";\r\n /**\r\n * Write-access of a symbol, like writing to a variable.\r\n */\r\n DocumentHighlightKind[DocumentHighlightKind[\"Write\"] = 2] = \"Write\";\r\n})(DocumentHighlightKind || (DocumentHighlightKind = {}));\r\n/**\r\n * @internal\r\n */\r\nexport function isLocationLink(thing) {\r\n return thing\r\n && URI.isUri(thing.uri)\r\n && Range.isIRange(thing.range)\r\n && (Range.isIRange(thing.originSelectionRange) || Range.isIRange(thing.targetSelectionRange));\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport var SymbolKinds;\r\n(function (SymbolKinds) {\r\n const byName = new Map();\r\n byName.set('file', 0 /* File */);\r\n byName.set('module', 1 /* Module */);\r\n byName.set('namespace', 2 /* Namespace */);\r\n byName.set('package', 3 /* Package */);\r\n byName.set('class', 4 /* Class */);\r\n byName.set('method', 5 /* Method */);\r\n byName.set('property', 6 /* Property */);\r\n byName.set('field', 7 /* Field */);\r\n byName.set('constructor', 8 /* Constructor */);\r\n byName.set('enum', 9 /* Enum */);\r\n byName.set('interface', 10 /* Interface */);\r\n byName.set('function', 11 /* Function */);\r\n byName.set('variable', 12 /* Variable */);\r\n byName.set('constant', 13 /* Constant */);\r\n byName.set('string', 14 /* String */);\r\n byName.set('number', 15 /* Number */);\r\n byName.set('boolean', 16 /* Boolean */);\r\n byName.set('array', 17 /* Array */);\r\n byName.set('object', 18 /* Object */);\r\n byName.set('key', 19 /* Key */);\r\n byName.set('null', 20 /* Null */);\r\n byName.set('enum-member', 21 /* EnumMember */);\r\n byName.set('struct', 22 /* Struct */);\r\n byName.set('event', 23 /* Event */);\r\n byName.set('operator', 24 /* Operator */);\r\n byName.set('type-parameter', 25 /* TypeParameter */);\r\n const byKind = new Map();\r\n byKind.set(0 /* File */, 'file');\r\n byKind.set(1 /* Module */, 'module');\r\n byKind.set(2 /* Namespace */, 'namespace');\r\n byKind.set(3 /* Package */, 'package');\r\n byKind.set(4 /* Class */, 'class');\r\n byKind.set(5 /* Method */, 'method');\r\n byKind.set(6 /* Property */, 'property');\r\n byKind.set(7 /* Field */, 'field');\r\n byKind.set(8 /* Constructor */, 'constructor');\r\n byKind.set(9 /* Enum */, 'enum');\r\n byKind.set(10 /* Interface */, 'interface');\r\n byKind.set(11 /* Function */, 'function');\r\n byKind.set(12 /* Variable */, 'variable');\r\n byKind.set(13 /* Constant */, 'constant');\r\n byKind.set(14 /* String */, 'string');\r\n byKind.set(15 /* Number */, 'number');\r\n byKind.set(16 /* Boolean */, 'boolean');\r\n byKind.set(17 /* Array */, 'array');\r\n byKind.set(18 /* Object */, 'object');\r\n byKind.set(19 /* Key */, 'key');\r\n byKind.set(20 /* Null */, 'null');\r\n byKind.set(21 /* EnumMember */, 'enum-member');\r\n byKind.set(22 /* Struct */, 'struct');\r\n byKind.set(23 /* Event */, 'event');\r\n byKind.set(24 /* Operator */, 'operator');\r\n byKind.set(25 /* TypeParameter */, 'type-parameter');\r\n /**\r\n * @internal\r\n */\r\n function fromString(value) {\r\n return byName.get(value);\r\n }\r\n SymbolKinds.fromString = fromString;\r\n /**\r\n * @internal\r\n */\r\n function toString(kind) {\r\n return byKind.get(kind);\r\n }\r\n SymbolKinds.toString = toString;\r\n /**\r\n * @internal\r\n */\r\n function toCssClassName(kind, inline) {\r\n const symbolName = byKind.get(kind);\r\n let codicon = symbolName && iconRegistry.get('symbol-' + symbolName);\r\n if (!codicon) {\r\n console.info('No codicon found for SymbolKind ' + kind);\r\n codicon = Codicon.symbolProperty;\r\n }\r\n return `${inline ? 'inline' : 'block'} ${codicon.classNames}`;\r\n }\r\n SymbolKinds.toCssClassName = toCssClassName;\r\n})(SymbolKinds || (SymbolKinds = {}));\r\nexport class FoldingRangeKind {\r\n /**\r\n * Creates a new {@link FoldingRangeKind}.\r\n *\r\n * @param value of the kind.\r\n */\r\n constructor(value) {\r\n this.value = value;\r\n }\r\n}\r\n/**\r\n * Kind for folding range representing a comment. The value of the kind is 'comment'.\r\n */\r\nFoldingRangeKind.Comment = new FoldingRangeKind('comment');\r\n/**\r\n * Kind for folding range representing a import. The value of the kind is 'imports'.\r\n */\r\nFoldingRangeKind.Imports = new FoldingRangeKind('imports');\r\n/**\r\n * Kind for folding range representing regions (for example marked by `#region`, `#endregion`).\r\n * The value of the kind is 'region'.\r\n */\r\nFoldingRangeKind.Region = new FoldingRangeKind('region');\r\nexport var InlayHintKind;\r\n(function (InlayHintKind) {\r\n InlayHintKind[InlayHintKind[\"Other\"] = 0] = \"Other\";\r\n InlayHintKind[InlayHintKind[\"Type\"] = 1] = \"Type\";\r\n InlayHintKind[InlayHintKind[\"Parameter\"] = 2] = \"Parameter\";\r\n})(InlayHintKind || (InlayHintKind = {}));\r\n// --- feature registries ------\r\n/**\r\n * @internal\r\n */\r\nexport const ReferenceProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const RenameProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const CompletionProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const InlineCompletionsProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const SignatureHelpProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const HoverProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const DocumentSymbolProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const DocumentHighlightProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const LinkedEditingRangeProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const DefinitionProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const DeclarationProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const ImplementationProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const TypeDefinitionProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const CodeLensProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const InlayHintsProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const CodeActionProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const DocumentFormattingEditProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const DocumentRangeFormattingEditProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const OnTypeFormattingEditProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const LinkProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const ColorProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const SelectionRangeRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const FoldingRangeProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const DocumentSemanticTokensProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const DocumentRangeSemanticTokensProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const TokenizationRegistry = new TokenizationRegistryImpl();\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Token, TokenizationResult, TokenizationResult2 } from '../core/token.js';\r\nimport { LanguageIdentifier } from '../modes.js';\r\nclass NullStateImpl {\r\n clone() {\r\n return this;\r\n }\r\n equals(other) {\r\n return (this === other);\r\n }\r\n}\r\nexport const NULL_STATE = new NullStateImpl();\r\nexport const NULL_MODE_ID = 'vs.editor.nullMode';\r\nexport const NULL_LANGUAGE_IDENTIFIER = new LanguageIdentifier(NULL_MODE_ID, 0 /* Null */);\r\nexport function nullTokenize(modeId, buffer, state, deltaOffset) {\r\n return new TokenizationResult([new Token(deltaOffset, '', modeId)], state);\r\n}\r\nexport function nullTokenize2(languageId, buffer, state, deltaOffset) {\r\n let tokens = new Uint32Array(2);\r\n tokens[0] = deltaOffset;\r\n tokens[1] = ((languageId << 0 /* LANGUAGEID_OFFSET */)\r\n | (0 /* Other */ << 8 /* TOKEN_TYPE_OFFSET */)\r\n | (0 /* None */ << 11 /* FONT_STYLE_OFFSET */)\r\n | (1 /* DefaultForeground */ << 14 /* FOREGROUND_OFFSET */)\r\n | (2 /* DefaultBackground */ << 23 /* BACKGROUND_OFFSET */)) >>> 0;\r\n return new TokenizationResult2(tokens, state === null ? NULL_STATE : state);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nexport const ID_EDITOR_WORKER_SERVICE = 'editorWorkerService';\r\nexport const IEditorWorkerService = createDecorator(ID_EDITOR_WORKER_SERVICE);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nexport const IModeService = createDecorator('modeService');\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nexport const ITextModelService = createDecorator('textModelService');\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { transformErrorForSerialization } from '../errors.js';\r\nimport { Disposable } from '../lifecycle.js';\r\nimport { isWeb } from '../platform.js';\r\nimport * as types from '../types.js';\r\nconst INITIALIZE = '$initialize';\r\nlet webWorkerWarningLogged = false;\r\nexport function logOnceWebWorkerWarning(err) {\r\n if (!isWeb) {\r\n // running tests\r\n return;\r\n }\r\n if (!webWorkerWarningLogged) {\r\n webWorkerWarningLogged = true;\r\n console.warn('Could not create web worker(s). Falling back to loading web worker code in main thread, which might cause UI freezes. Please see https://github.com/microsoft/monaco-editor#faq');\r\n }\r\n console.warn(err.message);\r\n}\r\nclass SimpleWorkerProtocol {\r\n constructor(handler) {\r\n this._workerId = -1;\r\n this._handler = handler;\r\n this._lastSentReq = 0;\r\n this._pendingReplies = Object.create(null);\r\n }\r\n setWorkerId(workerId) {\r\n this._workerId = workerId;\r\n }\r\n sendMessage(method, args) {\r\n let req = String(++this._lastSentReq);\r\n return new Promise((resolve, reject) => {\r\n this._pendingReplies[req] = {\r\n resolve: resolve,\r\n reject: reject\r\n };\r\n this._send({\r\n vsWorker: this._workerId,\r\n req: req,\r\n method: method,\r\n args: args\r\n });\r\n });\r\n }\r\n handleMessage(message) {\r\n if (!message || !message.vsWorker) {\r\n return;\r\n }\r\n if (this._workerId !== -1 && message.vsWorker !== this._workerId) {\r\n return;\r\n }\r\n this._handleMessage(message);\r\n }\r\n _handleMessage(msg) {\r\n if (msg.seq) {\r\n let replyMessage = msg;\r\n if (!this._pendingReplies[replyMessage.seq]) {\r\n console.warn('Got reply to unknown seq');\r\n return;\r\n }\r\n let reply = this._pendingReplies[replyMessage.seq];\r\n delete this._pendingReplies[replyMessage.seq];\r\n if (replyMessage.err) {\r\n let err = replyMessage.err;\r\n if (replyMessage.err.$isError) {\r\n err = new Error();\r\n err.name = replyMessage.err.name;\r\n err.message = replyMessage.err.message;\r\n err.stack = replyMessage.err.stack;\r\n }\r\n reply.reject(err);\r\n return;\r\n }\r\n reply.resolve(replyMessage.res);\r\n return;\r\n }\r\n let requestMessage = msg;\r\n let req = requestMessage.req;\r\n let result = this._handler.handleMessage(requestMessage.method, requestMessage.args);\r\n result.then((r) => {\r\n this._send({\r\n vsWorker: this._workerId,\r\n seq: req,\r\n res: r,\r\n err: undefined\r\n });\r\n }, (e) => {\r\n if (e.detail instanceof Error) {\r\n // Loading errors have a detail property that points to the actual error\r\n e.detail = transformErrorForSerialization(e.detail);\r\n }\r\n this._send({\r\n vsWorker: this._workerId,\r\n seq: req,\r\n res: undefined,\r\n err: transformErrorForSerialization(e)\r\n });\r\n });\r\n }\r\n _send(msg) {\r\n let transfer = [];\r\n if (msg.req) {\r\n const m = msg;\r\n for (let i = 0; i < m.args.length; i++) {\r\n if (m.args[i] instanceof ArrayBuffer) {\r\n transfer.push(m.args[i]);\r\n }\r\n }\r\n }\r\n else {\r\n const m = msg;\r\n if (m.res instanceof ArrayBuffer) {\r\n transfer.push(m.res);\r\n }\r\n }\r\n this._handler.sendMessage(msg, transfer);\r\n }\r\n}\r\n/**\r\n * Main thread side\r\n */\r\nexport class SimpleWorkerClient extends Disposable {\r\n constructor(workerFactory, moduleId, host) {\r\n super();\r\n let lazyProxyReject = null;\r\n this._worker = this._register(workerFactory.create('vs/base/common/worker/simpleWorker', (msg) => {\r\n this._protocol.handleMessage(msg);\r\n }, (err) => {\r\n // in Firefox, web workers fail lazily :(\r\n // we will reject the proxy\r\n if (lazyProxyReject) {\r\n lazyProxyReject(err);\r\n }\r\n }));\r\n this._protocol = new SimpleWorkerProtocol({\r\n sendMessage: (msg, transfer) => {\r\n this._worker.postMessage(msg, transfer);\r\n },\r\n handleMessage: (method, args) => {\r\n if (typeof host[method] !== 'function') {\r\n return Promise.reject(new Error('Missing method ' + method + ' on main thread host.'));\r\n }\r\n try {\r\n return Promise.resolve(host[method].apply(host, args));\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n });\r\n this._protocol.setWorkerId(this._worker.getId());\r\n // Gather loader configuration\r\n let loaderConfiguration = null;\r\n if (typeof self.require !== 'undefined' && typeof self.require.getConfig === 'function') {\r\n // Get the configuration from the Monaco AMD Loader\r\n loaderConfiguration = self.require.getConfig();\r\n }\r\n else if (typeof self.requirejs !== 'undefined') {\r\n // Get the configuration from requirejs\r\n loaderConfiguration = self.requirejs.s.contexts._.config;\r\n }\r\n const hostMethods = types.getAllMethodNames(host);\r\n // Send initialize message\r\n this._onModuleLoaded = this._protocol.sendMessage(INITIALIZE, [\r\n this._worker.getId(),\r\n JSON.parse(JSON.stringify(loaderConfiguration)),\r\n moduleId,\r\n hostMethods,\r\n ]);\r\n // Create proxy to loaded code\r\n const proxyMethodRequest = (method, args) => {\r\n return this._request(method, args);\r\n };\r\n this._lazyProxy = new Promise((resolve, reject) => {\r\n lazyProxyReject = reject;\r\n this._onModuleLoaded.then((availableMethods) => {\r\n resolve(types.createProxyObject(availableMethods, proxyMethodRequest));\r\n }, (e) => {\r\n reject(e);\r\n this._onError('Worker failed to load ' + moduleId, e);\r\n });\r\n });\r\n }\r\n getProxyObject() {\r\n return this._lazyProxy;\r\n }\r\n _request(method, args) {\r\n return new Promise((resolve, reject) => {\r\n this._onModuleLoaded.then(() => {\r\n this._protocol.sendMessage(method, args).then(resolve, reject);\r\n }, reject);\r\n });\r\n }\r\n _onError(message, error) {\r\n console.error(message);\r\n console.info(error);\r\n }\r\n}\r\n/**\r\n * Worker side\r\n */\r\nexport class SimpleWorkerServer {\r\n constructor(postMessage, requestHandlerFactory) {\r\n this._requestHandlerFactory = requestHandlerFactory;\r\n this._requestHandler = null;\r\n this._protocol = new SimpleWorkerProtocol({\r\n sendMessage: (msg, transfer) => {\r\n postMessage(msg, transfer);\r\n },\r\n handleMessage: (method, args) => this._handleMessage(method, args)\r\n });\r\n }\r\n onmessage(msg) {\r\n this._protocol.handleMessage(msg);\r\n }\r\n _handleMessage(method, args) {\r\n if (method === INITIALIZE) {\r\n return this.initialize(args[0], args[1], args[2], args[3]);\r\n }\r\n if (!this._requestHandler || typeof this._requestHandler[method] !== 'function') {\r\n return Promise.reject(new Error('Missing requestHandler or method: ' + method));\r\n }\r\n try {\r\n return Promise.resolve(this._requestHandler[method].apply(this._requestHandler, args));\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n initialize(workerId, loaderConfig, moduleId, hostMethods) {\r\n this._protocol.setWorkerId(workerId);\r\n const proxyMethodRequest = (method, args) => {\r\n return this._protocol.sendMessage(method, args);\r\n };\r\n const hostProxy = types.createProxyObject(hostMethods, proxyMethodRequest);\r\n if (this._requestHandlerFactory) {\r\n // static request handler\r\n this._requestHandler = this._requestHandlerFactory(hostProxy);\r\n return Promise.resolve(types.getAllMethodNames(this._requestHandler));\r\n }\r\n if (loaderConfig) {\r\n // Remove 'baseUrl', handling it is beyond scope for now\r\n if (typeof loaderConfig.baseUrl !== 'undefined') {\r\n delete loaderConfig['baseUrl'];\r\n }\r\n if (typeof loaderConfig.paths !== 'undefined') {\r\n if (typeof loaderConfig.paths.vs !== 'undefined') {\r\n delete loaderConfig.paths['vs'];\r\n }\r\n }\r\n if (typeof loaderConfig.trustedTypesPolicy !== undefined) {\r\n // don't use, it has been destroyed during serialize\r\n delete loaderConfig['trustedTypesPolicy'];\r\n }\r\n // Since this is in a web worker, enable catching errors\r\n loaderConfig.catchError = true;\r\n self.require.config(loaderConfig);\r\n }\r\n return new Promise((resolve, reject) => {\r\n // Use the global require to be sure to get the global config\r\n self.require([moduleId], (module) => {\r\n this._requestHandler = module.create(hostProxy);\r\n if (!this._requestHandler) {\r\n reject(new Error(`No RequestHandler!`));\r\n return;\r\n }\r\n resolve(types.getAllMethodNames(this._requestHandler));\r\n }, reject);\r\n });\r\n }\r\n}\r\n/**\r\n * Called on the worker side\r\n */\r\nexport function create(postMessage) {\r\n return new SimpleWorkerServer(postMessage, null);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar _a;\r\nimport { globals } from '../common/platform.js';\r\nimport { logOnceWebWorkerWarning } from '../common/worker/simpleWorker.js';\r\nconst ttPolicy = (_a = window.trustedTypes) === null || _a === void 0 ? void 0 : _a.createPolicy('defaultWorkerFactory', { createScriptURL: value => value });\r\nfunction getWorker(workerId, label) {\r\n // Option for hosts to overwrite the worker script (used in the standalone editor)\r\n if (globals.MonacoEnvironment) {\r\n if (typeof globals.MonacoEnvironment.getWorker === 'function') {\r\n return globals.MonacoEnvironment.getWorker(workerId, label);\r\n }\r\n if (typeof globals.MonacoEnvironment.getWorkerUrl === 'function') {\r\n const wokerUrl = globals.MonacoEnvironment.getWorkerUrl(workerId, label);\r\n return new Worker(ttPolicy ? ttPolicy.createScriptURL(wokerUrl) : wokerUrl, { name: label });\r\n }\r\n }\r\n // ESM-comment-begin\r\n // \tif (typeof require === 'function') {\r\n // \t\t// check if the JS lives on a different origin\r\n // \t\tconst workerMain = require.toUrl('./' + workerId); // explicitly using require.toUrl(), see https://github.com/microsoft/vscode/issues/107440#issuecomment-698982321\r\n // \t\tconst workerUrl = getWorkerBootstrapUrl(workerMain, label);\r\n // \t\treturn new Worker(ttPolicy ? ttPolicy.createScriptURL(workerUrl) as unknown as string : workerUrl, { name: label });\r\n // \t}\r\n // ESM-comment-end\r\n throw new Error(`You must define a function MonacoEnvironment.getWorkerUrl or MonacoEnvironment.getWorker`);\r\n}\r\n// ESM-comment-begin\r\n// export function getWorkerBootstrapUrl(scriptPath: string, label: string): string {\r\n// \tif (/^((http:)|(https:)|(file:))/.test(scriptPath) && scriptPath.substring(0, self.origin.length) !== self.origin) {\r\n// \t\t// this is the cross-origin case\r\n// \t\t// i.e. the webpage is running at a different origin than where the scripts are loaded from\r\n// \t\tconst myPath = 'vs/base/worker/defaultWorkerFactory.js';\r\n// \t\tconst workerBaseUrl = require.toUrl(myPath).slice(0, -myPath.length); // explicitly using require.toUrl(), see https://github.com/microsoft/vscode/issues/107440#issuecomment-698982321\r\n// \t\tconst js = `/*${label}*/self.MonacoEnvironment={baseUrl: '${workerBaseUrl}'};const ttPolicy = self.trustedTypes?.createPolicy('defaultWorkerFactory', { createScriptURL: value => value });importScripts(ttPolicy?.createScriptURL('${scriptPath}') ?? '${scriptPath}');/*${label}*/`;\r\n// \t\tconst blob = new Blob([js], { type: 'application/javascript' });\r\n// \t\treturn URL.createObjectURL(blob);\r\n// \t}\r\n// \treturn scriptPath + '#' + label;\r\n// }\r\n// ESM-comment-end\r\nfunction isPromiseLike(obj) {\r\n if (typeof obj.then === 'function') {\r\n return true;\r\n }\r\n return false;\r\n}\r\n/**\r\n * A worker that uses HTML5 web workers so that is has\r\n * its own global scope and its own thread.\r\n */\r\nclass WebWorker {\r\n constructor(moduleId, id, label, onMessageCallback, onErrorCallback) {\r\n this.id = id;\r\n const workerOrPromise = getWorker('workerMain.js', label);\r\n if (isPromiseLike(workerOrPromise)) {\r\n this.worker = workerOrPromise;\r\n }\r\n else {\r\n this.worker = Promise.resolve(workerOrPromise);\r\n }\r\n this.postMessage(moduleId, []);\r\n this.worker.then((w) => {\r\n w.onmessage = function (ev) {\r\n onMessageCallback(ev.data);\r\n };\r\n w.onmessageerror = onErrorCallback;\r\n if (typeof w.addEventListener === 'function') {\r\n w.addEventListener('error', onErrorCallback);\r\n }\r\n });\r\n }\r\n getId() {\r\n return this.id;\r\n }\r\n postMessage(message, transfer) {\r\n if (this.worker) {\r\n this.worker.then(w => w.postMessage(message, transfer));\r\n }\r\n }\r\n dispose() {\r\n if (this.worker) {\r\n this.worker.then(w => w.terminate());\r\n }\r\n this.worker = null;\r\n }\r\n}\r\nexport class DefaultWorkerFactory {\r\n constructor(label) {\r\n this._label = label;\r\n this._webWorkerFailedBeforeError = false;\r\n }\r\n create(moduleId, onMessageCallback, onErrorCallback) {\r\n let workerId = (++DefaultWorkerFactory.LAST_WORKER_ID);\r\n if (this._webWorkerFailedBeforeError) {\r\n throw this._webWorkerFailedBeforeError;\r\n }\r\n return new WebWorker(moduleId, workerId, this._label || 'anonymous' + workerId, onMessageCallback, (err) => {\r\n logOnceWebWorkerWarning(err);\r\n this._webWorkerFailedBeforeError = err;\r\n onErrorCallback(err);\r\n });\r\n }\r\n}\r\nDefaultWorkerFactory.LAST_WORKER_ID = 0;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/**\r\n * Describes what to do with the indentation when pressing Enter.\r\n */\r\nexport var IndentAction;\r\n(function (IndentAction) {\r\n /**\r\n * Insert new line and copy the previous line's indentation.\r\n */\r\n IndentAction[IndentAction[\"None\"] = 0] = \"None\";\r\n /**\r\n * Insert new line and indent once (relative to the previous line's indentation).\r\n */\r\n IndentAction[IndentAction[\"Indent\"] = 1] = \"Indent\";\r\n /**\r\n * Insert two new lines:\r\n * - the first one indented which will hold the cursor\r\n * - the second one at the same indentation level\r\n */\r\n IndentAction[IndentAction[\"IndentOutdent\"] = 2] = \"IndentOutdent\";\r\n /**\r\n * Insert new line and outdent once (relative to the previous line's indentation).\r\n */\r\n IndentAction[IndentAction[\"Outdent\"] = 3] = \"Outdent\";\r\n})(IndentAction || (IndentAction = {}));\r\n/**\r\n * @internal\r\n */\r\nexport class StandardAutoClosingPairConditional {\r\n constructor(source) {\r\n this._standardAutoClosingPairConditionalBrand = undefined;\r\n this.open = source.open;\r\n this.close = source.close;\r\n // initially allowed in all tokens\r\n this._standardTokenMask = 0;\r\n if (Array.isArray(source.notIn)) {\r\n for (let i = 0, len = source.notIn.length; i < len; i++) {\r\n const notIn = source.notIn[i];\r\n switch (notIn) {\r\n case 'string':\r\n this._standardTokenMask |= 2 /* String */;\r\n break;\r\n case 'comment':\r\n this._standardTokenMask |= 1 /* Comment */;\r\n break;\r\n case 'regex':\r\n this._standardTokenMask |= 4 /* RegEx */;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n isOK(standardToken) {\r\n return (this._standardTokenMask & standardToken) === 0;\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport class AutoClosingPairs {\r\n constructor(autoClosingPairs) {\r\n this.autoClosingPairsOpenByStart = new Map();\r\n this.autoClosingPairsOpenByEnd = new Map();\r\n this.autoClosingPairsCloseByStart = new Map();\r\n this.autoClosingPairsCloseByEnd = new Map();\r\n this.autoClosingPairsCloseSingleChar = new Map();\r\n for (const pair of autoClosingPairs) {\r\n appendEntry(this.autoClosingPairsOpenByStart, pair.open.charAt(0), pair);\r\n appendEntry(this.autoClosingPairsOpenByEnd, pair.open.charAt(pair.open.length - 1), pair);\r\n appendEntry(this.autoClosingPairsCloseByStart, pair.close.charAt(0), pair);\r\n appendEntry(this.autoClosingPairsCloseByEnd, pair.close.charAt(pair.close.length - 1), pair);\r\n if (pair.close.length === 1 && pair.open.length === 1) {\r\n appendEntry(this.autoClosingPairsCloseSingleChar, pair.close, pair);\r\n }\r\n }\r\n }\r\n}\r\nfunction appendEntry(target, key, value) {\r\n if (target.has(key)) {\r\n target.get(key).push(value);\r\n }\r\n else {\r\n target.set(key, [value]);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport function createScopedLineTokens(context, offset) {\r\n let tokenCount = context.getCount();\r\n let tokenIndex = context.findTokenIndexAtOffset(offset);\r\n let desiredLanguageId = context.getLanguageId(tokenIndex);\r\n let lastTokenIndex = tokenIndex;\r\n while (lastTokenIndex + 1 < tokenCount && context.getLanguageId(lastTokenIndex + 1) === desiredLanguageId) {\r\n lastTokenIndex++;\r\n }\r\n let firstTokenIndex = tokenIndex;\r\n while (firstTokenIndex > 0 && context.getLanguageId(firstTokenIndex - 1) === desiredLanguageId) {\r\n firstTokenIndex--;\r\n }\r\n return new ScopedLineTokens(context, desiredLanguageId, firstTokenIndex, lastTokenIndex + 1, context.getStartOffset(firstTokenIndex), context.getEndOffset(lastTokenIndex));\r\n}\r\nexport class ScopedLineTokens {\r\n constructor(actual, languageId, firstTokenIndex, lastTokenIndex, firstCharOffset, lastCharOffset) {\r\n this._scopedLineTokensBrand = undefined;\r\n this._actual = actual;\r\n this.languageId = languageId;\r\n this._firstTokenIndex = firstTokenIndex;\r\n this._lastTokenIndex = lastTokenIndex;\r\n this.firstCharOffset = firstCharOffset;\r\n this._lastCharOffset = lastCharOffset;\r\n }\r\n getLineContent() {\r\n const actualLineContent = this._actual.getLineContent();\r\n return actualLineContent.substring(this.firstCharOffset, this._lastCharOffset);\r\n }\r\n getActualLineContentBefore(offset) {\r\n const actualLineContent = this._actual.getLineContent();\r\n return actualLineContent.substring(0, this.firstCharOffset + offset);\r\n }\r\n getTokenCount() {\r\n return this._lastTokenIndex - this._firstTokenIndex;\r\n }\r\n findTokenIndexAtOffset(offset) {\r\n return this._actual.findTokenIndexAtOffset(offset + this.firstCharOffset) - this._firstTokenIndex;\r\n }\r\n getStandardTokenType(tokenIndex) {\r\n return this._actual.getStandardTokenType(tokenIndex + this._firstTokenIndex);\r\n }\r\n}\r\nexport function ignoreBracketsInToken(standardTokenType) {\r\n return (standardTokenType & 7 /* value */) !== 0;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { StandardAutoClosingPairConditional } from '../languageConfiguration.js';\r\nexport class CharacterPairSupport {\r\n constructor(config) {\r\n if (config.autoClosingPairs) {\r\n this._autoClosingPairs = config.autoClosingPairs.map(el => new StandardAutoClosingPairConditional(el));\r\n }\r\n else if (config.brackets) {\r\n this._autoClosingPairs = config.brackets.map(b => new StandardAutoClosingPairConditional({ open: b[0], close: b[1] }));\r\n }\r\n else {\r\n this._autoClosingPairs = [];\r\n }\r\n if (config.__electricCharacterSupport && config.__electricCharacterSupport.docComment) {\r\n const docComment = config.__electricCharacterSupport.docComment;\r\n // IDocComment is legacy, only partially supported\r\n this._autoClosingPairs.push(new StandardAutoClosingPairConditional({ open: docComment.open, close: docComment.close || '' }));\r\n }\r\n this._autoCloseBefore = typeof config.autoCloseBefore === 'string' ? config.autoCloseBefore : CharacterPairSupport.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED;\r\n this._surroundingPairs = config.surroundingPairs || this._autoClosingPairs;\r\n }\r\n getAutoClosingPairs() {\r\n return this._autoClosingPairs;\r\n }\r\n getAutoCloseBeforeSet() {\r\n return this._autoCloseBefore;\r\n }\r\n static shouldAutoClosePair(autoClosingPair, context, column) {\r\n // Always complete on empty line\r\n if (context.getTokenCount() === 0) {\r\n return true;\r\n }\r\n const tokenIndex = context.findTokenIndexAtOffset(column - 2);\r\n const standardTokenType = context.getStandardTokenType(tokenIndex);\r\n return autoClosingPair.isOK(standardTokenType);\r\n }\r\n getSurroundingPairs() {\r\n return this._surroundingPairs;\r\n }\r\n}\r\nCharacterPairSupport.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED = ';:.,=}])> \\n\\t';\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport * as platform from '../../../base/common/platform.js';\r\nimport * as buffer from '../../../base/common/buffer.js';\r\nlet _utf16LE_TextDecoder;\r\nfunction getUTF16LE_TextDecoder() {\r\n if (!_utf16LE_TextDecoder) {\r\n _utf16LE_TextDecoder = new TextDecoder('UTF-16LE');\r\n }\r\n return _utf16LE_TextDecoder;\r\n}\r\nlet _utf16BE_TextDecoder;\r\nfunction getUTF16BE_TextDecoder() {\r\n if (!_utf16BE_TextDecoder) {\r\n _utf16BE_TextDecoder = new TextDecoder('UTF-16BE');\r\n }\r\n return _utf16BE_TextDecoder;\r\n}\r\nlet _platformTextDecoder;\r\nexport function getPlatformTextDecoder() {\r\n if (!_platformTextDecoder) {\r\n _platformTextDecoder = platform.isLittleEndian() ? getUTF16LE_TextDecoder() : getUTF16BE_TextDecoder();\r\n }\r\n return _platformTextDecoder;\r\n}\r\nexport const hasTextDecoder = (typeof TextDecoder !== 'undefined');\r\nexport let createStringBuilder;\r\nexport let decodeUTF16LE;\r\nif (hasTextDecoder) {\r\n createStringBuilder = (capacity) => new StringBuilder(capacity);\r\n decodeUTF16LE = standardDecodeUTF16LE;\r\n}\r\nelse {\r\n createStringBuilder = (capacity) => new CompatStringBuilder();\r\n decodeUTF16LE = compatDecodeUTF16LE;\r\n}\r\nfunction standardDecodeUTF16LE(source, offset, len) {\r\n const view = new Uint16Array(source.buffer, offset, len);\r\n if (len > 0 && (view[0] === 0xFEFF || view[0] === 0xFFFE)) {\r\n // UTF16 sometimes starts with a BOM https://de.wikipedia.org/wiki/Byte_Order_Mark\r\n // It looks like TextDecoder.decode will eat up a leading BOM (0xFEFF or 0xFFFE)\r\n // We don't want that behavior because we know the string is UTF16LE and the BOM should be maintained\r\n // So we use the manual decoder\r\n return compatDecodeUTF16LE(source, offset, len);\r\n }\r\n return getUTF16LE_TextDecoder().decode(view);\r\n}\r\nfunction compatDecodeUTF16LE(source, offset, len) {\r\n let result = [];\r\n let resultLen = 0;\r\n for (let i = 0; i < len; i++) {\r\n const charCode = buffer.readUInt16LE(source, offset);\r\n offset += 2;\r\n result[resultLen++] = String.fromCharCode(charCode);\r\n }\r\n return result.join('');\r\n}\r\nclass StringBuilder {\r\n constructor(capacity) {\r\n this._capacity = capacity | 0;\r\n this._buffer = new Uint16Array(this._capacity);\r\n this._completedStrings = null;\r\n this._bufferLength = 0;\r\n }\r\n reset() {\r\n this._completedStrings = null;\r\n this._bufferLength = 0;\r\n }\r\n build() {\r\n if (this._completedStrings !== null) {\r\n this._flushBuffer();\r\n return this._completedStrings.join('');\r\n }\r\n return this._buildBuffer();\r\n }\r\n _buildBuffer() {\r\n if (this._bufferLength === 0) {\r\n return '';\r\n }\r\n const view = new Uint16Array(this._buffer.buffer, 0, this._bufferLength);\r\n return getPlatformTextDecoder().decode(view);\r\n }\r\n _flushBuffer() {\r\n const bufferString = this._buildBuffer();\r\n this._bufferLength = 0;\r\n if (this._completedStrings === null) {\r\n this._completedStrings = [bufferString];\r\n }\r\n else {\r\n this._completedStrings[this._completedStrings.length] = bufferString;\r\n }\r\n }\r\n write1(charCode) {\r\n const remainingSpace = this._capacity - this._bufferLength;\r\n if (remainingSpace <= 1) {\r\n if (remainingSpace === 0 || strings.isHighSurrogate(charCode)) {\r\n this._flushBuffer();\r\n }\r\n }\r\n this._buffer[this._bufferLength++] = charCode;\r\n }\r\n appendASCII(charCode) {\r\n if (this._bufferLength === this._capacity) {\r\n // buffer is full\r\n this._flushBuffer();\r\n }\r\n this._buffer[this._bufferLength++] = charCode;\r\n }\r\n appendASCIIString(str) {\r\n const strLen = str.length;\r\n if (this._bufferLength + strLen >= this._capacity) {\r\n // This string does not fit in the remaining buffer space\r\n this._flushBuffer();\r\n this._completedStrings[this._completedStrings.length] = str;\r\n return;\r\n }\r\n for (let i = 0; i < strLen; i++) {\r\n this._buffer[this._bufferLength++] = str.charCodeAt(i);\r\n }\r\n }\r\n}\r\nclass CompatStringBuilder {\r\n constructor() {\r\n this._pieces = [];\r\n this._piecesLen = 0;\r\n }\r\n reset() {\r\n this._pieces = [];\r\n this._piecesLen = 0;\r\n }\r\n build() {\r\n return this._pieces.join('');\r\n }\r\n write1(charCode) {\r\n this._pieces[this._piecesLen++] = String.fromCharCode(charCode);\r\n }\r\n appendASCII(charCode) {\r\n this._pieces[this._piecesLen++] = String.fromCharCode(charCode);\r\n }\r\n appendASCIIString(str) {\r\n this._pieces[this._piecesLen++] = str;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../../base/common/strings.js';\r\nimport * as stringBuilder from '../../core/stringBuilder.js';\r\nimport { Range } from '../../core/range.js';\r\nexport class RichEditBracket {\r\n constructor(languageIdentifier, index, open, close, forwardRegex, reversedRegex) {\r\n this._richEditBracketBrand = undefined;\r\n this.languageIdentifier = languageIdentifier;\r\n this.index = index;\r\n this.open = open;\r\n this.close = close;\r\n this.forwardRegex = forwardRegex;\r\n this.reversedRegex = reversedRegex;\r\n this._openSet = RichEditBracket._toSet(this.open);\r\n this._closeSet = RichEditBracket._toSet(this.close);\r\n }\r\n isOpen(text) {\r\n return this._openSet.has(text);\r\n }\r\n isClose(text) {\r\n return this._closeSet.has(text);\r\n }\r\n static _toSet(arr) {\r\n const result = new Set();\r\n for (const element of arr) {\r\n result.add(element);\r\n }\r\n return result;\r\n }\r\n}\r\nfunction groupFuzzyBrackets(brackets) {\r\n const N = brackets.length;\r\n brackets = brackets.map(b => [b[0].toLowerCase(), b[1].toLowerCase()]);\r\n const group = [];\r\n for (let i = 0; i < N; i++) {\r\n group[i] = i;\r\n }\r\n const areOverlapping = (a, b) => {\r\n const [aOpen, aClose] = a;\r\n const [bOpen, bClose] = b;\r\n return (aOpen === bOpen || aOpen === bClose || aClose === bOpen || aClose === bClose);\r\n };\r\n const mergeGroups = (g1, g2) => {\r\n const newG = Math.min(g1, g2);\r\n const oldG = Math.max(g1, g2);\r\n for (let i = 0; i < N; i++) {\r\n if (group[i] === oldG) {\r\n group[i] = newG;\r\n }\r\n }\r\n };\r\n // group together brackets that have the same open or the same close sequence\r\n for (let i = 0; i < N; i++) {\r\n const a = brackets[i];\r\n for (let j = i + 1; j < N; j++) {\r\n const b = brackets[j];\r\n if (areOverlapping(a, b)) {\r\n mergeGroups(group[i], group[j]);\r\n }\r\n }\r\n }\r\n const result = [];\r\n for (let g = 0; g < N; g++) {\r\n let currentOpen = [];\r\n let currentClose = [];\r\n for (let i = 0; i < N; i++) {\r\n if (group[i] === g) {\r\n const [open, close] = brackets[i];\r\n currentOpen.push(open);\r\n currentClose.push(close);\r\n }\r\n }\r\n if (currentOpen.length > 0) {\r\n result.push({\r\n open: currentOpen,\r\n close: currentClose\r\n });\r\n }\r\n }\r\n return result;\r\n}\r\nexport class RichEditBrackets {\r\n constructor(languageIdentifier, _brackets) {\r\n this._richEditBracketsBrand = undefined;\r\n const brackets = groupFuzzyBrackets(_brackets);\r\n this.brackets = brackets.map((b, index) => {\r\n return new RichEditBracket(languageIdentifier, index, b.open, b.close, getRegexForBracketPair(b.open, b.close, brackets, index), getReversedRegexForBracketPair(b.open, b.close, brackets, index));\r\n });\r\n this.forwardRegex = getRegexForBrackets(this.brackets);\r\n this.reversedRegex = getReversedRegexForBrackets(this.brackets);\r\n this.textIsBracket = {};\r\n this.textIsOpenBracket = {};\r\n this.maxBracketLength = 0;\r\n for (const bracket of this.brackets) {\r\n for (const open of bracket.open) {\r\n this.textIsBracket[open] = bracket;\r\n this.textIsOpenBracket[open] = true;\r\n this.maxBracketLength = Math.max(this.maxBracketLength, open.length);\r\n }\r\n for (const close of bracket.close) {\r\n this.textIsBracket[close] = bracket;\r\n this.textIsOpenBracket[close] = false;\r\n this.maxBracketLength = Math.max(this.maxBracketLength, close.length);\r\n }\r\n }\r\n }\r\n}\r\nfunction collectSuperstrings(str, brackets, currentIndex, dest) {\r\n for (let i = 0, len = brackets.length; i < len; i++) {\r\n if (i === currentIndex) {\r\n continue;\r\n }\r\n const bracket = brackets[i];\r\n for (const open of bracket.open) {\r\n if (open.indexOf(str) >= 0) {\r\n dest.push(open);\r\n }\r\n }\r\n for (const close of bracket.close) {\r\n if (close.indexOf(str) >= 0) {\r\n dest.push(close);\r\n }\r\n }\r\n }\r\n}\r\nfunction lengthcmp(a, b) {\r\n return a.length - b.length;\r\n}\r\nfunction unique(arr) {\r\n if (arr.length <= 1) {\r\n return arr;\r\n }\r\n const result = [];\r\n const seen = new Set();\r\n for (const element of arr) {\r\n if (seen.has(element)) {\r\n continue;\r\n }\r\n result.push(element);\r\n seen.add(element);\r\n }\r\n return result;\r\n}\r\nfunction getRegexForBracketPair(open, close, brackets, currentIndex) {\r\n // search in all brackets for other brackets that are a superstring of these brackets\r\n let pieces = [];\r\n pieces = pieces.concat(open);\r\n pieces = pieces.concat(close);\r\n for (let i = 0, len = pieces.length; i < len; i++) {\r\n collectSuperstrings(pieces[i], brackets, currentIndex, pieces);\r\n }\r\n pieces = unique(pieces);\r\n pieces.sort(lengthcmp);\r\n pieces.reverse();\r\n return createBracketOrRegExp(pieces);\r\n}\r\nfunction getReversedRegexForBracketPair(open, close, brackets, currentIndex) {\r\n // search in all brackets for other brackets that are a superstring of these brackets\r\n let pieces = [];\r\n pieces = pieces.concat(open);\r\n pieces = pieces.concat(close);\r\n for (let i = 0, len = pieces.length; i < len; i++) {\r\n collectSuperstrings(pieces[i], brackets, currentIndex, pieces);\r\n }\r\n pieces = unique(pieces);\r\n pieces.sort(lengthcmp);\r\n pieces.reverse();\r\n return createBracketOrRegExp(pieces.map(toReversedString));\r\n}\r\nfunction getRegexForBrackets(brackets) {\r\n let pieces = [];\r\n for (const bracket of brackets) {\r\n for (const open of bracket.open) {\r\n pieces.push(open);\r\n }\r\n for (const close of bracket.close) {\r\n pieces.push(close);\r\n }\r\n }\r\n pieces = unique(pieces);\r\n return createBracketOrRegExp(pieces);\r\n}\r\nfunction getReversedRegexForBrackets(brackets) {\r\n let pieces = [];\r\n for (const bracket of brackets) {\r\n for (const open of bracket.open) {\r\n pieces.push(open);\r\n }\r\n for (const close of bracket.close) {\r\n pieces.push(close);\r\n }\r\n }\r\n pieces = unique(pieces);\r\n return createBracketOrRegExp(pieces.map(toReversedString));\r\n}\r\nfunction prepareBracketForRegExp(str) {\r\n // This bracket pair uses letters like e.g. \"begin\" - \"end\"\r\n const insertWordBoundaries = (/^[\\w ]+$/.test(str));\r\n str = strings.escapeRegExpCharacters(str);\r\n return (insertWordBoundaries ? `\\\\b${str}\\\\b` : str);\r\n}\r\nfunction createBracketOrRegExp(pieces) {\r\n let regexStr = `(${pieces.map(prepareBracketForRegExp).join(')|(')})`;\r\n return strings.createRegExp(regexStr, true);\r\n}\r\nconst toReversedString = (function () {\r\n function reverse(str) {\r\n if (stringBuilder.hasTextDecoder) {\r\n // create a Uint16Array and then use a TextDecoder to create a string\r\n const arr = new Uint16Array(str.length);\r\n let offset = 0;\r\n for (let i = str.length - 1; i >= 0; i--) {\r\n arr[offset++] = str.charCodeAt(i);\r\n }\r\n return stringBuilder.getPlatformTextDecoder().decode(arr);\r\n }\r\n else {\r\n let result = [], resultLen = 0;\r\n for (let i = str.length - 1; i >= 0; i--) {\r\n result[resultLen++] = str.charAt(i);\r\n }\r\n return result.join('');\r\n }\r\n }\r\n let lastInput = null;\r\n let lastOutput = null;\r\n return function toReversedString(str) {\r\n if (lastInput !== str) {\r\n lastInput = str;\r\n lastOutput = reverse(lastInput);\r\n }\r\n return lastOutput;\r\n };\r\n})();\r\nexport class BracketsUtils {\r\n static _findPrevBracketInText(reversedBracketRegex, lineNumber, reversedText, offset) {\r\n let m = reversedText.match(reversedBracketRegex);\r\n if (!m) {\r\n return null;\r\n }\r\n let matchOffset = reversedText.length - (m.index || 0);\r\n let matchLength = m[0].length;\r\n let absoluteMatchOffset = offset + matchOffset;\r\n return new Range(lineNumber, absoluteMatchOffset - matchLength + 1, lineNumber, absoluteMatchOffset + 1);\r\n }\r\n static findPrevBracketInRange(reversedBracketRegex, lineNumber, lineText, startOffset, endOffset) {\r\n // Because JS does not support backwards regex search, we search forwards in a reversed string with a reversed regex ;)\r\n const reversedLineText = toReversedString(lineText);\r\n const reversedSubstr = reversedLineText.substring(lineText.length - endOffset, lineText.length - startOffset);\r\n return this._findPrevBracketInText(reversedBracketRegex, lineNumber, reversedSubstr, startOffset);\r\n }\r\n static findNextBracketInText(bracketRegex, lineNumber, text, offset) {\r\n let m = text.match(bracketRegex);\r\n if (!m) {\r\n return null;\r\n }\r\n let matchOffset = m.index || 0;\r\n let matchLength = m[0].length;\r\n if (matchLength === 0) {\r\n return null;\r\n }\r\n let absoluteMatchOffset = offset + matchOffset;\r\n return new Range(lineNumber, absoluteMatchOffset + 1, lineNumber, absoluteMatchOffset + 1 + matchLength);\r\n }\r\n static findNextBracketInRange(bracketRegex, lineNumber, lineText, startOffset, endOffset) {\r\n const substr = lineText.substring(startOffset, endOffset);\r\n return this.findNextBracketInText(bracketRegex, lineNumber, substr, startOffset);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { ignoreBracketsInToken } from '../supports.js';\r\nimport { BracketsUtils } from './richEditBrackets.js';\r\nexport class BracketElectricCharacterSupport {\r\n constructor(richEditBrackets) {\r\n this._richEditBrackets = richEditBrackets;\r\n }\r\n getElectricCharacters() {\r\n let result = [];\r\n if (this._richEditBrackets) {\r\n for (const bracket of this._richEditBrackets.brackets) {\r\n for (const close of bracket.close) {\r\n const lastChar = close.charAt(close.length - 1);\r\n result.push(lastChar);\r\n }\r\n }\r\n }\r\n // Filter duplicate entries\r\n result = result.filter((item, pos, array) => {\r\n return array.indexOf(item) === pos;\r\n });\r\n return result;\r\n }\r\n onElectricCharacter(character, context, column) {\r\n if (!this._richEditBrackets || this._richEditBrackets.brackets.length === 0) {\r\n return null;\r\n }\r\n const tokenIndex = context.findTokenIndexAtOffset(column - 1);\r\n if (ignoreBracketsInToken(context.getStandardTokenType(tokenIndex))) {\r\n return null;\r\n }\r\n const reversedBracketRegex = this._richEditBrackets.reversedRegex;\r\n const text = context.getLineContent().substring(0, column - 1) + character;\r\n const r = BracketsUtils.findPrevBracketInRange(reversedBracketRegex, 1, text, 0, text.length);\r\n if (!r) {\r\n return null;\r\n }\r\n const bracketText = text.substring(r.startColumn - 1, r.endColumn - 1).toLowerCase();\r\n const isOpen = this._richEditBrackets.textIsOpenBracket[bracketText];\r\n if (isOpen) {\r\n return null;\r\n }\r\n const textBeforeBracket = context.getActualLineContentBefore(r.startColumn - 1);\r\n if (!/^\\s*$/.test(textBeforeBracket)) {\r\n // There is other text on the line before the bracket\r\n return null;\r\n }\r\n return {\r\n matchOpenBracket: bracketText\r\n };\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nfunction resetGlobalRegex(reg) {\r\n if (reg.global) {\r\n reg.lastIndex = 0;\r\n }\r\n return true;\r\n}\r\nexport class IndentRulesSupport {\r\n constructor(indentationRules) {\r\n this._indentationRules = indentationRules;\r\n }\r\n shouldIncrease(text) {\r\n if (this._indentationRules) {\r\n if (this._indentationRules.increaseIndentPattern && resetGlobalRegex(this._indentationRules.increaseIndentPattern) && this._indentationRules.increaseIndentPattern.test(text)) {\r\n return true;\r\n }\r\n // if (this._indentationRules.indentNextLinePattern && this._indentationRules.indentNextLinePattern.test(text)) {\r\n // \treturn true;\r\n // }\r\n }\r\n return false;\r\n }\r\n shouldDecrease(text) {\r\n if (this._indentationRules && this._indentationRules.decreaseIndentPattern && resetGlobalRegex(this._indentationRules.decreaseIndentPattern) && this._indentationRules.decreaseIndentPattern.test(text)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n shouldIndentNextLine(text) {\r\n if (this._indentationRules && this._indentationRules.indentNextLinePattern && resetGlobalRegex(this._indentationRules.indentNextLinePattern) && this._indentationRules.indentNextLinePattern.test(text)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n shouldIgnore(text) {\r\n // the text matches `unIndentedLinePattern`\r\n if (this._indentationRules && this._indentationRules.unIndentedLinePattern && resetGlobalRegex(this._indentationRules.unIndentedLinePattern) && this._indentationRules.unIndentedLinePattern.test(text)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n getIndentMetadata(text) {\r\n let ret = 0;\r\n if (this.shouldIncrease(text)) {\r\n ret += 1 /* INCREASE_MASK */;\r\n }\r\n if (this.shouldDecrease(text)) {\r\n ret += 2 /* DECREASE_MASK */;\r\n }\r\n if (this.shouldIndentNextLine(text)) {\r\n ret += 4 /* INDENT_NEXTLINE_MASK */;\r\n }\r\n if (this.shouldIgnore(text)) {\r\n ret += 8 /* UNINDENT_MASK */;\r\n }\r\n return ret;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\r\nimport * as strings from '../../../../base/common/strings.js';\r\nimport { IndentAction } from '../languageConfiguration.js';\r\nexport class OnEnterSupport {\r\n constructor(opts) {\r\n opts = opts || {};\r\n opts.brackets = opts.brackets || [\r\n ['(', ')'],\r\n ['{', '}'],\r\n ['[', ']']\r\n ];\r\n this._brackets = [];\r\n opts.brackets.forEach((bracket) => {\r\n const openRegExp = OnEnterSupport._createOpenBracketRegExp(bracket[0]);\r\n const closeRegExp = OnEnterSupport._createCloseBracketRegExp(bracket[1]);\r\n if (openRegExp && closeRegExp) {\r\n this._brackets.push({\r\n open: bracket[0],\r\n openRegExp: openRegExp,\r\n close: bracket[1],\r\n closeRegExp: closeRegExp,\r\n });\r\n }\r\n });\r\n this._regExpRules = opts.onEnterRules || [];\r\n }\r\n onEnter(autoIndent, previousLineText, beforeEnterText, afterEnterText) {\r\n // (1): `regExpRules`\r\n if (autoIndent >= 3 /* Advanced */) {\r\n for (let i = 0, len = this._regExpRules.length; i < len; i++) {\r\n let rule = this._regExpRules[i];\r\n const regResult = [{\r\n reg: rule.beforeText,\r\n text: beforeEnterText\r\n }, {\r\n reg: rule.afterText,\r\n text: afterEnterText\r\n }, {\r\n reg: rule.previousLineText,\r\n text: previousLineText\r\n }].every((obj) => {\r\n if (!obj.reg) {\r\n return true;\r\n }\r\n obj.reg.lastIndex = 0; // To disable the effect of the \"g\" flag.\r\n return obj.reg.test(obj.text);\r\n });\r\n if (regResult) {\r\n return rule.action;\r\n }\r\n }\r\n }\r\n // (2): Special indent-outdent\r\n if (autoIndent >= 2 /* Brackets */) {\r\n if (beforeEnterText.length > 0 && afterEnterText.length > 0) {\r\n for (let i = 0, len = this._brackets.length; i < len; i++) {\r\n let bracket = this._brackets[i];\r\n if (bracket.openRegExp.test(beforeEnterText) && bracket.closeRegExp.test(afterEnterText)) {\r\n return { indentAction: IndentAction.IndentOutdent };\r\n }\r\n }\r\n }\r\n }\r\n // (4): Open bracket based logic\r\n if (autoIndent >= 2 /* Brackets */) {\r\n if (beforeEnterText.length > 0) {\r\n for (let i = 0, len = this._brackets.length; i < len; i++) {\r\n let bracket = this._brackets[i];\r\n if (bracket.openRegExp.test(beforeEnterText)) {\r\n return { indentAction: IndentAction.Indent };\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n static _createOpenBracketRegExp(bracket) {\r\n let str = strings.escapeRegExpCharacters(bracket);\r\n if (!/\\B/.test(str.charAt(0))) {\r\n str = '\\\\b' + str;\r\n }\r\n str += '\\\\s*$';\r\n return OnEnterSupport._safeRegExp(str);\r\n }\r\n static _createCloseBracketRegExp(bracket) {\r\n let str = strings.escapeRegExpCharacters(bracket);\r\n if (!/\\B/.test(str.charAt(str.length - 1))) {\r\n str = str + '\\\\b';\r\n }\r\n str = '^\\\\s*' + str;\r\n return OnEnterSupport._safeRegExp(str);\r\n }\r\n static _safeRegExp(def) {\r\n try {\r\n return new RegExp(def);\r\n }\r\n catch (err) {\r\n onUnexpectedError(err);\r\n return null;\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { toDisposable } from '../../../base/common/lifecycle.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { DEFAULT_WORD_REGEXP, ensureValidWordDefinition } from '../model/wordHelper.js';\r\nimport { IndentAction, AutoClosingPairs } from './languageConfiguration.js';\r\nimport { createScopedLineTokens } from './supports.js';\r\nimport { CharacterPairSupport } from './supports/characterPair.js';\r\nimport { BracketElectricCharacterSupport } from './supports/electricCharacter.js';\r\nimport { IndentRulesSupport } from './supports/indentRules.js';\r\nimport { OnEnterSupport } from './supports/onEnter.js';\r\nimport { RichEditBrackets } from './supports/richEditBrackets.js';\r\nexport class RichEditSupport {\r\n constructor(languageIdentifier, rawConf) {\r\n this._languageIdentifier = languageIdentifier;\r\n this._brackets = null;\r\n this._electricCharacter = null;\r\n this._conf = rawConf;\r\n this._onEnterSupport = (this._conf.brackets || this._conf.indentationRules || this._conf.onEnterRules ? new OnEnterSupport(this._conf) : null);\r\n this.comments = RichEditSupport._handleComments(this._conf);\r\n this.characterPair = new CharacterPairSupport(this._conf);\r\n this.wordDefinition = this._conf.wordPattern || DEFAULT_WORD_REGEXP;\r\n this.indentationRules = this._conf.indentationRules;\r\n if (this._conf.indentationRules) {\r\n this.indentRulesSupport = new IndentRulesSupport(this._conf.indentationRules);\r\n }\r\n else {\r\n this.indentRulesSupport = null;\r\n }\r\n this.foldingRules = this._conf.folding || {};\r\n }\r\n get brackets() {\r\n if (!this._brackets && this._conf.brackets) {\r\n this._brackets = new RichEditBrackets(this._languageIdentifier, this._conf.brackets);\r\n }\r\n return this._brackets;\r\n }\r\n get electricCharacter() {\r\n if (!this._electricCharacter) {\r\n this._electricCharacter = new BracketElectricCharacterSupport(this.brackets);\r\n }\r\n return this._electricCharacter;\r\n }\r\n onEnter(autoIndent, previousLineText, beforeEnterText, afterEnterText) {\r\n if (!this._onEnterSupport) {\r\n return null;\r\n }\r\n return this._onEnterSupport.onEnter(autoIndent, previousLineText, beforeEnterText, afterEnterText);\r\n }\r\n static _handleComments(conf) {\r\n let commentRule = conf.comments;\r\n if (!commentRule) {\r\n return null;\r\n }\r\n // comment configuration\r\n let comments = {};\r\n if (commentRule.lineComment) {\r\n comments.lineCommentToken = commentRule.lineComment;\r\n }\r\n if (commentRule.blockComment) {\r\n let [blockStart, blockEnd] = commentRule.blockComment;\r\n comments.blockCommentStartToken = blockStart;\r\n comments.blockCommentEndToken = blockEnd;\r\n }\r\n return comments;\r\n }\r\n}\r\nexport class LanguageConfigurationChangeEvent {\r\n constructor(languageIdentifier) {\r\n this.languageIdentifier = languageIdentifier;\r\n }\r\n}\r\nclass LanguageConfigurationEntry {\r\n constructor(configuration, priority, order) {\r\n this.configuration = configuration;\r\n this.priority = priority;\r\n this.order = order;\r\n }\r\n static cmp(a, b) {\r\n if (a.priority === b.priority) {\r\n // higher order last\r\n return a.order - b.order;\r\n }\r\n // higher priority last\r\n return a.priority - b.priority;\r\n }\r\n}\r\nclass LanguageConfigurationEntries {\r\n constructor(languageIdentifier) {\r\n this.languageIdentifier = languageIdentifier;\r\n this._resolved = null;\r\n this._entries = [];\r\n this._order = 0;\r\n this._resolved = null;\r\n }\r\n register(configuration, priority) {\r\n const entry = new LanguageConfigurationEntry(configuration, priority, ++this._order);\r\n this._entries.push(entry);\r\n this._resolved = null;\r\n return toDisposable(() => {\r\n for (let i = 0; i < this._entries.length; i++) {\r\n if (this._entries[i] === entry) {\r\n this._entries.splice(i, 1);\r\n this._resolved = null;\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n getRichEditSupport() {\r\n if (!this._resolved) {\r\n const config = this._resolve();\r\n if (config) {\r\n this._resolved = new RichEditSupport(this.languageIdentifier, config);\r\n }\r\n }\r\n return this._resolved;\r\n }\r\n _resolve() {\r\n if (this._entries.length === 0) {\r\n return null;\r\n }\r\n this._entries.sort(LanguageConfigurationEntry.cmp);\r\n const result = {};\r\n for (const entry of this._entries) {\r\n const conf = entry.configuration;\r\n result.comments = conf.comments || result.comments;\r\n result.brackets = conf.brackets || result.brackets;\r\n result.wordPattern = conf.wordPattern || result.wordPattern;\r\n result.indentationRules = conf.indentationRules || result.indentationRules;\r\n result.onEnterRules = conf.onEnterRules || result.onEnterRules;\r\n result.autoClosingPairs = conf.autoClosingPairs || result.autoClosingPairs;\r\n result.surroundingPairs = conf.surroundingPairs || result.surroundingPairs;\r\n result.autoCloseBefore = conf.autoCloseBefore || result.autoCloseBefore;\r\n result.folding = conf.folding || result.folding;\r\n result.__electricCharacterSupport = conf.__electricCharacterSupport || result.__electricCharacterSupport;\r\n }\r\n return result;\r\n }\r\n}\r\nexport class LanguageConfigurationRegistryImpl {\r\n constructor() {\r\n this._entries2 = new Map();\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n }\r\n /**\r\n * @param priority Use a higher number for higher priority\r\n */\r\n register(languageIdentifier, configuration, priority = 0) {\r\n let entries = this._entries2.get(languageIdentifier.id);\r\n if (!entries) {\r\n entries = new LanguageConfigurationEntries(languageIdentifier);\r\n this._entries2.set(languageIdentifier.id, entries);\r\n }\r\n const disposable = entries.register(configuration, priority);\r\n this._onDidChange.fire(new LanguageConfigurationChangeEvent(languageIdentifier));\r\n return toDisposable(() => {\r\n disposable.dispose();\r\n this._onDidChange.fire(new LanguageConfigurationChangeEvent(languageIdentifier));\r\n });\r\n }\r\n _getRichEditSupport(languageId) {\r\n const entries = this._entries2.get(languageId);\r\n return entries ? entries.getRichEditSupport() : null;\r\n }\r\n getIndentationRules(languageId) {\r\n const value = this._getRichEditSupport(languageId);\r\n return value ? value.indentationRules || null : null;\r\n }\r\n // begin electricCharacter\r\n _getElectricCharacterSupport(languageId) {\r\n let value = this._getRichEditSupport(languageId);\r\n if (!value) {\r\n return null;\r\n }\r\n return value.electricCharacter || null;\r\n }\r\n getElectricCharacters(languageId) {\r\n let electricCharacterSupport = this._getElectricCharacterSupport(languageId);\r\n if (!electricCharacterSupport) {\r\n return [];\r\n }\r\n return electricCharacterSupport.getElectricCharacters();\r\n }\r\n /**\r\n * Should return opening bracket type to match indentation with\r\n */\r\n onElectricCharacter(character, context, column) {\r\n let scopedLineTokens = createScopedLineTokens(context, column - 1);\r\n let electricCharacterSupport = this._getElectricCharacterSupport(scopedLineTokens.languageId);\r\n if (!electricCharacterSupport) {\r\n return null;\r\n }\r\n return electricCharacterSupport.onElectricCharacter(character, scopedLineTokens, column - scopedLineTokens.firstCharOffset);\r\n }\r\n // end electricCharacter\r\n getComments(languageId) {\r\n let value = this._getRichEditSupport(languageId);\r\n if (!value) {\r\n return null;\r\n }\r\n return value.comments || null;\r\n }\r\n // begin characterPair\r\n _getCharacterPairSupport(languageId) {\r\n let value = this._getRichEditSupport(languageId);\r\n if (!value) {\r\n return null;\r\n }\r\n return value.characterPair || null;\r\n }\r\n getAutoClosingPairs(languageId) {\r\n const characterPairSupport = this._getCharacterPairSupport(languageId);\r\n return new AutoClosingPairs(characterPairSupport ? characterPairSupport.getAutoClosingPairs() : []);\r\n }\r\n getAutoCloseBeforeSet(languageId) {\r\n let characterPairSupport = this._getCharacterPairSupport(languageId);\r\n if (!characterPairSupport) {\r\n return CharacterPairSupport.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED;\r\n }\r\n return characterPairSupport.getAutoCloseBeforeSet();\r\n }\r\n getSurroundingPairs(languageId) {\r\n let characterPairSupport = this._getCharacterPairSupport(languageId);\r\n if (!characterPairSupport) {\r\n return [];\r\n }\r\n return characterPairSupport.getSurroundingPairs();\r\n }\r\n shouldAutoClosePair(autoClosingPair, context, column) {\r\n const scopedLineTokens = createScopedLineTokens(context, column - 1);\r\n return CharacterPairSupport.shouldAutoClosePair(autoClosingPair, scopedLineTokens, column - scopedLineTokens.firstCharOffset);\r\n }\r\n // end characterPair\r\n getWordDefinition(languageId) {\r\n let value = this._getRichEditSupport(languageId);\r\n if (!value) {\r\n return ensureValidWordDefinition(null);\r\n }\r\n return ensureValidWordDefinition(value.wordDefinition || null);\r\n }\r\n getFoldingRules(languageId) {\r\n let value = this._getRichEditSupport(languageId);\r\n if (!value) {\r\n return {};\r\n }\r\n return value.foldingRules;\r\n }\r\n // begin Indent Rules\r\n getIndentRulesSupport(languageId) {\r\n let value = this._getRichEditSupport(languageId);\r\n if (!value) {\r\n return null;\r\n }\r\n return value.indentRulesSupport || null;\r\n }\r\n /**\r\n * Get nearest preceiding line which doesn't match unIndentPattern or contains all whitespace.\r\n * Result:\r\n * -1: run into the boundary of embedded languages\r\n * 0: every line above are invalid\r\n * else: nearest preceding line of the same language\r\n */\r\n getPrecedingValidLine(model, lineNumber, indentRulesSupport) {\r\n let languageID = model.getLanguageIdAtPosition(lineNumber, 0);\r\n if (lineNumber > 1) {\r\n let lastLineNumber;\r\n let resultLineNumber = -1;\r\n for (lastLineNumber = lineNumber - 1; lastLineNumber >= 1; lastLineNumber--) {\r\n if (model.getLanguageIdAtPosition(lastLineNumber, 0) !== languageID) {\r\n return resultLineNumber;\r\n }\r\n let text = model.getLineContent(lastLineNumber);\r\n if (indentRulesSupport.shouldIgnore(text) || /^\\s+$/.test(text) || text === '') {\r\n resultLineNumber = lastLineNumber;\r\n continue;\r\n }\r\n return lastLineNumber;\r\n }\r\n }\r\n return -1;\r\n }\r\n /**\r\n * Get inherited indentation from above lines.\r\n * 1. Find the nearest preceding line which doesn't match unIndentedLinePattern.\r\n * 2. If this line matches indentNextLinePattern or increaseIndentPattern, it means that the indent level of `lineNumber` should be 1 greater than this line.\r\n * 3. If this line doesn't match any indent rules\r\n * a. check whether the line above it matches indentNextLinePattern\r\n * b. If not, the indent level of this line is the result\r\n * c. If so, it means the indent of this line is *temporary*, go upward utill we find a line whose indent is not temporary (the same workflow a -> b -> c).\r\n * 4. Otherwise, we fail to get an inherited indent from aboves. Return null and we should not touch the indent of `lineNumber`\r\n *\r\n * This function only return the inherited indent based on above lines, it doesn't check whether current line should decrease or not.\r\n */\r\n getInheritIndentForLine(autoIndent, model, lineNumber, honorIntentialIndent = true) {\r\n if (autoIndent < 4 /* Full */) {\r\n return null;\r\n }\r\n const indentRulesSupport = this.getIndentRulesSupport(model.getLanguageIdentifier().id);\r\n if (!indentRulesSupport) {\r\n return null;\r\n }\r\n if (lineNumber <= 1) {\r\n return {\r\n indentation: '',\r\n action: null\r\n };\r\n }\r\n const precedingUnIgnoredLine = this.getPrecedingValidLine(model, lineNumber, indentRulesSupport);\r\n if (precedingUnIgnoredLine < 0) {\r\n return null;\r\n }\r\n else if (precedingUnIgnoredLine < 1) {\r\n return {\r\n indentation: '',\r\n action: null\r\n };\r\n }\r\n const precedingUnIgnoredLineContent = model.getLineContent(precedingUnIgnoredLine);\r\n if (indentRulesSupport.shouldIncrease(precedingUnIgnoredLineContent) || indentRulesSupport.shouldIndentNextLine(precedingUnIgnoredLineContent)) {\r\n return {\r\n indentation: strings.getLeadingWhitespace(precedingUnIgnoredLineContent),\r\n action: IndentAction.Indent,\r\n line: precedingUnIgnoredLine\r\n };\r\n }\r\n else if (indentRulesSupport.shouldDecrease(precedingUnIgnoredLineContent)) {\r\n return {\r\n indentation: strings.getLeadingWhitespace(precedingUnIgnoredLineContent),\r\n action: null,\r\n line: precedingUnIgnoredLine\r\n };\r\n }\r\n else {\r\n // precedingUnIgnoredLine can not be ignored.\r\n // it doesn't increase indent of following lines\r\n // it doesn't increase just next line\r\n // so current line is not affect by precedingUnIgnoredLine\r\n // and then we should get a correct inheritted indentation from above lines\r\n if (precedingUnIgnoredLine === 1) {\r\n return {\r\n indentation: strings.getLeadingWhitespace(model.getLineContent(precedingUnIgnoredLine)),\r\n action: null,\r\n line: precedingUnIgnoredLine\r\n };\r\n }\r\n const previousLine = precedingUnIgnoredLine - 1;\r\n const previousLineIndentMetadata = indentRulesSupport.getIndentMetadata(model.getLineContent(previousLine));\r\n if (!(previousLineIndentMetadata & (1 /* INCREASE_MASK */ | 2 /* DECREASE_MASK */)) &&\r\n (previousLineIndentMetadata & 4 /* INDENT_NEXTLINE_MASK */)) {\r\n let stopLine = 0;\r\n for (let i = previousLine - 1; i > 0; i--) {\r\n if (indentRulesSupport.shouldIndentNextLine(model.getLineContent(i))) {\r\n continue;\r\n }\r\n stopLine = i;\r\n break;\r\n }\r\n return {\r\n indentation: strings.getLeadingWhitespace(model.getLineContent(stopLine + 1)),\r\n action: null,\r\n line: stopLine + 1\r\n };\r\n }\r\n if (honorIntentialIndent) {\r\n return {\r\n indentation: strings.getLeadingWhitespace(model.getLineContent(precedingUnIgnoredLine)),\r\n action: null,\r\n line: precedingUnIgnoredLine\r\n };\r\n }\r\n else {\r\n // search from precedingUnIgnoredLine until we find one whose indent is not temporary\r\n for (let i = precedingUnIgnoredLine; i > 0; i--) {\r\n const lineContent = model.getLineContent(i);\r\n if (indentRulesSupport.shouldIncrease(lineContent)) {\r\n return {\r\n indentation: strings.getLeadingWhitespace(lineContent),\r\n action: IndentAction.Indent,\r\n line: i\r\n };\r\n }\r\n else if (indentRulesSupport.shouldIndentNextLine(lineContent)) {\r\n let stopLine = 0;\r\n for (let j = i - 1; j > 0; j--) {\r\n if (indentRulesSupport.shouldIndentNextLine(model.getLineContent(i))) {\r\n continue;\r\n }\r\n stopLine = j;\r\n break;\r\n }\r\n return {\r\n indentation: strings.getLeadingWhitespace(model.getLineContent(stopLine + 1)),\r\n action: null,\r\n line: stopLine + 1\r\n };\r\n }\r\n else if (indentRulesSupport.shouldDecrease(lineContent)) {\r\n return {\r\n indentation: strings.getLeadingWhitespace(lineContent),\r\n action: null,\r\n line: i\r\n };\r\n }\r\n }\r\n return {\r\n indentation: strings.getLeadingWhitespace(model.getLineContent(1)),\r\n action: null,\r\n line: 1\r\n };\r\n }\r\n }\r\n }\r\n getGoodIndentForLine(autoIndent, virtualModel, languageId, lineNumber, indentConverter) {\r\n if (autoIndent < 4 /* Full */) {\r\n return null;\r\n }\r\n const richEditSupport = this._getRichEditSupport(languageId);\r\n if (!richEditSupport) {\r\n return null;\r\n }\r\n const indentRulesSupport = this.getIndentRulesSupport(languageId);\r\n if (!indentRulesSupport) {\r\n return null;\r\n }\r\n const indent = this.getInheritIndentForLine(autoIndent, virtualModel, lineNumber);\r\n const lineContent = virtualModel.getLineContent(lineNumber);\r\n if (indent) {\r\n const inheritLine = indent.line;\r\n if (inheritLine !== undefined) {\r\n const enterResult = richEditSupport.onEnter(autoIndent, '', virtualModel.getLineContent(inheritLine), '');\r\n if (enterResult) {\r\n let indentation = strings.getLeadingWhitespace(virtualModel.getLineContent(inheritLine));\r\n if (enterResult.removeText) {\r\n indentation = indentation.substring(0, indentation.length - enterResult.removeText);\r\n }\r\n if ((enterResult.indentAction === IndentAction.Indent) ||\r\n (enterResult.indentAction === IndentAction.IndentOutdent)) {\r\n indentation = indentConverter.shiftIndent(indentation);\r\n }\r\n else if (enterResult.indentAction === IndentAction.Outdent) {\r\n indentation = indentConverter.unshiftIndent(indentation);\r\n }\r\n if (indentRulesSupport.shouldDecrease(lineContent)) {\r\n indentation = indentConverter.unshiftIndent(indentation);\r\n }\r\n if (enterResult.appendText) {\r\n indentation += enterResult.appendText;\r\n }\r\n return strings.getLeadingWhitespace(indentation);\r\n }\r\n }\r\n if (indentRulesSupport.shouldDecrease(lineContent)) {\r\n if (indent.action === IndentAction.Indent) {\r\n return indent.indentation;\r\n }\r\n else {\r\n return indentConverter.unshiftIndent(indent.indentation);\r\n }\r\n }\r\n else {\r\n if (indent.action === IndentAction.Indent) {\r\n return indentConverter.shiftIndent(indent.indentation);\r\n }\r\n else {\r\n return indent.indentation;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n getIndentForEnter(autoIndent, model, range, indentConverter) {\r\n if (autoIndent < 4 /* Full */) {\r\n return null;\r\n }\r\n model.forceTokenization(range.startLineNumber);\r\n const lineTokens = model.getLineTokens(range.startLineNumber);\r\n const scopedLineTokens = createScopedLineTokens(lineTokens, range.startColumn - 1);\r\n const scopedLineText = scopedLineTokens.getLineContent();\r\n let embeddedLanguage = false;\r\n let beforeEnterText;\r\n if (scopedLineTokens.firstCharOffset > 0 && lineTokens.getLanguageId(0) !== scopedLineTokens.languageId) {\r\n // we are in the embeded language content\r\n embeddedLanguage = true; // if embeddedLanguage is true, then we don't touch the indentation of current line\r\n beforeEnterText = scopedLineText.substr(0, range.startColumn - 1 - scopedLineTokens.firstCharOffset);\r\n }\r\n else {\r\n beforeEnterText = lineTokens.getLineContent().substring(0, range.startColumn - 1);\r\n }\r\n let afterEnterText;\r\n if (range.isEmpty()) {\r\n afterEnterText = scopedLineText.substr(range.startColumn - 1 - scopedLineTokens.firstCharOffset);\r\n }\r\n else {\r\n const endScopedLineTokens = this.getScopedLineTokens(model, range.endLineNumber, range.endColumn);\r\n afterEnterText = endScopedLineTokens.getLineContent().substr(range.endColumn - 1 - scopedLineTokens.firstCharOffset);\r\n }\r\n const indentRulesSupport = this.getIndentRulesSupport(scopedLineTokens.languageId);\r\n if (!indentRulesSupport) {\r\n return null;\r\n }\r\n const beforeEnterResult = beforeEnterText;\r\n const beforeEnterIndent = strings.getLeadingWhitespace(beforeEnterText);\r\n const virtualModel = {\r\n getLineTokens: (lineNumber) => {\r\n return model.getLineTokens(lineNumber);\r\n },\r\n getLanguageIdentifier: () => {\r\n return model.getLanguageIdentifier();\r\n },\r\n getLanguageIdAtPosition: (lineNumber, column) => {\r\n return model.getLanguageIdAtPosition(lineNumber, column);\r\n },\r\n getLineContent: (lineNumber) => {\r\n if (lineNumber === range.startLineNumber) {\r\n return beforeEnterResult;\r\n }\r\n else {\r\n return model.getLineContent(lineNumber);\r\n }\r\n }\r\n };\r\n const currentLineIndent = strings.getLeadingWhitespace(lineTokens.getLineContent());\r\n const afterEnterAction = this.getInheritIndentForLine(autoIndent, virtualModel, range.startLineNumber + 1);\r\n if (!afterEnterAction) {\r\n const beforeEnter = embeddedLanguage ? currentLineIndent : beforeEnterIndent;\r\n return {\r\n beforeEnter: beforeEnter,\r\n afterEnter: beforeEnter\r\n };\r\n }\r\n let afterEnterIndent = embeddedLanguage ? currentLineIndent : afterEnterAction.indentation;\r\n if (afterEnterAction.action === IndentAction.Indent) {\r\n afterEnterIndent = indentConverter.shiftIndent(afterEnterIndent);\r\n }\r\n if (indentRulesSupport.shouldDecrease(afterEnterText)) {\r\n afterEnterIndent = indentConverter.unshiftIndent(afterEnterIndent);\r\n }\r\n return {\r\n beforeEnter: embeddedLanguage ? currentLineIndent : beforeEnterIndent,\r\n afterEnter: afterEnterIndent\r\n };\r\n }\r\n /**\r\n * We should always allow intentional indentation. It means, if users change the indentation of `lineNumber` and the content of\r\n * this line doesn't match decreaseIndentPattern, we should not adjust the indentation.\r\n */\r\n getIndentActionForType(autoIndent, model, range, ch, indentConverter) {\r\n if (autoIndent < 4 /* Full */) {\r\n return null;\r\n }\r\n const scopedLineTokens = this.getScopedLineTokens(model, range.startLineNumber, range.startColumn);\r\n if (scopedLineTokens.firstCharOffset) {\r\n // this line has mixed languages and indentation rules will not work\r\n return null;\r\n }\r\n const indentRulesSupport = this.getIndentRulesSupport(scopedLineTokens.languageId);\r\n if (!indentRulesSupport) {\r\n return null;\r\n }\r\n const scopedLineText = scopedLineTokens.getLineContent();\r\n const beforeTypeText = scopedLineText.substr(0, range.startColumn - 1 - scopedLineTokens.firstCharOffset);\r\n // selection support\r\n let afterTypeText;\r\n if (range.isEmpty()) {\r\n afterTypeText = scopedLineText.substr(range.startColumn - 1 - scopedLineTokens.firstCharOffset);\r\n }\r\n else {\r\n const endScopedLineTokens = this.getScopedLineTokens(model, range.endLineNumber, range.endColumn);\r\n afterTypeText = endScopedLineTokens.getLineContent().substr(range.endColumn - 1 - scopedLineTokens.firstCharOffset);\r\n }\r\n // If previous content already matches decreaseIndentPattern, it means indentation of this line should already be adjusted\r\n // Users might change the indentation by purpose and we should honor that instead of readjusting.\r\n if (!indentRulesSupport.shouldDecrease(beforeTypeText + afterTypeText) && indentRulesSupport.shouldDecrease(beforeTypeText + ch + afterTypeText)) {\r\n // after typing `ch`, the content matches decreaseIndentPattern, we should adjust the indent to a good manner.\r\n // 1. Get inherited indent action\r\n const r = this.getInheritIndentForLine(autoIndent, model, range.startLineNumber, false);\r\n if (!r) {\r\n return null;\r\n }\r\n let indentation = r.indentation;\r\n if (r.action !== IndentAction.Indent) {\r\n indentation = indentConverter.unshiftIndent(indentation);\r\n }\r\n return indentation;\r\n }\r\n return null;\r\n }\r\n getIndentMetadata(model, lineNumber) {\r\n const indentRulesSupport = this.getIndentRulesSupport(model.getLanguageIdentifier().id);\r\n if (!indentRulesSupport) {\r\n return null;\r\n }\r\n if (lineNumber < 1 || lineNumber > model.getLineCount()) {\r\n return null;\r\n }\r\n return indentRulesSupport.getIndentMetadata(model.getLineContent(lineNumber));\r\n }\r\n // end Indent Rules\r\n // begin onEnter\r\n getEnterAction(autoIndent, model, range) {\r\n const scopedLineTokens = this.getScopedLineTokens(model, range.startLineNumber, range.startColumn);\r\n const richEditSupport = this._getRichEditSupport(scopedLineTokens.languageId);\r\n if (!richEditSupport) {\r\n return null;\r\n }\r\n const scopedLineText = scopedLineTokens.getLineContent();\r\n const beforeEnterText = scopedLineText.substr(0, range.startColumn - 1 - scopedLineTokens.firstCharOffset);\r\n // selection support\r\n let afterEnterText;\r\n if (range.isEmpty()) {\r\n afterEnterText = scopedLineText.substr(range.startColumn - 1 - scopedLineTokens.firstCharOffset);\r\n }\r\n else {\r\n const endScopedLineTokens = this.getScopedLineTokens(model, range.endLineNumber, range.endColumn);\r\n afterEnterText = endScopedLineTokens.getLineContent().substr(range.endColumn - 1 - scopedLineTokens.firstCharOffset);\r\n }\r\n let previousLineText = '';\r\n if (range.startLineNumber > 1 && scopedLineTokens.firstCharOffset === 0) {\r\n // This is not the first line and the entire line belongs to this mode\r\n const oneLineAboveScopedLineTokens = this.getScopedLineTokens(model, range.startLineNumber - 1);\r\n if (oneLineAboveScopedLineTokens.languageId === scopedLineTokens.languageId) {\r\n // The line above ends with text belonging to the same mode\r\n previousLineText = oneLineAboveScopedLineTokens.getLineContent();\r\n }\r\n }\r\n const enterResult = richEditSupport.onEnter(autoIndent, previousLineText, beforeEnterText, afterEnterText);\r\n if (!enterResult) {\r\n return null;\r\n }\r\n const indentAction = enterResult.indentAction;\r\n let appendText = enterResult.appendText;\r\n const removeText = enterResult.removeText || 0;\r\n // Here we add `\\t` to appendText first because enterAction is leveraging appendText and removeText to change indentation.\r\n if (!appendText) {\r\n if ((indentAction === IndentAction.Indent) ||\r\n (indentAction === IndentAction.IndentOutdent)) {\r\n appendText = '\\t';\r\n }\r\n else {\r\n appendText = '';\r\n }\r\n }\r\n else if (indentAction === IndentAction.Indent) {\r\n appendText = '\\t' + appendText;\r\n }\r\n let indentation = this.getIndentationAtPosition(model, range.startLineNumber, range.startColumn);\r\n if (removeText) {\r\n indentation = indentation.substring(0, indentation.length - removeText);\r\n }\r\n return {\r\n indentAction: indentAction,\r\n appendText: appendText,\r\n removeText: removeText,\r\n indentation: indentation\r\n };\r\n }\r\n getIndentationAtPosition(model, lineNumber, column) {\r\n const lineText = model.getLineContent(lineNumber);\r\n let indentation = strings.getLeadingWhitespace(lineText);\r\n if (indentation.length > column - 1) {\r\n indentation = indentation.substring(0, column - 1);\r\n }\r\n return indentation;\r\n }\r\n getScopedLineTokens(model, lineNumber, columnNumber) {\r\n model.forceTokenization(lineNumber);\r\n const lineTokens = model.getLineTokens(lineNumber);\r\n const column = (typeof columnNumber === 'undefined' ? model.getLineMaxColumn(lineNumber) - 1 : columnNumber - 1);\r\n return createScopedLineTokens(lineTokens, column);\r\n }\r\n // end onEnter\r\n getBracketsSupport(languageId) {\r\n const value = this._getRichEditSupport(languageId);\r\n if (!value) {\r\n return null;\r\n }\r\n return value.brackets || null;\r\n }\r\n}\r\nexport const LanguageConfigurationRegistry = new LanguageConfigurationRegistryImpl();\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/**\r\n * Represents information about a specific difference between two sequences.\r\n */\r\nexport class DiffChange {\r\n /**\r\n * Constructs a new DiffChange with the given sequence information\r\n * and content.\r\n */\r\n constructor(originalStart, originalLength, modifiedStart, modifiedLength) {\r\n //Debug.Assert(originalLength > 0 || modifiedLength > 0, \"originalLength and modifiedLength cannot both be <= 0\");\r\n this.originalStart = originalStart;\r\n this.originalLength = originalLength;\r\n this.modifiedStart = modifiedStart;\r\n this.modifiedLength = modifiedLength;\r\n }\r\n /**\r\n * The end point (exclusive) of the change in the original sequence.\r\n */\r\n getOriginalEnd() {\r\n return this.originalStart + this.originalLength;\r\n }\r\n /**\r\n * The end point (exclusive) of the change in the modified sequence.\r\n */\r\n getModifiedEnd() {\r\n return this.modifiedStart + this.modifiedLength;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { DiffChange } from './diffChange.js';\r\nimport { stringHash } from '../hash.js';\r\nexport class StringDiffSequence {\r\n constructor(source) {\r\n this.source = source;\r\n }\r\n getElements() {\r\n const source = this.source;\r\n const characters = new Int32Array(source.length);\r\n for (let i = 0, len = source.length; i < len; i++) {\r\n characters[i] = source.charCodeAt(i);\r\n }\r\n return characters;\r\n }\r\n}\r\nexport function stringDiff(original, modified, pretty) {\r\n return new LcsDiff(new StringDiffSequence(original), new StringDiffSequence(modified)).ComputeDiff(pretty).changes;\r\n}\r\n//\r\n// The code below has been ported from a C# implementation in VS\r\n//\r\nexport class Debug {\r\n static Assert(condition, message) {\r\n if (!condition) {\r\n throw new Error(message);\r\n }\r\n }\r\n}\r\nexport class MyArray {\r\n /**\r\n * Copies a range of elements from an Array starting at the specified source index and pastes\r\n * them to another Array starting at the specified destination index. The length and the indexes\r\n * are specified as 64-bit integers.\r\n * sourceArray:\r\n *\t\tThe Array that contains the data to copy.\r\n * sourceIndex:\r\n *\t\tA 64-bit integer that represents the index in the sourceArray at which copying begins.\r\n * destinationArray:\r\n *\t\tThe Array that receives the data.\r\n * destinationIndex:\r\n *\t\tA 64-bit integer that represents the index in the destinationArray at which storing begins.\r\n * length:\r\n *\t\tA 64-bit integer that represents the number of elements to copy.\r\n */\r\n static Copy(sourceArray, sourceIndex, destinationArray, destinationIndex, length) {\r\n for (let i = 0; i < length; i++) {\r\n destinationArray[destinationIndex + i] = sourceArray[sourceIndex + i];\r\n }\r\n }\r\n static Copy2(sourceArray, sourceIndex, destinationArray, destinationIndex, length) {\r\n for (let i = 0; i < length; i++) {\r\n destinationArray[destinationIndex + i] = sourceArray[sourceIndex + i];\r\n }\r\n }\r\n}\r\n/**\r\n * A utility class which helps to create the set of DiffChanges from\r\n * a difference operation. This class accepts original DiffElements and\r\n * modified DiffElements that are involved in a particular change. The\r\n * MarktNextChange() method can be called to mark the separation between\r\n * distinct changes. At the end, the Changes property can be called to retrieve\r\n * the constructed changes.\r\n */\r\nclass DiffChangeHelper {\r\n /**\r\n * Constructs a new DiffChangeHelper for the given DiffSequences.\r\n */\r\n constructor() {\r\n this.m_changes = [];\r\n this.m_originalStart = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n this.m_modifiedStart = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n this.m_originalCount = 0;\r\n this.m_modifiedCount = 0;\r\n }\r\n /**\r\n * Marks the beginning of the next change in the set of differences.\r\n */\r\n MarkNextChange() {\r\n // Only add to the list if there is something to add\r\n if (this.m_originalCount > 0 || this.m_modifiedCount > 0) {\r\n // Add the new change to our list\r\n this.m_changes.push(new DiffChange(this.m_originalStart, this.m_originalCount, this.m_modifiedStart, this.m_modifiedCount));\r\n }\r\n // Reset for the next change\r\n this.m_originalCount = 0;\r\n this.m_modifiedCount = 0;\r\n this.m_originalStart = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n this.m_modifiedStart = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n }\r\n /**\r\n * Adds the original element at the given position to the elements\r\n * affected by the current change. The modified index gives context\r\n * to the change position with respect to the original sequence.\r\n * @param originalIndex The index of the original element to add.\r\n * @param modifiedIndex The index of the modified element that provides corresponding position in the modified sequence.\r\n */\r\n AddOriginalElement(originalIndex, modifiedIndex) {\r\n // The 'true' start index is the smallest of the ones we've seen\r\n this.m_originalStart = Math.min(this.m_originalStart, originalIndex);\r\n this.m_modifiedStart = Math.min(this.m_modifiedStart, modifiedIndex);\r\n this.m_originalCount++;\r\n }\r\n /**\r\n * Adds the modified element at the given position to the elements\r\n * affected by the current change. The original index gives context\r\n * to the change position with respect to the modified sequence.\r\n * @param originalIndex The index of the original element that provides corresponding position in the original sequence.\r\n * @param modifiedIndex The index of the modified element to add.\r\n */\r\n AddModifiedElement(originalIndex, modifiedIndex) {\r\n // The 'true' start index is the smallest of the ones we've seen\r\n this.m_originalStart = Math.min(this.m_originalStart, originalIndex);\r\n this.m_modifiedStart = Math.min(this.m_modifiedStart, modifiedIndex);\r\n this.m_modifiedCount++;\r\n }\r\n /**\r\n * Retrieves all of the changes marked by the class.\r\n */\r\n getChanges() {\r\n if (this.m_originalCount > 0 || this.m_modifiedCount > 0) {\r\n // Finish up on whatever is left\r\n this.MarkNextChange();\r\n }\r\n return this.m_changes;\r\n }\r\n /**\r\n * Retrieves all of the changes marked by the class in the reverse order\r\n */\r\n getReverseChanges() {\r\n if (this.m_originalCount > 0 || this.m_modifiedCount > 0) {\r\n // Finish up on whatever is left\r\n this.MarkNextChange();\r\n }\r\n this.m_changes.reverse();\r\n return this.m_changes;\r\n }\r\n}\r\n/**\r\n * An implementation of the difference algorithm described in\r\n * \"An O(ND) Difference Algorithm and its variations\" by Eugene W. Myers\r\n */\r\nexport class LcsDiff {\r\n /**\r\n * Constructs the DiffFinder\r\n */\r\n constructor(originalSequence, modifiedSequence, continueProcessingPredicate = null) {\r\n this.ContinueProcessingPredicate = continueProcessingPredicate;\r\n this._originalSequence = originalSequence;\r\n this._modifiedSequence = modifiedSequence;\r\n const [originalStringElements, originalElementsOrHash, originalHasStrings] = LcsDiff._getElements(originalSequence);\r\n const [modifiedStringElements, modifiedElementsOrHash, modifiedHasStrings] = LcsDiff._getElements(modifiedSequence);\r\n this._hasStrings = (originalHasStrings && modifiedHasStrings);\r\n this._originalStringElements = originalStringElements;\r\n this._originalElementsOrHash = originalElementsOrHash;\r\n this._modifiedStringElements = modifiedStringElements;\r\n this._modifiedElementsOrHash = modifiedElementsOrHash;\r\n this.m_forwardHistory = [];\r\n this.m_reverseHistory = [];\r\n }\r\n static _isStringArray(arr) {\r\n return (arr.length > 0 && typeof arr[0] === 'string');\r\n }\r\n static _getElements(sequence) {\r\n const elements = sequence.getElements();\r\n if (LcsDiff._isStringArray(elements)) {\r\n const hashes = new Int32Array(elements.length);\r\n for (let i = 0, len = elements.length; i < len; i++) {\r\n hashes[i] = stringHash(elements[i], 0);\r\n }\r\n return [elements, hashes, true];\r\n }\r\n if (elements instanceof Int32Array) {\r\n return [[], elements, false];\r\n }\r\n return [[], new Int32Array(elements), false];\r\n }\r\n ElementsAreEqual(originalIndex, newIndex) {\r\n if (this._originalElementsOrHash[originalIndex] !== this._modifiedElementsOrHash[newIndex]) {\r\n return false;\r\n }\r\n return (this._hasStrings ? this._originalStringElements[originalIndex] === this._modifiedStringElements[newIndex] : true);\r\n }\r\n ElementsAreStrictEqual(originalIndex, newIndex) {\r\n if (!this.ElementsAreEqual(originalIndex, newIndex)) {\r\n return false;\r\n }\r\n const originalElement = LcsDiff._getStrictElement(this._originalSequence, originalIndex);\r\n const modifiedElement = LcsDiff._getStrictElement(this._modifiedSequence, newIndex);\r\n return (originalElement === modifiedElement);\r\n }\r\n static _getStrictElement(sequence, index) {\r\n if (typeof sequence.getStrictElement === 'function') {\r\n return sequence.getStrictElement(index);\r\n }\r\n return null;\r\n }\r\n OriginalElementsAreEqual(index1, index2) {\r\n if (this._originalElementsOrHash[index1] !== this._originalElementsOrHash[index2]) {\r\n return false;\r\n }\r\n return (this._hasStrings ? this._originalStringElements[index1] === this._originalStringElements[index2] : true);\r\n }\r\n ModifiedElementsAreEqual(index1, index2) {\r\n if (this._modifiedElementsOrHash[index1] !== this._modifiedElementsOrHash[index2]) {\r\n return false;\r\n }\r\n return (this._hasStrings ? this._modifiedStringElements[index1] === this._modifiedStringElements[index2] : true);\r\n }\r\n ComputeDiff(pretty) {\r\n return this._ComputeDiff(0, this._originalElementsOrHash.length - 1, 0, this._modifiedElementsOrHash.length - 1, pretty);\r\n }\r\n /**\r\n * Computes the differences between the original and modified input\r\n * sequences on the bounded range.\r\n * @returns An array of the differences between the two input sequences.\r\n */\r\n _ComputeDiff(originalStart, originalEnd, modifiedStart, modifiedEnd, pretty) {\r\n const quitEarlyArr = [false];\r\n let changes = this.ComputeDiffRecursive(originalStart, originalEnd, modifiedStart, modifiedEnd, quitEarlyArr);\r\n if (pretty) {\r\n // We have to clean up the computed diff to be more intuitive\r\n // but it turns out this cannot be done correctly until the entire set\r\n // of diffs have been computed\r\n changes = this.PrettifyChanges(changes);\r\n }\r\n return {\r\n quitEarly: quitEarlyArr[0],\r\n changes: changes\r\n };\r\n }\r\n /**\r\n * Private helper method which computes the differences on the bounded range\r\n * recursively.\r\n * @returns An array of the differences between the two input sequences.\r\n */\r\n ComputeDiffRecursive(originalStart, originalEnd, modifiedStart, modifiedEnd, quitEarlyArr) {\r\n quitEarlyArr[0] = false;\r\n // Find the start of the differences\r\n while (originalStart <= originalEnd && modifiedStart <= modifiedEnd && this.ElementsAreEqual(originalStart, modifiedStart)) {\r\n originalStart++;\r\n modifiedStart++;\r\n }\r\n // Find the end of the differences\r\n while (originalEnd >= originalStart && modifiedEnd >= modifiedStart && this.ElementsAreEqual(originalEnd, modifiedEnd)) {\r\n originalEnd--;\r\n modifiedEnd--;\r\n }\r\n // In the special case where we either have all insertions or all deletions or the sequences are identical\r\n if (originalStart > originalEnd || modifiedStart > modifiedEnd) {\r\n let changes;\r\n if (modifiedStart <= modifiedEnd) {\r\n Debug.Assert(originalStart === originalEnd + 1, 'originalStart should only be one more than originalEnd');\r\n // All insertions\r\n changes = [\r\n new DiffChange(originalStart, 0, modifiedStart, modifiedEnd - modifiedStart + 1)\r\n ];\r\n }\r\n else if (originalStart <= originalEnd) {\r\n Debug.Assert(modifiedStart === modifiedEnd + 1, 'modifiedStart should only be one more than modifiedEnd');\r\n // All deletions\r\n changes = [\r\n new DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, 0)\r\n ];\r\n }\r\n else {\r\n Debug.Assert(originalStart === originalEnd + 1, 'originalStart should only be one more than originalEnd');\r\n Debug.Assert(modifiedStart === modifiedEnd + 1, 'modifiedStart should only be one more than modifiedEnd');\r\n // Identical sequences - No differences\r\n changes = [];\r\n }\r\n return changes;\r\n }\r\n // This problem can be solved using the Divide-And-Conquer technique.\r\n const midOriginalArr = [0];\r\n const midModifiedArr = [0];\r\n const result = this.ComputeRecursionPoint(originalStart, originalEnd, modifiedStart, modifiedEnd, midOriginalArr, midModifiedArr, quitEarlyArr);\r\n const midOriginal = midOriginalArr[0];\r\n const midModified = midModifiedArr[0];\r\n if (result !== null) {\r\n // Result is not-null when there was enough memory to compute the changes while\r\n // searching for the recursion point\r\n return result;\r\n }\r\n else if (!quitEarlyArr[0]) {\r\n // We can break the problem down recursively by finding the changes in the\r\n // First Half: (originalStart, modifiedStart) to (midOriginal, midModified)\r\n // Second Half: (midOriginal + 1, minModified + 1) to (originalEnd, modifiedEnd)\r\n // NOTE: ComputeDiff() is inclusive, therefore the second range starts on the next point\r\n const leftChanges = this.ComputeDiffRecursive(originalStart, midOriginal, modifiedStart, midModified, quitEarlyArr);\r\n let rightChanges = [];\r\n if (!quitEarlyArr[0]) {\r\n rightChanges = this.ComputeDiffRecursive(midOriginal + 1, originalEnd, midModified + 1, modifiedEnd, quitEarlyArr);\r\n }\r\n else {\r\n // We did't have time to finish the first half, so we don't have time to compute this half.\r\n // Consider the entire rest of the sequence different.\r\n rightChanges = [\r\n new DiffChange(midOriginal + 1, originalEnd - (midOriginal + 1) + 1, midModified + 1, modifiedEnd - (midModified + 1) + 1)\r\n ];\r\n }\r\n return this.ConcatenateChanges(leftChanges, rightChanges);\r\n }\r\n // If we hit here, we quit early, and so can't return anything meaningful\r\n return [\r\n new DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, modifiedEnd - modifiedStart + 1)\r\n ];\r\n }\r\n WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr) {\r\n let forwardChanges = null;\r\n let reverseChanges = null;\r\n // First, walk backward through the forward diagonals history\r\n let changeHelper = new DiffChangeHelper();\r\n let diagonalMin = diagonalForwardStart;\r\n let diagonalMax = diagonalForwardEnd;\r\n let diagonalRelative = (midOriginalArr[0] - midModifiedArr[0]) - diagonalForwardOffset;\r\n let lastOriginalIndex = -1073741824 /* MIN_SAFE_SMALL_INTEGER */;\r\n let historyIndex = this.m_forwardHistory.length - 1;\r\n do {\r\n // Get the diagonal index from the relative diagonal number\r\n const diagonal = diagonalRelative + diagonalForwardBase;\r\n // Figure out where we came from\r\n if (diagonal === diagonalMin || (diagonal < diagonalMax && forwardPoints[diagonal - 1] < forwardPoints[diagonal + 1])) {\r\n // Vertical line (the element is an insert)\r\n originalIndex = forwardPoints[diagonal + 1];\r\n modifiedIndex = originalIndex - diagonalRelative - diagonalForwardOffset;\r\n if (originalIndex < lastOriginalIndex) {\r\n changeHelper.MarkNextChange();\r\n }\r\n lastOriginalIndex = originalIndex;\r\n changeHelper.AddModifiedElement(originalIndex + 1, modifiedIndex);\r\n diagonalRelative = (diagonal + 1) - diagonalForwardBase; //Setup for the next iteration\r\n }\r\n else {\r\n // Horizontal line (the element is a deletion)\r\n originalIndex = forwardPoints[diagonal - 1] + 1;\r\n modifiedIndex = originalIndex - diagonalRelative - diagonalForwardOffset;\r\n if (originalIndex < lastOriginalIndex) {\r\n changeHelper.MarkNextChange();\r\n }\r\n lastOriginalIndex = originalIndex - 1;\r\n changeHelper.AddOriginalElement(originalIndex, modifiedIndex + 1);\r\n diagonalRelative = (diagonal - 1) - diagonalForwardBase; //Setup for the next iteration\r\n }\r\n if (historyIndex >= 0) {\r\n forwardPoints = this.m_forwardHistory[historyIndex];\r\n diagonalForwardBase = forwardPoints[0]; //We stored this in the first spot\r\n diagonalMin = 1;\r\n diagonalMax = forwardPoints.length - 1;\r\n }\r\n } while (--historyIndex >= -1);\r\n // Ironically, we get the forward changes as the reverse of the\r\n // order we added them since we technically added them backwards\r\n forwardChanges = changeHelper.getReverseChanges();\r\n if (quitEarlyArr[0]) {\r\n // TODO: Calculate a partial from the reverse diagonals.\r\n // For now, just assume everything after the midOriginal/midModified point is a diff\r\n let originalStartPoint = midOriginalArr[0] + 1;\r\n let modifiedStartPoint = midModifiedArr[0] + 1;\r\n if (forwardChanges !== null && forwardChanges.length > 0) {\r\n const lastForwardChange = forwardChanges[forwardChanges.length - 1];\r\n originalStartPoint = Math.max(originalStartPoint, lastForwardChange.getOriginalEnd());\r\n modifiedStartPoint = Math.max(modifiedStartPoint, lastForwardChange.getModifiedEnd());\r\n }\r\n reverseChanges = [\r\n new DiffChange(originalStartPoint, originalEnd - originalStartPoint + 1, modifiedStartPoint, modifiedEnd - modifiedStartPoint + 1)\r\n ];\r\n }\r\n else {\r\n // Now walk backward through the reverse diagonals history\r\n changeHelper = new DiffChangeHelper();\r\n diagonalMin = diagonalReverseStart;\r\n diagonalMax = diagonalReverseEnd;\r\n diagonalRelative = (midOriginalArr[0] - midModifiedArr[0]) - diagonalReverseOffset;\r\n lastOriginalIndex = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n historyIndex = (deltaIsEven) ? this.m_reverseHistory.length - 1 : this.m_reverseHistory.length - 2;\r\n do {\r\n // Get the diagonal index from the relative diagonal number\r\n const diagonal = diagonalRelative + diagonalReverseBase;\r\n // Figure out where we came from\r\n if (diagonal === diagonalMin || (diagonal < diagonalMax && reversePoints[diagonal - 1] >= reversePoints[diagonal + 1])) {\r\n // Horizontal line (the element is a deletion))\r\n originalIndex = reversePoints[diagonal + 1] - 1;\r\n modifiedIndex = originalIndex - diagonalRelative - diagonalReverseOffset;\r\n if (originalIndex > lastOriginalIndex) {\r\n changeHelper.MarkNextChange();\r\n }\r\n lastOriginalIndex = originalIndex + 1;\r\n changeHelper.AddOriginalElement(originalIndex + 1, modifiedIndex + 1);\r\n diagonalRelative = (diagonal + 1) - diagonalReverseBase; //Setup for the next iteration\r\n }\r\n else {\r\n // Vertical line (the element is an insertion)\r\n originalIndex = reversePoints[diagonal - 1];\r\n modifiedIndex = originalIndex - diagonalRelative - diagonalReverseOffset;\r\n if (originalIndex > lastOriginalIndex) {\r\n changeHelper.MarkNextChange();\r\n }\r\n lastOriginalIndex = originalIndex;\r\n changeHelper.AddModifiedElement(originalIndex + 1, modifiedIndex + 1);\r\n diagonalRelative = (diagonal - 1) - diagonalReverseBase; //Setup for the next iteration\r\n }\r\n if (historyIndex >= 0) {\r\n reversePoints = this.m_reverseHistory[historyIndex];\r\n diagonalReverseBase = reversePoints[0]; //We stored this in the first spot\r\n diagonalMin = 1;\r\n diagonalMax = reversePoints.length - 1;\r\n }\r\n } while (--historyIndex >= -1);\r\n // There are cases where the reverse history will find diffs that\r\n // are correct, but not intuitive, so we need shift them.\r\n reverseChanges = changeHelper.getChanges();\r\n }\r\n return this.ConcatenateChanges(forwardChanges, reverseChanges);\r\n }\r\n /**\r\n * Given the range to compute the diff on, this method finds the point:\r\n * (midOriginal, midModified)\r\n * that exists in the middle of the LCS of the two sequences and\r\n * is the point at which the LCS problem may be broken down recursively.\r\n * This method will try to keep the LCS trace in memory. If the LCS recursion\r\n * point is calculated and the full trace is available in memory, then this method\r\n * will return the change list.\r\n * @param originalStart The start bound of the original sequence range\r\n * @param originalEnd The end bound of the original sequence range\r\n * @param modifiedStart The start bound of the modified sequence range\r\n * @param modifiedEnd The end bound of the modified sequence range\r\n * @param midOriginal The middle point of the original sequence range\r\n * @param midModified The middle point of the modified sequence range\r\n * @returns The diff changes, if available, otherwise null\r\n */\r\n ComputeRecursionPoint(originalStart, originalEnd, modifiedStart, modifiedEnd, midOriginalArr, midModifiedArr, quitEarlyArr) {\r\n let originalIndex = 0, modifiedIndex = 0;\r\n let diagonalForwardStart = 0, diagonalForwardEnd = 0;\r\n let diagonalReverseStart = 0, diagonalReverseEnd = 0;\r\n // To traverse the edit graph and produce the proper LCS, our actual\r\n // start position is just outside the given boundary\r\n originalStart--;\r\n modifiedStart--;\r\n // We set these up to make the compiler happy, but they will\r\n // be replaced before we return with the actual recursion point\r\n midOriginalArr[0] = 0;\r\n midModifiedArr[0] = 0;\r\n // Clear out the history\r\n this.m_forwardHistory = [];\r\n this.m_reverseHistory = [];\r\n // Each cell in the two arrays corresponds to a diagonal in the edit graph.\r\n // The integer value in the cell represents the originalIndex of the furthest\r\n // reaching point found so far that ends in that diagonal.\r\n // The modifiedIndex can be computed mathematically from the originalIndex and the diagonal number.\r\n const maxDifferences = (originalEnd - originalStart) + (modifiedEnd - modifiedStart);\r\n const numDiagonals = maxDifferences + 1;\r\n const forwardPoints = new Int32Array(numDiagonals);\r\n const reversePoints = new Int32Array(numDiagonals);\r\n // diagonalForwardBase: Index into forwardPoints of the diagonal which passes through (originalStart, modifiedStart)\r\n // diagonalReverseBase: Index into reversePoints of the diagonal which passes through (originalEnd, modifiedEnd)\r\n const diagonalForwardBase = (modifiedEnd - modifiedStart);\r\n const diagonalReverseBase = (originalEnd - originalStart);\r\n // diagonalForwardOffset: Geometric offset which allows modifiedIndex to be computed from originalIndex and the\r\n // diagonal number (relative to diagonalForwardBase)\r\n // diagonalReverseOffset: Geometric offset which allows modifiedIndex to be computed from originalIndex and the\r\n // diagonal number (relative to diagonalReverseBase)\r\n const diagonalForwardOffset = (originalStart - modifiedStart);\r\n const diagonalReverseOffset = (originalEnd - modifiedEnd);\r\n // delta: The difference between the end diagonal and the start diagonal. This is used to relate diagonal numbers\r\n // relative to the start diagonal with diagonal numbers relative to the end diagonal.\r\n // The Even/Oddn-ness of this delta is important for determining when we should check for overlap\r\n const delta = diagonalReverseBase - diagonalForwardBase;\r\n const deltaIsEven = (delta % 2 === 0);\r\n // Here we set up the start and end points as the furthest points found so far\r\n // in both the forward and reverse directions, respectively\r\n forwardPoints[diagonalForwardBase] = originalStart;\r\n reversePoints[diagonalReverseBase] = originalEnd;\r\n // Remember if we quit early, and thus need to do a best-effort result instead of a real result.\r\n quitEarlyArr[0] = false;\r\n // A couple of points:\r\n // --With this method, we iterate on the number of differences between the two sequences.\r\n // The more differences there actually are, the longer this will take.\r\n // --Also, as the number of differences increases, we have to search on diagonals further\r\n // away from the reference diagonal (which is diagonalForwardBase for forward, diagonalReverseBase for reverse).\r\n // --We extend on even diagonals (relative to the reference diagonal) only when numDifferences\r\n // is even and odd diagonals only when numDifferences is odd.\r\n for (let numDifferences = 1; numDifferences <= (maxDifferences / 2) + 1; numDifferences++) {\r\n let furthestOriginalIndex = 0;\r\n let furthestModifiedIndex = 0;\r\n // Run the algorithm in the forward direction\r\n diagonalForwardStart = this.ClipDiagonalBound(diagonalForwardBase - numDifferences, numDifferences, diagonalForwardBase, numDiagonals);\r\n diagonalForwardEnd = this.ClipDiagonalBound(diagonalForwardBase + numDifferences, numDifferences, diagonalForwardBase, numDiagonals);\r\n for (let diagonal = diagonalForwardStart; diagonal <= diagonalForwardEnd; diagonal += 2) {\r\n // STEP 1: We extend the furthest reaching point in the present diagonal\r\n // by looking at the diagonals above and below and picking the one whose point\r\n // is further away from the start point (originalStart, modifiedStart)\r\n if (diagonal === diagonalForwardStart || (diagonal < diagonalForwardEnd && forwardPoints[diagonal - 1] < forwardPoints[diagonal + 1])) {\r\n originalIndex = forwardPoints[diagonal + 1];\r\n }\r\n else {\r\n originalIndex = forwardPoints[diagonal - 1] + 1;\r\n }\r\n modifiedIndex = originalIndex - (diagonal - diagonalForwardBase) - diagonalForwardOffset;\r\n // Save the current originalIndex so we can test for false overlap in step 3\r\n const tempOriginalIndex = originalIndex;\r\n // STEP 2: We can continue to extend the furthest reaching point in the present diagonal\r\n // so long as the elements are equal.\r\n while (originalIndex < originalEnd && modifiedIndex < modifiedEnd && this.ElementsAreEqual(originalIndex + 1, modifiedIndex + 1)) {\r\n originalIndex++;\r\n modifiedIndex++;\r\n }\r\n forwardPoints[diagonal] = originalIndex;\r\n if (originalIndex + modifiedIndex > furthestOriginalIndex + furthestModifiedIndex) {\r\n furthestOriginalIndex = originalIndex;\r\n furthestModifiedIndex = modifiedIndex;\r\n }\r\n // STEP 3: If delta is odd (overlap first happens on forward when delta is odd)\r\n // and diagonal is in the range of reverse diagonals computed for numDifferences-1\r\n // (the previous iteration; we haven't computed reverse diagonals for numDifferences yet)\r\n // then check for overlap.\r\n if (!deltaIsEven && Math.abs(diagonal - diagonalReverseBase) <= (numDifferences - 1)) {\r\n if (originalIndex >= reversePoints[diagonal]) {\r\n midOriginalArr[0] = originalIndex;\r\n midModifiedArr[0] = modifiedIndex;\r\n if (tempOriginalIndex <= reversePoints[diagonal] && 1447 /* MaxDifferencesHistory */ > 0 && numDifferences <= (1447 /* MaxDifferencesHistory */ + 1)) {\r\n // BINGO! We overlapped, and we have the full trace in memory!\r\n return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\r\n }\r\n else {\r\n // Either false overlap, or we didn't have enough memory for the full trace\r\n // Just return the recursion point\r\n return null;\r\n }\r\n }\r\n }\r\n }\r\n // Check to see if we should be quitting early, before moving on to the next iteration.\r\n const matchLengthOfLongest = ((furthestOriginalIndex - originalStart) + (furthestModifiedIndex - modifiedStart) - numDifferences) / 2;\r\n if (this.ContinueProcessingPredicate !== null && !this.ContinueProcessingPredicate(furthestOriginalIndex, matchLengthOfLongest)) {\r\n // We can't finish, so skip ahead to generating a result from what we have.\r\n quitEarlyArr[0] = true;\r\n // Use the furthest distance we got in the forward direction.\r\n midOriginalArr[0] = furthestOriginalIndex;\r\n midModifiedArr[0] = furthestModifiedIndex;\r\n if (matchLengthOfLongest > 0 && 1447 /* MaxDifferencesHistory */ > 0 && numDifferences <= (1447 /* MaxDifferencesHistory */ + 1)) {\r\n // Enough of the history is in memory to walk it backwards\r\n return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\r\n }\r\n else {\r\n // We didn't actually remember enough of the history.\r\n //Since we are quiting the diff early, we need to shift back the originalStart and modified start\r\n //back into the boundary limits since we decremented their value above beyond the boundary limit.\r\n originalStart++;\r\n modifiedStart++;\r\n return [\r\n new DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, modifiedEnd - modifiedStart + 1)\r\n ];\r\n }\r\n }\r\n // Run the algorithm in the reverse direction\r\n diagonalReverseStart = this.ClipDiagonalBound(diagonalReverseBase - numDifferences, numDifferences, diagonalReverseBase, numDiagonals);\r\n diagonalReverseEnd = this.ClipDiagonalBound(diagonalReverseBase + numDifferences, numDifferences, diagonalReverseBase, numDiagonals);\r\n for (let diagonal = diagonalReverseStart; diagonal <= diagonalReverseEnd; diagonal += 2) {\r\n // STEP 1: We extend the furthest reaching point in the present diagonal\r\n // by looking at the diagonals above and below and picking the one whose point\r\n // is further away from the start point (originalEnd, modifiedEnd)\r\n if (diagonal === diagonalReverseStart || (diagonal < diagonalReverseEnd && reversePoints[diagonal - 1] >= reversePoints[diagonal + 1])) {\r\n originalIndex = reversePoints[diagonal + 1] - 1;\r\n }\r\n else {\r\n originalIndex = reversePoints[diagonal - 1];\r\n }\r\n modifiedIndex = originalIndex - (diagonal - diagonalReverseBase) - diagonalReverseOffset;\r\n // Save the current originalIndex so we can test for false overlap\r\n const tempOriginalIndex = originalIndex;\r\n // STEP 2: We can continue to extend the furthest reaching point in the present diagonal\r\n // as long as the elements are equal.\r\n while (originalIndex > originalStart && modifiedIndex > modifiedStart && this.ElementsAreEqual(originalIndex, modifiedIndex)) {\r\n originalIndex--;\r\n modifiedIndex--;\r\n }\r\n reversePoints[diagonal] = originalIndex;\r\n // STEP 4: If delta is even (overlap first happens on reverse when delta is even)\r\n // and diagonal is in the range of forward diagonals computed for numDifferences\r\n // then check for overlap.\r\n if (deltaIsEven && Math.abs(diagonal - diagonalForwardBase) <= numDifferences) {\r\n if (originalIndex <= forwardPoints[diagonal]) {\r\n midOriginalArr[0] = originalIndex;\r\n midModifiedArr[0] = modifiedIndex;\r\n if (tempOriginalIndex >= forwardPoints[diagonal] && 1447 /* MaxDifferencesHistory */ > 0 && numDifferences <= (1447 /* MaxDifferencesHistory */ + 1)) {\r\n // BINGO! We overlapped, and we have the full trace in memory!\r\n return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\r\n }\r\n else {\r\n // Either false overlap, or we didn't have enough memory for the full trace\r\n // Just return the recursion point\r\n return null;\r\n }\r\n }\r\n }\r\n }\r\n // Save current vectors to history before the next iteration\r\n if (numDifferences <= 1447 /* MaxDifferencesHistory */) {\r\n // We are allocating space for one extra int, which we fill with\r\n // the index of the diagonal base index\r\n let temp = new Int32Array(diagonalForwardEnd - diagonalForwardStart + 2);\r\n temp[0] = diagonalForwardBase - diagonalForwardStart + 1;\r\n MyArray.Copy2(forwardPoints, diagonalForwardStart, temp, 1, diagonalForwardEnd - diagonalForwardStart + 1);\r\n this.m_forwardHistory.push(temp);\r\n temp = new Int32Array(diagonalReverseEnd - diagonalReverseStart + 2);\r\n temp[0] = diagonalReverseBase - diagonalReverseStart + 1;\r\n MyArray.Copy2(reversePoints, diagonalReverseStart, temp, 1, diagonalReverseEnd - diagonalReverseStart + 1);\r\n this.m_reverseHistory.push(temp);\r\n }\r\n }\r\n // If we got here, then we have the full trace in history. We just have to convert it to a change list\r\n // NOTE: This part is a bit messy\r\n return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\r\n }\r\n /**\r\n * Shifts the given changes to provide a more intuitive diff.\r\n * While the first element in a diff matches the first element after the diff,\r\n * we shift the diff down.\r\n *\r\n * @param changes The list of changes to shift\r\n * @returns The shifted changes\r\n */\r\n PrettifyChanges(changes) {\r\n // Shift all the changes down first\r\n for (let i = 0; i < changes.length; i++) {\r\n const change = changes[i];\r\n const originalStop = (i < changes.length - 1) ? changes[i + 1].originalStart : this._originalElementsOrHash.length;\r\n const modifiedStop = (i < changes.length - 1) ? changes[i + 1].modifiedStart : this._modifiedElementsOrHash.length;\r\n const checkOriginal = change.originalLength > 0;\r\n const checkModified = change.modifiedLength > 0;\r\n while (change.originalStart + change.originalLength < originalStop\r\n && change.modifiedStart + change.modifiedLength < modifiedStop\r\n && (!checkOriginal || this.OriginalElementsAreEqual(change.originalStart, change.originalStart + change.originalLength))\r\n && (!checkModified || this.ModifiedElementsAreEqual(change.modifiedStart, change.modifiedStart + change.modifiedLength))) {\r\n const startStrictEqual = this.ElementsAreStrictEqual(change.originalStart, change.modifiedStart);\r\n const endStrictEqual = this.ElementsAreStrictEqual(change.originalStart + change.originalLength, change.modifiedStart + change.modifiedLength);\r\n if (endStrictEqual && !startStrictEqual) {\r\n // moving the change down would create an equal change, but the elements are not strict equal\r\n break;\r\n }\r\n change.originalStart++;\r\n change.modifiedStart++;\r\n }\r\n let mergedChangeArr = [null];\r\n if (i < changes.length - 1 && this.ChangesOverlap(changes[i], changes[i + 1], mergedChangeArr)) {\r\n changes[i] = mergedChangeArr[0];\r\n changes.splice(i + 1, 1);\r\n i--;\r\n continue;\r\n }\r\n }\r\n // Shift changes back up until we hit empty or whitespace-only lines\r\n for (let i = changes.length - 1; i >= 0; i--) {\r\n const change = changes[i];\r\n let originalStop = 0;\r\n let modifiedStop = 0;\r\n if (i > 0) {\r\n const prevChange = changes[i - 1];\r\n originalStop = prevChange.originalStart + prevChange.originalLength;\r\n modifiedStop = prevChange.modifiedStart + prevChange.modifiedLength;\r\n }\r\n const checkOriginal = change.originalLength > 0;\r\n const checkModified = change.modifiedLength > 0;\r\n let bestDelta = 0;\r\n let bestScore = this._boundaryScore(change.originalStart, change.originalLength, change.modifiedStart, change.modifiedLength);\r\n for (let delta = 1;; delta++) {\r\n const originalStart = change.originalStart - delta;\r\n const modifiedStart = change.modifiedStart - delta;\r\n if (originalStart < originalStop || modifiedStart < modifiedStop) {\r\n break;\r\n }\r\n if (checkOriginal && !this.OriginalElementsAreEqual(originalStart, originalStart + change.originalLength)) {\r\n break;\r\n }\r\n if (checkModified && !this.ModifiedElementsAreEqual(modifiedStart, modifiedStart + change.modifiedLength)) {\r\n break;\r\n }\r\n const touchingPreviousChange = (originalStart === originalStop && modifiedStart === modifiedStop);\r\n const score = ((touchingPreviousChange ? 5 : 0)\r\n + this._boundaryScore(originalStart, change.originalLength, modifiedStart, change.modifiedLength));\r\n if (score > bestScore) {\r\n bestScore = score;\r\n bestDelta = delta;\r\n }\r\n }\r\n change.originalStart -= bestDelta;\r\n change.modifiedStart -= bestDelta;\r\n const mergedChangeArr = [null];\r\n if (i > 0 && this.ChangesOverlap(changes[i - 1], changes[i], mergedChangeArr)) {\r\n changes[i - 1] = mergedChangeArr[0];\r\n changes.splice(i, 1);\r\n i++;\r\n continue;\r\n }\r\n }\r\n // There could be multiple longest common substrings.\r\n // Give preference to the ones containing longer lines\r\n if (this._hasStrings) {\r\n for (let i = 1, len = changes.length; i < len; i++) {\r\n const aChange = changes[i - 1];\r\n const bChange = changes[i];\r\n const matchedLength = bChange.originalStart - aChange.originalStart - aChange.originalLength;\r\n const aOriginalStart = aChange.originalStart;\r\n const bOriginalEnd = bChange.originalStart + bChange.originalLength;\r\n const abOriginalLength = bOriginalEnd - aOriginalStart;\r\n const aModifiedStart = aChange.modifiedStart;\r\n const bModifiedEnd = bChange.modifiedStart + bChange.modifiedLength;\r\n const abModifiedLength = bModifiedEnd - aModifiedStart;\r\n // Avoid wasting a lot of time with these searches\r\n if (matchedLength < 5 && abOriginalLength < 20 && abModifiedLength < 20) {\r\n const t = this._findBetterContiguousSequence(aOriginalStart, abOriginalLength, aModifiedStart, abModifiedLength, matchedLength);\r\n if (t) {\r\n const [originalMatchStart, modifiedMatchStart] = t;\r\n if (originalMatchStart !== aChange.originalStart + aChange.originalLength || modifiedMatchStart !== aChange.modifiedStart + aChange.modifiedLength) {\r\n // switch to another sequence that has a better score\r\n aChange.originalLength = originalMatchStart - aChange.originalStart;\r\n aChange.modifiedLength = modifiedMatchStart - aChange.modifiedStart;\r\n bChange.originalStart = originalMatchStart + matchedLength;\r\n bChange.modifiedStart = modifiedMatchStart + matchedLength;\r\n bChange.originalLength = bOriginalEnd - bChange.originalStart;\r\n bChange.modifiedLength = bModifiedEnd - bChange.modifiedStart;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return changes;\r\n }\r\n _findBetterContiguousSequence(originalStart, originalLength, modifiedStart, modifiedLength, desiredLength) {\r\n if (originalLength < desiredLength || modifiedLength < desiredLength) {\r\n return null;\r\n }\r\n const originalMax = originalStart + originalLength - desiredLength + 1;\r\n const modifiedMax = modifiedStart + modifiedLength - desiredLength + 1;\r\n let bestScore = 0;\r\n let bestOriginalStart = 0;\r\n let bestModifiedStart = 0;\r\n for (let i = originalStart; i < originalMax; i++) {\r\n for (let j = modifiedStart; j < modifiedMax; j++) {\r\n const score = this._contiguousSequenceScore(i, j, desiredLength);\r\n if (score > 0 && score > bestScore) {\r\n bestScore = score;\r\n bestOriginalStart = i;\r\n bestModifiedStart = j;\r\n }\r\n }\r\n }\r\n if (bestScore > 0) {\r\n return [bestOriginalStart, bestModifiedStart];\r\n }\r\n return null;\r\n }\r\n _contiguousSequenceScore(originalStart, modifiedStart, length) {\r\n let score = 0;\r\n for (let l = 0; l < length; l++) {\r\n if (!this.ElementsAreEqual(originalStart + l, modifiedStart + l)) {\r\n return 0;\r\n }\r\n score += this._originalStringElements[originalStart + l].length;\r\n }\r\n return score;\r\n }\r\n _OriginalIsBoundary(index) {\r\n if (index <= 0 || index >= this._originalElementsOrHash.length - 1) {\r\n return true;\r\n }\r\n return (this._hasStrings && /^\\s*$/.test(this._originalStringElements[index]));\r\n }\r\n _OriginalRegionIsBoundary(originalStart, originalLength) {\r\n if (this._OriginalIsBoundary(originalStart) || this._OriginalIsBoundary(originalStart - 1)) {\r\n return true;\r\n }\r\n if (originalLength > 0) {\r\n const originalEnd = originalStart + originalLength;\r\n if (this._OriginalIsBoundary(originalEnd - 1) || this._OriginalIsBoundary(originalEnd)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n _ModifiedIsBoundary(index) {\r\n if (index <= 0 || index >= this._modifiedElementsOrHash.length - 1) {\r\n return true;\r\n }\r\n return (this._hasStrings && /^\\s*$/.test(this._modifiedStringElements[index]));\r\n }\r\n _ModifiedRegionIsBoundary(modifiedStart, modifiedLength) {\r\n if (this._ModifiedIsBoundary(modifiedStart) || this._ModifiedIsBoundary(modifiedStart - 1)) {\r\n return true;\r\n }\r\n if (modifiedLength > 0) {\r\n const modifiedEnd = modifiedStart + modifiedLength;\r\n if (this._ModifiedIsBoundary(modifiedEnd - 1) || this._ModifiedIsBoundary(modifiedEnd)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n _boundaryScore(originalStart, originalLength, modifiedStart, modifiedLength) {\r\n const originalScore = (this._OriginalRegionIsBoundary(originalStart, originalLength) ? 1 : 0);\r\n const modifiedScore = (this._ModifiedRegionIsBoundary(modifiedStart, modifiedLength) ? 1 : 0);\r\n return (originalScore + modifiedScore);\r\n }\r\n /**\r\n * Concatenates the two input DiffChange lists and returns the resulting\r\n * list.\r\n * @param The left changes\r\n * @param The right changes\r\n * @returns The concatenated list\r\n */\r\n ConcatenateChanges(left, right) {\r\n let mergedChangeArr = [];\r\n if (left.length === 0 || right.length === 0) {\r\n return (right.length > 0) ? right : left;\r\n }\r\n else if (this.ChangesOverlap(left[left.length - 1], right[0], mergedChangeArr)) {\r\n // Since we break the problem down recursively, it is possible that we\r\n // might recurse in the middle of a change thereby splitting it into\r\n // two changes. Here in the combining stage, we detect and fuse those\r\n // changes back together\r\n const result = new Array(left.length + right.length - 1);\r\n MyArray.Copy(left, 0, result, 0, left.length - 1);\r\n result[left.length - 1] = mergedChangeArr[0];\r\n MyArray.Copy(right, 1, result, left.length, right.length - 1);\r\n return result;\r\n }\r\n else {\r\n const result = new Array(left.length + right.length);\r\n MyArray.Copy(left, 0, result, 0, left.length);\r\n MyArray.Copy(right, 0, result, left.length, right.length);\r\n return result;\r\n }\r\n }\r\n /**\r\n * Returns true if the two changes overlap and can be merged into a single\r\n * change\r\n * @param left The left change\r\n * @param right The right change\r\n * @param mergedChange The merged change if the two overlap, null otherwise\r\n * @returns True if the two changes overlap\r\n */\r\n ChangesOverlap(left, right, mergedChangeArr) {\r\n Debug.Assert(left.originalStart <= right.originalStart, 'Left change is not less than or equal to right change');\r\n Debug.Assert(left.modifiedStart <= right.modifiedStart, 'Left change is not less than or equal to right change');\r\n if (left.originalStart + left.originalLength >= right.originalStart || left.modifiedStart + left.modifiedLength >= right.modifiedStart) {\r\n const originalStart = left.originalStart;\r\n let originalLength = left.originalLength;\r\n const modifiedStart = left.modifiedStart;\r\n let modifiedLength = left.modifiedLength;\r\n if (left.originalStart + left.originalLength >= right.originalStart) {\r\n originalLength = right.originalStart + right.originalLength - left.originalStart;\r\n }\r\n if (left.modifiedStart + left.modifiedLength >= right.modifiedStart) {\r\n modifiedLength = right.modifiedStart + right.modifiedLength - left.modifiedStart;\r\n }\r\n mergedChangeArr[0] = new DiffChange(originalStart, originalLength, modifiedStart, modifiedLength);\r\n return true;\r\n }\r\n else {\r\n mergedChangeArr[0] = null;\r\n return false;\r\n }\r\n }\r\n /**\r\n * Helper method used to clip a diagonal index to the range of valid\r\n * diagonals. This also decides whether or not the diagonal index,\r\n * if it exceeds the boundary, should be clipped to the boundary or clipped\r\n * one inside the boundary depending on the Even/Odd status of the boundary\r\n * and numDifferences.\r\n * @param diagonal The index of the diagonal to clip.\r\n * @param numDifferences The current number of differences being iterated upon.\r\n * @param diagonalBaseIndex The base reference diagonal.\r\n * @param numDiagonals The total number of diagonals.\r\n * @returns The clipped diagonal index.\r\n */\r\n ClipDiagonalBound(diagonal, numDifferences, diagonalBaseIndex, numDiagonals) {\r\n if (diagonal >= 0 && diagonal < numDiagonals) {\r\n // Nothing to clip, its in range\r\n return diagonal;\r\n }\r\n // diagonalsBelow: The number of diagonals below the reference diagonal\r\n // diagonalsAbove: The number of diagonals above the reference diagonal\r\n const diagonalsBelow = diagonalBaseIndex;\r\n const diagonalsAbove = numDiagonals - diagonalBaseIndex - 1;\r\n const diffEven = (numDifferences % 2 === 0);\r\n if (diagonal < 0) {\r\n const lowerBoundEven = (diagonalsBelow % 2 === 0);\r\n return (diffEven === lowerBoundEven) ? 0 : 1;\r\n }\r\n else {\r\n const upperBoundEven = (diagonalsAbove % 2 === 0);\r\n return (diffEven === upperBoundEven) ? numDiagonals - 1 : numDiagonals - 2;\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { LcsDiff } from '../../../base/common/diff/diff.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nconst MINIMUM_MATCHING_CHARACTER_LENGTH = 3;\r\nfunction computeDiff(originalSequence, modifiedSequence, continueProcessingPredicate, pretty) {\r\n const diffAlgo = new LcsDiff(originalSequence, modifiedSequence, continueProcessingPredicate);\r\n return diffAlgo.ComputeDiff(pretty);\r\n}\r\nclass LineSequence {\r\n constructor(lines) {\r\n const startColumns = [];\r\n const endColumns = [];\r\n for (let i = 0, length = lines.length; i < length; i++) {\r\n startColumns[i] = getFirstNonBlankColumn(lines[i], 1);\r\n endColumns[i] = getLastNonBlankColumn(lines[i], 1);\r\n }\r\n this.lines = lines;\r\n this._startColumns = startColumns;\r\n this._endColumns = endColumns;\r\n }\r\n getElements() {\r\n const elements = [];\r\n for (let i = 0, len = this.lines.length; i < len; i++) {\r\n elements[i] = this.lines[i].substring(this._startColumns[i] - 1, this._endColumns[i] - 1);\r\n }\r\n return elements;\r\n }\r\n getStrictElement(index) {\r\n return this.lines[index];\r\n }\r\n getStartLineNumber(i) {\r\n return i + 1;\r\n }\r\n getEndLineNumber(i) {\r\n return i + 1;\r\n }\r\n createCharSequence(shouldIgnoreTrimWhitespace, startIndex, endIndex) {\r\n const charCodes = [];\r\n const lineNumbers = [];\r\n const columns = [];\r\n let len = 0;\r\n for (let index = startIndex; index <= endIndex; index++) {\r\n const lineContent = this.lines[index];\r\n const startColumn = (shouldIgnoreTrimWhitespace ? this._startColumns[index] : 1);\r\n const endColumn = (shouldIgnoreTrimWhitespace ? this._endColumns[index] : lineContent.length + 1);\r\n for (let col = startColumn; col < endColumn; col++) {\r\n charCodes[len] = lineContent.charCodeAt(col - 1);\r\n lineNumbers[len] = index + 1;\r\n columns[len] = col;\r\n len++;\r\n }\r\n }\r\n return new CharSequence(charCodes, lineNumbers, columns);\r\n }\r\n}\r\nclass CharSequence {\r\n constructor(charCodes, lineNumbers, columns) {\r\n this._charCodes = charCodes;\r\n this._lineNumbers = lineNumbers;\r\n this._columns = columns;\r\n }\r\n getElements() {\r\n return this._charCodes;\r\n }\r\n getStartLineNumber(i) {\r\n return this._lineNumbers[i];\r\n }\r\n getStartColumn(i) {\r\n return this._columns[i];\r\n }\r\n getEndLineNumber(i) {\r\n return this._lineNumbers[i];\r\n }\r\n getEndColumn(i) {\r\n return this._columns[i] + 1;\r\n }\r\n}\r\nclass CharChange {\r\n constructor(originalStartLineNumber, originalStartColumn, originalEndLineNumber, originalEndColumn, modifiedStartLineNumber, modifiedStartColumn, modifiedEndLineNumber, modifiedEndColumn) {\r\n this.originalStartLineNumber = originalStartLineNumber;\r\n this.originalStartColumn = originalStartColumn;\r\n this.originalEndLineNumber = originalEndLineNumber;\r\n this.originalEndColumn = originalEndColumn;\r\n this.modifiedStartLineNumber = modifiedStartLineNumber;\r\n this.modifiedStartColumn = modifiedStartColumn;\r\n this.modifiedEndLineNumber = modifiedEndLineNumber;\r\n this.modifiedEndColumn = modifiedEndColumn;\r\n }\r\n static createFromDiffChange(diffChange, originalCharSequence, modifiedCharSequence) {\r\n let originalStartLineNumber;\r\n let originalStartColumn;\r\n let originalEndLineNumber;\r\n let originalEndColumn;\r\n let modifiedStartLineNumber;\r\n let modifiedStartColumn;\r\n let modifiedEndLineNumber;\r\n let modifiedEndColumn;\r\n if (diffChange.originalLength === 0) {\r\n originalStartLineNumber = 0;\r\n originalStartColumn = 0;\r\n originalEndLineNumber = 0;\r\n originalEndColumn = 0;\r\n }\r\n else {\r\n originalStartLineNumber = originalCharSequence.getStartLineNumber(diffChange.originalStart);\r\n originalStartColumn = originalCharSequence.getStartColumn(diffChange.originalStart);\r\n originalEndLineNumber = originalCharSequence.getEndLineNumber(diffChange.originalStart + diffChange.originalLength - 1);\r\n originalEndColumn = originalCharSequence.getEndColumn(diffChange.originalStart + diffChange.originalLength - 1);\r\n }\r\n if (diffChange.modifiedLength === 0) {\r\n modifiedStartLineNumber = 0;\r\n modifiedStartColumn = 0;\r\n modifiedEndLineNumber = 0;\r\n modifiedEndColumn = 0;\r\n }\r\n else {\r\n modifiedStartLineNumber = modifiedCharSequence.getStartLineNumber(diffChange.modifiedStart);\r\n modifiedStartColumn = modifiedCharSequence.getStartColumn(diffChange.modifiedStart);\r\n modifiedEndLineNumber = modifiedCharSequence.getEndLineNumber(diffChange.modifiedStart + diffChange.modifiedLength - 1);\r\n modifiedEndColumn = modifiedCharSequence.getEndColumn(diffChange.modifiedStart + diffChange.modifiedLength - 1);\r\n }\r\n return new CharChange(originalStartLineNumber, originalStartColumn, originalEndLineNumber, originalEndColumn, modifiedStartLineNumber, modifiedStartColumn, modifiedEndLineNumber, modifiedEndColumn);\r\n }\r\n}\r\nfunction postProcessCharChanges(rawChanges) {\r\n if (rawChanges.length <= 1) {\r\n return rawChanges;\r\n }\r\n const result = [rawChanges[0]];\r\n let prevChange = result[0];\r\n for (let i = 1, len = rawChanges.length; i < len; i++) {\r\n const currChange = rawChanges[i];\r\n const originalMatchingLength = currChange.originalStart - (prevChange.originalStart + prevChange.originalLength);\r\n const modifiedMatchingLength = currChange.modifiedStart - (prevChange.modifiedStart + prevChange.modifiedLength);\r\n // Both of the above should be equal, but the continueProcessingPredicate may prevent this from being true\r\n const matchingLength = Math.min(originalMatchingLength, modifiedMatchingLength);\r\n if (matchingLength < MINIMUM_MATCHING_CHARACTER_LENGTH) {\r\n // Merge the current change into the previous one\r\n prevChange.originalLength = (currChange.originalStart + currChange.originalLength) - prevChange.originalStart;\r\n prevChange.modifiedLength = (currChange.modifiedStart + currChange.modifiedLength) - prevChange.modifiedStart;\r\n }\r\n else {\r\n // Add the current change\r\n result.push(currChange);\r\n prevChange = currChange;\r\n }\r\n }\r\n return result;\r\n}\r\nclass LineChange {\r\n constructor(originalStartLineNumber, originalEndLineNumber, modifiedStartLineNumber, modifiedEndLineNumber, charChanges) {\r\n this.originalStartLineNumber = originalStartLineNumber;\r\n this.originalEndLineNumber = originalEndLineNumber;\r\n this.modifiedStartLineNumber = modifiedStartLineNumber;\r\n this.modifiedEndLineNumber = modifiedEndLineNumber;\r\n this.charChanges = charChanges;\r\n }\r\n static createFromDiffResult(shouldIgnoreTrimWhitespace, diffChange, originalLineSequence, modifiedLineSequence, continueCharDiff, shouldComputeCharChanges, shouldPostProcessCharChanges) {\r\n let originalStartLineNumber;\r\n let originalEndLineNumber;\r\n let modifiedStartLineNumber;\r\n let modifiedEndLineNumber;\r\n let charChanges = undefined;\r\n if (diffChange.originalLength === 0) {\r\n originalStartLineNumber = originalLineSequence.getStartLineNumber(diffChange.originalStart) - 1;\r\n originalEndLineNumber = 0;\r\n }\r\n else {\r\n originalStartLineNumber = originalLineSequence.getStartLineNumber(diffChange.originalStart);\r\n originalEndLineNumber = originalLineSequence.getEndLineNumber(diffChange.originalStart + diffChange.originalLength - 1);\r\n }\r\n if (diffChange.modifiedLength === 0) {\r\n modifiedStartLineNumber = modifiedLineSequence.getStartLineNumber(diffChange.modifiedStart) - 1;\r\n modifiedEndLineNumber = 0;\r\n }\r\n else {\r\n modifiedStartLineNumber = modifiedLineSequence.getStartLineNumber(diffChange.modifiedStart);\r\n modifiedEndLineNumber = modifiedLineSequence.getEndLineNumber(diffChange.modifiedStart + diffChange.modifiedLength - 1);\r\n }\r\n if (shouldComputeCharChanges && diffChange.originalLength > 0 && diffChange.originalLength < 20 && diffChange.modifiedLength > 0 && diffChange.modifiedLength < 20 && continueCharDiff()) {\r\n // Compute character changes for diff chunks of at most 20 lines...\r\n const originalCharSequence = originalLineSequence.createCharSequence(shouldIgnoreTrimWhitespace, diffChange.originalStart, diffChange.originalStart + diffChange.originalLength - 1);\r\n const modifiedCharSequence = modifiedLineSequence.createCharSequence(shouldIgnoreTrimWhitespace, diffChange.modifiedStart, diffChange.modifiedStart + diffChange.modifiedLength - 1);\r\n let rawChanges = computeDiff(originalCharSequence, modifiedCharSequence, continueCharDiff, true).changes;\r\n if (shouldPostProcessCharChanges) {\r\n rawChanges = postProcessCharChanges(rawChanges);\r\n }\r\n charChanges = [];\r\n for (let i = 0, length = rawChanges.length; i < length; i++) {\r\n charChanges.push(CharChange.createFromDiffChange(rawChanges[i], originalCharSequence, modifiedCharSequence));\r\n }\r\n }\r\n return new LineChange(originalStartLineNumber, originalEndLineNumber, modifiedStartLineNumber, modifiedEndLineNumber, charChanges);\r\n }\r\n}\r\nexport class DiffComputer {\r\n constructor(originalLines, modifiedLines, opts) {\r\n this.shouldComputeCharChanges = opts.shouldComputeCharChanges;\r\n this.shouldPostProcessCharChanges = opts.shouldPostProcessCharChanges;\r\n this.shouldIgnoreTrimWhitespace = opts.shouldIgnoreTrimWhitespace;\r\n this.shouldMakePrettyDiff = opts.shouldMakePrettyDiff;\r\n this.originalLines = originalLines;\r\n this.modifiedLines = modifiedLines;\r\n this.original = new LineSequence(originalLines);\r\n this.modified = new LineSequence(modifiedLines);\r\n this.continueLineDiff = createContinueProcessingPredicate(opts.maxComputationTime);\r\n this.continueCharDiff = createContinueProcessingPredicate(opts.maxComputationTime === 0 ? 0 : Math.min(opts.maxComputationTime, 5000)); // never run after 5s for character changes...\r\n }\r\n computeDiff() {\r\n if (this.original.lines.length === 1 && this.original.lines[0].length === 0) {\r\n // empty original => fast path\r\n if (this.modified.lines.length === 1 && this.modified.lines[0].length === 0) {\r\n return {\r\n quitEarly: false,\r\n changes: []\r\n };\r\n }\r\n return {\r\n quitEarly: false,\r\n changes: [{\r\n originalStartLineNumber: 1,\r\n originalEndLineNumber: 1,\r\n modifiedStartLineNumber: 1,\r\n modifiedEndLineNumber: this.modified.lines.length,\r\n charChanges: [{\r\n modifiedEndColumn: 0,\r\n modifiedEndLineNumber: 0,\r\n modifiedStartColumn: 0,\r\n modifiedStartLineNumber: 0,\r\n originalEndColumn: 0,\r\n originalEndLineNumber: 0,\r\n originalStartColumn: 0,\r\n originalStartLineNumber: 0\r\n }]\r\n }]\r\n };\r\n }\r\n if (this.modified.lines.length === 1 && this.modified.lines[0].length === 0) {\r\n // empty modified => fast path\r\n return {\r\n quitEarly: false,\r\n changes: [{\r\n originalStartLineNumber: 1,\r\n originalEndLineNumber: this.original.lines.length,\r\n modifiedStartLineNumber: 1,\r\n modifiedEndLineNumber: 1,\r\n charChanges: [{\r\n modifiedEndColumn: 0,\r\n modifiedEndLineNumber: 0,\r\n modifiedStartColumn: 0,\r\n modifiedStartLineNumber: 0,\r\n originalEndColumn: 0,\r\n originalEndLineNumber: 0,\r\n originalStartColumn: 0,\r\n originalStartLineNumber: 0\r\n }]\r\n }]\r\n };\r\n }\r\n const diffResult = computeDiff(this.original, this.modified, this.continueLineDiff, this.shouldMakePrettyDiff);\r\n const rawChanges = diffResult.changes;\r\n const quitEarly = diffResult.quitEarly;\r\n // The diff is always computed with ignoring trim whitespace\r\n // This ensures we get the prettiest diff\r\n if (this.shouldIgnoreTrimWhitespace) {\r\n const lineChanges = [];\r\n for (let i = 0, length = rawChanges.length; i < length; i++) {\r\n lineChanges.push(LineChange.createFromDiffResult(this.shouldIgnoreTrimWhitespace, rawChanges[i], this.original, this.modified, this.continueCharDiff, this.shouldComputeCharChanges, this.shouldPostProcessCharChanges));\r\n }\r\n return {\r\n quitEarly: quitEarly,\r\n changes: lineChanges\r\n };\r\n }\r\n // Need to post-process and introduce changes where the trim whitespace is different\r\n // Note that we are looping starting at -1 to also cover the lines before the first change\r\n const result = [];\r\n let originalLineIndex = 0;\r\n let modifiedLineIndex = 0;\r\n for (let i = -1 /* !!!! */, len = rawChanges.length; i < len; i++) {\r\n const nextChange = (i + 1 < len ? rawChanges[i + 1] : null);\r\n const originalStop = (nextChange ? nextChange.originalStart : this.originalLines.length);\r\n const modifiedStop = (nextChange ? nextChange.modifiedStart : this.modifiedLines.length);\r\n while (originalLineIndex < originalStop && modifiedLineIndex < modifiedStop) {\r\n const originalLine = this.originalLines[originalLineIndex];\r\n const modifiedLine = this.modifiedLines[modifiedLineIndex];\r\n if (originalLine !== modifiedLine) {\r\n // These lines differ only in trim whitespace\r\n // Check the leading whitespace\r\n {\r\n let originalStartColumn = getFirstNonBlankColumn(originalLine, 1);\r\n let modifiedStartColumn = getFirstNonBlankColumn(modifiedLine, 1);\r\n while (originalStartColumn > 1 && modifiedStartColumn > 1) {\r\n const originalChar = originalLine.charCodeAt(originalStartColumn - 2);\r\n const modifiedChar = modifiedLine.charCodeAt(modifiedStartColumn - 2);\r\n if (originalChar !== modifiedChar) {\r\n break;\r\n }\r\n originalStartColumn--;\r\n modifiedStartColumn--;\r\n }\r\n if (originalStartColumn > 1 || modifiedStartColumn > 1) {\r\n this._pushTrimWhitespaceCharChange(result, originalLineIndex + 1, 1, originalStartColumn, modifiedLineIndex + 1, 1, modifiedStartColumn);\r\n }\r\n }\r\n // Check the trailing whitespace\r\n {\r\n let originalEndColumn = getLastNonBlankColumn(originalLine, 1);\r\n let modifiedEndColumn = getLastNonBlankColumn(modifiedLine, 1);\r\n const originalMaxColumn = originalLine.length + 1;\r\n const modifiedMaxColumn = modifiedLine.length + 1;\r\n while (originalEndColumn < originalMaxColumn && modifiedEndColumn < modifiedMaxColumn) {\r\n const originalChar = originalLine.charCodeAt(originalEndColumn - 1);\r\n const modifiedChar = originalLine.charCodeAt(modifiedEndColumn - 1);\r\n if (originalChar !== modifiedChar) {\r\n break;\r\n }\r\n originalEndColumn++;\r\n modifiedEndColumn++;\r\n }\r\n if (originalEndColumn < originalMaxColumn || modifiedEndColumn < modifiedMaxColumn) {\r\n this._pushTrimWhitespaceCharChange(result, originalLineIndex + 1, originalEndColumn, originalMaxColumn, modifiedLineIndex + 1, modifiedEndColumn, modifiedMaxColumn);\r\n }\r\n }\r\n }\r\n originalLineIndex++;\r\n modifiedLineIndex++;\r\n }\r\n if (nextChange) {\r\n // Emit the actual change\r\n result.push(LineChange.createFromDiffResult(this.shouldIgnoreTrimWhitespace, nextChange, this.original, this.modified, this.continueCharDiff, this.shouldComputeCharChanges, this.shouldPostProcessCharChanges));\r\n originalLineIndex += nextChange.originalLength;\r\n modifiedLineIndex += nextChange.modifiedLength;\r\n }\r\n }\r\n return {\r\n quitEarly: quitEarly,\r\n changes: result\r\n };\r\n }\r\n _pushTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn) {\r\n if (this._mergeTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn)) {\r\n // Merged into previous\r\n return;\r\n }\r\n let charChanges = undefined;\r\n if (this.shouldComputeCharChanges) {\r\n charChanges = [new CharChange(originalLineNumber, originalStartColumn, originalLineNumber, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedLineNumber, modifiedEndColumn)];\r\n }\r\n result.push(new LineChange(originalLineNumber, originalLineNumber, modifiedLineNumber, modifiedLineNumber, charChanges));\r\n }\r\n _mergeTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn) {\r\n const len = result.length;\r\n if (len === 0) {\r\n return false;\r\n }\r\n const prevChange = result[len - 1];\r\n if (prevChange.originalEndLineNumber === 0 || prevChange.modifiedEndLineNumber === 0) {\r\n // Don't merge with inserts/deletes\r\n return false;\r\n }\r\n if (prevChange.originalEndLineNumber + 1 === originalLineNumber && prevChange.modifiedEndLineNumber + 1 === modifiedLineNumber) {\r\n prevChange.originalEndLineNumber = originalLineNumber;\r\n prevChange.modifiedEndLineNumber = modifiedLineNumber;\r\n if (this.shouldComputeCharChanges && prevChange.charChanges) {\r\n prevChange.charChanges.push(new CharChange(originalLineNumber, originalStartColumn, originalLineNumber, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedLineNumber, modifiedEndColumn));\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\nfunction getFirstNonBlankColumn(txt, defaultValue) {\r\n const r = strings.firstNonWhitespaceIndex(txt);\r\n if (r === -1) {\r\n return defaultValue;\r\n }\r\n return r + 1;\r\n}\r\nfunction getLastNonBlankColumn(txt, defaultValue) {\r\n const r = strings.lastNonWhitespaceIndex(txt);\r\n if (r === -1) {\r\n return defaultValue;\r\n }\r\n return r + 2;\r\n}\r\nfunction createContinueProcessingPredicate(maximumRuntime) {\r\n if (maximumRuntime === 0) {\r\n return () => true;\r\n }\r\n const startTime = Date.now();\r\n return () => {\r\n return Date.now() - startTime < maximumRuntime;\r\n };\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport function toUint8(v) {\r\n if (v < 0) {\r\n return 0;\r\n }\r\n if (v > 255 /* MAX_UINT_8 */) {\r\n return 255 /* MAX_UINT_8 */;\r\n }\r\n return v | 0;\r\n}\r\nexport function toUint32(v) {\r\n if (v < 0) {\r\n return 0;\r\n }\r\n if (v > 4294967295 /* MAX_UINT_32 */) {\r\n return 4294967295 /* MAX_UINT_32 */;\r\n }\r\n return v | 0;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { toUint32 } from '../../../base/common/uint.js';\r\nexport class PrefixSumIndexOfResult {\r\n constructor(index, remainder) {\r\n this._prefixSumIndexOfResultBrand = undefined;\r\n this.index = index;\r\n this.remainder = remainder;\r\n }\r\n}\r\nexport class PrefixSumComputer {\r\n constructor(values) {\r\n this.values = values;\r\n this.prefixSum = new Uint32Array(values.length);\r\n this.prefixSumValidIndex = new Int32Array(1);\r\n this.prefixSumValidIndex[0] = -1;\r\n }\r\n insertValues(insertIndex, insertValues) {\r\n insertIndex = toUint32(insertIndex);\r\n const oldValues = this.values;\r\n const oldPrefixSum = this.prefixSum;\r\n const insertValuesLen = insertValues.length;\r\n if (insertValuesLen === 0) {\r\n return false;\r\n }\r\n this.values = new Uint32Array(oldValues.length + insertValuesLen);\r\n this.values.set(oldValues.subarray(0, insertIndex), 0);\r\n this.values.set(oldValues.subarray(insertIndex), insertIndex + insertValuesLen);\r\n this.values.set(insertValues, insertIndex);\r\n if (insertIndex - 1 < this.prefixSumValidIndex[0]) {\r\n this.prefixSumValidIndex[0] = insertIndex - 1;\r\n }\r\n this.prefixSum = new Uint32Array(this.values.length);\r\n if (this.prefixSumValidIndex[0] >= 0) {\r\n this.prefixSum.set(oldPrefixSum.subarray(0, this.prefixSumValidIndex[0] + 1));\r\n }\r\n return true;\r\n }\r\n changeValue(index, value) {\r\n index = toUint32(index);\r\n value = toUint32(value);\r\n if (this.values[index] === value) {\r\n return false;\r\n }\r\n this.values[index] = value;\r\n if (index - 1 < this.prefixSumValidIndex[0]) {\r\n this.prefixSumValidIndex[0] = index - 1;\r\n }\r\n return true;\r\n }\r\n removeValues(startIndex, count) {\r\n startIndex = toUint32(startIndex);\r\n count = toUint32(count);\r\n const oldValues = this.values;\r\n const oldPrefixSum = this.prefixSum;\r\n if (startIndex >= oldValues.length) {\r\n return false;\r\n }\r\n let maxCount = oldValues.length - startIndex;\r\n if (count >= maxCount) {\r\n count = maxCount;\r\n }\r\n if (count === 0) {\r\n return false;\r\n }\r\n this.values = new Uint32Array(oldValues.length - count);\r\n this.values.set(oldValues.subarray(0, startIndex), 0);\r\n this.values.set(oldValues.subarray(startIndex + count), startIndex);\r\n this.prefixSum = new Uint32Array(this.values.length);\r\n if (startIndex - 1 < this.prefixSumValidIndex[0]) {\r\n this.prefixSumValidIndex[0] = startIndex - 1;\r\n }\r\n if (this.prefixSumValidIndex[0] >= 0) {\r\n this.prefixSum.set(oldPrefixSum.subarray(0, this.prefixSumValidIndex[0] + 1));\r\n }\r\n return true;\r\n }\r\n getTotalSum() {\r\n if (this.values.length === 0) {\r\n return 0;\r\n }\r\n return this._getPrefixSum(this.values.length - 1);\r\n }\r\n getPrefixSum(index) {\r\n if (index < 0) {\r\n return 0;\r\n }\r\n index = toUint32(index);\r\n return this._getPrefixSum(index);\r\n }\r\n _getPrefixSum(index) {\r\n if (index <= this.prefixSumValidIndex[0]) {\r\n return this.prefixSum[index];\r\n }\r\n let startIndex = this.prefixSumValidIndex[0] + 1;\r\n if (startIndex === 0) {\r\n this.prefixSum[0] = this.values[0];\r\n startIndex++;\r\n }\r\n if (index >= this.values.length) {\r\n index = this.values.length - 1;\r\n }\r\n for (let i = startIndex; i <= index; i++) {\r\n this.prefixSum[i] = this.prefixSum[i - 1] + this.values[i];\r\n }\r\n this.prefixSumValidIndex[0] = Math.max(this.prefixSumValidIndex[0], index);\r\n return this.prefixSum[index];\r\n }\r\n getIndexOf(sum) {\r\n sum = Math.floor(sum); //@perf\r\n // Compute all sums (to get a fully valid prefixSum)\r\n this.getTotalSum();\r\n let low = 0;\r\n let high = this.values.length - 1;\r\n let mid = 0;\r\n let midStop = 0;\r\n let midStart = 0;\r\n while (low <= high) {\r\n mid = low + ((high - low) / 2) | 0;\r\n midStop = this.prefixSum[mid];\r\n midStart = midStop - this.values[mid];\r\n if (sum < midStart) {\r\n high = mid - 1;\r\n }\r\n else if (sum >= midStop) {\r\n low = mid + 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return new PrefixSumIndexOfResult(mid, sum - midStart);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { splitLines } from '../../../base/common/strings.js';\r\nimport { Position } from '../core/position.js';\r\nimport { PrefixSumComputer } from '../viewModel/prefixSumComputer.js';\r\nexport class MirrorTextModel {\r\n constructor(uri, lines, eol, versionId) {\r\n this._uri = uri;\r\n this._lines = lines;\r\n this._eol = eol;\r\n this._versionId = versionId;\r\n this._lineStarts = null;\r\n this._cachedTextValue = null;\r\n }\r\n dispose() {\r\n this._lines.length = 0;\r\n }\r\n get version() {\r\n return this._versionId;\r\n }\r\n getText() {\r\n if (this._cachedTextValue === null) {\r\n this._cachedTextValue = this._lines.join(this._eol);\r\n }\r\n return this._cachedTextValue;\r\n }\r\n onEvents(e) {\r\n if (e.eol && e.eol !== this._eol) {\r\n this._eol = e.eol;\r\n this._lineStarts = null;\r\n }\r\n // Update my lines\r\n const changes = e.changes;\r\n for (const change of changes) {\r\n this._acceptDeleteRange(change.range);\r\n this._acceptInsertText(new Position(change.range.startLineNumber, change.range.startColumn), change.text);\r\n }\r\n this._versionId = e.versionId;\r\n this._cachedTextValue = null;\r\n }\r\n _ensureLineStarts() {\r\n if (!this._lineStarts) {\r\n const eolLength = this._eol.length;\r\n const linesLength = this._lines.length;\r\n const lineStartValues = new Uint32Array(linesLength);\r\n for (let i = 0; i < linesLength; i++) {\r\n lineStartValues[i] = this._lines[i].length + eolLength;\r\n }\r\n this._lineStarts = new PrefixSumComputer(lineStartValues);\r\n }\r\n }\r\n /**\r\n * All changes to a line's text go through this method\r\n */\r\n _setLineText(lineIndex, newValue) {\r\n this._lines[lineIndex] = newValue;\r\n if (this._lineStarts) {\r\n // update prefix sum\r\n this._lineStarts.changeValue(lineIndex, this._lines[lineIndex].length + this._eol.length);\r\n }\r\n }\r\n _acceptDeleteRange(range) {\r\n if (range.startLineNumber === range.endLineNumber) {\r\n if (range.startColumn === range.endColumn) {\r\n // Nothing to delete\r\n return;\r\n }\r\n // Delete text on the affected line\r\n this._setLineText(range.startLineNumber - 1, this._lines[range.startLineNumber - 1].substring(0, range.startColumn - 1)\r\n + this._lines[range.startLineNumber - 1].substring(range.endColumn - 1));\r\n return;\r\n }\r\n // Take remaining text on last line and append it to remaining text on first line\r\n this._setLineText(range.startLineNumber - 1, this._lines[range.startLineNumber - 1].substring(0, range.startColumn - 1)\r\n + this._lines[range.endLineNumber - 1].substring(range.endColumn - 1));\r\n // Delete middle lines\r\n this._lines.splice(range.startLineNumber, range.endLineNumber - range.startLineNumber);\r\n if (this._lineStarts) {\r\n // update prefix sum\r\n this._lineStarts.removeValues(range.startLineNumber, range.endLineNumber - range.startLineNumber);\r\n }\r\n }\r\n _acceptInsertText(position, insertText) {\r\n if (insertText.length === 0) {\r\n // Nothing to insert\r\n return;\r\n }\r\n let insertLines = splitLines(insertText);\r\n if (insertLines.length === 1) {\r\n // Inserting text on one line\r\n this._setLineText(position.lineNumber - 1, this._lines[position.lineNumber - 1].substring(0, position.column - 1)\r\n + insertLines[0]\r\n + this._lines[position.lineNumber - 1].substring(position.column - 1));\r\n return;\r\n }\r\n // Append overflowing text from first line to the end of text to insert\r\n insertLines[insertLines.length - 1] += this._lines[position.lineNumber - 1].substring(position.column - 1);\r\n // Delete overflowing text from first line and insert text on first line\r\n this._setLineText(position.lineNumber - 1, this._lines[position.lineNumber - 1].substring(0, position.column - 1)\r\n + insertLines[0]);\r\n // Insert new lines & store lengths\r\n let newLengths = new Uint32Array(insertLines.length - 1);\r\n for (let i = 1; i < insertLines.length; i++) {\r\n this._lines.splice(position.lineNumber + i - 1, 0, insertLines[i]);\r\n newLengths[i - 1] = insertLines[i].length + this._eol.length;\r\n }\r\n if (this._lineStarts) {\r\n // update prefix sum\r\n this._lineStarts.insertValues(position.lineNumber, newLengths);\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { toUint8 } from '../../../base/common/uint.js';\r\n/**\r\n * A fast character classifier that uses a compact array for ASCII values.\r\n */\r\nexport class CharacterClassifier {\r\n constructor(_defaultValue) {\r\n let defaultValue = toUint8(_defaultValue);\r\n this._defaultValue = defaultValue;\r\n this._asciiMap = CharacterClassifier._createAsciiMap(defaultValue);\r\n this._map = new Map();\r\n }\r\n static _createAsciiMap(defaultValue) {\r\n let asciiMap = new Uint8Array(256);\r\n for (let i = 0; i < 256; i++) {\r\n asciiMap[i] = defaultValue;\r\n }\r\n return asciiMap;\r\n }\r\n set(charCode, _value) {\r\n let value = toUint8(_value);\r\n if (charCode >= 0 && charCode < 256) {\r\n this._asciiMap[charCode] = value;\r\n }\r\n else {\r\n this._map.set(charCode, value);\r\n }\r\n }\r\n get(charCode) {\r\n if (charCode >= 0 && charCode < 256) {\r\n return this._asciiMap[charCode];\r\n }\r\n else {\r\n return (this._map.get(charCode) || this._defaultValue);\r\n }\r\n }\r\n}\r\nexport class CharacterSet {\r\n constructor() {\r\n this._actual = new CharacterClassifier(0 /* False */);\r\n }\r\n add(charCode) {\r\n this._actual.set(charCode, 1 /* True */);\r\n }\r\n has(charCode) {\r\n return (this._actual.get(charCode) === 1 /* True */);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { CharacterClassifier } from '../core/characterClassifier.js';\r\nexport class Uint8Matrix {\r\n constructor(rows, cols, defaultValue) {\r\n const data = new Uint8Array(rows * cols);\r\n for (let i = 0, len = rows * cols; i < len; i++) {\r\n data[i] = defaultValue;\r\n }\r\n this._data = data;\r\n this.rows = rows;\r\n this.cols = cols;\r\n }\r\n get(row, col) {\r\n return this._data[row * this.cols + col];\r\n }\r\n set(row, col, value) {\r\n this._data[row * this.cols + col] = value;\r\n }\r\n}\r\nexport class StateMachine {\r\n constructor(edges) {\r\n let maxCharCode = 0;\r\n let maxState = 0 /* Invalid */;\r\n for (let i = 0, len = edges.length; i < len; i++) {\r\n let [from, chCode, to] = edges[i];\r\n if (chCode > maxCharCode) {\r\n maxCharCode = chCode;\r\n }\r\n if (from > maxState) {\r\n maxState = from;\r\n }\r\n if (to > maxState) {\r\n maxState = to;\r\n }\r\n }\r\n maxCharCode++;\r\n maxState++;\r\n let states = new Uint8Matrix(maxState, maxCharCode, 0 /* Invalid */);\r\n for (let i = 0, len = edges.length; i < len; i++) {\r\n let [from, chCode, to] = edges[i];\r\n states.set(from, chCode, to);\r\n }\r\n this._states = states;\r\n this._maxCharCode = maxCharCode;\r\n }\r\n nextState(currentState, chCode) {\r\n if (chCode < 0 || chCode >= this._maxCharCode) {\r\n return 0 /* Invalid */;\r\n }\r\n return this._states.get(currentState, chCode);\r\n }\r\n}\r\n// State machine for http:// or https:// or file://\r\nlet _stateMachine = null;\r\nfunction getStateMachine() {\r\n if (_stateMachine === null) {\r\n _stateMachine = new StateMachine([\r\n [1 /* Start */, 104 /* h */, 2 /* H */],\r\n [1 /* Start */, 72 /* H */, 2 /* H */],\r\n [1 /* Start */, 102 /* f */, 6 /* F */],\r\n [1 /* Start */, 70 /* F */, 6 /* F */],\r\n [2 /* H */, 116 /* t */, 3 /* HT */],\r\n [2 /* H */, 84 /* T */, 3 /* HT */],\r\n [3 /* HT */, 116 /* t */, 4 /* HTT */],\r\n [3 /* HT */, 84 /* T */, 4 /* HTT */],\r\n [4 /* HTT */, 112 /* p */, 5 /* HTTP */],\r\n [4 /* HTT */, 80 /* P */, 5 /* HTTP */],\r\n [5 /* HTTP */, 115 /* s */, 9 /* BeforeColon */],\r\n [5 /* HTTP */, 83 /* S */, 9 /* BeforeColon */],\r\n [5 /* HTTP */, 58 /* Colon */, 10 /* AfterColon */],\r\n [6 /* F */, 105 /* i */, 7 /* FI */],\r\n [6 /* F */, 73 /* I */, 7 /* FI */],\r\n [7 /* FI */, 108 /* l */, 8 /* FIL */],\r\n [7 /* FI */, 76 /* L */, 8 /* FIL */],\r\n [8 /* FIL */, 101 /* e */, 9 /* BeforeColon */],\r\n [8 /* FIL */, 69 /* E */, 9 /* BeforeColon */],\r\n [9 /* BeforeColon */, 58 /* Colon */, 10 /* AfterColon */],\r\n [10 /* AfterColon */, 47 /* Slash */, 11 /* AlmostThere */],\r\n [11 /* AlmostThere */, 47 /* Slash */, 12 /* End */],\r\n ]);\r\n }\r\n return _stateMachine;\r\n}\r\nlet _classifier = null;\r\nfunction getClassifier() {\r\n if (_classifier === null) {\r\n _classifier = new CharacterClassifier(0 /* None */);\r\n const FORCE_TERMINATION_CHARACTERS = ' \\t<>\\'\\\"、。。、,.:;‘〈「『〔([{「」}])〕』」〉’`~…';\r\n for (let i = 0; i < FORCE_TERMINATION_CHARACTERS.length; i++) {\r\n _classifier.set(FORCE_TERMINATION_CHARACTERS.charCodeAt(i), 1 /* ForceTermination */);\r\n }\r\n const CANNOT_END_WITH_CHARACTERS = '.,;';\r\n for (let i = 0; i < CANNOT_END_WITH_CHARACTERS.length; i++) {\r\n _classifier.set(CANNOT_END_WITH_CHARACTERS.charCodeAt(i), 2 /* CannotEndIn */);\r\n }\r\n }\r\n return _classifier;\r\n}\r\nexport class LinkComputer {\r\n static _createLink(classifier, line, lineNumber, linkBeginIndex, linkEndIndex) {\r\n // Do not allow to end link in certain characters...\r\n let lastIncludedCharIndex = linkEndIndex - 1;\r\n do {\r\n const chCode = line.charCodeAt(lastIncludedCharIndex);\r\n const chClass = classifier.get(chCode);\r\n if (chClass !== 2 /* CannotEndIn */) {\r\n break;\r\n }\r\n lastIncludedCharIndex--;\r\n } while (lastIncludedCharIndex > linkBeginIndex);\r\n // Handle links enclosed in parens, square brackets and curlys.\r\n if (linkBeginIndex > 0) {\r\n const charCodeBeforeLink = line.charCodeAt(linkBeginIndex - 1);\r\n const lastCharCodeInLink = line.charCodeAt(lastIncludedCharIndex);\r\n if ((charCodeBeforeLink === 40 /* OpenParen */ && lastCharCodeInLink === 41 /* CloseParen */)\r\n || (charCodeBeforeLink === 91 /* OpenSquareBracket */ && lastCharCodeInLink === 93 /* CloseSquareBracket */)\r\n || (charCodeBeforeLink === 123 /* OpenCurlyBrace */ && lastCharCodeInLink === 125 /* CloseCurlyBrace */)) {\r\n // Do not end in ) if ( is before the link start\r\n // Do not end in ] if [ is before the link start\r\n // Do not end in } if { is before the link start\r\n lastIncludedCharIndex--;\r\n }\r\n }\r\n return {\r\n range: {\r\n startLineNumber: lineNumber,\r\n startColumn: linkBeginIndex + 1,\r\n endLineNumber: lineNumber,\r\n endColumn: lastIncludedCharIndex + 2\r\n },\r\n url: line.substring(linkBeginIndex, lastIncludedCharIndex + 1)\r\n };\r\n }\r\n static computeLinks(model, stateMachine = getStateMachine()) {\r\n const classifier = getClassifier();\r\n let result = [];\r\n for (let i = 1, lineCount = model.getLineCount(); i <= lineCount; i++) {\r\n const line = model.getLineContent(i);\r\n const len = line.length;\r\n let j = 0;\r\n let linkBeginIndex = 0;\r\n let linkBeginChCode = 0;\r\n let state = 1 /* Start */;\r\n let hasOpenParens = false;\r\n let hasOpenSquareBracket = false;\r\n let inSquareBrackets = false;\r\n let hasOpenCurlyBracket = false;\r\n while (j < len) {\r\n let resetStateMachine = false;\r\n const chCode = line.charCodeAt(j);\r\n if (state === 13 /* Accept */) {\r\n let chClass;\r\n switch (chCode) {\r\n case 40 /* OpenParen */:\r\n hasOpenParens = true;\r\n chClass = 0 /* None */;\r\n break;\r\n case 41 /* CloseParen */:\r\n chClass = (hasOpenParens ? 0 /* None */ : 1 /* ForceTermination */);\r\n break;\r\n case 91 /* OpenSquareBracket */:\r\n inSquareBrackets = true;\r\n hasOpenSquareBracket = true;\r\n chClass = 0 /* None */;\r\n break;\r\n case 93 /* CloseSquareBracket */:\r\n inSquareBrackets = false;\r\n chClass = (hasOpenSquareBracket ? 0 /* None */ : 1 /* ForceTermination */);\r\n break;\r\n case 123 /* OpenCurlyBrace */:\r\n hasOpenCurlyBracket = true;\r\n chClass = 0 /* None */;\r\n break;\r\n case 125 /* CloseCurlyBrace */:\r\n chClass = (hasOpenCurlyBracket ? 0 /* None */ : 1 /* ForceTermination */);\r\n break;\r\n /* The following three rules make it that ' or \" or ` are allowed inside links if the link began with a different one */\r\n case 39 /* SingleQuote */:\r\n chClass = (linkBeginChCode === 34 /* DoubleQuote */ || linkBeginChCode === 96 /* BackTick */) ? 0 /* None */ : 1 /* ForceTermination */;\r\n break;\r\n case 34 /* DoubleQuote */:\r\n chClass = (linkBeginChCode === 39 /* SingleQuote */ || linkBeginChCode === 96 /* BackTick */) ? 0 /* None */ : 1 /* ForceTermination */;\r\n break;\r\n case 96 /* BackTick */:\r\n chClass = (linkBeginChCode === 39 /* SingleQuote */ || linkBeginChCode === 34 /* DoubleQuote */) ? 0 /* None */ : 1 /* ForceTermination */;\r\n break;\r\n case 42 /* Asterisk */:\r\n // `*` terminates a link if the link began with `*`\r\n chClass = (linkBeginChCode === 42 /* Asterisk */) ? 1 /* ForceTermination */ : 0 /* None */;\r\n break;\r\n case 124 /* Pipe */:\r\n // `|` terminates a link if the link began with `|`\r\n chClass = (linkBeginChCode === 124 /* Pipe */) ? 1 /* ForceTermination */ : 0 /* None */;\r\n break;\r\n case 32 /* Space */:\r\n // ` ` allow space in between [ and ]\r\n chClass = (inSquareBrackets ? 0 /* None */ : 1 /* ForceTermination */);\r\n break;\r\n default:\r\n chClass = classifier.get(chCode);\r\n }\r\n // Check if character terminates link\r\n if (chClass === 1 /* ForceTermination */) {\r\n result.push(LinkComputer._createLink(classifier, line, i, linkBeginIndex, j));\r\n resetStateMachine = true;\r\n }\r\n }\r\n else if (state === 12 /* End */) {\r\n let chClass;\r\n if (chCode === 91 /* OpenSquareBracket */) {\r\n // Allow for the authority part to contain ipv6 addresses which contain [ and ]\r\n hasOpenSquareBracket = true;\r\n chClass = 0 /* None */;\r\n }\r\n else {\r\n chClass = classifier.get(chCode);\r\n }\r\n // Check if character terminates link\r\n if (chClass === 1 /* ForceTermination */) {\r\n resetStateMachine = true;\r\n }\r\n else {\r\n state = 13 /* Accept */;\r\n }\r\n }\r\n else {\r\n state = stateMachine.nextState(state, chCode);\r\n if (state === 0 /* Invalid */) {\r\n resetStateMachine = true;\r\n }\r\n }\r\n if (resetStateMachine) {\r\n state = 1 /* Start */;\r\n hasOpenParens = false;\r\n hasOpenSquareBracket = false;\r\n hasOpenCurlyBracket = false;\r\n // Record where the link started\r\n linkBeginIndex = j + 1;\r\n linkBeginChCode = chCode;\r\n }\r\n j++;\r\n }\r\n if (state === 13 /* Accept */) {\r\n result.push(LinkComputer._createLink(classifier, line, i, linkBeginIndex, len));\r\n }\r\n }\r\n return result;\r\n }\r\n}\r\n/**\r\n * Returns an array of all links contains in the provided\r\n * document. *Note* that this operation is computational\r\n * expensive and should not run in the UI thread.\r\n */\r\nexport function computeLinks(model) {\r\n if (!model || typeof model.getLineCount !== 'function' || typeof model.getLineContent !== 'function') {\r\n // Unknown caller!\r\n return [];\r\n }\r\n return LinkComputer.computeLinks(model);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class BasicInplaceReplace {\r\n constructor() {\r\n this._defaultValueSet = [\r\n ['true', 'false'],\r\n ['True', 'False'],\r\n ['Private', 'Public', 'Friend', 'ReadOnly', 'Partial', 'Protected', 'WriteOnly'],\r\n ['public', 'protected', 'private'],\r\n ];\r\n }\r\n navigateValueSet(range1, text1, range2, text2, up) {\r\n if (range1 && text1) {\r\n let result = this.doNavigateValueSet(text1, up);\r\n if (result) {\r\n return {\r\n range: range1,\r\n value: result\r\n };\r\n }\r\n }\r\n if (range2 && text2) {\r\n let result = this.doNavigateValueSet(text2, up);\r\n if (result) {\r\n return {\r\n range: range2,\r\n value: result\r\n };\r\n }\r\n }\r\n return null;\r\n }\r\n doNavigateValueSet(text, up) {\r\n let numberResult = this.numberReplace(text, up);\r\n if (numberResult !== null) {\r\n return numberResult;\r\n }\r\n return this.textReplace(text, up);\r\n }\r\n numberReplace(value, up) {\r\n let precision = Math.pow(10, value.length - (value.lastIndexOf('.') + 1));\r\n let n1 = Number(value);\r\n let n2 = parseFloat(value);\r\n if (!isNaN(n1) && !isNaN(n2) && n1 === n2) {\r\n if (n1 === 0 && !up) {\r\n return null; // don't do negative\r\n //\t\t\t} else if(n1 === 9 && up) {\r\n //\t\t\t\treturn null; // don't insert 10 into a number\r\n }\r\n else {\r\n n1 = Math.floor(n1 * precision);\r\n n1 += up ? precision : -precision;\r\n return String(n1 / precision);\r\n }\r\n }\r\n return null;\r\n }\r\n textReplace(value, up) {\r\n return this.valueSetsReplace(this._defaultValueSet, value, up);\r\n }\r\n valueSetsReplace(valueSets, value, up) {\r\n let result = null;\r\n for (let i = 0, len = valueSets.length; result === null && i < len; i++) {\r\n result = this.valueSetReplace(valueSets[i], value, up);\r\n }\r\n return result;\r\n }\r\n valueSetReplace(valueSet, value, up) {\r\n let idx = valueSet.indexOf(value);\r\n if (idx >= 0) {\r\n idx += up ? +1 : -1;\r\n if (idx < 0) {\r\n idx = valueSet.length - 1;\r\n }\r\n else {\r\n idx %= valueSet.length;\r\n }\r\n return valueSet[idx];\r\n }\r\n return null;\r\n }\r\n}\r\nBasicInplaceReplace.INSTANCE = new BasicInplaceReplace();\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { stringDiff } from '../../../base/common/diff/diff.js';\r\nimport { globals } from '../../../base/common/platform.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { Position } from '../core/position.js';\r\nimport { Range } from '../core/range.js';\r\nimport { DiffComputer } from '../diff/diffComputer.js';\r\nimport { MirrorTextModel as BaseMirrorModel } from '../model/mirrorTextModel.js';\r\nimport { ensureValidWordDefinition, getWordAtText } from '../model/wordHelper.js';\r\nimport { computeLinks } from '../modes/linkComputer.js';\r\nimport { BasicInplaceReplace } from '../modes/supports/inplaceReplaceSupport.js';\r\nimport { createMonacoBaseAPI } from '../standalone/standaloneBase.js';\r\nimport * as types from '../../../base/common/types.js';\r\nimport { StopWatch } from '../../../base/common/stopwatch.js';\r\n/**\r\n * @internal\r\n */\r\nclass MirrorModel extends BaseMirrorModel {\r\n get uri() {\r\n return this._uri;\r\n }\r\n get eol() {\r\n return this._eol;\r\n }\r\n getValue() {\r\n return this.getText();\r\n }\r\n getLinesContent() {\r\n return this._lines.slice(0);\r\n }\r\n getLineCount() {\r\n return this._lines.length;\r\n }\r\n getLineContent(lineNumber) {\r\n return this._lines[lineNumber - 1];\r\n }\r\n getWordAtPosition(position, wordDefinition) {\r\n let wordAtText = getWordAtText(position.column, ensureValidWordDefinition(wordDefinition), this._lines[position.lineNumber - 1], 0);\r\n if (wordAtText) {\r\n return new Range(position.lineNumber, wordAtText.startColumn, position.lineNumber, wordAtText.endColumn);\r\n }\r\n return null;\r\n }\r\n words(wordDefinition) {\r\n const lines = this._lines;\r\n const wordenize = this._wordenize.bind(this);\r\n let lineNumber = 0;\r\n let lineText = '';\r\n let wordRangesIdx = 0;\r\n let wordRanges = [];\r\n return {\r\n *[Symbol.iterator]() {\r\n while (true) {\r\n if (wordRangesIdx < wordRanges.length) {\r\n const value = lineText.substring(wordRanges[wordRangesIdx].start, wordRanges[wordRangesIdx].end);\r\n wordRangesIdx += 1;\r\n yield value;\r\n }\r\n else {\r\n if (lineNumber < lines.length) {\r\n lineText = lines[lineNumber];\r\n wordRanges = wordenize(lineText, wordDefinition);\r\n wordRangesIdx = 0;\r\n lineNumber += 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }\r\n getLineWords(lineNumber, wordDefinition) {\r\n let content = this._lines[lineNumber - 1];\r\n let ranges = this._wordenize(content, wordDefinition);\r\n let words = [];\r\n for (const range of ranges) {\r\n words.push({\r\n word: content.substring(range.start, range.end),\r\n startColumn: range.start + 1,\r\n endColumn: range.end + 1\r\n });\r\n }\r\n return words;\r\n }\r\n _wordenize(content, wordDefinition) {\r\n const result = [];\r\n let match;\r\n wordDefinition.lastIndex = 0; // reset lastIndex just to be sure\r\n while (match = wordDefinition.exec(content)) {\r\n if (match[0].length === 0) {\r\n // it did match the empty string\r\n break;\r\n }\r\n result.push({ start: match.index, end: match.index + match[0].length });\r\n }\r\n return result;\r\n }\r\n getValueInRange(range) {\r\n range = this._validateRange(range);\r\n if (range.startLineNumber === range.endLineNumber) {\r\n return this._lines[range.startLineNumber - 1].substring(range.startColumn - 1, range.endColumn - 1);\r\n }\r\n let lineEnding = this._eol;\r\n let startLineIndex = range.startLineNumber - 1;\r\n let endLineIndex = range.endLineNumber - 1;\r\n let resultLines = [];\r\n resultLines.push(this._lines[startLineIndex].substring(range.startColumn - 1));\r\n for (let i = startLineIndex + 1; i < endLineIndex; i++) {\r\n resultLines.push(this._lines[i]);\r\n }\r\n resultLines.push(this._lines[endLineIndex].substring(0, range.endColumn - 1));\r\n return resultLines.join(lineEnding);\r\n }\r\n offsetAt(position) {\r\n position = this._validatePosition(position);\r\n this._ensureLineStarts();\r\n return this._lineStarts.getPrefixSum(position.lineNumber - 2) + (position.column - 1);\r\n }\r\n positionAt(offset) {\r\n offset = Math.floor(offset);\r\n offset = Math.max(0, offset);\r\n this._ensureLineStarts();\r\n let out = this._lineStarts.getIndexOf(offset);\r\n let lineLength = this._lines[out.index].length;\r\n // Ensure we return a valid position\r\n return {\r\n lineNumber: 1 + out.index,\r\n column: 1 + Math.min(out.remainder, lineLength)\r\n };\r\n }\r\n _validateRange(range) {\r\n const start = this._validatePosition({ lineNumber: range.startLineNumber, column: range.startColumn });\r\n const end = this._validatePosition({ lineNumber: range.endLineNumber, column: range.endColumn });\r\n if (start.lineNumber !== range.startLineNumber\r\n || start.column !== range.startColumn\r\n || end.lineNumber !== range.endLineNumber\r\n || end.column !== range.endColumn) {\r\n return {\r\n startLineNumber: start.lineNumber,\r\n startColumn: start.column,\r\n endLineNumber: end.lineNumber,\r\n endColumn: end.column\r\n };\r\n }\r\n return range;\r\n }\r\n _validatePosition(position) {\r\n if (!Position.isIPosition(position)) {\r\n throw new Error('bad position');\r\n }\r\n let { lineNumber, column } = position;\r\n let hasChanged = false;\r\n if (lineNumber < 1) {\r\n lineNumber = 1;\r\n column = 1;\r\n hasChanged = true;\r\n }\r\n else if (lineNumber > this._lines.length) {\r\n lineNumber = this._lines.length;\r\n column = this._lines[lineNumber - 1].length + 1;\r\n hasChanged = true;\r\n }\r\n else {\r\n let maxCharacter = this._lines[lineNumber - 1].length + 1;\r\n if (column < 1) {\r\n column = 1;\r\n hasChanged = true;\r\n }\r\n else if (column > maxCharacter) {\r\n column = maxCharacter;\r\n hasChanged = true;\r\n }\r\n }\r\n if (!hasChanged) {\r\n return position;\r\n }\r\n else {\r\n return { lineNumber, column };\r\n }\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport class EditorSimpleWorker {\r\n constructor(host, foreignModuleFactory) {\r\n this._host = host;\r\n this._models = Object.create(null);\r\n this._foreignModuleFactory = foreignModuleFactory;\r\n this._foreignModule = null;\r\n }\r\n dispose() {\r\n this._models = Object.create(null);\r\n }\r\n _getModel(uri) {\r\n return this._models[uri];\r\n }\r\n _getModels() {\r\n let all = [];\r\n Object.keys(this._models).forEach((key) => all.push(this._models[key]));\r\n return all;\r\n }\r\n acceptNewModel(data) {\r\n this._models[data.url] = new MirrorModel(URI.parse(data.url), data.lines, data.EOL, data.versionId);\r\n }\r\n acceptModelChanged(strURL, e) {\r\n if (!this._models[strURL]) {\r\n return;\r\n }\r\n let model = this._models[strURL];\r\n model.onEvents(e);\r\n }\r\n acceptRemovedModel(strURL) {\r\n if (!this._models[strURL]) {\r\n return;\r\n }\r\n delete this._models[strURL];\r\n }\r\n // ---- BEGIN diff --------------------------------------------------------------------------\r\n computeDiff(originalUrl, modifiedUrl, ignoreTrimWhitespace, maxComputationTime) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const original = this._getModel(originalUrl);\r\n const modified = this._getModel(modifiedUrl);\r\n if (!original || !modified) {\r\n return null;\r\n }\r\n const originalLines = original.getLinesContent();\r\n const modifiedLines = modified.getLinesContent();\r\n const diffComputer = new DiffComputer(originalLines, modifiedLines, {\r\n shouldComputeCharChanges: true,\r\n shouldPostProcessCharChanges: true,\r\n shouldIgnoreTrimWhitespace: ignoreTrimWhitespace,\r\n shouldMakePrettyDiff: true,\r\n maxComputationTime: maxComputationTime\r\n });\r\n const diffResult = diffComputer.computeDiff();\r\n const identical = (diffResult.changes.length > 0 ? false : this._modelsAreIdentical(original, modified));\r\n return {\r\n quitEarly: diffResult.quitEarly,\r\n identical: identical,\r\n changes: diffResult.changes\r\n };\r\n });\r\n }\r\n _modelsAreIdentical(original, modified) {\r\n const originalLineCount = original.getLineCount();\r\n const modifiedLineCount = modified.getLineCount();\r\n if (originalLineCount !== modifiedLineCount) {\r\n return false;\r\n }\r\n for (let line = 1; line <= originalLineCount; line++) {\r\n const originalLine = original.getLineContent(line);\r\n const modifiedLine = modified.getLineContent(line);\r\n if (originalLine !== modifiedLine) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n computeMoreMinimalEdits(modelUrl, edits) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const model = this._getModel(modelUrl);\r\n if (!model) {\r\n return edits;\r\n }\r\n const result = [];\r\n let lastEol = undefined;\r\n edits = edits.slice(0).sort((a, b) => {\r\n if (a.range && b.range) {\r\n return Range.compareRangesUsingStarts(a.range, b.range);\r\n }\r\n // eol only changes should go to the end\r\n let aRng = a.range ? 0 : 1;\r\n let bRng = b.range ? 0 : 1;\r\n return aRng - bRng;\r\n });\r\n for (let { range, text, eol } of edits) {\r\n if (typeof eol === 'number') {\r\n lastEol = eol;\r\n }\r\n if (Range.isEmpty(range) && !text) {\r\n // empty change\r\n continue;\r\n }\r\n const original = model.getValueInRange(range);\r\n text = text.replace(/\\r\\n|\\n|\\r/g, model.eol);\r\n if (original === text) {\r\n // noop\r\n continue;\r\n }\r\n // make sure diff won't take too long\r\n if (Math.max(text.length, original.length) > EditorSimpleWorker._diffLimit) {\r\n result.push({ range, text });\r\n continue;\r\n }\r\n // compute diff between original and edit.text\r\n const changes = stringDiff(original, text, false);\r\n const editOffset = model.offsetAt(Range.lift(range).getStartPosition());\r\n for (const change of changes) {\r\n const start = model.positionAt(editOffset + change.originalStart);\r\n const end = model.positionAt(editOffset + change.originalStart + change.originalLength);\r\n const newEdit = {\r\n text: text.substr(change.modifiedStart, change.modifiedLength),\r\n range: { startLineNumber: start.lineNumber, startColumn: start.column, endLineNumber: end.lineNumber, endColumn: end.column }\r\n };\r\n if (model.getValueInRange(newEdit.range) !== newEdit.text) {\r\n result.push(newEdit);\r\n }\r\n }\r\n }\r\n if (typeof lastEol === 'number') {\r\n result.push({ eol: lastEol, text: '', range: { startLineNumber: 0, startColumn: 0, endLineNumber: 0, endColumn: 0 } });\r\n }\r\n return result;\r\n });\r\n }\r\n // ---- END minimal edits ---------------------------------------------------------------\r\n computeLinks(modelUrl) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let model = this._getModel(modelUrl);\r\n if (!model) {\r\n return null;\r\n }\r\n return computeLinks(model);\r\n });\r\n }\r\n textualSuggest(modelUrls, leadingWord, wordDef, wordDefFlags) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const sw = new StopWatch(true);\r\n const wordDefRegExp = new RegExp(wordDef, wordDefFlags);\r\n const seen = new Set();\r\n outer: for (let url of modelUrls) {\r\n const model = this._getModel(url);\r\n if (!model) {\r\n continue;\r\n }\r\n for (let word of model.words(wordDefRegExp)) {\r\n if (word === leadingWord || !isNaN(Number(word))) {\r\n continue;\r\n }\r\n seen.add(word);\r\n if (seen.size > EditorSimpleWorker._suggestionsLimit) {\r\n break outer;\r\n }\r\n }\r\n }\r\n return { words: Array.from(seen), duration: sw.elapsed() };\r\n });\r\n }\r\n // ---- END suggest --------------------------------------------------------------------------\r\n //#region -- word ranges --\r\n computeWordRanges(modelUrl, range, wordDef, wordDefFlags) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let model = this._getModel(modelUrl);\r\n if (!model) {\r\n return Object.create(null);\r\n }\r\n const wordDefRegExp = new RegExp(wordDef, wordDefFlags);\r\n const result = Object.create(null);\r\n for (let line = range.startLineNumber; line < range.endLineNumber; line++) {\r\n let words = model.getLineWords(line, wordDefRegExp);\r\n for (const word of words) {\r\n if (!isNaN(Number(word.word))) {\r\n continue;\r\n }\r\n let array = result[word.word];\r\n if (!array) {\r\n array = [];\r\n result[word.word] = array;\r\n }\r\n array.push({\r\n startLineNumber: line,\r\n startColumn: word.startColumn,\r\n endLineNumber: line,\r\n endColumn: word.endColumn\r\n });\r\n }\r\n }\r\n return result;\r\n });\r\n }\r\n //#endregion\r\n navigateValueSet(modelUrl, range, up, wordDef, wordDefFlags) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let model = this._getModel(modelUrl);\r\n if (!model) {\r\n return null;\r\n }\r\n let wordDefRegExp = new RegExp(wordDef, wordDefFlags);\r\n if (range.startColumn === range.endColumn) {\r\n range = {\r\n startLineNumber: range.startLineNumber,\r\n startColumn: range.startColumn,\r\n endLineNumber: range.endLineNumber,\r\n endColumn: range.endColumn + 1\r\n };\r\n }\r\n let selectionText = model.getValueInRange(range);\r\n let wordRange = model.getWordAtPosition({ lineNumber: range.startLineNumber, column: range.startColumn }, wordDefRegExp);\r\n if (!wordRange) {\r\n return null;\r\n }\r\n let word = model.getValueInRange(wordRange);\r\n let result = BasicInplaceReplace.INSTANCE.navigateValueSet(range, selectionText, wordRange, word, up);\r\n return result;\r\n });\r\n }\r\n // ---- BEGIN foreign module support --------------------------------------------------------------------------\r\n loadForeignModule(moduleId, createData, foreignHostMethods) {\r\n const proxyMethodRequest = (method, args) => {\r\n return this._host.fhr(method, args);\r\n };\r\n const foreignHost = types.createProxyObject(foreignHostMethods, proxyMethodRequest);\r\n let ctx = {\r\n host: foreignHost,\r\n getMirrorModels: () => {\r\n return this._getModels();\r\n }\r\n };\r\n if (this._foreignModuleFactory) {\r\n this._foreignModule = this._foreignModuleFactory(ctx, createData);\r\n // static foreing module\r\n return Promise.resolve(types.getAllMethodNames(this._foreignModule));\r\n }\r\n // ESM-comment-begin\r\n // \t\treturn new Promise((resolve, reject) => {\r\n // \t\t\trequire([moduleId], (foreignModule: { create: IForeignModuleFactory }) => {\r\n // \t\t\t\tthis._foreignModule = foreignModule.create(ctx, createData);\r\n // \r\n // \t\t\t\tresolve(types.getAllMethodNames(this._foreignModule));\r\n // \r\n // \t\t\t}, reject);\r\n // \t\t});\r\n // ESM-comment-end\r\n // ESM-uncomment-begin\r\n return Promise.reject(new Error(`Unexpected usage`));\r\n // ESM-uncomment-end\r\n }\r\n // foreign method request\r\n fmr(method, args) {\r\n if (!this._foreignModule || typeof this._foreignModule[method] !== 'function') {\r\n return Promise.reject(new Error('Missing requestHandler or method: ' + method));\r\n }\r\n try {\r\n return Promise.resolve(this._foreignModule[method].apply(this._foreignModule, args));\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n}\r\n// ---- END diff --------------------------------------------------------------------------\r\n// ---- BEGIN minimal edits ---------------------------------------------------------------\r\nEditorSimpleWorker._diffLimit = 100000;\r\n// ---- BEGIN suggest --------------------------------------------------------------------------\r\nEditorSimpleWorker._suggestionsLimit = 10000;\r\n/**\r\n * Called on the worker side\r\n * @internal\r\n */\r\nexport function create(host) {\r\n return new EditorSimpleWorker(host, null);\r\n}\r\nif (typeof importScripts === 'function') {\r\n // Running in a web worker\r\n globals.monaco = createMonacoBaseAPI();\r\n}\r\n","import { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nexport const ITextResourceConfigurationService = createDecorator('textResourceConfigurationService');\r\nexport const ITextResourcePropertiesService = createDecorator('textResourcePropertiesService');\r\n","/**\r\n * Returns the last element of an array.\r\n * @param array The array.\r\n * @param n Which element from the end (default is zero).\r\n */\r\nexport function tail(array, n = 0) {\r\n return array[array.length - (1 + n)];\r\n}\r\nexport function tail2(arr) {\r\n if (arr.length === 0) {\r\n throw new Error('Invalid tail call');\r\n }\r\n return [arr.slice(0, arr.length - 1), arr[arr.length - 1]];\r\n}\r\nexport function equals(one, other, itemEquals = (a, b) => a === b) {\r\n if (one === other) {\r\n return true;\r\n }\r\n if (!one || !other) {\r\n return false;\r\n }\r\n if (one.length !== other.length) {\r\n return false;\r\n }\r\n for (let i = 0, len = one.length; i < len; i++) {\r\n if (!itemEquals(one[i], other[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nexport function binarySearch(array, key, comparator) {\r\n let low = 0, high = array.length - 1;\r\n while (low <= high) {\r\n const mid = ((low + high) / 2) | 0;\r\n const comp = comparator(array[mid], key);\r\n if (comp < 0) {\r\n low = mid + 1;\r\n }\r\n else if (comp > 0) {\r\n high = mid - 1;\r\n }\r\n else {\r\n return mid;\r\n }\r\n }\r\n return -(low + 1);\r\n}\r\n/**\r\n * Takes a sorted array and a function p. The array is sorted in such a way that all elements where p(x) is false\r\n * are located before all elements where p(x) is true.\r\n * @returns the least x for which p(x) is true or array.length if no element fullfills the given function.\r\n */\r\nexport function findFirstInSorted(array, p) {\r\n let low = 0, high = array.length;\r\n if (high === 0) {\r\n return 0; // no children\r\n }\r\n while (low < high) {\r\n const mid = Math.floor((low + high) / 2);\r\n if (p(array[mid])) {\r\n high = mid;\r\n }\r\n else {\r\n low = mid + 1;\r\n }\r\n }\r\n return low;\r\n}\r\nexport function quickSelect(nth, data, compare) {\r\n nth = nth | 0;\r\n if (nth >= data.length) {\r\n throw new TypeError('invalid index');\r\n }\r\n let pivotValue = data[Math.floor(data.length * Math.random())];\r\n let lower = [];\r\n let higher = [];\r\n let pivots = [];\r\n for (let value of data) {\r\n const val = compare(value, pivotValue);\r\n if (val < 0) {\r\n lower.push(value);\r\n }\r\n else if (val > 0) {\r\n higher.push(value);\r\n }\r\n else {\r\n pivots.push(value);\r\n }\r\n }\r\n if (nth < lower.length) {\r\n return quickSelect(nth, lower, compare);\r\n }\r\n else if (nth < lower.length + pivots.length) {\r\n return pivots[0];\r\n }\r\n else {\r\n return quickSelect(nth - (lower.length + pivots.length), higher, compare);\r\n }\r\n}\r\nexport function groupBy(data, compare) {\r\n const result = [];\r\n let currentGroup = undefined;\r\n for (const element of data.slice(0).sort(compare)) {\r\n if (!currentGroup || compare(currentGroup[0], element) !== 0) {\r\n currentGroup = [element];\r\n result.push(currentGroup);\r\n }\r\n else {\r\n currentGroup.push(element);\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * @returns New array with all falsy values removed. The original array IS NOT modified.\r\n */\r\nexport function coalesce(array) {\r\n return array.filter(e => !!e);\r\n}\r\n/**\r\n * @returns false if the provided object is an array and not empty.\r\n */\r\nexport function isFalsyOrEmpty(obj) {\r\n return !Array.isArray(obj) || obj.length === 0;\r\n}\r\nexport function isNonEmptyArray(obj) {\r\n return Array.isArray(obj) && obj.length > 0;\r\n}\r\n/**\r\n * Removes duplicates from the given array. The optional keyFn allows to specify\r\n * how elements are checked for equalness by returning a unique string for each.\r\n */\r\nexport function distinct(array, keyFn) {\r\n if (!keyFn) {\r\n return array.filter((element, position) => {\r\n return array.indexOf(element) === position;\r\n });\r\n }\r\n const seen = Object.create(null);\r\n return array.filter((elem) => {\r\n const key = keyFn(elem);\r\n if (seen[key]) {\r\n return false;\r\n }\r\n seen[key] = true;\r\n return true;\r\n });\r\n}\r\nexport function distinctES6(array) {\r\n const seen = new Set();\r\n return array.filter(element => {\r\n if (seen.has(element)) {\r\n return false;\r\n }\r\n seen.add(element);\r\n return true;\r\n });\r\n}\r\nexport function firstOrDefault(array, notFoundValue) {\r\n return array.length > 0 ? array[0] : notFoundValue;\r\n}\r\nexport function flatten(arr) {\r\n return [].concat(...arr);\r\n}\r\nexport function range(arg, to) {\r\n let from = typeof to === 'number' ? arg : 0;\r\n if (typeof to === 'number') {\r\n from = arg;\r\n }\r\n else {\r\n from = 0;\r\n to = arg;\r\n }\r\n const result = [];\r\n if (from <= to) {\r\n for (let i = from; i < to; i++) {\r\n result.push(i);\r\n }\r\n }\r\n else {\r\n for (let i = from; i > to; i--) {\r\n result.push(i);\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Insert `insertArr` inside `target` at `insertIndex`.\r\n * Please don't touch unless you understand https://jsperf.com/inserting-an-array-within-an-array\r\n */\r\nexport function arrayInsert(target, insertIndex, insertArr) {\r\n const before = target.slice(0, insertIndex);\r\n const after = target.slice(insertIndex);\r\n return before.concat(insertArr, after);\r\n}\r\n/**\r\n * Pushes an element to the start of the array, if found.\r\n */\r\nexport function pushToStart(arr, value) {\r\n const index = arr.indexOf(value);\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n arr.unshift(value);\r\n }\r\n}\r\n/**\r\n * Pushes an element to the end of the array, if found.\r\n */\r\nexport function pushToEnd(arr, value) {\r\n const index = arr.indexOf(value);\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n arr.push(value);\r\n }\r\n}\r\nexport function asArray(x) {\r\n return Array.isArray(x) ? x : [x];\r\n}\r\n/**\r\n * Insert the new items in the array.\r\n * @param array The original array.\r\n * @param start The zero-based location in the array from which to start inserting elements.\r\n * @param newItems The items to be inserted\r\n */\r\nexport function insertInto(array, start, newItems) {\r\n const startIdx = getActualStartIndex(array, start);\r\n const originalLength = array.length;\r\n const newItemsLength = newItems.length;\r\n array.length = originalLength + newItemsLength;\r\n // Move the items after the start index, start from the end so that we don't overwrite any value.\r\n for (let i = originalLength - 1; i >= startIdx; i--) {\r\n array[i + newItemsLength] = array[i];\r\n }\r\n for (let i = 0; i < newItemsLength; i++) {\r\n array[i + startIdx] = newItems[i];\r\n }\r\n}\r\n/**\r\n * Removes elements from an array and inserts new elements in their place, returning the deleted elements. Alternative to the native Array.splice method, it\r\n * can only support limited number of items due to the maximum call stack size limit.\r\n * @param array The original array.\r\n * @param start The zero-based location in the array from which to start removing elements.\r\n * @param deleteCount The number of elements to remove.\r\n * @returns An array containing the elements that were deleted.\r\n */\r\nexport function splice(array, start, deleteCount, newItems) {\r\n const index = getActualStartIndex(array, start);\r\n const result = array.splice(index, deleteCount);\r\n insertInto(array, index, newItems);\r\n return result;\r\n}\r\n/**\r\n * Determine the actual start index (same logic as the native splice() or slice())\r\n * If greater than the length of the array, start will be set to the length of the array. In this case, no element will be deleted but the method will behave as an adding function, adding as many element as item[n*] provided.\r\n * If negative, it will begin that many elements from the end of the array. (In this case, the origin -1, meaning -n is the index of the nth last element, and is therefore equivalent to the index of array.length - n.) If array.length + start is less than 0, it will begin from index 0.\r\n * @param array The target array.\r\n * @param start The operation index.\r\n */\r\nfunction getActualStartIndex(array, start) {\r\n return start < 0 ? Math.max(start + array.length, 0) : Math.min(start, array.length);\r\n}\r\nexport class ArrayQueue {\r\n /**\r\n * Constructs a queue that is backed by the given array. Runtime is O(1).\r\n */\r\n constructor(items) {\r\n this.items = items;\r\n this.firstIdx = 0;\r\n this.lastIdx = this.items.length - 1;\r\n }\r\n /**\r\n * Consumes elements from the beginning of the queue as long as the predicate returns true.\r\n * If no elements were consumed, `null` is returned. Has a runtime of O(result.length).\r\n */\r\n takeWhile(predicate) {\r\n // P(k) := k <= this.lastIdx && predicate(this.items[k])\r\n // Find s := min { k | k >= this.firstIdx && !P(k) } and return this.data[this.firstIdx...s)\r\n let startIdx = this.firstIdx;\r\n while (startIdx < this.items.length && predicate(this.items[startIdx])) {\r\n startIdx++;\r\n }\r\n const result = startIdx === this.firstIdx ? null : this.items.slice(this.firstIdx, startIdx);\r\n this.firstIdx = startIdx;\r\n return result;\r\n }\r\n /**\r\n * Consumes elements from the end of the queue as long as the predicate returns true.\r\n * If no elements were consumed, `null` is returned.\r\n * The result has the same order as the underlying array!\r\n */\r\n takeFromEndWhile(predicate) {\r\n // P(k) := this.firstIdx >= k && predicate(this.items[k])\r\n // Find s := max { k | k <= this.lastIdx && !P(k) } and return this.data(s...this.lastIdx]\r\n let endIdx = this.lastIdx;\r\n while (endIdx >= 0 && predicate(this.items[endIdx])) {\r\n endIdx--;\r\n }\r\n const result = endIdx === this.lastIdx ? null : this.items.slice(endIdx + 1, this.lastIdx + 1);\r\n this.lastIdx = endIdx;\r\n return result;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator as createServiceDecorator } from '../../instantiation/common/instantiation.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nexport const ILogService = createServiceDecorator('logService');\r\nexport var LogLevel;\r\n(function (LogLevel) {\r\n LogLevel[LogLevel[\"Trace\"] = 0] = \"Trace\";\r\n LogLevel[LogLevel[\"Debug\"] = 1] = \"Debug\";\r\n LogLevel[LogLevel[\"Info\"] = 2] = \"Info\";\r\n LogLevel[LogLevel[\"Warning\"] = 3] = \"Warning\";\r\n LogLevel[LogLevel[\"Error\"] = 4] = \"Error\";\r\n LogLevel[LogLevel[\"Critical\"] = 5] = \"Critical\";\r\n LogLevel[LogLevel[\"Off\"] = 6] = \"Off\";\r\n})(LogLevel || (LogLevel = {}));\r\nexport const DEFAULT_LOG_LEVEL = LogLevel.Info;\r\nexport class AbstractLogger extends Disposable {\r\n constructor() {\r\n super(...arguments);\r\n this.level = DEFAULT_LOG_LEVEL;\r\n this._onDidChangeLogLevel = this._register(new Emitter());\r\n }\r\n setLevel(level) {\r\n if (this.level !== level) {\r\n this.level = level;\r\n this._onDidChangeLogLevel.fire(this.level);\r\n }\r\n }\r\n getLevel() {\r\n return this.level;\r\n }\r\n}\r\nexport class ConsoleLogger extends AbstractLogger {\r\n constructor(logLevel = DEFAULT_LOG_LEVEL) {\r\n super();\r\n this.setLevel(logLevel);\r\n }\r\n trace(message, ...args) {\r\n if (this.getLevel() <= LogLevel.Trace) {\r\n console.log('%cTRACE', 'color: #888', message, ...args);\r\n }\r\n }\r\n debug(message, ...args) {\r\n if (this.getLevel() <= LogLevel.Debug) {\r\n console.log('%cDEBUG', 'background: #eee; color: #888', message, ...args);\r\n }\r\n }\r\n info(message, ...args) {\r\n if (this.getLevel() <= LogLevel.Info) {\r\n console.log('%c INFO', 'color: #33f', message, ...args);\r\n }\r\n }\r\n error(message, ...args) {\r\n if (this.getLevel() <= LogLevel.Error) {\r\n console.log('%c ERR', 'color: #f33', message, ...args);\r\n }\r\n }\r\n dispose() {\r\n // noop\r\n }\r\n}\r\nexport class LogService extends Disposable {\r\n constructor(logger) {\r\n super();\r\n this.logger = logger;\r\n this._register(logger);\r\n }\r\n getLevel() {\r\n return this.logger.getLevel();\r\n }\r\n trace(message, ...args) {\r\n this.logger.trace(message, ...args);\r\n }\r\n debug(message, ...args) {\r\n this.logger.debug(message, ...args);\r\n }\r\n info(message, ...args) {\r\n this.logger.info(message, ...args);\r\n }\r\n error(message, ...args) {\r\n this.logger.error(message, ...args);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { IntervalTimer, timeout } from '../../../base/common/async.js';\r\nimport { Disposable, dispose, toDisposable, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { SimpleWorkerClient, logOnceWebWorkerWarning } from '../../../base/common/worker/simpleWorker.js';\r\nimport { DefaultWorkerFactory } from '../../../base/worker/defaultWorkerFactory.js';\r\nimport { Range } from '../core/range.js';\r\nimport * as modes from '../modes.js';\r\nimport { LanguageConfigurationRegistry } from '../modes/languageConfigurationRegistry.js';\r\nimport { EditorSimpleWorker } from './editorSimpleWorker.js';\r\nimport { IModelService } from './modelService.js';\r\nimport { ITextResourceConfigurationService } from './textResourceConfigurationService.js';\r\nimport { regExpFlags } from '../../../base/common/strings.js';\r\nimport { isNonEmptyArray } from '../../../base/common/arrays.js';\r\nimport { ILogService } from '../../../platform/log/common/log.js';\r\nimport { StopWatch } from '../../../base/common/stopwatch.js';\r\nimport { canceled } from '../../../base/common/errors.js';\r\n/**\r\n * Stop syncing a model to the worker if it was not needed for 1 min.\r\n */\r\nconst STOP_SYNC_MODEL_DELTA_TIME_MS = 60 * 1000;\r\n/**\r\n * Stop the worker if it was not needed for 5 min.\r\n */\r\nconst STOP_WORKER_DELTA_TIME_MS = 5 * 60 * 1000;\r\nfunction canSyncModel(modelService, resource) {\r\n let model = modelService.getModel(resource);\r\n if (!model) {\r\n return false;\r\n }\r\n if (model.isTooLargeForSyncing()) {\r\n return false;\r\n }\r\n return true;\r\n}\r\nlet EditorWorkerServiceImpl = class EditorWorkerServiceImpl extends Disposable {\r\n constructor(modelService, configurationService, logService) {\r\n super();\r\n this._modelService = modelService;\r\n this._workerManager = this._register(new WorkerManager(this._modelService));\r\n this._logService = logService;\r\n // register default link-provider and default completions-provider\r\n this._register(modes.LinkProviderRegistry.register('*', {\r\n provideLinks: (model, token) => {\r\n if (!canSyncModel(this._modelService, model.uri)) {\r\n return Promise.resolve({ links: [] }); // File too large\r\n }\r\n return this._workerManager.withWorker().then(client => client.computeLinks(model.uri)).then(links => {\r\n return links && { links };\r\n });\r\n }\r\n }));\r\n this._register(modes.CompletionProviderRegistry.register('*', new WordBasedCompletionItemProvider(this._workerManager, configurationService, this._modelService)));\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n canComputeDiff(original, modified) {\r\n return (canSyncModel(this._modelService, original) && canSyncModel(this._modelService, modified));\r\n }\r\n computeDiff(original, modified, ignoreTrimWhitespace, maxComputationTime) {\r\n return this._workerManager.withWorker().then(client => client.computeDiff(original, modified, ignoreTrimWhitespace, maxComputationTime));\r\n }\r\n computeMoreMinimalEdits(resource, edits) {\r\n if (isNonEmptyArray(edits)) {\r\n if (!canSyncModel(this._modelService, resource)) {\r\n return Promise.resolve(edits); // File too large\r\n }\r\n const sw = StopWatch.create(true);\r\n const result = this._workerManager.withWorker().then(client => client.computeMoreMinimalEdits(resource, edits));\r\n result.finally(() => this._logService.trace('FORMAT#computeMoreMinimalEdits', resource.toString(true), sw.elapsed()));\r\n return Promise.race([result, timeout(1000).then(() => edits)]);\r\n }\r\n else {\r\n return Promise.resolve(undefined);\r\n }\r\n }\r\n canNavigateValueSet(resource) {\r\n return (canSyncModel(this._modelService, resource));\r\n }\r\n navigateValueSet(resource, range, up) {\r\n return this._workerManager.withWorker().then(client => client.navigateValueSet(resource, range, up));\r\n }\r\n canComputeWordRanges(resource) {\r\n return canSyncModel(this._modelService, resource);\r\n }\r\n computeWordRanges(resource, range) {\r\n return this._workerManager.withWorker().then(client => client.computeWordRanges(resource, range));\r\n }\r\n};\r\nEditorWorkerServiceImpl = __decorate([\r\n __param(0, IModelService),\r\n __param(1, ITextResourceConfigurationService),\r\n __param(2, ILogService)\r\n], EditorWorkerServiceImpl);\r\nexport { EditorWorkerServiceImpl };\r\nclass WordBasedCompletionItemProvider {\r\n constructor(workerManager, configurationService, modelService) {\r\n this._debugDisplayName = 'wordbasedCompletions';\r\n this._workerManager = workerManager;\r\n this._configurationService = configurationService;\r\n this._modelService = modelService;\r\n }\r\n provideCompletionItems(model, position) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const config = this._configurationService.getValue(model.uri, position, 'editor');\r\n if (!config.wordBasedSuggestions) {\r\n return undefined;\r\n }\r\n const models = [];\r\n if (config.wordBasedSuggestionsMode === 'currentDocument') {\r\n // only current file and only if not too large\r\n if (canSyncModel(this._modelService, model.uri)) {\r\n models.push(model.uri);\r\n }\r\n }\r\n else {\r\n // either all files or files of same language\r\n for (const candidate of this._modelService.getModels()) {\r\n if (!canSyncModel(this._modelService, candidate.uri)) {\r\n continue;\r\n }\r\n if (candidate === model) {\r\n models.unshift(candidate.uri);\r\n }\r\n else if (config.wordBasedSuggestionsMode === 'allDocuments' || candidate.getLanguageIdentifier().id === model.getLanguageIdentifier().id) {\r\n models.push(candidate.uri);\r\n }\r\n }\r\n }\r\n if (models.length === 0) {\r\n return undefined; // File too large, no other files\r\n }\r\n const wordDefRegExp = LanguageConfigurationRegistry.getWordDefinition(model.getLanguageIdentifier().id);\r\n const word = model.getWordAtPosition(position);\r\n const replace = !word ? Range.fromPositions(position) : new Range(position.lineNumber, word.startColumn, position.lineNumber, word.endColumn);\r\n const insert = replace.setEndPosition(position.lineNumber, position.column);\r\n const client = yield this._workerManager.withWorker();\r\n const data = yield client.textualSuggest(models, word === null || word === void 0 ? void 0 : word.word, wordDefRegExp);\r\n if (!data) {\r\n return undefined;\r\n }\r\n return {\r\n duration: data.duration,\r\n suggestions: data.words.map((word) => {\r\n return {\r\n kind: 18 /* Text */,\r\n label: word,\r\n insertText: word,\r\n range: { insert, replace }\r\n };\r\n }),\r\n };\r\n });\r\n }\r\n}\r\nclass WorkerManager extends Disposable {\r\n constructor(modelService) {\r\n super();\r\n this._modelService = modelService;\r\n this._editorWorkerClient = null;\r\n this._lastWorkerUsedTime = (new Date()).getTime();\r\n let stopWorkerInterval = this._register(new IntervalTimer());\r\n stopWorkerInterval.cancelAndSet(() => this._checkStopIdleWorker(), Math.round(STOP_WORKER_DELTA_TIME_MS / 2));\r\n this._register(this._modelService.onModelRemoved(_ => this._checkStopEmptyWorker()));\r\n }\r\n dispose() {\r\n if (this._editorWorkerClient) {\r\n this._editorWorkerClient.dispose();\r\n this._editorWorkerClient = null;\r\n }\r\n super.dispose();\r\n }\r\n /**\r\n * Check if the model service has no more models and stop the worker if that is the case.\r\n */\r\n _checkStopEmptyWorker() {\r\n if (!this._editorWorkerClient) {\r\n return;\r\n }\r\n let models = this._modelService.getModels();\r\n if (models.length === 0) {\r\n // There are no more models => nothing possible for me to do\r\n this._editorWorkerClient.dispose();\r\n this._editorWorkerClient = null;\r\n }\r\n }\r\n /**\r\n * Check if the worker has been idle for a while and then stop it.\r\n */\r\n _checkStopIdleWorker() {\r\n if (!this._editorWorkerClient) {\r\n return;\r\n }\r\n let timeSinceLastWorkerUsedTime = (new Date()).getTime() - this._lastWorkerUsedTime;\r\n if (timeSinceLastWorkerUsedTime > STOP_WORKER_DELTA_TIME_MS) {\r\n this._editorWorkerClient.dispose();\r\n this._editorWorkerClient = null;\r\n }\r\n }\r\n withWorker() {\r\n this._lastWorkerUsedTime = (new Date()).getTime();\r\n if (!this._editorWorkerClient) {\r\n this._editorWorkerClient = new EditorWorkerClient(this._modelService, false, 'editorWorkerService');\r\n }\r\n return Promise.resolve(this._editorWorkerClient);\r\n }\r\n}\r\nclass EditorModelManager extends Disposable {\r\n constructor(proxy, modelService, keepIdleModels) {\r\n super();\r\n this._syncedModels = Object.create(null);\r\n this._syncedModelsLastUsedTime = Object.create(null);\r\n this._proxy = proxy;\r\n this._modelService = modelService;\r\n if (!keepIdleModels) {\r\n let timer = new IntervalTimer();\r\n timer.cancelAndSet(() => this._checkStopModelSync(), Math.round(STOP_SYNC_MODEL_DELTA_TIME_MS / 2));\r\n this._register(timer);\r\n }\r\n }\r\n dispose() {\r\n for (let modelUrl in this._syncedModels) {\r\n dispose(this._syncedModels[modelUrl]);\r\n }\r\n this._syncedModels = Object.create(null);\r\n this._syncedModelsLastUsedTime = Object.create(null);\r\n super.dispose();\r\n }\r\n ensureSyncedResources(resources) {\r\n for (const resource of resources) {\r\n let resourceStr = resource.toString();\r\n if (!this._syncedModels[resourceStr]) {\r\n this._beginModelSync(resource);\r\n }\r\n if (this._syncedModels[resourceStr]) {\r\n this._syncedModelsLastUsedTime[resourceStr] = (new Date()).getTime();\r\n }\r\n }\r\n }\r\n _checkStopModelSync() {\r\n let currentTime = (new Date()).getTime();\r\n let toRemove = [];\r\n for (let modelUrl in this._syncedModelsLastUsedTime) {\r\n let elapsedTime = currentTime - this._syncedModelsLastUsedTime[modelUrl];\r\n if (elapsedTime > STOP_SYNC_MODEL_DELTA_TIME_MS) {\r\n toRemove.push(modelUrl);\r\n }\r\n }\r\n for (const e of toRemove) {\r\n this._stopModelSync(e);\r\n }\r\n }\r\n _beginModelSync(resource) {\r\n let model = this._modelService.getModel(resource);\r\n if (!model) {\r\n return;\r\n }\r\n if (model.isTooLargeForSyncing()) {\r\n return;\r\n }\r\n let modelUrl = resource.toString();\r\n this._proxy.acceptNewModel({\r\n url: model.uri.toString(),\r\n lines: model.getLinesContent(),\r\n EOL: model.getEOL(),\r\n versionId: model.getVersionId()\r\n });\r\n const toDispose = new DisposableStore();\r\n toDispose.add(model.onDidChangeContent((e) => {\r\n this._proxy.acceptModelChanged(modelUrl.toString(), e);\r\n }));\r\n toDispose.add(model.onWillDispose(() => {\r\n this._stopModelSync(modelUrl);\r\n }));\r\n toDispose.add(toDisposable(() => {\r\n this._proxy.acceptRemovedModel(modelUrl);\r\n }));\r\n this._syncedModels[modelUrl] = toDispose;\r\n }\r\n _stopModelSync(modelUrl) {\r\n let toDispose = this._syncedModels[modelUrl];\r\n delete this._syncedModels[modelUrl];\r\n delete this._syncedModelsLastUsedTime[modelUrl];\r\n dispose(toDispose);\r\n }\r\n}\r\nclass SynchronousWorkerClient {\r\n constructor(instance) {\r\n this._instance = instance;\r\n this._proxyObj = Promise.resolve(this._instance);\r\n }\r\n dispose() {\r\n this._instance.dispose();\r\n }\r\n getProxyObject() {\r\n return this._proxyObj;\r\n }\r\n}\r\nexport class EditorWorkerHost {\r\n constructor(workerClient) {\r\n this._workerClient = workerClient;\r\n }\r\n // foreign host request\r\n fhr(method, args) {\r\n return this._workerClient.fhr(method, args);\r\n }\r\n}\r\nexport class EditorWorkerClient extends Disposable {\r\n constructor(modelService, keepIdleModels, label) {\r\n super();\r\n this._disposed = false;\r\n this._modelService = modelService;\r\n this._keepIdleModels = keepIdleModels;\r\n this._workerFactory = new DefaultWorkerFactory(label);\r\n this._worker = null;\r\n this._modelManager = null;\r\n }\r\n // foreign host request\r\n fhr(method, args) {\r\n throw new Error(`Not implemented!`);\r\n }\r\n _getOrCreateWorker() {\r\n if (!this._worker) {\r\n try {\r\n this._worker = this._register(new SimpleWorkerClient(this._workerFactory, 'vs/editor/common/services/editorSimpleWorker', new EditorWorkerHost(this)));\r\n }\r\n catch (err) {\r\n logOnceWebWorkerWarning(err);\r\n this._worker = new SynchronousWorkerClient(new EditorSimpleWorker(new EditorWorkerHost(this), null));\r\n }\r\n }\r\n return this._worker;\r\n }\r\n _getProxy() {\r\n return this._getOrCreateWorker().getProxyObject().then(undefined, (err) => {\r\n logOnceWebWorkerWarning(err);\r\n this._worker = new SynchronousWorkerClient(new EditorSimpleWorker(new EditorWorkerHost(this), null));\r\n return this._getOrCreateWorker().getProxyObject();\r\n });\r\n }\r\n _getOrCreateModelManager(proxy) {\r\n if (!this._modelManager) {\r\n this._modelManager = this._register(new EditorModelManager(proxy, this._modelService, this._keepIdleModels));\r\n }\r\n return this._modelManager;\r\n }\r\n _withSyncedResources(resources) {\r\n if (this._disposed) {\r\n return Promise.reject(canceled());\r\n }\r\n return this._getProxy().then((proxy) => {\r\n this._getOrCreateModelManager(proxy).ensureSyncedResources(resources);\r\n return proxy;\r\n });\r\n }\r\n computeDiff(original, modified, ignoreTrimWhitespace, maxComputationTime) {\r\n return this._withSyncedResources([original, modified]).then(proxy => {\r\n return proxy.computeDiff(original.toString(), modified.toString(), ignoreTrimWhitespace, maxComputationTime);\r\n });\r\n }\r\n computeMoreMinimalEdits(resource, edits) {\r\n return this._withSyncedResources([resource]).then(proxy => {\r\n return proxy.computeMoreMinimalEdits(resource.toString(), edits);\r\n });\r\n }\r\n computeLinks(resource) {\r\n return this._withSyncedResources([resource]).then(proxy => {\r\n return proxy.computeLinks(resource.toString());\r\n });\r\n }\r\n textualSuggest(resources, leadingWord, wordDefRegExp) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const proxy = yield this._withSyncedResources(resources);\r\n const wordDef = wordDefRegExp.source;\r\n const wordDefFlags = regExpFlags(wordDefRegExp);\r\n return proxy.textualSuggest(resources.map(r => r.toString()), leadingWord, wordDef, wordDefFlags);\r\n });\r\n }\r\n computeWordRanges(resource, range) {\r\n return this._withSyncedResources([resource]).then(proxy => {\r\n let model = this._modelService.getModel(resource);\r\n if (!model) {\r\n return Promise.resolve(null);\r\n }\r\n let wordDefRegExp = LanguageConfigurationRegistry.getWordDefinition(model.getLanguageIdentifier().id);\r\n let wordDef = wordDefRegExp.source;\r\n let wordDefFlags = regExpFlags(wordDefRegExp);\r\n return proxy.computeWordRanges(resource.toString(), range, wordDef, wordDefFlags);\r\n });\r\n }\r\n navigateValueSet(resource, range, up) {\r\n return this._withSyncedResources([resource]).then(proxy => {\r\n let model = this._modelService.getModel(resource);\r\n if (!model) {\r\n return null;\r\n }\r\n let wordDefRegExp = LanguageConfigurationRegistry.getWordDefinition(model.getLanguageIdentifier().id);\r\n let wordDef = wordDefRegExp.source;\r\n let wordDefFlags = regExpFlags(wordDefRegExp);\r\n return proxy.navigateValueSet(resource.toString(), range, up, wordDef, wordDefFlags);\r\n });\r\n }\r\n dispose() {\r\n super.dispose();\r\n this._disposed = true;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { EditorWorkerClient } from './editorWorkerServiceImpl.js';\r\nimport * as types from '../../../base/common/types.js';\r\n/**\r\n * Create a new web worker that has model syncing capabilities built in.\r\n * Specify an AMD module to load that will `create` an object that will be proxied.\r\n */\r\nexport function createWebWorker(modelService, opts) {\r\n return new MonacoWebWorkerImpl(modelService, opts);\r\n}\r\nclass MonacoWebWorkerImpl extends EditorWorkerClient {\r\n constructor(modelService, opts) {\r\n super(modelService, opts.keepIdleModels || false, opts.label);\r\n this._foreignModuleId = opts.moduleId;\r\n this._foreignModuleCreateData = opts.createData || null;\r\n this._foreignModuleHost = opts.host || null;\r\n this._foreignProxy = null;\r\n }\r\n // foreign host request\r\n fhr(method, args) {\r\n if (!this._foreignModuleHost || typeof this._foreignModuleHost[method] !== 'function') {\r\n return Promise.reject(new Error('Missing method ' + method + ' or missing main thread foreign host.'));\r\n }\r\n try {\r\n return Promise.resolve(this._foreignModuleHost[method].apply(this._foreignModuleHost, args));\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n _getForeignProxy() {\r\n if (!this._foreignProxy) {\r\n this._foreignProxy = this._getProxy().then((proxy) => {\r\n const foreignHostMethods = this._foreignModuleHost ? types.getAllMethodNames(this._foreignModuleHost) : [];\r\n return proxy.loadForeignModule(this._foreignModuleId, this._foreignModuleCreateData, foreignHostMethods).then((foreignMethods) => {\r\n this._foreignModuleCreateData = null;\r\n const proxyMethodRequest = (method, args) => {\r\n return proxy.fmr(method, args);\r\n };\r\n const createProxyMethod = (method, proxyMethodRequest) => {\r\n return function () {\r\n const args = Array.prototype.slice.call(arguments, 0);\r\n return proxyMethodRequest(method, args);\r\n };\r\n };\r\n let foreignProxy = {};\r\n for (const foreignMethod of foreignMethods) {\r\n foreignProxy[foreignMethod] = createProxyMethod(foreignMethod, proxyMethodRequest);\r\n }\r\n return foreignProxy;\r\n });\r\n });\r\n }\r\n return this._foreignProxy;\r\n }\r\n getProxy() {\r\n return this._getForeignProxy();\r\n }\r\n withSyncedResources(resources) {\r\n return this._withSyncedResources(resources).then(_ => this.getProxy());\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { TokenMetadata } from '../modes.js';\r\nexport class LineTokens {\r\n constructor(tokens, text) {\r\n this._lineTokensBrand = undefined;\r\n this._tokens = tokens;\r\n this._tokensCount = (this._tokens.length >>> 1);\r\n this._text = text;\r\n }\r\n static createEmpty(lineContent) {\r\n const defaultMetadata = LineTokens.defaultTokenMetadata;\r\n const tokens = new Uint32Array(2);\r\n tokens[0] = lineContent.length;\r\n tokens[1] = defaultMetadata;\r\n return new LineTokens(tokens, lineContent);\r\n }\r\n equals(other) {\r\n if (other instanceof LineTokens) {\r\n return this.slicedEquals(other, 0, this._tokensCount);\r\n }\r\n return false;\r\n }\r\n slicedEquals(other, sliceFromTokenIndex, sliceTokenCount) {\r\n if (this._text !== other._text) {\r\n return false;\r\n }\r\n if (this._tokensCount !== other._tokensCount) {\r\n return false;\r\n }\r\n const from = (sliceFromTokenIndex << 1);\r\n const to = from + (sliceTokenCount << 1);\r\n for (let i = from; i < to; i++) {\r\n if (this._tokens[i] !== other._tokens[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n getLineContent() {\r\n return this._text;\r\n }\r\n getCount() {\r\n return this._tokensCount;\r\n }\r\n getStartOffset(tokenIndex) {\r\n if (tokenIndex > 0) {\r\n return this._tokens[(tokenIndex - 1) << 1];\r\n }\r\n return 0;\r\n }\r\n getMetadata(tokenIndex) {\r\n const metadata = this._tokens[(tokenIndex << 1) + 1];\r\n return metadata;\r\n }\r\n getLanguageId(tokenIndex) {\r\n const metadata = this._tokens[(tokenIndex << 1) + 1];\r\n return TokenMetadata.getLanguageId(metadata);\r\n }\r\n getStandardTokenType(tokenIndex) {\r\n const metadata = this._tokens[(tokenIndex << 1) + 1];\r\n return TokenMetadata.getTokenType(metadata);\r\n }\r\n getForeground(tokenIndex) {\r\n const metadata = this._tokens[(tokenIndex << 1) + 1];\r\n return TokenMetadata.getForeground(metadata);\r\n }\r\n getClassName(tokenIndex) {\r\n const metadata = this._tokens[(tokenIndex << 1) + 1];\r\n return TokenMetadata.getClassNameFromMetadata(metadata);\r\n }\r\n getInlineStyle(tokenIndex, colorMap) {\r\n const metadata = this._tokens[(tokenIndex << 1) + 1];\r\n return TokenMetadata.getInlineStyleFromMetadata(metadata, colorMap);\r\n }\r\n getEndOffset(tokenIndex) {\r\n return this._tokens[tokenIndex << 1];\r\n }\r\n /**\r\n * Find the token containing offset `offset`.\r\n * @param offset The search offset\r\n * @return The index of the token containing the offset.\r\n */\r\n findTokenIndexAtOffset(offset) {\r\n return LineTokens.findIndexInTokensArray(this._tokens, offset);\r\n }\r\n inflate() {\r\n return this;\r\n }\r\n sliceAndInflate(startOffset, endOffset, deltaOffset) {\r\n return new SlicedLineTokens(this, startOffset, endOffset, deltaOffset);\r\n }\r\n static convertToEndOffset(tokens, lineTextLength) {\r\n const tokenCount = (tokens.length >>> 1);\r\n const lastTokenIndex = tokenCount - 1;\r\n for (let tokenIndex = 0; tokenIndex < lastTokenIndex; tokenIndex++) {\r\n tokens[tokenIndex << 1] = tokens[(tokenIndex + 1) << 1];\r\n }\r\n tokens[lastTokenIndex << 1] = lineTextLength;\r\n }\r\n static findIndexInTokensArray(tokens, desiredIndex) {\r\n if (tokens.length <= 2) {\r\n return 0;\r\n }\r\n let low = 0;\r\n let high = (tokens.length >>> 1) - 1;\r\n while (low < high) {\r\n const mid = low + Math.floor((high - low) / 2);\r\n const endOffset = tokens[(mid << 1)];\r\n if (endOffset === desiredIndex) {\r\n return mid + 1;\r\n }\r\n else if (endOffset < desiredIndex) {\r\n low = mid + 1;\r\n }\r\n else if (endOffset > desiredIndex) {\r\n high = mid;\r\n }\r\n }\r\n return low;\r\n }\r\n /**\r\n * @pure\r\n * @param insertTokens Must be sorted by offset.\r\n */\r\n withInserted(insertTokens) {\r\n if (insertTokens.length === 0) {\r\n return this;\r\n }\r\n let nextOriginalTokenIdx = 0;\r\n let nextInsertTokenIdx = 0;\r\n let text = '';\r\n const newTokens = new Array();\r\n let originalEndOffset = 0;\r\n while (true) {\r\n let nextOriginalTokenEndOffset = nextOriginalTokenIdx < this._tokensCount ? this._tokens[nextOriginalTokenIdx << 1] : -1;\r\n let nextInsertToken = nextInsertTokenIdx < insertTokens.length ? insertTokens[nextInsertTokenIdx] : null;\r\n if (nextOriginalTokenEndOffset !== -1 && (nextInsertToken === null || nextOriginalTokenEndOffset <= nextInsertToken.offset)) {\r\n // original token ends before next insert token\r\n text += this._text.substring(originalEndOffset, nextOriginalTokenEndOffset);\r\n const metadata = this._tokens[(nextOriginalTokenIdx << 1) + 1];\r\n newTokens.push(text.length, metadata);\r\n nextOriginalTokenIdx++;\r\n originalEndOffset = nextOriginalTokenEndOffset;\r\n }\r\n else if (nextInsertToken) {\r\n if (nextInsertToken.offset > originalEndOffset) {\r\n // insert token is in the middle of the next token.\r\n text += this._text.substring(originalEndOffset, nextInsertToken.offset);\r\n const metadata = this._tokens[(nextOriginalTokenIdx << 1) + 1];\r\n newTokens.push(text.length, metadata);\r\n originalEndOffset = nextInsertToken.offset;\r\n }\r\n text += nextInsertToken.text;\r\n newTokens.push(text.length, nextInsertToken.tokenMetadata);\r\n nextInsertTokenIdx++;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return new LineTokens(new Uint32Array(newTokens), text);\r\n }\r\n}\r\nLineTokens.defaultTokenMetadata = ((0 /* None */ << 11 /* FONT_STYLE_OFFSET */)\r\n | (1 /* DefaultForeground */ << 14 /* FOREGROUND_OFFSET */)\r\n | (2 /* DefaultBackground */ << 23 /* BACKGROUND_OFFSET */)) >>> 0;\r\nexport class SlicedLineTokens {\r\n constructor(source, startOffset, endOffset, deltaOffset) {\r\n this._source = source;\r\n this._startOffset = startOffset;\r\n this._endOffset = endOffset;\r\n this._deltaOffset = deltaOffset;\r\n this._firstTokenIndex = source.findTokenIndexAtOffset(startOffset);\r\n this._tokensCount = 0;\r\n for (let i = this._firstTokenIndex, len = source.getCount(); i < len; i++) {\r\n const tokenStartOffset = source.getStartOffset(i);\r\n if (tokenStartOffset >= endOffset) {\r\n break;\r\n }\r\n this._tokensCount++;\r\n }\r\n }\r\n equals(other) {\r\n if (other instanceof SlicedLineTokens) {\r\n return (this._startOffset === other._startOffset\r\n && this._endOffset === other._endOffset\r\n && this._deltaOffset === other._deltaOffset\r\n && this._source.slicedEquals(other._source, this._firstTokenIndex, this._tokensCount));\r\n }\r\n return false;\r\n }\r\n getCount() {\r\n return this._tokensCount;\r\n }\r\n getForeground(tokenIndex) {\r\n return this._source.getForeground(this._firstTokenIndex + tokenIndex);\r\n }\r\n getEndOffset(tokenIndex) {\r\n const tokenEndOffset = this._source.getEndOffset(this._firstTokenIndex + tokenIndex);\r\n return Math.min(this._endOffset, tokenEndOffset) - this._startOffset + this._deltaOffset;\r\n }\r\n getClassName(tokenIndex) {\r\n return this._source.getClassName(this._firstTokenIndex + tokenIndex);\r\n }\r\n getInlineStyle(tokenIndex, colorMap) {\r\n return this._source.getInlineStyle(this._firstTokenIndex + tokenIndex, colorMap);\r\n }\r\n findTokenIndexAtOffset(offset) {\r\n return this._source.findTokenIndexAtOffset(offset + this._startOffset - this._deltaOffset) - this._firstTokenIndex;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../base/common/strings.js';\r\nexport class LineDecoration {\r\n constructor(startColumn, endColumn, className, type) {\r\n this.startColumn = startColumn;\r\n this.endColumn = endColumn;\r\n this.className = className;\r\n this.type = type;\r\n this._lineDecorationBrand = undefined;\r\n }\r\n static _equals(a, b) {\r\n return (a.startColumn === b.startColumn\r\n && a.endColumn === b.endColumn\r\n && a.className === b.className\r\n && a.type === b.type);\r\n }\r\n static equalsArr(a, b) {\r\n const aLen = a.length;\r\n const bLen = b.length;\r\n if (aLen !== bLen) {\r\n return false;\r\n }\r\n for (let i = 0; i < aLen; i++) {\r\n if (!LineDecoration._equals(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n static extractWrapped(arr, startOffset, endOffset) {\r\n if (arr.length === 0) {\r\n return arr;\r\n }\r\n const startColumn = startOffset + 1;\r\n const endColumn = endOffset + 1;\r\n const lineLength = endOffset - startOffset;\r\n const r = [];\r\n let rLength = 0;\r\n for (const dec of arr) {\r\n if (dec.endColumn <= startColumn || dec.startColumn >= endColumn) {\r\n continue;\r\n }\r\n r[rLength++] = new LineDecoration(Math.max(1, dec.startColumn - startColumn + 1), Math.min(lineLength + 1, dec.endColumn - startColumn + 1), dec.className, dec.type);\r\n }\r\n return r;\r\n }\r\n static filter(lineDecorations, lineNumber, minLineColumn, maxLineColumn) {\r\n if (lineDecorations.length === 0) {\r\n return [];\r\n }\r\n let result = [], resultLen = 0;\r\n for (let i = 0, len = lineDecorations.length; i < len; i++) {\r\n const d = lineDecorations[i];\r\n const range = d.range;\r\n if (range.endLineNumber < lineNumber || range.startLineNumber > lineNumber) {\r\n // Ignore decorations that sit outside this line\r\n continue;\r\n }\r\n if (range.isEmpty() && (d.type === 0 /* Regular */ || d.type === 3 /* RegularAffectingLetterSpacing */)) {\r\n // Ignore empty range decorations\r\n continue;\r\n }\r\n const startColumn = (range.startLineNumber === lineNumber ? range.startColumn : minLineColumn);\r\n const endColumn = (range.endLineNumber === lineNumber ? range.endColumn : maxLineColumn);\r\n result[resultLen++] = new LineDecoration(startColumn, endColumn, d.inlineClassName, d.type);\r\n }\r\n return result;\r\n }\r\n static _typeCompare(a, b) {\r\n const ORDER = [2, 0, 1, 3];\r\n return ORDER[a] - ORDER[b];\r\n }\r\n static compare(a, b) {\r\n if (a.startColumn !== b.startColumn) {\r\n return a.startColumn - b.startColumn;\r\n }\r\n if (a.endColumn !== b.endColumn) {\r\n return a.endColumn - b.endColumn;\r\n }\r\n const typeCmp = LineDecoration._typeCompare(a.type, b.type);\r\n if (typeCmp !== 0) {\r\n return typeCmp;\r\n }\r\n if (a.className !== b.className) {\r\n return a.className < b.className ? -1 : 1;\r\n }\r\n return 0;\r\n }\r\n}\r\nexport class DecorationSegment {\r\n constructor(startOffset, endOffset, className, metadata) {\r\n this.startOffset = startOffset;\r\n this.endOffset = endOffset;\r\n this.className = className;\r\n this.metadata = metadata;\r\n }\r\n}\r\nclass Stack {\r\n constructor() {\r\n this.stopOffsets = [];\r\n this.classNames = [];\r\n this.metadata = [];\r\n this.count = 0;\r\n }\r\n static _metadata(metadata) {\r\n let result = 0;\r\n for (let i = 0, len = metadata.length; i < len; i++) {\r\n result |= metadata[i];\r\n }\r\n return result;\r\n }\r\n consumeLowerThan(maxStopOffset, nextStartOffset, result) {\r\n while (this.count > 0 && this.stopOffsets[0] < maxStopOffset) {\r\n let i = 0;\r\n // Take all equal stopping offsets\r\n while (i + 1 < this.count && this.stopOffsets[i] === this.stopOffsets[i + 1]) {\r\n i++;\r\n }\r\n // Basically we are consuming the first i + 1 elements of the stack\r\n result.push(new DecorationSegment(nextStartOffset, this.stopOffsets[i], this.classNames.join(' '), Stack._metadata(this.metadata)));\r\n nextStartOffset = this.stopOffsets[i] + 1;\r\n // Consume them\r\n this.stopOffsets.splice(0, i + 1);\r\n this.classNames.splice(0, i + 1);\r\n this.metadata.splice(0, i + 1);\r\n this.count -= (i + 1);\r\n }\r\n if (this.count > 0 && nextStartOffset < maxStopOffset) {\r\n result.push(new DecorationSegment(nextStartOffset, maxStopOffset - 1, this.classNames.join(' '), Stack._metadata(this.metadata)));\r\n nextStartOffset = maxStopOffset;\r\n }\r\n return nextStartOffset;\r\n }\r\n insert(stopOffset, className, metadata) {\r\n if (this.count === 0 || this.stopOffsets[this.count - 1] <= stopOffset) {\r\n // Insert at the end\r\n this.stopOffsets.push(stopOffset);\r\n this.classNames.push(className);\r\n this.metadata.push(metadata);\r\n }\r\n else {\r\n // Find the insertion position for `stopOffset`\r\n for (let i = 0; i < this.count; i++) {\r\n if (this.stopOffsets[i] >= stopOffset) {\r\n this.stopOffsets.splice(i, 0, stopOffset);\r\n this.classNames.splice(i, 0, className);\r\n this.metadata.splice(i, 0, metadata);\r\n break;\r\n }\r\n }\r\n }\r\n this.count++;\r\n return;\r\n }\r\n}\r\nexport class LineDecorationsNormalizer {\r\n /**\r\n * Normalize line decorations. Overlapping decorations will generate multiple segments\r\n */\r\n static normalize(lineContent, lineDecorations) {\r\n if (lineDecorations.length === 0) {\r\n return [];\r\n }\r\n let result = [];\r\n const stack = new Stack();\r\n let nextStartOffset = 0;\r\n for (let i = 0, len = lineDecorations.length; i < len; i++) {\r\n const d = lineDecorations[i];\r\n let startColumn = d.startColumn;\r\n let endColumn = d.endColumn;\r\n const className = d.className;\r\n const metadata = (d.type === 1 /* Before */\r\n ? 2 /* PSEUDO_BEFORE */\r\n : d.type === 2 /* After */\r\n ? 4 /* PSEUDO_AFTER */\r\n : 0);\r\n // If the position would end up in the middle of a high-low surrogate pair, we move it to before the pair\r\n if (startColumn > 1) {\r\n const charCodeBefore = lineContent.charCodeAt(startColumn - 2);\r\n if (strings.isHighSurrogate(charCodeBefore)) {\r\n startColumn--;\r\n }\r\n }\r\n if (endColumn > 1) {\r\n const charCodeBefore = lineContent.charCodeAt(endColumn - 2);\r\n if (strings.isHighSurrogate(charCodeBefore)) {\r\n endColumn--;\r\n }\r\n }\r\n const currentStartOffset = startColumn - 1;\r\n const currentEndOffset = endColumn - 2;\r\n nextStartOffset = stack.consumeLowerThan(currentStartOffset, nextStartOffset, result);\r\n if (stack.count === 0) {\r\n nextStartOffset = currentStartOffset;\r\n }\r\n stack.insert(currentEndOffset, className, metadata);\r\n }\r\n stack.consumeLowerThan(1073741824 /* MAX_SAFE_SMALL_INTEGER */, nextStartOffset, result);\r\n return result;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { createStringBuilder } from '../core/stringBuilder.js';\r\nimport { LineDecoration, LineDecorationsNormalizer } from './lineDecorations.js';\r\nclass LinePart {\r\n constructor(endIndex, type, metadata) {\r\n this._linePartBrand = undefined;\r\n this.endIndex = endIndex;\r\n this.type = type;\r\n this.metadata = metadata;\r\n }\r\n isWhitespace() {\r\n return (this.metadata & 1 /* IS_WHITESPACE_MASK */ ? true : false);\r\n }\r\n isPseudoAfter() {\r\n return (this.metadata & 4 /* PSEUDO_AFTER_MASK */ ? true : false);\r\n }\r\n}\r\nexport class LineRange {\r\n constructor(startIndex, endIndex) {\r\n this.startOffset = startIndex;\r\n this.endOffset = endIndex;\r\n }\r\n equals(otherLineRange) {\r\n return this.startOffset === otherLineRange.startOffset\r\n && this.endOffset === otherLineRange.endOffset;\r\n }\r\n}\r\nexport class RenderLineInput {\r\n constructor(useMonospaceOptimizations, canUseHalfwidthRightwardsArrow, lineContent, continuesWithWrappedLine, isBasicASCII, containsRTL, fauxIndentLength, lineTokens, lineDecorations, tabSize, startVisibleColumn, spaceWidth, middotWidth, wsmiddotWidth, stopRenderingLineAfter, renderWhitespace, renderControlCharacters, fontLigatures, selectionsOnLine) {\r\n this.useMonospaceOptimizations = useMonospaceOptimizations;\r\n this.canUseHalfwidthRightwardsArrow = canUseHalfwidthRightwardsArrow;\r\n this.lineContent = lineContent;\r\n this.continuesWithWrappedLine = continuesWithWrappedLine;\r\n this.isBasicASCII = isBasicASCII;\r\n this.containsRTL = containsRTL;\r\n this.fauxIndentLength = fauxIndentLength;\r\n this.lineTokens = lineTokens;\r\n this.lineDecorations = lineDecorations.sort(LineDecoration.compare);\r\n this.tabSize = tabSize;\r\n this.startVisibleColumn = startVisibleColumn;\r\n this.spaceWidth = spaceWidth;\r\n this.stopRenderingLineAfter = stopRenderingLineAfter;\r\n this.renderWhitespace = (renderWhitespace === 'all'\r\n ? 4 /* All */\r\n : renderWhitespace === 'boundary'\r\n ? 1 /* Boundary */\r\n : renderWhitespace === 'selection'\r\n ? 2 /* Selection */\r\n : renderWhitespace === 'trailing'\r\n ? 3 /* Trailing */\r\n : 0 /* None */);\r\n this.renderControlCharacters = renderControlCharacters;\r\n this.fontLigatures = fontLigatures;\r\n this.selectionsOnLine = selectionsOnLine && selectionsOnLine.sort((a, b) => a.startOffset < b.startOffset ? -1 : 1);\r\n const wsmiddotDiff = Math.abs(wsmiddotWidth - spaceWidth);\r\n const middotDiff = Math.abs(middotWidth - spaceWidth);\r\n if (wsmiddotDiff < middotDiff) {\r\n this.renderSpaceWidth = wsmiddotWidth;\r\n this.renderSpaceCharCode = 0x2E31; // U+2E31 - WORD SEPARATOR MIDDLE DOT\r\n }\r\n else {\r\n this.renderSpaceWidth = middotWidth;\r\n this.renderSpaceCharCode = 0xB7; // U+00B7 - MIDDLE DOT\r\n }\r\n }\r\n sameSelection(otherSelections) {\r\n if (this.selectionsOnLine === null) {\r\n return otherSelections === null;\r\n }\r\n if (otherSelections === null) {\r\n return false;\r\n }\r\n if (otherSelections.length !== this.selectionsOnLine.length) {\r\n return false;\r\n }\r\n for (let i = 0; i < this.selectionsOnLine.length; i++) {\r\n if (!this.selectionsOnLine[i].equals(otherSelections[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n equals(other) {\r\n return (this.useMonospaceOptimizations === other.useMonospaceOptimizations\r\n && this.canUseHalfwidthRightwardsArrow === other.canUseHalfwidthRightwardsArrow\r\n && this.lineContent === other.lineContent\r\n && this.continuesWithWrappedLine === other.continuesWithWrappedLine\r\n && this.isBasicASCII === other.isBasicASCII\r\n && this.containsRTL === other.containsRTL\r\n && this.fauxIndentLength === other.fauxIndentLength\r\n && this.tabSize === other.tabSize\r\n && this.startVisibleColumn === other.startVisibleColumn\r\n && this.spaceWidth === other.spaceWidth\r\n && this.renderSpaceWidth === other.renderSpaceWidth\r\n && this.renderSpaceCharCode === other.renderSpaceCharCode\r\n && this.stopRenderingLineAfter === other.stopRenderingLineAfter\r\n && this.renderWhitespace === other.renderWhitespace\r\n && this.renderControlCharacters === other.renderControlCharacters\r\n && this.fontLigatures === other.fontLigatures\r\n && LineDecoration.equalsArr(this.lineDecorations, other.lineDecorations)\r\n && this.lineTokens.equals(other.lineTokens)\r\n && this.sameSelection(other.selectionsOnLine));\r\n }\r\n}\r\nexport class DomPosition {\r\n constructor(partIndex, charIndex) {\r\n this.partIndex = partIndex;\r\n this.charIndex = charIndex;\r\n }\r\n}\r\n/**\r\n * Provides a both direction mapping between a line's character and its rendered position.\r\n */\r\nexport class CharacterMapping {\r\n constructor(length, partCount) {\r\n this.length = length;\r\n this._data = new Uint32Array(this.length);\r\n this._absoluteOffsets = new Uint32Array(this.length);\r\n }\r\n static getPartIndex(partData) {\r\n return (partData & 4294901760 /* PART_INDEX_MASK */) >>> 16 /* PART_INDEX_OFFSET */;\r\n }\r\n static getCharIndex(partData) {\r\n return (partData & 65535 /* CHAR_INDEX_MASK */) >>> 0 /* CHAR_INDEX_OFFSET */;\r\n }\r\n setColumnInfo(column, partIndex, charIndex, partAbsoluteOffset) {\r\n const partData = ((partIndex << 16 /* PART_INDEX_OFFSET */)\r\n | (charIndex << 0 /* CHAR_INDEX_OFFSET */)) >>> 0;\r\n this._data[column - 1] = partData;\r\n this._absoluteOffsets[column - 1] = partAbsoluteOffset + charIndex;\r\n }\r\n getAbsoluteOffset(column) {\r\n if (this._absoluteOffsets.length === 0) {\r\n // No characters on this line\r\n return 0;\r\n }\r\n return this._absoluteOffsets[column - 1];\r\n }\r\n charOffsetToPartData(charOffset) {\r\n if (this.length === 0) {\r\n return 0;\r\n }\r\n if (charOffset < 0) {\r\n return this._data[0];\r\n }\r\n if (charOffset >= this.length) {\r\n return this._data[this.length - 1];\r\n }\r\n return this._data[charOffset];\r\n }\r\n getDomPosition(column) {\r\n const partData = this.charOffsetToPartData(column - 1);\r\n const partIndex = CharacterMapping.getPartIndex(partData);\r\n const charIndex = CharacterMapping.getCharIndex(partData);\r\n return new DomPosition(partIndex, charIndex);\r\n }\r\n getColumn(domPosition, partLength) {\r\n const charOffset = this.partDataToCharOffset(domPosition.partIndex, partLength, domPosition.charIndex);\r\n return charOffset + 1;\r\n }\r\n partDataToCharOffset(partIndex, partLength, charIndex) {\r\n if (this.length === 0) {\r\n return 0;\r\n }\r\n let searchEntry = ((partIndex << 16 /* PART_INDEX_OFFSET */)\r\n | (charIndex << 0 /* CHAR_INDEX_OFFSET */)) >>> 0;\r\n let min = 0;\r\n let max = this.length - 1;\r\n while (min + 1 < max) {\r\n let mid = ((min + max) >>> 1);\r\n let midEntry = this._data[mid];\r\n if (midEntry === searchEntry) {\r\n return mid;\r\n }\r\n else if (midEntry > searchEntry) {\r\n max = mid;\r\n }\r\n else {\r\n min = mid;\r\n }\r\n }\r\n if (min === max) {\r\n return min;\r\n }\r\n let minEntry = this._data[min];\r\n let maxEntry = this._data[max];\r\n if (minEntry === searchEntry) {\r\n return min;\r\n }\r\n if (maxEntry === searchEntry) {\r\n return max;\r\n }\r\n let minPartIndex = CharacterMapping.getPartIndex(minEntry);\r\n let minCharIndex = CharacterMapping.getCharIndex(minEntry);\r\n let maxPartIndex = CharacterMapping.getPartIndex(maxEntry);\r\n let maxCharIndex;\r\n if (minPartIndex !== maxPartIndex) {\r\n // sitting between parts\r\n maxCharIndex = partLength;\r\n }\r\n else {\r\n maxCharIndex = CharacterMapping.getCharIndex(maxEntry);\r\n }\r\n let minEntryDistance = charIndex - minCharIndex;\r\n let maxEntryDistance = maxCharIndex - charIndex;\r\n if (minEntryDistance <= maxEntryDistance) {\r\n return min;\r\n }\r\n return max;\r\n }\r\n}\r\nexport class RenderLineOutput {\r\n constructor(characterMapping, containsRTL, containsForeignElements) {\r\n this._renderLineOutputBrand = undefined;\r\n this.characterMapping = characterMapping;\r\n this.containsRTL = containsRTL;\r\n this.containsForeignElements = containsForeignElements;\r\n }\r\n}\r\nexport function renderViewLine(input, sb) {\r\n if (input.lineContent.length === 0) {\r\n if (input.lineDecorations.length > 0) {\r\n // This line is empty, but it contains inline decorations\r\n sb.appendASCIIString(``);\r\n let beforeCount = 0;\r\n let afterCount = 0;\r\n let containsForeignElements = 0 /* None */;\r\n for (const lineDecoration of input.lineDecorations) {\r\n if (lineDecoration.type === 1 /* Before */ || lineDecoration.type === 2 /* After */) {\r\n sb.appendASCIIString(``);\r\n if (lineDecoration.type === 1 /* Before */) {\r\n containsForeignElements |= 1 /* Before */;\r\n beforeCount++;\r\n }\r\n if (lineDecoration.type === 2 /* After */) {\r\n containsForeignElements |= 2 /* After */;\r\n afterCount++;\r\n }\r\n }\r\n }\r\n sb.appendASCIIString(``);\r\n const characterMapping = new CharacterMapping(1, beforeCount + afterCount);\r\n characterMapping.setColumnInfo(1, beforeCount, 0, 0);\r\n return new RenderLineOutput(characterMapping, false, containsForeignElements);\r\n }\r\n // completely empty line\r\n sb.appendASCIIString('');\r\n return new RenderLineOutput(new CharacterMapping(0, 0), false, 0 /* None */);\r\n }\r\n return _renderLine(resolveRenderLineInput(input), sb);\r\n}\r\nexport class RenderLineOutput2 {\r\n constructor(characterMapping, html, containsRTL, containsForeignElements) {\r\n this.characterMapping = characterMapping;\r\n this.html = html;\r\n this.containsRTL = containsRTL;\r\n this.containsForeignElements = containsForeignElements;\r\n }\r\n}\r\nexport function renderViewLine2(input) {\r\n let sb = createStringBuilder(10000);\r\n let out = renderViewLine(input, sb);\r\n return new RenderLineOutput2(out.characterMapping, sb.build(), out.containsRTL, out.containsForeignElements);\r\n}\r\nclass ResolvedRenderLineInput {\r\n constructor(fontIsMonospace, canUseHalfwidthRightwardsArrow, lineContent, len, isOverflowing, parts, containsForeignElements, fauxIndentLength, tabSize, startVisibleColumn, containsRTL, spaceWidth, renderSpaceCharCode, renderWhitespace, renderControlCharacters) {\r\n this.fontIsMonospace = fontIsMonospace;\r\n this.canUseHalfwidthRightwardsArrow = canUseHalfwidthRightwardsArrow;\r\n this.lineContent = lineContent;\r\n this.len = len;\r\n this.isOverflowing = isOverflowing;\r\n this.parts = parts;\r\n this.containsForeignElements = containsForeignElements;\r\n this.fauxIndentLength = fauxIndentLength;\r\n this.tabSize = tabSize;\r\n this.startVisibleColumn = startVisibleColumn;\r\n this.containsRTL = containsRTL;\r\n this.spaceWidth = spaceWidth;\r\n this.renderSpaceCharCode = renderSpaceCharCode;\r\n this.renderWhitespace = renderWhitespace;\r\n this.renderControlCharacters = renderControlCharacters;\r\n //\r\n }\r\n}\r\nfunction resolveRenderLineInput(input) {\r\n const lineContent = input.lineContent;\r\n let isOverflowing;\r\n let len;\r\n if (input.stopRenderingLineAfter !== -1 && input.stopRenderingLineAfter < lineContent.length) {\r\n isOverflowing = true;\r\n len = input.stopRenderingLineAfter;\r\n }\r\n else {\r\n isOverflowing = false;\r\n len = lineContent.length;\r\n }\r\n let tokens = transformAndRemoveOverflowing(input.lineTokens, input.fauxIndentLength, len);\r\n if (input.renderWhitespace === 4 /* All */ ||\r\n input.renderWhitespace === 1 /* Boundary */ ||\r\n (input.renderWhitespace === 2 /* Selection */ && !!input.selectionsOnLine) ||\r\n input.renderWhitespace === 3 /* Trailing */) {\r\n tokens = _applyRenderWhitespace(input, lineContent, len, tokens);\r\n }\r\n let containsForeignElements = 0 /* None */;\r\n if (input.lineDecorations.length > 0) {\r\n for (let i = 0, len = input.lineDecorations.length; i < len; i++) {\r\n const lineDecoration = input.lineDecorations[i];\r\n if (lineDecoration.type === 3 /* RegularAffectingLetterSpacing */) {\r\n // Pretend there are foreign elements... although not 100% accurate.\r\n containsForeignElements |= 1 /* Before */;\r\n }\r\n else if (lineDecoration.type === 1 /* Before */) {\r\n containsForeignElements |= 1 /* Before */;\r\n }\r\n else if (lineDecoration.type === 2 /* After */) {\r\n containsForeignElements |= 2 /* After */;\r\n }\r\n }\r\n tokens = _applyInlineDecorations(lineContent, len, tokens, input.lineDecorations);\r\n }\r\n if (!input.containsRTL) {\r\n // We can never split RTL text, as it ruins the rendering\r\n tokens = splitLargeTokens(lineContent, tokens, !input.isBasicASCII || input.fontLigatures);\r\n }\r\n return new ResolvedRenderLineInput(input.useMonospaceOptimizations, input.canUseHalfwidthRightwardsArrow, lineContent, len, isOverflowing, tokens, containsForeignElements, input.fauxIndentLength, input.tabSize, input.startVisibleColumn, input.containsRTL, input.spaceWidth, input.renderSpaceCharCode, input.renderWhitespace, input.renderControlCharacters);\r\n}\r\n/**\r\n * In the rendering phase, characters are always looped until token.endIndex.\r\n * Ensure that all tokens end before `len` and the last one ends precisely at `len`.\r\n */\r\nfunction transformAndRemoveOverflowing(tokens, fauxIndentLength, len) {\r\n let result = [], resultLen = 0;\r\n // The faux indent part of the line should have no token type\r\n if (fauxIndentLength > 0) {\r\n result[resultLen++] = new LinePart(fauxIndentLength, '', 0);\r\n }\r\n for (let tokenIndex = 0, tokensLen = tokens.getCount(); tokenIndex < tokensLen; tokenIndex++) {\r\n const endIndex = tokens.getEndOffset(tokenIndex);\r\n if (endIndex <= fauxIndentLength) {\r\n // The faux indent part of the line should have no token type\r\n continue;\r\n }\r\n const type = tokens.getClassName(tokenIndex);\r\n if (endIndex >= len) {\r\n result[resultLen++] = new LinePart(len, type, 0);\r\n break;\r\n }\r\n result[resultLen++] = new LinePart(endIndex, type, 0);\r\n }\r\n return result;\r\n}\r\n/**\r\n * See https://github.com/microsoft/vscode/issues/6885.\r\n * It appears that having very large spans causes very slow reading of character positions.\r\n * So here we try to avoid that.\r\n */\r\nfunction splitLargeTokens(lineContent, tokens, onlyAtSpaces) {\r\n let lastTokenEndIndex = 0;\r\n let result = [], resultLen = 0;\r\n if (onlyAtSpaces) {\r\n // Split only at spaces => we need to walk each character\r\n for (let i = 0, len = tokens.length; i < len; i++) {\r\n const token = tokens[i];\r\n const tokenEndIndex = token.endIndex;\r\n if (lastTokenEndIndex + 50 /* LongToken */ < tokenEndIndex) {\r\n const tokenType = token.type;\r\n const tokenMetadata = token.metadata;\r\n let lastSpaceOffset = -1;\r\n let currTokenStart = lastTokenEndIndex;\r\n for (let j = lastTokenEndIndex; j < tokenEndIndex; j++) {\r\n if (lineContent.charCodeAt(j) === 32 /* Space */) {\r\n lastSpaceOffset = j;\r\n }\r\n if (lastSpaceOffset !== -1 && j - currTokenStart >= 50 /* LongToken */) {\r\n // Split at `lastSpaceOffset` + 1\r\n result[resultLen++] = new LinePart(lastSpaceOffset + 1, tokenType, tokenMetadata);\r\n currTokenStart = lastSpaceOffset + 1;\r\n lastSpaceOffset = -1;\r\n }\r\n }\r\n if (currTokenStart !== tokenEndIndex) {\r\n result[resultLen++] = new LinePart(tokenEndIndex, tokenType, tokenMetadata);\r\n }\r\n }\r\n else {\r\n result[resultLen++] = token;\r\n }\r\n lastTokenEndIndex = tokenEndIndex;\r\n }\r\n }\r\n else {\r\n // Split anywhere => we don't need to walk each character\r\n for (let i = 0, len = tokens.length; i < len; i++) {\r\n const token = tokens[i];\r\n const tokenEndIndex = token.endIndex;\r\n let diff = (tokenEndIndex - lastTokenEndIndex);\r\n if (diff > 50 /* LongToken */) {\r\n const tokenType = token.type;\r\n const tokenMetadata = token.metadata;\r\n const piecesCount = Math.ceil(diff / 50 /* LongToken */);\r\n for (let j = 1; j < piecesCount; j++) {\r\n let pieceEndIndex = lastTokenEndIndex + (j * 50 /* LongToken */);\r\n result[resultLen++] = new LinePart(pieceEndIndex, tokenType, tokenMetadata);\r\n }\r\n result[resultLen++] = new LinePart(tokenEndIndex, tokenType, tokenMetadata);\r\n }\r\n else {\r\n result[resultLen++] = token;\r\n }\r\n lastTokenEndIndex = tokenEndIndex;\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Whitespace is rendered by \"replacing\" tokens with a special-purpose `mtkw` type that is later recognized in the rendering phase.\r\n * Moreover, a token is created for every visual indent because on some fonts the glyphs used for rendering whitespace (→ or ·) do not have the same width as  .\r\n * The rendering phase will generate `style=\"width:...\"` for these tokens.\r\n */\r\nfunction _applyRenderWhitespace(input, lineContent, len, tokens) {\r\n const continuesWithWrappedLine = input.continuesWithWrappedLine;\r\n const fauxIndentLength = input.fauxIndentLength;\r\n const tabSize = input.tabSize;\r\n const startVisibleColumn = input.startVisibleColumn;\r\n const useMonospaceOptimizations = input.useMonospaceOptimizations;\r\n const selections = input.selectionsOnLine;\r\n const onlyBoundary = (input.renderWhitespace === 1 /* Boundary */);\r\n const onlyTrailing = (input.renderWhitespace === 3 /* Trailing */);\r\n const generateLinePartForEachWhitespace = (input.renderSpaceWidth !== input.spaceWidth);\r\n let result = [], resultLen = 0;\r\n let tokenIndex = 0;\r\n let tokenType = tokens[tokenIndex].type;\r\n let tokenEndIndex = tokens[tokenIndex].endIndex;\r\n const tokensLength = tokens.length;\r\n let lineIsEmptyOrWhitespace = false;\r\n let firstNonWhitespaceIndex = strings.firstNonWhitespaceIndex(lineContent);\r\n let lastNonWhitespaceIndex;\r\n if (firstNonWhitespaceIndex === -1) {\r\n lineIsEmptyOrWhitespace = true;\r\n firstNonWhitespaceIndex = len;\r\n lastNonWhitespaceIndex = len;\r\n }\r\n else {\r\n lastNonWhitespaceIndex = strings.lastNonWhitespaceIndex(lineContent);\r\n }\r\n let wasInWhitespace = false;\r\n let currentSelectionIndex = 0;\r\n let currentSelection = selections && selections[currentSelectionIndex];\r\n let tmpIndent = startVisibleColumn % tabSize;\r\n for (let charIndex = fauxIndentLength; charIndex < len; charIndex++) {\r\n const chCode = lineContent.charCodeAt(charIndex);\r\n if (currentSelection && charIndex >= currentSelection.endOffset) {\r\n currentSelectionIndex++;\r\n currentSelection = selections && selections[currentSelectionIndex];\r\n }\r\n let isInWhitespace;\r\n if (charIndex < firstNonWhitespaceIndex || charIndex > lastNonWhitespaceIndex) {\r\n // in leading or trailing whitespace\r\n isInWhitespace = true;\r\n }\r\n else if (chCode === 9 /* Tab */) {\r\n // a tab character is rendered both in all and boundary cases\r\n isInWhitespace = true;\r\n }\r\n else if (chCode === 32 /* Space */) {\r\n // hit a space character\r\n if (onlyBoundary) {\r\n // rendering only boundary whitespace\r\n if (wasInWhitespace) {\r\n isInWhitespace = true;\r\n }\r\n else {\r\n const nextChCode = (charIndex + 1 < len ? lineContent.charCodeAt(charIndex + 1) : 0 /* Null */);\r\n isInWhitespace = (nextChCode === 32 /* Space */ || nextChCode === 9 /* Tab */);\r\n }\r\n }\r\n else {\r\n isInWhitespace = true;\r\n }\r\n }\r\n else {\r\n isInWhitespace = false;\r\n }\r\n // If rendering whitespace on selection, check that the charIndex falls within a selection\r\n if (isInWhitespace && selections) {\r\n isInWhitespace = !!currentSelection && currentSelection.startOffset <= charIndex && currentSelection.endOffset > charIndex;\r\n }\r\n // If rendering only trailing whitespace, check that the charIndex points to trailing whitespace.\r\n if (isInWhitespace && onlyTrailing) {\r\n isInWhitespace = lineIsEmptyOrWhitespace || charIndex > lastNonWhitespaceIndex;\r\n }\r\n if (wasInWhitespace) {\r\n // was in whitespace token\r\n if (!isInWhitespace || (!useMonospaceOptimizations && tmpIndent >= tabSize)) {\r\n // leaving whitespace token or entering a new indent\r\n if (generateLinePartForEachWhitespace) {\r\n const lastEndIndex = (resultLen > 0 ? result[resultLen - 1].endIndex : fauxIndentLength);\r\n for (let i = lastEndIndex + 1; i <= charIndex; i++) {\r\n result[resultLen++] = new LinePart(i, 'mtkw', 1 /* IS_WHITESPACE */);\r\n }\r\n }\r\n else {\r\n result[resultLen++] = new LinePart(charIndex, 'mtkw', 1 /* IS_WHITESPACE */);\r\n }\r\n tmpIndent = tmpIndent % tabSize;\r\n }\r\n }\r\n else {\r\n // was in regular token\r\n if (charIndex === tokenEndIndex || (isInWhitespace && charIndex > fauxIndentLength)) {\r\n result[resultLen++] = new LinePart(charIndex, tokenType, 0);\r\n tmpIndent = tmpIndent % tabSize;\r\n }\r\n }\r\n if (chCode === 9 /* Tab */) {\r\n tmpIndent = tabSize;\r\n }\r\n else if (strings.isFullWidthCharacter(chCode)) {\r\n tmpIndent += 2;\r\n }\r\n else {\r\n tmpIndent++;\r\n }\r\n wasInWhitespace = isInWhitespace;\r\n while (charIndex === tokenEndIndex) {\r\n tokenIndex++;\r\n if (tokenIndex < tokensLength) {\r\n tokenType = tokens[tokenIndex].type;\r\n tokenEndIndex = tokens[tokenIndex].endIndex;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n let generateWhitespace = false;\r\n if (wasInWhitespace) {\r\n // was in whitespace token\r\n if (continuesWithWrappedLine && onlyBoundary) {\r\n let lastCharCode = (len > 0 ? lineContent.charCodeAt(len - 1) : 0 /* Null */);\r\n let prevCharCode = (len > 1 ? lineContent.charCodeAt(len - 2) : 0 /* Null */);\r\n let isSingleTrailingSpace = (lastCharCode === 32 /* Space */ && (prevCharCode !== 32 /* Space */ && prevCharCode !== 9 /* Tab */));\r\n if (!isSingleTrailingSpace) {\r\n generateWhitespace = true;\r\n }\r\n }\r\n else {\r\n generateWhitespace = true;\r\n }\r\n }\r\n if (generateWhitespace) {\r\n if (generateLinePartForEachWhitespace) {\r\n const lastEndIndex = (resultLen > 0 ? result[resultLen - 1].endIndex : fauxIndentLength);\r\n for (let i = lastEndIndex + 1; i <= len; i++) {\r\n result[resultLen++] = new LinePart(i, 'mtkw', 1 /* IS_WHITESPACE */);\r\n }\r\n }\r\n else {\r\n result[resultLen++] = new LinePart(len, 'mtkw', 1 /* IS_WHITESPACE */);\r\n }\r\n }\r\n else {\r\n result[resultLen++] = new LinePart(len, tokenType, 0);\r\n }\r\n return result;\r\n}\r\n/**\r\n * Inline decorations are \"merged\" on top of tokens.\r\n * Special care must be taken when multiple inline decorations are at play and they overlap.\r\n */\r\nfunction _applyInlineDecorations(lineContent, len, tokens, _lineDecorations) {\r\n _lineDecorations.sort(LineDecoration.compare);\r\n const lineDecorations = LineDecorationsNormalizer.normalize(lineContent, _lineDecorations);\r\n const lineDecorationsLen = lineDecorations.length;\r\n let lineDecorationIndex = 0;\r\n let result = [], resultLen = 0, lastResultEndIndex = 0;\r\n for (let tokenIndex = 0, len = tokens.length; tokenIndex < len; tokenIndex++) {\r\n const token = tokens[tokenIndex];\r\n const tokenEndIndex = token.endIndex;\r\n const tokenType = token.type;\r\n const tokenMetadata = token.metadata;\r\n while (lineDecorationIndex < lineDecorationsLen && lineDecorations[lineDecorationIndex].startOffset < tokenEndIndex) {\r\n const lineDecoration = lineDecorations[lineDecorationIndex];\r\n if (lineDecoration.startOffset > lastResultEndIndex) {\r\n lastResultEndIndex = lineDecoration.startOffset;\r\n result[resultLen++] = new LinePart(lastResultEndIndex, tokenType, tokenMetadata);\r\n }\r\n if (lineDecoration.endOffset + 1 <= tokenEndIndex) {\r\n // This line decoration ends before this token ends\r\n lastResultEndIndex = lineDecoration.endOffset + 1;\r\n result[resultLen++] = new LinePart(lastResultEndIndex, tokenType + ' ' + lineDecoration.className, tokenMetadata | lineDecoration.metadata);\r\n lineDecorationIndex++;\r\n }\r\n else {\r\n // This line decoration continues on to the next token\r\n lastResultEndIndex = tokenEndIndex;\r\n result[resultLen++] = new LinePart(lastResultEndIndex, tokenType + ' ' + lineDecoration.className, tokenMetadata | lineDecoration.metadata);\r\n break;\r\n }\r\n }\r\n if (tokenEndIndex > lastResultEndIndex) {\r\n lastResultEndIndex = tokenEndIndex;\r\n result[resultLen++] = new LinePart(lastResultEndIndex, tokenType, tokenMetadata);\r\n }\r\n }\r\n const lastTokenEndIndex = tokens[tokens.length - 1].endIndex;\r\n if (lineDecorationIndex < lineDecorationsLen && lineDecorations[lineDecorationIndex].startOffset === lastTokenEndIndex) {\r\n while (lineDecorationIndex < lineDecorationsLen && lineDecorations[lineDecorationIndex].startOffset === lastTokenEndIndex) {\r\n const lineDecoration = lineDecorations[lineDecorationIndex];\r\n result[resultLen++] = new LinePart(lastResultEndIndex, lineDecoration.className, lineDecoration.metadata);\r\n lineDecorationIndex++;\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * This function is on purpose not split up into multiple functions to allow runtime type inference (i.e. performance reasons).\r\n * Notice how all the needed data is fully resolved and passed in (i.e. no other calls).\r\n */\r\nfunction _renderLine(input, sb) {\r\n const fontIsMonospace = input.fontIsMonospace;\r\n const canUseHalfwidthRightwardsArrow = input.canUseHalfwidthRightwardsArrow;\r\n const containsForeignElements = input.containsForeignElements;\r\n const lineContent = input.lineContent;\r\n const len = input.len;\r\n const isOverflowing = input.isOverflowing;\r\n const parts = input.parts;\r\n const fauxIndentLength = input.fauxIndentLength;\r\n const tabSize = input.tabSize;\r\n const startVisibleColumn = input.startVisibleColumn;\r\n const containsRTL = input.containsRTL;\r\n const spaceWidth = input.spaceWidth;\r\n const renderSpaceCharCode = input.renderSpaceCharCode;\r\n const renderWhitespace = input.renderWhitespace;\r\n const renderControlCharacters = input.renderControlCharacters;\r\n const characterMapping = new CharacterMapping(len + 1, parts.length);\r\n let lastCharacterMappingDefined = false;\r\n let charIndex = 0;\r\n let visibleColumn = startVisibleColumn;\r\n let charOffsetInPart = 0;\r\n let partDisplacement = 0;\r\n let prevPartContentCnt = 0;\r\n let partAbsoluteOffset = 0;\r\n if (containsRTL) {\r\n sb.appendASCIIString('');\r\n }\r\n else {\r\n sb.appendASCIIString('');\r\n }\r\n for (let partIndex = 0, tokensLen = parts.length; partIndex < tokensLen; partIndex++) {\r\n partAbsoluteOffset += prevPartContentCnt;\r\n const part = parts[partIndex];\r\n const partEndIndex = part.endIndex;\r\n const partType = part.type;\r\n const partRendersWhitespace = (renderWhitespace !== 0 /* None */ && part.isWhitespace());\r\n const partRendersWhitespaceWithWidth = partRendersWhitespace && !fontIsMonospace && (partType === 'mtkw' /*only whitespace*/ || !containsForeignElements);\r\n const partIsEmptyAndHasPseudoAfter = (charIndex === partEndIndex && part.isPseudoAfter());\r\n charOffsetInPart = 0;\r\n sb.appendASCIIString('= fauxIndentLength) {\r\n _visibleColumn += charWidth;\r\n }\r\n }\r\n }\r\n if (partRendersWhitespaceWithWidth) {\r\n sb.appendASCIIString(' style=\"width:');\r\n sb.appendASCIIString(String(spaceWidth * partContentCnt));\r\n sb.appendASCIIString('px\"');\r\n }\r\n sb.appendASCII(62 /* GreaterThan */);\r\n for (; charIndex < partEndIndex; charIndex++) {\r\n characterMapping.setColumnInfo(charIndex + 1, partIndex - partDisplacement, charOffsetInPart, partAbsoluteOffset);\r\n partDisplacement = 0;\r\n const charCode = lineContent.charCodeAt(charIndex);\r\n let charWidth;\r\n if (charCode === 9 /* Tab */) {\r\n charWidth = (tabSize - (visibleColumn % tabSize)) | 0;\r\n if (!canUseHalfwidthRightwardsArrow || charWidth > 1) {\r\n sb.write1(0x2192); // RIGHTWARDS ARROW\r\n }\r\n else {\r\n sb.write1(0xFFEB); // HALFWIDTH RIGHTWARDS ARROW\r\n }\r\n for (let space = 2; space <= charWidth; space++) {\r\n sb.write1(0xA0); //  \r\n }\r\n }\r\n else { // must be CharCode.Space\r\n charWidth = 1;\r\n sb.write1(renderSpaceCharCode); // · or word separator middle dot\r\n }\r\n charOffsetInPart += charWidth;\r\n if (charIndex >= fauxIndentLength) {\r\n visibleColumn += charWidth;\r\n }\r\n }\r\n prevPartContentCnt = partContentCnt;\r\n }\r\n else {\r\n let partContentCnt = 0;\r\n sb.appendASCII(62 /* GreaterThan */);\r\n for (; charIndex < partEndIndex; charIndex++) {\r\n characterMapping.setColumnInfo(charIndex + 1, partIndex - partDisplacement, charOffsetInPart, partAbsoluteOffset);\r\n partDisplacement = 0;\r\n const charCode = lineContent.charCodeAt(charIndex);\r\n let producedCharacters = 1;\r\n let charWidth = 1;\r\n switch (charCode) {\r\n case 9 /* Tab */:\r\n producedCharacters = (tabSize - (visibleColumn % tabSize));\r\n charWidth = producedCharacters;\r\n for (let space = 1; space <= producedCharacters; space++) {\r\n sb.write1(0xA0); //  \r\n }\r\n break;\r\n case 32 /* Space */:\r\n sb.write1(0xA0); //  \r\n break;\r\n case 60 /* LessThan */:\r\n sb.appendASCIIString('<');\r\n break;\r\n case 62 /* GreaterThan */:\r\n sb.appendASCIIString('>');\r\n break;\r\n case 38 /* Ampersand */:\r\n sb.appendASCIIString('&');\r\n break;\r\n case 0 /* Null */:\r\n if (renderControlCharacters) {\r\n // See https://unicode-table.com/en/blocks/control-pictures/\r\n sb.write1(9216);\r\n }\r\n else {\r\n sb.appendASCIIString('�');\r\n }\r\n break;\r\n case 65279 /* UTF8_BOM */:\r\n case 8232 /* LINE_SEPARATOR */:\r\n case 8233 /* PARAGRAPH_SEPARATOR */:\r\n case 133 /* NEXT_LINE */:\r\n sb.write1(0xFFFD);\r\n break;\r\n default:\r\n if (strings.isFullWidthCharacter(charCode)) {\r\n charWidth++;\r\n }\r\n // See https://unicode-table.com/en/blocks/control-pictures/\r\n if (renderControlCharacters && charCode < 32) {\r\n sb.write1(9216 + charCode);\r\n }\r\n else if (renderControlCharacters && charCode === 127) {\r\n // DEL\r\n sb.write1(9249);\r\n }\r\n else {\r\n sb.write1(charCode);\r\n }\r\n }\r\n charOffsetInPart += producedCharacters;\r\n partContentCnt += producedCharacters;\r\n if (charIndex >= fauxIndentLength) {\r\n visibleColumn += charWidth;\r\n }\r\n }\r\n prevPartContentCnt = partContentCnt;\r\n }\r\n if (partIsEmptyAndHasPseudoAfter) {\r\n partDisplacement++;\r\n }\r\n else {\r\n partDisplacement = 0;\r\n }\r\n if (charIndex >= len && !lastCharacterMappingDefined && part.isPseudoAfter()) {\r\n lastCharacterMappingDefined = true;\r\n characterMapping.setColumnInfo(charIndex + 1, partIndex, charOffsetInPart, partAbsoluteOffset);\r\n }\r\n sb.appendASCIIString('');\r\n }\r\n if (!lastCharacterMappingDefined) {\r\n // When getting client rects for the last character, we will position the\r\n // text range at the end of the span, insteaf of at the beginning of next span\r\n characterMapping.setColumnInfo(len + 1, parts.length - 1, charOffsetInPart, partAbsoluteOffset);\r\n }\r\n if (isOverflowing) {\r\n sb.appendASCIIString('');\r\n }\r\n sb.appendASCIIString('');\r\n return new RenderLineOutput(characterMapping, containsRTL, containsForeignElements);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { Position } from '../core/position.js';\r\nimport { Range } from '../core/range.js';\r\nexport class Viewport {\r\n constructor(top, left, width, height) {\r\n this._viewportBrand = undefined;\r\n this.top = top | 0;\r\n this.left = left | 0;\r\n this.width = width | 0;\r\n this.height = height | 0;\r\n }\r\n}\r\nexport class OutputPosition {\r\n constructor(outputLineIndex, outputOffset) {\r\n this.outputLineIndex = outputLineIndex;\r\n this.outputOffset = outputOffset;\r\n }\r\n toString() {\r\n return `${this.outputLineIndex}:${this.outputOffset}`;\r\n }\r\n toPosition(baseLineNumber, wrappedTextIndentLength) {\r\n const delta = (this.outputLineIndex > 0 ? wrappedTextIndentLength : 0);\r\n return new Position(baseLineNumber + this.outputLineIndex, delta + this.outputOffset + 1);\r\n }\r\n}\r\nexport class LineBreakData {\r\n constructor(breakOffsets, breakOffsetsVisibleColumn, wrappedTextIndentLength, injectionOffsets, injectionOptions) {\r\n this.breakOffsets = breakOffsets;\r\n this.breakOffsetsVisibleColumn = breakOffsetsVisibleColumn;\r\n this.wrappedTextIndentLength = wrappedTextIndentLength;\r\n this.injectionOffsets = injectionOffsets;\r\n this.injectionOptions = injectionOptions;\r\n }\r\n getInputOffsetOfOutputPosition(outputLineIndex, outputOffset) {\r\n let inputOffset = 0;\r\n if (outputLineIndex === 0) {\r\n inputOffset = outputOffset;\r\n }\r\n else {\r\n inputOffset = this.breakOffsets[outputLineIndex - 1] + outputOffset;\r\n }\r\n if (this.injectionOffsets !== null) {\r\n for (let i = 0; i < this.injectionOffsets.length; i++) {\r\n if (inputOffset > this.injectionOffsets[i]) {\r\n if (inputOffset < this.injectionOffsets[i] + this.injectionOptions[i].content.length) {\r\n // `inputOffset` is within injected text\r\n inputOffset = this.injectionOffsets[i];\r\n }\r\n else {\r\n inputOffset -= this.injectionOptions[i].content.length;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n return inputOffset;\r\n }\r\n getOutputPositionOfInputOffset(inputOffset, affinity = 2 /* None */) {\r\n let delta = 0;\r\n if (this.injectionOffsets !== null) {\r\n for (let i = 0; i < this.injectionOffsets.length; i++) {\r\n if (inputOffset < this.injectionOffsets[i]) {\r\n break;\r\n }\r\n if (affinity !== 1 /* Right */ && inputOffset === this.injectionOffsets[i]) {\r\n break;\r\n }\r\n delta += this.injectionOptions[i].content.length;\r\n }\r\n }\r\n inputOffset += delta;\r\n return this.getOutputPositionOfOffsetInUnwrappedLine(inputOffset, affinity);\r\n }\r\n getOutputPositionOfOffsetInUnwrappedLine(inputOffset, affinity = 2 /* None */) {\r\n let low = 0;\r\n let high = this.breakOffsets.length - 1;\r\n let mid = 0;\r\n let midStart = 0;\r\n while (low <= high) {\r\n mid = low + ((high - low) / 2) | 0;\r\n const midStop = this.breakOffsets[mid];\r\n midStart = mid > 0 ? this.breakOffsets[mid - 1] : 0;\r\n if (affinity === 0 /* Left */) {\r\n if (inputOffset <= midStart) {\r\n high = mid - 1;\r\n }\r\n else if (inputOffset > midStop) {\r\n low = mid + 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n else {\r\n if (inputOffset < midStart) {\r\n high = mid - 1;\r\n }\r\n else if (inputOffset >= midStop) {\r\n low = mid + 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n return new OutputPosition(mid, inputOffset - midStart);\r\n }\r\n outputPositionToOffsetInUnwrappedLine(outputLineIndex, outputOffset) {\r\n let result = (outputLineIndex > 0 ? this.breakOffsets[outputLineIndex - 1] : 0) + outputOffset;\r\n if (outputLineIndex > 0) {\r\n result -= this.wrappedTextIndentLength;\r\n }\r\n return result;\r\n }\r\n normalizeOffsetAroundInjections(offsetInUnwrappedLine, affinity) {\r\n const injectedText = this.getInjectedTextAtOffset(offsetInUnwrappedLine);\r\n if (!injectedText) {\r\n return offsetInUnwrappedLine;\r\n }\r\n if (affinity === 2 /* None */) {\r\n if (offsetInUnwrappedLine === injectedText.offsetInUnwrappedLine + injectedText.length) {\r\n // go to the end of this injected text\r\n return injectedText.offsetInUnwrappedLine + injectedText.length;\r\n }\r\n else {\r\n // go to the start of this injected text\r\n return injectedText.offsetInUnwrappedLine;\r\n }\r\n }\r\n if (affinity === 1 /* Right */) {\r\n let result = injectedText.offsetInUnwrappedLine + injectedText.length;\r\n let index = injectedText.injectedTextIndex;\r\n // traverse all injected text that touch eachother\r\n while (index + 1 < this.injectionOffsets.length && this.injectionOffsets[index + 1] === this.injectionOffsets[index]) {\r\n result += this.injectionOptions[index + 1].content.length;\r\n index++;\r\n }\r\n return result;\r\n }\r\n // affinity is left\r\n let result = injectedText.offsetInUnwrappedLine;\r\n let index = injectedText.injectedTextIndex;\r\n // traverse all injected text that touch eachother\r\n while (index - 1 >= 0 && this.injectionOffsets[index - 1] === this.injectionOffsets[index]) {\r\n result -= this.injectionOptions[index - 1].content.length;\r\n index++;\r\n }\r\n return result;\r\n }\r\n getInjectedText(outputLineIndex, outputOffset) {\r\n const offset = this.outputPositionToOffsetInUnwrappedLine(outputLineIndex, outputOffset);\r\n const injectedText = this.getInjectedTextAtOffset(offset);\r\n if (!injectedText) {\r\n return null;\r\n }\r\n return {\r\n options: this.injectionOptions[injectedText.injectedTextIndex]\r\n };\r\n }\r\n getInjectedTextAtOffset(offsetInUnwrappedLine) {\r\n const injectionOffsets = this.injectionOffsets;\r\n const injectionOptions = this.injectionOptions;\r\n if (injectionOffsets !== null) {\r\n let totalInjectedTextLengthBefore = 0;\r\n for (let i = 0; i < injectionOffsets.length; i++) {\r\n const length = injectionOptions[i].content.length;\r\n const injectedTextStartOffsetInUnwrappedLine = injectionOffsets[i] + totalInjectedTextLengthBefore;\r\n const injectedTextEndOffsetInUnwrappedLine = injectionOffsets[i] + totalInjectedTextLengthBefore + length;\r\n if (injectedTextStartOffsetInUnwrappedLine > offsetInUnwrappedLine) {\r\n // Injected text starts later.\r\n break; // All later injected texts have an even larger offset.\r\n }\r\n if (offsetInUnwrappedLine <= injectedTextEndOffsetInUnwrappedLine) {\r\n // Injected text ends after or with the given position (but also starts with or before it).\r\n return {\r\n injectedTextIndex: i,\r\n offsetInUnwrappedLine: injectedTextStartOffsetInUnwrappedLine,\r\n length\r\n };\r\n }\r\n totalInjectedTextLengthBefore += length;\r\n }\r\n }\r\n return undefined;\r\n }\r\n}\r\nexport class InjectedText {\r\n constructor(options) {\r\n this.options = options;\r\n }\r\n}\r\nexport class MinimapLinesRenderingData {\r\n constructor(tabSize, data) {\r\n this.tabSize = tabSize;\r\n this.data = data;\r\n }\r\n}\r\nexport class ViewLineData {\r\n constructor(content, continuesWithWrappedLine, minColumn, maxColumn, startVisibleColumn, tokens, inlineDecorations) {\r\n this._viewLineDataBrand = undefined;\r\n this.content = content;\r\n this.continuesWithWrappedLine = continuesWithWrappedLine;\r\n this.minColumn = minColumn;\r\n this.maxColumn = maxColumn;\r\n this.startVisibleColumn = startVisibleColumn;\r\n this.tokens = tokens;\r\n this.inlineDecorations = inlineDecorations;\r\n }\r\n}\r\nexport class ViewLineRenderingData {\r\n constructor(minColumn, maxColumn, content, continuesWithWrappedLine, mightContainRTL, mightContainNonBasicASCII, tokens, inlineDecorations, tabSize, startVisibleColumn) {\r\n this.minColumn = minColumn;\r\n this.maxColumn = maxColumn;\r\n this.content = content;\r\n this.continuesWithWrappedLine = continuesWithWrappedLine;\r\n this.isBasicASCII = ViewLineRenderingData.isBasicASCII(content, mightContainNonBasicASCII);\r\n this.containsRTL = ViewLineRenderingData.containsRTL(content, this.isBasicASCII, mightContainRTL);\r\n this.tokens = tokens;\r\n this.inlineDecorations = inlineDecorations;\r\n this.tabSize = tabSize;\r\n this.startVisibleColumn = startVisibleColumn;\r\n }\r\n static isBasicASCII(lineContent, mightContainNonBasicASCII) {\r\n if (mightContainNonBasicASCII) {\r\n return strings.isBasicASCII(lineContent);\r\n }\r\n return true;\r\n }\r\n static containsRTL(lineContent, isBasicASCII, mightContainRTL) {\r\n if (!isBasicASCII && mightContainRTL) {\r\n return strings.containsRTL(lineContent);\r\n }\r\n return false;\r\n }\r\n}\r\nexport class InlineDecoration {\r\n constructor(range, inlineClassName, type) {\r\n this.range = range;\r\n this.inlineClassName = inlineClassName;\r\n this.type = type;\r\n }\r\n}\r\nexport class SingleLineInlineDecoration {\r\n constructor(startOffset, endOffset, inlineClassName, inlineClassNameAffectsLetterSpacing) {\r\n this.startOffset = startOffset;\r\n this.endOffset = endOffset;\r\n this.inlineClassName = inlineClassName;\r\n this.inlineClassNameAffectsLetterSpacing = inlineClassNameAffectsLetterSpacing;\r\n }\r\n toInlineDecoration(lineNumber) {\r\n return new InlineDecoration(new Range(lineNumber, this.startOffset + 1, lineNumber, this.endOffset + 1), this.inlineClassName, this.inlineClassNameAffectsLetterSpacing ? 3 /* RegularAffectingLetterSpacing */ : 0 /* Regular */);\r\n }\r\n}\r\nexport class ViewModelDecoration {\r\n constructor(range, options) {\r\n this._viewModelDecorationBrand = undefined;\r\n this.range = range;\r\n this.options = options;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport function isFuzzyActionArr(what) {\r\n return (Array.isArray(what));\r\n}\r\nexport function isFuzzyAction(what) {\r\n return !isFuzzyActionArr(what);\r\n}\r\nexport function isString(what) {\r\n return (typeof what === 'string');\r\n}\r\nexport function isIAction(what) {\r\n return !isString(what);\r\n}\r\n// Small helper functions\r\n/**\r\n * Is a string null, undefined, or empty?\r\n */\r\nexport function empty(s) {\r\n return (s ? false : true);\r\n}\r\n/**\r\n * Puts a string to lower case if 'ignoreCase' is set.\r\n */\r\nexport function fixCase(lexer, str) {\r\n return (lexer.ignoreCase && str ? str.toLowerCase() : str);\r\n}\r\n/**\r\n * Ensures there are no bad characters in a CSS token class.\r\n */\r\nexport function sanitize(s) {\r\n return s.replace(/[&<>'\"_]/g, '-'); // used on all output token CSS classes\r\n}\r\n// Logging\r\n/**\r\n * Logs a message.\r\n */\r\nexport function log(lexer, msg) {\r\n console.log(`${lexer.languageId}: ${msg}`);\r\n}\r\n// Throwing errors\r\nexport function createError(lexer, msg) {\r\n return new Error(`${lexer.languageId}: ${msg}`);\r\n}\r\n// Helper functions for rule finding and substitution\r\n/**\r\n * substituteMatches is used on lexer strings and can substitutes predefined patterns:\r\n * \t\t$$ => $\r\n * \t\t$# => id\r\n * \t\t$n => matched entry n\r\n * \t\t@attr => contents of lexer[attr]\r\n *\r\n * See documentation for more info\r\n */\r\nexport function substituteMatches(lexer, str, id, matches, state) {\r\n const re = /\\$((\\$)|(#)|(\\d\\d?)|[sS](\\d\\d?)|@(\\w+))/g;\r\n let stateMatches = null;\r\n return str.replace(re, function (full, sub, dollar, hash, n, s, attr, ofs, total) {\r\n if (!empty(dollar)) {\r\n return '$'; // $$\r\n }\r\n if (!empty(hash)) {\r\n return fixCase(lexer, id); // default $#\r\n }\r\n if (!empty(n) && n < matches.length) {\r\n return fixCase(lexer, matches[n]); // $n\r\n }\r\n if (!empty(attr) && lexer && typeof (lexer[attr]) === 'string') {\r\n return lexer[attr]; //@attribute\r\n }\r\n if (stateMatches === null) { // split state on demand\r\n stateMatches = state.split('.');\r\n stateMatches.unshift(state);\r\n }\r\n if (!empty(s) && s < stateMatches.length) {\r\n return fixCase(lexer, stateMatches[s]); //$Sn\r\n }\r\n return '';\r\n });\r\n}\r\n/**\r\n * Find the tokenizer rules for a specific state (i.e. next action)\r\n */\r\nexport function findRules(lexer, inState) {\r\n let state = inState;\r\n while (state && state.length > 0) {\r\n const rules = lexer.tokenizer[state];\r\n if (rules) {\r\n return rules;\r\n }\r\n const idx = state.lastIndexOf('.');\r\n if (idx < 0) {\r\n state = null; // no further parent\r\n }\r\n else {\r\n state = state.substr(0, idx);\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Is a certain state defined? In contrast to 'findRules' this works on a ILexerMin.\r\n * This is used during compilation where we may know the defined states\r\n * but not yet whether the corresponding rules are correct.\r\n */\r\nexport function stateExists(lexer, inState) {\r\n let state = inState;\r\n while (state && state.length > 0) {\r\n const exist = lexer.stateNames[state];\r\n if (exist) {\r\n return true;\r\n }\r\n const idx = state.lastIndexOf('.');\r\n if (idx < 0) {\r\n state = null; // no further parent\r\n }\r\n else {\r\n state = state.substr(0, idx);\r\n }\r\n }\r\n return false;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Token, TokenizationResult, TokenizationResult2 } from '../../../common/core/token.js';\r\nimport * as modes from '../../../common/modes.js';\r\nimport { NULL_MODE_ID, NULL_STATE } from '../../../common/modes/nullMode.js';\r\nimport * as monarchCommon from './monarchCommon.js';\r\nconst CACHE_STACK_DEPTH = 5;\r\n/**\r\n * Reuse the same stack elements up to a certain depth.\r\n */\r\nclass MonarchStackElementFactory {\r\n constructor(maxCacheDepth) {\r\n this._maxCacheDepth = maxCacheDepth;\r\n this._entries = Object.create(null);\r\n }\r\n static create(parent, state) {\r\n return this._INSTANCE.create(parent, state);\r\n }\r\n create(parent, state) {\r\n if (parent !== null && parent.depth >= this._maxCacheDepth) {\r\n // no caching above a certain depth\r\n return new MonarchStackElement(parent, state);\r\n }\r\n let stackElementId = MonarchStackElement.getStackElementId(parent);\r\n if (stackElementId.length > 0) {\r\n stackElementId += '|';\r\n }\r\n stackElementId += state;\r\n let result = this._entries[stackElementId];\r\n if (result) {\r\n return result;\r\n }\r\n result = new MonarchStackElement(parent, state);\r\n this._entries[stackElementId] = result;\r\n return result;\r\n }\r\n}\r\nMonarchStackElementFactory._INSTANCE = new MonarchStackElementFactory(CACHE_STACK_DEPTH);\r\nclass MonarchStackElement {\r\n constructor(parent, state) {\r\n this.parent = parent;\r\n this.state = state;\r\n this.depth = (this.parent ? this.parent.depth : 0) + 1;\r\n }\r\n static getStackElementId(element) {\r\n let result = '';\r\n while (element !== null) {\r\n if (result.length > 0) {\r\n result += '|';\r\n }\r\n result += element.state;\r\n element = element.parent;\r\n }\r\n return result;\r\n }\r\n static _equals(a, b) {\r\n while (a !== null && b !== null) {\r\n if (a === b) {\r\n return true;\r\n }\r\n if (a.state !== b.state) {\r\n return false;\r\n }\r\n a = a.parent;\r\n b = b.parent;\r\n }\r\n if (a === null && b === null) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n equals(other) {\r\n return MonarchStackElement._equals(this, other);\r\n }\r\n push(state) {\r\n return MonarchStackElementFactory.create(this, state);\r\n }\r\n pop() {\r\n return this.parent;\r\n }\r\n popall() {\r\n let result = this;\r\n while (result.parent) {\r\n result = result.parent;\r\n }\r\n return result;\r\n }\r\n switchTo(state) {\r\n return MonarchStackElementFactory.create(this.parent, state);\r\n }\r\n}\r\nclass EmbeddedModeData {\r\n constructor(modeId, state) {\r\n this.modeId = modeId;\r\n this.state = state;\r\n }\r\n equals(other) {\r\n return (this.modeId === other.modeId\r\n && this.state.equals(other.state));\r\n }\r\n clone() {\r\n let stateClone = this.state.clone();\r\n // save an object\r\n if (stateClone === this.state) {\r\n return this;\r\n }\r\n return new EmbeddedModeData(this.modeId, this.state);\r\n }\r\n}\r\n/**\r\n * Reuse the same line states up to a certain depth.\r\n */\r\nclass MonarchLineStateFactory {\r\n constructor(maxCacheDepth) {\r\n this._maxCacheDepth = maxCacheDepth;\r\n this._entries = Object.create(null);\r\n }\r\n static create(stack, embeddedModeData) {\r\n return this._INSTANCE.create(stack, embeddedModeData);\r\n }\r\n create(stack, embeddedModeData) {\r\n if (embeddedModeData !== null) {\r\n // no caching when embedding\r\n return new MonarchLineState(stack, embeddedModeData);\r\n }\r\n if (stack !== null && stack.depth >= this._maxCacheDepth) {\r\n // no caching above a certain depth\r\n return new MonarchLineState(stack, embeddedModeData);\r\n }\r\n let stackElementId = MonarchStackElement.getStackElementId(stack);\r\n let result = this._entries[stackElementId];\r\n if (result) {\r\n return result;\r\n }\r\n result = new MonarchLineState(stack, null);\r\n this._entries[stackElementId] = result;\r\n return result;\r\n }\r\n}\r\nMonarchLineStateFactory._INSTANCE = new MonarchLineStateFactory(CACHE_STACK_DEPTH);\r\nclass MonarchLineState {\r\n constructor(stack, embeddedModeData) {\r\n this.stack = stack;\r\n this.embeddedModeData = embeddedModeData;\r\n }\r\n clone() {\r\n let embeddedModeDataClone = this.embeddedModeData ? this.embeddedModeData.clone() : null;\r\n // save an object\r\n if (embeddedModeDataClone === this.embeddedModeData) {\r\n return this;\r\n }\r\n return MonarchLineStateFactory.create(this.stack, this.embeddedModeData);\r\n }\r\n equals(other) {\r\n if (!(other instanceof MonarchLineState)) {\r\n return false;\r\n }\r\n if (!this.stack.equals(other.stack)) {\r\n return false;\r\n }\r\n if (this.embeddedModeData === null && other.embeddedModeData === null) {\r\n return true;\r\n }\r\n if (this.embeddedModeData === null || other.embeddedModeData === null) {\r\n return false;\r\n }\r\n return this.embeddedModeData.equals(other.embeddedModeData);\r\n }\r\n}\r\nclass MonarchClassicTokensCollector {\r\n constructor() {\r\n this._tokens = [];\r\n this._language = null;\r\n this._lastTokenType = null;\r\n this._lastTokenLanguage = null;\r\n }\r\n enterMode(startOffset, modeId) {\r\n this._language = modeId;\r\n }\r\n emit(startOffset, type) {\r\n if (this._lastTokenType === type && this._lastTokenLanguage === this._language) {\r\n return;\r\n }\r\n this._lastTokenType = type;\r\n this._lastTokenLanguage = this._language;\r\n this._tokens.push(new Token(startOffset, type, this._language));\r\n }\r\n nestedModeTokenize(embeddedModeLine, hasEOL, embeddedModeData, offsetDelta) {\r\n const nestedModeId = embeddedModeData.modeId;\r\n const embeddedModeState = embeddedModeData.state;\r\n const nestedModeTokenizationSupport = modes.TokenizationRegistry.get(nestedModeId);\r\n if (!nestedModeTokenizationSupport) {\r\n this.enterMode(offsetDelta, nestedModeId);\r\n this.emit(offsetDelta, '');\r\n return embeddedModeState;\r\n }\r\n let nestedResult = nestedModeTokenizationSupport.tokenize(embeddedModeLine, hasEOL, embeddedModeState, offsetDelta);\r\n this._tokens = this._tokens.concat(nestedResult.tokens);\r\n this._lastTokenType = null;\r\n this._lastTokenLanguage = null;\r\n this._language = null;\r\n return nestedResult.endState;\r\n }\r\n finalize(endState) {\r\n return new TokenizationResult(this._tokens, endState);\r\n }\r\n}\r\nclass MonarchModernTokensCollector {\r\n constructor(modeService, theme) {\r\n this._modeService = modeService;\r\n this._theme = theme;\r\n this._prependTokens = null;\r\n this._tokens = [];\r\n this._currentLanguageId = 0 /* Null */;\r\n this._lastTokenMetadata = 0;\r\n }\r\n enterMode(startOffset, modeId) {\r\n this._currentLanguageId = this._modeService.getLanguageIdentifier(modeId).id;\r\n }\r\n emit(startOffset, type) {\r\n let metadata = this._theme.match(this._currentLanguageId, type);\r\n if (this._lastTokenMetadata === metadata) {\r\n return;\r\n }\r\n this._lastTokenMetadata = metadata;\r\n this._tokens.push(startOffset);\r\n this._tokens.push(metadata);\r\n }\r\n static _merge(a, b, c) {\r\n let aLen = (a !== null ? a.length : 0);\r\n let bLen = b.length;\r\n let cLen = (c !== null ? c.length : 0);\r\n if (aLen === 0 && bLen === 0 && cLen === 0) {\r\n return new Uint32Array(0);\r\n }\r\n if (aLen === 0 && bLen === 0) {\r\n return c;\r\n }\r\n if (bLen === 0 && cLen === 0) {\r\n return a;\r\n }\r\n let result = new Uint32Array(aLen + bLen + cLen);\r\n if (a !== null) {\r\n result.set(a);\r\n }\r\n for (let i = 0; i < bLen; i++) {\r\n result[aLen + i] = b[i];\r\n }\r\n if (c !== null) {\r\n result.set(c, aLen + bLen);\r\n }\r\n return result;\r\n }\r\n nestedModeTokenize(embeddedModeLine, hasEOL, embeddedModeData, offsetDelta) {\r\n const nestedModeId = embeddedModeData.modeId;\r\n const embeddedModeState = embeddedModeData.state;\r\n const nestedModeTokenizationSupport = modes.TokenizationRegistry.get(nestedModeId);\r\n if (!nestedModeTokenizationSupport) {\r\n this.enterMode(offsetDelta, nestedModeId);\r\n this.emit(offsetDelta, '');\r\n return embeddedModeState;\r\n }\r\n let nestedResult = nestedModeTokenizationSupport.tokenize2(embeddedModeLine, hasEOL, embeddedModeState, offsetDelta);\r\n this._prependTokens = MonarchModernTokensCollector._merge(this._prependTokens, this._tokens, nestedResult.tokens);\r\n this._tokens = [];\r\n this._currentLanguageId = 0;\r\n this._lastTokenMetadata = 0;\r\n return nestedResult.endState;\r\n }\r\n finalize(endState) {\r\n return new TokenizationResult2(MonarchModernTokensCollector._merge(this._prependTokens, this._tokens, null), endState);\r\n }\r\n}\r\nexport class MonarchTokenizer {\r\n constructor(modeService, standaloneThemeService, modeId, lexer) {\r\n this._modeService = modeService;\r\n this._standaloneThemeService = standaloneThemeService;\r\n this._modeId = modeId;\r\n this._lexer = lexer;\r\n this._embeddedModes = Object.create(null);\r\n this.embeddedLoaded = Promise.resolve(undefined);\r\n // Set up listening for embedded modes\r\n let emitting = false;\r\n this._tokenizationRegistryListener = modes.TokenizationRegistry.onDidChange((e) => {\r\n if (emitting) {\r\n return;\r\n }\r\n let isOneOfMyEmbeddedModes = false;\r\n for (let i = 0, len = e.changedLanguages.length; i < len; i++) {\r\n let language = e.changedLanguages[i];\r\n if (this._embeddedModes[language]) {\r\n isOneOfMyEmbeddedModes = true;\r\n break;\r\n }\r\n }\r\n if (isOneOfMyEmbeddedModes) {\r\n emitting = true;\r\n modes.TokenizationRegistry.fire([this._modeId]);\r\n emitting = false;\r\n }\r\n });\r\n }\r\n dispose() {\r\n this._tokenizationRegistryListener.dispose();\r\n }\r\n getLoadStatus() {\r\n let promises = [];\r\n for (let nestedModeId in this._embeddedModes) {\r\n const tokenizationSupport = modes.TokenizationRegistry.get(nestedModeId);\r\n if (tokenizationSupport) {\r\n // The nested mode is already loaded\r\n if (tokenizationSupport instanceof MonarchTokenizer) {\r\n const nestedModeStatus = tokenizationSupport.getLoadStatus();\r\n if (nestedModeStatus.loaded === false) {\r\n promises.push(nestedModeStatus.promise);\r\n }\r\n }\r\n continue;\r\n }\r\n const tokenizationSupportPromise = modes.TokenizationRegistry.getPromise(nestedModeId);\r\n if (tokenizationSupportPromise) {\r\n // The nested mode is in the process of being loaded\r\n promises.push(tokenizationSupportPromise);\r\n }\r\n }\r\n if (promises.length === 0) {\r\n return {\r\n loaded: true\r\n };\r\n }\r\n return {\r\n loaded: false,\r\n promise: Promise.all(promises).then(_ => undefined)\r\n };\r\n }\r\n getInitialState() {\r\n let rootState = MonarchStackElementFactory.create(null, this._lexer.start);\r\n return MonarchLineStateFactory.create(rootState, null);\r\n }\r\n tokenize(line, hasEOL, lineState, offsetDelta) {\r\n let tokensCollector = new MonarchClassicTokensCollector();\r\n let endLineState = this._tokenize(line, hasEOL, lineState, offsetDelta, tokensCollector);\r\n return tokensCollector.finalize(endLineState);\r\n }\r\n tokenize2(line, hasEOL, lineState, offsetDelta) {\r\n let tokensCollector = new MonarchModernTokensCollector(this._modeService, this._standaloneThemeService.getColorTheme().tokenTheme);\r\n let endLineState = this._tokenize(line, hasEOL, lineState, offsetDelta, tokensCollector);\r\n return tokensCollector.finalize(endLineState);\r\n }\r\n _tokenize(line, hasEOL, lineState, offsetDelta, collector) {\r\n if (lineState.embeddedModeData) {\r\n return this._nestedTokenize(line, hasEOL, lineState, offsetDelta, collector);\r\n }\r\n else {\r\n return this._myTokenize(line, hasEOL, lineState, offsetDelta, collector);\r\n }\r\n }\r\n _findLeavingNestedModeOffset(line, state) {\r\n let rules = this._lexer.tokenizer[state.stack.state];\r\n if (!rules) {\r\n rules = monarchCommon.findRules(this._lexer, state.stack.state); // do parent matching\r\n if (!rules) {\r\n throw monarchCommon.createError(this._lexer, 'tokenizer state is not defined: ' + state.stack.state);\r\n }\r\n }\r\n let popOffset = -1;\r\n let hasEmbeddedPopRule = false;\r\n for (const rule of rules) {\r\n if (!monarchCommon.isIAction(rule.action) || rule.action.nextEmbedded !== '@pop') {\r\n continue;\r\n }\r\n hasEmbeddedPopRule = true;\r\n let regex = rule.regex;\r\n let regexSource = rule.regex.source;\r\n if (regexSource.substr(0, 4) === '^(?:' && regexSource.substr(regexSource.length - 1, 1) === ')') {\r\n let flags = (regex.ignoreCase ? 'i' : '') + (regex.unicode ? 'u' : '');\r\n regex = new RegExp(regexSource.substr(4, regexSource.length - 5), flags);\r\n }\r\n let result = line.search(regex);\r\n if (result === -1 || (result !== 0 && rule.matchOnlyAtLineStart)) {\r\n continue;\r\n }\r\n if (popOffset === -1 || result < popOffset) {\r\n popOffset = result;\r\n }\r\n }\r\n if (!hasEmbeddedPopRule) {\r\n throw monarchCommon.createError(this._lexer, 'no rule containing nextEmbedded: \"@pop\" in tokenizer embedded state: ' + state.stack.state);\r\n }\r\n return popOffset;\r\n }\r\n _nestedTokenize(line, hasEOL, lineState, offsetDelta, tokensCollector) {\r\n let popOffset = this._findLeavingNestedModeOffset(line, lineState);\r\n if (popOffset === -1) {\r\n // tokenization will not leave nested mode\r\n let nestedEndState = tokensCollector.nestedModeTokenize(line, hasEOL, lineState.embeddedModeData, offsetDelta);\r\n return MonarchLineStateFactory.create(lineState.stack, new EmbeddedModeData(lineState.embeddedModeData.modeId, nestedEndState));\r\n }\r\n let nestedModeLine = line.substring(0, popOffset);\r\n if (nestedModeLine.length > 0) {\r\n // tokenize with the nested mode\r\n tokensCollector.nestedModeTokenize(nestedModeLine, false, lineState.embeddedModeData, offsetDelta);\r\n }\r\n let restOfTheLine = line.substring(popOffset);\r\n return this._myTokenize(restOfTheLine, hasEOL, lineState, offsetDelta + popOffset, tokensCollector);\r\n }\r\n _safeRuleName(rule) {\r\n if (rule) {\r\n return rule.name;\r\n }\r\n return '(unknown)';\r\n }\r\n _myTokenize(lineWithoutLF, hasEOL, lineState, offsetDelta, tokensCollector) {\r\n tokensCollector.enterMode(offsetDelta, this._modeId);\r\n const lineWithoutLFLength = lineWithoutLF.length;\r\n const line = (hasEOL && this._lexer.includeLF ? lineWithoutLF + '\\n' : lineWithoutLF);\r\n const lineLength = line.length;\r\n let embeddedModeData = lineState.embeddedModeData;\r\n let stack = lineState.stack;\r\n let pos = 0;\r\n let groupMatching = null;\r\n // See https://github.com/microsoft/monaco-editor/issues/1235\r\n // Evaluate rules at least once for an empty line\r\n let forceEvaluation = true;\r\n while (forceEvaluation || pos < lineLength) {\r\n const pos0 = pos;\r\n const stackLen0 = stack.depth;\r\n const groupLen0 = groupMatching ? groupMatching.groups.length : 0;\r\n const state = stack.state;\r\n let matches = null;\r\n let matched = null;\r\n let action = null;\r\n let rule = null;\r\n let enteringEmbeddedMode = null;\r\n // check if we need to process group matches first\r\n if (groupMatching) {\r\n matches = groupMatching.matches;\r\n const groupEntry = groupMatching.groups.shift();\r\n matched = groupEntry.matched;\r\n action = groupEntry.action;\r\n rule = groupMatching.rule;\r\n // cleanup if necessary\r\n if (groupMatching.groups.length === 0) {\r\n groupMatching = null;\r\n }\r\n }\r\n else {\r\n // otherwise we match on the token stream\r\n if (!forceEvaluation && pos >= lineLength) {\r\n // nothing to do\r\n break;\r\n }\r\n forceEvaluation = false;\r\n // get the rules for this state\r\n let rules = this._lexer.tokenizer[state];\r\n if (!rules) {\r\n rules = monarchCommon.findRules(this._lexer, state); // do parent matching\r\n if (!rules) {\r\n throw monarchCommon.createError(this._lexer, 'tokenizer state is not defined: ' + state);\r\n }\r\n }\r\n // try each rule until we match\r\n let restOfLine = line.substr(pos);\r\n for (const rule of rules) {\r\n if (pos === 0 || !rule.matchOnlyAtLineStart) {\r\n matches = restOfLine.match(rule.regex);\r\n if (matches) {\r\n matched = matches[0];\r\n action = rule.action;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n // We matched 'rule' with 'matches' and 'action'\r\n if (!matches) {\r\n matches = [''];\r\n matched = '';\r\n }\r\n if (!action) {\r\n // bad: we didn't match anything, and there is no action to take\r\n // we need to advance the stream or we get progress trouble\r\n if (pos < lineLength) {\r\n matches = [line.charAt(pos)];\r\n matched = matches[0];\r\n }\r\n action = this._lexer.defaultToken;\r\n }\r\n if (matched === null) {\r\n // should never happen, needed for strict null checking\r\n break;\r\n }\r\n // advance stream\r\n pos += matched.length;\r\n // maybe call action function (used for 'cases')\r\n while (monarchCommon.isFuzzyAction(action) && monarchCommon.isIAction(action) && action.test) {\r\n action = action.test(matched, matches, state, pos === lineLength);\r\n }\r\n let result = null;\r\n // set the result: either a string or an array of actions\r\n if (typeof action === 'string' || Array.isArray(action)) {\r\n result = action;\r\n }\r\n else if (action.group) {\r\n result = action.group;\r\n }\r\n else if (action.token !== null && action.token !== undefined) {\r\n // do $n replacements?\r\n if (action.tokenSubst) {\r\n result = monarchCommon.substituteMatches(this._lexer, action.token, matched, matches, state);\r\n }\r\n else {\r\n result = action.token;\r\n }\r\n // enter embedded mode?\r\n if (action.nextEmbedded) {\r\n if (action.nextEmbedded === '@pop') {\r\n if (!embeddedModeData) {\r\n throw monarchCommon.createError(this._lexer, 'cannot pop embedded mode if not inside one');\r\n }\r\n embeddedModeData = null;\r\n }\r\n else if (embeddedModeData) {\r\n throw monarchCommon.createError(this._lexer, 'cannot enter embedded mode from within an embedded mode');\r\n }\r\n else {\r\n enteringEmbeddedMode = monarchCommon.substituteMatches(this._lexer, action.nextEmbedded, matched, matches, state);\r\n }\r\n }\r\n // state transformations\r\n if (action.goBack) { // back up the stream..\r\n pos = Math.max(0, pos - action.goBack);\r\n }\r\n if (action.switchTo && typeof action.switchTo === 'string') {\r\n let nextState = monarchCommon.substituteMatches(this._lexer, action.switchTo, matched, matches, state); // switch state without a push...\r\n if (nextState[0] === '@') {\r\n nextState = nextState.substr(1); // peel off starting '@'\r\n }\r\n if (!monarchCommon.findRules(this._lexer, nextState)) {\r\n throw monarchCommon.createError(this._lexer, 'trying to switch to a state \\'' + nextState + '\\' that is undefined in rule: ' + this._safeRuleName(rule));\r\n }\r\n else {\r\n stack = stack.switchTo(nextState);\r\n }\r\n }\r\n else if (action.transform && typeof action.transform === 'function') {\r\n throw monarchCommon.createError(this._lexer, 'action.transform not supported');\r\n }\r\n else if (action.next) {\r\n if (action.next === '@push') {\r\n if (stack.depth >= this._lexer.maxStack) {\r\n throw monarchCommon.createError(this._lexer, 'maximum tokenizer stack size reached: [' +\r\n stack.state + ',' + stack.parent.state + ',...]');\r\n }\r\n else {\r\n stack = stack.push(state);\r\n }\r\n }\r\n else if (action.next === '@pop') {\r\n if (stack.depth <= 1) {\r\n throw monarchCommon.createError(this._lexer, 'trying to pop an empty stack in rule: ' + this._safeRuleName(rule));\r\n }\r\n else {\r\n stack = stack.pop();\r\n }\r\n }\r\n else if (action.next === '@popall') {\r\n stack = stack.popall();\r\n }\r\n else {\r\n let nextState = monarchCommon.substituteMatches(this._lexer, action.next, matched, matches, state);\r\n if (nextState[0] === '@') {\r\n nextState = nextState.substr(1); // peel off starting '@'\r\n }\r\n if (!monarchCommon.findRules(this._lexer, nextState)) {\r\n throw monarchCommon.createError(this._lexer, 'trying to set a next state \\'' + nextState + '\\' that is undefined in rule: ' + this._safeRuleName(rule));\r\n }\r\n else {\r\n stack = stack.push(nextState);\r\n }\r\n }\r\n }\r\n if (action.log && typeof (action.log) === 'string') {\r\n monarchCommon.log(this._lexer, this._lexer.languageId + ': ' + monarchCommon.substituteMatches(this._lexer, action.log, matched, matches, state));\r\n }\r\n }\r\n // check result\r\n if (result === null) {\r\n throw monarchCommon.createError(this._lexer, 'lexer rule has no well-defined action in rule: ' + this._safeRuleName(rule));\r\n }\r\n const computeNewStateForEmbeddedMode = (enteringEmbeddedMode) => {\r\n // substitute language alias to known modes to support syntax highlighting\r\n let enteringEmbeddedModeId = this._modeService.getModeIdForLanguageName(enteringEmbeddedMode);\r\n if (enteringEmbeddedModeId) {\r\n enteringEmbeddedMode = enteringEmbeddedModeId;\r\n }\r\n const embeddedModeData = this._getNestedEmbeddedModeData(enteringEmbeddedMode);\r\n if (pos < lineLength) {\r\n // there is content from the embedded mode on this line\r\n const restOfLine = lineWithoutLF.substr(pos);\r\n return this._nestedTokenize(restOfLine, hasEOL, MonarchLineStateFactory.create(stack, embeddedModeData), offsetDelta + pos, tokensCollector);\r\n }\r\n else {\r\n return MonarchLineStateFactory.create(stack, embeddedModeData);\r\n }\r\n };\r\n // is the result a group match?\r\n if (Array.isArray(result)) {\r\n if (groupMatching && groupMatching.groups.length > 0) {\r\n throw monarchCommon.createError(this._lexer, 'groups cannot be nested: ' + this._safeRuleName(rule));\r\n }\r\n if (matches.length !== result.length + 1) {\r\n throw monarchCommon.createError(this._lexer, 'matched number of groups does not match the number of actions in rule: ' + this._safeRuleName(rule));\r\n }\r\n let totalLen = 0;\r\n for (let i = 1; i < matches.length; i++) {\r\n totalLen += matches[i].length;\r\n }\r\n if (totalLen !== matched.length) {\r\n throw monarchCommon.createError(this._lexer, 'with groups, all characters should be matched in consecutive groups in rule: ' + this._safeRuleName(rule));\r\n }\r\n groupMatching = {\r\n rule: rule,\r\n matches: matches,\r\n groups: []\r\n };\r\n for (let i = 0; i < result.length; i++) {\r\n groupMatching.groups[i] = {\r\n action: result[i],\r\n matched: matches[i + 1]\r\n };\r\n }\r\n pos -= matched.length;\r\n // call recursively to initiate first result match\r\n continue;\r\n }\r\n else {\r\n // regular result\r\n // check for '@rematch'\r\n if (result === '@rematch') {\r\n pos -= matched.length;\r\n matched = ''; // better set the next state too..\r\n matches = null;\r\n result = '';\r\n // Even though `@rematch` was specified, if `nextEmbedded` also specified,\r\n // a state transition should occur.\r\n if (enteringEmbeddedMode !== null) {\r\n return computeNewStateForEmbeddedMode(enteringEmbeddedMode);\r\n }\r\n }\r\n // check progress\r\n if (matched.length === 0) {\r\n if (lineLength === 0 || stackLen0 !== stack.depth || state !== stack.state || (!groupMatching ? 0 : groupMatching.groups.length) !== groupLen0) {\r\n continue;\r\n }\r\n else {\r\n throw monarchCommon.createError(this._lexer, 'no progress in tokenizer in rule: ' + this._safeRuleName(rule));\r\n }\r\n }\r\n // return the result (and check for brace matching)\r\n // todo: for efficiency we could pre-sanitize tokenPostfix and substitutions\r\n let tokenType = null;\r\n if (monarchCommon.isString(result) && result.indexOf('@brackets') === 0) {\r\n let rest = result.substr('@brackets'.length);\r\n let bracket = findBracket(this._lexer, matched);\r\n if (!bracket) {\r\n throw monarchCommon.createError(this._lexer, '@brackets token returned but no bracket defined as: ' + matched);\r\n }\r\n tokenType = monarchCommon.sanitize(bracket.token + rest);\r\n }\r\n else {\r\n let token = (result === '' ? '' : result + this._lexer.tokenPostfix);\r\n tokenType = monarchCommon.sanitize(token);\r\n }\r\n if (pos0 < lineWithoutLFLength) {\r\n tokensCollector.emit(pos0 + offsetDelta, tokenType);\r\n }\r\n }\r\n if (enteringEmbeddedMode !== null) {\r\n return computeNewStateForEmbeddedMode(enteringEmbeddedMode);\r\n }\r\n }\r\n return MonarchLineStateFactory.create(stack, embeddedModeData);\r\n }\r\n _getNestedEmbeddedModeData(mimetypeOrModeId) {\r\n let nestedModeId = this._locateMode(mimetypeOrModeId);\r\n if (nestedModeId) {\r\n let tokenizationSupport = modes.TokenizationRegistry.get(nestedModeId);\r\n if (tokenizationSupport) {\r\n return new EmbeddedModeData(nestedModeId, tokenizationSupport.getInitialState());\r\n }\r\n }\r\n return new EmbeddedModeData(nestedModeId || NULL_MODE_ID, NULL_STATE);\r\n }\r\n _locateMode(mimetypeOrModeId) {\r\n if (!mimetypeOrModeId || !this._modeService.isRegisteredMode(mimetypeOrModeId)) {\r\n return null;\r\n }\r\n if (mimetypeOrModeId === this._modeId) {\r\n // embedding myself...\r\n return mimetypeOrModeId;\r\n }\r\n let modeId = this._modeService.getModeId(mimetypeOrModeId);\r\n if (modeId) {\r\n // Fire mode loading event\r\n this._modeService.triggerMode(modeId);\r\n this._embeddedModes[modeId] = true;\r\n }\r\n return modeId;\r\n }\r\n}\r\n/**\r\n * Searches for a bracket in the 'brackets' attribute that matches the input.\r\n */\r\nfunction findBracket(lexer, matched) {\r\n if (!matched) {\r\n return null;\r\n }\r\n matched = monarchCommon.fixCase(lexer, matched);\r\n let brackets = lexer.brackets;\r\n for (const bracket of brackets) {\r\n if (bracket.open === matched) {\r\n return { token: bracket.token, bracketType: 1 /* Open */ };\r\n }\r\n else if (bracket.close === matched) {\r\n return { token: bracket.token, bracketType: -1 /* Close */ };\r\n }\r\n }\r\n return null;\r\n}\r\nexport function createTokenizationSupport(modeService, standaloneThemeService, modeId, lexer) {\r\n return new MonarchTokenizer(modeService, standaloneThemeService, modeId, lexer);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar _a;\r\nimport { TimeoutTimer } from '../../../base/common/async.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { LineTokens } from '../../common/core/lineTokens.js';\r\nimport { TokenizationRegistry } from '../../common/modes.js';\r\nimport { RenderLineInput, renderViewLine2 as renderViewLine } from '../../common/viewLayout/viewLineRenderer.js';\r\nimport { ViewLineRenderingData } from '../../common/viewModel/viewModel.js';\r\nimport { MonarchTokenizer } from '../common/monarch/monarchLexer.js';\r\nconst ttPolicy = (_a = window.trustedTypes) === null || _a === void 0 ? void 0 : _a.createPolicy('standaloneColorizer', { createHTML: value => value });\r\nexport class Colorizer {\r\n static colorizeElement(themeService, modeService, domNode, options) {\r\n options = options || {};\r\n let theme = options.theme || 'vs';\r\n let mimeType = options.mimeType || domNode.getAttribute('lang') || domNode.getAttribute('data-lang');\r\n if (!mimeType) {\r\n console.error('Mode not detected');\r\n return Promise.resolve();\r\n }\r\n themeService.setTheme(theme);\r\n let text = domNode.firstChild ? domNode.firstChild.nodeValue : '';\r\n domNode.className += ' ' + theme;\r\n let render = (str) => {\r\n var _a;\r\n const trustedhtml = (_a = ttPolicy === null || ttPolicy === void 0 ? void 0 : ttPolicy.createHTML(str)) !== null && _a !== void 0 ? _a : str;\r\n domNode.innerHTML = trustedhtml;\r\n };\r\n return this.colorize(modeService, text || '', mimeType, options).then(render, (err) => console.error(err));\r\n }\r\n static colorize(modeService, text, mimeType, options) {\r\n let tabSize = 4;\r\n if (options && typeof options.tabSize === 'number') {\r\n tabSize = options.tabSize;\r\n }\r\n if (strings.startsWithUTF8BOM(text)) {\r\n text = text.substr(1);\r\n }\r\n let lines = strings.splitLines(text);\r\n let language = modeService.getModeId(mimeType);\r\n if (!language) {\r\n return Promise.resolve(_fakeColorize(lines, tabSize));\r\n }\r\n // Send out the event to create the mode\r\n modeService.triggerMode(language);\r\n const tokenizationSupport = TokenizationRegistry.get(language);\r\n if (tokenizationSupport) {\r\n return _colorize(lines, tabSize, tokenizationSupport);\r\n }\r\n const tokenizationSupportPromise = TokenizationRegistry.getPromise(language);\r\n if (tokenizationSupportPromise) {\r\n // A tokenizer will be registered soon\r\n return new Promise((resolve, reject) => {\r\n tokenizationSupportPromise.then(tokenizationSupport => {\r\n _colorize(lines, tabSize, tokenizationSupport).then(resolve, reject);\r\n }, reject);\r\n });\r\n }\r\n return new Promise((resolve, reject) => {\r\n let listener = null;\r\n let timeout = null;\r\n const execute = () => {\r\n if (listener) {\r\n listener.dispose();\r\n listener = null;\r\n }\r\n if (timeout) {\r\n timeout.dispose();\r\n timeout = null;\r\n }\r\n const tokenizationSupport = TokenizationRegistry.get(language);\r\n if (tokenizationSupport) {\r\n _colorize(lines, tabSize, tokenizationSupport).then(resolve, reject);\r\n return;\r\n }\r\n resolve(_fakeColorize(lines, tabSize));\r\n };\r\n // wait 500ms for mode to load, then give up\r\n timeout = new TimeoutTimer();\r\n timeout.cancelAndSet(execute, 500);\r\n listener = TokenizationRegistry.onDidChange((e) => {\r\n if (e.changedLanguages.indexOf(language) >= 0) {\r\n execute();\r\n }\r\n });\r\n });\r\n }\r\n static colorizeLine(line, mightContainNonBasicASCII, mightContainRTL, tokens, tabSize = 4) {\r\n const isBasicASCII = ViewLineRenderingData.isBasicASCII(line, mightContainNonBasicASCII);\r\n const containsRTL = ViewLineRenderingData.containsRTL(line, isBasicASCII, mightContainRTL);\r\n let renderResult = renderViewLine(new RenderLineInput(false, true, line, false, isBasicASCII, containsRTL, 0, tokens, [], tabSize, 0, 0, 0, 0, -1, 'none', false, false, null));\r\n return renderResult.html;\r\n }\r\n static colorizeModelLine(model, lineNumber, tabSize = 4) {\r\n let content = model.getLineContent(lineNumber);\r\n model.forceTokenization(lineNumber);\r\n let tokens = model.getLineTokens(lineNumber);\r\n let inflatedTokens = tokens.inflate();\r\n return this.colorizeLine(content, model.mightContainNonBasicASCII(), model.mightContainRTL(), inflatedTokens, tabSize);\r\n }\r\n}\r\nfunction _colorize(lines, tabSize, tokenizationSupport) {\r\n return new Promise((c, e) => {\r\n const execute = () => {\r\n const result = _actualColorize(lines, tabSize, tokenizationSupport);\r\n if (tokenizationSupport instanceof MonarchTokenizer) {\r\n const status = tokenizationSupport.getLoadStatus();\r\n if (status.loaded === false) {\r\n status.promise.then(execute, e);\r\n return;\r\n }\r\n }\r\n c(result);\r\n };\r\n execute();\r\n });\r\n}\r\nfunction _fakeColorize(lines, tabSize) {\r\n let html = [];\r\n const defaultMetadata = ((0 /* None */ << 11 /* FONT_STYLE_OFFSET */)\r\n | (1 /* DefaultForeground */ << 14 /* FOREGROUND_OFFSET */)\r\n | (2 /* DefaultBackground */ << 23 /* BACKGROUND_OFFSET */)) >>> 0;\r\n const tokens = new Uint32Array(2);\r\n tokens[0] = 0;\r\n tokens[1] = defaultMetadata;\r\n for (let i = 0, length = lines.length; i < length; i++) {\r\n let line = lines[i];\r\n tokens[0] = line.length;\r\n const lineTokens = new LineTokens(tokens, line);\r\n const isBasicASCII = ViewLineRenderingData.isBasicASCII(line, /* check for basic ASCII */ true);\r\n const containsRTL = ViewLineRenderingData.containsRTL(line, isBasicASCII, /* check for RTL */ true);\r\n let renderResult = renderViewLine(new RenderLineInput(false, true, line, false, isBasicASCII, containsRTL, 0, lineTokens, [], tabSize, 0, 0, 0, 0, -1, 'none', false, false, null));\r\n html = html.concat(renderResult.html);\r\n html.push('
');\r\n }\r\n return html.join('');\r\n}\r\nfunction _actualColorize(lines, tabSize, tokenizationSupport) {\r\n let html = [];\r\n let state = tokenizationSupport.getInitialState();\r\n for (let i = 0, length = lines.length; i < length; i++) {\r\n let line = lines[i];\r\n let tokenizeResult = tokenizationSupport.tokenize2(line, true, state, 0);\r\n LineTokens.convertToEndOffset(tokenizeResult.tokens, line.length);\r\n let lineTokens = new LineTokens(tokenizeResult.tokens, line);\r\n const isBasicASCII = ViewLineRenderingData.isBasicASCII(line, /* check for basic ASCII */ true);\r\n const containsRTL = ViewLineRenderingData.containsRTL(line, isBasicASCII, /* check for RTL */ true);\r\n let renderResult = renderViewLine(new RenderLineInput(false, true, line, false, isBasicASCII, containsRTL, 0, lineTokens.inflate(), [], tabSize, 0, 0, 0, 0, -1, 'none', false, false, null));\r\n html = html.concat(renderResult.html);\r\n html.push('
');\r\n state = tokenizeResult.endState;\r\n }\r\n return html.join('');\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from './strings.js';\r\nvar Severity;\r\n(function (Severity) {\r\n Severity[Severity[\"Ignore\"] = 0] = \"Ignore\";\r\n Severity[Severity[\"Info\"] = 1] = \"Info\";\r\n Severity[Severity[\"Warning\"] = 2] = \"Warning\";\r\n Severity[Severity[\"Error\"] = 3] = \"Error\";\r\n})(Severity || (Severity = {}));\r\n(function (Severity) {\r\n const _error = 'error';\r\n const _warning = 'warning';\r\n const _warn = 'warn';\r\n const _info = 'info';\r\n const _ignore = 'ignore';\r\n /**\r\n * Parses 'error', 'warning', 'warn', 'info' in call casings\r\n * and falls back to ignore.\r\n */\r\n function fromValue(value) {\r\n if (!value) {\r\n return Severity.Ignore;\r\n }\r\n if (strings.equalsIgnoreCase(_error, value)) {\r\n return Severity.Error;\r\n }\r\n if (strings.equalsIgnoreCase(_warning, value) || strings.equalsIgnoreCase(_warn, value)) {\r\n return Severity.Warning;\r\n }\r\n if (strings.equalsIgnoreCase(_info, value)) {\r\n return Severity.Info;\r\n }\r\n return Severity.Ignore;\r\n }\r\n Severity.fromValue = fromValue;\r\n function toString(severity) {\r\n switch (severity) {\r\n case Severity.Error: return _error;\r\n case Severity.Warning: return _warning;\r\n case Severity.Info: return _info;\r\n default: return _ignore;\r\n }\r\n }\r\n Severity.toString = toString;\r\n})(Severity || (Severity = {}));\r\nexport default Severity;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as editorCommon from '../common/editorCommon.js';\r\n/**\r\n *@internal\r\n */\r\nexport function isCodeEditor(thing) {\r\n if (thing && typeof thing.getEditorType === 'function') {\r\n return thing.getEditorType() === editorCommon.EditorType.ICodeEditor;\r\n }\r\n else {\r\n return false;\r\n }\r\n}\r\n/**\r\n *@internal\r\n */\r\nexport function isDiffEditor(thing) {\r\n if (thing && typeof thing.getEditorType === 'function') {\r\n return thing.getEditorType() === editorCommon.EditorType.IDiffEditor;\r\n }\r\n else {\r\n return false;\r\n }\r\n}\r\n/**\r\n *@internal\r\n */\r\nexport function getCodeEditor(thing) {\r\n if (isCodeEditor(thing)) {\r\n return thing;\r\n }\r\n if (isDiffEditor(thing)) {\r\n return thing.getModifiedEditor();\r\n }\r\n return null;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { isObject } from '../../../base/common/types.js';\r\nexport const IBulkEditService = createDecorator('IWorkspaceEditService');\r\nfunction isWorkspaceFileEdit(thing) {\r\n return isObject(thing) && (Boolean(thing.newUri) || Boolean(thing.oldUri));\r\n}\r\nfunction isWorkspaceTextEdit(thing) {\r\n return isObject(thing) && URI.isUri(thing.resource) && isObject(thing.edit);\r\n}\r\nexport class ResourceEdit {\r\n constructor(metadata) {\r\n this.metadata = metadata;\r\n }\r\n static convert(edit) {\r\n return edit.edits.map(edit => {\r\n if (isWorkspaceTextEdit(edit)) {\r\n return new ResourceTextEdit(edit.resource, edit.edit, edit.modelVersionId, edit.metadata);\r\n }\r\n if (isWorkspaceFileEdit(edit)) {\r\n return new ResourceFileEdit(edit.oldUri, edit.newUri, edit.options, edit.metadata);\r\n }\r\n throw new Error('Unsupported edit');\r\n });\r\n }\r\n}\r\nexport class ResourceTextEdit extends ResourceEdit {\r\n constructor(resource, textEdit, versionId, metadata) {\r\n super(metadata);\r\n this.resource = resource;\r\n this.textEdit = textEdit;\r\n this.versionId = versionId;\r\n }\r\n}\r\nexport class ResourceFileEdit extends ResourceEdit {\r\n constructor(oldResource, newResource, options, metadata) {\r\n super(metadata);\r\n this.oldResource = oldResource;\r\n this.newResource = newResource;\r\n this.options = options;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as Types from '../../../base/common/types.js';\r\nimport * as Assert from '../../../base/common/assert.js';\r\nclass RegistryImpl {\r\n constructor() {\r\n this.data = new Map();\r\n }\r\n add(id, data) {\r\n Assert.ok(Types.isString(id));\r\n Assert.ok(Types.isObject(data));\r\n Assert.ok(!this.data.has(id), 'There is already an extension with this id');\r\n this.data.set(id, data);\r\n }\r\n as(id) {\r\n return this.data.get(id) || null;\r\n }\r\n}\r\nexport const Registry = new RegistryImpl();\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as platform from '../../registry/common/platform.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nexport const Extensions = {\r\n JSONContribution: 'base.contributions.json'\r\n};\r\nfunction normalizeId(id) {\r\n if (id.length > 0 && id.charAt(id.length - 1) === '#') {\r\n return id.substring(0, id.length - 1);\r\n }\r\n return id;\r\n}\r\nclass JSONContributionRegistry {\r\n constructor() {\r\n this._onDidChangeSchema = new Emitter();\r\n this.schemasById = {};\r\n }\r\n registerSchema(uri, unresolvedSchemaContent) {\r\n this.schemasById[normalizeId(uri)] = unresolvedSchemaContent;\r\n this._onDidChangeSchema.fire(uri);\r\n }\r\n notifySchemaChanged(uri) {\r\n this._onDidChangeSchema.fire(uri);\r\n }\r\n}\r\nconst jsonContributionRegistry = new JSONContributionRegistry();\r\nplatform.Registry.add(Extensions.JSONContribution, jsonContributionRegistry);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Registry } from '../../registry/common/platform.js';\r\nimport * as types from '../../../base/common/types.js';\r\nimport { Extensions as JSONExtensions } from '../../jsonschemas/common/jsonContributionRegistry.js';\r\nexport const Extensions = {\r\n Configuration: 'base.contributions.configuration'\r\n};\r\nexport const allSettings = { properties: {}, patternProperties: {} };\r\nexport const applicationSettings = { properties: {}, patternProperties: {} };\r\nexport const machineSettings = { properties: {}, patternProperties: {} };\r\nexport const machineOverridableSettings = { properties: {}, patternProperties: {} };\r\nexport const windowSettings = { properties: {}, patternProperties: {} };\r\nexport const resourceSettings = { properties: {}, patternProperties: {} };\r\nexport const resourceLanguageSettingsSchemaId = 'vscode://schemas/settings/resourceLanguage';\r\nconst contributionRegistry = Registry.as(JSONExtensions.JSONContribution);\r\nclass ConfigurationRegistry {\r\n constructor() {\r\n this.overrideIdentifiers = new Set();\r\n this._onDidSchemaChange = new Emitter();\r\n this._onDidUpdateConfiguration = new Emitter();\r\n this.defaultValues = {};\r\n this.defaultLanguageConfigurationOverridesNode = {\r\n id: 'defaultOverrides',\r\n title: nls.localize('defaultLanguageConfigurationOverrides.title', \"Default Language Configuration Overrides\"),\r\n properties: {}\r\n };\r\n this.configurationContributors = [this.defaultLanguageConfigurationOverridesNode];\r\n this.resourceLanguageSettingsSchema = { properties: {}, patternProperties: {}, additionalProperties: false, errorMessage: 'Unknown editor configuration setting', allowTrailingCommas: true, allowComments: true };\r\n this.configurationProperties = {};\r\n this.excludedConfigurationProperties = {};\r\n contributionRegistry.registerSchema(resourceLanguageSettingsSchemaId, this.resourceLanguageSettingsSchema);\r\n }\r\n registerConfiguration(configuration, validate = true) {\r\n this.registerConfigurations([configuration], validate);\r\n }\r\n registerConfigurations(configurations, validate = true) {\r\n const properties = [];\r\n configurations.forEach(configuration => {\r\n properties.push(...this.validateAndRegisterProperties(configuration, validate, configuration.extensionInfo)); // fills in defaults\r\n this.configurationContributors.push(configuration);\r\n this.registerJSONConfiguration(configuration);\r\n });\r\n contributionRegistry.registerSchema(resourceLanguageSettingsSchemaId, this.resourceLanguageSettingsSchema);\r\n this._onDidSchemaChange.fire();\r\n this._onDidUpdateConfiguration.fire(properties);\r\n }\r\n registerOverrideIdentifiers(overrideIdentifiers) {\r\n for (const overrideIdentifier of overrideIdentifiers) {\r\n this.overrideIdentifiers.add(overrideIdentifier);\r\n }\r\n this.updateOverridePropertyPatternKey();\r\n }\r\n validateAndRegisterProperties(configuration, validate = true, extensionInfo, scope = 3 /* WINDOW */) {\r\n var _a;\r\n scope = types.isUndefinedOrNull(configuration.scope) ? scope : configuration.scope;\r\n let propertyKeys = [];\r\n let properties = configuration.properties;\r\n if (properties) {\r\n for (let key in properties) {\r\n if (validate && validateProperty(key)) {\r\n delete properties[key];\r\n continue;\r\n }\r\n const property = properties[key];\r\n // update default value\r\n this.updatePropertyDefaultValue(key, property);\r\n // update scope\r\n if (OVERRIDE_PROPERTY_PATTERN.test(key)) {\r\n property.scope = undefined; // No scope for overridable properties `[${identifier}]`\r\n }\r\n else {\r\n property.scope = types.isUndefinedOrNull(property.scope) ? scope : property.scope;\r\n property.restricted = types.isUndefinedOrNull(property.restricted) ? !!((_a = extensionInfo === null || extensionInfo === void 0 ? void 0 : extensionInfo.restrictedConfigurations) === null || _a === void 0 ? void 0 : _a.includes(key)) : property.restricted;\r\n }\r\n // Add to properties maps\r\n // Property is included by default if 'included' is unspecified\r\n if (properties[key].hasOwnProperty('included') && !properties[key].included) {\r\n this.excludedConfigurationProperties[key] = properties[key];\r\n delete properties[key];\r\n continue;\r\n }\r\n else {\r\n this.configurationProperties[key] = properties[key];\r\n }\r\n if (!properties[key].deprecationMessage && properties[key].markdownDeprecationMessage) {\r\n // If not set, default deprecationMessage to the markdown source\r\n properties[key].deprecationMessage = properties[key].markdownDeprecationMessage;\r\n }\r\n propertyKeys.push(key);\r\n }\r\n }\r\n let subNodes = configuration.allOf;\r\n if (subNodes) {\r\n for (let node of subNodes) {\r\n propertyKeys.push(...this.validateAndRegisterProperties(node, validate, extensionInfo, scope));\r\n }\r\n }\r\n return propertyKeys;\r\n }\r\n getConfigurationProperties() {\r\n return this.configurationProperties;\r\n }\r\n registerJSONConfiguration(configuration) {\r\n const register = (configuration) => {\r\n let properties = configuration.properties;\r\n if (properties) {\r\n for (const key in properties) {\r\n this.updateSchema(key, properties[key]);\r\n }\r\n }\r\n let subNodes = configuration.allOf;\r\n if (subNodes) {\r\n subNodes.forEach(register);\r\n }\r\n };\r\n register(configuration);\r\n }\r\n updateSchema(key, property) {\r\n allSettings.properties[key] = property;\r\n switch (property.scope) {\r\n case 1 /* APPLICATION */:\r\n applicationSettings.properties[key] = property;\r\n break;\r\n case 2 /* MACHINE */:\r\n machineSettings.properties[key] = property;\r\n break;\r\n case 6 /* MACHINE_OVERRIDABLE */:\r\n machineOverridableSettings.properties[key] = property;\r\n break;\r\n case 3 /* WINDOW */:\r\n windowSettings.properties[key] = property;\r\n break;\r\n case 4 /* RESOURCE */:\r\n resourceSettings.properties[key] = property;\r\n break;\r\n case 5 /* LANGUAGE_OVERRIDABLE */:\r\n resourceSettings.properties[key] = property;\r\n this.resourceLanguageSettingsSchema.properties[key] = property;\r\n break;\r\n }\r\n }\r\n updateOverridePropertyPatternKey() {\r\n for (const overrideIdentifier of this.overrideIdentifiers.values()) {\r\n const overrideIdentifierProperty = `[${overrideIdentifier}]`;\r\n const resourceLanguagePropertiesSchema = {\r\n type: 'object',\r\n description: nls.localize('overrideSettings.defaultDescription', \"Configure editor settings to be overridden for a language.\"),\r\n errorMessage: nls.localize('overrideSettings.errorMessage', \"This setting does not support per-language configuration.\"),\r\n $ref: resourceLanguageSettingsSchemaId,\r\n };\r\n this.updatePropertyDefaultValue(overrideIdentifierProperty, resourceLanguagePropertiesSchema);\r\n allSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\r\n applicationSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\r\n machineSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\r\n machineOverridableSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\r\n windowSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\r\n resourceSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\r\n }\r\n this._onDidSchemaChange.fire();\r\n }\r\n updatePropertyDefaultValue(key, property) {\r\n let defaultValue = this.defaultValues[key];\r\n if (types.isUndefined(defaultValue)) {\r\n defaultValue = property.default;\r\n }\r\n if (types.isUndefined(defaultValue)) {\r\n defaultValue = getDefaultValue(property.type);\r\n }\r\n property.default = defaultValue;\r\n }\r\n}\r\nconst OVERRIDE_PROPERTY = '\\\\[.*\\\\]$';\r\nexport const OVERRIDE_PROPERTY_PATTERN = new RegExp(OVERRIDE_PROPERTY);\r\nexport function overrideIdentifierFromKey(key) {\r\n return key.substring(1, key.length - 1);\r\n}\r\nexport function getDefaultValue(type) {\r\n const t = Array.isArray(type) ? type[0] : type;\r\n switch (t) {\r\n case 'boolean':\r\n return false;\r\n case 'integer':\r\n case 'number':\r\n return 0;\r\n case 'string':\r\n return '';\r\n case 'array':\r\n return [];\r\n case 'object':\r\n return {};\r\n default:\r\n return null;\r\n }\r\n}\r\nconst configurationRegistry = new ConfigurationRegistry();\r\nRegistry.add(Extensions.Configuration, configurationRegistry);\r\nexport function validateProperty(property) {\r\n if (!property.trim()) {\r\n return nls.localize('config.property.empty', \"Cannot register an empty property\");\r\n }\r\n if (OVERRIDE_PROPERTY_PATTERN.test(property)) {\r\n return nls.localize('config.property.languageDefault', \"Cannot register '{0}'. This matches property pattern '\\\\\\\\[.*\\\\\\\\]$' for describing language specific editor settings. Use 'configurationDefaults' contribution.\", property);\r\n }\r\n if (configurationRegistry.getConfigurationProperties()[property] !== undefined) {\r\n return nls.localize('config.property.duplicate', \"Cannot register '{0}'. This property is already registered.\", property);\r\n }\r\n return null;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\n/**\r\n * Iterates over each entry in the provided dictionary. The iterator allows\r\n * to remove elements and will stop when the callback returns {{false}}.\r\n */\r\nexport function forEach(from, callback) {\r\n for (let key in from) {\r\n if (hasOwnProperty.call(from, key)) {\r\n const result = callback({ key: key, value: from[key] }, function () {\r\n delete from[key];\r\n });\r\n if (result === false) {\r\n return;\r\n }\r\n }\r\n }\r\n}\r\nexport class SetMap {\r\n constructor() {\r\n this.map = new Map();\r\n }\r\n add(key, value) {\r\n let values = this.map.get(key);\r\n if (!values) {\r\n values = new Set();\r\n this.map.set(key, values);\r\n }\r\n values.add(value);\r\n }\r\n delete(key, value) {\r\n const values = this.map.get(key);\r\n if (!values) {\r\n return;\r\n }\r\n values.delete(value);\r\n if (values.size === 0) {\r\n this.map.delete(key);\r\n }\r\n }\r\n forEach(key, fn) {\r\n const values = this.map.get(key);\r\n if (!values) {\r\n return;\r\n }\r\n values.forEach(fn);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport * as objects from '../../../base/common/objects.js';\r\nimport * as arrays from '../../../base/common/arrays.js';\r\nimport { editorOptionsRegistry, ValidatedEditorOptions, ConfigurationChangedEvent, EDITOR_MODEL_DEFAULTS, ComputeOptionsMemory } from './editorOptions.js';\r\nimport { EditorZoom } from './editorZoom.js';\r\nimport { BareFontInfo } from './fontInfo.js';\r\nimport { Extensions } from '../../../platform/configuration/common/configurationRegistry.js';\r\nimport { Registry } from '../../../platform/registry/common/platform.js';\r\nimport { forEach } from '../../../base/common/collections.js';\r\nexport const TabFocus = new class {\r\n constructor() {\r\n this._tabFocus = false;\r\n this._onDidChangeTabFocus = new Emitter();\r\n this.onDidChangeTabFocus = this._onDidChangeTabFocus.event;\r\n }\r\n getTabFocusMode() {\r\n return this._tabFocus;\r\n }\r\n setTabFocusMode(tabFocusMode) {\r\n if (this._tabFocus === tabFocusMode) {\r\n return;\r\n }\r\n this._tabFocus = tabFocusMode;\r\n this._onDidChangeTabFocus.fire(this._tabFocus);\r\n }\r\n};\r\nconst hasOwnProperty = Object.hasOwnProperty;\r\nexport class ComputedEditorOptions {\r\n constructor() {\r\n this._values = [];\r\n }\r\n _read(id) {\r\n return this._values[id];\r\n }\r\n get(id) {\r\n return this._values[id];\r\n }\r\n _write(id, value) {\r\n this._values[id] = value;\r\n }\r\n}\r\nclass RawEditorOptions {\r\n constructor() {\r\n this._values = [];\r\n }\r\n _read(id) {\r\n return this._values[id];\r\n }\r\n _write(id, value) {\r\n this._values[id] = value;\r\n }\r\n}\r\nclass EditorConfiguration2 {\r\n static readOptions(_options) {\r\n const options = _options;\r\n const result = new RawEditorOptions();\r\n for (const editorOption of editorOptionsRegistry) {\r\n const value = (editorOption.name === '_never_' ? undefined : options[editorOption.name]);\r\n result._write(editorOption.id, value);\r\n }\r\n return result;\r\n }\r\n static validateOptions(options) {\r\n const result = new ValidatedEditorOptions();\r\n for (const editorOption of editorOptionsRegistry) {\r\n result._write(editorOption.id, editorOption.validate(options._read(editorOption.id)));\r\n }\r\n return result;\r\n }\r\n static computeOptions(options, env) {\r\n const result = new ComputedEditorOptions();\r\n for (const editorOption of editorOptionsRegistry) {\r\n result._write(editorOption.id, editorOption.compute(env, result, options._read(editorOption.id)));\r\n }\r\n return result;\r\n }\r\n static _deepEquals(a, b) {\r\n if (typeof a !== 'object' || typeof b !== 'object') {\r\n return (a === b);\r\n }\r\n if (Array.isArray(a) || Array.isArray(b)) {\r\n return (Array.isArray(a) && Array.isArray(b) ? arrays.equals(a, b) : false);\r\n }\r\n for (let key in a) {\r\n if (!EditorConfiguration2._deepEquals(a[key], b[key])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n static checkEquals(a, b) {\r\n const result = [];\r\n let somethingChanged = false;\r\n for (const editorOption of editorOptionsRegistry) {\r\n const changed = !EditorConfiguration2._deepEquals(a._read(editorOption.id), b._read(editorOption.id));\r\n result[editorOption.id] = changed;\r\n if (changed) {\r\n somethingChanged = true;\r\n }\r\n }\r\n return (somethingChanged ? new ConfigurationChangedEvent(result) : null);\r\n }\r\n}\r\n/**\r\n * Compatibility with old options\r\n */\r\nfunction migrateOptions(options) {\r\n const wordWrap = options.wordWrap;\r\n if (wordWrap === true) {\r\n options.wordWrap = 'on';\r\n }\r\n else if (wordWrap === false) {\r\n options.wordWrap = 'off';\r\n }\r\n const lineNumbers = options.lineNumbers;\r\n if (lineNumbers === true) {\r\n options.lineNumbers = 'on';\r\n }\r\n else if (lineNumbers === false) {\r\n options.lineNumbers = 'off';\r\n }\r\n const autoClosingBrackets = options.autoClosingBrackets;\r\n if (autoClosingBrackets === false) {\r\n options.autoClosingBrackets = 'never';\r\n options.autoClosingQuotes = 'never';\r\n options.autoSurround = 'never';\r\n }\r\n const cursorBlinking = options.cursorBlinking;\r\n if (cursorBlinking === 'visible') {\r\n options.cursorBlinking = 'solid';\r\n }\r\n const renderWhitespace = options.renderWhitespace;\r\n if (renderWhitespace === true) {\r\n options.renderWhitespace = 'boundary';\r\n }\r\n else if (renderWhitespace === false) {\r\n options.renderWhitespace = 'none';\r\n }\r\n const renderLineHighlight = options.renderLineHighlight;\r\n if (renderLineHighlight === true) {\r\n options.renderLineHighlight = 'line';\r\n }\r\n else if (renderLineHighlight === false) {\r\n options.renderLineHighlight = 'none';\r\n }\r\n const acceptSuggestionOnEnter = options.acceptSuggestionOnEnter;\r\n if (acceptSuggestionOnEnter === true) {\r\n options.acceptSuggestionOnEnter = 'on';\r\n }\r\n else if (acceptSuggestionOnEnter === false) {\r\n options.acceptSuggestionOnEnter = 'off';\r\n }\r\n const tabCompletion = options.tabCompletion;\r\n if (tabCompletion === false) {\r\n options.tabCompletion = 'off';\r\n }\r\n else if (tabCompletion === true) {\r\n options.tabCompletion = 'onlySnippets';\r\n }\r\n const suggest = options.suggest;\r\n if (suggest && typeof suggest.filteredTypes === 'object' && suggest.filteredTypes) {\r\n const mapping = {};\r\n mapping['method'] = 'showMethods';\r\n mapping['function'] = 'showFunctions';\r\n mapping['constructor'] = 'showConstructors';\r\n mapping['deprecated'] = 'showDeprecated';\r\n mapping['field'] = 'showFields';\r\n mapping['variable'] = 'showVariables';\r\n mapping['class'] = 'showClasses';\r\n mapping['struct'] = 'showStructs';\r\n mapping['interface'] = 'showInterfaces';\r\n mapping['module'] = 'showModules';\r\n mapping['property'] = 'showProperties';\r\n mapping['event'] = 'showEvents';\r\n mapping['operator'] = 'showOperators';\r\n mapping['unit'] = 'showUnits';\r\n mapping['value'] = 'showValues';\r\n mapping['constant'] = 'showConstants';\r\n mapping['enum'] = 'showEnums';\r\n mapping['enumMember'] = 'showEnumMembers';\r\n mapping['keyword'] = 'showKeywords';\r\n mapping['text'] = 'showWords';\r\n mapping['color'] = 'showColors';\r\n mapping['file'] = 'showFiles';\r\n mapping['reference'] = 'showReferences';\r\n mapping['folder'] = 'showFolders';\r\n mapping['typeParameter'] = 'showTypeParameters';\r\n mapping['snippet'] = 'showSnippets';\r\n forEach(mapping, entry => {\r\n const value = suggest.filteredTypes[entry.key];\r\n if (value === false) {\r\n suggest[entry.value] = value;\r\n }\r\n });\r\n // delete (suggest).filteredTypes;\r\n }\r\n const hover = options.hover;\r\n if (hover === true) {\r\n options.hover = {\r\n enabled: true\r\n };\r\n }\r\n else if (hover === false) {\r\n options.hover = {\r\n enabled: false\r\n };\r\n }\r\n const parameterHints = options.parameterHints;\r\n if (parameterHints === true) {\r\n options.parameterHints = {\r\n enabled: true\r\n };\r\n }\r\n else if (parameterHints === false) {\r\n options.parameterHints = {\r\n enabled: false\r\n };\r\n }\r\n const autoIndent = options.autoIndent;\r\n if (autoIndent === true) {\r\n options.autoIndent = 'full';\r\n }\r\n else if (autoIndent === false) {\r\n options.autoIndent = 'advanced';\r\n }\r\n const matchBrackets = options.matchBrackets;\r\n if (matchBrackets === true) {\r\n options.matchBrackets = 'always';\r\n }\r\n else if (matchBrackets === false) {\r\n options.matchBrackets = 'never';\r\n }\r\n}\r\nfunction deepCloneAndMigrateOptions(_options) {\r\n const options = objects.deepClone(_options);\r\n migrateOptions(options);\r\n return options;\r\n}\r\nexport class CommonEditorConfiguration extends Disposable {\r\n constructor(isSimpleWidget, _options) {\r\n super();\r\n this._onDidChange = this._register(new Emitter());\r\n this.onDidChange = this._onDidChange.event;\r\n this._onDidChangeFast = this._register(new Emitter());\r\n this.onDidChangeFast = this._onDidChangeFast.event;\r\n this.isSimpleWidget = isSimpleWidget;\r\n this._isDominatedByLongLines = false;\r\n this._computeOptionsMemory = new ComputeOptionsMemory();\r\n this._viewLineCount = 1;\r\n this._lineNumbersDigitCount = 1;\r\n this._rawOptions = deepCloneAndMigrateOptions(_options);\r\n this._readOptions = EditorConfiguration2.readOptions(this._rawOptions);\r\n this._validatedOptions = EditorConfiguration2.validateOptions(this._readOptions);\r\n this._register(EditorZoom.onDidChangeZoomLevel(_ => this._recomputeOptions()));\r\n this._register(TabFocus.onDidChangeTabFocus(_ => this._recomputeOptions()));\r\n }\r\n observeReferenceElement(dimension) {\r\n }\r\n updatePixelRatio() {\r\n }\r\n _recomputeOptions() {\r\n const oldOptions = this.options;\r\n const newOptions = this._computeInternalOptions();\r\n if (!oldOptions) {\r\n this.options = newOptions;\r\n }\r\n else {\r\n const changeEvent = EditorConfiguration2.checkEquals(oldOptions, newOptions);\r\n if (changeEvent === null) {\r\n // nothing changed!\r\n return;\r\n }\r\n this.options = newOptions;\r\n this._onDidChangeFast.fire(changeEvent);\r\n this._onDidChange.fire(changeEvent);\r\n }\r\n }\r\n getRawOptions() {\r\n return this._rawOptions;\r\n }\r\n _computeInternalOptions() {\r\n const partialEnv = this._getEnvConfiguration();\r\n const bareFontInfo = BareFontInfo.createFromValidatedSettings(this._validatedOptions, partialEnv.zoomLevel, partialEnv.pixelRatio, this.isSimpleWidget);\r\n const env = {\r\n memory: this._computeOptionsMemory,\r\n outerWidth: partialEnv.outerWidth,\r\n outerHeight: partialEnv.outerHeight,\r\n fontInfo: this.readConfiguration(bareFontInfo),\r\n extraEditorClassName: partialEnv.extraEditorClassName,\r\n isDominatedByLongLines: this._isDominatedByLongLines,\r\n viewLineCount: this._viewLineCount,\r\n lineNumbersDigitCount: this._lineNumbersDigitCount,\r\n emptySelectionClipboard: partialEnv.emptySelectionClipboard,\r\n pixelRatio: partialEnv.pixelRatio,\r\n tabFocusMode: TabFocus.getTabFocusMode(),\r\n accessibilitySupport: partialEnv.accessibilitySupport\r\n };\r\n return EditorConfiguration2.computeOptions(this._validatedOptions, env);\r\n }\r\n static _subsetEquals(base, subset) {\r\n for (const key in subset) {\r\n if (hasOwnProperty.call(subset, key)) {\r\n const subsetValue = subset[key];\r\n const baseValue = base[key];\r\n if (baseValue === subsetValue) {\r\n continue;\r\n }\r\n if (Array.isArray(baseValue) && Array.isArray(subsetValue)) {\r\n if (!arrays.equals(baseValue, subsetValue)) {\r\n return false;\r\n }\r\n continue;\r\n }\r\n if (baseValue && typeof baseValue === 'object' && subsetValue && typeof subsetValue === 'object') {\r\n if (!this._subsetEquals(baseValue, subsetValue)) {\r\n return false;\r\n }\r\n continue;\r\n }\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n updateOptions(_newOptions) {\r\n if (typeof _newOptions === 'undefined') {\r\n return;\r\n }\r\n const newOptions = deepCloneAndMigrateOptions(_newOptions);\r\n if (CommonEditorConfiguration._subsetEquals(this._rawOptions, newOptions)) {\r\n return;\r\n }\r\n this._rawOptions = objects.mixin(this._rawOptions, newOptions || {});\r\n this._readOptions = EditorConfiguration2.readOptions(this._rawOptions);\r\n this._validatedOptions = EditorConfiguration2.validateOptions(this._readOptions);\r\n this._recomputeOptions();\r\n }\r\n setIsDominatedByLongLines(isDominatedByLongLines) {\r\n this._isDominatedByLongLines = isDominatedByLongLines;\r\n this._recomputeOptions();\r\n }\r\n setMaxLineNumber(maxLineNumber) {\r\n const lineNumbersDigitCount = CommonEditorConfiguration._digitCount(maxLineNumber);\r\n if (this._lineNumbersDigitCount === lineNumbersDigitCount) {\r\n return;\r\n }\r\n this._lineNumbersDigitCount = lineNumbersDigitCount;\r\n this._recomputeOptions();\r\n }\r\n setViewLineCount(viewLineCount) {\r\n if (this._viewLineCount === viewLineCount) {\r\n return;\r\n }\r\n this._viewLineCount = viewLineCount;\r\n this._recomputeOptions();\r\n }\r\n static _digitCount(n) {\r\n let r = 0;\r\n while (n) {\r\n n = Math.floor(n / 10);\r\n r++;\r\n }\r\n return r ? r : 1;\r\n }\r\n}\r\nexport const editorConfigurationBaseNode = Object.freeze({\r\n id: 'editor',\r\n order: 5,\r\n type: 'object',\r\n title: nls.localize('editorConfigurationTitle', \"Editor\"),\r\n scope: 5 /* LANGUAGE_OVERRIDABLE */,\r\n});\r\nconst configurationRegistry = Registry.as(Extensions.Configuration);\r\nconst editorConfiguration = Object.assign(Object.assign({}, editorConfigurationBaseNode), { properties: {\r\n 'editor.tabSize': {\r\n type: 'number',\r\n default: EDITOR_MODEL_DEFAULTS.tabSize,\r\n minimum: 1,\r\n markdownDescription: nls.localize('tabSize', \"The number of spaces a tab is equal to. This setting is overridden based on the file contents when `#editor.detectIndentation#` is on.\")\r\n },\r\n // 'editor.indentSize': {\r\n // \t'anyOf': [\r\n // \t\t{\r\n // \t\t\ttype: 'string',\r\n // \t\t\tenum: ['tabSize']\r\n // \t\t},\r\n // \t\t{\r\n // \t\t\ttype: 'number',\r\n // \t\t\tminimum: 1\r\n // \t\t}\r\n // \t],\r\n // \tdefault: 'tabSize',\r\n // \tmarkdownDescription: nls.localize('indentSize', \"The number of spaces used for indentation or 'tabSize' to use the value from `#editor.tabSize#`. This setting is overridden based on the file contents when `#editor.detectIndentation#` is on.\")\r\n // },\r\n 'editor.insertSpaces': {\r\n type: 'boolean',\r\n default: EDITOR_MODEL_DEFAULTS.insertSpaces,\r\n markdownDescription: nls.localize('insertSpaces', \"Insert spaces when pressing `Tab`. This setting is overridden based on the file contents when `#editor.detectIndentation#` is on.\")\r\n },\r\n 'editor.detectIndentation': {\r\n type: 'boolean',\r\n default: EDITOR_MODEL_DEFAULTS.detectIndentation,\r\n markdownDescription: nls.localize('detectIndentation', \"Controls whether `#editor.tabSize#` and `#editor.insertSpaces#` will be automatically detected when a file is opened based on the file contents.\")\r\n },\r\n 'editor.trimAutoWhitespace': {\r\n type: 'boolean',\r\n default: EDITOR_MODEL_DEFAULTS.trimAutoWhitespace,\r\n description: nls.localize('trimAutoWhitespace', \"Remove trailing auto inserted whitespace.\")\r\n },\r\n 'editor.largeFileOptimizations': {\r\n type: 'boolean',\r\n default: EDITOR_MODEL_DEFAULTS.largeFileOptimizations,\r\n description: nls.localize('largeFileOptimizations', \"Special handling for large files to disable certain memory intensive features.\")\r\n },\r\n 'editor.wordBasedSuggestions': {\r\n type: 'boolean',\r\n default: true,\r\n description: nls.localize('wordBasedSuggestions', \"Controls whether completions should be computed based on words in the document.\")\r\n },\r\n 'editor.wordBasedSuggestionsMode': {\r\n enum: ['currentDocument', 'matchingDocuments', 'allDocuments'],\r\n default: 'matchingDocuments',\r\n enumDescriptions: [\r\n nls.localize('wordBasedSuggestionsMode.currentDocument', 'Only suggest words from the active document.'),\r\n nls.localize('wordBasedSuggestionsMode.matchingDocuments', 'Suggest words from all open documents of the same language.'),\r\n nls.localize('wordBasedSuggestionsMode.allDocuments', 'Suggest words from all open documents.')\r\n ],\r\n description: nls.localize('wordBasedSuggestionsMode', \"Controls from which documents word based completions are computed.\")\r\n },\r\n 'editor.semanticHighlighting.enabled': {\r\n enum: [true, false, 'configuredByTheme'],\r\n enumDescriptions: [\r\n nls.localize('semanticHighlighting.true', 'Semantic highlighting enabled for all color themes.'),\r\n nls.localize('semanticHighlighting.false', 'Semantic highlighting disabled for all color themes.'),\r\n nls.localize('semanticHighlighting.configuredByTheme', 'Semantic highlighting is configured by the current color theme\\'s `semanticHighlighting` setting.')\r\n ],\r\n default: 'configuredByTheme',\r\n description: nls.localize('semanticHighlighting.enabled', \"Controls whether the semanticHighlighting is shown for the languages that support it.\")\r\n },\r\n 'editor.stablePeek': {\r\n type: 'boolean',\r\n default: false,\r\n markdownDescription: nls.localize('stablePeek', \"Keep peek editors open even when double clicking their content or when hitting `Escape`.\")\r\n },\r\n 'editor.maxTokenizationLineLength': {\r\n type: 'integer',\r\n default: 20000,\r\n description: nls.localize('maxTokenizationLineLength', \"Lines above this length will not be tokenized for performance reasons\")\r\n },\r\n 'diffEditor.maxComputationTime': {\r\n type: 'number',\r\n default: 5000,\r\n description: nls.localize('maxComputationTime', \"Timeout in milliseconds after which diff computation is cancelled. Use 0 for no timeout.\")\r\n },\r\n 'diffEditor.renderSideBySide': {\r\n type: 'boolean',\r\n default: true,\r\n description: nls.localize('sideBySide', \"Controls whether the diff editor shows the diff side by side or inline.\")\r\n },\r\n 'diffEditor.ignoreTrimWhitespace': {\r\n type: 'boolean',\r\n default: true,\r\n description: nls.localize('ignoreTrimWhitespace', \"When enabled, the diff editor ignores changes in leading or trailing whitespace.\")\r\n },\r\n 'diffEditor.renderIndicators': {\r\n type: 'boolean',\r\n default: true,\r\n description: nls.localize('renderIndicators', \"Controls whether the diff editor shows +/- indicators for added/removed changes.\")\r\n },\r\n 'diffEditor.codeLens': {\r\n type: 'boolean',\r\n default: false,\r\n description: nls.localize('codeLens', \"Controls whether the editor shows CodeLens.\")\r\n },\r\n 'diffEditor.wordWrap': {\r\n type: 'string',\r\n enum: ['off', 'on', 'inherit'],\r\n default: 'inherit',\r\n markdownEnumDescriptions: [\r\n nls.localize('wordWrap.off', \"Lines will never wrap.\"),\r\n nls.localize('wordWrap.on', \"Lines will wrap at the viewport width.\"),\r\n nls.localize('wordWrap.inherit', \"Lines will wrap according to the `#editor.wordWrap#` setting.\"),\r\n ]\r\n }\r\n } });\r\nfunction isConfigurationPropertySchema(x) {\r\n return (typeof x.type !== 'undefined' || typeof x.anyOf !== 'undefined');\r\n}\r\n// Add properties from the Editor Option Registry\r\nfor (const editorOption of editorOptionsRegistry) {\r\n const schema = editorOption.schema;\r\n if (typeof schema !== 'undefined') {\r\n if (isConfigurationPropertySchema(schema)) {\r\n // This is a single schema contribution\r\n editorConfiguration.properties[`editor.${editorOption.name}`] = schema;\r\n }\r\n else {\r\n for (let key in schema) {\r\n if (hasOwnProperty.call(schema, key)) {\r\n editorConfiguration.properties[key] = schema[key];\r\n }\r\n }\r\n }\r\n }\r\n}\r\nlet cachedEditorConfigurationKeys = null;\r\nfunction getEditorConfigurationKeys() {\r\n if (cachedEditorConfigurationKeys === null) {\r\n cachedEditorConfigurationKeys = Object.create(null);\r\n Object.keys(editorConfiguration.properties).forEach((prop) => {\r\n cachedEditorConfigurationKeys[prop] = true;\r\n });\r\n }\r\n return cachedEditorConfigurationKeys;\r\n}\r\nexport function isEditorConfigurationKey(key) {\r\n const editorConfigurationKeys = getEditorConfigurationKeys();\r\n return (editorConfigurationKeys[`editor.${key}`] || false);\r\n}\r\nexport function isDiffEditorConfigurationKey(key) {\r\n const editorConfigurationKeys = getEditorConfigurationKeys();\r\n return (editorConfigurationKeys[`diffEditor.${key}`] || false);\r\n}\r\nconfigurationRegistry.registerConfiguration(editorConfiguration);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Range } from './range.js';\r\nexport class EditOperation {\r\n static insert(position, text) {\r\n return {\r\n range: new Range(position.lineNumber, position.column, position.lineNumber, position.column),\r\n text: text,\r\n forceMoveMarkers: true\r\n };\r\n }\r\n static delete(range) {\r\n return {\r\n range: range,\r\n text: null\r\n };\r\n }\r\n static replace(range, text) {\r\n return {\r\n range: range,\r\n text: text\r\n };\r\n }\r\n static replaceMove(range, text) {\r\n return {\r\n range: range,\r\n text: text,\r\n forceMoveMarkers: true\r\n };\r\n }\r\n}\r\n","import { Registry } from '../../registry/common/platform.js';\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nimport { Extensions } from './configurationRegistry.js';\r\nexport const IConfigurationService = createDecorator('configurationService');\r\nexport function toValuesTree(properties, conflictReporter) {\r\n const root = Object.create(null);\r\n for (let key in properties) {\r\n addToValueTree(root, key, properties[key], conflictReporter);\r\n }\r\n return root;\r\n}\r\nexport function addToValueTree(settingsTreeRoot, key, value, conflictReporter) {\r\n const segments = key.split('.');\r\n const last = segments.pop();\r\n let curr = settingsTreeRoot;\r\n for (let i = 0; i < segments.length; i++) {\r\n let s = segments[i];\r\n let obj = curr[s];\r\n switch (typeof obj) {\r\n case 'undefined':\r\n obj = curr[s] = Object.create(null);\r\n break;\r\n case 'object':\r\n break;\r\n default:\r\n conflictReporter(`Ignoring ${key} as ${segments.slice(0, i + 1).join('.')} is ${JSON.stringify(obj)}`);\r\n return;\r\n }\r\n curr = obj;\r\n }\r\n if (typeof curr === 'object' && curr !== null) {\r\n try {\r\n curr[last] = value; // workaround https://github.com/microsoft/vscode/issues/13606\r\n }\r\n catch (e) {\r\n conflictReporter(`Ignoring ${key} as ${segments.join('.')} is ${JSON.stringify(curr)}`);\r\n }\r\n }\r\n else {\r\n conflictReporter(`Ignoring ${key} as ${segments.join('.')} is ${JSON.stringify(curr)}`);\r\n }\r\n}\r\nexport function removeFromValueTree(valueTree, key) {\r\n const segments = key.split('.');\r\n doRemoveFromValueTree(valueTree, segments);\r\n}\r\nfunction doRemoveFromValueTree(valueTree, segments) {\r\n const first = segments.shift();\r\n if (segments.length === 0) {\r\n // Reached last segment\r\n delete valueTree[first];\r\n return;\r\n }\r\n if (Object.keys(valueTree).indexOf(first) !== -1) {\r\n const value = valueTree[first];\r\n if (typeof value === 'object' && !Array.isArray(value)) {\r\n doRemoveFromValueTree(value, segments);\r\n if (Object.keys(value).length === 0) {\r\n delete valueTree[first];\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * A helper function to get the configuration value with a specific settings path (e.g. config.some.setting)\r\n */\r\nexport function getConfigurationValue(config, settingPath, defaultValue) {\r\n function accessSetting(config, path) {\r\n let current = config;\r\n for (const component of path) {\r\n if (typeof current !== 'object' || current === null) {\r\n return undefined;\r\n }\r\n current = current[component];\r\n }\r\n return current;\r\n }\r\n const path = settingPath.split('.');\r\n const result = accessSetting(config, path);\r\n return typeof result === 'undefined' ? defaultValue : result;\r\n}\r\nexport function getConfigurationKeys() {\r\n const properties = Registry.as(Extensions.Configuration).getConfigurationProperties();\r\n return Object.keys(properties);\r\n}\r\nexport function getDefaultValues() {\r\n const valueTreeRoot = Object.create(null);\r\n const properties = Registry.as(Extensions.Configuration).getConfigurationProperties();\r\n for (let key in properties) {\r\n let value = properties[key].default;\r\n addToValueTree(valueTreeRoot, key, value, message => console.error(`Conflict in default settings: ${message}`));\r\n }\r\n return valueTreeRoot;\r\n}\r\n","import { ResourceMap } from '../../../base/common/map.js';\r\nimport * as arrays from '../../../base/common/arrays.js';\r\nimport * as types from '../../../base/common/types.js';\r\nimport * as objects from '../../../base/common/objects.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { OVERRIDE_PROPERTY_PATTERN, overrideIdentifierFromKey } from './configurationRegistry.js';\r\nimport { addToValueTree, toValuesTree, getConfigurationValue, getDefaultValues, getConfigurationKeys, removeFromValueTree } from './configuration.js';\r\nexport class ConfigurationModel {\r\n constructor(_contents = {}, _keys = [], _overrides = []) {\r\n this._contents = _contents;\r\n this._keys = _keys;\r\n this._overrides = _overrides;\r\n this.isFrozen = false;\r\n }\r\n get contents() {\r\n return this.checkAndFreeze(this._contents);\r\n }\r\n get overrides() {\r\n return this.checkAndFreeze(this._overrides);\r\n }\r\n get keys() {\r\n return this.checkAndFreeze(this._keys);\r\n }\r\n isEmpty() {\r\n return this._keys.length === 0 && Object.keys(this._contents).length === 0 && this._overrides.length === 0;\r\n }\r\n getValue(section) {\r\n return section ? getConfigurationValue(this.contents, section) : this.contents;\r\n }\r\n override(identifier) {\r\n const overrideContents = this.getContentsForOverrideIdentifer(identifier);\r\n if (!overrideContents || typeof overrideContents !== 'object' || !Object.keys(overrideContents).length) {\r\n // If there are no valid overrides, return self\r\n return this;\r\n }\r\n let contents = {};\r\n for (const key of arrays.distinct([...Object.keys(this.contents), ...Object.keys(overrideContents)])) {\r\n let contentsForKey = this.contents[key];\r\n let overrideContentsForKey = overrideContents[key];\r\n // If there are override contents for the key, clone and merge otherwise use base contents\r\n if (overrideContentsForKey) {\r\n // Clone and merge only if base contents and override contents are of type object otherwise just override\r\n if (typeof contentsForKey === 'object' && typeof overrideContentsForKey === 'object') {\r\n contentsForKey = objects.deepClone(contentsForKey);\r\n this.mergeContents(contentsForKey, overrideContentsForKey);\r\n }\r\n else {\r\n contentsForKey = overrideContentsForKey;\r\n }\r\n }\r\n contents[key] = contentsForKey;\r\n }\r\n return new ConfigurationModel(contents, this.keys, this.overrides);\r\n }\r\n merge(...others) {\r\n const contents = objects.deepClone(this.contents);\r\n const overrides = objects.deepClone(this.overrides);\r\n const keys = [...this.keys];\r\n for (const other of others) {\r\n this.mergeContents(contents, other.contents);\r\n for (const otherOverride of other.overrides) {\r\n const [override] = overrides.filter(o => arrays.equals(o.identifiers, otherOverride.identifiers));\r\n if (override) {\r\n this.mergeContents(override.contents, otherOverride.contents);\r\n }\r\n else {\r\n overrides.push(objects.deepClone(otherOverride));\r\n }\r\n }\r\n for (const key of other.keys) {\r\n if (keys.indexOf(key) === -1) {\r\n keys.push(key);\r\n }\r\n }\r\n }\r\n return new ConfigurationModel(contents, keys, overrides);\r\n }\r\n freeze() {\r\n this.isFrozen = true;\r\n return this;\r\n }\r\n mergeContents(source, target) {\r\n for (const key of Object.keys(target)) {\r\n if (key in source) {\r\n if (types.isObject(source[key]) && types.isObject(target[key])) {\r\n this.mergeContents(source[key], target[key]);\r\n continue;\r\n }\r\n }\r\n source[key] = objects.deepClone(target[key]);\r\n }\r\n }\r\n checkAndFreeze(data) {\r\n if (this.isFrozen && !Object.isFrozen(data)) {\r\n return objects.deepFreeze(data);\r\n }\r\n return data;\r\n }\r\n getContentsForOverrideIdentifer(identifier) {\r\n for (const override of this.overrides) {\r\n if (override.identifiers.indexOf(identifier) !== -1) {\r\n return override.contents;\r\n }\r\n }\r\n return null;\r\n }\r\n toJSON() {\r\n return {\r\n contents: this.contents,\r\n overrides: this.overrides,\r\n keys: this.keys\r\n };\r\n }\r\n // Update methods\r\n setValue(key, value) {\r\n this.addKey(key);\r\n addToValueTree(this.contents, key, value, e => { throw new Error(e); });\r\n }\r\n removeValue(key) {\r\n if (this.removeKey(key)) {\r\n removeFromValueTree(this.contents, key);\r\n }\r\n }\r\n addKey(key) {\r\n let index = this.keys.length;\r\n for (let i = 0; i < index; i++) {\r\n if (key.indexOf(this.keys[i]) === 0) {\r\n index = i;\r\n }\r\n }\r\n this.keys.splice(index, 1, key);\r\n }\r\n removeKey(key) {\r\n let index = this.keys.indexOf(key);\r\n if (index !== -1) {\r\n this.keys.splice(index, 1);\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\nexport class DefaultConfigurationModel extends ConfigurationModel {\r\n constructor() {\r\n const contents = getDefaultValues();\r\n const keys = getConfigurationKeys();\r\n const overrides = [];\r\n for (const key of Object.keys(contents)) {\r\n if (OVERRIDE_PROPERTY_PATTERN.test(key)) {\r\n overrides.push({\r\n identifiers: [overrideIdentifierFromKey(key).trim()],\r\n keys: Object.keys(contents[key]),\r\n contents: toValuesTree(contents[key], message => console.error(`Conflict in default settings file: ${message}`)),\r\n });\r\n }\r\n }\r\n super(contents, keys, overrides);\r\n }\r\n}\r\nexport class Configuration {\r\n constructor(_defaultConfiguration, _localUserConfiguration, _remoteUserConfiguration = new ConfigurationModel(), _workspaceConfiguration = new ConfigurationModel(), _folderConfigurations = new ResourceMap(), _memoryConfiguration = new ConfigurationModel(), _memoryConfigurationByResource = new ResourceMap(), _freeze = true) {\r\n this._defaultConfiguration = _defaultConfiguration;\r\n this._localUserConfiguration = _localUserConfiguration;\r\n this._remoteUserConfiguration = _remoteUserConfiguration;\r\n this._workspaceConfiguration = _workspaceConfiguration;\r\n this._folderConfigurations = _folderConfigurations;\r\n this._memoryConfiguration = _memoryConfiguration;\r\n this._memoryConfigurationByResource = _memoryConfigurationByResource;\r\n this._freeze = _freeze;\r\n this._workspaceConsolidatedConfiguration = null;\r\n this._foldersConsolidatedConfigurations = new ResourceMap();\r\n this._userConfiguration = null;\r\n }\r\n getValue(section, overrides, workspace) {\r\n const consolidateConfigurationModel = this.getConsolidateConfigurationModel(overrides, workspace);\r\n return consolidateConfigurationModel.getValue(section);\r\n }\r\n updateValue(key, value, overrides = {}) {\r\n let memoryConfiguration;\r\n if (overrides.resource) {\r\n memoryConfiguration = this._memoryConfigurationByResource.get(overrides.resource);\r\n if (!memoryConfiguration) {\r\n memoryConfiguration = new ConfigurationModel();\r\n this._memoryConfigurationByResource.set(overrides.resource, memoryConfiguration);\r\n }\r\n }\r\n else {\r\n memoryConfiguration = this._memoryConfiguration;\r\n }\r\n if (value === undefined) {\r\n memoryConfiguration.removeValue(key);\r\n }\r\n else {\r\n memoryConfiguration.setValue(key, value);\r\n }\r\n if (!overrides.resource) {\r\n this._workspaceConsolidatedConfiguration = null;\r\n }\r\n }\r\n get userConfiguration() {\r\n if (!this._userConfiguration) {\r\n this._userConfiguration = this._remoteUserConfiguration.isEmpty() ? this._localUserConfiguration : this._localUserConfiguration.merge(this._remoteUserConfiguration);\r\n if (this._freeze) {\r\n this._userConfiguration.freeze();\r\n }\r\n }\r\n return this._userConfiguration;\r\n }\r\n getConsolidateConfigurationModel(overrides, workspace) {\r\n let configurationModel = this.getConsolidatedConfigurationModelForResource(overrides, workspace);\r\n return overrides.overrideIdentifier ? configurationModel.override(overrides.overrideIdentifier) : configurationModel;\r\n }\r\n getConsolidatedConfigurationModelForResource({ resource }, workspace) {\r\n let consolidateConfiguration = this.getWorkspaceConsolidatedConfiguration();\r\n if (workspace && resource) {\r\n const root = workspace.getFolder(resource);\r\n if (root) {\r\n consolidateConfiguration = this.getFolderConsolidatedConfiguration(root.uri) || consolidateConfiguration;\r\n }\r\n const memoryConfigurationForResource = this._memoryConfigurationByResource.get(resource);\r\n if (memoryConfigurationForResource) {\r\n consolidateConfiguration = consolidateConfiguration.merge(memoryConfigurationForResource);\r\n }\r\n }\r\n return consolidateConfiguration;\r\n }\r\n getWorkspaceConsolidatedConfiguration() {\r\n if (!this._workspaceConsolidatedConfiguration) {\r\n this._workspaceConsolidatedConfiguration = this._defaultConfiguration.merge(this.userConfiguration, this._workspaceConfiguration, this._memoryConfiguration);\r\n if (this._freeze) {\r\n this._workspaceConfiguration = this._workspaceConfiguration.freeze();\r\n }\r\n }\r\n return this._workspaceConsolidatedConfiguration;\r\n }\r\n getFolderConsolidatedConfiguration(folder) {\r\n let folderConsolidatedConfiguration = this._foldersConsolidatedConfigurations.get(folder);\r\n if (!folderConsolidatedConfiguration) {\r\n const workspaceConsolidateConfiguration = this.getWorkspaceConsolidatedConfiguration();\r\n const folderConfiguration = this._folderConfigurations.get(folder);\r\n if (folderConfiguration) {\r\n folderConsolidatedConfiguration = workspaceConsolidateConfiguration.merge(folderConfiguration);\r\n if (this._freeze) {\r\n folderConsolidatedConfiguration = folderConsolidatedConfiguration.freeze();\r\n }\r\n this._foldersConsolidatedConfigurations.set(folder, folderConsolidatedConfiguration);\r\n }\r\n else {\r\n folderConsolidatedConfiguration = workspaceConsolidateConfiguration;\r\n }\r\n }\r\n return folderConsolidatedConfiguration;\r\n }\r\n toData() {\r\n return {\r\n defaults: {\r\n contents: this._defaultConfiguration.contents,\r\n overrides: this._defaultConfiguration.overrides,\r\n keys: this._defaultConfiguration.keys\r\n },\r\n user: {\r\n contents: this.userConfiguration.contents,\r\n overrides: this.userConfiguration.overrides,\r\n keys: this.userConfiguration.keys\r\n },\r\n workspace: {\r\n contents: this._workspaceConfiguration.contents,\r\n overrides: this._workspaceConfiguration.overrides,\r\n keys: this._workspaceConfiguration.keys\r\n },\r\n folders: [...this._folderConfigurations.keys()].reduce((result, folder) => {\r\n const { contents, overrides, keys } = this._folderConfigurations.get(folder);\r\n result.push([folder, { contents, overrides, keys }]);\r\n return result;\r\n }, [])\r\n };\r\n }\r\n static parse(data) {\r\n const defaultConfiguration = this.parseConfigurationModel(data.defaults);\r\n const userConfiguration = this.parseConfigurationModel(data.user);\r\n const workspaceConfiguration = this.parseConfigurationModel(data.workspace);\r\n const folders = data.folders.reduce((result, value) => {\r\n result.set(URI.revive(value[0]), this.parseConfigurationModel(value[1]));\r\n return result;\r\n }, new ResourceMap());\r\n return new Configuration(defaultConfiguration, userConfiguration, new ConfigurationModel(), workspaceConfiguration, folders, new ConfigurationModel(), new ResourceMap(), false);\r\n }\r\n static parseConfigurationModel(model) {\r\n return new ConfigurationModel(model.contents, model.keys, model.overrides).freeze();\r\n }\r\n}\r\nexport class ConfigurationChangeEvent {\r\n constructor(change, previous, currentConfiguraiton, currentWorkspace) {\r\n this.change = change;\r\n this.previous = previous;\r\n this.currentConfiguraiton = currentConfiguraiton;\r\n this.currentWorkspace = currentWorkspace;\r\n this._previousConfiguration = undefined;\r\n const keysSet = new Set();\r\n change.keys.forEach(key => keysSet.add(key));\r\n change.overrides.forEach(([, keys]) => keys.forEach(key => keysSet.add(key)));\r\n this.affectedKeys = [...keysSet.values()];\r\n const configurationModel = new ConfigurationModel();\r\n this.affectedKeys.forEach(key => configurationModel.setValue(key, {}));\r\n this.affectedKeysTree = configurationModel.contents;\r\n }\r\n get previousConfiguration() {\r\n if (!this._previousConfiguration && this.previous) {\r\n this._previousConfiguration = Configuration.parse(this.previous.data);\r\n }\r\n return this._previousConfiguration;\r\n }\r\n affectsConfiguration(section, overrides) {\r\n var _a;\r\n if (this.doesAffectedKeysTreeContains(this.affectedKeysTree, section)) {\r\n if (overrides) {\r\n const value1 = this.previousConfiguration ? this.previousConfiguration.getValue(section, overrides, (_a = this.previous) === null || _a === void 0 ? void 0 : _a.workspace) : undefined;\r\n const value2 = this.currentConfiguraiton.getValue(section, overrides, this.currentWorkspace);\r\n return !objects.equals(value1, value2);\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n doesAffectedKeysTreeContains(affectedKeysTree, section) {\r\n let requestedTree = toValuesTree({ [section]: true }, () => { });\r\n let key;\r\n while (typeof requestedTree === 'object' && (key = Object.keys(requestedTree)[0])) { // Only one key should present, since we added only one property\r\n affectedKeysTree = affectedKeysTree[key];\r\n if (!affectedKeysTree) {\r\n return false; // Requested tree is not found\r\n }\r\n requestedTree = requestedTree[key];\r\n }\r\n return true;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport { IntervalTimer, TimeoutTimer } from '../../../base/common/async.js';\r\nimport { Emitter, Event } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nexport class AbstractKeybindingService extends Disposable {\r\n constructor(_contextKeyService, _commandService, _telemetryService, _notificationService, _logService) {\r\n super();\r\n this._contextKeyService = _contextKeyService;\r\n this._commandService = _commandService;\r\n this._telemetryService = _telemetryService;\r\n this._notificationService = _notificationService;\r\n this._logService = _logService;\r\n this._onDidUpdateKeybindings = this._register(new Emitter());\r\n this._currentChord = null;\r\n this._currentChordChecker = new IntervalTimer();\r\n this._currentChordStatusMessage = null;\r\n this._currentSingleModifier = null;\r\n this._currentSingleModifierClearTimeout = new TimeoutTimer();\r\n this._logging = false;\r\n }\r\n get onDidUpdateKeybindings() {\r\n return this._onDidUpdateKeybindings ? this._onDidUpdateKeybindings.event : Event.None; // Sinon stubbing walks properties on prototype\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n _log(str) {\r\n if (this._logging) {\r\n this._logService.info(`[KeybindingService]: ${str}`);\r\n }\r\n }\r\n getKeybindings() {\r\n return this._getResolver().getKeybindings();\r\n }\r\n lookupKeybinding(commandId, context) {\r\n const result = this._getResolver().lookupPrimaryKeybinding(commandId, context || this._contextKeyService);\r\n if (!result) {\r\n return undefined;\r\n }\r\n return result.resolvedKeybinding;\r\n }\r\n dispatchEvent(e, target) {\r\n return this._dispatch(e, target);\r\n }\r\n softDispatch(e, target) {\r\n const keybinding = this.resolveKeyboardEvent(e);\r\n if (keybinding.isChord()) {\r\n console.warn('Unexpected keyboard event mapped to a chord');\r\n return null;\r\n }\r\n const [firstPart,] = keybinding.getDispatchParts();\r\n if (firstPart === null) {\r\n // cannot be dispatched, probably only modifier keys\r\n return null;\r\n }\r\n const contextValue = this._contextKeyService.getContext(target);\r\n const currentChord = this._currentChord ? this._currentChord.keypress : null;\r\n return this._getResolver().resolve(contextValue, currentChord, firstPart);\r\n }\r\n _enterChordMode(firstPart, keypressLabel) {\r\n this._currentChord = {\r\n keypress: firstPart,\r\n label: keypressLabel\r\n };\r\n this._currentChordStatusMessage = this._notificationService.status(nls.localize('first.chord', \"({0}) was pressed. Waiting for second key of chord...\", keypressLabel));\r\n const chordEnterTime = Date.now();\r\n this._currentChordChecker.cancelAndSet(() => {\r\n if (!this._documentHasFocus()) {\r\n // Focus has been lost => leave chord mode\r\n this._leaveChordMode();\r\n return;\r\n }\r\n if (Date.now() - chordEnterTime > 5000) {\r\n // 5 seconds elapsed => leave chord mode\r\n this._leaveChordMode();\r\n }\r\n }, 500);\r\n }\r\n _leaveChordMode() {\r\n if (this._currentChordStatusMessage) {\r\n this._currentChordStatusMessage.dispose();\r\n this._currentChordStatusMessage = null;\r\n }\r\n this._currentChordChecker.cancel();\r\n this._currentChord = null;\r\n }\r\n _dispatch(e, target) {\r\n return this._doDispatch(this.resolveKeyboardEvent(e), target, /*isSingleModiferChord*/ false);\r\n }\r\n _singleModifierDispatch(e, target) {\r\n const keybinding = this.resolveKeyboardEvent(e);\r\n const [singleModifier,] = keybinding.getSingleModifierDispatchParts();\r\n if (singleModifier !== null && this._currentSingleModifier === null) {\r\n // we have a valid `singleModifier`, store it for the next keyup, but clear it in 300ms\r\n this._log(`+ Storing single modifier for possible chord ${singleModifier}.`);\r\n this._currentSingleModifier = singleModifier;\r\n this._currentSingleModifierClearTimeout.cancelAndSet(() => {\r\n this._log(`+ Clearing single modifier due to 300ms elapsed.`);\r\n this._currentSingleModifier = null;\r\n }, 300);\r\n return false;\r\n }\r\n if (singleModifier !== null && singleModifier === this._currentSingleModifier) {\r\n // bingo!\r\n this._log(`/ Dispatching single modifier chord ${singleModifier} ${singleModifier}`);\r\n this._currentSingleModifierClearTimeout.cancel();\r\n this._currentSingleModifier = null;\r\n return this._doDispatch(keybinding, target, /*isSingleModiferChord*/ true);\r\n }\r\n this._currentSingleModifierClearTimeout.cancel();\r\n this._currentSingleModifier = null;\r\n return false;\r\n }\r\n _doDispatch(keybinding, target, isSingleModiferChord = false) {\r\n let shouldPreventDefault = false;\r\n if (keybinding.isChord()) {\r\n console.warn('Unexpected keyboard event mapped to a chord');\r\n return false;\r\n }\r\n let firstPart = null; // the first keybinding i.e. Ctrl+K\r\n let currentChord = null; // the \"second\" keybinding i.e. Ctrl+K \"Ctrl+D\"\r\n if (isSingleModiferChord) {\r\n const [dispatchKeyname,] = keybinding.getSingleModifierDispatchParts();\r\n firstPart = dispatchKeyname;\r\n currentChord = dispatchKeyname;\r\n }\r\n else {\r\n [firstPart,] = keybinding.getDispatchParts();\r\n currentChord = this._currentChord ? this._currentChord.keypress : null;\r\n }\r\n if (firstPart === null) {\r\n this._log(`\\\\ Keyboard event cannot be dispatched in keydown phase.`);\r\n // cannot be dispatched, probably only modifier keys\r\n return shouldPreventDefault;\r\n }\r\n const contextValue = this._contextKeyService.getContext(target);\r\n const keypressLabel = keybinding.getLabel();\r\n const resolveResult = this._getResolver().resolve(contextValue, currentChord, firstPart);\r\n this._logService.trace('KeybindingService#dispatch', keypressLabel, resolveResult === null || resolveResult === void 0 ? void 0 : resolveResult.commandId);\r\n if (resolveResult && resolveResult.enterChord) {\r\n shouldPreventDefault = true;\r\n this._enterChordMode(firstPart, keypressLabel);\r\n return shouldPreventDefault;\r\n }\r\n if (this._currentChord) {\r\n if (!resolveResult || !resolveResult.commandId) {\r\n this._notificationService.status(nls.localize('missing.chord', \"The key combination ({0}, {1}) is not a command.\", this._currentChord.label, keypressLabel), { hideAfter: 10 * 1000 /* 10s */ });\r\n shouldPreventDefault = true;\r\n }\r\n }\r\n this._leaveChordMode();\r\n if (resolveResult && resolveResult.commandId) {\r\n if (!resolveResult.bubble) {\r\n shouldPreventDefault = true;\r\n }\r\n if (typeof resolveResult.commandArgs === 'undefined') {\r\n this._commandService.executeCommand(resolveResult.commandId).then(undefined, err => this._notificationService.warn(err));\r\n }\r\n else {\r\n this._commandService.executeCommand(resolveResult.commandId, resolveResult.commandArgs).then(undefined, err => this._notificationService.warn(err));\r\n }\r\n this._telemetryService.publicLog2('workbenchActionExecuted', { id: resolveResult.commandId, from: 'keybinding' });\r\n }\r\n return shouldPreventDefault;\r\n }\r\n mightProducePrintableCharacter(event) {\r\n if (event.ctrlKey || event.metaKey) {\r\n // ignore ctrl/cmd-combination but not shift/alt-combinatios\r\n return false;\r\n }\r\n // weak check for certain ranges. this is properly implemented in a subclass\r\n // with access to the KeyboardMapperFactory.\r\n if ((event.keyCode >= 31 /* KEY_A */ && event.keyCode <= 56 /* KEY_Z */)\r\n || (event.keyCode >= 21 /* KEY_0 */ && event.keyCode <= 30 /* KEY_9 */)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class KeybindingResolver {\r\n constructor(defaultKeybindings, overrides, log) {\r\n this._log = log;\r\n this._defaultKeybindings = defaultKeybindings;\r\n this._defaultBoundCommands = new Map();\r\n for (let i = 0, len = defaultKeybindings.length; i < len; i++) {\r\n const command = defaultKeybindings[i].command;\r\n if (command) {\r\n this._defaultBoundCommands.set(command, true);\r\n }\r\n }\r\n this._map = new Map();\r\n this._lookupMap = new Map();\r\n this._keybindings = KeybindingResolver.combine(defaultKeybindings, overrides);\r\n for (let i = 0, len = this._keybindings.length; i < len; i++) {\r\n let k = this._keybindings[i];\r\n if (k.keypressParts.length === 0) {\r\n // unbound\r\n continue;\r\n }\r\n if (k.when && k.when.type === 0 /* False */) {\r\n // when condition is false\r\n continue;\r\n }\r\n // TODO@chords\r\n this._addKeyPress(k.keypressParts[0], k);\r\n }\r\n }\r\n static _isTargetedForRemoval(defaultKb, keypressFirstPart, keypressChordPart, command, when) {\r\n if (defaultKb.command !== command) {\r\n return false;\r\n }\r\n // TODO@chords\r\n if (keypressFirstPart && defaultKb.keypressParts[0] !== keypressFirstPart) {\r\n return false;\r\n }\r\n // TODO@chords\r\n if (keypressChordPart && defaultKb.keypressParts[1] !== keypressChordPart) {\r\n return false;\r\n }\r\n if (when) {\r\n if (!defaultKb.when) {\r\n return false;\r\n }\r\n if (!when.equals(defaultKb.when)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * Looks for rules containing -command in `overrides` and removes them directly from `defaults`.\r\n */\r\n static combine(defaults, rawOverrides) {\r\n defaults = defaults.slice(0);\r\n let overrides = [];\r\n for (const override of rawOverrides) {\r\n if (!override.command || override.command.length === 0 || override.command.charAt(0) !== '-') {\r\n overrides.push(override);\r\n continue;\r\n }\r\n const command = override.command.substr(1);\r\n // TODO@chords\r\n const keypressFirstPart = override.keypressParts[0];\r\n const keypressChordPart = override.keypressParts[1];\r\n const when = override.when;\r\n for (let j = defaults.length - 1; j >= 0; j--) {\r\n if (this._isTargetedForRemoval(defaults[j], keypressFirstPart, keypressChordPart, command, when)) {\r\n defaults.splice(j, 1);\r\n }\r\n }\r\n }\r\n return defaults.concat(overrides);\r\n }\r\n _addKeyPress(keypress, item) {\r\n const conflicts = this._map.get(keypress);\r\n if (typeof conflicts === 'undefined') {\r\n // There is no conflict so far\r\n this._map.set(keypress, [item]);\r\n this._addToLookupMap(item);\r\n return;\r\n }\r\n for (let i = conflicts.length - 1; i >= 0; i--) {\r\n let conflict = conflicts[i];\r\n if (conflict.command === item.command) {\r\n continue;\r\n }\r\n const conflictIsChord = (conflict.keypressParts.length > 1);\r\n const itemIsChord = (item.keypressParts.length > 1);\r\n // TODO@chords\r\n if (conflictIsChord && itemIsChord && conflict.keypressParts[1] !== item.keypressParts[1]) {\r\n // The conflict only shares the chord start with this command\r\n continue;\r\n }\r\n if (KeybindingResolver.whenIsEntirelyIncluded(conflict.when, item.when)) {\r\n // `item` completely overwrites `conflict`\r\n // Remove conflict from the lookupMap\r\n this._removeFromLookupMap(conflict);\r\n }\r\n }\r\n conflicts.push(item);\r\n this._addToLookupMap(item);\r\n }\r\n _addToLookupMap(item) {\r\n if (!item.command) {\r\n return;\r\n }\r\n let arr = this._lookupMap.get(item.command);\r\n if (typeof arr === 'undefined') {\r\n arr = [item];\r\n this._lookupMap.set(item.command, arr);\r\n }\r\n else {\r\n arr.push(item);\r\n }\r\n }\r\n _removeFromLookupMap(item) {\r\n if (!item.command) {\r\n return;\r\n }\r\n let arr = this._lookupMap.get(item.command);\r\n if (typeof arr === 'undefined') {\r\n return;\r\n }\r\n for (let i = 0, len = arr.length; i < len; i++) {\r\n if (arr[i] === item) {\r\n arr.splice(i, 1);\r\n return;\r\n }\r\n }\r\n }\r\n /**\r\n * Returns true if it is provable `a` implies `b`.\r\n */\r\n static whenIsEntirelyIncluded(a, b) {\r\n if (!b || b.type === 1 /* True */) {\r\n return true;\r\n }\r\n if (!a || a.type === 1 /* True */) {\r\n return false;\r\n }\r\n return this._implies(a, b);\r\n }\r\n /**\r\n * Returns true if it is provable `p` implies `q`.\r\n */\r\n static _implies(p, q) {\r\n const notP = p.negate();\r\n const terminals = (node) => {\r\n if (node.type === 9 /* Or */) {\r\n return node.expr;\r\n }\r\n return [node];\r\n };\r\n let expr = terminals(notP).concat(terminals(q));\r\n for (let i = 0; i < expr.length; i++) {\r\n const a = expr[i];\r\n const notA = a.negate();\r\n for (let j = i + 1; j < expr.length; j++) {\r\n const b = expr[j];\r\n if (notA.equals(b)) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n getKeybindings() {\r\n return this._keybindings;\r\n }\r\n lookupPrimaryKeybinding(commandId, context) {\r\n const items = this._lookupMap.get(commandId);\r\n if (typeof items === 'undefined' || items.length === 0) {\r\n return null;\r\n }\r\n if (items.length === 1) {\r\n return items[0];\r\n }\r\n for (let i = items.length - 1; i >= 0; i--) {\r\n const item = items[i];\r\n if (context.contextMatchesRules(item.when)) {\r\n return item;\r\n }\r\n }\r\n return items[items.length - 1];\r\n }\r\n resolve(context, currentChord, keypress) {\r\n this._log(`| Resolving ${keypress}${currentChord ? ` chorded from ${currentChord}` : ``}`);\r\n let lookupMap = null;\r\n if (currentChord !== null) {\r\n // Fetch all chord bindings for `currentChord`\r\n const candidates = this._map.get(currentChord);\r\n if (typeof candidates === 'undefined') {\r\n // No chords starting with `currentChord`\r\n this._log(`\\\\ No keybinding entries.`);\r\n return null;\r\n }\r\n lookupMap = [];\r\n for (let i = 0, len = candidates.length; i < len; i++) {\r\n let candidate = candidates[i];\r\n // TODO@chords\r\n if (candidate.keypressParts[1] === keypress) {\r\n lookupMap.push(candidate);\r\n }\r\n }\r\n }\r\n else {\r\n const candidates = this._map.get(keypress);\r\n if (typeof candidates === 'undefined') {\r\n // No bindings with `keypress`\r\n this._log(`\\\\ No keybinding entries.`);\r\n return null;\r\n }\r\n lookupMap = candidates;\r\n }\r\n let result = this._findCommand(context, lookupMap);\r\n if (!result) {\r\n this._log(`\\\\ From ${lookupMap.length} keybinding entries, no when clauses matched the context.`);\r\n return null;\r\n }\r\n // TODO@chords\r\n if (currentChord === null && result.keypressParts.length > 1 && result.keypressParts[1] !== null) {\r\n this._log(`\\\\ From ${lookupMap.length} keybinding entries, matched chord, when: ${printWhenExplanation(result.when)}, source: ${printSourceExplanation(result)}.`);\r\n return {\r\n enterChord: true,\r\n leaveChord: false,\r\n commandId: null,\r\n commandArgs: null,\r\n bubble: false\r\n };\r\n }\r\n this._log(`\\\\ From ${lookupMap.length} keybinding entries, matched ${result.command}, when: ${printWhenExplanation(result.when)}, source: ${printSourceExplanation(result)}.`);\r\n return {\r\n enterChord: false,\r\n leaveChord: result.keypressParts.length > 1,\r\n commandId: result.command,\r\n commandArgs: result.commandArgs,\r\n bubble: result.bubble\r\n };\r\n }\r\n _findCommand(context, matches) {\r\n for (let i = matches.length - 1; i >= 0; i--) {\r\n let k = matches[i];\r\n if (!KeybindingResolver.contextMatchesRules(context, k.when)) {\r\n continue;\r\n }\r\n return k;\r\n }\r\n return null;\r\n }\r\n static contextMatchesRules(context, rules) {\r\n if (!rules) {\r\n return true;\r\n }\r\n return rules.evaluate(context);\r\n }\r\n}\r\nfunction printWhenExplanation(when) {\r\n if (!when) {\r\n return `no when condition`;\r\n }\r\n return `${when.serialize()}`;\r\n}\r\nfunction printSourceExplanation(kb) {\r\n return (kb.extensionId\r\n ? (kb.isBuiltinExtension ? `built-in extension ${kb.extensionId}` : `user extension ${kb.extensionId}`)\r\n : (kb.isDefault ? `built-in` : `user`));\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createKeybinding } from '../../../base/common/keyCodes.js';\r\nimport { OS } from '../../../base/common/platform.js';\r\nimport { CommandsRegistry } from '../../commands/common/commands.js';\r\nimport { Registry } from '../../registry/common/platform.js';\r\nclass KeybindingsRegistryImpl {\r\n constructor() {\r\n this._coreKeybindings = [];\r\n this._extensionKeybindings = [];\r\n this._cachedMergedKeybindings = null;\r\n }\r\n /**\r\n * Take current platform into account and reduce to primary & secondary.\r\n */\r\n static bindToCurrentPlatform(kb) {\r\n if (OS === 1 /* Windows */) {\r\n if (kb && kb.win) {\r\n return kb.win;\r\n }\r\n }\r\n else if (OS === 2 /* Macintosh */) {\r\n if (kb && kb.mac) {\r\n return kb.mac;\r\n }\r\n }\r\n else {\r\n if (kb && kb.linux) {\r\n return kb.linux;\r\n }\r\n }\r\n return kb;\r\n }\r\n registerKeybindingRule(rule) {\r\n const actualKb = KeybindingsRegistryImpl.bindToCurrentPlatform(rule);\r\n if (actualKb && actualKb.primary) {\r\n const kk = createKeybinding(actualKb.primary, OS);\r\n if (kk) {\r\n this._registerDefaultKeybinding(kk, rule.id, rule.args, rule.weight, 0, rule.when);\r\n }\r\n }\r\n if (actualKb && Array.isArray(actualKb.secondary)) {\r\n for (let i = 0, len = actualKb.secondary.length; i < len; i++) {\r\n const k = actualKb.secondary[i];\r\n const kk = createKeybinding(k, OS);\r\n if (kk) {\r\n this._registerDefaultKeybinding(kk, rule.id, rule.args, rule.weight, -i - 1, rule.when);\r\n }\r\n }\r\n }\r\n }\r\n registerCommandAndKeybindingRule(desc) {\r\n this.registerKeybindingRule(desc);\r\n CommandsRegistry.registerCommand(desc);\r\n }\r\n static _mightProduceChar(keyCode) {\r\n if (keyCode >= 21 /* KEY_0 */ && keyCode <= 30 /* KEY_9 */) {\r\n return true;\r\n }\r\n if (keyCode >= 31 /* KEY_A */ && keyCode <= 56 /* KEY_Z */) {\r\n return true;\r\n }\r\n return (keyCode === 80 /* US_SEMICOLON */\r\n || keyCode === 81 /* US_EQUAL */\r\n || keyCode === 82 /* US_COMMA */\r\n || keyCode === 83 /* US_MINUS */\r\n || keyCode === 84 /* US_DOT */\r\n || keyCode === 85 /* US_SLASH */\r\n || keyCode === 86 /* US_BACKTICK */\r\n || keyCode === 110 /* ABNT_C1 */\r\n || keyCode === 111 /* ABNT_C2 */\r\n || keyCode === 87 /* US_OPEN_SQUARE_BRACKET */\r\n || keyCode === 88 /* US_BACKSLASH */\r\n || keyCode === 89 /* US_CLOSE_SQUARE_BRACKET */\r\n || keyCode === 90 /* US_QUOTE */\r\n || keyCode === 91 /* OEM_8 */\r\n || keyCode === 92 /* OEM_102 */);\r\n }\r\n _assertNoCtrlAlt(keybinding, commandId) {\r\n if (keybinding.ctrlKey && keybinding.altKey && !keybinding.metaKey) {\r\n if (KeybindingsRegistryImpl._mightProduceChar(keybinding.keyCode)) {\r\n console.warn('Ctrl+Alt+ keybindings should not be used by default under Windows. Offender: ', keybinding, ' for ', commandId);\r\n }\r\n }\r\n }\r\n _registerDefaultKeybinding(keybinding, commandId, commandArgs, weight1, weight2, when) {\r\n if (OS === 1 /* Windows */) {\r\n this._assertNoCtrlAlt(keybinding.parts[0], commandId);\r\n }\r\n this._coreKeybindings.push({\r\n keybinding: keybinding,\r\n command: commandId,\r\n commandArgs: commandArgs,\r\n when: when,\r\n weight1: weight1,\r\n weight2: weight2,\r\n extensionId: null,\r\n isBuiltinExtension: false\r\n });\r\n this._cachedMergedKeybindings = null;\r\n }\r\n getDefaultKeybindings() {\r\n if (!this._cachedMergedKeybindings) {\r\n this._cachedMergedKeybindings = [].concat(this._coreKeybindings).concat(this._extensionKeybindings);\r\n this._cachedMergedKeybindings.sort(sorter);\r\n }\r\n return this._cachedMergedKeybindings.slice(0);\r\n }\r\n}\r\nexport const KeybindingsRegistry = new KeybindingsRegistryImpl();\r\n// Define extension point ids\r\nexport const Extensions = {\r\n EditorModes: 'platform.keybindingsRegistry'\r\n};\r\nRegistry.add(Extensions.EditorModes, KeybindingsRegistry);\r\nfunction sorter(a, b) {\r\n if (a.weight1 !== b.weight1) {\r\n return a.weight1 - b.weight1;\r\n }\r\n if (a.command < b.command) {\r\n return -1;\r\n }\r\n if (a.command > b.command) {\r\n return 1;\r\n }\r\n return a.weight2 - b.weight2;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class ResolvedKeybindingItem {\r\n constructor(resolvedKeybinding, command, commandArgs, when, isDefault, extensionId, isBuiltinExtension) {\r\n this._resolvedKeybindingItemBrand = undefined;\r\n this.resolvedKeybinding = resolvedKeybinding;\r\n this.keypressParts = resolvedKeybinding ? removeElementsAfterNulls(resolvedKeybinding.getDispatchParts()) : [];\r\n if (resolvedKeybinding && this.keypressParts.length === 0) {\r\n // handle possible single modifier chord keybindings\r\n this.keypressParts = removeElementsAfterNulls(resolvedKeybinding.getSingleModifierDispatchParts());\r\n }\r\n this.bubble = (command ? command.charCodeAt(0) === 94 /* Caret */ : false);\r\n this.command = this.bubble ? command.substr(1) : command;\r\n this.commandArgs = commandArgs;\r\n this.when = when;\r\n this.isDefault = isDefault;\r\n this.extensionId = extensionId;\r\n this.isBuiltinExtension = isBuiltinExtension;\r\n }\r\n}\r\nexport function removeElementsAfterNulls(arr) {\r\n let result = [];\r\n for (let i = 0, len = arr.length; i < len; i++) {\r\n const element = arr[i];\r\n if (!element) {\r\n // stop processing at first encountered null\r\n return result;\r\n }\r\n result.push(element);\r\n }\r\n return result;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../nls.js';\r\nexport class ModifierLabelProvider {\r\n constructor(mac, windows, linux = windows) {\r\n this.modifierLabels = [null]; // index 0 will never me accessed.\r\n this.modifierLabels[2 /* Macintosh */] = mac;\r\n this.modifierLabels[1 /* Windows */] = windows;\r\n this.modifierLabels[3 /* Linux */] = linux;\r\n }\r\n toLabel(OS, parts, keyLabelProvider) {\r\n if (parts.length === 0) {\r\n return null;\r\n }\r\n const result = [];\r\n for (let i = 0, len = parts.length; i < len; i++) {\r\n const part = parts[i];\r\n const keyLabel = keyLabelProvider(part);\r\n if (keyLabel === null) {\r\n // this keybinding cannot be expressed...\r\n return null;\r\n }\r\n result[i] = _simpleAsString(part, keyLabel, this.modifierLabels[OS]);\r\n }\r\n return result.join(' ');\r\n }\r\n}\r\n/**\r\n * A label provider that prints modifiers in a suitable format for displaying in the UI.\r\n */\r\nexport const UILabelProvider = new ModifierLabelProvider({\r\n ctrlKey: '⌃',\r\n shiftKey: '⇧',\r\n altKey: '⌥',\r\n metaKey: '⌘',\r\n separator: '',\r\n}, {\r\n ctrlKey: nls.localize({ key: 'ctrlKey', comment: ['This is the short form for the Control key on the keyboard'] }, \"Ctrl\"),\r\n shiftKey: nls.localize({ key: 'shiftKey', comment: ['This is the short form for the Shift key on the keyboard'] }, \"Shift\"),\r\n altKey: nls.localize({ key: 'altKey', comment: ['This is the short form for the Alt key on the keyboard'] }, \"Alt\"),\r\n metaKey: nls.localize({ key: 'windowsKey', comment: ['This is the short form for the Windows key on the keyboard'] }, \"Windows\"),\r\n separator: '+',\r\n}, {\r\n ctrlKey: nls.localize({ key: 'ctrlKey', comment: ['This is the short form for the Control key on the keyboard'] }, \"Ctrl\"),\r\n shiftKey: nls.localize({ key: 'shiftKey', comment: ['This is the short form for the Shift key on the keyboard'] }, \"Shift\"),\r\n altKey: nls.localize({ key: 'altKey', comment: ['This is the short form for the Alt key on the keyboard'] }, \"Alt\"),\r\n metaKey: nls.localize({ key: 'superKey', comment: ['This is the short form for the Super key on the keyboard'] }, \"Super\"),\r\n separator: '+',\r\n});\r\n/**\r\n * A label provider that prints modifiers in a suitable format for ARIA.\r\n */\r\nexport const AriaLabelProvider = new ModifierLabelProvider({\r\n ctrlKey: nls.localize({ key: 'ctrlKey.long', comment: ['This is the long form for the Control key on the keyboard'] }, \"Control\"),\r\n shiftKey: nls.localize({ key: 'shiftKey.long', comment: ['This is the long form for the Shift key on the keyboard'] }, \"Shift\"),\r\n altKey: nls.localize({ key: 'altKey.long', comment: ['This is the long form for the Alt key on the keyboard'] }, \"Alt\"),\r\n metaKey: nls.localize({ key: 'cmdKey.long', comment: ['This is the long form for the Command key on the keyboard'] }, \"Command\"),\r\n separator: '+',\r\n}, {\r\n ctrlKey: nls.localize({ key: 'ctrlKey.long', comment: ['This is the long form for the Control key on the keyboard'] }, \"Control\"),\r\n shiftKey: nls.localize({ key: 'shiftKey.long', comment: ['This is the long form for the Shift key on the keyboard'] }, \"Shift\"),\r\n altKey: nls.localize({ key: 'altKey.long', comment: ['This is the long form for the Alt key on the keyboard'] }, \"Alt\"),\r\n metaKey: nls.localize({ key: 'windowsKey.long', comment: ['This is the long form for the Windows key on the keyboard'] }, \"Windows\"),\r\n separator: '+',\r\n}, {\r\n ctrlKey: nls.localize({ key: 'ctrlKey.long', comment: ['This is the long form for the Control key on the keyboard'] }, \"Control\"),\r\n shiftKey: nls.localize({ key: 'shiftKey.long', comment: ['This is the long form for the Shift key on the keyboard'] }, \"Shift\"),\r\n altKey: nls.localize({ key: 'altKey.long', comment: ['This is the long form for the Alt key on the keyboard'] }, \"Alt\"),\r\n metaKey: nls.localize({ key: 'superKey.long', comment: ['This is the long form for the Super key on the keyboard'] }, \"Super\"),\r\n separator: '+',\r\n});\r\nfunction _simpleAsString(modifiers, key, labels) {\r\n if (key === null) {\r\n return '';\r\n }\r\n const result = [];\r\n // translate modifier keys: Ctrl-Shift-Alt-Meta\r\n if (modifiers.ctrlKey) {\r\n result.push(labels.ctrlKey);\r\n }\r\n if (modifiers.shiftKey) {\r\n result.push(labels.shiftKey);\r\n }\r\n if (modifiers.altKey) {\r\n result.push(labels.altKey);\r\n }\r\n if (modifiers.metaKey) {\r\n result.push(labels.metaKey);\r\n }\r\n // the actual key\r\n if (key !== '') {\r\n result.push(key);\r\n }\r\n return result.join(labels.separator);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { illegalArgument } from '../../../base/common/errors.js';\r\nimport { UILabelProvider, AriaLabelProvider } from '../../../base/common/keybindingLabels.js';\r\nimport { ResolvedKeybinding, ResolvedKeybindingPart } from '../../../base/common/keyCodes.js';\r\nexport class BaseResolvedKeybinding extends ResolvedKeybinding {\r\n constructor(os, parts) {\r\n super();\r\n if (parts.length === 0) {\r\n throw illegalArgument(`parts`);\r\n }\r\n this._os = os;\r\n this._parts = parts;\r\n }\r\n getLabel() {\r\n return UILabelProvider.toLabel(this._os, this._parts, (keybinding) => this._getLabel(keybinding));\r\n }\r\n getAriaLabel() {\r\n return AriaLabelProvider.toLabel(this._os, this._parts, (keybinding) => this._getAriaLabel(keybinding));\r\n }\r\n isChord() {\r\n return (this._parts.length > 1);\r\n }\r\n getParts() {\r\n return this._parts.map((keybinding) => this._getPart(keybinding));\r\n }\r\n _getPart(keybinding) {\r\n return new ResolvedKeybindingPart(keybinding.ctrlKey, keybinding.shiftKey, keybinding.altKey, keybinding.metaKey, this._getLabel(keybinding), this._getAriaLabel(keybinding));\r\n }\r\n getDispatchParts() {\r\n return this._parts.map((keybinding) => this._getDispatchPart(keybinding));\r\n }\r\n getSingleModifierDispatchParts() {\r\n return this._parts.map((keybinding) => this._getSingleModifierDispatchPart(keybinding));\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../nls.js';\r\nexport var AccessibilityHelpNLS;\r\n(function (AccessibilityHelpNLS) {\r\n AccessibilityHelpNLS.noSelection = nls.localize(\"noSelection\", \"No selection\");\r\n AccessibilityHelpNLS.singleSelectionRange = nls.localize(\"singleSelectionRange\", \"Line {0}, Column {1} ({2} selected)\");\r\n AccessibilityHelpNLS.singleSelection = nls.localize(\"singleSelection\", \"Line {0}, Column {1}\");\r\n AccessibilityHelpNLS.multiSelectionRange = nls.localize(\"multiSelectionRange\", \"{0} selections ({1} characters selected)\");\r\n AccessibilityHelpNLS.multiSelection = nls.localize(\"multiSelection\", \"{0} selections\");\r\n AccessibilityHelpNLS.emergencyConfOn = nls.localize(\"emergencyConfOn\", \"Now changing the setting `accessibilitySupport` to 'on'.\");\r\n AccessibilityHelpNLS.openingDocs = nls.localize(\"openingDocs\", \"Now opening the Editor Accessibility documentation page.\");\r\n AccessibilityHelpNLS.readonlyDiffEditor = nls.localize(\"readonlyDiffEditor\", \" in a read-only pane of a diff editor.\");\r\n AccessibilityHelpNLS.editableDiffEditor = nls.localize(\"editableDiffEditor\", \" in a pane of a diff editor.\");\r\n AccessibilityHelpNLS.readonlyEditor = nls.localize(\"readonlyEditor\", \" in a read-only code editor\");\r\n AccessibilityHelpNLS.editableEditor = nls.localize(\"editableEditor\", \" in a code editor\");\r\n AccessibilityHelpNLS.changeConfigToOnMac = nls.localize(\"changeConfigToOnMac\", \"To configure the editor to be optimized for usage with a Screen Reader press Command+E now.\");\r\n AccessibilityHelpNLS.changeConfigToOnWinLinux = nls.localize(\"changeConfigToOnWinLinux\", \"To configure the editor to be optimized for usage with a Screen Reader press Control+E now.\");\r\n AccessibilityHelpNLS.auto_on = nls.localize(\"auto_on\", \"The editor is configured to be optimized for usage with a Screen Reader.\");\r\n AccessibilityHelpNLS.auto_off = nls.localize(\"auto_off\", \"The editor is configured to never be optimized for usage with a Screen Reader, which is not the case at this time.\");\r\n AccessibilityHelpNLS.tabFocusModeOnMsg = nls.localize(\"tabFocusModeOnMsg\", \"Pressing Tab in the current editor will move focus to the next focusable element. Toggle this behavior by pressing {0}.\");\r\n AccessibilityHelpNLS.tabFocusModeOnMsgNoKb = nls.localize(\"tabFocusModeOnMsgNoKb\", \"Pressing Tab in the current editor will move focus to the next focusable element. The command {0} is currently not triggerable by a keybinding.\");\r\n AccessibilityHelpNLS.tabFocusModeOffMsg = nls.localize(\"tabFocusModeOffMsg\", \"Pressing Tab in the current editor will insert the tab character. Toggle this behavior by pressing {0}.\");\r\n AccessibilityHelpNLS.tabFocusModeOffMsgNoKb = nls.localize(\"tabFocusModeOffMsgNoKb\", \"Pressing Tab in the current editor will insert the tab character. The command {0} is currently not triggerable by a keybinding.\");\r\n AccessibilityHelpNLS.openDocMac = nls.localize(\"openDocMac\", \"Press Command+H now to open a browser window with more information related to editor accessibility.\");\r\n AccessibilityHelpNLS.openDocWinLinux = nls.localize(\"openDocWinLinux\", \"Press Control+H now to open a browser window with more information related to editor accessibility.\");\r\n AccessibilityHelpNLS.outroMsg = nls.localize(\"outroMsg\", \"You can dismiss this tooltip and return to the editor by pressing Escape or Shift+Escape.\");\r\n AccessibilityHelpNLS.showAccessibilityHelpAction = nls.localize(\"showAccessibilityHelpAction\", \"Show Accessibility Help\");\r\n})(AccessibilityHelpNLS || (AccessibilityHelpNLS = {}));\r\nexport var InspectTokensNLS;\r\n(function (InspectTokensNLS) {\r\n InspectTokensNLS.inspectTokensAction = nls.localize('inspectTokens', \"Developer: Inspect Tokens\");\r\n})(InspectTokensNLS || (InspectTokensNLS = {}));\r\nexport var GoToLineNLS;\r\n(function (GoToLineNLS) {\r\n GoToLineNLS.gotoLineActionLabel = nls.localize('gotoLineActionLabel', \"Go to Line/Column...\");\r\n})(GoToLineNLS || (GoToLineNLS = {}));\r\nexport var QuickHelpNLS;\r\n(function (QuickHelpNLS) {\r\n QuickHelpNLS.helpQuickAccessActionLabel = nls.localize('helpQuickAccess', \"Show all Quick Access Providers\");\r\n})(QuickHelpNLS || (QuickHelpNLS = {}));\r\nexport var QuickCommandNLS;\r\n(function (QuickCommandNLS) {\r\n QuickCommandNLS.quickCommandActionLabel = nls.localize('quickCommandActionLabel', \"Command Palette\");\r\n QuickCommandNLS.quickCommandHelp = nls.localize('quickCommandActionHelp', \"Show And Run Commands\");\r\n})(QuickCommandNLS || (QuickCommandNLS = {}));\r\nexport var QuickOutlineNLS;\r\n(function (QuickOutlineNLS) {\r\n QuickOutlineNLS.quickOutlineActionLabel = nls.localize('quickOutlineActionLabel', \"Go to Symbol...\");\r\n QuickOutlineNLS.quickOutlineByCategoryActionLabel = nls.localize('quickOutlineByCategoryActionLabel', \"Go to Symbol by Category...\");\r\n})(QuickOutlineNLS || (QuickOutlineNLS = {}));\r\nexport var StandaloneCodeEditorNLS;\r\n(function (StandaloneCodeEditorNLS) {\r\n StandaloneCodeEditorNLS.editorViewAccessibleLabel = nls.localize('editorViewAccessibleLabel', \"Editor content\");\r\n StandaloneCodeEditorNLS.accessibilityHelpMessage = nls.localize('accessibilityHelpMessage', \"Press Alt+F1 for Accessibility Options.\");\r\n})(StandaloneCodeEditorNLS || (StandaloneCodeEditorNLS = {}));\r\nexport var ToggleHighContrastNLS;\r\n(function (ToggleHighContrastNLS) {\r\n ToggleHighContrastNLS.toggleHighContrast = nls.localize('toggleHighContrast', \"Toggle High Contrast Theme\");\r\n})(ToggleHighContrastNLS || (ToggleHighContrastNLS = {}));\r\nexport var SimpleServicesNLS;\r\n(function (SimpleServicesNLS) {\r\n SimpleServicesNLS.bulkEditServiceSummary = nls.localize('bulkEditServiceSummary', \"Made {0} edits in {1} files\");\r\n})(SimpleServicesNLS || (SimpleServicesNLS = {}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { KeyCodeUtils } from '../../../base/common/keyCodes.js';\r\nimport { BaseResolvedKeybinding } from './baseResolvedKeybinding.js';\r\n/**\r\n * Do not instantiate. Use KeybindingService to get a ResolvedKeybinding seeded with information about the current kb layout.\r\n */\r\nexport class USLayoutResolvedKeybinding extends BaseResolvedKeybinding {\r\n constructor(actual, os) {\r\n super(os, actual.parts);\r\n }\r\n _keyCodeToUILabel(keyCode) {\r\n if (this._os === 2 /* Macintosh */) {\r\n switch (keyCode) {\r\n case 15 /* LeftArrow */:\r\n return '←';\r\n case 16 /* UpArrow */:\r\n return '↑';\r\n case 17 /* RightArrow */:\r\n return '→';\r\n case 18 /* DownArrow */:\r\n return '↓';\r\n }\r\n }\r\n return KeyCodeUtils.toString(keyCode);\r\n }\r\n _getLabel(keybinding) {\r\n if (keybinding.isDuplicateModifierCase()) {\r\n return '';\r\n }\r\n return this._keyCodeToUILabel(keybinding.keyCode);\r\n }\r\n _getAriaLabel(keybinding) {\r\n if (keybinding.isDuplicateModifierCase()) {\r\n return '';\r\n }\r\n return KeyCodeUtils.toString(keybinding.keyCode);\r\n }\r\n _getDispatchPart(keybinding) {\r\n return USLayoutResolvedKeybinding.getDispatchStr(keybinding);\r\n }\r\n static getDispatchStr(keybinding) {\r\n if (keybinding.isModifierKey()) {\r\n return null;\r\n }\r\n let result = '';\r\n if (keybinding.ctrlKey) {\r\n result += 'ctrl+';\r\n }\r\n if (keybinding.shiftKey) {\r\n result += 'shift+';\r\n }\r\n if (keybinding.altKey) {\r\n result += 'alt+';\r\n }\r\n if (keybinding.metaKey) {\r\n result += 'meta+';\r\n }\r\n result += KeyCodeUtils.toString(keybinding.keyCode);\r\n return result;\r\n }\r\n _getSingleModifierDispatchPart(keybinding) {\r\n if (keybinding.keyCode === 5 /* Ctrl */ && !keybinding.shiftKey && !keybinding.altKey && !keybinding.metaKey) {\r\n return 'ctrl';\r\n }\r\n if (keybinding.keyCode === 4 /* Shift */ && !keybinding.ctrlKey && !keybinding.altKey && !keybinding.metaKey) {\r\n return 'shift';\r\n }\r\n if (keybinding.keyCode === 6 /* Alt */ && !keybinding.ctrlKey && !keybinding.shiftKey && !keybinding.metaKey) {\r\n return 'alt';\r\n }\r\n if (keybinding.keyCode === 57 /* Meta */ && !keybinding.ctrlKey && !keybinding.shiftKey && !keybinding.altKey) {\r\n return 'meta';\r\n }\r\n return null;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport BaseSeverity from '../../../base/common/severity.js';\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nexport var Severity = BaseSeverity;\r\nexport const INotificationService = createDecorator('notificationService');\r\nexport class NoOpNotification {\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nimport { TernarySearchTree } from '../../../base/common/map.js';\r\nexport const IWorkspaceContextService = createDecorator('contextService');\r\nexport class Workspace {\r\n constructor(_id, folders, _configuration, _ignorePathCasing) {\r\n this._id = _id;\r\n this._configuration = _configuration;\r\n this._ignorePathCasing = _ignorePathCasing;\r\n this._foldersMap = TernarySearchTree.forUris(this._ignorePathCasing);\r\n this.folders = folders;\r\n }\r\n get folders() {\r\n return this._folders;\r\n }\r\n set folders(folders) {\r\n this._folders = folders;\r\n this.updateFoldersMap();\r\n }\r\n get id() {\r\n return this._id;\r\n }\r\n get configuration() {\r\n return this._configuration;\r\n }\r\n set configuration(configuration) {\r\n this._configuration = configuration;\r\n }\r\n getFolder(resource) {\r\n if (!resource) {\r\n return null;\r\n }\r\n return this._foldersMap.findSubstr(resource.with({\r\n scheme: resource.scheme,\r\n authority: resource.authority,\r\n path: resource.path\r\n })) || null;\r\n }\r\n updateFoldersMap() {\r\n this._foldersMap = TernarySearchTree.forUris(this._ignorePathCasing);\r\n for (const folder of this.folders) {\r\n this._foldersMap.set(folder.uri, folder);\r\n }\r\n }\r\n toJSON() {\r\n return { id: this.id, folders: this.folders, configuration: this.configuration };\r\n }\r\n}\r\nexport class WorkspaceFolder {\r\n constructor(data, raw) {\r\n this.raw = raw;\r\n this.uri = data.uri;\r\n this.index = data.index;\r\n this.name = data.name;\r\n }\r\n toJSON() {\r\n return { uri: this.uri, name: this.name, index: this.index };\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { StandardKeyboardEvent } from '../../../base/browser/keyboardEvent.js';\r\nimport { Emitter, Event } from '../../../base/common/event.js';\r\nimport { SimpleKeybinding, createKeybinding } from '../../../base/common/keyCodes.js';\r\nimport { ImmortalReference, toDisposable, DisposableStore, Disposable } from '../../../base/common/lifecycle.js';\r\nimport { OS, isLinux, isMacintosh } from '../../../base/common/platform.js';\r\nimport Severity from '../../../base/common/severity.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { isCodeEditor } from '../../browser/editorBrowser.js';\r\nimport { ResourceTextEdit } from '../../browser/services/bulkEditService.js';\r\nimport { isDiffEditorConfigurationKey, isEditorConfigurationKey } from '../../common/config/commonEditorConfig.js';\r\nimport { EditOperation } from '../../common/core/editOperation.js';\r\nimport { Position as Pos } from '../../common/core/position.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { IModelService } from '../../common/services/modelService.js';\r\nimport { CommandsRegistry } from '../../../platform/commands/common/commands.js';\r\nimport { IConfigurationService } from '../../../platform/configuration/common/configuration.js';\r\nimport { Configuration, ConfigurationModel, DefaultConfigurationModel, ConfigurationChangeEvent } from '../../../platform/configuration/common/configurationModels.js';\r\nimport { AbstractKeybindingService } from '../../../platform/keybinding/common/abstractKeybindingService.js';\r\nimport { KeybindingResolver } from '../../../platform/keybinding/common/keybindingResolver.js';\r\nimport { KeybindingsRegistry } from '../../../platform/keybinding/common/keybindingsRegistry.js';\r\nimport { ResolvedKeybindingItem } from '../../../platform/keybinding/common/resolvedKeybindingItem.js';\r\nimport { USLayoutResolvedKeybinding } from '../../../platform/keybinding/common/usLayoutResolvedKeybinding.js';\r\nimport { NoOpNotification } from '../../../platform/notification/common/notification.js';\r\nimport { WorkspaceFolder } from '../../../platform/workspace/common/workspace.js';\r\nimport { SimpleServicesNLS } from '../../common/standaloneStrings.js';\r\nexport class SimpleModel {\r\n constructor(model) {\r\n this.disposed = false;\r\n this.model = model;\r\n this._onWillDispose = new Emitter();\r\n }\r\n get textEditorModel() {\r\n return this.model;\r\n }\r\n dispose() {\r\n this.disposed = true;\r\n this._onWillDispose.fire();\r\n }\r\n}\r\nfunction withTypedEditor(widget, codeEditorCallback, diffEditorCallback) {\r\n if (isCodeEditor(widget)) {\r\n // Single Editor\r\n return codeEditorCallback(widget);\r\n }\r\n else {\r\n // Diff Editor\r\n return diffEditorCallback(widget);\r\n }\r\n}\r\nlet SimpleEditorModelResolverService = class SimpleEditorModelResolverService {\r\n constructor(modelService) {\r\n this.modelService = modelService;\r\n }\r\n setEditor(editor) {\r\n this.editor = editor;\r\n }\r\n createModelReference(resource) {\r\n let model = null;\r\n if (this.editor) {\r\n model = withTypedEditor(this.editor, (editor) => this.findModel(editor, resource), (diffEditor) => this.findModel(diffEditor.getOriginalEditor(), resource) || this.findModel(diffEditor.getModifiedEditor(), resource));\r\n }\r\n if (!model) {\r\n return Promise.reject(new Error(`Model not found`));\r\n }\r\n return Promise.resolve(new ImmortalReference(new SimpleModel(model)));\r\n }\r\n findModel(editor, resource) {\r\n let model = this.modelService.getModel(resource);\r\n if (model && model.uri.toString() !== resource.toString()) {\r\n return null;\r\n }\r\n return model;\r\n }\r\n};\r\nSimpleEditorModelResolverService = __decorate([\r\n __param(0, IModelService)\r\n], SimpleEditorModelResolverService);\r\nexport { SimpleEditorModelResolverService };\r\nexport class SimpleEditorProgressService {\r\n show() {\r\n return SimpleEditorProgressService.NULL_PROGRESS_RUNNER;\r\n }\r\n showWhile(promise, delay) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield promise;\r\n });\r\n }\r\n}\r\nSimpleEditorProgressService.NULL_PROGRESS_RUNNER = {\r\n done: () => { },\r\n total: () => { },\r\n worked: () => { }\r\n};\r\nexport class SimpleDialogService {\r\n confirm(confirmation) {\r\n return this.doConfirm(confirmation).then(confirmed => {\r\n return {\r\n confirmed,\r\n checkboxChecked: false // unsupported\r\n };\r\n });\r\n }\r\n doConfirm(confirmation) {\r\n let messageText = confirmation.message;\r\n if (confirmation.detail) {\r\n messageText = messageText + '\\n\\n' + confirmation.detail;\r\n }\r\n return Promise.resolve(window.confirm(messageText));\r\n }\r\n show(severity, message, buttons, options) {\r\n return Promise.resolve({ choice: 0 });\r\n }\r\n}\r\nexport class SimpleNotificationService {\r\n info(message) {\r\n return this.notify({ severity: Severity.Info, message });\r\n }\r\n warn(message) {\r\n return this.notify({ severity: Severity.Warning, message });\r\n }\r\n error(error) {\r\n return this.notify({ severity: Severity.Error, message: error });\r\n }\r\n notify(notification) {\r\n switch (notification.severity) {\r\n case Severity.Error:\r\n console.error(notification.message);\r\n break;\r\n case Severity.Warning:\r\n console.warn(notification.message);\r\n break;\r\n default:\r\n console.log(notification.message);\r\n break;\r\n }\r\n return SimpleNotificationService.NO_OP;\r\n }\r\n status(message, options) {\r\n return Disposable.None;\r\n }\r\n}\r\nSimpleNotificationService.NO_OP = new NoOpNotification();\r\nexport class StandaloneCommandService {\r\n constructor(instantiationService) {\r\n this._onWillExecuteCommand = new Emitter();\r\n this._onDidExecuteCommand = new Emitter();\r\n this.onDidExecuteCommand = this._onDidExecuteCommand.event;\r\n this._instantiationService = instantiationService;\r\n }\r\n executeCommand(id, ...args) {\r\n const command = CommandsRegistry.getCommand(id);\r\n if (!command) {\r\n return Promise.reject(new Error(`command '${id}' not found`));\r\n }\r\n try {\r\n this._onWillExecuteCommand.fire({ commandId: id, args });\r\n const result = this._instantiationService.invokeFunction.apply(this._instantiationService, [command.handler, ...args]);\r\n this._onDidExecuteCommand.fire({ commandId: id, args });\r\n return Promise.resolve(result);\r\n }\r\n catch (err) {\r\n return Promise.reject(err);\r\n }\r\n }\r\n}\r\nexport class StandaloneKeybindingService extends AbstractKeybindingService {\r\n constructor(contextKeyService, commandService, telemetryService, notificationService, logService, domNode) {\r\n super(contextKeyService, commandService, telemetryService, notificationService, logService);\r\n this._cachedResolver = null;\r\n this._dynamicKeybindings = [];\r\n // for standard keybindings\r\n this._register(dom.addDisposableListener(domNode, dom.EventType.KEY_DOWN, (e) => {\r\n const keyEvent = new StandardKeyboardEvent(e);\r\n const shouldPreventDefault = this._dispatch(keyEvent, keyEvent.target);\r\n if (shouldPreventDefault) {\r\n keyEvent.preventDefault();\r\n keyEvent.stopPropagation();\r\n }\r\n }));\r\n // for single modifier chord keybindings (e.g. shift shift)\r\n this._register(dom.addDisposableListener(window, dom.EventType.KEY_UP, (e) => {\r\n const keyEvent = new StandardKeyboardEvent(e);\r\n const shouldPreventDefault = this._singleModifierDispatch(keyEvent, keyEvent.target);\r\n if (shouldPreventDefault) {\r\n keyEvent.preventDefault();\r\n }\r\n }));\r\n }\r\n addDynamicKeybinding(commandId, _keybinding, handler, when) {\r\n const keybinding = createKeybinding(_keybinding, OS);\r\n const toDispose = new DisposableStore();\r\n if (keybinding) {\r\n this._dynamicKeybindings.push({\r\n keybinding: keybinding,\r\n command: commandId,\r\n when: when,\r\n weight1: 1000,\r\n weight2: 0,\r\n extensionId: null,\r\n isBuiltinExtension: false\r\n });\r\n toDispose.add(toDisposable(() => {\r\n for (let i = 0; i < this._dynamicKeybindings.length; i++) {\r\n let kb = this._dynamicKeybindings[i];\r\n if (kb.command === commandId) {\r\n this._dynamicKeybindings.splice(i, 1);\r\n this.updateResolver({ source: 1 /* Default */ });\r\n return;\r\n }\r\n }\r\n }));\r\n }\r\n toDispose.add(CommandsRegistry.registerCommand(commandId, handler));\r\n this.updateResolver({ source: 1 /* Default */ });\r\n return toDispose;\r\n }\r\n updateResolver(event) {\r\n this._cachedResolver = null;\r\n this._onDidUpdateKeybindings.fire(event);\r\n }\r\n _getResolver() {\r\n if (!this._cachedResolver) {\r\n const defaults = this._toNormalizedKeybindingItems(KeybindingsRegistry.getDefaultKeybindings(), true);\r\n const overrides = this._toNormalizedKeybindingItems(this._dynamicKeybindings, false);\r\n this._cachedResolver = new KeybindingResolver(defaults, overrides, (str) => this._log(str));\r\n }\r\n return this._cachedResolver;\r\n }\r\n _documentHasFocus() {\r\n return document.hasFocus();\r\n }\r\n _toNormalizedKeybindingItems(items, isDefault) {\r\n let result = [], resultLen = 0;\r\n for (const item of items) {\r\n const when = item.when || undefined;\r\n const keybinding = item.keybinding;\r\n if (!keybinding) {\r\n // This might be a removal keybinding item in user settings => accept it\r\n result[resultLen++] = new ResolvedKeybindingItem(undefined, item.command, item.commandArgs, when, isDefault, null, false);\r\n }\r\n else {\r\n const resolvedKeybindings = this.resolveKeybinding(keybinding);\r\n for (const resolvedKeybinding of resolvedKeybindings) {\r\n result[resultLen++] = new ResolvedKeybindingItem(resolvedKeybinding, item.command, item.commandArgs, when, isDefault, null, false);\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n resolveKeybinding(keybinding) {\r\n return [new USLayoutResolvedKeybinding(keybinding, OS)];\r\n }\r\n resolveKeyboardEvent(keyboardEvent) {\r\n let keybinding = new SimpleKeybinding(keyboardEvent.ctrlKey, keyboardEvent.shiftKey, keyboardEvent.altKey, keyboardEvent.metaKey, keyboardEvent.keyCode).toChord();\r\n return new USLayoutResolvedKeybinding(keybinding, OS);\r\n }\r\n}\r\nfunction isConfigurationOverrides(thing) {\r\n return thing\r\n && typeof thing === 'object'\r\n && (!thing.overrideIdentifier || typeof thing.overrideIdentifier === 'string')\r\n && (!thing.resource || thing.resource instanceof URI);\r\n}\r\nexport class SimpleConfigurationService {\r\n constructor() {\r\n this._onDidChangeConfiguration = new Emitter();\r\n this.onDidChangeConfiguration = this._onDidChangeConfiguration.event;\r\n this._configuration = new Configuration(new DefaultConfigurationModel(), new ConfigurationModel());\r\n }\r\n getValue(arg1, arg2) {\r\n const section = typeof arg1 === 'string' ? arg1 : undefined;\r\n const overrides = isConfigurationOverrides(arg1) ? arg1 : isConfigurationOverrides(arg2) ? arg2 : {};\r\n return this._configuration.getValue(section, overrides, undefined);\r\n }\r\n updateValues(values) {\r\n const previous = { data: this._configuration.toData() };\r\n let changedKeys = [];\r\n for (const entry of values) {\r\n const [key, value] = entry;\r\n if (this.getValue(key) === value) {\r\n continue;\r\n }\r\n this._configuration.updateValue(key, value);\r\n changedKeys.push(key);\r\n }\r\n if (changedKeys.length > 0) {\r\n const configurationChangeEvent = new ConfigurationChangeEvent({ keys: changedKeys, overrides: [] }, previous, this._configuration);\r\n configurationChangeEvent.source = 7 /* MEMORY */;\r\n configurationChangeEvent.sourceConfig = null;\r\n this._onDidChangeConfiguration.fire(configurationChangeEvent);\r\n }\r\n return Promise.resolve();\r\n }\r\n}\r\nexport class SimpleResourceConfigurationService {\r\n constructor(configurationService) {\r\n this.configurationService = configurationService;\r\n this._onDidChangeConfiguration = new Emitter();\r\n this.configurationService.onDidChangeConfiguration((e) => {\r\n this._onDidChangeConfiguration.fire({ affectedKeys: e.affectedKeys, affectsConfiguration: (resource, configuration) => e.affectsConfiguration(configuration) });\r\n });\r\n }\r\n getValue(resource, arg2, arg3) {\r\n const position = Pos.isIPosition(arg2) ? arg2 : null;\r\n const section = position ? (typeof arg3 === 'string' ? arg3 : undefined) : (typeof arg2 === 'string' ? arg2 : undefined);\r\n if (typeof section === 'undefined') {\r\n return this.configurationService.getValue();\r\n }\r\n return this.configurationService.getValue(section);\r\n }\r\n}\r\nlet SimpleResourcePropertiesService = class SimpleResourcePropertiesService {\r\n constructor(configurationService) {\r\n this.configurationService = configurationService;\r\n }\r\n getEOL(resource, language) {\r\n const eol = this.configurationService.getValue('files.eol', { overrideIdentifier: language, resource });\r\n if (eol && typeof eol === 'string' && eol !== 'auto') {\r\n return eol;\r\n }\r\n return (isLinux || isMacintosh) ? '\\n' : '\\r\\n';\r\n }\r\n};\r\nSimpleResourcePropertiesService = __decorate([\r\n __param(0, IConfigurationService)\r\n], SimpleResourcePropertiesService);\r\nexport { SimpleResourcePropertiesService };\r\nexport class StandaloneTelemetryService {\r\n publicLog(eventName, data) {\r\n return Promise.resolve(undefined);\r\n }\r\n publicLog2(eventName, data) {\r\n return this.publicLog(eventName, data);\r\n }\r\n}\r\nexport class SimpleWorkspaceContextService {\r\n constructor() {\r\n const resource = URI.from({ scheme: SimpleWorkspaceContextService.SCHEME, authority: 'model', path: '/' });\r\n this.workspace = { id: '4064f6ec-cb38-4ad0-af64-ee6467e63c82', folders: [new WorkspaceFolder({ uri: resource, name: '', index: 0 })] };\r\n }\r\n getWorkspace() {\r\n return this.workspace;\r\n }\r\n}\r\nSimpleWorkspaceContextService.SCHEME = 'inmemory';\r\nexport function updateConfigurationService(configurationService, source, isDiffEditor) {\r\n if (!source) {\r\n return;\r\n }\r\n if (!(configurationService instanceof SimpleConfigurationService)) {\r\n return;\r\n }\r\n let toUpdate = [];\r\n Object.keys(source).forEach((key) => {\r\n if (isEditorConfigurationKey(key)) {\r\n toUpdate.push([`editor.${key}`, source[key]]);\r\n }\r\n if (isDiffEditor && isDiffEditorConfigurationKey(key)) {\r\n toUpdate.push([`diffEditor.${key}`, source[key]]);\r\n }\r\n });\r\n if (toUpdate.length > 0) {\r\n configurationService.updateValues(toUpdate);\r\n }\r\n}\r\nexport class SimpleBulkEditService {\r\n constructor(_modelService) {\r\n this._modelService = _modelService;\r\n //\r\n }\r\n hasPreviewHandler() {\r\n return false;\r\n }\r\n apply(edits, _options) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const textEdits = new Map();\r\n for (let edit of edits) {\r\n if (!(edit instanceof ResourceTextEdit)) {\r\n throw new Error('bad edit - only text edits are supported');\r\n }\r\n const model = this._modelService.getModel(edit.resource);\r\n if (!model) {\r\n throw new Error('bad edit - model not found');\r\n }\r\n if (typeof edit.versionId === 'number' && model.getVersionId() !== edit.versionId) {\r\n throw new Error('bad state - model changed in the meantime');\r\n }\r\n let array = textEdits.get(model);\r\n if (!array) {\r\n array = [];\r\n textEdits.set(model, array);\r\n }\r\n array.push(EditOperation.replaceMove(Range.lift(edit.textEdit.range), edit.textEdit.text));\r\n }\r\n let totalEdits = 0;\r\n let totalFiles = 0;\r\n for (const [model, edits] of textEdits) {\r\n model.pushStackElement();\r\n model.pushEditOperations([], edits, () => []);\r\n model.pushStackElement();\r\n totalFiles += 1;\r\n totalEdits += edits.length;\r\n }\r\n return {\r\n ariaSummary: strings.format(SimpleServicesNLS.bulkEditServiceSummary, totalEdits, totalFiles)\r\n };\r\n });\r\n }\r\n}\r\nexport class SimpleUriLabelService {\r\n getUriLabel(resource, options) {\r\n if (resource.scheme === 'file') {\r\n return resource.fsPath;\r\n }\r\n return resource.path;\r\n }\r\n}\r\nexport class SimpleLayoutService {\r\n constructor(_codeEditorService, _container) {\r\n this._codeEditorService = _codeEditorService;\r\n this._container = _container;\r\n this.onDidLayout = Event.None;\r\n }\r\n get dimension() {\r\n if (!this._dimension) {\r\n this._dimension = dom.getClientArea(window.document.body);\r\n }\r\n return this._dimension;\r\n }\r\n get container() {\r\n return this._container;\r\n }\r\n focus() {\r\n var _a;\r\n (_a = this._codeEditorService.getFocusedCodeEditor()) === null || _a === void 0 ? void 0 : _a.focus();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './aria.css';\r\nimport { isMacintosh } from '../../../common/platform.js';\r\nimport * as dom from '../../dom.js';\r\n// Use a max length since we are inserting the whole msg in the DOM and that can cause browsers to freeze for long messages #94233\r\nconst MAX_MESSAGE_LENGTH = 20000;\r\nlet ariaContainer;\r\nlet alertContainer;\r\nlet alertContainer2;\r\nlet statusContainer;\r\nlet statusContainer2;\r\nexport function setARIAContainer(parent) {\r\n ariaContainer = document.createElement('div');\r\n ariaContainer.className = 'monaco-aria-container';\r\n const createAlertContainer = () => {\r\n const element = document.createElement('div');\r\n element.className = 'monaco-alert';\r\n element.setAttribute('role', 'alert');\r\n element.setAttribute('aria-atomic', 'true');\r\n ariaContainer.appendChild(element);\r\n return element;\r\n };\r\n alertContainer = createAlertContainer();\r\n alertContainer2 = createAlertContainer();\r\n const createStatusContainer = () => {\r\n const element = document.createElement('div');\r\n element.className = 'monaco-status';\r\n element.setAttribute('role', 'complementary');\r\n element.setAttribute('aria-live', 'polite');\r\n element.setAttribute('aria-atomic', 'true');\r\n ariaContainer.appendChild(element);\r\n return element;\r\n };\r\n statusContainer = createStatusContainer();\r\n statusContainer2 = createStatusContainer();\r\n parent.appendChild(ariaContainer);\r\n}\r\n/**\r\n * Given the provided message, will make sure that it is read as alert to screen readers.\r\n */\r\nexport function alert(msg) {\r\n if (!ariaContainer) {\r\n return;\r\n }\r\n // Use alternate containers such that duplicated messages get read out by screen readers #99466\r\n if (alertContainer.textContent !== msg) {\r\n dom.clearNode(alertContainer2);\r\n insertMessage(alertContainer, msg);\r\n }\r\n else {\r\n dom.clearNode(alertContainer);\r\n insertMessage(alertContainer2, msg);\r\n }\r\n}\r\n/**\r\n * Given the provided message, will make sure that it is read as status to screen readers.\r\n */\r\nexport function status(msg) {\r\n if (!ariaContainer) {\r\n return;\r\n }\r\n if (isMacintosh) {\r\n alert(msg); // VoiceOver does not seem to support status role\r\n }\r\n else {\r\n if (statusContainer.textContent !== msg) {\r\n dom.clearNode(statusContainer2);\r\n insertMessage(statusContainer, msg);\r\n }\r\n else {\r\n dom.clearNode(statusContainer);\r\n insertMessage(statusContainer2, msg);\r\n }\r\n }\r\n}\r\nfunction insertMessage(target, msg) {\r\n dom.clearNode(target);\r\n if (msg.length > MAX_MESSAGE_LENGTH) {\r\n msg = msg.substr(0, MAX_MESSAGE_LENGTH);\r\n }\r\n target.textContent = msg;\r\n // See https://www.paciellogroup.com/blog/2012/06/html5-accessibility-chops-aria-rolealert-browser-support/\r\n target.style.visibility = 'hidden';\r\n target.style.visibility = 'visible';\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nexport const IMarkerDecorationsService = createDecorator('markerDecorationsService');\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport * as nls from '../../nls.js';\r\nimport { Disposable } from './lifecycle.js';\r\nimport { Emitter } from './event.js';\r\nexport class Action extends Disposable {\r\n constructor(id, label = '', cssClass = '', enabled = true, actionCallback) {\r\n super();\r\n this._onDidChange = this._register(new Emitter());\r\n this.onDidChange = this._onDidChange.event;\r\n this._enabled = true;\r\n this._checked = false;\r\n this._id = id;\r\n this._label = label;\r\n this._cssClass = cssClass;\r\n this._enabled = enabled;\r\n this._actionCallback = actionCallback;\r\n }\r\n get id() {\r\n return this._id;\r\n }\r\n get label() {\r\n return this._label;\r\n }\r\n set label(value) {\r\n this._setLabel(value);\r\n }\r\n _setLabel(value) {\r\n if (this._label !== value) {\r\n this._label = value;\r\n this._onDidChange.fire({ label: value });\r\n }\r\n }\r\n get tooltip() {\r\n return this._tooltip || '';\r\n }\r\n set tooltip(value) {\r\n this._setTooltip(value);\r\n }\r\n _setTooltip(value) {\r\n if (this._tooltip !== value) {\r\n this._tooltip = value;\r\n this._onDidChange.fire({ tooltip: value });\r\n }\r\n }\r\n get class() {\r\n return this._cssClass;\r\n }\r\n set class(value) {\r\n this._setClass(value);\r\n }\r\n _setClass(value) {\r\n if (this._cssClass !== value) {\r\n this._cssClass = value;\r\n this._onDidChange.fire({ class: value });\r\n }\r\n }\r\n get enabled() {\r\n return this._enabled;\r\n }\r\n set enabled(value) {\r\n this._setEnabled(value);\r\n }\r\n _setEnabled(value) {\r\n if (this._enabled !== value) {\r\n this._enabled = value;\r\n this._onDidChange.fire({ enabled: value });\r\n }\r\n }\r\n get checked() {\r\n return this._checked;\r\n }\r\n set checked(value) {\r\n this._setChecked(value);\r\n }\r\n _setChecked(value) {\r\n if (this._checked !== value) {\r\n this._checked = value;\r\n this._onDidChange.fire({ checked: value });\r\n }\r\n }\r\n run(event, data) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (this._actionCallback) {\r\n yield this._actionCallback(event);\r\n }\r\n });\r\n }\r\n}\r\nexport class ActionRunner extends Disposable {\r\n constructor() {\r\n super(...arguments);\r\n this._onBeforeRun = this._register(new Emitter());\r\n this.onBeforeRun = this._onBeforeRun.event;\r\n this._onDidRun = this._register(new Emitter());\r\n this.onDidRun = this._onDidRun.event;\r\n }\r\n run(action, context) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!action.enabled) {\r\n return;\r\n }\r\n this._onBeforeRun.fire({ action });\r\n let error = undefined;\r\n try {\r\n yield this.runAction(action, context);\r\n }\r\n catch (e) {\r\n error = e;\r\n }\r\n this._onDidRun.fire({ action, error });\r\n });\r\n }\r\n runAction(action, context) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield action.run(context);\r\n });\r\n }\r\n}\r\nexport class Separator extends Action {\r\n constructor(label) {\r\n super(Separator.ID, label, label ? 'separator text' : 'separator');\r\n this.checked = false;\r\n this.enabled = false;\r\n }\r\n}\r\nSeparator.ID = 'vs.actions.separator';\r\nexport class SubmenuAction {\r\n constructor(id, label, actions, cssClass) {\r\n this.tooltip = '';\r\n this.enabled = true;\r\n this.checked = false;\r\n this.id = id;\r\n this.label = label;\r\n this.class = cssClass;\r\n this._actions = actions;\r\n }\r\n get actions() { return this._actions; }\r\n dispose() {\r\n // there is NOTHING to dispose and the SubmenuAction should\r\n // never have anything to dispose as it is a convenience type\r\n // to bridge into the rendering world.\r\n }\r\n run() {\r\n return __awaiter(this, void 0, void 0, function* () { });\r\n }\r\n}\r\nexport class EmptySubmenuAction extends Action {\r\n constructor() {\r\n super(EmptySubmenuAction.ID, nls.localize('submenu.empty', '(empty)'), undefined, false);\r\n }\r\n}\r\nEmptySubmenuAction.ID = 'vs.actions.empty';\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { isFalsyOrWhitespace } from '../../../base/common/strings.js';\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nimport { userAgent, isMacintosh, isLinux, isWindows, isWeb } from '../../../base/common/platform.js';\r\nlet _userAgent = userAgent || '';\r\nconst STATIC_VALUES = new Map();\r\nSTATIC_VALUES.set('false', false);\r\nSTATIC_VALUES.set('true', true);\r\nSTATIC_VALUES.set('isMac', isMacintosh);\r\nSTATIC_VALUES.set('isLinux', isLinux);\r\nSTATIC_VALUES.set('isWindows', isWindows);\r\nSTATIC_VALUES.set('isWeb', isWeb);\r\nSTATIC_VALUES.set('isMacNative', isMacintosh && !isWeb);\r\nSTATIC_VALUES.set('isEdge', _userAgent.indexOf('Edg/') >= 0);\r\nSTATIC_VALUES.set('isFirefox', _userAgent.indexOf('Firefox') >= 0);\r\nSTATIC_VALUES.set('isChrome', _userAgent.indexOf('Chrome') >= 0);\r\nSTATIC_VALUES.set('isSafari', _userAgent.indexOf('Safari') >= 0);\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\nexport class ContextKeyExpr {\r\n static has(key) {\r\n return ContextKeyDefinedExpr.create(key);\r\n }\r\n static equals(key, value) {\r\n return ContextKeyEqualsExpr.create(key, value);\r\n }\r\n static regex(key, value) {\r\n return ContextKeyRegexExpr.create(key, value);\r\n }\r\n static not(key) {\r\n return ContextKeyNotExpr.create(key);\r\n }\r\n static and(...expr) {\r\n return ContextKeyAndExpr.create(expr);\r\n }\r\n static or(...expr) {\r\n return ContextKeyOrExpr.create(expr);\r\n }\r\n static deserialize(serialized, strict = false) {\r\n if (!serialized) {\r\n return undefined;\r\n }\r\n return this._deserializeOrExpression(serialized, strict);\r\n }\r\n static _deserializeOrExpression(serialized, strict) {\r\n let pieces = serialized.split('||');\r\n return ContextKeyOrExpr.create(pieces.map(p => this._deserializeAndExpression(p, strict)));\r\n }\r\n static _deserializeAndExpression(serialized, strict) {\r\n let pieces = serialized.split('&&');\r\n return ContextKeyAndExpr.create(pieces.map(p => this._deserializeOne(p, strict)));\r\n }\r\n static _deserializeOne(serializedOne, strict) {\r\n serializedOne = serializedOne.trim();\r\n if (serializedOne.indexOf('!=') >= 0) {\r\n let pieces = serializedOne.split('!=');\r\n return ContextKeyNotEqualsExpr.create(pieces[0].trim(), this._deserializeValue(pieces[1], strict));\r\n }\r\n if (serializedOne.indexOf('==') >= 0) {\r\n let pieces = serializedOne.split('==');\r\n return ContextKeyEqualsExpr.create(pieces[0].trim(), this._deserializeValue(pieces[1], strict));\r\n }\r\n if (serializedOne.indexOf('=~') >= 0) {\r\n let pieces = serializedOne.split('=~');\r\n return ContextKeyRegexExpr.create(pieces[0].trim(), this._deserializeRegexValue(pieces[1], strict));\r\n }\r\n if (serializedOne.indexOf(' in ') >= 0) {\r\n let pieces = serializedOne.split(' in ');\r\n return ContextKeyInExpr.create(pieces[0].trim(), pieces[1].trim());\r\n }\r\n if (/^[^<=>]+>=[^<=>]+$/.test(serializedOne)) {\r\n const pieces = serializedOne.split('>=');\r\n return ContextKeyGreaterEqualsExpr.create(pieces[0].trim(), pieces[1].trim());\r\n }\r\n if (/^[^<=>]+>[^<=>]+$/.test(serializedOne)) {\r\n const pieces = serializedOne.split('>');\r\n return ContextKeyGreaterExpr.create(pieces[0].trim(), pieces[1].trim());\r\n }\r\n if (/^[^<=>]+<=[^<=>]+$/.test(serializedOne)) {\r\n const pieces = serializedOne.split('<=');\r\n return ContextKeySmallerEqualsExpr.create(pieces[0].trim(), pieces[1].trim());\r\n }\r\n if (/^[^<=>]+<[^<=>]+$/.test(serializedOne)) {\r\n const pieces = serializedOne.split('<');\r\n return ContextKeySmallerExpr.create(pieces[0].trim(), pieces[1].trim());\r\n }\r\n if (/^\\!\\s*/.test(serializedOne)) {\r\n return ContextKeyNotExpr.create(serializedOne.substr(1).trim());\r\n }\r\n return ContextKeyDefinedExpr.create(serializedOne);\r\n }\r\n static _deserializeValue(serializedValue, strict) {\r\n serializedValue = serializedValue.trim();\r\n if (serializedValue === 'true') {\r\n return true;\r\n }\r\n if (serializedValue === 'false') {\r\n return false;\r\n }\r\n let m = /^'([^']*)'$/.exec(serializedValue);\r\n if (m) {\r\n return m[1].trim();\r\n }\r\n return serializedValue;\r\n }\r\n static _deserializeRegexValue(serializedValue, strict) {\r\n if (isFalsyOrWhitespace(serializedValue)) {\r\n if (strict) {\r\n throw new Error('missing regexp-value for =~-expression');\r\n }\r\n else {\r\n console.warn('missing regexp-value for =~-expression');\r\n }\r\n return null;\r\n }\r\n let start = serializedValue.indexOf('/');\r\n let end = serializedValue.lastIndexOf('/');\r\n if (start === end || start < 0 /* || to < 0 */) {\r\n if (strict) {\r\n throw new Error(`bad regexp-value '${serializedValue}', missing /-enclosure`);\r\n }\r\n else {\r\n console.warn(`bad regexp-value '${serializedValue}', missing /-enclosure`);\r\n }\r\n return null;\r\n }\r\n let value = serializedValue.slice(start + 1, end);\r\n let caseIgnoreFlag = serializedValue[end + 1] === 'i' ? 'i' : '';\r\n try {\r\n return new RegExp(value, caseIgnoreFlag);\r\n }\r\n catch (e) {\r\n if (strict) {\r\n throw new Error(`bad regexp-value '${serializedValue}', parse error: ${e}`);\r\n }\r\n else {\r\n console.warn(`bad regexp-value '${serializedValue}', parse error: ${e}`);\r\n }\r\n return null;\r\n }\r\n }\r\n}\r\nfunction cmp(a, b) {\r\n return a.cmp(b);\r\n}\r\nexport class ContextKeyFalseExpr {\r\n constructor() {\r\n this.type = 0 /* False */;\r\n }\r\n cmp(other) {\r\n return this.type - other.type;\r\n }\r\n equals(other) {\r\n return (other.type === this.type);\r\n }\r\n evaluate(context) {\r\n return false;\r\n }\r\n serialize() {\r\n return 'false';\r\n }\r\n keys() {\r\n return [];\r\n }\r\n negate() {\r\n return ContextKeyTrueExpr.INSTANCE;\r\n }\r\n}\r\nContextKeyFalseExpr.INSTANCE = new ContextKeyFalseExpr();\r\nexport class ContextKeyTrueExpr {\r\n constructor() {\r\n this.type = 1 /* True */;\r\n }\r\n cmp(other) {\r\n return this.type - other.type;\r\n }\r\n equals(other) {\r\n return (other.type === this.type);\r\n }\r\n evaluate(context) {\r\n return true;\r\n }\r\n serialize() {\r\n return 'true';\r\n }\r\n keys() {\r\n return [];\r\n }\r\n negate() {\r\n return ContextKeyFalseExpr.INSTANCE;\r\n }\r\n}\r\nContextKeyTrueExpr.INSTANCE = new ContextKeyTrueExpr();\r\nexport class ContextKeyDefinedExpr {\r\n constructor(key) {\r\n this.key = key;\r\n this.type = 2 /* Defined */;\r\n }\r\n static create(key) {\r\n const staticValue = STATIC_VALUES.get(key);\r\n if (typeof staticValue === 'boolean') {\r\n return staticValue ? ContextKeyTrueExpr.INSTANCE : ContextKeyFalseExpr.INSTANCE;\r\n }\r\n return new ContextKeyDefinedExpr(key);\r\n }\r\n cmp(other) {\r\n if (other.type !== this.type) {\r\n return this.type - other.type;\r\n }\r\n return cmp1(this.key, other.key);\r\n }\r\n equals(other) {\r\n if (other.type === this.type) {\r\n return (this.key === other.key);\r\n }\r\n return false;\r\n }\r\n evaluate(context) {\r\n return (!!context.getValue(this.key));\r\n }\r\n serialize() {\r\n return this.key;\r\n }\r\n keys() {\r\n return [this.key];\r\n }\r\n negate() {\r\n return ContextKeyNotExpr.create(this.key);\r\n }\r\n}\r\nexport class ContextKeyEqualsExpr {\r\n constructor(key, value) {\r\n this.key = key;\r\n this.value = value;\r\n this.type = 4 /* Equals */;\r\n }\r\n static create(key, value) {\r\n if (typeof value === 'boolean') {\r\n return (value ? ContextKeyDefinedExpr.create(key) : ContextKeyNotExpr.create(key));\r\n }\r\n const staticValue = STATIC_VALUES.get(key);\r\n if (typeof staticValue === 'boolean') {\r\n const trueValue = staticValue ? 'true' : 'false';\r\n return (value === trueValue ? ContextKeyTrueExpr.INSTANCE : ContextKeyFalseExpr.INSTANCE);\r\n }\r\n return new ContextKeyEqualsExpr(key, value);\r\n }\r\n cmp(other) {\r\n if (other.type !== this.type) {\r\n return this.type - other.type;\r\n }\r\n return cmp2(this.key, this.value, other.key, other.value);\r\n }\r\n equals(other) {\r\n if (other.type === this.type) {\r\n return (this.key === other.key && this.value === other.value);\r\n }\r\n return false;\r\n }\r\n evaluate(context) {\r\n // Intentional ==\r\n // eslint-disable-next-line eqeqeq\r\n return (context.getValue(this.key) == this.value);\r\n }\r\n serialize() {\r\n return `${this.key} == '${this.value}'`;\r\n }\r\n keys() {\r\n return [this.key];\r\n }\r\n negate() {\r\n return ContextKeyNotEqualsExpr.create(this.key, this.value);\r\n }\r\n}\r\nexport class ContextKeyInExpr {\r\n constructor(key, valueKey) {\r\n this.key = key;\r\n this.valueKey = valueKey;\r\n this.type = 10 /* In */;\r\n }\r\n static create(key, valueKey) {\r\n return new ContextKeyInExpr(key, valueKey);\r\n }\r\n cmp(other) {\r\n if (other.type !== this.type) {\r\n return this.type - other.type;\r\n }\r\n return cmp2(this.key, this.valueKey, other.key, other.valueKey);\r\n }\r\n equals(other) {\r\n if (other.type === this.type) {\r\n return (this.key === other.key && this.valueKey === other.valueKey);\r\n }\r\n return false;\r\n }\r\n evaluate(context) {\r\n const source = context.getValue(this.valueKey);\r\n const item = context.getValue(this.key);\r\n if (Array.isArray(source)) {\r\n return (source.indexOf(item) >= 0);\r\n }\r\n if (typeof item === 'string' && typeof source === 'object' && source !== null) {\r\n return hasOwnProperty.call(source, item);\r\n }\r\n return false;\r\n }\r\n serialize() {\r\n return `${this.key} in '${this.valueKey}'`;\r\n }\r\n keys() {\r\n return [this.key, this.valueKey];\r\n }\r\n negate() {\r\n return ContextKeyNotInExpr.create(this);\r\n }\r\n}\r\nexport class ContextKeyNotInExpr {\r\n constructor(_actual) {\r\n this._actual = _actual;\r\n this.type = 11 /* NotIn */;\r\n //\r\n }\r\n static create(actual) {\r\n return new ContextKeyNotInExpr(actual);\r\n }\r\n cmp(other) {\r\n if (other.type !== this.type) {\r\n return this.type - other.type;\r\n }\r\n return this._actual.cmp(other._actual);\r\n }\r\n equals(other) {\r\n if (other.type === this.type) {\r\n return this._actual.equals(other._actual);\r\n }\r\n return false;\r\n }\r\n evaluate(context) {\r\n return !this._actual.evaluate(context);\r\n }\r\n serialize() {\r\n throw new Error('Method not implemented.');\r\n }\r\n keys() {\r\n return this._actual.keys();\r\n }\r\n negate() {\r\n return this._actual;\r\n }\r\n}\r\nexport class ContextKeyNotEqualsExpr {\r\n constructor(key, value) {\r\n this.key = key;\r\n this.value = value;\r\n this.type = 5 /* NotEquals */;\r\n }\r\n static create(key, value) {\r\n if (typeof value === 'boolean') {\r\n if (value) {\r\n return ContextKeyNotExpr.create(key);\r\n }\r\n return ContextKeyDefinedExpr.create(key);\r\n }\r\n const staticValue = STATIC_VALUES.get(key);\r\n if (typeof staticValue === 'boolean') {\r\n const falseValue = staticValue ? 'true' : 'false';\r\n return (value === falseValue ? ContextKeyFalseExpr.INSTANCE : ContextKeyTrueExpr.INSTANCE);\r\n }\r\n return new ContextKeyNotEqualsExpr(key, value);\r\n }\r\n cmp(other) {\r\n if (other.type !== this.type) {\r\n return this.type - other.type;\r\n }\r\n return cmp2(this.key, this.value, other.key, other.value);\r\n }\r\n equals(other) {\r\n if (other.type === this.type) {\r\n return (this.key === other.key && this.value === other.value);\r\n }\r\n return false;\r\n }\r\n evaluate(context) {\r\n // Intentional !=\r\n // eslint-disable-next-line eqeqeq\r\n return (context.getValue(this.key) != this.value);\r\n }\r\n serialize() {\r\n return `${this.key} != '${this.value}'`;\r\n }\r\n keys() {\r\n return [this.key];\r\n }\r\n negate() {\r\n return ContextKeyEqualsExpr.create(this.key, this.value);\r\n }\r\n}\r\nexport class ContextKeyNotExpr {\r\n constructor(key) {\r\n this.key = key;\r\n this.type = 3 /* Not */;\r\n }\r\n static create(key) {\r\n const staticValue = STATIC_VALUES.get(key);\r\n if (typeof staticValue === 'boolean') {\r\n return (staticValue ? ContextKeyFalseExpr.INSTANCE : ContextKeyTrueExpr.INSTANCE);\r\n }\r\n return new ContextKeyNotExpr(key);\r\n }\r\n cmp(other) {\r\n if (other.type !== this.type) {\r\n return this.type - other.type;\r\n }\r\n return cmp1(this.key, other.key);\r\n }\r\n equals(other) {\r\n if (other.type === this.type) {\r\n return (this.key === other.key);\r\n }\r\n return false;\r\n }\r\n evaluate(context) {\r\n return (!context.getValue(this.key));\r\n }\r\n serialize() {\r\n return `!${this.key}`;\r\n }\r\n keys() {\r\n return [this.key];\r\n }\r\n negate() {\r\n return ContextKeyDefinedExpr.create(this.key);\r\n }\r\n}\r\nexport class ContextKeyGreaterExpr {\r\n constructor(key, value) {\r\n this.key = key;\r\n this.value = value;\r\n this.type = 12 /* Greater */;\r\n }\r\n static create(key, value) {\r\n return new ContextKeyGreaterExpr(key, value);\r\n }\r\n cmp(other) {\r\n if (other.type !== this.type) {\r\n return this.type - other.type;\r\n }\r\n return cmp2(this.key, this.value, other.key, other.value);\r\n }\r\n equals(other) {\r\n if (other.type === this.type) {\r\n return (this.key === other.key && this.value === other.value);\r\n }\r\n return false;\r\n }\r\n evaluate(context) {\r\n return (parseFloat(context.getValue(this.key)) > parseFloat(this.value));\r\n }\r\n serialize() {\r\n return `${this.key} > ${this.value}`;\r\n }\r\n keys() {\r\n return [this.key];\r\n }\r\n negate() {\r\n return ContextKeySmallerEqualsExpr.create(this.key, this.value);\r\n }\r\n}\r\nexport class ContextKeyGreaterEqualsExpr {\r\n constructor(key, value) {\r\n this.key = key;\r\n this.value = value;\r\n this.type = 13 /* GreaterEquals */;\r\n }\r\n static create(key, value) {\r\n return new ContextKeyGreaterEqualsExpr(key, value);\r\n }\r\n cmp(other) {\r\n if (other.type !== this.type) {\r\n return this.type - other.type;\r\n }\r\n return cmp2(this.key, this.value, other.key, other.value);\r\n }\r\n equals(other) {\r\n if (other.type === this.type) {\r\n return (this.key === other.key && this.value === other.value);\r\n }\r\n return false;\r\n }\r\n evaluate(context) {\r\n return (parseFloat(context.getValue(this.key)) >= parseFloat(this.value));\r\n }\r\n serialize() {\r\n return `${this.key} >= ${this.value}`;\r\n }\r\n keys() {\r\n return [this.key];\r\n }\r\n negate() {\r\n return ContextKeySmallerExpr.create(this.key, this.value);\r\n }\r\n}\r\nexport class ContextKeySmallerExpr {\r\n constructor(key, value) {\r\n this.key = key;\r\n this.value = value;\r\n this.type = 14 /* Smaller */;\r\n }\r\n static create(key, value) {\r\n return new ContextKeySmallerExpr(key, value);\r\n }\r\n cmp(other) {\r\n if (other.type !== this.type) {\r\n return this.type - other.type;\r\n }\r\n return cmp2(this.key, this.value, other.key, other.value);\r\n }\r\n equals(other) {\r\n if (other.type === this.type) {\r\n return (this.key === other.key && this.value === other.value);\r\n }\r\n return false;\r\n }\r\n evaluate(context) {\r\n return (parseFloat(context.getValue(this.key)) < parseFloat(this.value));\r\n }\r\n serialize() {\r\n return `${this.key} < ${this.value}`;\r\n }\r\n keys() {\r\n return [this.key];\r\n }\r\n negate() {\r\n return ContextKeyGreaterEqualsExpr.create(this.key, this.value);\r\n }\r\n}\r\nexport class ContextKeySmallerEqualsExpr {\r\n constructor(key, value) {\r\n this.key = key;\r\n this.value = value;\r\n this.type = 15 /* SmallerEquals */;\r\n }\r\n static create(key, value) {\r\n return new ContextKeySmallerEqualsExpr(key, value);\r\n }\r\n cmp(other) {\r\n if (other.type !== this.type) {\r\n return this.type - other.type;\r\n }\r\n return cmp2(this.key, this.value, other.key, other.value);\r\n }\r\n equals(other) {\r\n if (other.type === this.type) {\r\n return (this.key === other.key && this.value === other.value);\r\n }\r\n return false;\r\n }\r\n evaluate(context) {\r\n return (parseFloat(context.getValue(this.key)) <= parseFloat(this.value));\r\n }\r\n serialize() {\r\n return `${this.key} <= ${this.value}`;\r\n }\r\n keys() {\r\n return [this.key];\r\n }\r\n negate() {\r\n return ContextKeyGreaterExpr.create(this.key, this.value);\r\n }\r\n}\r\nexport class ContextKeyRegexExpr {\r\n constructor(key, regexp) {\r\n this.key = key;\r\n this.regexp = regexp;\r\n this.type = 7 /* Regex */;\r\n //\r\n }\r\n static create(key, regexp) {\r\n return new ContextKeyRegexExpr(key, regexp);\r\n }\r\n cmp(other) {\r\n if (other.type !== this.type) {\r\n return this.type - other.type;\r\n }\r\n if (this.key < other.key) {\r\n return -1;\r\n }\r\n if (this.key > other.key) {\r\n return 1;\r\n }\r\n const thisSource = this.regexp ? this.regexp.source : '';\r\n const otherSource = other.regexp ? other.regexp.source : '';\r\n if (thisSource < otherSource) {\r\n return -1;\r\n }\r\n if (thisSource > otherSource) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n equals(other) {\r\n if (other.type === this.type) {\r\n const thisSource = this.regexp ? this.regexp.source : '';\r\n const otherSource = other.regexp ? other.regexp.source : '';\r\n return (this.key === other.key && thisSource === otherSource);\r\n }\r\n return false;\r\n }\r\n evaluate(context) {\r\n let value = context.getValue(this.key);\r\n return this.regexp ? this.regexp.test(value) : false;\r\n }\r\n serialize() {\r\n const value = this.regexp\r\n ? `/${this.regexp.source}/${this.regexp.ignoreCase ? 'i' : ''}`\r\n : '/invalid/';\r\n return `${this.key} =~ ${value}`;\r\n }\r\n keys() {\r\n return [this.key];\r\n }\r\n negate() {\r\n return ContextKeyNotRegexExpr.create(this);\r\n }\r\n}\r\nexport class ContextKeyNotRegexExpr {\r\n constructor(_actual) {\r\n this._actual = _actual;\r\n this.type = 8 /* NotRegex */;\r\n //\r\n }\r\n static create(actual) {\r\n return new ContextKeyNotRegexExpr(actual);\r\n }\r\n cmp(other) {\r\n if (other.type !== this.type) {\r\n return this.type - other.type;\r\n }\r\n return this._actual.cmp(other._actual);\r\n }\r\n equals(other) {\r\n if (other.type === this.type) {\r\n return this._actual.equals(other._actual);\r\n }\r\n return false;\r\n }\r\n evaluate(context) {\r\n return !this._actual.evaluate(context);\r\n }\r\n serialize() {\r\n throw new Error('Method not implemented.');\r\n }\r\n keys() {\r\n return this._actual.keys();\r\n }\r\n negate() {\r\n return this._actual;\r\n }\r\n}\r\nexport class ContextKeyAndExpr {\r\n constructor(expr) {\r\n this.expr = expr;\r\n this.type = 6 /* And */;\r\n }\r\n static create(_expr) {\r\n return ContextKeyAndExpr._normalizeArr(_expr);\r\n }\r\n cmp(other) {\r\n if (other.type !== this.type) {\r\n return this.type - other.type;\r\n }\r\n if (this.expr.length < other.expr.length) {\r\n return -1;\r\n }\r\n if (this.expr.length > other.expr.length) {\r\n return 1;\r\n }\r\n for (let i = 0, len = this.expr.length; i < len; i++) {\r\n const r = cmp(this.expr[i], other.expr[i]);\r\n if (r !== 0) {\r\n return r;\r\n }\r\n }\r\n return 0;\r\n }\r\n equals(other) {\r\n if (other.type === this.type) {\r\n if (this.expr.length !== other.expr.length) {\r\n return false;\r\n }\r\n for (let i = 0, len = this.expr.length; i < len; i++) {\r\n if (!this.expr[i].equals(other.expr[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n evaluate(context) {\r\n for (let i = 0, len = this.expr.length; i < len; i++) {\r\n if (!this.expr[i].evaluate(context)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n static _normalizeArr(arr) {\r\n const expr = [];\r\n let hasTrue = false;\r\n for (const e of arr) {\r\n if (!e) {\r\n continue;\r\n }\r\n if (e.type === 1 /* True */) {\r\n // anything && true ==> anything\r\n hasTrue = true;\r\n continue;\r\n }\r\n if (e.type === 0 /* False */) {\r\n // anything && false ==> false\r\n return ContextKeyFalseExpr.INSTANCE;\r\n }\r\n if (e.type === 6 /* And */) {\r\n expr.push(...e.expr);\r\n continue;\r\n }\r\n expr.push(e);\r\n }\r\n if (expr.length === 0 && hasTrue) {\r\n return ContextKeyTrueExpr.INSTANCE;\r\n }\r\n if (expr.length === 0) {\r\n return undefined;\r\n }\r\n if (expr.length === 1) {\r\n return expr[0];\r\n }\r\n expr.sort(cmp);\r\n // We must distribute any OR expression because we don't support parens\r\n // OR extensions will be at the end (due to sorting rules)\r\n while (expr.length > 1) {\r\n const lastElement = expr[expr.length - 1];\r\n if (lastElement.type !== 9 /* Or */) {\r\n break;\r\n }\r\n // pop the last element\r\n expr.pop();\r\n // pop the second to last element\r\n const secondToLastElement = expr.pop();\r\n // distribute `lastElement` over `secondToLastElement`\r\n const resultElement = ContextKeyOrExpr.create(lastElement.expr.map(el => ContextKeyAndExpr.create([el, secondToLastElement])));\r\n if (resultElement) {\r\n expr.push(resultElement);\r\n expr.sort(cmp);\r\n }\r\n }\r\n if (expr.length === 1) {\r\n return expr[0];\r\n }\r\n return new ContextKeyAndExpr(expr);\r\n }\r\n serialize() {\r\n return this.expr.map(e => e.serialize()).join(' && ');\r\n }\r\n keys() {\r\n const result = [];\r\n for (let expr of this.expr) {\r\n result.push(...expr.keys());\r\n }\r\n return result;\r\n }\r\n negate() {\r\n let result = [];\r\n for (let expr of this.expr) {\r\n result.push(expr.negate());\r\n }\r\n return ContextKeyOrExpr.create(result);\r\n }\r\n}\r\nexport class ContextKeyOrExpr {\r\n constructor(expr) {\r\n this.expr = expr;\r\n this.type = 9 /* Or */;\r\n }\r\n static create(_expr) {\r\n const expr = ContextKeyOrExpr._normalizeArr(_expr);\r\n if (expr.length === 0) {\r\n return undefined;\r\n }\r\n if (expr.length === 1) {\r\n return expr[0];\r\n }\r\n return new ContextKeyOrExpr(expr);\r\n }\r\n cmp(other) {\r\n if (other.type !== this.type) {\r\n return this.type - other.type;\r\n }\r\n if (this.expr.length < other.expr.length) {\r\n return -1;\r\n }\r\n if (this.expr.length > other.expr.length) {\r\n return 1;\r\n }\r\n for (let i = 0, len = this.expr.length; i < len; i++) {\r\n const r = cmp(this.expr[i], other.expr[i]);\r\n if (r !== 0) {\r\n return r;\r\n }\r\n }\r\n return 0;\r\n }\r\n equals(other) {\r\n if (other.type === this.type) {\r\n if (this.expr.length !== other.expr.length) {\r\n return false;\r\n }\r\n for (let i = 0, len = this.expr.length; i < len; i++) {\r\n if (!this.expr[i].equals(other.expr[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n evaluate(context) {\r\n for (let i = 0, len = this.expr.length; i < len; i++) {\r\n if (this.expr[i].evaluate(context)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n static _normalizeArr(arr) {\r\n let expr = [];\r\n let hasFalse = false;\r\n if (arr) {\r\n for (let i = 0, len = arr.length; i < len; i++) {\r\n const e = arr[i];\r\n if (!e) {\r\n continue;\r\n }\r\n if (e.type === 0 /* False */) {\r\n // anything || false ==> anything\r\n hasFalse = true;\r\n continue;\r\n }\r\n if (e.type === 1 /* True */) {\r\n // anything || true ==> true\r\n return [ContextKeyTrueExpr.INSTANCE];\r\n }\r\n if (e.type === 9 /* Or */) {\r\n expr = expr.concat(e.expr);\r\n continue;\r\n }\r\n expr.push(e);\r\n }\r\n if (expr.length === 0 && hasFalse) {\r\n return [ContextKeyFalseExpr.INSTANCE];\r\n }\r\n expr.sort(cmp);\r\n }\r\n return expr;\r\n }\r\n serialize() {\r\n return this.expr.map(e => e.serialize()).join(' || ');\r\n }\r\n keys() {\r\n const result = [];\r\n for (let expr of this.expr) {\r\n result.push(...expr.keys());\r\n }\r\n return result;\r\n }\r\n negate() {\r\n let result = [];\r\n for (let expr of this.expr) {\r\n result.push(expr.negate());\r\n }\r\n const terminals = (node) => {\r\n if (node.type === 9 /* Or */) {\r\n return node.expr;\r\n }\r\n return [node];\r\n };\r\n // We don't support parens, so here we distribute the AND over the OR terminals\r\n // We always take the first 2 AND pairs and distribute them\r\n while (result.length > 1) {\r\n const LEFT = result.shift();\r\n const RIGHT = result.shift();\r\n const all = [];\r\n for (const left of terminals(LEFT)) {\r\n for (const right of terminals(RIGHT)) {\r\n all.push(ContextKeyExpr.and(left, right));\r\n }\r\n }\r\n result.unshift(ContextKeyExpr.or(...all));\r\n }\r\n return result[0];\r\n }\r\n}\r\nexport class RawContextKey extends ContextKeyDefinedExpr {\r\n constructor(key, defaultValue, metaOrHide) {\r\n super(key);\r\n this._defaultValue = defaultValue;\r\n // collect all context keys into a central place\r\n if (typeof metaOrHide === 'object') {\r\n RawContextKey._info.push(Object.assign(Object.assign({}, metaOrHide), { key }));\r\n }\r\n else if (metaOrHide !== true) {\r\n RawContextKey._info.push({ key, description: metaOrHide, type: defaultValue !== null && defaultValue !== undefined ? typeof defaultValue : undefined });\r\n }\r\n }\r\n static all() {\r\n return RawContextKey._info.values();\r\n }\r\n bindTo(target) {\r\n return target.createKey(this.key, this._defaultValue);\r\n }\r\n getValue(target) {\r\n return target.getContextKeyValue(this.key);\r\n }\r\n toNegated() {\r\n return ContextKeyExpr.not(this.key);\r\n }\r\n isEqualTo(value) {\r\n return ContextKeyExpr.equals(this.key, value);\r\n }\r\n}\r\nRawContextKey._info = [];\r\nexport const IContextKeyService = createDecorator('contextKeyService');\r\nexport const SET_CONTEXT_COMMAND_ID = 'setContext';\r\nfunction cmp1(key1, key2) {\r\n if (key1 < key2) {\r\n return -1;\r\n }\r\n if (key1 > key2) {\r\n return 1;\r\n }\r\n return 0;\r\n}\r\nfunction cmp2(key1, value1, key2, value2) {\r\n if (key1 < key2) {\r\n return -1;\r\n }\r\n if (key1 > key2) {\r\n return 1;\r\n }\r\n if (value1 < value2) {\r\n return -1;\r\n }\r\n if (value1 > value2) {\r\n return 1;\r\n }\r\n return 0;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/**\r\n * Color scheme used by the OS and by color themes.\r\n */\r\nexport var ColorScheme;\r\n(function (ColorScheme) {\r\n ColorScheme[\"DARK\"] = \"dark\";\r\n ColorScheme[\"LIGHT\"] = \"light\";\r\n ColorScheme[\"HIGH_CONTRAST\"] = \"hc\";\r\n})(ColorScheme || (ColorScheme = {}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nimport { toDisposable, Disposable } from '../../../base/common/lifecycle.js';\r\nimport * as platform from '../../registry/common/platform.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { ColorScheme } from './theme.js';\r\nimport { CSSIcon } from '../../../base/common/codicons.js';\r\nexport const IThemeService = createDecorator('themeService');\r\nexport var ThemeColor;\r\n(function (ThemeColor) {\r\n function isThemeColor(obj) {\r\n return obj && typeof obj === 'object' && typeof obj.id === 'string';\r\n }\r\n ThemeColor.isThemeColor = isThemeColor;\r\n})(ThemeColor || (ThemeColor = {}));\r\nexport function themeColorFromId(id) {\r\n return { id };\r\n}\r\nexport var ThemeIcon;\r\n(function (ThemeIcon) {\r\n function isThemeIcon(obj) {\r\n return obj && typeof obj === 'object' && typeof obj.id === 'string' && (typeof obj.color === 'undefined' || ThemeColor.isThemeColor(obj.color));\r\n }\r\n ThemeIcon.isThemeIcon = isThemeIcon;\r\n const _regexFromString = new RegExp(`^\\\\$\\\\((${CSSIcon.iconNameExpression}(?:${CSSIcon.iconModifierExpression})?)\\\\)$`);\r\n function fromString(str) {\r\n const match = _regexFromString.exec(str);\r\n if (!match) {\r\n return undefined;\r\n }\r\n let [, name] = match;\r\n return { id: name };\r\n }\r\n ThemeIcon.fromString = fromString;\r\n function modify(icon, modifier) {\r\n let id = icon.id;\r\n const tildeIndex = id.lastIndexOf('~');\r\n if (tildeIndex !== -1) {\r\n id = id.substring(0, tildeIndex);\r\n }\r\n if (modifier) {\r\n id = `${id}~${modifier}`;\r\n }\r\n return { id };\r\n }\r\n ThemeIcon.modify = modify;\r\n function isEqual(ti1, ti2) {\r\n var _a, _b;\r\n return ti1.id === ti2.id && ((_a = ti1.color) === null || _a === void 0 ? void 0 : _a.id) === ((_b = ti2.color) === null || _b === void 0 ? void 0 : _b.id);\r\n }\r\n ThemeIcon.isEqual = isEqual;\r\n function asThemeIcon(codicon, color) {\r\n return { id: codicon.id, color: color ? themeColorFromId(color) : undefined };\r\n }\r\n ThemeIcon.asThemeIcon = asThemeIcon;\r\n ThemeIcon.asClassNameArray = CSSIcon.asClassNameArray;\r\n ThemeIcon.asClassName = CSSIcon.asClassName;\r\n ThemeIcon.asCSSSelector = CSSIcon.asCSSSelector;\r\n})(ThemeIcon || (ThemeIcon = {}));\r\nexport function getThemeTypeSelector(type) {\r\n switch (type) {\r\n case ColorScheme.DARK: return 'vs-dark';\r\n case ColorScheme.HIGH_CONTRAST: return 'hc-black';\r\n default: return 'vs';\r\n }\r\n}\r\n// static theming participant\r\nexport const Extensions = {\r\n ThemingContribution: 'base.contributions.theming'\r\n};\r\nclass ThemingRegistry {\r\n constructor() {\r\n this.themingParticipants = [];\r\n this.themingParticipants = [];\r\n this.onThemingParticipantAddedEmitter = new Emitter();\r\n }\r\n onColorThemeChange(participant) {\r\n this.themingParticipants.push(participant);\r\n this.onThemingParticipantAddedEmitter.fire(participant);\r\n return toDisposable(() => {\r\n const idx = this.themingParticipants.indexOf(participant);\r\n this.themingParticipants.splice(idx, 1);\r\n });\r\n }\r\n getThemingParticipants() {\r\n return this.themingParticipants;\r\n }\r\n}\r\nlet themingRegistry = new ThemingRegistry();\r\nplatform.Registry.add(Extensions.ThemingContribution, themingRegistry);\r\nexport function registerThemingParticipant(participant) {\r\n return themingRegistry.onColorThemeChange(participant);\r\n}\r\n/**\r\n * Utility base class for all themable components.\r\n */\r\nexport class Themable extends Disposable {\r\n constructor(themeService) {\r\n super();\r\n this.themeService = themeService;\r\n this.theme = themeService.getColorTheme();\r\n // Hook up to theme changes\r\n this._register(this.themeService.onDidColorThemeChange(theme => this.onThemeChange(theme)));\r\n }\r\n onThemeChange(theme) {\r\n this.theme = theme;\r\n this.updateStyles();\r\n }\r\n updateStyles() {\r\n // Subclasses to override\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { Separator, SubmenuAction } from '../../../base/common/actions.js';\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nimport { IContextKeyService } from '../../contextkey/common/contextkey.js';\r\nimport { ICommandService } from '../../commands/common/commands.js';\r\nimport { toDisposable } from '../../../base/common/lifecycle.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { ThemeIcon } from '../../theme/common/themeService.js';\r\nimport { Iterable } from '../../../base/common/iterator.js';\r\nimport { LinkedList } from '../../../base/common/linkedList.js';\r\nimport { CSSIcon } from '../../../base/common/codicons.js';\r\nexport function isIMenuItem(item) {\r\n return item.command !== undefined;\r\n}\r\nexport class MenuId {\r\n constructor(debugName) {\r\n this.id = MenuId._idPool++;\r\n this._debugName = debugName;\r\n }\r\n}\r\nMenuId._idPool = 0;\r\nMenuId.CommandPalette = new MenuId('CommandPalette');\r\nMenuId.EditorContext = new MenuId('EditorContext');\r\nMenuId.SimpleEditorContext = new MenuId('SimpleEditorContext');\r\nMenuId.EditorContextCopy = new MenuId('EditorContextCopy');\r\nMenuId.EditorContextPeek = new MenuId('EditorContextPeek');\r\nMenuId.MenubarEditMenu = new MenuId('MenubarEditMenu');\r\nMenuId.MenubarCopy = new MenuId('MenubarCopy');\r\nMenuId.MenubarGoMenu = new MenuId('MenubarGoMenu');\r\nMenuId.MenubarSelectionMenu = new MenuId('MenubarSelectionMenu');\r\nMenuId.InlineCompletionsActions = new MenuId('InlineCompletionsActions');\r\nexport const IMenuService = createDecorator('menuService');\r\nexport const MenuRegistry = new class {\r\n constructor() {\r\n this._commands = new Map();\r\n this._menuItems = new Map();\r\n this._onDidChangeMenu = new Emitter();\r\n this.onDidChangeMenu = this._onDidChangeMenu.event;\r\n this._commandPaletteChangeEvent = {\r\n has: id => id === MenuId.CommandPalette\r\n };\r\n }\r\n addCommand(command) {\r\n return this.addCommands(Iterable.single(command));\r\n }\r\n addCommands(commands) {\r\n for (const command of commands) {\r\n this._commands.set(command.id, command);\r\n }\r\n this._onDidChangeMenu.fire(this._commandPaletteChangeEvent);\r\n return toDisposable(() => {\r\n let didChange = false;\r\n for (const command of commands) {\r\n didChange = this._commands.delete(command.id) || didChange;\r\n }\r\n if (didChange) {\r\n this._onDidChangeMenu.fire(this._commandPaletteChangeEvent);\r\n }\r\n });\r\n }\r\n getCommand(id) {\r\n return this._commands.get(id);\r\n }\r\n getCommands() {\r\n const map = new Map();\r\n this._commands.forEach((value, key) => map.set(key, value));\r\n return map;\r\n }\r\n appendMenuItem(id, item) {\r\n return this.appendMenuItems(Iterable.single({ id, item }));\r\n }\r\n appendMenuItems(items) {\r\n const changedIds = new Set();\r\n const toRemove = new LinkedList();\r\n for (const { id, item } of items) {\r\n let list = this._menuItems.get(id);\r\n if (!list) {\r\n list = new LinkedList();\r\n this._menuItems.set(id, list);\r\n }\r\n toRemove.push(list.push(item));\r\n changedIds.add(id);\r\n }\r\n this._onDidChangeMenu.fire(changedIds);\r\n return toDisposable(() => {\r\n if (toRemove.size > 0) {\r\n for (let fn of toRemove) {\r\n fn();\r\n }\r\n this._onDidChangeMenu.fire(changedIds);\r\n toRemove.clear();\r\n }\r\n });\r\n }\r\n getMenuItems(id) {\r\n let result;\r\n if (this._menuItems.has(id)) {\r\n result = [...this._menuItems.get(id)];\r\n }\r\n else {\r\n result = [];\r\n }\r\n if (id === MenuId.CommandPalette) {\r\n // CommandPalette is special because it shows\r\n // all commands by default\r\n this._appendImplicitItems(result);\r\n }\r\n return result;\r\n }\r\n _appendImplicitItems(result) {\r\n const set = new Set();\r\n for (const item of result) {\r\n if (isIMenuItem(item)) {\r\n set.add(item.command.id);\r\n if (item.alt) {\r\n set.add(item.alt.id);\r\n }\r\n }\r\n }\r\n this._commands.forEach((command, id) => {\r\n if (!set.has(id)) {\r\n result.push({ command });\r\n }\r\n });\r\n }\r\n};\r\nexport class SubmenuItemAction extends SubmenuAction {\r\n constructor(item, _menuService, _contextKeyService, _options) {\r\n super(`submenuitem.${item.submenu.id}`, typeof item.title === 'string' ? item.title : item.title.value, [], 'submenu');\r\n this.item = item;\r\n this._menuService = _menuService;\r\n this._contextKeyService = _contextKeyService;\r\n this._options = _options;\r\n }\r\n get actions() {\r\n const result = [];\r\n const menu = this._menuService.createMenu(this.item.submenu, this._contextKeyService);\r\n const groups = menu.getActions(this._options);\r\n menu.dispose();\r\n for (const [, actions] of groups) {\r\n if (actions.length > 0) {\r\n result.push(...actions);\r\n result.push(new Separator());\r\n }\r\n }\r\n if (result.length) {\r\n result.pop(); // remove last separator\r\n }\r\n return result;\r\n }\r\n}\r\n// implements IAction, does NOT extend Action, so that no one\r\n// subscribes to events of Action or modified properties\r\nlet MenuItemAction = class MenuItemAction {\r\n constructor(item, alt, options, contextKeyService, _commandService) {\r\n var _a;\r\n this._commandService = _commandService;\r\n this.id = item.id;\r\n this.label = (options === null || options === void 0 ? void 0 : options.renderShortTitle) && item.shortTitle\r\n ? (typeof item.shortTitle === 'string' ? item.shortTitle : item.shortTitle.value)\r\n : (typeof item.title === 'string' ? item.title : item.title.value);\r\n this.tooltip = (_a = item.tooltip) !== null && _a !== void 0 ? _a : '';\r\n this.enabled = !item.precondition || contextKeyService.contextMatchesRules(item.precondition);\r\n this.checked = false;\r\n if (item.toggled) {\r\n const toggled = (item.toggled.condition ? item.toggled : { condition: item.toggled });\r\n this.checked = contextKeyService.contextMatchesRules(toggled.condition);\r\n if (this.checked && toggled.tooltip) {\r\n this.tooltip = typeof toggled.tooltip === 'string' ? toggled.tooltip : toggled.tooltip.value;\r\n }\r\n if (toggled.title) {\r\n this.label = typeof toggled.title === 'string' ? toggled.title : toggled.title.value;\r\n }\r\n }\r\n this.item = item;\r\n this.alt = alt ? new MenuItemAction(alt, undefined, options, contextKeyService, _commandService) : undefined;\r\n this._options = options;\r\n if (ThemeIcon.isThemeIcon(item.icon)) {\r\n this.class = CSSIcon.asClassName(item.icon);\r\n }\r\n }\r\n dispose() {\r\n // there is NOTHING to dispose and the MenuItemAction should\r\n // never have anything to dispose as it is a convenience type\r\n // to bridge into the rendering world.\r\n }\r\n run(...args) {\r\n var _a, _b;\r\n let runArgs = [];\r\n if ((_a = this._options) === null || _a === void 0 ? void 0 : _a.arg) {\r\n runArgs = [...runArgs, this._options.arg];\r\n }\r\n if ((_b = this._options) === null || _b === void 0 ? void 0 : _b.shouldForwardArgs) {\r\n runArgs = [...runArgs, ...args];\r\n }\r\n return this._commandService.executeCommand(this.id, ...runArgs);\r\n }\r\n};\r\nMenuItemAction = __decorate([\r\n __param(3, IContextKeyService),\r\n __param(4, ICommandService)\r\n], MenuItemAction);\r\nexport { MenuItemAction };\r\n//#endregion\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nexport const ITelemetryService = createDecorator('telemetryService');\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../nls.js';\r\nimport { URI } from '../../base/common/uri.js';\r\nimport { ICodeEditorService } from './services/codeEditorService.js';\r\nimport { Position } from '../common/core/position.js';\r\nimport { IModelService } from '../common/services/modelService.js';\r\nimport { ITextModelService } from '../common/services/resolverService.js';\r\nimport { MenuId, MenuRegistry } from '../../platform/actions/common/actions.js';\r\nimport { CommandsRegistry } from '../../platform/commands/common/commands.js';\r\nimport { ContextKeyExpr, IContextKeyService } from '../../platform/contextkey/common/contextkey.js';\r\nimport { KeybindingsRegistry } from '../../platform/keybinding/common/keybindingsRegistry.js';\r\nimport { Registry } from '../../platform/registry/common/platform.js';\r\nimport { ITelemetryService } from '../../platform/telemetry/common/telemetry.js';\r\nimport { withNullAsUndefined, assertType } from '../../base/common/types.js';\r\nimport { ILogService } from '../../platform/log/common/log.js';\r\nexport class Command {\r\n constructor(opts) {\r\n this.id = opts.id;\r\n this.precondition = opts.precondition;\r\n this._kbOpts = opts.kbOpts;\r\n this._menuOpts = opts.menuOpts;\r\n this._description = opts.description;\r\n }\r\n register() {\r\n if (Array.isArray(this._menuOpts)) {\r\n this._menuOpts.forEach(this._registerMenuItem, this);\r\n }\r\n else if (this._menuOpts) {\r\n this._registerMenuItem(this._menuOpts);\r\n }\r\n if (this._kbOpts) {\r\n const kbOptsArr = Array.isArray(this._kbOpts) ? this._kbOpts : [this._kbOpts];\r\n for (const kbOpts of kbOptsArr) {\r\n let kbWhen = kbOpts.kbExpr;\r\n if (this.precondition) {\r\n if (kbWhen) {\r\n kbWhen = ContextKeyExpr.and(kbWhen, this.precondition);\r\n }\r\n else {\r\n kbWhen = this.precondition;\r\n }\r\n }\r\n const desc = {\r\n id: this.id,\r\n weight: kbOpts.weight,\r\n args: kbOpts.args,\r\n when: kbWhen,\r\n primary: kbOpts.primary,\r\n secondary: kbOpts.secondary,\r\n win: kbOpts.win,\r\n linux: kbOpts.linux,\r\n mac: kbOpts.mac,\r\n };\r\n KeybindingsRegistry.registerKeybindingRule(desc);\r\n }\r\n }\r\n CommandsRegistry.registerCommand({\r\n id: this.id,\r\n handler: (accessor, args) => this.runCommand(accessor, args),\r\n description: this._description\r\n });\r\n }\r\n _registerMenuItem(item) {\r\n MenuRegistry.appendMenuItem(item.menuId, {\r\n group: item.group,\r\n command: {\r\n id: this.id,\r\n title: item.title,\r\n icon: item.icon,\r\n precondition: this.precondition\r\n },\r\n when: item.when,\r\n order: item.order\r\n });\r\n }\r\n}\r\nexport class MultiCommand extends Command {\r\n constructor() {\r\n super(...arguments);\r\n this._implementations = [];\r\n }\r\n /**\r\n * A higher priority gets to be looked at first\r\n */\r\n addImplementation(priority, name, implementation) {\r\n this._implementations.push({ priority, name, implementation });\r\n this._implementations.sort((a, b) => b.priority - a.priority);\r\n return {\r\n dispose: () => {\r\n for (let i = 0; i < this._implementations.length; i++) {\r\n if (this._implementations[i].implementation === implementation) {\r\n this._implementations.splice(i, 1);\r\n return;\r\n }\r\n }\r\n }\r\n };\r\n }\r\n runCommand(accessor, args) {\r\n const logService = accessor.get(ILogService);\r\n for (const impl of this._implementations) {\r\n const result = impl.implementation(accessor, args);\r\n if (result) {\r\n logService.trace(`Command '${this.id}' was handled by '${impl.name}'.`);\r\n if (typeof result === 'boolean') {\r\n return;\r\n }\r\n return result;\r\n }\r\n }\r\n }\r\n}\r\n//#endregion\r\n/**\r\n * A command that delegates to another command's implementation.\r\n *\r\n * This lets different commands be registered but share the same implementation\r\n */\r\nexport class ProxyCommand extends Command {\r\n constructor(command, opts) {\r\n super(opts);\r\n this.command = command;\r\n }\r\n runCommand(accessor, args) {\r\n return this.command.runCommand(accessor, args);\r\n }\r\n}\r\nexport class EditorCommand extends Command {\r\n /**\r\n * Create a command class that is bound to a certain editor contribution.\r\n */\r\n static bindToContribution(controllerGetter) {\r\n return class EditorControllerCommandImpl extends EditorCommand {\r\n constructor(opts) {\r\n super(opts);\r\n this._callback = opts.handler;\r\n }\r\n runEditorCommand(accessor, editor, args) {\r\n const controller = controllerGetter(editor);\r\n if (controller) {\r\n this._callback(controllerGetter(editor), args);\r\n }\r\n }\r\n };\r\n }\r\n runCommand(accessor, args) {\r\n const codeEditorService = accessor.get(ICodeEditorService);\r\n // Find the editor with text focus or active\r\n const editor = codeEditorService.getFocusedCodeEditor() || codeEditorService.getActiveCodeEditor();\r\n if (!editor) {\r\n // well, at least we tried...\r\n return;\r\n }\r\n return editor.invokeWithinContext((editorAccessor) => {\r\n const kbService = editorAccessor.get(IContextKeyService);\r\n if (!kbService.contextMatchesRules(withNullAsUndefined(this.precondition))) {\r\n // precondition does not hold\r\n return;\r\n }\r\n return this.runEditorCommand(editorAccessor, editor, args);\r\n });\r\n }\r\n}\r\nexport class EditorAction extends EditorCommand {\r\n constructor(opts) {\r\n super(EditorAction.convertOptions(opts));\r\n this.label = opts.label;\r\n this.alias = opts.alias;\r\n }\r\n static convertOptions(opts) {\r\n let menuOpts;\r\n if (Array.isArray(opts.menuOpts)) {\r\n menuOpts = opts.menuOpts;\r\n }\r\n else if (opts.menuOpts) {\r\n menuOpts = [opts.menuOpts];\r\n }\r\n else {\r\n menuOpts = [];\r\n }\r\n function withDefaults(item) {\r\n if (!item.menuId) {\r\n item.menuId = MenuId.EditorContext;\r\n }\r\n if (!item.title) {\r\n item.title = opts.label;\r\n }\r\n item.when = ContextKeyExpr.and(opts.precondition, item.when);\r\n return item;\r\n }\r\n if (Array.isArray(opts.contextMenuOpts)) {\r\n menuOpts.push(...opts.contextMenuOpts.map(withDefaults));\r\n }\r\n else if (opts.contextMenuOpts) {\r\n menuOpts.push(withDefaults(opts.contextMenuOpts));\r\n }\r\n opts.menuOpts = menuOpts;\r\n return opts;\r\n }\r\n runEditorCommand(accessor, editor, args) {\r\n this.reportTelemetry(accessor, editor);\r\n return this.run(accessor, editor, args || {});\r\n }\r\n reportTelemetry(accessor, editor) {\r\n accessor.get(ITelemetryService).publicLog2('editorActionInvoked', { name: this.label, id: this.id });\r\n }\r\n}\r\nexport class MultiEditorAction extends EditorAction {\r\n constructor() {\r\n super(...arguments);\r\n this._implementations = [];\r\n }\r\n /**\r\n * A higher priority gets to be looked at first\r\n */\r\n addImplementation(priority, implementation) {\r\n this._implementations.push([priority, implementation]);\r\n this._implementations.sort((a, b) => b[0] - a[0]);\r\n return {\r\n dispose: () => {\r\n for (let i = 0; i < this._implementations.length; i++) {\r\n if (this._implementations[i][1] === implementation) {\r\n this._implementations.splice(i, 1);\r\n return;\r\n }\r\n }\r\n }\r\n };\r\n }\r\n run(accessor, editor, args) {\r\n for (const impl of this._implementations) {\r\n const result = impl[1](accessor, editor, args);\r\n if (result) {\r\n if (typeof result === 'boolean') {\r\n return;\r\n }\r\n return result;\r\n }\r\n }\r\n }\r\n}\r\n//#endregion\r\n// --- Registration of commands and actions\r\nexport function registerModelAndPositionCommand(id, handler) {\r\n CommandsRegistry.registerCommand(id, function (accessor, ...args) {\r\n const [resource, position] = args;\r\n assertType(URI.isUri(resource));\r\n assertType(Position.isIPosition(position));\r\n const model = accessor.get(IModelService).getModel(resource);\r\n if (model) {\r\n const editorPosition = Position.lift(position);\r\n return handler(model, editorPosition, ...args.slice(2));\r\n }\r\n return accessor.get(ITextModelService).createModelReference(resource).then(reference => {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n const result = handler(reference.object.textEditorModel, Position.lift(position), args.slice(2));\r\n resolve(result);\r\n }\r\n catch (err) {\r\n reject(err);\r\n }\r\n }).finally(() => {\r\n reference.dispose();\r\n });\r\n });\r\n });\r\n}\r\nexport function registerModelCommand(id, handler) {\r\n CommandsRegistry.registerCommand(id, function (accessor, ...args) {\r\n const [resource] = args;\r\n assertType(URI.isUri(resource));\r\n const model = accessor.get(IModelService).getModel(resource);\r\n if (model) {\r\n return handler(model, ...args.slice(1));\r\n }\r\n return accessor.get(ITextModelService).createModelReference(resource).then(reference => {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n const result = handler(reference.object.textEditorModel, args.slice(1));\r\n resolve(result);\r\n }\r\n catch (err) {\r\n reject(err);\r\n }\r\n }).finally(() => {\r\n reference.dispose();\r\n });\r\n });\r\n });\r\n}\r\nexport function registerEditorCommand(editorCommand) {\r\n EditorContributionRegistry.INSTANCE.registerEditorCommand(editorCommand);\r\n return editorCommand;\r\n}\r\nexport function registerEditorAction(ctor) {\r\n const action = new ctor();\r\n EditorContributionRegistry.INSTANCE.registerEditorAction(action);\r\n return action;\r\n}\r\nexport function registerMultiEditorAction(action) {\r\n EditorContributionRegistry.INSTANCE.registerEditorAction(action);\r\n return action;\r\n}\r\nexport function registerInstantiatedEditorAction(editorAction) {\r\n EditorContributionRegistry.INSTANCE.registerEditorAction(editorAction);\r\n}\r\nexport function registerEditorContribution(id, ctor) {\r\n EditorContributionRegistry.INSTANCE.registerEditorContribution(id, ctor);\r\n}\r\nexport var EditorExtensionsRegistry;\r\n(function (EditorExtensionsRegistry) {\r\n function getEditorCommand(commandId) {\r\n return EditorContributionRegistry.INSTANCE.getEditorCommand(commandId);\r\n }\r\n EditorExtensionsRegistry.getEditorCommand = getEditorCommand;\r\n function getEditorActions() {\r\n return EditorContributionRegistry.INSTANCE.getEditorActions();\r\n }\r\n EditorExtensionsRegistry.getEditorActions = getEditorActions;\r\n function getEditorContributions() {\r\n return EditorContributionRegistry.INSTANCE.getEditorContributions();\r\n }\r\n EditorExtensionsRegistry.getEditorContributions = getEditorContributions;\r\n function getSomeEditorContributions(ids) {\r\n return EditorContributionRegistry.INSTANCE.getEditorContributions().filter(c => ids.indexOf(c.id) >= 0);\r\n }\r\n EditorExtensionsRegistry.getSomeEditorContributions = getSomeEditorContributions;\r\n function getDiffEditorContributions() {\r\n return EditorContributionRegistry.INSTANCE.getDiffEditorContributions();\r\n }\r\n EditorExtensionsRegistry.getDiffEditorContributions = getDiffEditorContributions;\r\n})(EditorExtensionsRegistry || (EditorExtensionsRegistry = {}));\r\n// Editor extension points\r\nconst Extensions = {\r\n EditorCommonContributions: 'editor.contributions'\r\n};\r\nclass EditorContributionRegistry {\r\n constructor() {\r\n this.editorContributions = [];\r\n this.diffEditorContributions = [];\r\n this.editorActions = [];\r\n this.editorCommands = Object.create(null);\r\n }\r\n registerEditorContribution(id, ctor) {\r\n this.editorContributions.push({ id, ctor: ctor });\r\n }\r\n getEditorContributions() {\r\n return this.editorContributions.slice(0);\r\n }\r\n getDiffEditorContributions() {\r\n return this.diffEditorContributions.slice(0);\r\n }\r\n registerEditorAction(action) {\r\n action.register();\r\n this.editorActions.push(action);\r\n }\r\n getEditorActions() {\r\n return this.editorActions.slice(0);\r\n }\r\n registerEditorCommand(editorCommand) {\r\n editorCommand.register();\r\n this.editorCommands[editorCommand.id] = editorCommand;\r\n }\r\n getEditorCommand(commandId) {\r\n return (this.editorCommands[commandId] || null);\r\n }\r\n}\r\nEditorContributionRegistry.INSTANCE = new EditorContributionRegistry();\r\nRegistry.add(Extensions.EditorCommonContributions, EditorContributionRegistry.INSTANCE);\r\nfunction registerCommand(command) {\r\n command.register();\r\n return command;\r\n}\r\nexport const UndoCommand = registerCommand(new MultiCommand({\r\n id: 'undo',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: 0 /* EditorCore */,\r\n primary: 2048 /* CtrlCmd */ | 56 /* KEY_Z */\r\n },\r\n menuOpts: [{\r\n menuId: MenuId.MenubarEditMenu,\r\n group: '1_do',\r\n title: nls.localize({ key: 'miUndo', comment: ['&& denotes a mnemonic'] }, \"&&Undo\"),\r\n order: 1\r\n }, {\r\n menuId: MenuId.CommandPalette,\r\n group: '',\r\n title: nls.localize('undo', \"Undo\"),\r\n order: 1\r\n }]\r\n}));\r\nregisterCommand(new ProxyCommand(UndoCommand, { id: 'default:undo', precondition: undefined }));\r\nexport const RedoCommand = registerCommand(new MultiCommand({\r\n id: 'redo',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: 0 /* EditorCore */,\r\n primary: 2048 /* CtrlCmd */ | 55 /* KEY_Y */,\r\n secondary: [2048 /* CtrlCmd */ | 1024 /* Shift */ | 56 /* KEY_Z */],\r\n mac: { primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 56 /* KEY_Z */ }\r\n },\r\n menuOpts: [{\r\n menuId: MenuId.MenubarEditMenu,\r\n group: '1_do',\r\n title: nls.localize({ key: 'miRedo', comment: ['&& denotes a mnemonic'] }, \"&&Redo\"),\r\n order: 2\r\n }, {\r\n menuId: MenuId.CommandPalette,\r\n group: '',\r\n title: nls.localize('redo', \"Redo\"),\r\n order: 1\r\n }]\r\n}));\r\nregisterCommand(new ProxyCommand(RedoCommand, { id: 'default:redo', precondition: undefined }));\r\nexport const SelectAllCommand = registerCommand(new MultiCommand({\r\n id: 'editor.action.selectAll',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: 0 /* EditorCore */,\r\n kbExpr: null,\r\n primary: 2048 /* CtrlCmd */ | 31 /* KEY_A */\r\n },\r\n menuOpts: [{\r\n menuId: MenuId.MenubarSelectionMenu,\r\n group: '1_basic',\r\n title: nls.localize({ key: 'miSelectAll', comment: ['&& denotes a mnemonic'] }, \"&&Select All\"),\r\n order: 1\r\n }, {\r\n menuId: MenuId.CommandPalette,\r\n group: '',\r\n title: nls.localize('selectAll', \"Select All\"),\r\n order: 1\r\n }]\r\n}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { IMarkerDecorationsService } from '../../common/services/markersDecorationService.js';\r\nimport { registerEditorContribution } from '../editorExtensions.js';\r\nlet MarkerDecorationsContribution = class MarkerDecorationsContribution {\r\n constructor(_editor, _markerDecorationsService) {\r\n // Doesn't do anything, just requires `IMarkerDecorationsService` to make sure it gets instantiated\r\n }\r\n dispose() {\r\n }\r\n};\r\nMarkerDecorationsContribution.ID = 'editor.contrib.markerDecorations';\r\nMarkerDecorationsContribution = __decorate([\r\n __param(1, IMarkerDecorationsService)\r\n], MarkerDecorationsContribution);\r\nexport { MarkerDecorationsContribution };\r\nregisterEditorContribution(MarkerDecorationsContribution.ID, MarkerDecorationsContribution);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class CharWidthRequest {\r\n constructor(chr, type) {\r\n this.chr = chr;\r\n this.type = type;\r\n this.width = 0;\r\n }\r\n fulfill(width) {\r\n this.width = width;\r\n }\r\n}\r\nclass DomCharWidthReader {\r\n constructor(bareFontInfo, requests) {\r\n this._bareFontInfo = bareFontInfo;\r\n this._requests = requests;\r\n this._container = null;\r\n this._testElements = null;\r\n }\r\n read() {\r\n // Create a test container with all these test elements\r\n this._createDomElements();\r\n // Add the container to the DOM\r\n document.body.appendChild(this._container);\r\n // Read character widths\r\n this._readFromDomElements();\r\n // Remove the container from the DOM\r\n document.body.removeChild(this._container);\r\n this._container = null;\r\n this._testElements = null;\r\n }\r\n _createDomElements() {\r\n const container = document.createElement('div');\r\n container.style.position = 'absolute';\r\n container.style.top = '-50000px';\r\n container.style.width = '50000px';\r\n const regularDomNode = document.createElement('div');\r\n regularDomNode.style.fontFamily = this._bareFontInfo.getMassagedFontFamily();\r\n regularDomNode.style.fontWeight = this._bareFontInfo.fontWeight;\r\n regularDomNode.style.fontSize = this._bareFontInfo.fontSize + 'px';\r\n regularDomNode.style.fontFeatureSettings = this._bareFontInfo.fontFeatureSettings;\r\n regularDomNode.style.lineHeight = this._bareFontInfo.lineHeight + 'px';\r\n regularDomNode.style.letterSpacing = this._bareFontInfo.letterSpacing + 'px';\r\n container.appendChild(regularDomNode);\r\n const boldDomNode = document.createElement('div');\r\n boldDomNode.style.fontFamily = this._bareFontInfo.getMassagedFontFamily();\r\n boldDomNode.style.fontWeight = 'bold';\r\n boldDomNode.style.fontSize = this._bareFontInfo.fontSize + 'px';\r\n boldDomNode.style.fontFeatureSettings = this._bareFontInfo.fontFeatureSettings;\r\n boldDomNode.style.lineHeight = this._bareFontInfo.lineHeight + 'px';\r\n boldDomNode.style.letterSpacing = this._bareFontInfo.letterSpacing + 'px';\r\n container.appendChild(boldDomNode);\r\n const italicDomNode = document.createElement('div');\r\n italicDomNode.style.fontFamily = this._bareFontInfo.getMassagedFontFamily();\r\n italicDomNode.style.fontWeight = this._bareFontInfo.fontWeight;\r\n italicDomNode.style.fontSize = this._bareFontInfo.fontSize + 'px';\r\n italicDomNode.style.fontFeatureSettings = this._bareFontInfo.fontFeatureSettings;\r\n italicDomNode.style.lineHeight = this._bareFontInfo.lineHeight + 'px';\r\n italicDomNode.style.letterSpacing = this._bareFontInfo.letterSpacing + 'px';\r\n italicDomNode.style.fontStyle = 'italic';\r\n container.appendChild(italicDomNode);\r\n const testElements = [];\r\n for (const request of this._requests) {\r\n let parent;\r\n if (request.type === 0 /* Regular */) {\r\n parent = regularDomNode;\r\n }\r\n if (request.type === 2 /* Bold */) {\r\n parent = boldDomNode;\r\n }\r\n if (request.type === 1 /* Italic */) {\r\n parent = italicDomNode;\r\n }\r\n parent.appendChild(document.createElement('br'));\r\n const testElement = document.createElement('span');\r\n DomCharWidthReader._render(testElement, request);\r\n parent.appendChild(testElement);\r\n testElements.push(testElement);\r\n }\r\n this._container = container;\r\n this._testElements = testElements;\r\n }\r\n static _render(testElement, request) {\r\n if (request.chr === ' ') {\r\n let htmlString = '\\u00a0';\r\n // Repeat character 256 (2^8) times\r\n for (let i = 0; i < 8; i++) {\r\n htmlString += htmlString;\r\n }\r\n testElement.innerText = htmlString;\r\n }\r\n else {\r\n let testString = request.chr;\r\n // Repeat character 256 (2^8) times\r\n for (let i = 0; i < 8; i++) {\r\n testString += testString;\r\n }\r\n testElement.textContent = testString;\r\n }\r\n }\r\n _readFromDomElements() {\r\n for (let i = 0, len = this._requests.length; i < len; i++) {\r\n const request = this._requests[i];\r\n const testElement = this._testElements[i];\r\n request.fulfill(testElement.offsetWidth / 256);\r\n }\r\n }\r\n}\r\nexport function readCharWidths(bareFontInfo, requests) {\r\n const reader = new DomCharWidthReader(bareFontInfo, requests);\r\n reader.read();\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nexport class ElementSizeObserver extends Disposable {\r\n constructor(referenceDomElement, dimension, changeCallback) {\r\n super();\r\n this.referenceDomElement = referenceDomElement;\r\n this.changeCallback = changeCallback;\r\n this.width = -1;\r\n this.height = -1;\r\n this.resizeObserver = null;\r\n this.measureReferenceDomElementToken = -1;\r\n this.measureReferenceDomElement(false, dimension);\r\n }\r\n dispose() {\r\n this.stopObserving();\r\n super.dispose();\r\n }\r\n getWidth() {\r\n return this.width;\r\n }\r\n getHeight() {\r\n return this.height;\r\n }\r\n startObserving() {\r\n if (typeof ResizeObserver !== 'undefined') {\r\n if (!this.resizeObserver && this.referenceDomElement) {\r\n this.resizeObserver = new ResizeObserver((entries) => {\r\n if (entries && entries[0] && entries[0].contentRect) {\r\n this.observe({ width: entries[0].contentRect.width, height: entries[0].contentRect.height });\r\n }\r\n else {\r\n this.observe();\r\n }\r\n });\r\n this.resizeObserver.observe(this.referenceDomElement);\r\n }\r\n }\r\n else {\r\n if (this.measureReferenceDomElementToken === -1) {\r\n // setInterval type defaults to NodeJS.Timeout instead of number, so specify it as a number\r\n this.measureReferenceDomElementToken = setInterval(() => this.observe(), 100);\r\n }\r\n }\r\n }\r\n stopObserving() {\r\n if (this.resizeObserver) {\r\n this.resizeObserver.disconnect();\r\n this.resizeObserver = null;\r\n }\r\n if (this.measureReferenceDomElementToken !== -1) {\r\n clearInterval(this.measureReferenceDomElementToken);\r\n this.measureReferenceDomElementToken = -1;\r\n }\r\n }\r\n observe(dimension) {\r\n this.measureReferenceDomElement(true, dimension);\r\n }\r\n measureReferenceDomElement(callChangeCallback, dimension) {\r\n let observedWidth = 0;\r\n let observedHeight = 0;\r\n if (dimension) {\r\n observedWidth = dimension.width;\r\n observedHeight = dimension.height;\r\n }\r\n else if (this.referenceDomElement) {\r\n observedWidth = this.referenceDomElement.clientWidth;\r\n observedHeight = this.referenceDomElement.clientHeight;\r\n }\r\n observedWidth = Math.max(5, observedWidth);\r\n observedHeight = Math.max(5, observedHeight);\r\n if (this.width !== observedWidth || this.height !== observedHeight) {\r\n this.width = observedWidth;\r\n this.height = observedHeight;\r\n if (callChangeCallback) {\r\n this.changeCallback();\r\n }\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as browser from '../../../base/browser/browser.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport * as platform from '../../../base/common/platform.js';\r\nimport { CharWidthRequest, readCharWidths } from './charWidthReader.js';\r\nimport { ElementSizeObserver } from './elementSizeObserver.js';\r\nimport { CommonEditorConfiguration } from '../../common/config/commonEditorConfig.js';\r\nimport { EditorFontLigatures } from '../../common/config/editorOptions.js';\r\nimport { FontInfo } from '../../common/config/fontInfo.js';\r\nclass CSSBasedConfigurationCache {\r\n constructor() {\r\n this._keys = Object.create(null);\r\n this._values = Object.create(null);\r\n }\r\n has(item) {\r\n const itemId = item.getId();\r\n return !!this._values[itemId];\r\n }\r\n get(item) {\r\n const itemId = item.getId();\r\n return this._values[itemId];\r\n }\r\n put(item, value) {\r\n const itemId = item.getId();\r\n this._keys[itemId] = item;\r\n this._values[itemId] = value;\r\n }\r\n remove(item) {\r\n const itemId = item.getId();\r\n delete this._keys[itemId];\r\n delete this._values[itemId];\r\n }\r\n getValues() {\r\n return Object.keys(this._keys).map(id => this._values[id]);\r\n }\r\n}\r\nexport function clearAllFontInfos() {\r\n CSSBasedConfiguration.INSTANCE.clearCache();\r\n}\r\nclass CSSBasedConfiguration extends Disposable {\r\n constructor() {\r\n super();\r\n this._onDidChange = this._register(new Emitter());\r\n this.onDidChange = this._onDidChange.event;\r\n this._cache = new CSSBasedConfigurationCache();\r\n this._evictUntrustedReadingsTimeout = -1;\r\n }\r\n dispose() {\r\n if (this._evictUntrustedReadingsTimeout !== -1) {\r\n clearTimeout(this._evictUntrustedReadingsTimeout);\r\n this._evictUntrustedReadingsTimeout = -1;\r\n }\r\n super.dispose();\r\n }\r\n clearCache() {\r\n this._cache = new CSSBasedConfigurationCache();\r\n this._onDidChange.fire();\r\n }\r\n _writeToCache(item, value) {\r\n this._cache.put(item, value);\r\n if (!value.isTrusted && this._evictUntrustedReadingsTimeout === -1) {\r\n // Try reading again after some time\r\n this._evictUntrustedReadingsTimeout = setTimeout(() => {\r\n this._evictUntrustedReadingsTimeout = -1;\r\n this._evictUntrustedReadings();\r\n }, 5000);\r\n }\r\n }\r\n _evictUntrustedReadings() {\r\n const values = this._cache.getValues();\r\n let somethingRemoved = false;\r\n for (const item of values) {\r\n if (!item.isTrusted) {\r\n somethingRemoved = true;\r\n this._cache.remove(item);\r\n }\r\n }\r\n if (somethingRemoved) {\r\n this._onDidChange.fire();\r\n }\r\n }\r\n readConfiguration(bareFontInfo) {\r\n if (!this._cache.has(bareFontInfo)) {\r\n let readConfig = CSSBasedConfiguration._actualReadConfiguration(bareFontInfo);\r\n if (readConfig.typicalHalfwidthCharacterWidth <= 2 || readConfig.typicalFullwidthCharacterWidth <= 2 || readConfig.spaceWidth <= 2 || readConfig.maxDigitWidth <= 2) {\r\n // Hey, it's Bug 14341 ... we couldn't read\r\n readConfig = new FontInfo({\r\n zoomLevel: browser.getZoomLevel(),\r\n pixelRatio: browser.getPixelRatio(),\r\n fontFamily: readConfig.fontFamily,\r\n fontWeight: readConfig.fontWeight,\r\n fontSize: readConfig.fontSize,\r\n fontFeatureSettings: readConfig.fontFeatureSettings,\r\n lineHeight: readConfig.lineHeight,\r\n letterSpacing: readConfig.letterSpacing,\r\n isMonospace: readConfig.isMonospace,\r\n typicalHalfwidthCharacterWidth: Math.max(readConfig.typicalHalfwidthCharacterWidth, 5),\r\n typicalFullwidthCharacterWidth: Math.max(readConfig.typicalFullwidthCharacterWidth, 5),\r\n canUseHalfwidthRightwardsArrow: readConfig.canUseHalfwidthRightwardsArrow,\r\n spaceWidth: Math.max(readConfig.spaceWidth, 5),\r\n middotWidth: Math.max(readConfig.middotWidth, 5),\r\n wsmiddotWidth: Math.max(readConfig.wsmiddotWidth, 5),\r\n maxDigitWidth: Math.max(readConfig.maxDigitWidth, 5),\r\n }, false);\r\n }\r\n this._writeToCache(bareFontInfo, readConfig);\r\n }\r\n return this._cache.get(bareFontInfo);\r\n }\r\n static createRequest(chr, type, all, monospace) {\r\n const result = new CharWidthRequest(chr, type);\r\n all.push(result);\r\n if (monospace) {\r\n monospace.push(result);\r\n }\r\n return result;\r\n }\r\n static _actualReadConfiguration(bareFontInfo) {\r\n const all = [];\r\n const monospace = [];\r\n const typicalHalfwidthCharacter = this.createRequest('n', 0 /* Regular */, all, monospace);\r\n const typicalFullwidthCharacter = this.createRequest('\\uff4d', 0 /* Regular */, all, null);\r\n const space = this.createRequest(' ', 0 /* Regular */, all, monospace);\r\n const digit0 = this.createRequest('0', 0 /* Regular */, all, monospace);\r\n const digit1 = this.createRequest('1', 0 /* Regular */, all, monospace);\r\n const digit2 = this.createRequest('2', 0 /* Regular */, all, monospace);\r\n const digit3 = this.createRequest('3', 0 /* Regular */, all, monospace);\r\n const digit4 = this.createRequest('4', 0 /* Regular */, all, monospace);\r\n const digit5 = this.createRequest('5', 0 /* Regular */, all, monospace);\r\n const digit6 = this.createRequest('6', 0 /* Regular */, all, monospace);\r\n const digit7 = this.createRequest('7', 0 /* Regular */, all, monospace);\r\n const digit8 = this.createRequest('8', 0 /* Regular */, all, monospace);\r\n const digit9 = this.createRequest('9', 0 /* Regular */, all, monospace);\r\n // monospace test: used for whitespace rendering\r\n const rightwardsArrow = this.createRequest('→', 0 /* Regular */, all, monospace);\r\n const halfwidthRightwardsArrow = this.createRequest('→', 0 /* Regular */, all, null);\r\n // U+00B7 - MIDDLE DOT\r\n const middot = this.createRequest('·', 0 /* Regular */, all, monospace);\r\n // U+2E31 - WORD SEPARATOR MIDDLE DOT\r\n const wsmiddotWidth = this.createRequest(String.fromCharCode(0x2E31), 0 /* Regular */, all, null);\r\n // monospace test: some characters\r\n this.createRequest('|', 0 /* Regular */, all, monospace);\r\n this.createRequest('/', 0 /* Regular */, all, monospace);\r\n this.createRequest('-', 0 /* Regular */, all, monospace);\r\n this.createRequest('_', 0 /* Regular */, all, monospace);\r\n this.createRequest('i', 0 /* Regular */, all, monospace);\r\n this.createRequest('l', 0 /* Regular */, all, monospace);\r\n this.createRequest('m', 0 /* Regular */, all, monospace);\r\n // monospace italic test\r\n this.createRequest('|', 1 /* Italic */, all, monospace);\r\n this.createRequest('_', 1 /* Italic */, all, monospace);\r\n this.createRequest('i', 1 /* Italic */, all, monospace);\r\n this.createRequest('l', 1 /* Italic */, all, monospace);\r\n this.createRequest('m', 1 /* Italic */, all, monospace);\r\n this.createRequest('n', 1 /* Italic */, all, monospace);\r\n // monospace bold test\r\n this.createRequest('|', 2 /* Bold */, all, monospace);\r\n this.createRequest('_', 2 /* Bold */, all, monospace);\r\n this.createRequest('i', 2 /* Bold */, all, monospace);\r\n this.createRequest('l', 2 /* Bold */, all, monospace);\r\n this.createRequest('m', 2 /* Bold */, all, monospace);\r\n this.createRequest('n', 2 /* Bold */, all, monospace);\r\n readCharWidths(bareFontInfo, all);\r\n const maxDigitWidth = Math.max(digit0.width, digit1.width, digit2.width, digit3.width, digit4.width, digit5.width, digit6.width, digit7.width, digit8.width, digit9.width);\r\n let isMonospace = (bareFontInfo.fontFeatureSettings === EditorFontLigatures.OFF);\r\n const referenceWidth = monospace[0].width;\r\n for (let i = 1, len = monospace.length; isMonospace && i < len; i++) {\r\n const diff = referenceWidth - monospace[i].width;\r\n if (diff < -0.001 || diff > 0.001) {\r\n isMonospace = false;\r\n break;\r\n }\r\n }\r\n let canUseHalfwidthRightwardsArrow = true;\r\n if (isMonospace && halfwidthRightwardsArrow.width !== referenceWidth) {\r\n // using a halfwidth rightwards arrow would break monospace...\r\n canUseHalfwidthRightwardsArrow = false;\r\n }\r\n if (halfwidthRightwardsArrow.width > rightwardsArrow.width) {\r\n // using a halfwidth rightwards arrow would paint a larger arrow than a regular rightwards arrow\r\n canUseHalfwidthRightwardsArrow = false;\r\n }\r\n // let's trust the zoom level only 2s after it was changed.\r\n const canTrustBrowserZoomLevel = (browser.getTimeSinceLastZoomLevelChanged() > 2000);\r\n return new FontInfo({\r\n zoomLevel: browser.getZoomLevel(),\r\n pixelRatio: browser.getPixelRatio(),\r\n fontFamily: bareFontInfo.fontFamily,\r\n fontWeight: bareFontInfo.fontWeight,\r\n fontSize: bareFontInfo.fontSize,\r\n fontFeatureSettings: bareFontInfo.fontFeatureSettings,\r\n lineHeight: bareFontInfo.lineHeight,\r\n letterSpacing: bareFontInfo.letterSpacing,\r\n isMonospace: isMonospace,\r\n typicalHalfwidthCharacterWidth: typicalHalfwidthCharacter.width,\r\n typicalFullwidthCharacterWidth: typicalFullwidthCharacter.width,\r\n canUseHalfwidthRightwardsArrow: canUseHalfwidthRightwardsArrow,\r\n spaceWidth: space.width,\r\n middotWidth: middot.width,\r\n wsmiddotWidth: wsmiddotWidth.width,\r\n maxDigitWidth: maxDigitWidth\r\n }, canTrustBrowserZoomLevel);\r\n }\r\n}\r\nCSSBasedConfiguration.INSTANCE = new CSSBasedConfiguration();\r\nexport class Configuration extends CommonEditorConfiguration {\r\n constructor(isSimpleWidget, options, referenceDomElement = null, accessibilityService) {\r\n super(isSimpleWidget, options);\r\n this.accessibilityService = accessibilityService;\r\n this._elementSizeObserver = this._register(new ElementSizeObserver(referenceDomElement, options.dimension, () => this._recomputeOptions()));\r\n this._register(CSSBasedConfiguration.INSTANCE.onDidChange(() => this._recomputeOptions()));\r\n if (this._validatedOptions.get(10 /* automaticLayout */)) {\r\n this._elementSizeObserver.startObserving();\r\n }\r\n this._register(browser.onDidChangeZoomLevel(_ => this._recomputeOptions()));\r\n this._register(this.accessibilityService.onDidChangeScreenReaderOptimized(() => this._recomputeOptions()));\r\n this._recomputeOptions();\r\n }\r\n static applyFontInfoSlow(domNode, fontInfo) {\r\n domNode.style.fontFamily = fontInfo.getMassagedFontFamily();\r\n domNode.style.fontWeight = fontInfo.fontWeight;\r\n domNode.style.fontSize = fontInfo.fontSize + 'px';\r\n domNode.style.fontFeatureSettings = fontInfo.fontFeatureSettings;\r\n domNode.style.lineHeight = fontInfo.lineHeight + 'px';\r\n domNode.style.letterSpacing = fontInfo.letterSpacing + 'px';\r\n }\r\n static applyFontInfo(domNode, fontInfo) {\r\n domNode.setFontFamily(fontInfo.getMassagedFontFamily());\r\n domNode.setFontWeight(fontInfo.fontWeight);\r\n domNode.setFontSize(fontInfo.fontSize);\r\n domNode.setFontFeatureSettings(fontInfo.fontFeatureSettings);\r\n domNode.setLineHeight(fontInfo.lineHeight);\r\n domNode.setLetterSpacing(fontInfo.letterSpacing);\r\n }\r\n observeReferenceElement(dimension) {\r\n this._elementSizeObserver.observe(dimension);\r\n }\r\n updatePixelRatio() {\r\n this._recomputeOptions();\r\n }\r\n static _getExtraEditorClassName() {\r\n let extra = '';\r\n if (!browser.isSafari && !browser.isWebkitWebView) {\r\n // Use user-select: none in all browsers except Safari and native macOS WebView\r\n extra += 'no-user-select ';\r\n }\r\n if (browser.isSafari) {\r\n // See https://github.com/microsoft/vscode/issues/108822\r\n extra += 'no-minimap-shadow ';\r\n }\r\n if (platform.isMacintosh) {\r\n extra += 'mac ';\r\n }\r\n return extra;\r\n }\r\n _getEnvConfiguration() {\r\n return {\r\n extraEditorClassName: Configuration._getExtraEditorClassName(),\r\n outerWidth: this._elementSizeObserver.getWidth(),\r\n outerHeight: this._elementSizeObserver.getHeight(),\r\n emptySelectionClipboard: browser.isWebKit || browser.isFirefox,\r\n pixelRatio: browser.getPixelRatio(),\r\n zoomLevel: browser.getZoomLevel(),\r\n accessibilitySupport: (this.accessibilityService.isScreenReaderOptimized()\r\n ? 2 /* Enabled */\r\n : this.accessibilityService.getAccessibilitySupport())\r\n };\r\n }\r\n readConfiguration(bareFontInfo) {\r\n return CSSBasedConfiguration.INSTANCE.readConfiguration(bareFontInfo);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class FastDomNode {\r\n constructor(domNode) {\r\n this.domNode = domNode;\r\n this._maxWidth = -1;\r\n this._width = -1;\r\n this._height = -1;\r\n this._top = -1;\r\n this._left = -1;\r\n this._bottom = -1;\r\n this._right = -1;\r\n this._fontFamily = '';\r\n this._fontWeight = '';\r\n this._fontSize = -1;\r\n this._fontFeatureSettings = '';\r\n this._lineHeight = -1;\r\n this._letterSpacing = -100;\r\n this._className = '';\r\n this._display = '';\r\n this._position = '';\r\n this._visibility = '';\r\n this._backgroundColor = '';\r\n this._layerHint = false;\r\n this._contain = 'none';\r\n this._boxShadow = '';\r\n }\r\n setMaxWidth(maxWidth) {\r\n if (this._maxWidth === maxWidth) {\r\n return;\r\n }\r\n this._maxWidth = maxWidth;\r\n this.domNode.style.maxWidth = this._maxWidth + 'px';\r\n }\r\n setWidth(width) {\r\n if (this._width === width) {\r\n return;\r\n }\r\n this._width = width;\r\n this.domNode.style.width = this._width + 'px';\r\n }\r\n setHeight(height) {\r\n if (this._height === height) {\r\n return;\r\n }\r\n this._height = height;\r\n this.domNode.style.height = this._height + 'px';\r\n }\r\n setTop(top) {\r\n if (this._top === top) {\r\n return;\r\n }\r\n this._top = top;\r\n this.domNode.style.top = this._top + 'px';\r\n }\r\n unsetTop() {\r\n if (this._top === -1) {\r\n return;\r\n }\r\n this._top = -1;\r\n this.domNode.style.top = '';\r\n }\r\n setLeft(left) {\r\n if (this._left === left) {\r\n return;\r\n }\r\n this._left = left;\r\n this.domNode.style.left = this._left + 'px';\r\n }\r\n setBottom(bottom) {\r\n if (this._bottom === bottom) {\r\n return;\r\n }\r\n this._bottom = bottom;\r\n this.domNode.style.bottom = this._bottom + 'px';\r\n }\r\n setRight(right) {\r\n if (this._right === right) {\r\n return;\r\n }\r\n this._right = right;\r\n this.domNode.style.right = this._right + 'px';\r\n }\r\n setFontFamily(fontFamily) {\r\n if (this._fontFamily === fontFamily) {\r\n return;\r\n }\r\n this._fontFamily = fontFamily;\r\n this.domNode.style.fontFamily = this._fontFamily;\r\n }\r\n setFontWeight(fontWeight) {\r\n if (this._fontWeight === fontWeight) {\r\n return;\r\n }\r\n this._fontWeight = fontWeight;\r\n this.domNode.style.fontWeight = this._fontWeight;\r\n }\r\n setFontSize(fontSize) {\r\n if (this._fontSize === fontSize) {\r\n return;\r\n }\r\n this._fontSize = fontSize;\r\n this.domNode.style.fontSize = this._fontSize + 'px';\r\n }\r\n setFontFeatureSettings(fontFeatureSettings) {\r\n if (this._fontFeatureSettings === fontFeatureSettings) {\r\n return;\r\n }\r\n this._fontFeatureSettings = fontFeatureSettings;\r\n this.domNode.style.fontFeatureSettings = this._fontFeatureSettings;\r\n }\r\n setLineHeight(lineHeight) {\r\n if (this._lineHeight === lineHeight) {\r\n return;\r\n }\r\n this._lineHeight = lineHeight;\r\n this.domNode.style.lineHeight = this._lineHeight + 'px';\r\n }\r\n setLetterSpacing(letterSpacing) {\r\n if (this._letterSpacing === letterSpacing) {\r\n return;\r\n }\r\n this._letterSpacing = letterSpacing;\r\n this.domNode.style.letterSpacing = this._letterSpacing + 'px';\r\n }\r\n setClassName(className) {\r\n if (this._className === className) {\r\n return;\r\n }\r\n this._className = className;\r\n this.domNode.className = this._className;\r\n }\r\n toggleClassName(className, shouldHaveIt) {\r\n this.domNode.classList.toggle(className, shouldHaveIt);\r\n this._className = this.domNode.className;\r\n }\r\n setDisplay(display) {\r\n if (this._display === display) {\r\n return;\r\n }\r\n this._display = display;\r\n this.domNode.style.display = this._display;\r\n }\r\n setPosition(position) {\r\n if (this._position === position) {\r\n return;\r\n }\r\n this._position = position;\r\n this.domNode.style.position = this._position;\r\n }\r\n setVisibility(visibility) {\r\n if (this._visibility === visibility) {\r\n return;\r\n }\r\n this._visibility = visibility;\r\n this.domNode.style.visibility = this._visibility;\r\n }\r\n setBackgroundColor(backgroundColor) {\r\n if (this._backgroundColor === backgroundColor) {\r\n return;\r\n }\r\n this._backgroundColor = backgroundColor;\r\n this.domNode.style.backgroundColor = this._backgroundColor;\r\n }\r\n setLayerHinting(layerHint) {\r\n if (this._layerHint === layerHint) {\r\n return;\r\n }\r\n this._layerHint = layerHint;\r\n this.domNode.style.transform = this._layerHint ? 'translate3d(0px, 0px, 0px)' : '';\r\n }\r\n setBoxShadow(boxShadow) {\r\n if (this._boxShadow === boxShadow) {\r\n return;\r\n }\r\n this._boxShadow = boxShadow;\r\n this.domNode.style.boxShadow = boxShadow;\r\n }\r\n setContain(contain) {\r\n if (this._contain === contain) {\r\n return;\r\n }\r\n this._contain = contain;\r\n this.domNode.style.contain = this._contain;\r\n }\r\n setAttribute(name, value) {\r\n this.domNode.setAttribute(name, value);\r\n }\r\n removeAttribute(name) {\r\n this.domNode.removeAttribute(name);\r\n }\r\n appendChild(child) {\r\n this.domNode.appendChild(child.domNode);\r\n }\r\n removeChild(child) {\r\n this.domNode.removeChild(child.domNode);\r\n }\r\n}\r\nexport function createFastDomNode(domNode) {\r\n return new FastDomNode(domNode);\r\n}\r\n","export function memoize(_target, key, descriptor) {\r\n let fnKey = null;\r\n let fn = null;\r\n if (typeof descriptor.value === 'function') {\r\n fnKey = 'value';\r\n fn = descriptor.value;\r\n if (fn.length !== 0) {\r\n console.warn('Memoize should only be used in functions with zero parameters');\r\n }\r\n }\r\n else if (typeof descriptor.get === 'function') {\r\n fnKey = 'get';\r\n fn = descriptor.get;\r\n }\r\n if (!fn) {\r\n throw new Error('not supported');\r\n }\r\n const memoizeKey = `$memoize$${key}`;\r\n descriptor[fnKey] = function (...args) {\r\n if (!this.hasOwnProperty(memoizeKey)) {\r\n Object.defineProperty(this, memoizeKey, {\r\n configurable: false,\r\n enumerable: false,\r\n writable: false,\r\n value: fn.apply(this, args)\r\n });\r\n }\r\n return this[memoizeKey];\r\n };\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nimport * as arrays from '../common/arrays.js';\r\nimport { Disposable } from '../common/lifecycle.js';\r\nimport * as DomUtils from './dom.js';\r\nimport { memoize } from '../common/decorators.js';\r\nexport var EventType;\r\n(function (EventType) {\r\n EventType.Tap = '-monaco-gesturetap';\r\n EventType.Change = '-monaco-gesturechange';\r\n EventType.Start = '-monaco-gesturestart';\r\n EventType.End = '-monaco-gesturesend';\r\n EventType.Contextmenu = '-monaco-gesturecontextmenu';\r\n})(EventType || (EventType = {}));\r\nexport class Gesture extends Disposable {\r\n constructor() {\r\n super();\r\n this.dispatched = false;\r\n this.activeTouches = {};\r\n this.handle = null;\r\n this.targets = [];\r\n this.ignoreTargets = [];\r\n this._lastSetTapCountTime = 0;\r\n this._register(DomUtils.addDisposableListener(document, 'touchstart', (e) => this.onTouchStart(e), { passive: false }));\r\n this._register(DomUtils.addDisposableListener(document, 'touchend', (e) => this.onTouchEnd(e)));\r\n this._register(DomUtils.addDisposableListener(document, 'touchmove', (e) => this.onTouchMove(e), { passive: false }));\r\n }\r\n static addTarget(element) {\r\n if (!Gesture.isTouchDevice()) {\r\n return Disposable.None;\r\n }\r\n if (!Gesture.INSTANCE) {\r\n Gesture.INSTANCE = new Gesture();\r\n }\r\n Gesture.INSTANCE.targets.push(element);\r\n return {\r\n dispose: () => {\r\n Gesture.INSTANCE.targets = Gesture.INSTANCE.targets.filter(t => t !== element);\r\n }\r\n };\r\n }\r\n static ignoreTarget(element) {\r\n if (!Gesture.isTouchDevice()) {\r\n return Disposable.None;\r\n }\r\n if (!Gesture.INSTANCE) {\r\n Gesture.INSTANCE = new Gesture();\r\n }\r\n Gesture.INSTANCE.ignoreTargets.push(element);\r\n return {\r\n dispose: () => {\r\n Gesture.INSTANCE.ignoreTargets = Gesture.INSTANCE.ignoreTargets.filter(t => t !== element);\r\n }\r\n };\r\n }\r\n static isTouchDevice() {\r\n // `'ontouchstart' in window` always evaluates to true with typescript's modern typings. This causes `window` to be\r\n // `never` later in `window.navigator`. That's why we need the explicit `window as Window` cast\r\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\r\n }\r\n dispose() {\r\n if (this.handle) {\r\n this.handle.dispose();\r\n this.handle = null;\r\n }\r\n super.dispose();\r\n }\r\n onTouchStart(e) {\r\n let timestamp = Date.now(); // use Date.now() because on FF e.timeStamp is not epoch based.\r\n if (this.handle) {\r\n this.handle.dispose();\r\n this.handle = null;\r\n }\r\n for (let i = 0, len = e.targetTouches.length; i < len; i++) {\r\n let touch = e.targetTouches.item(i);\r\n this.activeTouches[touch.identifier] = {\r\n id: touch.identifier,\r\n initialTarget: touch.target,\r\n initialTimeStamp: timestamp,\r\n initialPageX: touch.pageX,\r\n initialPageY: touch.pageY,\r\n rollingTimestamps: [timestamp],\r\n rollingPageX: [touch.pageX],\r\n rollingPageY: [touch.pageY]\r\n };\r\n let evt = this.newGestureEvent(EventType.Start, touch.target);\r\n evt.pageX = touch.pageX;\r\n evt.pageY = touch.pageY;\r\n this.dispatchEvent(evt);\r\n }\r\n if (this.dispatched) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.dispatched = false;\r\n }\r\n }\r\n onTouchEnd(e) {\r\n let timestamp = Date.now(); // use Date.now() because on FF e.timeStamp is not epoch based.\r\n let activeTouchCount = Object.keys(this.activeTouches).length;\r\n for (let i = 0, len = e.changedTouches.length; i < len; i++) {\r\n let touch = e.changedTouches.item(i);\r\n if (!this.activeTouches.hasOwnProperty(String(touch.identifier))) {\r\n console.warn('move of an UNKNOWN touch', touch);\r\n continue;\r\n }\r\n let data = this.activeTouches[touch.identifier], holdTime = Date.now() - data.initialTimeStamp;\r\n if (holdTime < Gesture.HOLD_DELAY\r\n && Math.abs(data.initialPageX - arrays.tail(data.rollingPageX)) < 30\r\n && Math.abs(data.initialPageY - arrays.tail(data.rollingPageY)) < 30) {\r\n let evt = this.newGestureEvent(EventType.Tap, data.initialTarget);\r\n evt.pageX = arrays.tail(data.rollingPageX);\r\n evt.pageY = arrays.tail(data.rollingPageY);\r\n this.dispatchEvent(evt);\r\n }\r\n else if (holdTime >= Gesture.HOLD_DELAY\r\n && Math.abs(data.initialPageX - arrays.tail(data.rollingPageX)) < 30\r\n && Math.abs(data.initialPageY - arrays.tail(data.rollingPageY)) < 30) {\r\n let evt = this.newGestureEvent(EventType.Contextmenu, data.initialTarget);\r\n evt.pageX = arrays.tail(data.rollingPageX);\r\n evt.pageY = arrays.tail(data.rollingPageY);\r\n this.dispatchEvent(evt);\r\n }\r\n else if (activeTouchCount === 1) {\r\n let finalX = arrays.tail(data.rollingPageX);\r\n let finalY = arrays.tail(data.rollingPageY);\r\n let deltaT = arrays.tail(data.rollingTimestamps) - data.rollingTimestamps[0];\r\n let deltaX = finalX - data.rollingPageX[0];\r\n let deltaY = finalY - data.rollingPageY[0];\r\n // We need to get all the dispatch targets on the start of the inertia event\r\n const dispatchTo = this.targets.filter(t => data.initialTarget instanceof Node && t.contains(data.initialTarget));\r\n this.inertia(dispatchTo, timestamp, // time now\r\n Math.abs(deltaX) / deltaT, // speed\r\n deltaX > 0 ? 1 : -1, // x direction\r\n finalX, // x now\r\n Math.abs(deltaY) / deltaT, // y speed\r\n deltaY > 0 ? 1 : -1, // y direction\r\n finalY // y now\r\n );\r\n }\r\n this.dispatchEvent(this.newGestureEvent(EventType.End, data.initialTarget));\r\n // forget about this touch\r\n delete this.activeTouches[touch.identifier];\r\n }\r\n if (this.dispatched) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.dispatched = false;\r\n }\r\n }\r\n newGestureEvent(type, initialTarget) {\r\n let event = document.createEvent('CustomEvent');\r\n event.initEvent(type, false, true);\r\n event.initialTarget = initialTarget;\r\n event.tapCount = 0;\r\n return event;\r\n }\r\n dispatchEvent(event) {\r\n if (event.type === EventType.Tap) {\r\n const currentTime = (new Date()).getTime();\r\n let setTapCount = 0;\r\n if (currentTime - this._lastSetTapCountTime > Gesture.CLEAR_TAP_COUNT_TIME) {\r\n setTapCount = 1;\r\n }\r\n else {\r\n setTapCount = 2;\r\n }\r\n this._lastSetTapCountTime = currentTime;\r\n event.tapCount = setTapCount;\r\n }\r\n else if (event.type === EventType.Change || event.type === EventType.Contextmenu) {\r\n // tap is canceled by scrolling or context menu\r\n this._lastSetTapCountTime = 0;\r\n }\r\n for (let i = 0; i < this.ignoreTargets.length; i++) {\r\n if (event.initialTarget instanceof Node && this.ignoreTargets[i].contains(event.initialTarget)) {\r\n return;\r\n }\r\n }\r\n this.targets.forEach(target => {\r\n if (event.initialTarget instanceof Node && target.contains(event.initialTarget)) {\r\n target.dispatchEvent(event);\r\n this.dispatched = true;\r\n }\r\n });\r\n }\r\n inertia(dispatchTo, t1, vX, dirX, x, vY, dirY, y) {\r\n this.handle = DomUtils.scheduleAtNextAnimationFrame(() => {\r\n let now = Date.now();\r\n // velocity: old speed + accel_over_time\r\n let deltaT = now - t1, delta_pos_x = 0, delta_pos_y = 0, stopped = true;\r\n vX += Gesture.SCROLL_FRICTION * deltaT;\r\n vY += Gesture.SCROLL_FRICTION * deltaT;\r\n if (vX > 0) {\r\n stopped = false;\r\n delta_pos_x = dirX * vX * deltaT;\r\n }\r\n if (vY > 0) {\r\n stopped = false;\r\n delta_pos_y = dirY * vY * deltaT;\r\n }\r\n // dispatch translation event\r\n let evt = this.newGestureEvent(EventType.Change);\r\n evt.translationX = delta_pos_x;\r\n evt.translationY = delta_pos_y;\r\n dispatchTo.forEach(d => d.dispatchEvent(evt));\r\n if (!stopped) {\r\n this.inertia(dispatchTo, now, vX, dirX, x + delta_pos_x, vY, dirY, y + delta_pos_y);\r\n }\r\n });\r\n }\r\n onTouchMove(e) {\r\n let timestamp = Date.now(); // use Date.now() because on FF e.timeStamp is not epoch based.\r\n for (let i = 0, len = e.changedTouches.length; i < len; i++) {\r\n let touch = e.changedTouches.item(i);\r\n if (!this.activeTouches.hasOwnProperty(String(touch.identifier))) {\r\n console.warn('end of an UNKNOWN touch', touch);\r\n continue;\r\n }\r\n let data = this.activeTouches[touch.identifier];\r\n let evt = this.newGestureEvent(EventType.Change, data.initialTarget);\r\n evt.translationX = touch.pageX - arrays.tail(data.rollingPageX);\r\n evt.translationY = touch.pageY - arrays.tail(data.rollingPageY);\r\n evt.pageX = touch.pageX;\r\n evt.pageY = touch.pageY;\r\n this.dispatchEvent(evt);\r\n // only keep a few data points, to average the final speed\r\n if (data.rollingPageX.length > 3) {\r\n data.rollingPageX.shift();\r\n data.rollingPageY.shift();\r\n data.rollingTimestamps.shift();\r\n }\r\n data.rollingPageX.push(touch.pageX);\r\n data.rollingPageY.push(touch.pageY);\r\n data.rollingTimestamps.push(timestamp);\r\n }\r\n if (this.dispatched) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.dispatched = false;\r\n }\r\n }\r\n}\r\nGesture.SCROLL_FRICTION = -0.005;\r\nGesture.HOLD_DELAY = 700;\r\nGesture.CLEAR_TAP_COUNT_TIME = 400; // ms\r\n__decorate([\r\n memoize\r\n], Gesture, \"isTouchDevice\", null);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as dom from './dom.js';\r\nimport { IframeUtils } from './iframe.js';\r\nimport { StandardMouseEvent } from './mouseEvent.js';\r\nimport { DisposableStore } from '../common/lifecycle.js';\r\nimport { isIOS } from '../common/platform.js';\r\nexport function standardMouseMoveMerger(lastEvent, currentEvent) {\r\n let ev = new StandardMouseEvent(currentEvent);\r\n ev.preventDefault();\r\n return {\r\n leftButton: ev.leftButton,\r\n buttons: ev.buttons,\r\n posx: ev.posx,\r\n posy: ev.posy\r\n };\r\n}\r\nexport class GlobalMouseMoveMonitor {\r\n constructor() {\r\n this._hooks = new DisposableStore();\r\n this._mouseMoveEventMerger = null;\r\n this._mouseMoveCallback = null;\r\n this._onStopCallback = null;\r\n }\r\n dispose() {\r\n this.stopMonitoring(false);\r\n this._hooks.dispose();\r\n }\r\n stopMonitoring(invokeStopCallback, browserEvent) {\r\n if (!this.isMonitoring()) {\r\n // Not monitoring\r\n return;\r\n }\r\n // Unhook\r\n this._hooks.clear();\r\n this._mouseMoveEventMerger = null;\r\n this._mouseMoveCallback = null;\r\n const onStopCallback = this._onStopCallback;\r\n this._onStopCallback = null;\r\n if (invokeStopCallback && onStopCallback) {\r\n onStopCallback(browserEvent);\r\n }\r\n }\r\n isMonitoring() {\r\n return !!this._mouseMoveEventMerger;\r\n }\r\n startMonitoring(initialElement, initialButtons, mouseMoveEventMerger, mouseMoveCallback, onStopCallback) {\r\n if (this.isMonitoring()) {\r\n // I am already hooked\r\n return;\r\n }\r\n this._mouseMoveEventMerger = mouseMoveEventMerger;\r\n this._mouseMoveCallback = mouseMoveCallback;\r\n this._onStopCallback = onStopCallback;\r\n const windowChain = IframeUtils.getSameOriginWindowChain();\r\n const mouseMove = isIOS ? 'pointermove' : 'mousemove'; // Safari sends wrong event, workaround for #122653\r\n const mouseUp = 'mouseup';\r\n const listenTo = windowChain.map(element => element.window.document);\r\n const shadowRoot = dom.getShadowRoot(initialElement);\r\n if (shadowRoot) {\r\n listenTo.unshift(shadowRoot);\r\n }\r\n for (const element of listenTo) {\r\n this._hooks.add(dom.addDisposableThrottledListener(element, mouseMove, (data) => {\r\n if (data.buttons !== initialButtons) {\r\n // Buttons state has changed in the meantime\r\n this.stopMonitoring(true);\r\n return;\r\n }\r\n this._mouseMoveCallback(data);\r\n }, (lastEvent, currentEvent) => this._mouseMoveEventMerger(lastEvent, currentEvent)));\r\n this._hooks.add(dom.addDisposableListener(element, mouseUp, (e) => this.stopMonitoring(true)));\r\n }\r\n if (IframeUtils.hasDifferentOriginAncestor()) {\r\n let lastSameOriginAncestor = windowChain[windowChain.length - 1];\r\n // We might miss a mouse up if it happens outside the iframe\r\n // This one is for Chrome\r\n this._hooks.add(dom.addDisposableListener(lastSameOriginAncestor.window.document, 'mouseout', (browserEvent) => {\r\n let e = new StandardMouseEvent(browserEvent);\r\n if (e.target.tagName.toLowerCase() === 'html') {\r\n this.stopMonitoring(true);\r\n }\r\n }));\r\n // This one is for FF\r\n this._hooks.add(dom.addDisposableListener(lastSameOriginAncestor.window.document, 'mouseover', (browserEvent) => {\r\n let e = new StandardMouseEvent(browserEvent);\r\n if (e.target.tagName.toLowerCase() === 'html') {\r\n this.stopMonitoring(true);\r\n }\r\n }));\r\n // This one is for IE\r\n this._hooks.add(dom.addDisposableListener(lastSameOriginAncestor.window.document.body, 'mouseleave', (browserEvent) => {\r\n this.stopMonitoring(true);\r\n }));\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as dom from '../../base/browser/dom.js';\r\nimport { GlobalMouseMoveMonitor } from '../../base/browser/globalMouseMoveMonitor.js';\r\nimport { StandardMouseEvent } from '../../base/browser/mouseEvent.js';\r\nimport { Disposable } from '../../base/common/lifecycle.js';\r\n/**\r\n * Coordinates relative to the whole document (e.g. mouse event's pageX and pageY)\r\n */\r\nexport class PageCoordinates {\r\n constructor(x, y) {\r\n this.x = x;\r\n this.y = y;\r\n this._pageCoordinatesBrand = undefined;\r\n }\r\n toClientCoordinates() {\r\n return new ClientCoordinates(this.x - dom.StandardWindow.scrollX, this.y - dom.StandardWindow.scrollY);\r\n }\r\n}\r\n/**\r\n * Coordinates within the application's client area (i.e. origin is document's scroll position).\r\n *\r\n * For example, clicking in the top-left corner of the client area will\r\n * always result in a mouse event with a client.x value of 0, regardless\r\n * of whether the page is scrolled horizontally.\r\n */\r\nexport class ClientCoordinates {\r\n constructor(clientX, clientY) {\r\n this.clientX = clientX;\r\n this.clientY = clientY;\r\n this._clientCoordinatesBrand = undefined;\r\n }\r\n toPageCoordinates() {\r\n return new PageCoordinates(this.clientX + dom.StandardWindow.scrollX, this.clientY + dom.StandardWindow.scrollY);\r\n }\r\n}\r\n/**\r\n * The position of the editor in the page.\r\n */\r\nexport class EditorPagePosition {\r\n constructor(x, y, width, height) {\r\n this.x = x;\r\n this.y = y;\r\n this.width = width;\r\n this.height = height;\r\n this._editorPagePositionBrand = undefined;\r\n }\r\n}\r\nexport function createEditorPagePosition(editorViewDomNode) {\r\n const editorPos = dom.getDomNodePagePosition(editorViewDomNode);\r\n return new EditorPagePosition(editorPos.left, editorPos.top, editorPos.width, editorPos.height);\r\n}\r\nexport class EditorMouseEvent extends StandardMouseEvent {\r\n constructor(e, editorViewDomNode) {\r\n super(e);\r\n this._editorMouseEventBrand = undefined;\r\n this.pos = new PageCoordinates(this.posx, this.posy);\r\n this.editorPos = createEditorPagePosition(editorViewDomNode);\r\n }\r\n}\r\nexport class EditorMouseEventFactory {\r\n constructor(editorViewDomNode) {\r\n this._editorViewDomNode = editorViewDomNode;\r\n }\r\n _create(e) {\r\n return new EditorMouseEvent(e, this._editorViewDomNode);\r\n }\r\n onContextMenu(target, callback) {\r\n return dom.addDisposableListener(target, 'contextmenu', (e) => {\r\n callback(this._create(e));\r\n });\r\n }\r\n onMouseUp(target, callback) {\r\n return dom.addDisposableListener(target, 'mouseup', (e) => {\r\n callback(this._create(e));\r\n });\r\n }\r\n onMouseDown(target, callback) {\r\n return dom.addDisposableListener(target, 'mousedown', (e) => {\r\n callback(this._create(e));\r\n });\r\n }\r\n onMouseLeave(target, callback) {\r\n return dom.addDisposableNonBubblingMouseOutListener(target, (e) => {\r\n callback(this._create(e));\r\n });\r\n }\r\n onMouseMoveThrottled(target, callback, merger, minimumTimeMs) {\r\n const myMerger = (lastEvent, currentEvent) => {\r\n return merger(lastEvent, this._create(currentEvent));\r\n };\r\n return dom.addDisposableThrottledListener(target, 'mousemove', callback, myMerger, minimumTimeMs);\r\n }\r\n}\r\nexport class EditorPointerEventFactory {\r\n constructor(editorViewDomNode) {\r\n this._editorViewDomNode = editorViewDomNode;\r\n }\r\n _create(e) {\r\n return new EditorMouseEvent(e, this._editorViewDomNode);\r\n }\r\n onPointerUp(target, callback) {\r\n return dom.addDisposableListener(target, 'pointerup', (e) => {\r\n callback(this._create(e));\r\n });\r\n }\r\n onPointerDown(target, callback) {\r\n return dom.addDisposableListener(target, 'pointerdown', (e) => {\r\n callback(this._create(e));\r\n });\r\n }\r\n onPointerLeave(target, callback) {\r\n return dom.addDisposableNonBubblingPointerOutListener(target, (e) => {\r\n callback(this._create(e));\r\n });\r\n }\r\n onPointerMoveThrottled(target, callback, merger, minimumTimeMs) {\r\n const myMerger = (lastEvent, currentEvent) => {\r\n return merger(lastEvent, this._create(currentEvent));\r\n };\r\n return dom.addDisposableThrottledListener(target, 'pointermove', callback, myMerger, minimumTimeMs);\r\n }\r\n}\r\nexport class GlobalEditorMouseMoveMonitor extends Disposable {\r\n constructor(editorViewDomNode) {\r\n super();\r\n this._editorViewDomNode = editorViewDomNode;\r\n this._globalMouseMoveMonitor = this._register(new GlobalMouseMoveMonitor());\r\n this._keydownListener = null;\r\n }\r\n startMonitoring(initialElement, initialButtons, merger, mouseMoveCallback, onStopCallback) {\r\n // Add a <> keydown event listener that will cancel the monitoring\r\n // if something other than a modifier key is pressed\r\n this._keydownListener = dom.addStandardDisposableListener(document, 'keydown', (e) => {\r\n const kb = e.toKeybinding();\r\n if (kb.isModifierKey()) {\r\n // Allow modifier keys\r\n return;\r\n }\r\n this._globalMouseMoveMonitor.stopMonitoring(true, e.browserEvent);\r\n }, true);\r\n const myMerger = (lastEvent, currentEvent) => {\r\n return merger(lastEvent, new EditorMouseEvent(currentEvent, this._editorViewDomNode));\r\n };\r\n this._globalMouseMoveMonitor.startMonitoring(initialElement, initialButtons, myMerger, mouseMoveCallback, (e) => {\r\n this._keydownListener.dispose();\r\n onStopCallback(e);\r\n });\r\n }\r\n stopMonitoring() {\r\n this._globalMouseMoveMonitor.stopMonitoring(true);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nexport class ViewEventHandler extends Disposable {\r\n constructor() {\r\n super();\r\n this._shouldRender = true;\r\n }\r\n shouldRender() {\r\n return this._shouldRender;\r\n }\r\n forceShouldRender() {\r\n this._shouldRender = true;\r\n }\r\n setShouldRender() {\r\n this._shouldRender = true;\r\n }\r\n onDidRender() {\r\n this._shouldRender = false;\r\n }\r\n // --- begin event handlers\r\n onCompositionStart(e) {\r\n return false;\r\n }\r\n onCompositionEnd(e) {\r\n return false;\r\n }\r\n onConfigurationChanged(e) {\r\n return false;\r\n }\r\n onCursorStateChanged(e) {\r\n return false;\r\n }\r\n onDecorationsChanged(e) {\r\n return false;\r\n }\r\n onFlushed(e) {\r\n return false;\r\n }\r\n onFocusChanged(e) {\r\n return false;\r\n }\r\n onLanguageConfigurationChanged(e) {\r\n return false;\r\n }\r\n onLineMappingChanged(e) {\r\n return false;\r\n }\r\n onLinesChanged(e) {\r\n return false;\r\n }\r\n onLinesDeleted(e) {\r\n return false;\r\n }\r\n onLinesInserted(e) {\r\n return false;\r\n }\r\n onRevealRangeRequest(e) {\r\n return false;\r\n }\r\n onScrollChanged(e) {\r\n return false;\r\n }\r\n onThemeChanged(e) {\r\n return false;\r\n }\r\n onTokensChanged(e) {\r\n return false;\r\n }\r\n onTokensColorsChanged(e) {\r\n return false;\r\n }\r\n onZonesChanged(e) {\r\n return false;\r\n }\r\n // --- end event handlers\r\n handleEvents(events) {\r\n let shouldRender = false;\r\n for (let i = 0, len = events.length; i < len; i++) {\r\n let e = events[i];\r\n switch (e.type) {\r\n case 0 /* ViewCompositionStart */:\r\n if (this.onCompositionStart(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 1 /* ViewCompositionEnd */:\r\n if (this.onCompositionEnd(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 2 /* ViewConfigurationChanged */:\r\n if (this.onConfigurationChanged(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 3 /* ViewCursorStateChanged */:\r\n if (this.onCursorStateChanged(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 4 /* ViewDecorationsChanged */:\r\n if (this.onDecorationsChanged(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 5 /* ViewFlushed */:\r\n if (this.onFlushed(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 6 /* ViewFocusChanged */:\r\n if (this.onFocusChanged(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 7 /* ViewLanguageConfigurationChanged */:\r\n if (this.onLanguageConfigurationChanged(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 8 /* ViewLineMappingChanged */:\r\n if (this.onLineMappingChanged(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 9 /* ViewLinesChanged */:\r\n if (this.onLinesChanged(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 10 /* ViewLinesDeleted */:\r\n if (this.onLinesDeleted(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 11 /* ViewLinesInserted */:\r\n if (this.onLinesInserted(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 12 /* ViewRevealRangeRequest */:\r\n if (this.onRevealRangeRequest(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 13 /* ViewScrollChanged */:\r\n if (this.onScrollChanged(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 15 /* ViewTokensChanged */:\r\n if (this.onTokensChanged(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 14 /* ViewThemeChanged */:\r\n if (this.onThemeChanged(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 16 /* ViewTokensColorsChanged */:\r\n if (this.onTokensColorsChanged(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 17 /* ViewZonesChanged */:\r\n if (this.onZonesChanged(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n default:\r\n console.info('View received unknown event: ');\r\n console.info(e);\r\n }\r\n }\r\n if (shouldRender) {\r\n this._shouldRender = true;\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { FastDomNode } from '../../../base/browser/fastDomNode.js';\r\nimport { ViewEventHandler } from '../../common/viewModel/viewEventHandler.js';\r\nexport class ViewPart extends ViewEventHandler {\r\n constructor(context) {\r\n super();\r\n this._context = context;\r\n this._context.addEventHandler(this);\r\n }\r\n dispose() {\r\n this._context.removeEventHandler(this);\r\n super.dispose();\r\n }\r\n}\r\nexport class PartFingerprints {\r\n static write(target, partId) {\r\n if (target instanceof FastDomNode) {\r\n target.setAttribute('data-mprt', String(partId));\r\n }\r\n else {\r\n target.setAttribute('data-mprt', String(partId));\r\n }\r\n }\r\n static read(target) {\r\n const r = target.getAttribute('data-mprt');\r\n if (r === null) {\r\n return 0 /* None */;\r\n }\r\n return parseInt(r, 10);\r\n }\r\n static collect(child, stopAt) {\r\n let result = [], resultLen = 0;\r\n while (child && child !== document.body) {\r\n if (child === stopAt) {\r\n break;\r\n }\r\n if (child.nodeType === child.ELEMENT_NODE) {\r\n result[resultLen++] = this.read(child);\r\n }\r\n child = child.parentElement;\r\n }\r\n const r = new Uint8Array(resultLen);\r\n for (let i = 0; i < resultLen; i++) {\r\n r[i] = result[resultLen - i - 1];\r\n }\r\n return r;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class RestrictedRenderingContext {\r\n constructor(viewLayout, viewportData) {\r\n this._restrictedRenderingContextBrand = undefined;\r\n this._viewLayout = viewLayout;\r\n this.viewportData = viewportData;\r\n this.scrollWidth = this._viewLayout.getScrollWidth();\r\n this.scrollHeight = this._viewLayout.getScrollHeight();\r\n this.visibleRange = this.viewportData.visibleRange;\r\n this.bigNumbersDelta = this.viewportData.bigNumbersDelta;\r\n const vInfo = this._viewLayout.getCurrentViewport();\r\n this.scrollTop = vInfo.top;\r\n this.scrollLeft = vInfo.left;\r\n this.viewportWidth = vInfo.width;\r\n this.viewportHeight = vInfo.height;\r\n }\r\n getScrolledTopFromAbsoluteTop(absoluteTop) {\r\n return absoluteTop - this.scrollTop;\r\n }\r\n getVerticalOffsetForLineNumber(lineNumber) {\r\n return this._viewLayout.getVerticalOffsetForLineNumber(lineNumber);\r\n }\r\n getDecorationsInViewport() {\r\n return this.viewportData.getDecorationsInViewport();\r\n }\r\n}\r\nexport class RenderingContext extends RestrictedRenderingContext {\r\n constructor(viewLayout, viewportData, viewLines) {\r\n super(viewLayout, viewportData);\r\n this._renderingContextBrand = undefined;\r\n this._viewLines = viewLines;\r\n }\r\n linesVisibleRangesForRange(range, includeNewLines) {\r\n return this._viewLines.linesVisibleRangesForRange(range, includeNewLines);\r\n }\r\n visibleRangeForPosition(position) {\r\n return this._viewLines.visibleRangeForPosition(position);\r\n }\r\n}\r\nexport class LineVisibleRanges {\r\n constructor(outsideRenderedLine, lineNumber, ranges) {\r\n this.outsideRenderedLine = outsideRenderedLine;\r\n this.lineNumber = lineNumber;\r\n this.ranges = ranges;\r\n }\r\n}\r\nexport class HorizontalRange {\r\n constructor(left, width) {\r\n this.left = Math.round(left);\r\n this.width = Math.round(width);\r\n }\r\n toString() {\r\n return `[${this.left},${this.width}]`;\r\n }\r\n}\r\nexport class HorizontalPosition {\r\n constructor(outsideRenderedLine, left) {\r\n this.outsideRenderedLine = outsideRenderedLine;\r\n this.left = Math.round(left);\r\n }\r\n}\r\nexport class VisibleRanges {\r\n constructor(outsideRenderedLine, ranges) {\r\n this.outsideRenderedLine = outsideRenderedLine;\r\n this.ranges = ranges;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { HorizontalRange } from '../../../common/view/renderingContext.js';\r\nclass FloatHorizontalRange {\r\n constructor(left, width) {\r\n this._floatHorizontalRangeBrand = undefined;\r\n this.left = left;\r\n this.width = width;\r\n }\r\n toString() {\r\n return `[${this.left},${this.width}]`;\r\n }\r\n static compare(a, b) {\r\n return a.left - b.left;\r\n }\r\n}\r\nexport class RangeUtil {\r\n static _createRange() {\r\n if (!this._handyReadyRange) {\r\n this._handyReadyRange = document.createRange();\r\n }\r\n return this._handyReadyRange;\r\n }\r\n static _detachRange(range, endNode) {\r\n // Move range out of the span node, IE doesn't like having many ranges in\r\n // the same spot and will act badly for lines containing dashes ('-')\r\n range.selectNodeContents(endNode);\r\n }\r\n static _readClientRects(startElement, startOffset, endElement, endOffset, endNode) {\r\n const range = this._createRange();\r\n try {\r\n range.setStart(startElement, startOffset);\r\n range.setEnd(endElement, endOffset);\r\n return range.getClientRects();\r\n }\r\n catch (e) {\r\n // This is life ...\r\n return null;\r\n }\r\n finally {\r\n this._detachRange(range, endNode);\r\n }\r\n }\r\n static _mergeAdjacentRanges(ranges) {\r\n if (ranges.length === 1) {\r\n // There is nothing to merge\r\n return [new HorizontalRange(ranges[0].left, ranges[0].width)];\r\n }\r\n ranges.sort(FloatHorizontalRange.compare);\r\n let result = [], resultLen = 0;\r\n let prevLeft = ranges[0].left;\r\n let prevWidth = ranges[0].width;\r\n for (let i = 1, len = ranges.length; i < len; i++) {\r\n const range = ranges[i];\r\n const myLeft = range.left;\r\n const myWidth = range.width;\r\n if (prevLeft + prevWidth + 0.9 /* account for browser's rounding errors*/ >= myLeft) {\r\n prevWidth = Math.max(prevWidth, myLeft + myWidth - prevLeft);\r\n }\r\n else {\r\n result[resultLen++] = new HorizontalRange(prevLeft, prevWidth);\r\n prevLeft = myLeft;\r\n prevWidth = myWidth;\r\n }\r\n }\r\n result[resultLen++] = new HorizontalRange(prevLeft, prevWidth);\r\n return result;\r\n }\r\n static _createHorizontalRangesFromClientRects(clientRects, clientRectDeltaLeft) {\r\n if (!clientRects || clientRects.length === 0) {\r\n return null;\r\n }\r\n // We go through FloatHorizontalRange because it has been observed in bi-di text\r\n // that the clientRects are not coming in sorted from the browser\r\n const result = [];\r\n for (let i = 0, len = clientRects.length; i < len; i++) {\r\n const clientRect = clientRects[i];\r\n result[i] = new FloatHorizontalRange(Math.max(0, clientRect.left - clientRectDeltaLeft), clientRect.width);\r\n }\r\n return this._mergeAdjacentRanges(result);\r\n }\r\n static readHorizontalRanges(domNode, startChildIndex, startOffset, endChildIndex, endOffset, clientRectDeltaLeft, endNode) {\r\n // Panic check\r\n const min = 0;\r\n const max = domNode.children.length - 1;\r\n if (min > max) {\r\n return null;\r\n }\r\n startChildIndex = Math.min(max, Math.max(min, startChildIndex));\r\n endChildIndex = Math.min(max, Math.max(min, endChildIndex));\r\n if (startChildIndex === endChildIndex && startOffset === endOffset && startOffset === 0 && !domNode.children[startChildIndex].firstChild) {\r\n // We must find the position at the beginning of a \r\n // To cover cases of empty s, avoid using a range and use the 's bounding box\r\n const clientRects = domNode.children[startChildIndex].getClientRects();\r\n return this._createHorizontalRangesFromClientRects(clientRects, clientRectDeltaLeft);\r\n }\r\n // If crossing over to a span only to select offset 0, then use the previous span's maximum offset\r\n // Chrome is buggy and doesn't handle 0 offsets well sometimes.\r\n if (startChildIndex !== endChildIndex) {\r\n if (endChildIndex > 0 && endOffset === 0) {\r\n endChildIndex--;\r\n endOffset = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n }\r\n }\r\n let startElement = domNode.children[startChildIndex].firstChild;\r\n let endElement = domNode.children[endChildIndex].firstChild;\r\n if (!startElement || !endElement) {\r\n // When having an empty (without any text content), try to move to the previous \r\n if (!startElement && startOffset === 0 && startChildIndex > 0) {\r\n startElement = domNode.children[startChildIndex - 1].firstChild;\r\n startOffset = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n }\r\n if (!endElement && endOffset === 0 && endChildIndex > 0) {\r\n endElement = domNode.children[endChildIndex - 1].firstChild;\r\n endOffset = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n }\r\n }\r\n if (!startElement || !endElement) {\r\n return null;\r\n }\r\n startOffset = Math.min(startElement.textContent.length, Math.max(0, startOffset));\r\n endOffset = Math.min(endElement.textContent.length, Math.max(0, endOffset));\r\n const clientRects = this._readClientRects(startElement, startOffset, endElement, endOffset, endNode);\r\n return this._createHorizontalRangesFromClientRects(clientRects, clientRectDeltaLeft);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as browser from '../../../../base/browser/browser.js';\r\nimport { createFastDomNode } from '../../../../base/browser/fastDomNode.js';\r\nimport * as platform from '../../../../base/common/platform.js';\r\nimport { RangeUtil } from './rangeUtil.js';\r\nimport { HorizontalRange, VisibleRanges } from '../../../common/view/renderingContext.js';\r\nimport { LineDecoration } from '../../../common/viewLayout/lineDecorations.js';\r\nimport { RenderLineInput, renderViewLine, LineRange, DomPosition } from '../../../common/viewLayout/viewLineRenderer.js';\r\nimport { ColorScheme } from '../../../../platform/theme/common/theme.js';\r\nimport { EditorFontLigatures } from '../../../common/config/editorOptions.js';\r\nconst canUseFastRenderedViewLine = (function () {\r\n if (platform.isNative) {\r\n // In VSCode we know very well when the zoom level changes\r\n return true;\r\n }\r\n if (platform.isLinux || browser.isFirefox || browser.isSafari) {\r\n // On Linux, it appears that zooming affects char widths (in pixels), which is unexpected.\r\n // --\r\n // Even though we read character widths correctly, having read them at a specific zoom level\r\n // does not mean they are the same at the current zoom level.\r\n // --\r\n // This could be improved if we ever figure out how to get an event when browsers zoom,\r\n // but until then we have to stick with reading client rects.\r\n // --\r\n // The same has been observed with Firefox on Windows7\r\n // --\r\n // The same has been oversved with Safari\r\n return false;\r\n }\r\n return true;\r\n})();\r\nlet monospaceAssumptionsAreValid = true;\r\nexport class DomReadingContext {\r\n constructor(domNode, endNode) {\r\n this._domNode = domNode;\r\n this._clientRectDeltaLeft = 0;\r\n this._clientRectDeltaLeftRead = false;\r\n this.endNode = endNode;\r\n }\r\n get clientRectDeltaLeft() {\r\n if (!this._clientRectDeltaLeftRead) {\r\n this._clientRectDeltaLeftRead = true;\r\n this._clientRectDeltaLeft = this._domNode.getBoundingClientRect().left;\r\n }\r\n return this._clientRectDeltaLeft;\r\n }\r\n}\r\nexport class ViewLineOptions {\r\n constructor(config, themeType) {\r\n this.themeType = themeType;\r\n const options = config.options;\r\n const fontInfo = options.get(41 /* fontInfo */);\r\n this.renderWhitespace = options.get(87 /* renderWhitespace */);\r\n this.renderControlCharacters = options.get(81 /* renderControlCharacters */);\r\n this.spaceWidth = fontInfo.spaceWidth;\r\n this.middotWidth = fontInfo.middotWidth;\r\n this.wsmiddotWidth = fontInfo.wsmiddotWidth;\r\n this.useMonospaceOptimizations = (fontInfo.isMonospace\r\n && !options.get(27 /* disableMonospaceOptimizations */));\r\n this.canUseHalfwidthRightwardsArrow = fontInfo.canUseHalfwidthRightwardsArrow;\r\n this.lineHeight = options.get(57 /* lineHeight */);\r\n this.stopRenderingLineAfter = options.get(104 /* stopRenderingLineAfter */);\r\n this.fontLigatures = options.get(42 /* fontLigatures */);\r\n }\r\n equals(other) {\r\n return (this.themeType === other.themeType\r\n && this.renderWhitespace === other.renderWhitespace\r\n && this.renderControlCharacters === other.renderControlCharacters\r\n && this.spaceWidth === other.spaceWidth\r\n && this.middotWidth === other.middotWidth\r\n && this.wsmiddotWidth === other.wsmiddotWidth\r\n && this.useMonospaceOptimizations === other.useMonospaceOptimizations\r\n && this.canUseHalfwidthRightwardsArrow === other.canUseHalfwidthRightwardsArrow\r\n && this.lineHeight === other.lineHeight\r\n && this.stopRenderingLineAfter === other.stopRenderingLineAfter\r\n && this.fontLigatures === other.fontLigatures);\r\n }\r\n}\r\nexport class ViewLine {\r\n constructor(options) {\r\n this._options = options;\r\n this._isMaybeInvalid = true;\r\n this._renderedViewLine = null;\r\n }\r\n // --- begin IVisibleLineData\r\n getDomNode() {\r\n if (this._renderedViewLine && this._renderedViewLine.domNode) {\r\n return this._renderedViewLine.domNode.domNode;\r\n }\r\n return null;\r\n }\r\n setDomNode(domNode) {\r\n if (this._renderedViewLine) {\r\n this._renderedViewLine.domNode = createFastDomNode(domNode);\r\n }\r\n else {\r\n throw new Error('I have no rendered view line to set the dom node to...');\r\n }\r\n }\r\n onContentChanged() {\r\n this._isMaybeInvalid = true;\r\n }\r\n onTokensChanged() {\r\n this._isMaybeInvalid = true;\r\n }\r\n onDecorationsChanged() {\r\n this._isMaybeInvalid = true;\r\n }\r\n onOptionsChanged(newOptions) {\r\n this._isMaybeInvalid = true;\r\n this._options = newOptions;\r\n }\r\n onSelectionChanged() {\r\n if (this._options.themeType === ColorScheme.HIGH_CONTRAST || this._options.renderWhitespace === 'selection') {\r\n this._isMaybeInvalid = true;\r\n return true;\r\n }\r\n return false;\r\n }\r\n renderLine(lineNumber, deltaTop, viewportData, sb) {\r\n if (this._isMaybeInvalid === false) {\r\n // it appears that nothing relevant has changed\r\n return false;\r\n }\r\n this._isMaybeInvalid = false;\r\n const lineData = viewportData.getViewLineRenderingData(lineNumber);\r\n const options = this._options;\r\n const actualInlineDecorations = LineDecoration.filter(lineData.inlineDecorations, lineNumber, lineData.minColumn, lineData.maxColumn);\r\n // Only send selection information when needed for rendering whitespace\r\n let selectionsOnLine = null;\r\n if (options.themeType === ColorScheme.HIGH_CONTRAST || this._options.renderWhitespace === 'selection') {\r\n const selections = viewportData.selections;\r\n for (const selection of selections) {\r\n if (selection.endLineNumber < lineNumber || selection.startLineNumber > lineNumber) {\r\n // Selection does not intersect line\r\n continue;\r\n }\r\n const startColumn = (selection.startLineNumber === lineNumber ? selection.startColumn : lineData.minColumn);\r\n const endColumn = (selection.endLineNumber === lineNumber ? selection.endColumn : lineData.maxColumn);\r\n if (startColumn < endColumn) {\r\n if (options.themeType === ColorScheme.HIGH_CONTRAST || this._options.renderWhitespace !== 'selection') {\r\n actualInlineDecorations.push(new LineDecoration(startColumn, endColumn, 'inline-selected-text', 0 /* Regular */));\r\n }\r\n else {\r\n if (!selectionsOnLine) {\r\n selectionsOnLine = [];\r\n }\r\n selectionsOnLine.push(new LineRange(startColumn - 1, endColumn - 1));\r\n }\r\n }\r\n }\r\n }\r\n const renderLineInput = new RenderLineInput(options.useMonospaceOptimizations, options.canUseHalfwidthRightwardsArrow, lineData.content, lineData.continuesWithWrappedLine, lineData.isBasicASCII, lineData.containsRTL, lineData.minColumn - 1, lineData.tokens, actualInlineDecorations, lineData.tabSize, lineData.startVisibleColumn, options.spaceWidth, options.middotWidth, options.wsmiddotWidth, options.stopRenderingLineAfter, options.renderWhitespace, options.renderControlCharacters, options.fontLigatures !== EditorFontLigatures.OFF, selectionsOnLine);\r\n if (this._renderedViewLine && this._renderedViewLine.input.equals(renderLineInput)) {\r\n // no need to do anything, we have the same render input\r\n return false;\r\n }\r\n sb.appendASCIIString('
');\r\n const output = renderViewLine(renderLineInput, sb);\r\n sb.appendASCIIString('
');\r\n let renderedViewLine = null;\r\n if (monospaceAssumptionsAreValid && canUseFastRenderedViewLine && lineData.isBasicASCII && options.useMonospaceOptimizations && output.containsForeignElements === 0 /* None */) {\r\n if (lineData.content.length < 300 && renderLineInput.lineTokens.getCount() < 100) {\r\n // Browser rounding errors have been observed in Chrome and IE, so using the fast\r\n // view line only for short lines. Please test before removing the length check...\r\n // ---\r\n // Another rounding error has been observed on Linux in VSCode, where width\r\n // rounding errors add up to an observable large number...\r\n // ---\r\n // Also see another example of rounding errors on Windows in\r\n // https://github.com/microsoft/vscode/issues/33178\r\n renderedViewLine = new FastRenderedViewLine(this._renderedViewLine ? this._renderedViewLine.domNode : null, renderLineInput, output.characterMapping);\r\n }\r\n }\r\n if (!renderedViewLine) {\r\n renderedViewLine = createRenderedLine(this._renderedViewLine ? this._renderedViewLine.domNode : null, renderLineInput, output.characterMapping, output.containsRTL, output.containsForeignElements);\r\n }\r\n this._renderedViewLine = renderedViewLine;\r\n return true;\r\n }\r\n layoutLine(lineNumber, deltaTop) {\r\n if (this._renderedViewLine && this._renderedViewLine.domNode) {\r\n this._renderedViewLine.domNode.setTop(deltaTop);\r\n this._renderedViewLine.domNode.setHeight(this._options.lineHeight);\r\n }\r\n }\r\n // --- end IVisibleLineData\r\n getWidth() {\r\n if (!this._renderedViewLine) {\r\n return 0;\r\n }\r\n return this._renderedViewLine.getWidth();\r\n }\r\n getWidthIsFast() {\r\n if (!this._renderedViewLine) {\r\n return true;\r\n }\r\n return this._renderedViewLine.getWidthIsFast();\r\n }\r\n needsMonospaceFontCheck() {\r\n if (!this._renderedViewLine) {\r\n return false;\r\n }\r\n return (this._renderedViewLine instanceof FastRenderedViewLine);\r\n }\r\n monospaceAssumptionsAreValid() {\r\n if (!this._renderedViewLine) {\r\n return monospaceAssumptionsAreValid;\r\n }\r\n if (this._renderedViewLine instanceof FastRenderedViewLine) {\r\n return this._renderedViewLine.monospaceAssumptionsAreValid();\r\n }\r\n return monospaceAssumptionsAreValid;\r\n }\r\n onMonospaceAssumptionsInvalidated() {\r\n if (this._renderedViewLine && this._renderedViewLine instanceof FastRenderedViewLine) {\r\n this._renderedViewLine = this._renderedViewLine.toSlowRenderedLine();\r\n }\r\n }\r\n getVisibleRangesForRange(startColumn, endColumn, context) {\r\n if (!this._renderedViewLine) {\r\n return null;\r\n }\r\n startColumn = startColumn | 0; // @perf\r\n endColumn = endColumn | 0; // @perf\r\n startColumn = Math.min(this._renderedViewLine.input.lineContent.length + 1, Math.max(1, startColumn));\r\n endColumn = Math.min(this._renderedViewLine.input.lineContent.length + 1, Math.max(1, endColumn));\r\n const stopRenderingLineAfter = this._renderedViewLine.input.stopRenderingLineAfter | 0; // @perf\r\n let outsideRenderedLine = false;\r\n if (stopRenderingLineAfter !== -1 && startColumn > stopRenderingLineAfter + 1 && endColumn > stopRenderingLineAfter + 1) {\r\n // This range is obviously not visible\r\n outsideRenderedLine = true;\r\n }\r\n if (stopRenderingLineAfter !== -1 && startColumn > stopRenderingLineAfter + 1) {\r\n startColumn = stopRenderingLineAfter + 1;\r\n }\r\n if (stopRenderingLineAfter !== -1 && endColumn > stopRenderingLineAfter + 1) {\r\n endColumn = stopRenderingLineAfter + 1;\r\n }\r\n const horizontalRanges = this._renderedViewLine.getVisibleRangesForRange(startColumn, endColumn, context);\r\n if (horizontalRanges && horizontalRanges.length > 0) {\r\n return new VisibleRanges(outsideRenderedLine, horizontalRanges);\r\n }\r\n return null;\r\n }\r\n getColumnOfNodeOffset(lineNumber, spanNode, offset) {\r\n if (!this._renderedViewLine) {\r\n return 1;\r\n }\r\n return this._renderedViewLine.getColumnOfNodeOffset(lineNumber, spanNode, offset);\r\n }\r\n}\r\nViewLine.CLASS_NAME = 'view-line';\r\n/**\r\n * A rendered line which is guaranteed to contain only regular ASCII and is rendered with a monospace font.\r\n */\r\nclass FastRenderedViewLine {\r\n constructor(domNode, renderLineInput, characterMapping) {\r\n this.domNode = domNode;\r\n this.input = renderLineInput;\r\n this._characterMapping = characterMapping;\r\n this._charWidth = renderLineInput.spaceWidth;\r\n }\r\n getWidth() {\r\n return this._getCharPosition(this._characterMapping.length);\r\n }\r\n getWidthIsFast() {\r\n return true;\r\n }\r\n monospaceAssumptionsAreValid() {\r\n if (!this.domNode) {\r\n return monospaceAssumptionsAreValid;\r\n }\r\n const expectedWidth = this.getWidth();\r\n const actualWidth = this.domNode.domNode.firstChild.offsetWidth;\r\n if (Math.abs(expectedWidth - actualWidth) >= 2) {\r\n // more than 2px off\r\n console.warn(`monospace assumptions have been violated, therefore disabling monospace optimizations!`);\r\n monospaceAssumptionsAreValid = false;\r\n }\r\n return monospaceAssumptionsAreValid;\r\n }\r\n toSlowRenderedLine() {\r\n return createRenderedLine(this.domNode, this.input, this._characterMapping, false, 0 /* None */);\r\n }\r\n getVisibleRangesForRange(startColumn, endColumn, context) {\r\n const startPosition = this._getCharPosition(startColumn);\r\n const endPosition = this._getCharPosition(endColumn);\r\n return [new HorizontalRange(startPosition, endPosition - startPosition)];\r\n }\r\n _getCharPosition(column) {\r\n const charOffset = this._characterMapping.getAbsoluteOffset(column);\r\n return Math.round(this._charWidth * charOffset);\r\n }\r\n getColumnOfNodeOffset(lineNumber, spanNode, offset) {\r\n const spanNodeTextContentLength = spanNode.textContent.length;\r\n let spanIndex = -1;\r\n while (spanNode) {\r\n spanNode = spanNode.previousSibling;\r\n spanIndex++;\r\n }\r\n return this._characterMapping.getColumn(new DomPosition(spanIndex, offset), spanNodeTextContentLength);\r\n }\r\n}\r\n/**\r\n * Every time we render a line, we save what we have rendered in an instance of this class.\r\n */\r\nclass RenderedViewLine {\r\n constructor(domNode, renderLineInput, characterMapping, containsRTL, containsForeignElements) {\r\n this.domNode = domNode;\r\n this.input = renderLineInput;\r\n this._characterMapping = characterMapping;\r\n this._isWhitespaceOnly = /^\\s*$/.test(renderLineInput.lineContent);\r\n this._containsForeignElements = containsForeignElements;\r\n this._cachedWidth = -1;\r\n this._pixelOffsetCache = null;\r\n if (!containsRTL || this._characterMapping.length === 0 /* the line is empty */) {\r\n this._pixelOffsetCache = new Int32Array(Math.max(2, this._characterMapping.length + 1));\r\n for (let column = 0, len = this._characterMapping.length; column <= len; column++) {\r\n this._pixelOffsetCache[column] = -1;\r\n }\r\n }\r\n }\r\n // --- Reading from the DOM methods\r\n _getReadingTarget(myDomNode) {\r\n return myDomNode.domNode.firstChild;\r\n }\r\n /**\r\n * Width of the line in pixels\r\n */\r\n getWidth() {\r\n if (!this.domNode) {\r\n return 0;\r\n }\r\n if (this._cachedWidth === -1) {\r\n this._cachedWidth = this._getReadingTarget(this.domNode).offsetWidth;\r\n }\r\n return this._cachedWidth;\r\n }\r\n getWidthIsFast() {\r\n if (this._cachedWidth === -1) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Visible ranges for a model range\r\n */\r\n getVisibleRangesForRange(startColumn, endColumn, context) {\r\n if (!this.domNode) {\r\n return null;\r\n }\r\n if (this._pixelOffsetCache !== null) {\r\n // the text is LTR\r\n const startOffset = this._readPixelOffset(this.domNode, startColumn, context);\r\n if (startOffset === -1) {\r\n return null;\r\n }\r\n const endOffset = this._readPixelOffset(this.domNode, endColumn, context);\r\n if (endOffset === -1) {\r\n return null;\r\n }\r\n return [new HorizontalRange(startOffset, endOffset - startOffset)];\r\n }\r\n return this._readVisibleRangesForRange(this.domNode, startColumn, endColumn, context);\r\n }\r\n _readVisibleRangesForRange(domNode, startColumn, endColumn, context) {\r\n if (startColumn === endColumn) {\r\n const pixelOffset = this._readPixelOffset(domNode, startColumn, context);\r\n if (pixelOffset === -1) {\r\n return null;\r\n }\r\n else {\r\n return [new HorizontalRange(pixelOffset, 0)];\r\n }\r\n }\r\n else {\r\n return this._readRawVisibleRangesForRange(domNode, startColumn, endColumn, context);\r\n }\r\n }\r\n _readPixelOffset(domNode, column, context) {\r\n if (this._characterMapping.length === 0) {\r\n // This line has no content\r\n if (this._containsForeignElements === 0 /* None */) {\r\n // We can assume the line is really empty\r\n return 0;\r\n }\r\n if (this._containsForeignElements === 2 /* After */) {\r\n // We have foreign elements after the (empty) line\r\n return 0;\r\n }\r\n if (this._containsForeignElements === 1 /* Before */) {\r\n // We have foreign elements before the (empty) line\r\n return this.getWidth();\r\n }\r\n // We have foreign elements before & after the (empty) line\r\n const readingTarget = this._getReadingTarget(domNode);\r\n if (readingTarget.firstChild) {\r\n return readingTarget.firstChild.offsetWidth;\r\n }\r\n else {\r\n return 0;\r\n }\r\n }\r\n if (this._pixelOffsetCache !== null) {\r\n // the text is LTR\r\n const cachedPixelOffset = this._pixelOffsetCache[column];\r\n if (cachedPixelOffset !== -1) {\r\n return cachedPixelOffset;\r\n }\r\n const result = this._actualReadPixelOffset(domNode, column, context);\r\n this._pixelOffsetCache[column] = result;\r\n return result;\r\n }\r\n return this._actualReadPixelOffset(domNode, column, context);\r\n }\r\n _actualReadPixelOffset(domNode, column, context) {\r\n if (this._characterMapping.length === 0) {\r\n // This line has no content\r\n const r = RangeUtil.readHorizontalRanges(this._getReadingTarget(domNode), 0, 0, 0, 0, context.clientRectDeltaLeft, context.endNode);\r\n if (!r || r.length === 0) {\r\n return -1;\r\n }\r\n return r[0].left;\r\n }\r\n if (column === this._characterMapping.length && this._isWhitespaceOnly && this._containsForeignElements === 0 /* None */) {\r\n // This branch helps in the case of whitespace only lines which have a width set\r\n return this.getWidth();\r\n }\r\n const domPosition = this._characterMapping.getDomPosition(column);\r\n const r = RangeUtil.readHorizontalRanges(this._getReadingTarget(domNode), domPosition.partIndex, domPosition.charIndex, domPosition.partIndex, domPosition.charIndex, context.clientRectDeltaLeft, context.endNode);\r\n if (!r || r.length === 0) {\r\n return -1;\r\n }\r\n const result = r[0].left;\r\n if (this.input.isBasicASCII) {\r\n const charOffset = this._characterMapping.getAbsoluteOffset(column);\r\n const expectedResult = Math.round(this.input.spaceWidth * charOffset);\r\n if (Math.abs(expectedResult - result) <= 1) {\r\n return expectedResult;\r\n }\r\n }\r\n return result;\r\n }\r\n _readRawVisibleRangesForRange(domNode, startColumn, endColumn, context) {\r\n if (startColumn === 1 && endColumn === this._characterMapping.length) {\r\n // This branch helps IE with bidi text & gives a performance boost to other browsers when reading visible ranges for an entire line\r\n return [new HorizontalRange(0, this.getWidth())];\r\n }\r\n const startDomPosition = this._characterMapping.getDomPosition(startColumn);\r\n const endDomPosition = this._characterMapping.getDomPosition(endColumn);\r\n return RangeUtil.readHorizontalRanges(this._getReadingTarget(domNode), startDomPosition.partIndex, startDomPosition.charIndex, endDomPosition.partIndex, endDomPosition.charIndex, context.clientRectDeltaLeft, context.endNode);\r\n }\r\n /**\r\n * Returns the column for the text found at a specific offset inside a rendered dom node\r\n */\r\n getColumnOfNodeOffset(lineNumber, spanNode, offset) {\r\n const spanNodeTextContentLength = spanNode.textContent.length;\r\n let spanIndex = -1;\r\n while (spanNode) {\r\n spanNode = spanNode.previousSibling;\r\n spanIndex++;\r\n }\r\n return this._characterMapping.getColumn(new DomPosition(spanIndex, offset), spanNodeTextContentLength);\r\n }\r\n}\r\nclass WebKitRenderedViewLine extends RenderedViewLine {\r\n _readVisibleRangesForRange(domNode, startColumn, endColumn, context) {\r\n const output = super._readVisibleRangesForRange(domNode, startColumn, endColumn, context);\r\n if (!output || output.length === 0 || startColumn === endColumn || (startColumn === 1 && endColumn === this._characterMapping.length)) {\r\n return output;\r\n }\r\n // WebKit is buggy and returns an expanded range (to contain words in some cases)\r\n // The last client rect is enlarged (I think)\r\n if (!this.input.containsRTL) {\r\n // This is an attempt to patch things up\r\n // Find position of last column\r\n const endPixelOffset = this._readPixelOffset(domNode, endColumn, context);\r\n if (endPixelOffset !== -1) {\r\n const lastRange = output[output.length - 1];\r\n if (lastRange.left < endPixelOffset) {\r\n // Trim down the width of the last visible range to not go after the last column's position\r\n lastRange.width = endPixelOffset - lastRange.left;\r\n }\r\n }\r\n }\r\n return output;\r\n }\r\n}\r\nconst createRenderedLine = (function () {\r\n if (browser.isWebKit) {\r\n return createWebKitRenderedLine;\r\n }\r\n return createNormalRenderedLine;\r\n})();\r\nfunction createWebKitRenderedLine(domNode, renderLineInput, characterMapping, containsRTL, containsForeignElements) {\r\n return new WebKitRenderedViewLine(domNode, renderLineInput, characterMapping, containsRTL, containsForeignElements);\r\n}\r\nfunction createNormalRenderedLine(domNode, renderLineInput, characterMapping, containsRTL, containsForeignElements) {\r\n return new RenderedViewLine(domNode, renderLineInput, characterMapping, containsRTL, containsForeignElements);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as buffer from '../../../base/common/buffer.js';\r\nimport { decodeUTF16LE } from '../core/stringBuilder.js';\r\nfunction escapeNewLine(str) {\r\n return (str\r\n .replace(/\\n/g, '\\\\n')\r\n .replace(/\\r/g, '\\\\r'));\r\n}\r\nexport class TextChange {\r\n constructor(oldPosition, oldText, newPosition, newText) {\r\n this.oldPosition = oldPosition;\r\n this.oldText = oldText;\r\n this.newPosition = newPosition;\r\n this.newText = newText;\r\n }\r\n get oldLength() {\r\n return this.oldText.length;\r\n }\r\n get oldEnd() {\r\n return this.oldPosition + this.oldText.length;\r\n }\r\n get newLength() {\r\n return this.newText.length;\r\n }\r\n get newEnd() {\r\n return this.newPosition + this.newText.length;\r\n }\r\n toString() {\r\n if (this.oldText.length === 0) {\r\n return `(insert@${this.oldPosition} \"${escapeNewLine(this.newText)}\")`;\r\n }\r\n if (this.newText.length === 0) {\r\n return `(delete@${this.oldPosition} \"${escapeNewLine(this.oldText)}\")`;\r\n }\r\n return `(replace@${this.oldPosition} \"${escapeNewLine(this.oldText)}\" with \"${escapeNewLine(this.newText)}\")`;\r\n }\r\n static _writeStringSize(str) {\r\n return (4 + 2 * str.length);\r\n }\r\n static _writeString(b, str, offset) {\r\n const len = str.length;\r\n buffer.writeUInt32BE(b, len, offset);\r\n offset += 4;\r\n for (let i = 0; i < len; i++) {\r\n buffer.writeUInt16LE(b, str.charCodeAt(i), offset);\r\n offset += 2;\r\n }\r\n return offset;\r\n }\r\n static _readString(b, offset) {\r\n const len = buffer.readUInt32BE(b, offset);\r\n offset += 4;\r\n return decodeUTF16LE(b, offset, len);\r\n }\r\n writeSize() {\r\n return (+4 // oldPosition\r\n + 4 // newPosition\r\n + TextChange._writeStringSize(this.oldText)\r\n + TextChange._writeStringSize(this.newText));\r\n }\r\n write(b, offset) {\r\n buffer.writeUInt32BE(b, this.oldPosition, offset);\r\n offset += 4;\r\n buffer.writeUInt32BE(b, this.newPosition, offset);\r\n offset += 4;\r\n offset = TextChange._writeString(b, this.oldText, offset);\r\n offset = TextChange._writeString(b, this.newText, offset);\r\n return offset;\r\n }\r\n static read(b, offset, dest) {\r\n const oldPosition = buffer.readUInt32BE(b, offset);\r\n offset += 4;\r\n const newPosition = buffer.readUInt32BE(b, offset);\r\n offset += 4;\r\n const oldText = TextChange._readString(b, offset);\r\n offset += TextChange._writeStringSize(oldText);\r\n const newText = TextChange._readString(b, offset);\r\n offset += TextChange._writeStringSize(newText);\r\n dest.push(new TextChange(oldPosition, oldText, newPosition, newText));\r\n return offset;\r\n }\r\n}\r\nexport function compressConsecutiveTextChanges(prevEdits, currEdits) {\r\n if (prevEdits === null || prevEdits.length === 0) {\r\n return currEdits;\r\n }\r\n const compressor = new TextChangeCompressor(prevEdits, currEdits);\r\n return compressor.compress();\r\n}\r\nclass TextChangeCompressor {\r\n constructor(prevEdits, currEdits) {\r\n this._prevEdits = prevEdits;\r\n this._currEdits = currEdits;\r\n this._result = [];\r\n this._resultLen = 0;\r\n this._prevLen = this._prevEdits.length;\r\n this._prevDeltaOffset = 0;\r\n this._currLen = this._currEdits.length;\r\n this._currDeltaOffset = 0;\r\n }\r\n compress() {\r\n let prevIndex = 0;\r\n let currIndex = 0;\r\n let prevEdit = this._getPrev(prevIndex);\r\n let currEdit = this._getCurr(currIndex);\r\n while (prevIndex < this._prevLen || currIndex < this._currLen) {\r\n if (prevEdit === null) {\r\n this._acceptCurr(currEdit);\r\n currEdit = this._getCurr(++currIndex);\r\n continue;\r\n }\r\n if (currEdit === null) {\r\n this._acceptPrev(prevEdit);\r\n prevEdit = this._getPrev(++prevIndex);\r\n continue;\r\n }\r\n if (currEdit.oldEnd <= prevEdit.newPosition) {\r\n this._acceptCurr(currEdit);\r\n currEdit = this._getCurr(++currIndex);\r\n continue;\r\n }\r\n if (prevEdit.newEnd <= currEdit.oldPosition) {\r\n this._acceptPrev(prevEdit);\r\n prevEdit = this._getPrev(++prevIndex);\r\n continue;\r\n }\r\n if (currEdit.oldPosition < prevEdit.newPosition) {\r\n const [e1, e2] = TextChangeCompressor._splitCurr(currEdit, prevEdit.newPosition - currEdit.oldPosition);\r\n this._acceptCurr(e1);\r\n currEdit = e2;\r\n continue;\r\n }\r\n if (prevEdit.newPosition < currEdit.oldPosition) {\r\n const [e1, e2] = TextChangeCompressor._splitPrev(prevEdit, currEdit.oldPosition - prevEdit.newPosition);\r\n this._acceptPrev(e1);\r\n prevEdit = e2;\r\n continue;\r\n }\r\n // At this point, currEdit.oldPosition === prevEdit.newPosition\r\n let mergePrev;\r\n let mergeCurr;\r\n if (currEdit.oldEnd === prevEdit.newEnd) {\r\n mergePrev = prevEdit;\r\n mergeCurr = currEdit;\r\n prevEdit = this._getPrev(++prevIndex);\r\n currEdit = this._getCurr(++currIndex);\r\n }\r\n else if (currEdit.oldEnd < prevEdit.newEnd) {\r\n const [e1, e2] = TextChangeCompressor._splitPrev(prevEdit, currEdit.oldLength);\r\n mergePrev = e1;\r\n mergeCurr = currEdit;\r\n prevEdit = e2;\r\n currEdit = this._getCurr(++currIndex);\r\n }\r\n else {\r\n const [e1, e2] = TextChangeCompressor._splitCurr(currEdit, prevEdit.newLength);\r\n mergePrev = prevEdit;\r\n mergeCurr = e1;\r\n prevEdit = this._getPrev(++prevIndex);\r\n currEdit = e2;\r\n }\r\n this._result[this._resultLen++] = new TextChange(mergePrev.oldPosition, mergePrev.oldText, mergeCurr.newPosition, mergeCurr.newText);\r\n this._prevDeltaOffset += mergePrev.newLength - mergePrev.oldLength;\r\n this._currDeltaOffset += mergeCurr.newLength - mergeCurr.oldLength;\r\n }\r\n const merged = TextChangeCompressor._merge(this._result);\r\n const cleaned = TextChangeCompressor._removeNoOps(merged);\r\n return cleaned;\r\n }\r\n _acceptCurr(currEdit) {\r\n this._result[this._resultLen++] = TextChangeCompressor._rebaseCurr(this._prevDeltaOffset, currEdit);\r\n this._currDeltaOffset += currEdit.newLength - currEdit.oldLength;\r\n }\r\n _getCurr(currIndex) {\r\n return (currIndex < this._currLen ? this._currEdits[currIndex] : null);\r\n }\r\n _acceptPrev(prevEdit) {\r\n this._result[this._resultLen++] = TextChangeCompressor._rebasePrev(this._currDeltaOffset, prevEdit);\r\n this._prevDeltaOffset += prevEdit.newLength - prevEdit.oldLength;\r\n }\r\n _getPrev(prevIndex) {\r\n return (prevIndex < this._prevLen ? this._prevEdits[prevIndex] : null);\r\n }\r\n static _rebaseCurr(prevDeltaOffset, currEdit) {\r\n return new TextChange(currEdit.oldPosition - prevDeltaOffset, currEdit.oldText, currEdit.newPosition, currEdit.newText);\r\n }\r\n static _rebasePrev(currDeltaOffset, prevEdit) {\r\n return new TextChange(prevEdit.oldPosition, prevEdit.oldText, prevEdit.newPosition + currDeltaOffset, prevEdit.newText);\r\n }\r\n static _splitPrev(edit, offset) {\r\n const preText = edit.newText.substr(0, offset);\r\n const postText = edit.newText.substr(offset);\r\n return [\r\n new TextChange(edit.oldPosition, edit.oldText, edit.newPosition, preText),\r\n new TextChange(edit.oldEnd, '', edit.newPosition + offset, postText)\r\n ];\r\n }\r\n static _splitCurr(edit, offset) {\r\n const preText = edit.oldText.substr(0, offset);\r\n const postText = edit.oldText.substr(offset);\r\n return [\r\n new TextChange(edit.oldPosition, preText, edit.newPosition, edit.newText),\r\n new TextChange(edit.oldPosition + offset, postText, edit.newEnd, '')\r\n ];\r\n }\r\n static _merge(edits) {\r\n if (edits.length === 0) {\r\n return edits;\r\n }\r\n let result = [], resultLen = 0;\r\n let prev = edits[0];\r\n for (let i = 1; i < edits.length; i++) {\r\n const curr = edits[i];\r\n if (prev.oldEnd === curr.oldPosition) {\r\n // Merge into `prev`\r\n prev = new TextChange(prev.oldPosition, prev.oldText + curr.oldText, prev.newPosition, prev.newText + curr.newText);\r\n }\r\n else {\r\n result[resultLen++] = prev;\r\n prev = curr;\r\n }\r\n }\r\n result[resultLen++] = prev;\r\n return result;\r\n }\r\n static _removeNoOps(edits) {\r\n if (edits.length === 0) {\r\n return edits;\r\n }\r\n let result = [], resultLen = 0;\r\n for (let i = 0; i < edits.length; i++) {\r\n const edit = edits[i];\r\n if (edit.oldText === edit.newText) {\r\n continue;\r\n }\r\n result[resultLen++] = edit;\r\n }\r\n return result;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { Selection } from '../core/selection.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { TextChange, compressConsecutiveTextChanges } from './textChange.js';\r\nimport * as buffer from '../../../base/common/buffer.js';\r\nimport { basename } from '../../../base/common/resources.js';\r\nfunction uriGetComparisonKey(resource) {\r\n return resource.toString();\r\n}\r\nexport class SingleModelEditStackData {\r\n constructor(beforeVersionId, afterVersionId, beforeEOL, afterEOL, beforeCursorState, afterCursorState, changes) {\r\n this.beforeVersionId = beforeVersionId;\r\n this.afterVersionId = afterVersionId;\r\n this.beforeEOL = beforeEOL;\r\n this.afterEOL = afterEOL;\r\n this.beforeCursorState = beforeCursorState;\r\n this.afterCursorState = afterCursorState;\r\n this.changes = changes;\r\n }\r\n static create(model, beforeCursorState) {\r\n const alternativeVersionId = model.getAlternativeVersionId();\r\n const eol = getModelEOL(model);\r\n return new SingleModelEditStackData(alternativeVersionId, alternativeVersionId, eol, eol, beforeCursorState, beforeCursorState, []);\r\n }\r\n append(model, textChanges, afterEOL, afterVersionId, afterCursorState) {\r\n if (textChanges.length > 0) {\r\n this.changes = compressConsecutiveTextChanges(this.changes, textChanges);\r\n }\r\n this.afterEOL = afterEOL;\r\n this.afterVersionId = afterVersionId;\r\n this.afterCursorState = afterCursorState;\r\n }\r\n static _writeSelectionsSize(selections) {\r\n return 4 + 4 * 4 * (selections ? selections.length : 0);\r\n }\r\n static _writeSelections(b, selections, offset) {\r\n buffer.writeUInt32BE(b, (selections ? selections.length : 0), offset);\r\n offset += 4;\r\n if (selections) {\r\n for (const selection of selections) {\r\n buffer.writeUInt32BE(b, selection.selectionStartLineNumber, offset);\r\n offset += 4;\r\n buffer.writeUInt32BE(b, selection.selectionStartColumn, offset);\r\n offset += 4;\r\n buffer.writeUInt32BE(b, selection.positionLineNumber, offset);\r\n offset += 4;\r\n buffer.writeUInt32BE(b, selection.positionColumn, offset);\r\n offset += 4;\r\n }\r\n }\r\n return offset;\r\n }\r\n static _readSelections(b, offset, dest) {\r\n const count = buffer.readUInt32BE(b, offset);\r\n offset += 4;\r\n for (let i = 0; i < count; i++) {\r\n const selectionStartLineNumber = buffer.readUInt32BE(b, offset);\r\n offset += 4;\r\n const selectionStartColumn = buffer.readUInt32BE(b, offset);\r\n offset += 4;\r\n const positionLineNumber = buffer.readUInt32BE(b, offset);\r\n offset += 4;\r\n const positionColumn = buffer.readUInt32BE(b, offset);\r\n offset += 4;\r\n dest.push(new Selection(selectionStartLineNumber, selectionStartColumn, positionLineNumber, positionColumn));\r\n }\r\n return offset;\r\n }\r\n serialize() {\r\n let necessarySize = (+4 // beforeVersionId\r\n + 4 // afterVersionId\r\n + 1 // beforeEOL\r\n + 1 // afterEOL\r\n + SingleModelEditStackData._writeSelectionsSize(this.beforeCursorState)\r\n + SingleModelEditStackData._writeSelectionsSize(this.afterCursorState)\r\n + 4 // change count\r\n );\r\n for (const change of this.changes) {\r\n necessarySize += change.writeSize();\r\n }\r\n const b = new Uint8Array(necessarySize);\r\n let offset = 0;\r\n buffer.writeUInt32BE(b, this.beforeVersionId, offset);\r\n offset += 4;\r\n buffer.writeUInt32BE(b, this.afterVersionId, offset);\r\n offset += 4;\r\n buffer.writeUInt8(b, this.beforeEOL, offset);\r\n offset += 1;\r\n buffer.writeUInt8(b, this.afterEOL, offset);\r\n offset += 1;\r\n offset = SingleModelEditStackData._writeSelections(b, this.beforeCursorState, offset);\r\n offset = SingleModelEditStackData._writeSelections(b, this.afterCursorState, offset);\r\n buffer.writeUInt32BE(b, this.changes.length, offset);\r\n offset += 4;\r\n for (const change of this.changes) {\r\n offset = change.write(b, offset);\r\n }\r\n return b.buffer;\r\n }\r\n static deserialize(source) {\r\n const b = new Uint8Array(source);\r\n let offset = 0;\r\n const beforeVersionId = buffer.readUInt32BE(b, offset);\r\n offset += 4;\r\n const afterVersionId = buffer.readUInt32BE(b, offset);\r\n offset += 4;\r\n const beforeEOL = buffer.readUInt8(b, offset);\r\n offset += 1;\r\n const afterEOL = buffer.readUInt8(b, offset);\r\n offset += 1;\r\n const beforeCursorState = [];\r\n offset = SingleModelEditStackData._readSelections(b, offset, beforeCursorState);\r\n const afterCursorState = [];\r\n offset = SingleModelEditStackData._readSelections(b, offset, afterCursorState);\r\n const changeCount = buffer.readUInt32BE(b, offset);\r\n offset += 4;\r\n const changes = [];\r\n for (let i = 0; i < changeCount; i++) {\r\n offset = TextChange.read(b, offset, changes);\r\n }\r\n return new SingleModelEditStackData(beforeVersionId, afterVersionId, beforeEOL, afterEOL, beforeCursorState, afterCursorState, changes);\r\n }\r\n}\r\nexport class SingleModelEditStackElement {\r\n constructor(model, beforeCursorState) {\r\n this.model = model;\r\n this._data = SingleModelEditStackData.create(model, beforeCursorState);\r\n }\r\n get type() {\r\n return 0 /* Resource */;\r\n }\r\n get resource() {\r\n if (URI.isUri(this.model)) {\r\n return this.model;\r\n }\r\n return this.model.uri;\r\n }\r\n get label() {\r\n return nls.localize('edit', \"Typing\");\r\n }\r\n toString() {\r\n const data = (this._data instanceof SingleModelEditStackData ? this._data : SingleModelEditStackData.deserialize(this._data));\r\n return data.changes.map(change => change.toString()).join(', ');\r\n }\r\n matchesResource(resource) {\r\n const uri = (URI.isUri(this.model) ? this.model : this.model.uri);\r\n return (uri.toString() === resource.toString());\r\n }\r\n setModel(model) {\r\n this.model = model;\r\n }\r\n canAppend(model) {\r\n return (this.model === model && this._data instanceof SingleModelEditStackData);\r\n }\r\n append(model, textChanges, afterEOL, afterVersionId, afterCursorState) {\r\n if (this._data instanceof SingleModelEditStackData) {\r\n this._data.append(model, textChanges, afterEOL, afterVersionId, afterCursorState);\r\n }\r\n }\r\n close() {\r\n if (this._data instanceof SingleModelEditStackData) {\r\n this._data = this._data.serialize();\r\n }\r\n }\r\n open() {\r\n if (!(this._data instanceof SingleModelEditStackData)) {\r\n this._data = SingleModelEditStackData.deserialize(this._data);\r\n }\r\n }\r\n undo() {\r\n if (URI.isUri(this.model)) {\r\n // don't have a model\r\n throw new Error(`Invalid SingleModelEditStackElement`);\r\n }\r\n if (this._data instanceof SingleModelEditStackData) {\r\n this._data = this._data.serialize();\r\n }\r\n const data = SingleModelEditStackData.deserialize(this._data);\r\n this.model._applyUndo(data.changes, data.beforeEOL, data.beforeVersionId, data.beforeCursorState);\r\n }\r\n redo() {\r\n if (URI.isUri(this.model)) {\r\n // don't have a model\r\n throw new Error(`Invalid SingleModelEditStackElement`);\r\n }\r\n if (this._data instanceof SingleModelEditStackData) {\r\n this._data = this._data.serialize();\r\n }\r\n const data = SingleModelEditStackData.deserialize(this._data);\r\n this.model._applyRedo(data.changes, data.afterEOL, data.afterVersionId, data.afterCursorState);\r\n }\r\n heapSize() {\r\n if (this._data instanceof SingleModelEditStackData) {\r\n this._data = this._data.serialize();\r\n }\r\n return this._data.byteLength + 168 /*heap overhead*/;\r\n }\r\n}\r\nexport class MultiModelEditStackElement {\r\n constructor(label, editStackElements) {\r\n this.type = 1 /* Workspace */;\r\n this.label = label;\r\n this._isOpen = true;\r\n this._editStackElementsArr = editStackElements.slice(0);\r\n this._editStackElementsMap = new Map();\r\n for (const editStackElement of this._editStackElementsArr) {\r\n const key = uriGetComparisonKey(editStackElement.resource);\r\n this._editStackElementsMap.set(key, editStackElement);\r\n }\r\n this._delegate = null;\r\n }\r\n get resources() {\r\n return this._editStackElementsArr.map(editStackElement => editStackElement.resource);\r\n }\r\n prepareUndoRedo() {\r\n if (this._delegate) {\r\n return this._delegate.prepareUndoRedo(this);\r\n }\r\n }\r\n matchesResource(resource) {\r\n const key = uriGetComparisonKey(resource);\r\n return (this._editStackElementsMap.has(key));\r\n }\r\n setModel(model) {\r\n const key = uriGetComparisonKey(URI.isUri(model) ? model : model.uri);\r\n if (this._editStackElementsMap.has(key)) {\r\n this._editStackElementsMap.get(key).setModel(model);\r\n }\r\n }\r\n canAppend(model) {\r\n if (!this._isOpen) {\r\n return false;\r\n }\r\n const key = uriGetComparisonKey(model.uri);\r\n if (this._editStackElementsMap.has(key)) {\r\n const editStackElement = this._editStackElementsMap.get(key);\r\n return editStackElement.canAppend(model);\r\n }\r\n return false;\r\n }\r\n append(model, textChanges, afterEOL, afterVersionId, afterCursorState) {\r\n const key = uriGetComparisonKey(model.uri);\r\n const editStackElement = this._editStackElementsMap.get(key);\r\n editStackElement.append(model, textChanges, afterEOL, afterVersionId, afterCursorState);\r\n }\r\n close() {\r\n this._isOpen = false;\r\n }\r\n open() {\r\n // cannot reopen\r\n }\r\n undo() {\r\n this._isOpen = false;\r\n for (const editStackElement of this._editStackElementsArr) {\r\n editStackElement.undo();\r\n }\r\n }\r\n redo() {\r\n for (const editStackElement of this._editStackElementsArr) {\r\n editStackElement.redo();\r\n }\r\n }\r\n heapSize(resource) {\r\n const key = uriGetComparisonKey(resource);\r\n if (this._editStackElementsMap.has(key)) {\r\n const editStackElement = this._editStackElementsMap.get(key);\r\n return editStackElement.heapSize();\r\n }\r\n return 0;\r\n }\r\n split() {\r\n return this._editStackElementsArr;\r\n }\r\n toString() {\r\n let result = [];\r\n for (const editStackElement of this._editStackElementsArr) {\r\n result.push(`${basename(editStackElement.resource)}: ${editStackElement}`);\r\n }\r\n return `{${result.join(', ')}}`;\r\n }\r\n}\r\nfunction getModelEOL(model) {\r\n const eol = model.getEOL();\r\n if (eol === '\\n') {\r\n return 0 /* LF */;\r\n }\r\n else {\r\n return 1 /* CRLF */;\r\n }\r\n}\r\nexport function isEditStackElement(element) {\r\n if (!element) {\r\n return false;\r\n }\r\n return ((element instanceof SingleModelEditStackElement) || (element instanceof MultiModelEditStackElement));\r\n}\r\nexport class EditStack {\r\n constructor(model, undoRedoService) {\r\n this._model = model;\r\n this._undoRedoService = undoRedoService;\r\n }\r\n pushStackElement() {\r\n const lastElement = this._undoRedoService.getLastElement(this._model.uri);\r\n if (isEditStackElement(lastElement)) {\r\n lastElement.close();\r\n }\r\n }\r\n popStackElement() {\r\n const lastElement = this._undoRedoService.getLastElement(this._model.uri);\r\n if (isEditStackElement(lastElement)) {\r\n lastElement.open();\r\n }\r\n }\r\n clear() {\r\n this._undoRedoService.removeElements(this._model.uri);\r\n }\r\n _getOrCreateEditStackElement(beforeCursorState) {\r\n const lastElement = this._undoRedoService.getLastElement(this._model.uri);\r\n if (isEditStackElement(lastElement) && lastElement.canAppend(this._model)) {\r\n return lastElement;\r\n }\r\n const newElement = new SingleModelEditStackElement(this._model, beforeCursorState);\r\n this._undoRedoService.pushElement(newElement);\r\n return newElement;\r\n }\r\n pushEOL(eol) {\r\n const editStackElement = this._getOrCreateEditStackElement(null);\r\n this._model.setEOL(eol);\r\n editStackElement.append(this._model, [], getModelEOL(this._model), this._model.getAlternativeVersionId(), null);\r\n }\r\n pushEditOperation(beforeCursorState, editOperations, cursorStateComputer) {\r\n const editStackElement = this._getOrCreateEditStackElement(beforeCursorState);\r\n const inverseEditOperations = this._model.applyEdits(editOperations, true);\r\n const afterCursorState = EditStack._computeCursorState(cursorStateComputer, inverseEditOperations);\r\n const textChanges = inverseEditOperations.map((op, index) => ({ index: index, textChange: op.textChange }));\r\n textChanges.sort((a, b) => {\r\n if (a.textChange.oldPosition === b.textChange.oldPosition) {\r\n return a.index - b.index;\r\n }\r\n return a.textChange.oldPosition - b.textChange.oldPosition;\r\n });\r\n editStackElement.append(this._model, textChanges.map(op => op.textChange), getModelEOL(this._model), this._model.getAlternativeVersionId(), afterCursorState);\r\n return afterCursorState;\r\n }\r\n static _computeCursorState(cursorStateComputer, inverseEditOperations) {\r\n try {\r\n return cursorStateComputer ? cursorStateComputer(inverseEditOperations) : null;\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n return null;\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nclass SpacesDiffResult {\r\n constructor() {\r\n this.spacesDiff = 0;\r\n this.looksLikeAlignment = false;\r\n }\r\n}\r\n/**\r\n * Compute the diff in spaces between two line's indentation.\r\n */\r\nfunction spacesDiff(a, aLength, b, bLength, result) {\r\n result.spacesDiff = 0;\r\n result.looksLikeAlignment = false;\r\n // This can go both ways (e.g.):\r\n // - a: \"\\t\"\r\n // - b: \"\\t \"\r\n // => This should count 1 tab and 4 spaces\r\n let i;\r\n for (i = 0; i < aLength && i < bLength; i++) {\r\n let aCharCode = a.charCodeAt(i);\r\n let bCharCode = b.charCodeAt(i);\r\n if (aCharCode !== bCharCode) {\r\n break;\r\n }\r\n }\r\n let aSpacesCnt = 0, aTabsCount = 0;\r\n for (let j = i; j < aLength; j++) {\r\n let aCharCode = a.charCodeAt(j);\r\n if (aCharCode === 32 /* Space */) {\r\n aSpacesCnt++;\r\n }\r\n else {\r\n aTabsCount++;\r\n }\r\n }\r\n let bSpacesCnt = 0, bTabsCount = 0;\r\n for (let j = i; j < bLength; j++) {\r\n let bCharCode = b.charCodeAt(j);\r\n if (bCharCode === 32 /* Space */) {\r\n bSpacesCnt++;\r\n }\r\n else {\r\n bTabsCount++;\r\n }\r\n }\r\n if (aSpacesCnt > 0 && aTabsCount > 0) {\r\n return;\r\n }\r\n if (bSpacesCnt > 0 && bTabsCount > 0) {\r\n return;\r\n }\r\n let tabsDiff = Math.abs(aTabsCount - bTabsCount);\r\n let spacesDiff = Math.abs(aSpacesCnt - bSpacesCnt);\r\n if (tabsDiff === 0) {\r\n // check if the indentation difference might be caused by alignment reasons\r\n // sometime folks like to align their code, but this should not be used as a hint\r\n result.spacesDiff = spacesDiff;\r\n if (spacesDiff > 0 && 0 <= bSpacesCnt - 1 && bSpacesCnt - 1 < a.length && bSpacesCnt < b.length) {\r\n if (b.charCodeAt(bSpacesCnt) !== 32 /* Space */ && a.charCodeAt(bSpacesCnt - 1) === 32 /* Space */) {\r\n if (a.charCodeAt(a.length - 1) === 44 /* Comma */) {\r\n // This looks like an alignment desire: e.g.\r\n // const a = b + c,\r\n // d = b - c;\r\n result.looksLikeAlignment = true;\r\n }\r\n }\r\n }\r\n return;\r\n }\r\n if (spacesDiff % tabsDiff === 0) {\r\n result.spacesDiff = spacesDiff / tabsDiff;\r\n return;\r\n }\r\n}\r\nexport function guessIndentation(source, defaultTabSize, defaultInsertSpaces) {\r\n // Look at most at the first 10k lines\r\n const linesCount = Math.min(source.getLineCount(), 10000);\r\n let linesIndentedWithTabsCount = 0; // number of lines that contain at least one tab in indentation\r\n let linesIndentedWithSpacesCount = 0; // number of lines that contain only spaces in indentation\r\n let previousLineText = ''; // content of latest line that contained non-whitespace chars\r\n let previousLineIndentation = 0; // index at which latest line contained the first non-whitespace char\r\n const ALLOWED_TAB_SIZE_GUESSES = [2, 4, 6, 8, 3, 5, 7]; // prefer even guesses for `tabSize`, limit to [2, 8].\r\n const MAX_ALLOWED_TAB_SIZE_GUESS = 8; // max(ALLOWED_TAB_SIZE_GUESSES) = 8\r\n let spacesDiffCount = [0, 0, 0, 0, 0, 0, 0, 0, 0]; // `tabSize` scores\r\n let tmp = new SpacesDiffResult();\r\n for (let lineNumber = 1; lineNumber <= linesCount; lineNumber++) {\r\n let currentLineLength = source.getLineLength(lineNumber);\r\n let currentLineText = source.getLineContent(lineNumber);\r\n // if the text buffer is chunk based, so long lines are cons-string, v8 will flattern the string when we check charCode.\r\n // checking charCode on chunks directly is cheaper.\r\n const useCurrentLineText = (currentLineLength <= 65536);\r\n let currentLineHasContent = false; // does `currentLineText` contain non-whitespace chars\r\n let currentLineIndentation = 0; // index at which `currentLineText` contains the first non-whitespace char\r\n let currentLineSpacesCount = 0; // count of spaces found in `currentLineText` indentation\r\n let currentLineTabsCount = 0; // count of tabs found in `currentLineText` indentation\r\n for (let j = 0, lenJ = currentLineLength; j < lenJ; j++) {\r\n let charCode = (useCurrentLineText ? currentLineText.charCodeAt(j) : source.getLineCharCode(lineNumber, j));\r\n if (charCode === 9 /* Tab */) {\r\n currentLineTabsCount++;\r\n }\r\n else if (charCode === 32 /* Space */) {\r\n currentLineSpacesCount++;\r\n }\r\n else {\r\n // Hit non whitespace character on this line\r\n currentLineHasContent = true;\r\n currentLineIndentation = j;\r\n break;\r\n }\r\n }\r\n // Ignore empty or only whitespace lines\r\n if (!currentLineHasContent) {\r\n continue;\r\n }\r\n if (currentLineTabsCount > 0) {\r\n linesIndentedWithTabsCount++;\r\n }\r\n else if (currentLineSpacesCount > 1) {\r\n linesIndentedWithSpacesCount++;\r\n }\r\n spacesDiff(previousLineText, previousLineIndentation, currentLineText, currentLineIndentation, tmp);\r\n if (tmp.looksLikeAlignment) {\r\n // if defaultInsertSpaces === true && the spaces count == tabSize, we may want to count it as valid indentation\r\n //\r\n // - item1\r\n // - item2\r\n //\r\n // otherwise skip this line entirely\r\n //\r\n // const a = 1,\r\n // b = 2;\r\n if (!(defaultInsertSpaces && defaultTabSize === tmp.spacesDiff)) {\r\n continue;\r\n }\r\n }\r\n let currentSpacesDiff = tmp.spacesDiff;\r\n if (currentSpacesDiff <= MAX_ALLOWED_TAB_SIZE_GUESS) {\r\n spacesDiffCount[currentSpacesDiff]++;\r\n }\r\n previousLineText = currentLineText;\r\n previousLineIndentation = currentLineIndentation;\r\n }\r\n let insertSpaces = defaultInsertSpaces;\r\n if (linesIndentedWithTabsCount !== linesIndentedWithSpacesCount) {\r\n insertSpaces = (linesIndentedWithTabsCount < linesIndentedWithSpacesCount);\r\n }\r\n let tabSize = defaultTabSize;\r\n // Guess tabSize only if inserting spaces...\r\n if (insertSpaces) {\r\n let tabSizeScore = (insertSpaces ? 0 : 0.1 * linesCount);\r\n // console.log(\"score threshold: \" + tabSizeScore);\r\n ALLOWED_TAB_SIZE_GUESSES.forEach((possibleTabSize) => {\r\n let possibleTabSizeScore = spacesDiffCount[possibleTabSize];\r\n if (possibleTabSizeScore > tabSizeScore) {\r\n tabSizeScore = possibleTabSizeScore;\r\n tabSize = possibleTabSize;\r\n }\r\n });\r\n // Let a tabSize of 2 win even if it is not the maximum\r\n // (only in case 4 was guessed)\r\n if (tabSize === 4 && spacesDiffCount[4] > 0 && spacesDiffCount[2] > 0 && spacesDiffCount[2] >= spacesDiffCount[4] / 2) {\r\n tabSize = 2;\r\n }\r\n }\r\n // console.log('--------------------------');\r\n // console.log('linesIndentedWithTabsCount: ' + linesIndentedWithTabsCount + ', linesIndentedWithSpacesCount: ' + linesIndentedWithSpacesCount);\r\n // console.log('spacesDiffCount: ' + spacesDiffCount);\r\n // console.log('tabSize: ' + tabSize + ', tabSizeScore: ' + tabSizeScore);\r\n return {\r\n insertSpaces: insertSpaces,\r\n tabSize: tabSize\r\n };\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport function getNodeColor(node) {\r\n return ((node.metadata & 1 /* ColorMask */) >>> 0 /* ColorOffset */);\r\n}\r\nfunction setNodeColor(node, color) {\r\n node.metadata = ((node.metadata & 254 /* ColorMaskInverse */) | (color << 0 /* ColorOffset */));\r\n}\r\nfunction getNodeIsVisited(node) {\r\n return ((node.metadata & 2 /* IsVisitedMask */) >>> 1 /* IsVisitedOffset */) === 1;\r\n}\r\nfunction setNodeIsVisited(node, value) {\r\n node.metadata = ((node.metadata & 253 /* IsVisitedMaskInverse */) | ((value ? 1 : 0) << 1 /* IsVisitedOffset */));\r\n}\r\nfunction getNodeIsForValidation(node) {\r\n return ((node.metadata & 4 /* IsForValidationMask */) >>> 2 /* IsForValidationOffset */) === 1;\r\n}\r\nfunction setNodeIsForValidation(node, value) {\r\n node.metadata = ((node.metadata & 251 /* IsForValidationMaskInverse */) | ((value ? 1 : 0) << 2 /* IsForValidationOffset */));\r\n}\r\nfunction getNodeStickiness(node) {\r\n return ((node.metadata & 24 /* StickinessMask */) >>> 3 /* StickinessOffset */);\r\n}\r\nfunction _setNodeStickiness(node, stickiness) {\r\n node.metadata = ((node.metadata & 231 /* StickinessMaskInverse */) | (stickiness << 3 /* StickinessOffset */));\r\n}\r\nfunction getCollapseOnReplaceEdit(node) {\r\n return ((node.metadata & 32 /* CollapseOnReplaceEditMask */) >>> 5 /* CollapseOnReplaceEditOffset */) === 1;\r\n}\r\nfunction setCollapseOnReplaceEdit(node, value) {\r\n node.metadata = ((node.metadata & 223 /* CollapseOnReplaceEditMaskInverse */) | ((value ? 1 : 0) << 5 /* CollapseOnReplaceEditOffset */));\r\n}\r\nexport class IntervalNode {\r\n constructor(id, start, end) {\r\n this.metadata = 0;\r\n this.parent = this;\r\n this.left = this;\r\n this.right = this;\r\n setNodeColor(this, 1 /* Red */);\r\n this.start = start;\r\n this.end = end;\r\n // FORCE_OVERFLOWING_TEST: this.delta = start;\r\n this.delta = 0;\r\n this.maxEnd = end;\r\n this.id = id;\r\n this.ownerId = 0;\r\n this.options = null;\r\n setNodeIsForValidation(this, false);\r\n _setNodeStickiness(this, 1 /* NeverGrowsWhenTypingAtEdges */);\r\n setCollapseOnReplaceEdit(this, false);\r\n this.cachedVersionId = 0;\r\n this.cachedAbsoluteStart = start;\r\n this.cachedAbsoluteEnd = end;\r\n this.range = null;\r\n setNodeIsVisited(this, false);\r\n }\r\n reset(versionId, start, end, range) {\r\n this.start = start;\r\n this.end = end;\r\n this.maxEnd = end;\r\n this.cachedVersionId = versionId;\r\n this.cachedAbsoluteStart = start;\r\n this.cachedAbsoluteEnd = end;\r\n this.range = range;\r\n }\r\n setOptions(options) {\r\n this.options = options;\r\n let className = this.options.className;\r\n setNodeIsForValidation(this, (className === \"squiggly-error\" /* EditorErrorDecoration */\r\n || className === \"squiggly-warning\" /* EditorWarningDecoration */\r\n || className === \"squiggly-info\" /* EditorInfoDecoration */));\r\n _setNodeStickiness(this, this.options.stickiness);\r\n setCollapseOnReplaceEdit(this, this.options.collapseOnReplaceEdit);\r\n }\r\n setCachedOffsets(absoluteStart, absoluteEnd, cachedVersionId) {\r\n if (this.cachedVersionId !== cachedVersionId) {\r\n this.range = null;\r\n }\r\n this.cachedVersionId = cachedVersionId;\r\n this.cachedAbsoluteStart = absoluteStart;\r\n this.cachedAbsoluteEnd = absoluteEnd;\r\n }\r\n detach() {\r\n this.parent = null;\r\n this.left = null;\r\n this.right = null;\r\n }\r\n}\r\nexport const SENTINEL = new IntervalNode(null, 0, 0);\r\nSENTINEL.parent = SENTINEL;\r\nSENTINEL.left = SENTINEL;\r\nSENTINEL.right = SENTINEL;\r\nsetNodeColor(SENTINEL, 0 /* Black */);\r\nexport class IntervalTree {\r\n constructor() {\r\n this.root = SENTINEL;\r\n this.requestNormalizeDelta = false;\r\n }\r\n intervalSearch(start, end, filterOwnerId, filterOutValidation, cachedVersionId) {\r\n if (this.root === SENTINEL) {\r\n return [];\r\n }\r\n return intervalSearch(this, start, end, filterOwnerId, filterOutValidation, cachedVersionId);\r\n }\r\n search(filterOwnerId, filterOutValidation, cachedVersionId) {\r\n if (this.root === SENTINEL) {\r\n return [];\r\n }\r\n return search(this, filterOwnerId, filterOutValidation, cachedVersionId);\r\n }\r\n /**\r\n * Will not set `cachedAbsoluteStart` nor `cachedAbsoluteEnd` on the returned nodes!\r\n */\r\n collectNodesFromOwner(ownerId) {\r\n return collectNodesFromOwner(this, ownerId);\r\n }\r\n /**\r\n * Will not set `cachedAbsoluteStart` nor `cachedAbsoluteEnd` on the returned nodes!\r\n */\r\n collectNodesPostOrder() {\r\n return collectNodesPostOrder(this);\r\n }\r\n insert(node) {\r\n rbTreeInsert(this, node);\r\n this._normalizeDeltaIfNecessary();\r\n }\r\n delete(node) {\r\n rbTreeDelete(this, node);\r\n this._normalizeDeltaIfNecessary();\r\n }\r\n resolveNode(node, cachedVersionId) {\r\n const initialNode = node;\r\n let delta = 0;\r\n while (node !== this.root) {\r\n if (node === node.parent.right) {\r\n delta += node.parent.delta;\r\n }\r\n node = node.parent;\r\n }\r\n const nodeStart = initialNode.start + delta;\r\n const nodeEnd = initialNode.end + delta;\r\n initialNode.setCachedOffsets(nodeStart, nodeEnd, cachedVersionId);\r\n }\r\n acceptReplace(offset, length, textLength, forceMoveMarkers) {\r\n // Our strategy is to remove all directly impacted nodes, and then add them back to the tree.\r\n // (1) collect all nodes that are intersecting this edit as nodes of interest\r\n const nodesOfInterest = searchForEditing(this, offset, offset + length);\r\n // (2) remove all nodes that are intersecting this edit\r\n for (let i = 0, len = nodesOfInterest.length; i < len; i++) {\r\n const node = nodesOfInterest[i];\r\n rbTreeDelete(this, node);\r\n }\r\n this._normalizeDeltaIfNecessary();\r\n // (3) edit all tree nodes except the nodes of interest\r\n noOverlapReplace(this, offset, offset + length, textLength);\r\n this._normalizeDeltaIfNecessary();\r\n // (4) edit the nodes of interest and insert them back in the tree\r\n for (let i = 0, len = nodesOfInterest.length; i < len; i++) {\r\n const node = nodesOfInterest[i];\r\n node.start = node.cachedAbsoluteStart;\r\n node.end = node.cachedAbsoluteEnd;\r\n nodeAcceptEdit(node, offset, (offset + length), textLength, forceMoveMarkers);\r\n node.maxEnd = node.end;\r\n rbTreeInsert(this, node);\r\n }\r\n this._normalizeDeltaIfNecessary();\r\n }\r\n _normalizeDeltaIfNecessary() {\r\n if (!this.requestNormalizeDelta) {\r\n return;\r\n }\r\n this.requestNormalizeDelta = false;\r\n normalizeDelta(this);\r\n }\r\n}\r\n//#region Delta Normalization\r\nfunction normalizeDelta(T) {\r\n let node = T.root;\r\n let delta = 0;\r\n while (node !== SENTINEL) {\r\n if (node.left !== SENTINEL && !getNodeIsVisited(node.left)) {\r\n // go left\r\n node = node.left;\r\n continue;\r\n }\r\n if (node.right !== SENTINEL && !getNodeIsVisited(node.right)) {\r\n // go right\r\n delta += node.delta;\r\n node = node.right;\r\n continue;\r\n }\r\n // handle current node\r\n node.start = delta + node.start;\r\n node.end = delta + node.end;\r\n node.delta = 0;\r\n recomputeMaxEnd(node);\r\n setNodeIsVisited(node, true);\r\n // going up from this node\r\n setNodeIsVisited(node.left, false);\r\n setNodeIsVisited(node.right, false);\r\n if (node === node.parent.right) {\r\n delta -= node.parent.delta;\r\n }\r\n node = node.parent;\r\n }\r\n setNodeIsVisited(T.root, false);\r\n}\r\nfunction adjustMarkerBeforeColumn(markerOffset, markerStickToPreviousCharacter, checkOffset, moveSemantics) {\r\n if (markerOffset < checkOffset) {\r\n return true;\r\n }\r\n if (markerOffset > checkOffset) {\r\n return false;\r\n }\r\n if (moveSemantics === 1 /* ForceMove */) {\r\n return false;\r\n }\r\n if (moveSemantics === 2 /* ForceStay */) {\r\n return true;\r\n }\r\n return markerStickToPreviousCharacter;\r\n}\r\n/**\r\n * This is a lot more complicated than strictly necessary to maintain the same behaviour\r\n * as when decorations were implemented using two markers.\r\n */\r\nexport function nodeAcceptEdit(node, start, end, textLength, forceMoveMarkers) {\r\n const nodeStickiness = getNodeStickiness(node);\r\n const startStickToPreviousCharacter = (nodeStickiness === 0 /* AlwaysGrowsWhenTypingAtEdges */\r\n || nodeStickiness === 2 /* GrowsOnlyWhenTypingBefore */);\r\n const endStickToPreviousCharacter = (nodeStickiness === 1 /* NeverGrowsWhenTypingAtEdges */\r\n || nodeStickiness === 2 /* GrowsOnlyWhenTypingBefore */);\r\n const deletingCnt = (end - start);\r\n const insertingCnt = textLength;\r\n const commonLength = Math.min(deletingCnt, insertingCnt);\r\n const nodeStart = node.start;\r\n let startDone = false;\r\n const nodeEnd = node.end;\r\n let endDone = false;\r\n if (start <= nodeStart && nodeEnd <= end && getCollapseOnReplaceEdit(node)) {\r\n // This edit encompasses the entire decoration range\r\n // and the decoration has asked to become collapsed\r\n node.start = start;\r\n startDone = true;\r\n node.end = start;\r\n endDone = true;\r\n }\r\n {\r\n const moveSemantics = forceMoveMarkers ? 1 /* ForceMove */ : (deletingCnt > 0 ? 2 /* ForceStay */ : 0 /* MarkerDefined */);\r\n if (!startDone && adjustMarkerBeforeColumn(nodeStart, startStickToPreviousCharacter, start, moveSemantics)) {\r\n startDone = true;\r\n }\r\n if (!endDone && adjustMarkerBeforeColumn(nodeEnd, endStickToPreviousCharacter, start, moveSemantics)) {\r\n endDone = true;\r\n }\r\n }\r\n if (commonLength > 0 && !forceMoveMarkers) {\r\n const moveSemantics = (deletingCnt > insertingCnt ? 2 /* ForceStay */ : 0 /* MarkerDefined */);\r\n if (!startDone && adjustMarkerBeforeColumn(nodeStart, startStickToPreviousCharacter, start + commonLength, moveSemantics)) {\r\n startDone = true;\r\n }\r\n if (!endDone && adjustMarkerBeforeColumn(nodeEnd, endStickToPreviousCharacter, start + commonLength, moveSemantics)) {\r\n endDone = true;\r\n }\r\n }\r\n {\r\n const moveSemantics = forceMoveMarkers ? 1 /* ForceMove */ : 0 /* MarkerDefined */;\r\n if (!startDone && adjustMarkerBeforeColumn(nodeStart, startStickToPreviousCharacter, end, moveSemantics)) {\r\n node.start = start + insertingCnt;\r\n startDone = true;\r\n }\r\n if (!endDone && adjustMarkerBeforeColumn(nodeEnd, endStickToPreviousCharacter, end, moveSemantics)) {\r\n node.end = start + insertingCnt;\r\n endDone = true;\r\n }\r\n }\r\n // Finish\r\n const deltaColumn = (insertingCnt - deletingCnt);\r\n if (!startDone) {\r\n node.start = Math.max(0, nodeStart + deltaColumn);\r\n }\r\n if (!endDone) {\r\n node.end = Math.max(0, nodeEnd + deltaColumn);\r\n }\r\n if (node.start > node.end) {\r\n node.end = node.start;\r\n }\r\n}\r\nfunction searchForEditing(T, start, end) {\r\n // https://en.wikipedia.org/wiki/Interval_tree#Augmented_tree\r\n // Now, it is known that two intervals A and B overlap only when both\r\n // A.low <= B.high and A.high >= B.low. When searching the trees for\r\n // nodes overlapping with a given interval, you can immediately skip:\r\n // a) all nodes to the right of nodes whose low value is past the end of the given interval.\r\n // b) all nodes that have their maximum 'high' value below the start of the given interval.\r\n let node = T.root;\r\n let delta = 0;\r\n let nodeMaxEnd = 0;\r\n let nodeStart = 0;\r\n let nodeEnd = 0;\r\n let result = [];\r\n let resultLen = 0;\r\n while (node !== SENTINEL) {\r\n if (getNodeIsVisited(node)) {\r\n // going up from this node\r\n setNodeIsVisited(node.left, false);\r\n setNodeIsVisited(node.right, false);\r\n if (node === node.parent.right) {\r\n delta -= node.parent.delta;\r\n }\r\n node = node.parent;\r\n continue;\r\n }\r\n if (!getNodeIsVisited(node.left)) {\r\n // first time seeing this node\r\n nodeMaxEnd = delta + node.maxEnd;\r\n if (nodeMaxEnd < start) {\r\n // cover case b) from above\r\n // there is no need to search this node or its children\r\n setNodeIsVisited(node, true);\r\n continue;\r\n }\r\n if (node.left !== SENTINEL) {\r\n // go left\r\n node = node.left;\r\n continue;\r\n }\r\n }\r\n // handle current node\r\n nodeStart = delta + node.start;\r\n if (nodeStart > end) {\r\n // cover case a) from above\r\n // there is no need to search this node or its right subtree\r\n setNodeIsVisited(node, true);\r\n continue;\r\n }\r\n nodeEnd = delta + node.end;\r\n if (nodeEnd >= start) {\r\n node.setCachedOffsets(nodeStart, nodeEnd, 0);\r\n result[resultLen++] = node;\r\n }\r\n setNodeIsVisited(node, true);\r\n if (node.right !== SENTINEL && !getNodeIsVisited(node.right)) {\r\n // go right\r\n delta += node.delta;\r\n node = node.right;\r\n continue;\r\n }\r\n }\r\n setNodeIsVisited(T.root, false);\r\n return result;\r\n}\r\nfunction noOverlapReplace(T, start, end, textLength) {\r\n // https://en.wikipedia.org/wiki/Interval_tree#Augmented_tree\r\n // Now, it is known that two intervals A and B overlap only when both\r\n // A.low <= B.high and A.high >= B.low. When searching the trees for\r\n // nodes overlapping with a given interval, you can immediately skip:\r\n // a) all nodes to the right of nodes whose low value is past the end of the given interval.\r\n // b) all nodes that have their maximum 'high' value below the start of the given interval.\r\n let node = T.root;\r\n let delta = 0;\r\n let nodeMaxEnd = 0;\r\n let nodeStart = 0;\r\n const editDelta = (textLength - (end - start));\r\n while (node !== SENTINEL) {\r\n if (getNodeIsVisited(node)) {\r\n // going up from this node\r\n setNodeIsVisited(node.left, false);\r\n setNodeIsVisited(node.right, false);\r\n if (node === node.parent.right) {\r\n delta -= node.parent.delta;\r\n }\r\n recomputeMaxEnd(node);\r\n node = node.parent;\r\n continue;\r\n }\r\n if (!getNodeIsVisited(node.left)) {\r\n // first time seeing this node\r\n nodeMaxEnd = delta + node.maxEnd;\r\n if (nodeMaxEnd < start) {\r\n // cover case b) from above\r\n // there is no need to search this node or its children\r\n setNodeIsVisited(node, true);\r\n continue;\r\n }\r\n if (node.left !== SENTINEL) {\r\n // go left\r\n node = node.left;\r\n continue;\r\n }\r\n }\r\n // handle current node\r\n nodeStart = delta + node.start;\r\n if (nodeStart > end) {\r\n node.start += editDelta;\r\n node.end += editDelta;\r\n node.delta += editDelta;\r\n if (node.delta < -1073741824 /* MIN_SAFE_DELTA */ || node.delta > 1073741824 /* MAX_SAFE_DELTA */) {\r\n T.requestNormalizeDelta = true;\r\n }\r\n // cover case a) from above\r\n // there is no need to search this node or its right subtree\r\n setNodeIsVisited(node, true);\r\n continue;\r\n }\r\n setNodeIsVisited(node, true);\r\n if (node.right !== SENTINEL && !getNodeIsVisited(node.right)) {\r\n // go right\r\n delta += node.delta;\r\n node = node.right;\r\n continue;\r\n }\r\n }\r\n setNodeIsVisited(T.root, false);\r\n}\r\n//#endregion\r\n//#region Searching\r\nfunction collectNodesFromOwner(T, ownerId) {\r\n let node = T.root;\r\n let result = [];\r\n let resultLen = 0;\r\n while (node !== SENTINEL) {\r\n if (getNodeIsVisited(node)) {\r\n // going up from this node\r\n setNodeIsVisited(node.left, false);\r\n setNodeIsVisited(node.right, false);\r\n node = node.parent;\r\n continue;\r\n }\r\n if (node.left !== SENTINEL && !getNodeIsVisited(node.left)) {\r\n // go left\r\n node = node.left;\r\n continue;\r\n }\r\n // handle current node\r\n if (node.ownerId === ownerId) {\r\n result[resultLen++] = node;\r\n }\r\n setNodeIsVisited(node, true);\r\n if (node.right !== SENTINEL && !getNodeIsVisited(node.right)) {\r\n // go right\r\n node = node.right;\r\n continue;\r\n }\r\n }\r\n setNodeIsVisited(T.root, false);\r\n return result;\r\n}\r\nfunction collectNodesPostOrder(T) {\r\n let node = T.root;\r\n let result = [];\r\n let resultLen = 0;\r\n while (node !== SENTINEL) {\r\n if (getNodeIsVisited(node)) {\r\n // going up from this node\r\n setNodeIsVisited(node.left, false);\r\n setNodeIsVisited(node.right, false);\r\n node = node.parent;\r\n continue;\r\n }\r\n if (node.left !== SENTINEL && !getNodeIsVisited(node.left)) {\r\n // go left\r\n node = node.left;\r\n continue;\r\n }\r\n if (node.right !== SENTINEL && !getNodeIsVisited(node.right)) {\r\n // go right\r\n node = node.right;\r\n continue;\r\n }\r\n // handle current node\r\n result[resultLen++] = node;\r\n setNodeIsVisited(node, true);\r\n }\r\n setNodeIsVisited(T.root, false);\r\n return result;\r\n}\r\nfunction search(T, filterOwnerId, filterOutValidation, cachedVersionId) {\r\n let node = T.root;\r\n let delta = 0;\r\n let nodeStart = 0;\r\n let nodeEnd = 0;\r\n let result = [];\r\n let resultLen = 0;\r\n while (node !== SENTINEL) {\r\n if (getNodeIsVisited(node)) {\r\n // going up from this node\r\n setNodeIsVisited(node.left, false);\r\n setNodeIsVisited(node.right, false);\r\n if (node === node.parent.right) {\r\n delta -= node.parent.delta;\r\n }\r\n node = node.parent;\r\n continue;\r\n }\r\n if (node.left !== SENTINEL && !getNodeIsVisited(node.left)) {\r\n // go left\r\n node = node.left;\r\n continue;\r\n }\r\n // handle current node\r\n nodeStart = delta + node.start;\r\n nodeEnd = delta + node.end;\r\n node.setCachedOffsets(nodeStart, nodeEnd, cachedVersionId);\r\n let include = true;\r\n if (filterOwnerId && node.ownerId && node.ownerId !== filterOwnerId) {\r\n include = false;\r\n }\r\n if (filterOutValidation && getNodeIsForValidation(node)) {\r\n include = false;\r\n }\r\n if (include) {\r\n result[resultLen++] = node;\r\n }\r\n setNodeIsVisited(node, true);\r\n if (node.right !== SENTINEL && !getNodeIsVisited(node.right)) {\r\n // go right\r\n delta += node.delta;\r\n node = node.right;\r\n continue;\r\n }\r\n }\r\n setNodeIsVisited(T.root, false);\r\n return result;\r\n}\r\nfunction intervalSearch(T, intervalStart, intervalEnd, filterOwnerId, filterOutValidation, cachedVersionId) {\r\n // https://en.wikipedia.org/wiki/Interval_tree#Augmented_tree\r\n // Now, it is known that two intervals A and B overlap only when both\r\n // A.low <= B.high and A.high >= B.low. When searching the trees for\r\n // nodes overlapping with a given interval, you can immediately skip:\r\n // a) all nodes to the right of nodes whose low value is past the end of the given interval.\r\n // b) all nodes that have their maximum 'high' value below the start of the given interval.\r\n let node = T.root;\r\n let delta = 0;\r\n let nodeMaxEnd = 0;\r\n let nodeStart = 0;\r\n let nodeEnd = 0;\r\n let result = [];\r\n let resultLen = 0;\r\n while (node !== SENTINEL) {\r\n if (getNodeIsVisited(node)) {\r\n // going up from this node\r\n setNodeIsVisited(node.left, false);\r\n setNodeIsVisited(node.right, false);\r\n if (node === node.parent.right) {\r\n delta -= node.parent.delta;\r\n }\r\n node = node.parent;\r\n continue;\r\n }\r\n if (!getNodeIsVisited(node.left)) {\r\n // first time seeing this node\r\n nodeMaxEnd = delta + node.maxEnd;\r\n if (nodeMaxEnd < intervalStart) {\r\n // cover case b) from above\r\n // there is no need to search this node or its children\r\n setNodeIsVisited(node, true);\r\n continue;\r\n }\r\n if (node.left !== SENTINEL) {\r\n // go left\r\n node = node.left;\r\n continue;\r\n }\r\n }\r\n // handle current node\r\n nodeStart = delta + node.start;\r\n if (nodeStart > intervalEnd) {\r\n // cover case a) from above\r\n // there is no need to search this node or its right subtree\r\n setNodeIsVisited(node, true);\r\n continue;\r\n }\r\n nodeEnd = delta + node.end;\r\n if (nodeEnd >= intervalStart) {\r\n // There is overlap\r\n node.setCachedOffsets(nodeStart, nodeEnd, cachedVersionId);\r\n let include = true;\r\n if (filterOwnerId && node.ownerId && node.ownerId !== filterOwnerId) {\r\n include = false;\r\n }\r\n if (filterOutValidation && getNodeIsForValidation(node)) {\r\n include = false;\r\n }\r\n if (include) {\r\n result[resultLen++] = node;\r\n }\r\n }\r\n setNodeIsVisited(node, true);\r\n if (node.right !== SENTINEL && !getNodeIsVisited(node.right)) {\r\n // go right\r\n delta += node.delta;\r\n node = node.right;\r\n continue;\r\n }\r\n }\r\n setNodeIsVisited(T.root, false);\r\n return result;\r\n}\r\n//#endregion\r\n//#region Insertion\r\nfunction rbTreeInsert(T, newNode) {\r\n if (T.root === SENTINEL) {\r\n newNode.parent = SENTINEL;\r\n newNode.left = SENTINEL;\r\n newNode.right = SENTINEL;\r\n setNodeColor(newNode, 0 /* Black */);\r\n T.root = newNode;\r\n return T.root;\r\n }\r\n treeInsert(T, newNode);\r\n recomputeMaxEndWalkToRoot(newNode.parent);\r\n // repair tree\r\n let x = newNode;\r\n while (x !== T.root && getNodeColor(x.parent) === 1 /* Red */) {\r\n if (x.parent === x.parent.parent.left) {\r\n const y = x.parent.parent.right;\r\n if (getNodeColor(y) === 1 /* Red */) {\r\n setNodeColor(x.parent, 0 /* Black */);\r\n setNodeColor(y, 0 /* Black */);\r\n setNodeColor(x.parent.parent, 1 /* Red */);\r\n x = x.parent.parent;\r\n }\r\n else {\r\n if (x === x.parent.right) {\r\n x = x.parent;\r\n leftRotate(T, x);\r\n }\r\n setNodeColor(x.parent, 0 /* Black */);\r\n setNodeColor(x.parent.parent, 1 /* Red */);\r\n rightRotate(T, x.parent.parent);\r\n }\r\n }\r\n else {\r\n const y = x.parent.parent.left;\r\n if (getNodeColor(y) === 1 /* Red */) {\r\n setNodeColor(x.parent, 0 /* Black */);\r\n setNodeColor(y, 0 /* Black */);\r\n setNodeColor(x.parent.parent, 1 /* Red */);\r\n x = x.parent.parent;\r\n }\r\n else {\r\n if (x === x.parent.left) {\r\n x = x.parent;\r\n rightRotate(T, x);\r\n }\r\n setNodeColor(x.parent, 0 /* Black */);\r\n setNodeColor(x.parent.parent, 1 /* Red */);\r\n leftRotate(T, x.parent.parent);\r\n }\r\n }\r\n }\r\n setNodeColor(T.root, 0 /* Black */);\r\n return newNode;\r\n}\r\nfunction treeInsert(T, z) {\r\n let delta = 0;\r\n let x = T.root;\r\n const zAbsoluteStart = z.start;\r\n const zAbsoluteEnd = z.end;\r\n while (true) {\r\n const cmp = intervalCompare(zAbsoluteStart, zAbsoluteEnd, x.start + delta, x.end + delta);\r\n if (cmp < 0) {\r\n // this node should be inserted to the left\r\n // => it is not affected by the node's delta\r\n if (x.left === SENTINEL) {\r\n z.start -= delta;\r\n z.end -= delta;\r\n z.maxEnd -= delta;\r\n x.left = z;\r\n break;\r\n }\r\n else {\r\n x = x.left;\r\n }\r\n }\r\n else {\r\n // this node should be inserted to the right\r\n // => it is not affected by the node's delta\r\n if (x.right === SENTINEL) {\r\n z.start -= (delta + x.delta);\r\n z.end -= (delta + x.delta);\r\n z.maxEnd -= (delta + x.delta);\r\n x.right = z;\r\n break;\r\n }\r\n else {\r\n delta += x.delta;\r\n x = x.right;\r\n }\r\n }\r\n }\r\n z.parent = x;\r\n z.left = SENTINEL;\r\n z.right = SENTINEL;\r\n setNodeColor(z, 1 /* Red */);\r\n}\r\n//#endregion\r\n//#region Deletion\r\nfunction rbTreeDelete(T, z) {\r\n let x;\r\n let y;\r\n // RB-DELETE except we don't swap z and y in case c)\r\n // i.e. we always delete what's pointed at by z.\r\n if (z.left === SENTINEL) {\r\n x = z.right;\r\n y = z;\r\n // x's delta is no longer influenced by z's delta\r\n x.delta += z.delta;\r\n if (x.delta < -1073741824 /* MIN_SAFE_DELTA */ || x.delta > 1073741824 /* MAX_SAFE_DELTA */) {\r\n T.requestNormalizeDelta = true;\r\n }\r\n x.start += z.delta;\r\n x.end += z.delta;\r\n }\r\n else if (z.right === SENTINEL) {\r\n x = z.left;\r\n y = z;\r\n }\r\n else {\r\n y = leftest(z.right);\r\n x = y.right;\r\n // y's delta is no longer influenced by z's delta,\r\n // but we don't want to walk the entire right-hand-side subtree of x.\r\n // we therefore maintain z's delta in y, and adjust only x\r\n x.start += y.delta;\r\n x.end += y.delta;\r\n x.delta += y.delta;\r\n if (x.delta < -1073741824 /* MIN_SAFE_DELTA */ || x.delta > 1073741824 /* MAX_SAFE_DELTA */) {\r\n T.requestNormalizeDelta = true;\r\n }\r\n y.start += z.delta;\r\n y.end += z.delta;\r\n y.delta = z.delta;\r\n if (y.delta < -1073741824 /* MIN_SAFE_DELTA */ || y.delta > 1073741824 /* MAX_SAFE_DELTA */) {\r\n T.requestNormalizeDelta = true;\r\n }\r\n }\r\n if (y === T.root) {\r\n T.root = x;\r\n setNodeColor(x, 0 /* Black */);\r\n z.detach();\r\n resetSentinel();\r\n recomputeMaxEnd(x);\r\n T.root.parent = SENTINEL;\r\n return;\r\n }\r\n let yWasRed = (getNodeColor(y) === 1 /* Red */);\r\n if (y === y.parent.left) {\r\n y.parent.left = x;\r\n }\r\n else {\r\n y.parent.right = x;\r\n }\r\n if (y === z) {\r\n x.parent = y.parent;\r\n }\r\n else {\r\n if (y.parent === z) {\r\n x.parent = y;\r\n }\r\n else {\r\n x.parent = y.parent;\r\n }\r\n y.left = z.left;\r\n y.right = z.right;\r\n y.parent = z.parent;\r\n setNodeColor(y, getNodeColor(z));\r\n if (z === T.root) {\r\n T.root = y;\r\n }\r\n else {\r\n if (z === z.parent.left) {\r\n z.parent.left = y;\r\n }\r\n else {\r\n z.parent.right = y;\r\n }\r\n }\r\n if (y.left !== SENTINEL) {\r\n y.left.parent = y;\r\n }\r\n if (y.right !== SENTINEL) {\r\n y.right.parent = y;\r\n }\r\n }\r\n z.detach();\r\n if (yWasRed) {\r\n recomputeMaxEndWalkToRoot(x.parent);\r\n if (y !== z) {\r\n recomputeMaxEndWalkToRoot(y);\r\n recomputeMaxEndWalkToRoot(y.parent);\r\n }\r\n resetSentinel();\r\n return;\r\n }\r\n recomputeMaxEndWalkToRoot(x);\r\n recomputeMaxEndWalkToRoot(x.parent);\r\n if (y !== z) {\r\n recomputeMaxEndWalkToRoot(y);\r\n recomputeMaxEndWalkToRoot(y.parent);\r\n }\r\n // RB-DELETE-FIXUP\r\n let w;\r\n while (x !== T.root && getNodeColor(x) === 0 /* Black */) {\r\n if (x === x.parent.left) {\r\n w = x.parent.right;\r\n if (getNodeColor(w) === 1 /* Red */) {\r\n setNodeColor(w, 0 /* Black */);\r\n setNodeColor(x.parent, 1 /* Red */);\r\n leftRotate(T, x.parent);\r\n w = x.parent.right;\r\n }\r\n if (getNodeColor(w.left) === 0 /* Black */ && getNodeColor(w.right) === 0 /* Black */) {\r\n setNodeColor(w, 1 /* Red */);\r\n x = x.parent;\r\n }\r\n else {\r\n if (getNodeColor(w.right) === 0 /* Black */) {\r\n setNodeColor(w.left, 0 /* Black */);\r\n setNodeColor(w, 1 /* Red */);\r\n rightRotate(T, w);\r\n w = x.parent.right;\r\n }\r\n setNodeColor(w, getNodeColor(x.parent));\r\n setNodeColor(x.parent, 0 /* Black */);\r\n setNodeColor(w.right, 0 /* Black */);\r\n leftRotate(T, x.parent);\r\n x = T.root;\r\n }\r\n }\r\n else {\r\n w = x.parent.left;\r\n if (getNodeColor(w) === 1 /* Red */) {\r\n setNodeColor(w, 0 /* Black */);\r\n setNodeColor(x.parent, 1 /* Red */);\r\n rightRotate(T, x.parent);\r\n w = x.parent.left;\r\n }\r\n if (getNodeColor(w.left) === 0 /* Black */ && getNodeColor(w.right) === 0 /* Black */) {\r\n setNodeColor(w, 1 /* Red */);\r\n x = x.parent;\r\n }\r\n else {\r\n if (getNodeColor(w.left) === 0 /* Black */) {\r\n setNodeColor(w.right, 0 /* Black */);\r\n setNodeColor(w, 1 /* Red */);\r\n leftRotate(T, w);\r\n w = x.parent.left;\r\n }\r\n setNodeColor(w, getNodeColor(x.parent));\r\n setNodeColor(x.parent, 0 /* Black */);\r\n setNodeColor(w.left, 0 /* Black */);\r\n rightRotate(T, x.parent);\r\n x = T.root;\r\n }\r\n }\r\n }\r\n setNodeColor(x, 0 /* Black */);\r\n resetSentinel();\r\n}\r\nfunction leftest(node) {\r\n while (node.left !== SENTINEL) {\r\n node = node.left;\r\n }\r\n return node;\r\n}\r\nfunction resetSentinel() {\r\n SENTINEL.parent = SENTINEL;\r\n SENTINEL.delta = 0; // optional\r\n SENTINEL.start = 0; // optional\r\n SENTINEL.end = 0; // optional\r\n}\r\n//#endregion\r\n//#region Rotations\r\nfunction leftRotate(T, x) {\r\n const y = x.right; // set y.\r\n y.delta += x.delta; // y's delta is no longer influenced by x's delta\r\n if (y.delta < -1073741824 /* MIN_SAFE_DELTA */ || y.delta > 1073741824 /* MAX_SAFE_DELTA */) {\r\n T.requestNormalizeDelta = true;\r\n }\r\n y.start += x.delta;\r\n y.end += x.delta;\r\n x.right = y.left; // turn y's left subtree into x's right subtree.\r\n if (y.left !== SENTINEL) {\r\n y.left.parent = x;\r\n }\r\n y.parent = x.parent; // link x's parent to y.\r\n if (x.parent === SENTINEL) {\r\n T.root = y;\r\n }\r\n else if (x === x.parent.left) {\r\n x.parent.left = y;\r\n }\r\n else {\r\n x.parent.right = y;\r\n }\r\n y.left = x; // put x on y's left.\r\n x.parent = y;\r\n recomputeMaxEnd(x);\r\n recomputeMaxEnd(y);\r\n}\r\nfunction rightRotate(T, y) {\r\n const x = y.left;\r\n y.delta -= x.delta;\r\n if (y.delta < -1073741824 /* MIN_SAFE_DELTA */ || y.delta > 1073741824 /* MAX_SAFE_DELTA */) {\r\n T.requestNormalizeDelta = true;\r\n }\r\n y.start -= x.delta;\r\n y.end -= x.delta;\r\n y.left = x.right;\r\n if (x.right !== SENTINEL) {\r\n x.right.parent = y;\r\n }\r\n x.parent = y.parent;\r\n if (y.parent === SENTINEL) {\r\n T.root = x;\r\n }\r\n else if (y === y.parent.right) {\r\n y.parent.right = x;\r\n }\r\n else {\r\n y.parent.left = x;\r\n }\r\n x.right = y;\r\n y.parent = x;\r\n recomputeMaxEnd(y);\r\n recomputeMaxEnd(x);\r\n}\r\n//#endregion\r\n//#region max end computation\r\nfunction computeMaxEnd(node) {\r\n let maxEnd = node.end;\r\n if (node.left !== SENTINEL) {\r\n const leftMaxEnd = node.left.maxEnd;\r\n if (leftMaxEnd > maxEnd) {\r\n maxEnd = leftMaxEnd;\r\n }\r\n }\r\n if (node.right !== SENTINEL) {\r\n const rightMaxEnd = node.right.maxEnd + node.delta;\r\n if (rightMaxEnd > maxEnd) {\r\n maxEnd = rightMaxEnd;\r\n }\r\n }\r\n return maxEnd;\r\n}\r\nexport function recomputeMaxEnd(node) {\r\n node.maxEnd = computeMaxEnd(node);\r\n}\r\nfunction recomputeMaxEndWalkToRoot(node) {\r\n while (node !== SENTINEL) {\r\n const maxEnd = computeMaxEnd(node);\r\n if (node.maxEnd === maxEnd) {\r\n // no need to go further\r\n return;\r\n }\r\n node.maxEnd = maxEnd;\r\n node = node.parent;\r\n }\r\n}\r\n//#endregion\r\n//#region utils\r\nexport function intervalCompare(aStart, aEnd, bStart, bEnd) {\r\n if (aStart === bStart) {\r\n return aEnd - bEnd;\r\n }\r\n return aStart - bStart;\r\n}\r\n//#endregion\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class TreeNode {\r\n constructor(piece, color) {\r\n this.piece = piece;\r\n this.color = color;\r\n this.size_left = 0;\r\n this.lf_left = 0;\r\n this.parent = this;\r\n this.left = this;\r\n this.right = this;\r\n }\r\n next() {\r\n if (this.right !== SENTINEL) {\r\n return leftest(this.right);\r\n }\r\n let node = this;\r\n while (node.parent !== SENTINEL) {\r\n if (node.parent.left === node) {\r\n break;\r\n }\r\n node = node.parent;\r\n }\r\n if (node.parent === SENTINEL) {\r\n return SENTINEL;\r\n }\r\n else {\r\n return node.parent;\r\n }\r\n }\r\n prev() {\r\n if (this.left !== SENTINEL) {\r\n return righttest(this.left);\r\n }\r\n let node = this;\r\n while (node.parent !== SENTINEL) {\r\n if (node.parent.right === node) {\r\n break;\r\n }\r\n node = node.parent;\r\n }\r\n if (node.parent === SENTINEL) {\r\n return SENTINEL;\r\n }\r\n else {\r\n return node.parent;\r\n }\r\n }\r\n detach() {\r\n this.parent = null;\r\n this.left = null;\r\n this.right = null;\r\n }\r\n}\r\nexport const SENTINEL = new TreeNode(null, 0 /* Black */);\r\nSENTINEL.parent = SENTINEL;\r\nSENTINEL.left = SENTINEL;\r\nSENTINEL.right = SENTINEL;\r\nSENTINEL.color = 0 /* Black */;\r\nexport function leftest(node) {\r\n while (node.left !== SENTINEL) {\r\n node = node.left;\r\n }\r\n return node;\r\n}\r\nexport function righttest(node) {\r\n while (node.right !== SENTINEL) {\r\n node = node.right;\r\n }\r\n return node;\r\n}\r\nexport function calculateSize(node) {\r\n if (node === SENTINEL) {\r\n return 0;\r\n }\r\n return node.size_left + node.piece.length + calculateSize(node.right);\r\n}\r\nexport function calculateLF(node) {\r\n if (node === SENTINEL) {\r\n return 0;\r\n }\r\n return node.lf_left + node.piece.lineFeedCnt + calculateLF(node.right);\r\n}\r\nexport function resetSentinel() {\r\n SENTINEL.parent = SENTINEL;\r\n}\r\nexport function leftRotate(tree, x) {\r\n let y = x.right;\r\n // fix size_left\r\n y.size_left += x.size_left + (x.piece ? x.piece.length : 0);\r\n y.lf_left += x.lf_left + (x.piece ? x.piece.lineFeedCnt : 0);\r\n x.right = y.left;\r\n if (y.left !== SENTINEL) {\r\n y.left.parent = x;\r\n }\r\n y.parent = x.parent;\r\n if (x.parent === SENTINEL) {\r\n tree.root = y;\r\n }\r\n else if (x.parent.left === x) {\r\n x.parent.left = y;\r\n }\r\n else {\r\n x.parent.right = y;\r\n }\r\n y.left = x;\r\n x.parent = y;\r\n}\r\nexport function rightRotate(tree, y) {\r\n let x = y.left;\r\n y.left = x.right;\r\n if (x.right !== SENTINEL) {\r\n x.right.parent = y;\r\n }\r\n x.parent = y.parent;\r\n // fix size_left\r\n y.size_left -= x.size_left + (x.piece ? x.piece.length : 0);\r\n y.lf_left -= x.lf_left + (x.piece ? x.piece.lineFeedCnt : 0);\r\n if (y.parent === SENTINEL) {\r\n tree.root = x;\r\n }\r\n else if (y === y.parent.right) {\r\n y.parent.right = x;\r\n }\r\n else {\r\n y.parent.left = x;\r\n }\r\n x.right = y;\r\n y.parent = x;\r\n}\r\nexport function rbDelete(tree, z) {\r\n let x;\r\n let y;\r\n if (z.left === SENTINEL) {\r\n y = z;\r\n x = y.right;\r\n }\r\n else if (z.right === SENTINEL) {\r\n y = z;\r\n x = y.left;\r\n }\r\n else {\r\n y = leftest(z.right);\r\n x = y.right;\r\n }\r\n if (y === tree.root) {\r\n tree.root = x;\r\n // if x is null, we are removing the only node\r\n x.color = 0 /* Black */;\r\n z.detach();\r\n resetSentinel();\r\n tree.root.parent = SENTINEL;\r\n return;\r\n }\r\n let yWasRed = (y.color === 1 /* Red */);\r\n if (y === y.parent.left) {\r\n y.parent.left = x;\r\n }\r\n else {\r\n y.parent.right = x;\r\n }\r\n if (y === z) {\r\n x.parent = y.parent;\r\n recomputeTreeMetadata(tree, x);\r\n }\r\n else {\r\n if (y.parent === z) {\r\n x.parent = y;\r\n }\r\n else {\r\n x.parent = y.parent;\r\n }\r\n // as we make changes to x's hierarchy, update size_left of subtree first\r\n recomputeTreeMetadata(tree, x);\r\n y.left = z.left;\r\n y.right = z.right;\r\n y.parent = z.parent;\r\n y.color = z.color;\r\n if (z === tree.root) {\r\n tree.root = y;\r\n }\r\n else {\r\n if (z === z.parent.left) {\r\n z.parent.left = y;\r\n }\r\n else {\r\n z.parent.right = y;\r\n }\r\n }\r\n if (y.left !== SENTINEL) {\r\n y.left.parent = y;\r\n }\r\n if (y.right !== SENTINEL) {\r\n y.right.parent = y;\r\n }\r\n // update metadata\r\n // we replace z with y, so in this sub tree, the length change is z.item.length\r\n y.size_left = z.size_left;\r\n y.lf_left = z.lf_left;\r\n recomputeTreeMetadata(tree, y);\r\n }\r\n z.detach();\r\n if (x.parent.left === x) {\r\n let newSizeLeft = calculateSize(x);\r\n let newLFLeft = calculateLF(x);\r\n if (newSizeLeft !== x.parent.size_left || newLFLeft !== x.parent.lf_left) {\r\n let delta = newSizeLeft - x.parent.size_left;\r\n let lf_delta = newLFLeft - x.parent.lf_left;\r\n x.parent.size_left = newSizeLeft;\r\n x.parent.lf_left = newLFLeft;\r\n updateTreeMetadata(tree, x.parent, delta, lf_delta);\r\n }\r\n }\r\n recomputeTreeMetadata(tree, x.parent);\r\n if (yWasRed) {\r\n resetSentinel();\r\n return;\r\n }\r\n // RB-DELETE-FIXUP\r\n let w;\r\n while (x !== tree.root && x.color === 0 /* Black */) {\r\n if (x === x.parent.left) {\r\n w = x.parent.right;\r\n if (w.color === 1 /* Red */) {\r\n w.color = 0 /* Black */;\r\n x.parent.color = 1 /* Red */;\r\n leftRotate(tree, x.parent);\r\n w = x.parent.right;\r\n }\r\n if (w.left.color === 0 /* Black */ && w.right.color === 0 /* Black */) {\r\n w.color = 1 /* Red */;\r\n x = x.parent;\r\n }\r\n else {\r\n if (w.right.color === 0 /* Black */) {\r\n w.left.color = 0 /* Black */;\r\n w.color = 1 /* Red */;\r\n rightRotate(tree, w);\r\n w = x.parent.right;\r\n }\r\n w.color = x.parent.color;\r\n x.parent.color = 0 /* Black */;\r\n w.right.color = 0 /* Black */;\r\n leftRotate(tree, x.parent);\r\n x = tree.root;\r\n }\r\n }\r\n else {\r\n w = x.parent.left;\r\n if (w.color === 1 /* Red */) {\r\n w.color = 0 /* Black */;\r\n x.parent.color = 1 /* Red */;\r\n rightRotate(tree, x.parent);\r\n w = x.parent.left;\r\n }\r\n if (w.left.color === 0 /* Black */ && w.right.color === 0 /* Black */) {\r\n w.color = 1 /* Red */;\r\n x = x.parent;\r\n }\r\n else {\r\n if (w.left.color === 0 /* Black */) {\r\n w.right.color = 0 /* Black */;\r\n w.color = 1 /* Red */;\r\n leftRotate(tree, w);\r\n w = x.parent.left;\r\n }\r\n w.color = x.parent.color;\r\n x.parent.color = 0 /* Black */;\r\n w.left.color = 0 /* Black */;\r\n rightRotate(tree, x.parent);\r\n x = tree.root;\r\n }\r\n }\r\n }\r\n x.color = 0 /* Black */;\r\n resetSentinel();\r\n}\r\nexport function fixInsert(tree, x) {\r\n recomputeTreeMetadata(tree, x);\r\n while (x !== tree.root && x.parent.color === 1 /* Red */) {\r\n if (x.parent === x.parent.parent.left) {\r\n const y = x.parent.parent.right;\r\n if (y.color === 1 /* Red */) {\r\n x.parent.color = 0 /* Black */;\r\n y.color = 0 /* Black */;\r\n x.parent.parent.color = 1 /* Red */;\r\n x = x.parent.parent;\r\n }\r\n else {\r\n if (x === x.parent.right) {\r\n x = x.parent;\r\n leftRotate(tree, x);\r\n }\r\n x.parent.color = 0 /* Black */;\r\n x.parent.parent.color = 1 /* Red */;\r\n rightRotate(tree, x.parent.parent);\r\n }\r\n }\r\n else {\r\n const y = x.parent.parent.left;\r\n if (y.color === 1 /* Red */) {\r\n x.parent.color = 0 /* Black */;\r\n y.color = 0 /* Black */;\r\n x.parent.parent.color = 1 /* Red */;\r\n x = x.parent.parent;\r\n }\r\n else {\r\n if (x === x.parent.left) {\r\n x = x.parent;\r\n rightRotate(tree, x);\r\n }\r\n x.parent.color = 0 /* Black */;\r\n x.parent.parent.color = 1 /* Red */;\r\n leftRotate(tree, x.parent.parent);\r\n }\r\n }\r\n }\r\n tree.root.color = 0 /* Black */;\r\n}\r\nexport function updateTreeMetadata(tree, x, delta, lineFeedCntDelta) {\r\n // node length change or line feed count change\r\n while (x !== tree.root && x !== SENTINEL) {\r\n if (x.parent.left === x) {\r\n x.parent.size_left += delta;\r\n x.parent.lf_left += lineFeedCntDelta;\r\n }\r\n x = x.parent;\r\n }\r\n}\r\nexport function recomputeTreeMetadata(tree, x) {\r\n let delta = 0;\r\n let lf_delta = 0;\r\n if (x === tree.root) {\r\n return;\r\n }\r\n if (delta === 0) {\r\n // go upwards till the node whose left subtree is changed.\r\n while (x !== tree.root && x === x.parent.right) {\r\n x = x.parent;\r\n }\r\n if (x === tree.root) {\r\n // well, it means we add a node to the end (inorder)\r\n return;\r\n }\r\n // x is the node whose right subtree is changed.\r\n x = x.parent;\r\n delta = calculateSize(x.left) - x.size_left;\r\n lf_delta = calculateLF(x.left) - x.lf_left;\r\n x.size_left += delta;\r\n x.lf_left += lf_delta;\r\n }\r\n // go upwards till root. O(logN)\r\n while (x !== tree.root && (delta !== 0 || lf_delta !== 0)) {\r\n if (x.parent.left === x) {\r\n x.parent.size_left += delta;\r\n x.parent.lf_left += lf_delta;\r\n }\r\n x = x.parent;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { CharacterClassifier } from '../core/characterClassifier.js';\r\nexport class WordCharacterClassifier extends CharacterClassifier {\r\n constructor(wordSeparators) {\r\n super(0 /* Regular */);\r\n for (let i = 0, len = wordSeparators.length; i < len; i++) {\r\n this.set(wordSeparators.charCodeAt(i), 2 /* WordSeparator */);\r\n }\r\n this.set(32 /* Space */, 1 /* Whitespace */);\r\n this.set(9 /* Tab */, 1 /* Whitespace */);\r\n }\r\n}\r\nfunction once(computeFn) {\r\n let cache = {}; // TODO@Alex unbounded cache\r\n return (input) => {\r\n if (!cache.hasOwnProperty(input)) {\r\n cache[input] = computeFn(input);\r\n }\r\n return cache[input];\r\n };\r\n}\r\nexport const getMapForWordSeparators = once((input) => new WordCharacterClassifier(input));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { getMapForWordSeparators } from '../controller/wordCharacterClassifier.js';\r\nimport { Position } from '../core/position.js';\r\nimport { Range } from '../core/range.js';\r\nimport { FindMatch } from '../model.js';\r\nconst LIMIT_FIND_COUNT = 999;\r\nexport class SearchParams {\r\n constructor(searchString, isRegex, matchCase, wordSeparators) {\r\n this.searchString = searchString;\r\n this.isRegex = isRegex;\r\n this.matchCase = matchCase;\r\n this.wordSeparators = wordSeparators;\r\n }\r\n parseSearchRequest() {\r\n if (this.searchString === '') {\r\n return null;\r\n }\r\n // Try to create a RegExp out of the params\r\n let multiline;\r\n if (this.isRegex) {\r\n multiline = isMultilineRegexSource(this.searchString);\r\n }\r\n else {\r\n multiline = (this.searchString.indexOf('\\n') >= 0);\r\n }\r\n let regex = null;\r\n try {\r\n regex = strings.createRegExp(this.searchString, this.isRegex, {\r\n matchCase: this.matchCase,\r\n wholeWord: false,\r\n multiline: multiline,\r\n global: true,\r\n unicode: true\r\n });\r\n }\r\n catch (err) {\r\n return null;\r\n }\r\n if (!regex) {\r\n return null;\r\n }\r\n let canUseSimpleSearch = (!this.isRegex && !multiline);\r\n if (canUseSimpleSearch && this.searchString.toLowerCase() !== this.searchString.toUpperCase()) {\r\n // casing might make a difference\r\n canUseSimpleSearch = this.matchCase;\r\n }\r\n return new SearchData(regex, this.wordSeparators ? getMapForWordSeparators(this.wordSeparators) : null, canUseSimpleSearch ? this.searchString : null);\r\n }\r\n}\r\nexport function isMultilineRegexSource(searchString) {\r\n if (!searchString || searchString.length === 0) {\r\n return false;\r\n }\r\n for (let i = 0, len = searchString.length; i < len; i++) {\r\n const chCode = searchString.charCodeAt(i);\r\n if (chCode === 92 /* Backslash */) {\r\n // move to next char\r\n i++;\r\n if (i >= len) {\r\n // string ends with a \\\r\n break;\r\n }\r\n const nextChCode = searchString.charCodeAt(i);\r\n if (nextChCode === 110 /* n */ || nextChCode === 114 /* r */ || nextChCode === 87 /* W */ || nextChCode === 119 /* w */) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\nexport class SearchData {\r\n constructor(regex, wordSeparators, simpleSearch) {\r\n this.regex = regex;\r\n this.wordSeparators = wordSeparators;\r\n this.simpleSearch = simpleSearch;\r\n }\r\n}\r\nexport function createFindMatch(range, rawMatches, captureMatches) {\r\n if (!captureMatches) {\r\n return new FindMatch(range, null);\r\n }\r\n let matches = [];\r\n for (let i = 0, len = rawMatches.length; i < len; i++) {\r\n matches[i] = rawMatches[i];\r\n }\r\n return new FindMatch(range, matches);\r\n}\r\nclass LineFeedCounter {\r\n constructor(text) {\r\n let lineFeedsOffsets = [];\r\n let lineFeedsOffsetsLen = 0;\r\n for (let i = 0, textLen = text.length; i < textLen; i++) {\r\n if (text.charCodeAt(i) === 10 /* LineFeed */) {\r\n lineFeedsOffsets[lineFeedsOffsetsLen++] = i;\r\n }\r\n }\r\n this._lineFeedsOffsets = lineFeedsOffsets;\r\n }\r\n findLineFeedCountBeforeOffset(offset) {\r\n const lineFeedsOffsets = this._lineFeedsOffsets;\r\n let min = 0;\r\n let max = lineFeedsOffsets.length - 1;\r\n if (max === -1) {\r\n // no line feeds\r\n return 0;\r\n }\r\n if (offset <= lineFeedsOffsets[0]) {\r\n // before first line feed\r\n return 0;\r\n }\r\n while (min < max) {\r\n const mid = min + ((max - min) / 2 >> 0);\r\n if (lineFeedsOffsets[mid] >= offset) {\r\n max = mid - 1;\r\n }\r\n else {\r\n if (lineFeedsOffsets[mid + 1] >= offset) {\r\n // bingo!\r\n min = mid;\r\n max = mid;\r\n }\r\n else {\r\n min = mid + 1;\r\n }\r\n }\r\n }\r\n return min + 1;\r\n }\r\n}\r\nexport class TextModelSearch {\r\n static findMatches(model, searchParams, searchRange, captureMatches, limitResultCount) {\r\n const searchData = searchParams.parseSearchRequest();\r\n if (!searchData) {\r\n return [];\r\n }\r\n if (searchData.regex.multiline) {\r\n return this._doFindMatchesMultiline(model, searchRange, new Searcher(searchData.wordSeparators, searchData.regex), captureMatches, limitResultCount);\r\n }\r\n return this._doFindMatchesLineByLine(model, searchRange, searchData, captureMatches, limitResultCount);\r\n }\r\n /**\r\n * Multiline search always executes on the lines concatenated with \\n.\r\n * We must therefore compensate for the count of \\n in case the model is CRLF\r\n */\r\n static _getMultilineMatchRange(model, deltaOffset, text, lfCounter, matchIndex, match0) {\r\n let startOffset;\r\n let lineFeedCountBeforeMatch = 0;\r\n if (lfCounter) {\r\n lineFeedCountBeforeMatch = lfCounter.findLineFeedCountBeforeOffset(matchIndex);\r\n startOffset = deltaOffset + matchIndex + lineFeedCountBeforeMatch /* add as many \\r as there were \\n */;\r\n }\r\n else {\r\n startOffset = deltaOffset + matchIndex;\r\n }\r\n let endOffset;\r\n if (lfCounter) {\r\n let lineFeedCountBeforeEndOfMatch = lfCounter.findLineFeedCountBeforeOffset(matchIndex + match0.length);\r\n let lineFeedCountInMatch = lineFeedCountBeforeEndOfMatch - lineFeedCountBeforeMatch;\r\n endOffset = startOffset + match0.length + lineFeedCountInMatch /* add as many \\r as there were \\n */;\r\n }\r\n else {\r\n endOffset = startOffset + match0.length;\r\n }\r\n const startPosition = model.getPositionAt(startOffset);\r\n const endPosition = model.getPositionAt(endOffset);\r\n return new Range(startPosition.lineNumber, startPosition.column, endPosition.lineNumber, endPosition.column);\r\n }\r\n static _doFindMatchesMultiline(model, searchRange, searcher, captureMatches, limitResultCount) {\r\n const deltaOffset = model.getOffsetAt(searchRange.getStartPosition());\r\n // We always execute multiline search over the lines joined with \\n\r\n // This makes it that \\n will match the EOL for both CRLF and LF models\r\n // We compensate for offset errors in `_getMultilineMatchRange`\r\n const text = model.getValueInRange(searchRange, 1 /* LF */);\r\n const lfCounter = (model.getEOL() === '\\r\\n' ? new LineFeedCounter(text) : null);\r\n const result = [];\r\n let counter = 0;\r\n let m;\r\n searcher.reset(0);\r\n while ((m = searcher.next(text))) {\r\n result[counter++] = createFindMatch(this._getMultilineMatchRange(model, deltaOffset, text, lfCounter, m.index, m[0]), m, captureMatches);\r\n if (counter >= limitResultCount) {\r\n return result;\r\n }\r\n }\r\n return result;\r\n }\r\n static _doFindMatchesLineByLine(model, searchRange, searchData, captureMatches, limitResultCount) {\r\n const result = [];\r\n let resultLen = 0;\r\n // Early case for a search range that starts & stops on the same line number\r\n if (searchRange.startLineNumber === searchRange.endLineNumber) {\r\n const text = model.getLineContent(searchRange.startLineNumber).substring(searchRange.startColumn - 1, searchRange.endColumn - 1);\r\n resultLen = this._findMatchesInLine(searchData, text, searchRange.startLineNumber, searchRange.startColumn - 1, resultLen, result, captureMatches, limitResultCount);\r\n return result;\r\n }\r\n // Collect results from first line\r\n const text = model.getLineContent(searchRange.startLineNumber).substring(searchRange.startColumn - 1);\r\n resultLen = this._findMatchesInLine(searchData, text, searchRange.startLineNumber, searchRange.startColumn - 1, resultLen, result, captureMatches, limitResultCount);\r\n // Collect results from middle lines\r\n for (let lineNumber = searchRange.startLineNumber + 1; lineNumber < searchRange.endLineNumber && resultLen < limitResultCount; lineNumber++) {\r\n resultLen = this._findMatchesInLine(searchData, model.getLineContent(lineNumber), lineNumber, 0, resultLen, result, captureMatches, limitResultCount);\r\n }\r\n // Collect results from last line\r\n if (resultLen < limitResultCount) {\r\n const text = model.getLineContent(searchRange.endLineNumber).substring(0, searchRange.endColumn - 1);\r\n resultLen = this._findMatchesInLine(searchData, text, searchRange.endLineNumber, 0, resultLen, result, captureMatches, limitResultCount);\r\n }\r\n return result;\r\n }\r\n static _findMatchesInLine(searchData, text, lineNumber, deltaOffset, resultLen, result, captureMatches, limitResultCount) {\r\n const wordSeparators = searchData.wordSeparators;\r\n if (!captureMatches && searchData.simpleSearch) {\r\n const searchString = searchData.simpleSearch;\r\n const searchStringLen = searchString.length;\r\n const textLength = text.length;\r\n let lastMatchIndex = -searchStringLen;\r\n while ((lastMatchIndex = text.indexOf(searchString, lastMatchIndex + searchStringLen)) !== -1) {\r\n if (!wordSeparators || isValidMatch(wordSeparators, text, textLength, lastMatchIndex, searchStringLen)) {\r\n result[resultLen++] = new FindMatch(new Range(lineNumber, lastMatchIndex + 1 + deltaOffset, lineNumber, lastMatchIndex + 1 + searchStringLen + deltaOffset), null);\r\n if (resultLen >= limitResultCount) {\r\n return resultLen;\r\n }\r\n }\r\n }\r\n return resultLen;\r\n }\r\n const searcher = new Searcher(searchData.wordSeparators, searchData.regex);\r\n let m;\r\n // Reset regex to search from the beginning\r\n searcher.reset(0);\r\n do {\r\n m = searcher.next(text);\r\n if (m) {\r\n result[resultLen++] = createFindMatch(new Range(lineNumber, m.index + 1 + deltaOffset, lineNumber, m.index + 1 + m[0].length + deltaOffset), m, captureMatches);\r\n if (resultLen >= limitResultCount) {\r\n return resultLen;\r\n }\r\n }\r\n } while (m);\r\n return resultLen;\r\n }\r\n static findNextMatch(model, searchParams, searchStart, captureMatches) {\r\n const searchData = searchParams.parseSearchRequest();\r\n if (!searchData) {\r\n return null;\r\n }\r\n const searcher = new Searcher(searchData.wordSeparators, searchData.regex);\r\n if (searchData.regex.multiline) {\r\n return this._doFindNextMatchMultiline(model, searchStart, searcher, captureMatches);\r\n }\r\n return this._doFindNextMatchLineByLine(model, searchStart, searcher, captureMatches);\r\n }\r\n static _doFindNextMatchMultiline(model, searchStart, searcher, captureMatches) {\r\n const searchTextStart = new Position(searchStart.lineNumber, 1);\r\n const deltaOffset = model.getOffsetAt(searchTextStart);\r\n const lineCount = model.getLineCount();\r\n // We always execute multiline search over the lines joined with \\n\r\n // This makes it that \\n will match the EOL for both CRLF and LF models\r\n // We compensate for offset errors in `_getMultilineMatchRange`\r\n const text = model.getValueInRange(new Range(searchTextStart.lineNumber, searchTextStart.column, lineCount, model.getLineMaxColumn(lineCount)), 1 /* LF */);\r\n const lfCounter = (model.getEOL() === '\\r\\n' ? new LineFeedCounter(text) : null);\r\n searcher.reset(searchStart.column - 1);\r\n let m = searcher.next(text);\r\n if (m) {\r\n return createFindMatch(this._getMultilineMatchRange(model, deltaOffset, text, lfCounter, m.index, m[0]), m, captureMatches);\r\n }\r\n if (searchStart.lineNumber !== 1 || searchStart.column !== 1) {\r\n // Try again from the top\r\n return this._doFindNextMatchMultiline(model, new Position(1, 1), searcher, captureMatches);\r\n }\r\n return null;\r\n }\r\n static _doFindNextMatchLineByLine(model, searchStart, searcher, captureMatches) {\r\n const lineCount = model.getLineCount();\r\n const startLineNumber = searchStart.lineNumber;\r\n // Look in first line\r\n const text = model.getLineContent(startLineNumber);\r\n const r = this._findFirstMatchInLine(searcher, text, startLineNumber, searchStart.column, captureMatches);\r\n if (r) {\r\n return r;\r\n }\r\n for (let i = 1; i <= lineCount; i++) {\r\n const lineIndex = (startLineNumber + i - 1) % lineCount;\r\n const text = model.getLineContent(lineIndex + 1);\r\n const r = this._findFirstMatchInLine(searcher, text, lineIndex + 1, 1, captureMatches);\r\n if (r) {\r\n return r;\r\n }\r\n }\r\n return null;\r\n }\r\n static _findFirstMatchInLine(searcher, text, lineNumber, fromColumn, captureMatches) {\r\n // Set regex to search from column\r\n searcher.reset(fromColumn - 1);\r\n const m = searcher.next(text);\r\n if (m) {\r\n return createFindMatch(new Range(lineNumber, m.index + 1, lineNumber, m.index + 1 + m[0].length), m, captureMatches);\r\n }\r\n return null;\r\n }\r\n static findPreviousMatch(model, searchParams, searchStart, captureMatches) {\r\n const searchData = searchParams.parseSearchRequest();\r\n if (!searchData) {\r\n return null;\r\n }\r\n const searcher = new Searcher(searchData.wordSeparators, searchData.regex);\r\n if (searchData.regex.multiline) {\r\n return this._doFindPreviousMatchMultiline(model, searchStart, searcher, captureMatches);\r\n }\r\n return this._doFindPreviousMatchLineByLine(model, searchStart, searcher, captureMatches);\r\n }\r\n static _doFindPreviousMatchMultiline(model, searchStart, searcher, captureMatches) {\r\n const matches = this._doFindMatchesMultiline(model, new Range(1, 1, searchStart.lineNumber, searchStart.column), searcher, captureMatches, 10 * LIMIT_FIND_COUNT);\r\n if (matches.length > 0) {\r\n return matches[matches.length - 1];\r\n }\r\n const lineCount = model.getLineCount();\r\n if (searchStart.lineNumber !== lineCount || searchStart.column !== model.getLineMaxColumn(lineCount)) {\r\n // Try again with all content\r\n return this._doFindPreviousMatchMultiline(model, new Position(lineCount, model.getLineMaxColumn(lineCount)), searcher, captureMatches);\r\n }\r\n return null;\r\n }\r\n static _doFindPreviousMatchLineByLine(model, searchStart, searcher, captureMatches) {\r\n const lineCount = model.getLineCount();\r\n const startLineNumber = searchStart.lineNumber;\r\n // Look in first line\r\n const text = model.getLineContent(startLineNumber).substring(0, searchStart.column - 1);\r\n const r = this._findLastMatchInLine(searcher, text, startLineNumber, captureMatches);\r\n if (r) {\r\n return r;\r\n }\r\n for (let i = 1; i <= lineCount; i++) {\r\n const lineIndex = (lineCount + startLineNumber - i - 1) % lineCount;\r\n const text = model.getLineContent(lineIndex + 1);\r\n const r = this._findLastMatchInLine(searcher, text, lineIndex + 1, captureMatches);\r\n if (r) {\r\n return r;\r\n }\r\n }\r\n return null;\r\n }\r\n static _findLastMatchInLine(searcher, text, lineNumber, captureMatches) {\r\n let bestResult = null;\r\n let m;\r\n searcher.reset(0);\r\n while ((m = searcher.next(text))) {\r\n bestResult = createFindMatch(new Range(lineNumber, m.index + 1, lineNumber, m.index + 1 + m[0].length), m, captureMatches);\r\n }\r\n return bestResult;\r\n }\r\n}\r\nfunction leftIsWordBounday(wordSeparators, text, textLength, matchStartIndex, matchLength) {\r\n if (matchStartIndex === 0) {\r\n // Match starts at start of string\r\n return true;\r\n }\r\n const charBefore = text.charCodeAt(matchStartIndex - 1);\r\n if (wordSeparators.get(charBefore) !== 0 /* Regular */) {\r\n // The character before the match is a word separator\r\n return true;\r\n }\r\n if (charBefore === 13 /* CarriageReturn */ || charBefore === 10 /* LineFeed */) {\r\n // The character before the match is line break or carriage return.\r\n return true;\r\n }\r\n if (matchLength > 0) {\r\n const firstCharInMatch = text.charCodeAt(matchStartIndex);\r\n if (wordSeparators.get(firstCharInMatch) !== 0 /* Regular */) {\r\n // The first character inside the match is a word separator\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction rightIsWordBounday(wordSeparators, text, textLength, matchStartIndex, matchLength) {\r\n if (matchStartIndex + matchLength === textLength) {\r\n // Match ends at end of string\r\n return true;\r\n }\r\n const charAfter = text.charCodeAt(matchStartIndex + matchLength);\r\n if (wordSeparators.get(charAfter) !== 0 /* Regular */) {\r\n // The character after the match is a word separator\r\n return true;\r\n }\r\n if (charAfter === 13 /* CarriageReturn */ || charAfter === 10 /* LineFeed */) {\r\n // The character after the match is line break or carriage return.\r\n return true;\r\n }\r\n if (matchLength > 0) {\r\n const lastCharInMatch = text.charCodeAt(matchStartIndex + matchLength - 1);\r\n if (wordSeparators.get(lastCharInMatch) !== 0 /* Regular */) {\r\n // The last character in the match is a word separator\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nexport function isValidMatch(wordSeparators, text, textLength, matchStartIndex, matchLength) {\r\n return (leftIsWordBounday(wordSeparators, text, textLength, matchStartIndex, matchLength)\r\n && rightIsWordBounday(wordSeparators, text, textLength, matchStartIndex, matchLength));\r\n}\r\nexport class Searcher {\r\n constructor(wordSeparators, searchRegex) {\r\n this._wordSeparators = wordSeparators;\r\n this._searchRegex = searchRegex;\r\n this._prevMatchStartIndex = -1;\r\n this._prevMatchLength = 0;\r\n }\r\n reset(lastIndex) {\r\n this._searchRegex.lastIndex = lastIndex;\r\n this._prevMatchStartIndex = -1;\r\n this._prevMatchLength = 0;\r\n }\r\n next(text) {\r\n const textLength = text.length;\r\n let m;\r\n do {\r\n if (this._prevMatchStartIndex + this._prevMatchLength === textLength) {\r\n // Reached the end of the line\r\n return null;\r\n }\r\n m = this._searchRegex.exec(text);\r\n if (!m) {\r\n return null;\r\n }\r\n const matchStartIndex = m.index;\r\n const matchLength = m[0].length;\r\n if (matchStartIndex === this._prevMatchStartIndex && matchLength === this._prevMatchLength) {\r\n if (matchLength === 0) {\r\n // the search result is an empty string and won't advance `regex.lastIndex`, so `regex.exec` will stuck here\r\n // we attempt to recover from that by advancing by two if surrogate pair found and by one otherwise\r\n if (strings.getNextCodePoint(text, textLength, this._searchRegex.lastIndex) > 0xFFFF) {\r\n this._searchRegex.lastIndex += 2;\r\n }\r\n else {\r\n this._searchRegex.lastIndex += 1;\r\n }\r\n continue;\r\n }\r\n // Exit early if the regex matches the same range twice\r\n return null;\r\n }\r\n this._prevMatchStartIndex = matchStartIndex;\r\n this._prevMatchLength = matchLength;\r\n if (!this._wordSeparators || isValidMatch(this._wordSeparators, text, textLength, matchStartIndex, matchLength)) {\r\n return m;\r\n }\r\n } while (m);\r\n return null;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Position } from '../../core/position.js';\r\nimport { Range } from '../../core/range.js';\r\nimport { FindMatch } from '../../model.js';\r\nimport { SENTINEL, TreeNode, fixInsert, leftest, rbDelete, righttest, updateTreeMetadata } from './rbTreeBase.js';\r\nimport { Searcher, createFindMatch, isValidMatch } from '../textModelSearch.js';\r\n// const lfRegex = new RegExp(/\\r\\n|\\r|\\n/g);\r\nexport const AverageBufferSize = 65535;\r\nexport function createUintArray(arr) {\r\n let r;\r\n if (arr[arr.length - 1] < 65536) {\r\n r = new Uint16Array(arr.length);\r\n }\r\n else {\r\n r = new Uint32Array(arr.length);\r\n }\r\n r.set(arr, 0);\r\n return r;\r\n}\r\nexport class LineStarts {\r\n constructor(lineStarts, cr, lf, crlf, isBasicASCII) {\r\n this.lineStarts = lineStarts;\r\n this.cr = cr;\r\n this.lf = lf;\r\n this.crlf = crlf;\r\n this.isBasicASCII = isBasicASCII;\r\n }\r\n}\r\nexport function createLineStartsFast(str, readonly = true) {\r\n let r = [0], rLength = 1;\r\n for (let i = 0, len = str.length; i < len; i++) {\r\n const chr = str.charCodeAt(i);\r\n if (chr === 13 /* CarriageReturn */) {\r\n if (i + 1 < len && str.charCodeAt(i + 1) === 10 /* LineFeed */) {\r\n // \\r\\n... case\r\n r[rLength++] = i + 2;\r\n i++; // skip \\n\r\n }\r\n else {\r\n // \\r... case\r\n r[rLength++] = i + 1;\r\n }\r\n }\r\n else if (chr === 10 /* LineFeed */) {\r\n r[rLength++] = i + 1;\r\n }\r\n }\r\n if (readonly) {\r\n return createUintArray(r);\r\n }\r\n else {\r\n return r;\r\n }\r\n}\r\nexport function createLineStarts(r, str) {\r\n r.length = 0;\r\n r[0] = 0;\r\n let rLength = 1;\r\n let cr = 0, lf = 0, crlf = 0;\r\n let isBasicASCII = true;\r\n for (let i = 0, len = str.length; i < len; i++) {\r\n const chr = str.charCodeAt(i);\r\n if (chr === 13 /* CarriageReturn */) {\r\n if (i + 1 < len && str.charCodeAt(i + 1) === 10 /* LineFeed */) {\r\n // \\r\\n... case\r\n crlf++;\r\n r[rLength++] = i + 2;\r\n i++; // skip \\n\r\n }\r\n else {\r\n cr++;\r\n // \\r... case\r\n r[rLength++] = i + 1;\r\n }\r\n }\r\n else if (chr === 10 /* LineFeed */) {\r\n lf++;\r\n r[rLength++] = i + 1;\r\n }\r\n else {\r\n if (isBasicASCII) {\r\n if (chr !== 9 /* Tab */ && (chr < 32 || chr > 126)) {\r\n isBasicASCII = false;\r\n }\r\n }\r\n }\r\n }\r\n const result = new LineStarts(createUintArray(r), cr, lf, crlf, isBasicASCII);\r\n r.length = 0;\r\n return result;\r\n}\r\nexport class Piece {\r\n constructor(bufferIndex, start, end, lineFeedCnt, length) {\r\n this.bufferIndex = bufferIndex;\r\n this.start = start;\r\n this.end = end;\r\n this.lineFeedCnt = lineFeedCnt;\r\n this.length = length;\r\n }\r\n}\r\nexport class StringBuffer {\r\n constructor(buffer, lineStarts) {\r\n this.buffer = buffer;\r\n this.lineStarts = lineStarts;\r\n }\r\n}\r\n/**\r\n * Readonly snapshot for piece tree.\r\n * In a real multiple thread environment, to make snapshot reading always work correctly, we need to\r\n * 1. Make TreeNode.piece immutable, then reading and writing can run in parallel.\r\n * 2. TreeNode/Buffers normalization should not happen during snapshot reading.\r\n */\r\nclass PieceTreeSnapshot {\r\n constructor(tree, BOM) {\r\n this._pieces = [];\r\n this._tree = tree;\r\n this._BOM = BOM;\r\n this._index = 0;\r\n if (tree.root !== SENTINEL) {\r\n tree.iterate(tree.root, node => {\r\n if (node !== SENTINEL) {\r\n this._pieces.push(node.piece);\r\n }\r\n return true;\r\n });\r\n }\r\n }\r\n read() {\r\n if (this._pieces.length === 0) {\r\n if (this._index === 0) {\r\n this._index++;\r\n return this._BOM;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n if (this._index > this._pieces.length - 1) {\r\n return null;\r\n }\r\n if (this._index === 0) {\r\n return this._BOM + this._tree.getPieceContent(this._pieces[this._index++]);\r\n }\r\n return this._tree.getPieceContent(this._pieces[this._index++]);\r\n }\r\n}\r\nclass PieceTreeSearchCache {\r\n constructor(limit) {\r\n this._limit = limit;\r\n this._cache = [];\r\n }\r\n get(offset) {\r\n for (let i = this._cache.length - 1; i >= 0; i--) {\r\n let nodePos = this._cache[i];\r\n if (nodePos.nodeStartOffset <= offset && nodePos.nodeStartOffset + nodePos.node.piece.length >= offset) {\r\n return nodePos;\r\n }\r\n }\r\n return null;\r\n }\r\n get2(lineNumber) {\r\n for (let i = this._cache.length - 1; i >= 0; i--) {\r\n let nodePos = this._cache[i];\r\n if (nodePos.nodeStartLineNumber && nodePos.nodeStartLineNumber < lineNumber && nodePos.nodeStartLineNumber + nodePos.node.piece.lineFeedCnt >= lineNumber) {\r\n return nodePos;\r\n }\r\n }\r\n return null;\r\n }\r\n set(nodePosition) {\r\n if (this._cache.length >= this._limit) {\r\n this._cache.shift();\r\n }\r\n this._cache.push(nodePosition);\r\n }\r\n validate(offset) {\r\n let hasInvalidVal = false;\r\n let tmp = this._cache;\r\n for (let i = 0; i < tmp.length; i++) {\r\n let nodePos = tmp[i];\r\n if (nodePos.node.parent === null || nodePos.nodeStartOffset >= offset) {\r\n tmp[i] = null;\r\n hasInvalidVal = true;\r\n continue;\r\n }\r\n }\r\n if (hasInvalidVal) {\r\n let newArr = [];\r\n for (const entry of tmp) {\r\n if (entry !== null) {\r\n newArr.push(entry);\r\n }\r\n }\r\n this._cache = newArr;\r\n }\r\n }\r\n}\r\nexport class PieceTreeBase {\r\n constructor(chunks, eol, eolNormalized) {\r\n this.create(chunks, eol, eolNormalized);\r\n }\r\n create(chunks, eol, eolNormalized) {\r\n this._buffers = [\r\n new StringBuffer('', [0])\r\n ];\r\n this._lastChangeBufferPos = { line: 0, column: 0 };\r\n this.root = SENTINEL;\r\n this._lineCnt = 1;\r\n this._length = 0;\r\n this._EOL = eol;\r\n this._EOLLength = eol.length;\r\n this._EOLNormalized = eolNormalized;\r\n let lastNode = null;\r\n for (let i = 0, len = chunks.length; i < len; i++) {\r\n if (chunks[i].buffer.length > 0) {\r\n if (!chunks[i].lineStarts) {\r\n chunks[i].lineStarts = createLineStartsFast(chunks[i].buffer);\r\n }\r\n let piece = new Piece(i + 1, { line: 0, column: 0 }, { line: chunks[i].lineStarts.length - 1, column: chunks[i].buffer.length - chunks[i].lineStarts[chunks[i].lineStarts.length - 1] }, chunks[i].lineStarts.length - 1, chunks[i].buffer.length);\r\n this._buffers.push(chunks[i]);\r\n lastNode = this.rbInsertRight(lastNode, piece);\r\n }\r\n }\r\n this._searchCache = new PieceTreeSearchCache(1);\r\n this._lastVisitedLine = { lineNumber: 0, value: '' };\r\n this.computeBufferMetadata();\r\n }\r\n normalizeEOL(eol) {\r\n let averageBufferSize = AverageBufferSize;\r\n let min = averageBufferSize - Math.floor(averageBufferSize / 3);\r\n let max = min * 2;\r\n let tempChunk = '';\r\n let tempChunkLen = 0;\r\n let chunks = [];\r\n this.iterate(this.root, node => {\r\n let str = this.getNodeContent(node);\r\n let len = str.length;\r\n if (tempChunkLen <= min || tempChunkLen + len < max) {\r\n tempChunk += str;\r\n tempChunkLen += len;\r\n return true;\r\n }\r\n // flush anyways\r\n let text = tempChunk.replace(/\\r\\n|\\r|\\n/g, eol);\r\n chunks.push(new StringBuffer(text, createLineStartsFast(text)));\r\n tempChunk = str;\r\n tempChunkLen = len;\r\n return true;\r\n });\r\n if (tempChunkLen > 0) {\r\n let text = tempChunk.replace(/\\r\\n|\\r|\\n/g, eol);\r\n chunks.push(new StringBuffer(text, createLineStartsFast(text)));\r\n }\r\n this.create(chunks, eol, true);\r\n }\r\n // #region Buffer API\r\n getEOL() {\r\n return this._EOL;\r\n }\r\n setEOL(newEOL) {\r\n this._EOL = newEOL;\r\n this._EOLLength = this._EOL.length;\r\n this.normalizeEOL(newEOL);\r\n }\r\n createSnapshot(BOM) {\r\n return new PieceTreeSnapshot(this, BOM);\r\n }\r\n getOffsetAt(lineNumber, column) {\r\n let leftLen = 0; // inorder\r\n let x = this.root;\r\n while (x !== SENTINEL) {\r\n if (x.left !== SENTINEL && x.lf_left + 1 >= lineNumber) {\r\n x = x.left;\r\n }\r\n else if (x.lf_left + x.piece.lineFeedCnt + 1 >= lineNumber) {\r\n leftLen += x.size_left;\r\n // lineNumber >= 2\r\n let accumualtedValInCurrentIndex = this.getAccumulatedValue(x, lineNumber - x.lf_left - 2);\r\n return leftLen += accumualtedValInCurrentIndex + column - 1;\r\n }\r\n else {\r\n lineNumber -= x.lf_left + x.piece.lineFeedCnt;\r\n leftLen += x.size_left + x.piece.length;\r\n x = x.right;\r\n }\r\n }\r\n return leftLen;\r\n }\r\n getPositionAt(offset) {\r\n offset = Math.floor(offset);\r\n offset = Math.max(0, offset);\r\n let x = this.root;\r\n let lfCnt = 0;\r\n let originalOffset = offset;\r\n while (x !== SENTINEL) {\r\n if (x.size_left !== 0 && x.size_left >= offset) {\r\n x = x.left;\r\n }\r\n else if (x.size_left + x.piece.length >= offset) {\r\n let out = this.getIndexOf(x, offset - x.size_left);\r\n lfCnt += x.lf_left + out.index;\r\n if (out.index === 0) {\r\n let lineStartOffset = this.getOffsetAt(lfCnt + 1, 1);\r\n let column = originalOffset - lineStartOffset;\r\n return new Position(lfCnt + 1, column + 1);\r\n }\r\n return new Position(lfCnt + 1, out.remainder + 1);\r\n }\r\n else {\r\n offset -= x.size_left + x.piece.length;\r\n lfCnt += x.lf_left + x.piece.lineFeedCnt;\r\n if (x.right === SENTINEL) {\r\n // last node\r\n let lineStartOffset = this.getOffsetAt(lfCnt + 1, 1);\r\n let column = originalOffset - offset - lineStartOffset;\r\n return new Position(lfCnt + 1, column + 1);\r\n }\r\n else {\r\n x = x.right;\r\n }\r\n }\r\n }\r\n return new Position(1, 1);\r\n }\r\n getValueInRange(range, eol) {\r\n if (range.startLineNumber === range.endLineNumber && range.startColumn === range.endColumn) {\r\n return '';\r\n }\r\n let startPosition = this.nodeAt2(range.startLineNumber, range.startColumn);\r\n let endPosition = this.nodeAt2(range.endLineNumber, range.endColumn);\r\n let value = this.getValueInRange2(startPosition, endPosition);\r\n if (eol) {\r\n if (eol !== this._EOL || !this._EOLNormalized) {\r\n return value.replace(/\\r\\n|\\r|\\n/g, eol);\r\n }\r\n if (eol === this.getEOL() && this._EOLNormalized) {\r\n if (eol === '\\r\\n') {\r\n }\r\n return value;\r\n }\r\n return value.replace(/\\r\\n|\\r|\\n/g, eol);\r\n }\r\n return value;\r\n }\r\n getValueInRange2(startPosition, endPosition) {\r\n if (startPosition.node === endPosition.node) {\r\n let node = startPosition.node;\r\n let buffer = this._buffers[node.piece.bufferIndex].buffer;\r\n let startOffset = this.offsetInBuffer(node.piece.bufferIndex, node.piece.start);\r\n return buffer.substring(startOffset + startPosition.remainder, startOffset + endPosition.remainder);\r\n }\r\n let x = startPosition.node;\r\n let buffer = this._buffers[x.piece.bufferIndex].buffer;\r\n let startOffset = this.offsetInBuffer(x.piece.bufferIndex, x.piece.start);\r\n let ret = buffer.substring(startOffset + startPosition.remainder, startOffset + x.piece.length);\r\n x = x.next();\r\n while (x !== SENTINEL) {\r\n let buffer = this._buffers[x.piece.bufferIndex].buffer;\r\n let startOffset = this.offsetInBuffer(x.piece.bufferIndex, x.piece.start);\r\n if (x === endPosition.node) {\r\n ret += buffer.substring(startOffset, startOffset + endPosition.remainder);\r\n break;\r\n }\r\n else {\r\n ret += buffer.substr(startOffset, x.piece.length);\r\n }\r\n x = x.next();\r\n }\r\n return ret;\r\n }\r\n getLinesContent() {\r\n let lines = [];\r\n let linesLength = 0;\r\n let currentLine = '';\r\n let danglingCR = false;\r\n this.iterate(this.root, node => {\r\n if (node === SENTINEL) {\r\n return true;\r\n }\r\n const piece = node.piece;\r\n let pieceLength = piece.length;\r\n if (pieceLength === 0) {\r\n return true;\r\n }\r\n const buffer = this._buffers[piece.bufferIndex].buffer;\r\n const lineStarts = this._buffers[piece.bufferIndex].lineStarts;\r\n const pieceStartLine = piece.start.line;\r\n const pieceEndLine = piece.end.line;\r\n let pieceStartOffset = lineStarts[pieceStartLine] + piece.start.column;\r\n if (danglingCR) {\r\n if (buffer.charCodeAt(pieceStartOffset) === 10 /* LineFeed */) {\r\n // pretend the \\n was in the previous piece..\r\n pieceStartOffset++;\r\n pieceLength--;\r\n }\r\n lines[linesLength++] = currentLine;\r\n currentLine = '';\r\n danglingCR = false;\r\n if (pieceLength === 0) {\r\n return true;\r\n }\r\n }\r\n if (pieceStartLine === pieceEndLine) {\r\n // this piece has no new lines\r\n if (!this._EOLNormalized && buffer.charCodeAt(pieceStartOffset + pieceLength - 1) === 13 /* CarriageReturn */) {\r\n danglingCR = true;\r\n currentLine += buffer.substr(pieceStartOffset, pieceLength - 1);\r\n }\r\n else {\r\n currentLine += buffer.substr(pieceStartOffset, pieceLength);\r\n }\r\n return true;\r\n }\r\n // add the text before the first line start in this piece\r\n currentLine += (this._EOLNormalized\r\n ? buffer.substring(pieceStartOffset, Math.max(pieceStartOffset, lineStarts[pieceStartLine + 1] - this._EOLLength))\r\n : buffer.substring(pieceStartOffset, lineStarts[pieceStartLine + 1]).replace(/(\\r\\n|\\r|\\n)$/, ''));\r\n lines[linesLength++] = currentLine;\r\n for (let line = pieceStartLine + 1; line < pieceEndLine; line++) {\r\n currentLine = (this._EOLNormalized\r\n ? buffer.substring(lineStarts[line], lineStarts[line + 1] - this._EOLLength)\r\n : buffer.substring(lineStarts[line], lineStarts[line + 1]).replace(/(\\r\\n|\\r|\\n)$/, ''));\r\n lines[linesLength++] = currentLine;\r\n }\r\n if (!this._EOLNormalized && buffer.charCodeAt(lineStarts[pieceEndLine] + piece.end.column - 1) === 13 /* CarriageReturn */) {\r\n danglingCR = true;\r\n if (piece.end.column === 0) {\r\n // The last line ended with a \\r, let's undo the push, it will be pushed by next iteration\r\n linesLength--;\r\n }\r\n else {\r\n currentLine = buffer.substr(lineStarts[pieceEndLine], piece.end.column - 1);\r\n }\r\n }\r\n else {\r\n currentLine = buffer.substr(lineStarts[pieceEndLine], piece.end.column);\r\n }\r\n return true;\r\n });\r\n if (danglingCR) {\r\n lines[linesLength++] = currentLine;\r\n currentLine = '';\r\n }\r\n lines[linesLength++] = currentLine;\r\n return lines;\r\n }\r\n getLength() {\r\n return this._length;\r\n }\r\n getLineCount() {\r\n return this._lineCnt;\r\n }\r\n getLineContent(lineNumber) {\r\n if (this._lastVisitedLine.lineNumber === lineNumber) {\r\n return this._lastVisitedLine.value;\r\n }\r\n this._lastVisitedLine.lineNumber = lineNumber;\r\n if (lineNumber === this._lineCnt) {\r\n this._lastVisitedLine.value = this.getLineRawContent(lineNumber);\r\n }\r\n else if (this._EOLNormalized) {\r\n this._lastVisitedLine.value = this.getLineRawContent(lineNumber, this._EOLLength);\r\n }\r\n else {\r\n this._lastVisitedLine.value = this.getLineRawContent(lineNumber).replace(/(\\r\\n|\\r|\\n)$/, '');\r\n }\r\n return this._lastVisitedLine.value;\r\n }\r\n _getCharCode(nodePos) {\r\n if (nodePos.remainder === nodePos.node.piece.length) {\r\n // the char we want to fetch is at the head of next node.\r\n let matchingNode = nodePos.node.next();\r\n if (!matchingNode) {\r\n return 0;\r\n }\r\n let buffer = this._buffers[matchingNode.piece.bufferIndex];\r\n let startOffset = this.offsetInBuffer(matchingNode.piece.bufferIndex, matchingNode.piece.start);\r\n return buffer.buffer.charCodeAt(startOffset);\r\n }\r\n else {\r\n let buffer = this._buffers[nodePos.node.piece.bufferIndex];\r\n let startOffset = this.offsetInBuffer(nodePos.node.piece.bufferIndex, nodePos.node.piece.start);\r\n let targetOffset = startOffset + nodePos.remainder;\r\n return buffer.buffer.charCodeAt(targetOffset);\r\n }\r\n }\r\n getLineCharCode(lineNumber, index) {\r\n let nodePos = this.nodeAt2(lineNumber, index + 1);\r\n return this._getCharCode(nodePos);\r\n }\r\n getLineLength(lineNumber) {\r\n if (lineNumber === this.getLineCount()) {\r\n let startOffset = this.getOffsetAt(lineNumber, 1);\r\n return this.getLength() - startOffset;\r\n }\r\n return this.getOffsetAt(lineNumber + 1, 1) - this.getOffsetAt(lineNumber, 1) - this._EOLLength;\r\n }\r\n findMatchesInNode(node, searcher, startLineNumber, startColumn, startCursor, endCursor, searchData, captureMatches, limitResultCount, resultLen, result) {\r\n let buffer = this._buffers[node.piece.bufferIndex];\r\n let startOffsetInBuffer = this.offsetInBuffer(node.piece.bufferIndex, node.piece.start);\r\n let start = this.offsetInBuffer(node.piece.bufferIndex, startCursor);\r\n let end = this.offsetInBuffer(node.piece.bufferIndex, endCursor);\r\n let m;\r\n // Reset regex to search from the beginning\r\n let ret = { line: 0, column: 0 };\r\n let searchText;\r\n let offsetInBuffer;\r\n if (searcher._wordSeparators) {\r\n searchText = buffer.buffer.substring(start, end);\r\n offsetInBuffer = (offset) => offset + start;\r\n searcher.reset(0);\r\n }\r\n else {\r\n searchText = buffer.buffer;\r\n offsetInBuffer = (offset) => offset;\r\n searcher.reset(start);\r\n }\r\n do {\r\n m = searcher.next(searchText);\r\n if (m) {\r\n if (offsetInBuffer(m.index) >= end) {\r\n return resultLen;\r\n }\r\n this.positionInBuffer(node, offsetInBuffer(m.index) - startOffsetInBuffer, ret);\r\n let lineFeedCnt = this.getLineFeedCnt(node.piece.bufferIndex, startCursor, ret);\r\n let retStartColumn = ret.line === startCursor.line ? ret.column - startCursor.column + startColumn : ret.column + 1;\r\n let retEndColumn = retStartColumn + m[0].length;\r\n result[resultLen++] = createFindMatch(new Range(startLineNumber + lineFeedCnt, retStartColumn, startLineNumber + lineFeedCnt, retEndColumn), m, captureMatches);\r\n if (offsetInBuffer(m.index) + m[0].length >= end) {\r\n return resultLen;\r\n }\r\n if (resultLen >= limitResultCount) {\r\n return resultLen;\r\n }\r\n }\r\n } while (m);\r\n return resultLen;\r\n }\r\n findMatchesLineByLine(searchRange, searchData, captureMatches, limitResultCount) {\r\n const result = [];\r\n let resultLen = 0;\r\n const searcher = new Searcher(searchData.wordSeparators, searchData.regex);\r\n let startPosition = this.nodeAt2(searchRange.startLineNumber, searchRange.startColumn);\r\n if (startPosition === null) {\r\n return [];\r\n }\r\n let endPosition = this.nodeAt2(searchRange.endLineNumber, searchRange.endColumn);\r\n if (endPosition === null) {\r\n return [];\r\n }\r\n let start = this.positionInBuffer(startPosition.node, startPosition.remainder);\r\n let end = this.positionInBuffer(endPosition.node, endPosition.remainder);\r\n if (startPosition.node === endPosition.node) {\r\n this.findMatchesInNode(startPosition.node, searcher, searchRange.startLineNumber, searchRange.startColumn, start, end, searchData, captureMatches, limitResultCount, resultLen, result);\r\n return result;\r\n }\r\n let startLineNumber = searchRange.startLineNumber;\r\n let currentNode = startPosition.node;\r\n while (currentNode !== endPosition.node) {\r\n let lineBreakCnt = this.getLineFeedCnt(currentNode.piece.bufferIndex, start, currentNode.piece.end);\r\n if (lineBreakCnt >= 1) {\r\n // last line break position\r\n let lineStarts = this._buffers[currentNode.piece.bufferIndex].lineStarts;\r\n let startOffsetInBuffer = this.offsetInBuffer(currentNode.piece.bufferIndex, currentNode.piece.start);\r\n let nextLineStartOffset = lineStarts[start.line + lineBreakCnt];\r\n let startColumn = startLineNumber === searchRange.startLineNumber ? searchRange.startColumn : 1;\r\n resultLen = this.findMatchesInNode(currentNode, searcher, startLineNumber, startColumn, start, this.positionInBuffer(currentNode, nextLineStartOffset - startOffsetInBuffer), searchData, captureMatches, limitResultCount, resultLen, result);\r\n if (resultLen >= limitResultCount) {\r\n return result;\r\n }\r\n startLineNumber += lineBreakCnt;\r\n }\r\n let startColumn = startLineNumber === searchRange.startLineNumber ? searchRange.startColumn - 1 : 0;\r\n // search for the remaining content\r\n if (startLineNumber === searchRange.endLineNumber) {\r\n const text = this.getLineContent(startLineNumber).substring(startColumn, searchRange.endColumn - 1);\r\n resultLen = this._findMatchesInLine(searchData, searcher, text, searchRange.endLineNumber, startColumn, resultLen, result, captureMatches, limitResultCount);\r\n return result;\r\n }\r\n resultLen = this._findMatchesInLine(searchData, searcher, this.getLineContent(startLineNumber).substr(startColumn), startLineNumber, startColumn, resultLen, result, captureMatches, limitResultCount);\r\n if (resultLen >= limitResultCount) {\r\n return result;\r\n }\r\n startLineNumber++;\r\n startPosition = this.nodeAt2(startLineNumber, 1);\r\n currentNode = startPosition.node;\r\n start = this.positionInBuffer(startPosition.node, startPosition.remainder);\r\n }\r\n if (startLineNumber === searchRange.endLineNumber) {\r\n let startColumn = startLineNumber === searchRange.startLineNumber ? searchRange.startColumn - 1 : 0;\r\n const text = this.getLineContent(startLineNumber).substring(startColumn, searchRange.endColumn - 1);\r\n resultLen = this._findMatchesInLine(searchData, searcher, text, searchRange.endLineNumber, startColumn, resultLen, result, captureMatches, limitResultCount);\r\n return result;\r\n }\r\n let startColumn = startLineNumber === searchRange.startLineNumber ? searchRange.startColumn : 1;\r\n resultLen = this.findMatchesInNode(endPosition.node, searcher, startLineNumber, startColumn, start, end, searchData, captureMatches, limitResultCount, resultLen, result);\r\n return result;\r\n }\r\n _findMatchesInLine(searchData, searcher, text, lineNumber, deltaOffset, resultLen, result, captureMatches, limitResultCount) {\r\n const wordSeparators = searchData.wordSeparators;\r\n if (!captureMatches && searchData.simpleSearch) {\r\n const searchString = searchData.simpleSearch;\r\n const searchStringLen = searchString.length;\r\n const textLength = text.length;\r\n let lastMatchIndex = -searchStringLen;\r\n while ((lastMatchIndex = text.indexOf(searchString, lastMatchIndex + searchStringLen)) !== -1) {\r\n if (!wordSeparators || isValidMatch(wordSeparators, text, textLength, lastMatchIndex, searchStringLen)) {\r\n result[resultLen++] = new FindMatch(new Range(lineNumber, lastMatchIndex + 1 + deltaOffset, lineNumber, lastMatchIndex + 1 + searchStringLen + deltaOffset), null);\r\n if (resultLen >= limitResultCount) {\r\n return resultLen;\r\n }\r\n }\r\n }\r\n return resultLen;\r\n }\r\n let m;\r\n // Reset regex to search from the beginning\r\n searcher.reset(0);\r\n do {\r\n m = searcher.next(text);\r\n if (m) {\r\n result[resultLen++] = createFindMatch(new Range(lineNumber, m.index + 1 + deltaOffset, lineNumber, m.index + 1 + m[0].length + deltaOffset), m, captureMatches);\r\n if (resultLen >= limitResultCount) {\r\n return resultLen;\r\n }\r\n }\r\n } while (m);\r\n return resultLen;\r\n }\r\n // #endregion\r\n // #region Piece Table\r\n insert(offset, value, eolNormalized = false) {\r\n this._EOLNormalized = this._EOLNormalized && eolNormalized;\r\n this._lastVisitedLine.lineNumber = 0;\r\n this._lastVisitedLine.value = '';\r\n if (this.root !== SENTINEL) {\r\n let { node, remainder, nodeStartOffset } = this.nodeAt(offset);\r\n let piece = node.piece;\r\n let bufferIndex = piece.bufferIndex;\r\n let insertPosInBuffer = this.positionInBuffer(node, remainder);\r\n if (node.piece.bufferIndex === 0 &&\r\n piece.end.line === this._lastChangeBufferPos.line &&\r\n piece.end.column === this._lastChangeBufferPos.column &&\r\n (nodeStartOffset + piece.length === offset) &&\r\n value.length < AverageBufferSize) {\r\n // changed buffer\r\n this.appendToNode(node, value);\r\n this.computeBufferMetadata();\r\n return;\r\n }\r\n if (nodeStartOffset === offset) {\r\n this.insertContentToNodeLeft(value, node);\r\n this._searchCache.validate(offset);\r\n }\r\n else if (nodeStartOffset + node.piece.length > offset) {\r\n // we are inserting into the middle of a node.\r\n let nodesToDel = [];\r\n let newRightPiece = new Piece(piece.bufferIndex, insertPosInBuffer, piece.end, this.getLineFeedCnt(piece.bufferIndex, insertPosInBuffer, piece.end), this.offsetInBuffer(bufferIndex, piece.end) - this.offsetInBuffer(bufferIndex, insertPosInBuffer));\r\n if (this.shouldCheckCRLF() && this.endWithCR(value)) {\r\n let headOfRight = this.nodeCharCodeAt(node, remainder);\r\n if (headOfRight === 10 /** \\n */) {\r\n let newStart = { line: newRightPiece.start.line + 1, column: 0 };\r\n newRightPiece = new Piece(newRightPiece.bufferIndex, newStart, newRightPiece.end, this.getLineFeedCnt(newRightPiece.bufferIndex, newStart, newRightPiece.end), newRightPiece.length - 1);\r\n value += '\\n';\r\n }\r\n }\r\n // reuse node for content before insertion point.\r\n if (this.shouldCheckCRLF() && this.startWithLF(value)) {\r\n let tailOfLeft = this.nodeCharCodeAt(node, remainder - 1);\r\n if (tailOfLeft === 13 /** \\r */) {\r\n let previousPos = this.positionInBuffer(node, remainder - 1);\r\n this.deleteNodeTail(node, previousPos);\r\n value = '\\r' + value;\r\n if (node.piece.length === 0) {\r\n nodesToDel.push(node);\r\n }\r\n }\r\n else {\r\n this.deleteNodeTail(node, insertPosInBuffer);\r\n }\r\n }\r\n else {\r\n this.deleteNodeTail(node, insertPosInBuffer);\r\n }\r\n let newPieces = this.createNewPieces(value);\r\n if (newRightPiece.length > 0) {\r\n this.rbInsertRight(node, newRightPiece);\r\n }\r\n let tmpNode = node;\r\n for (let k = 0; k < newPieces.length; k++) {\r\n tmpNode = this.rbInsertRight(tmpNode, newPieces[k]);\r\n }\r\n this.deleteNodes(nodesToDel);\r\n }\r\n else {\r\n this.insertContentToNodeRight(value, node);\r\n }\r\n }\r\n else {\r\n // insert new node\r\n let pieces = this.createNewPieces(value);\r\n let node = this.rbInsertLeft(null, pieces[0]);\r\n for (let k = 1; k < pieces.length; k++) {\r\n node = this.rbInsertRight(node, pieces[k]);\r\n }\r\n }\r\n // todo, this is too brutal. Total line feed count should be updated the same way as lf_left.\r\n this.computeBufferMetadata();\r\n }\r\n delete(offset, cnt) {\r\n this._lastVisitedLine.lineNumber = 0;\r\n this._lastVisitedLine.value = '';\r\n if (cnt <= 0 || this.root === SENTINEL) {\r\n return;\r\n }\r\n let startPosition = this.nodeAt(offset);\r\n let endPosition = this.nodeAt(offset + cnt);\r\n let startNode = startPosition.node;\r\n let endNode = endPosition.node;\r\n if (startNode === endNode) {\r\n let startSplitPosInBuffer = this.positionInBuffer(startNode, startPosition.remainder);\r\n let endSplitPosInBuffer = this.positionInBuffer(startNode, endPosition.remainder);\r\n if (startPosition.nodeStartOffset === offset) {\r\n if (cnt === startNode.piece.length) { // delete node\r\n let next = startNode.next();\r\n rbDelete(this, startNode);\r\n this.validateCRLFWithPrevNode(next);\r\n this.computeBufferMetadata();\r\n return;\r\n }\r\n this.deleteNodeHead(startNode, endSplitPosInBuffer);\r\n this._searchCache.validate(offset);\r\n this.validateCRLFWithPrevNode(startNode);\r\n this.computeBufferMetadata();\r\n return;\r\n }\r\n if (startPosition.nodeStartOffset + startNode.piece.length === offset + cnt) {\r\n this.deleteNodeTail(startNode, startSplitPosInBuffer);\r\n this.validateCRLFWithNextNode(startNode);\r\n this.computeBufferMetadata();\r\n return;\r\n }\r\n // delete content in the middle, this node will be splitted to nodes\r\n this.shrinkNode(startNode, startSplitPosInBuffer, endSplitPosInBuffer);\r\n this.computeBufferMetadata();\r\n return;\r\n }\r\n let nodesToDel = [];\r\n let startSplitPosInBuffer = this.positionInBuffer(startNode, startPosition.remainder);\r\n this.deleteNodeTail(startNode, startSplitPosInBuffer);\r\n this._searchCache.validate(offset);\r\n if (startNode.piece.length === 0) {\r\n nodesToDel.push(startNode);\r\n }\r\n // update last touched node\r\n let endSplitPosInBuffer = this.positionInBuffer(endNode, endPosition.remainder);\r\n this.deleteNodeHead(endNode, endSplitPosInBuffer);\r\n if (endNode.piece.length === 0) {\r\n nodesToDel.push(endNode);\r\n }\r\n // delete nodes in between\r\n let secondNode = startNode.next();\r\n for (let node = secondNode; node !== SENTINEL && node !== endNode; node = node.next()) {\r\n nodesToDel.push(node);\r\n }\r\n let prev = startNode.piece.length === 0 ? startNode.prev() : startNode;\r\n this.deleteNodes(nodesToDel);\r\n this.validateCRLFWithNextNode(prev);\r\n this.computeBufferMetadata();\r\n }\r\n insertContentToNodeLeft(value, node) {\r\n // we are inserting content to the beginning of node\r\n let nodesToDel = [];\r\n if (this.shouldCheckCRLF() && this.endWithCR(value) && this.startWithLF(node)) {\r\n // move `\\n` to new node.\r\n let piece = node.piece;\r\n let newStart = { line: piece.start.line + 1, column: 0 };\r\n let nPiece = new Piece(piece.bufferIndex, newStart, piece.end, this.getLineFeedCnt(piece.bufferIndex, newStart, piece.end), piece.length - 1);\r\n node.piece = nPiece;\r\n value += '\\n';\r\n updateTreeMetadata(this, node, -1, -1);\r\n if (node.piece.length === 0) {\r\n nodesToDel.push(node);\r\n }\r\n }\r\n let newPieces = this.createNewPieces(value);\r\n let newNode = this.rbInsertLeft(node, newPieces[newPieces.length - 1]);\r\n for (let k = newPieces.length - 2; k >= 0; k--) {\r\n newNode = this.rbInsertLeft(newNode, newPieces[k]);\r\n }\r\n this.validateCRLFWithPrevNode(newNode);\r\n this.deleteNodes(nodesToDel);\r\n }\r\n insertContentToNodeRight(value, node) {\r\n // we are inserting to the right of this node.\r\n if (this.adjustCarriageReturnFromNext(value, node)) {\r\n // move \\n to the new node.\r\n value += '\\n';\r\n }\r\n let newPieces = this.createNewPieces(value);\r\n let newNode = this.rbInsertRight(node, newPieces[0]);\r\n let tmpNode = newNode;\r\n for (let k = 1; k < newPieces.length; k++) {\r\n tmpNode = this.rbInsertRight(tmpNode, newPieces[k]);\r\n }\r\n this.validateCRLFWithPrevNode(newNode);\r\n }\r\n positionInBuffer(node, remainder, ret) {\r\n let piece = node.piece;\r\n let bufferIndex = node.piece.bufferIndex;\r\n let lineStarts = this._buffers[bufferIndex].lineStarts;\r\n let startOffset = lineStarts[piece.start.line] + piece.start.column;\r\n let offset = startOffset + remainder;\r\n // binary search offset between startOffset and endOffset\r\n let low = piece.start.line;\r\n let high = piece.end.line;\r\n let mid = 0;\r\n let midStop = 0;\r\n let midStart = 0;\r\n while (low <= high) {\r\n mid = low + ((high - low) / 2) | 0;\r\n midStart = lineStarts[mid];\r\n if (mid === high) {\r\n break;\r\n }\r\n midStop = lineStarts[mid + 1];\r\n if (offset < midStart) {\r\n high = mid - 1;\r\n }\r\n else if (offset >= midStop) {\r\n low = mid + 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n if (ret) {\r\n ret.line = mid;\r\n ret.column = offset - midStart;\r\n return null;\r\n }\r\n return {\r\n line: mid,\r\n column: offset - midStart\r\n };\r\n }\r\n getLineFeedCnt(bufferIndex, start, end) {\r\n // we don't need to worry about start: abc\\r|\\n, or abc|\\r, or abc|\\n, or abc|\\r\\n doesn't change the fact that, there is one line break after start.\r\n // now let's take care of end: abc\\r|\\n, if end is in between \\r and \\n, we need to add line feed count by 1\r\n if (end.column === 0) {\r\n return end.line - start.line;\r\n }\r\n let lineStarts = this._buffers[bufferIndex].lineStarts;\r\n if (end.line === lineStarts.length - 1) { // it means, there is no \\n after end, otherwise, there will be one more lineStart.\r\n return end.line - start.line;\r\n }\r\n let nextLineStartOffset = lineStarts[end.line + 1];\r\n let endOffset = lineStarts[end.line] + end.column;\r\n if (nextLineStartOffset > endOffset + 1) { // there are more than 1 character after end, which means it can't be \\n\r\n return end.line - start.line;\r\n }\r\n // endOffset + 1 === nextLineStartOffset\r\n // character at endOffset is \\n, so we check the character before first\r\n // if character at endOffset is \\r, end.column is 0 and we can't get here.\r\n let previousCharOffset = endOffset - 1; // end.column > 0 so it's okay.\r\n let buffer = this._buffers[bufferIndex].buffer;\r\n if (buffer.charCodeAt(previousCharOffset) === 13) {\r\n return end.line - start.line + 1;\r\n }\r\n else {\r\n return end.line - start.line;\r\n }\r\n }\r\n offsetInBuffer(bufferIndex, cursor) {\r\n let lineStarts = this._buffers[bufferIndex].lineStarts;\r\n return lineStarts[cursor.line] + cursor.column;\r\n }\r\n deleteNodes(nodes) {\r\n for (let i = 0; i < nodes.length; i++) {\r\n rbDelete(this, nodes[i]);\r\n }\r\n }\r\n createNewPieces(text) {\r\n if (text.length > AverageBufferSize) {\r\n // the content is large, operations like substring, charCode becomes slow\r\n // so here we split it into smaller chunks, just like what we did for CR/LF normalization\r\n let newPieces = [];\r\n while (text.length > AverageBufferSize) {\r\n const lastChar = text.charCodeAt(AverageBufferSize - 1);\r\n let splitText;\r\n if (lastChar === 13 /* CarriageReturn */ || (lastChar >= 0xD800 && lastChar <= 0xDBFF)) {\r\n // last character is \\r or a high surrogate => keep it back\r\n splitText = text.substring(0, AverageBufferSize - 1);\r\n text = text.substring(AverageBufferSize - 1);\r\n }\r\n else {\r\n splitText = text.substring(0, AverageBufferSize);\r\n text = text.substring(AverageBufferSize);\r\n }\r\n let lineStarts = createLineStartsFast(splitText);\r\n newPieces.push(new Piece(this._buffers.length, /* buffer index */ { line: 0, column: 0 }, { line: lineStarts.length - 1, column: splitText.length - lineStarts[lineStarts.length - 1] }, lineStarts.length - 1, splitText.length));\r\n this._buffers.push(new StringBuffer(splitText, lineStarts));\r\n }\r\n let lineStarts = createLineStartsFast(text);\r\n newPieces.push(new Piece(this._buffers.length, /* buffer index */ { line: 0, column: 0 }, { line: lineStarts.length - 1, column: text.length - lineStarts[lineStarts.length - 1] }, lineStarts.length - 1, text.length));\r\n this._buffers.push(new StringBuffer(text, lineStarts));\r\n return newPieces;\r\n }\r\n let startOffset = this._buffers[0].buffer.length;\r\n const lineStarts = createLineStartsFast(text, false);\r\n let start = this._lastChangeBufferPos;\r\n if (this._buffers[0].lineStarts[this._buffers[0].lineStarts.length - 1] === startOffset\r\n && startOffset !== 0\r\n && this.startWithLF(text)\r\n && this.endWithCR(this._buffers[0].buffer) // todo, we can check this._lastChangeBufferPos's column as it's the last one\r\n ) {\r\n this._lastChangeBufferPos = { line: this._lastChangeBufferPos.line, column: this._lastChangeBufferPos.column + 1 };\r\n start = this._lastChangeBufferPos;\r\n for (let i = 0; i < lineStarts.length; i++) {\r\n lineStarts[i] += startOffset + 1;\r\n }\r\n this._buffers[0].lineStarts = this._buffers[0].lineStarts.concat(lineStarts.slice(1));\r\n this._buffers[0].buffer += '_' + text;\r\n startOffset += 1;\r\n }\r\n else {\r\n if (startOffset !== 0) {\r\n for (let i = 0; i < lineStarts.length; i++) {\r\n lineStarts[i] += startOffset;\r\n }\r\n }\r\n this._buffers[0].lineStarts = this._buffers[0].lineStarts.concat(lineStarts.slice(1));\r\n this._buffers[0].buffer += text;\r\n }\r\n const endOffset = this._buffers[0].buffer.length;\r\n let endIndex = this._buffers[0].lineStarts.length - 1;\r\n let endColumn = endOffset - this._buffers[0].lineStarts[endIndex];\r\n let endPos = { line: endIndex, column: endColumn };\r\n let newPiece = new Piece(0, /** todo@peng */ start, endPos, this.getLineFeedCnt(0, start, endPos), endOffset - startOffset);\r\n this._lastChangeBufferPos = endPos;\r\n return [newPiece];\r\n }\r\n getLineRawContent(lineNumber, endOffset = 0) {\r\n let x = this.root;\r\n let ret = '';\r\n let cache = this._searchCache.get2(lineNumber);\r\n if (cache) {\r\n x = cache.node;\r\n let prevAccumulatedValue = this.getAccumulatedValue(x, lineNumber - cache.nodeStartLineNumber - 1);\r\n let buffer = this._buffers[x.piece.bufferIndex].buffer;\r\n let startOffset = this.offsetInBuffer(x.piece.bufferIndex, x.piece.start);\r\n if (cache.nodeStartLineNumber + x.piece.lineFeedCnt === lineNumber) {\r\n ret = buffer.substring(startOffset + prevAccumulatedValue, startOffset + x.piece.length);\r\n }\r\n else {\r\n let accumulatedValue = this.getAccumulatedValue(x, lineNumber - cache.nodeStartLineNumber);\r\n return buffer.substring(startOffset + prevAccumulatedValue, startOffset + accumulatedValue - endOffset);\r\n }\r\n }\r\n else {\r\n let nodeStartOffset = 0;\r\n const originalLineNumber = lineNumber;\r\n while (x !== SENTINEL) {\r\n if (x.left !== SENTINEL && x.lf_left >= lineNumber - 1) {\r\n x = x.left;\r\n }\r\n else if (x.lf_left + x.piece.lineFeedCnt > lineNumber - 1) {\r\n let prevAccumulatedValue = this.getAccumulatedValue(x, lineNumber - x.lf_left - 2);\r\n let accumulatedValue = this.getAccumulatedValue(x, lineNumber - x.lf_left - 1);\r\n let buffer = this._buffers[x.piece.bufferIndex].buffer;\r\n let startOffset = this.offsetInBuffer(x.piece.bufferIndex, x.piece.start);\r\n nodeStartOffset += x.size_left;\r\n this._searchCache.set({\r\n node: x,\r\n nodeStartOffset,\r\n nodeStartLineNumber: originalLineNumber - (lineNumber - 1 - x.lf_left)\r\n });\r\n return buffer.substring(startOffset + prevAccumulatedValue, startOffset + accumulatedValue - endOffset);\r\n }\r\n else if (x.lf_left + x.piece.lineFeedCnt === lineNumber - 1) {\r\n let prevAccumulatedValue = this.getAccumulatedValue(x, lineNumber - x.lf_left - 2);\r\n let buffer = this._buffers[x.piece.bufferIndex].buffer;\r\n let startOffset = this.offsetInBuffer(x.piece.bufferIndex, x.piece.start);\r\n ret = buffer.substring(startOffset + prevAccumulatedValue, startOffset + x.piece.length);\r\n break;\r\n }\r\n else {\r\n lineNumber -= x.lf_left + x.piece.lineFeedCnt;\r\n nodeStartOffset += x.size_left + x.piece.length;\r\n x = x.right;\r\n }\r\n }\r\n }\r\n // search in order, to find the node contains end column\r\n x = x.next();\r\n while (x !== SENTINEL) {\r\n let buffer = this._buffers[x.piece.bufferIndex].buffer;\r\n if (x.piece.lineFeedCnt > 0) {\r\n let accumulatedValue = this.getAccumulatedValue(x, 0);\r\n let startOffset = this.offsetInBuffer(x.piece.bufferIndex, x.piece.start);\r\n ret += buffer.substring(startOffset, startOffset + accumulatedValue - endOffset);\r\n return ret;\r\n }\r\n else {\r\n let startOffset = this.offsetInBuffer(x.piece.bufferIndex, x.piece.start);\r\n ret += buffer.substr(startOffset, x.piece.length);\r\n }\r\n x = x.next();\r\n }\r\n return ret;\r\n }\r\n computeBufferMetadata() {\r\n let x = this.root;\r\n let lfCnt = 1;\r\n let len = 0;\r\n while (x !== SENTINEL) {\r\n lfCnt += x.lf_left + x.piece.lineFeedCnt;\r\n len += x.size_left + x.piece.length;\r\n x = x.right;\r\n }\r\n this._lineCnt = lfCnt;\r\n this._length = len;\r\n this._searchCache.validate(this._length);\r\n }\r\n // #region node operations\r\n getIndexOf(node, accumulatedValue) {\r\n let piece = node.piece;\r\n let pos = this.positionInBuffer(node, accumulatedValue);\r\n let lineCnt = pos.line - piece.start.line;\r\n if (this.offsetInBuffer(piece.bufferIndex, piece.end) - this.offsetInBuffer(piece.bufferIndex, piece.start) === accumulatedValue) {\r\n // we are checking the end of this node, so a CRLF check is necessary.\r\n let realLineCnt = this.getLineFeedCnt(node.piece.bufferIndex, piece.start, pos);\r\n if (realLineCnt !== lineCnt) {\r\n // aha yes, CRLF\r\n return { index: realLineCnt, remainder: 0 };\r\n }\r\n }\r\n return { index: lineCnt, remainder: pos.column };\r\n }\r\n getAccumulatedValue(node, index) {\r\n if (index < 0) {\r\n return 0;\r\n }\r\n let piece = node.piece;\r\n let lineStarts = this._buffers[piece.bufferIndex].lineStarts;\r\n let expectedLineStartIndex = piece.start.line + index + 1;\r\n if (expectedLineStartIndex > piece.end.line) {\r\n return lineStarts[piece.end.line] + piece.end.column - lineStarts[piece.start.line] - piece.start.column;\r\n }\r\n else {\r\n return lineStarts[expectedLineStartIndex] - lineStarts[piece.start.line] - piece.start.column;\r\n }\r\n }\r\n deleteNodeTail(node, pos) {\r\n const piece = node.piece;\r\n const originalLFCnt = piece.lineFeedCnt;\r\n const originalEndOffset = this.offsetInBuffer(piece.bufferIndex, piece.end);\r\n const newEnd = pos;\r\n const newEndOffset = this.offsetInBuffer(piece.bufferIndex, newEnd);\r\n const newLineFeedCnt = this.getLineFeedCnt(piece.bufferIndex, piece.start, newEnd);\r\n const lf_delta = newLineFeedCnt - originalLFCnt;\r\n const size_delta = newEndOffset - originalEndOffset;\r\n const newLength = piece.length + size_delta;\r\n node.piece = new Piece(piece.bufferIndex, piece.start, newEnd, newLineFeedCnt, newLength);\r\n updateTreeMetadata(this, node, size_delta, lf_delta);\r\n }\r\n deleteNodeHead(node, pos) {\r\n const piece = node.piece;\r\n const originalLFCnt = piece.lineFeedCnt;\r\n const originalStartOffset = this.offsetInBuffer(piece.bufferIndex, piece.start);\r\n const newStart = pos;\r\n const newLineFeedCnt = this.getLineFeedCnt(piece.bufferIndex, newStart, piece.end);\r\n const newStartOffset = this.offsetInBuffer(piece.bufferIndex, newStart);\r\n const lf_delta = newLineFeedCnt - originalLFCnt;\r\n const size_delta = originalStartOffset - newStartOffset;\r\n const newLength = piece.length + size_delta;\r\n node.piece = new Piece(piece.bufferIndex, newStart, piece.end, newLineFeedCnt, newLength);\r\n updateTreeMetadata(this, node, size_delta, lf_delta);\r\n }\r\n shrinkNode(node, start, end) {\r\n const piece = node.piece;\r\n const originalStartPos = piece.start;\r\n const originalEndPos = piece.end;\r\n // old piece, originalStartPos, start\r\n const oldLength = piece.length;\r\n const oldLFCnt = piece.lineFeedCnt;\r\n const newEnd = start;\r\n const newLineFeedCnt = this.getLineFeedCnt(piece.bufferIndex, piece.start, newEnd);\r\n const newLength = this.offsetInBuffer(piece.bufferIndex, start) - this.offsetInBuffer(piece.bufferIndex, originalStartPos);\r\n node.piece = new Piece(piece.bufferIndex, piece.start, newEnd, newLineFeedCnt, newLength);\r\n updateTreeMetadata(this, node, newLength - oldLength, newLineFeedCnt - oldLFCnt);\r\n // new right piece, end, originalEndPos\r\n let newPiece = new Piece(piece.bufferIndex, end, originalEndPos, this.getLineFeedCnt(piece.bufferIndex, end, originalEndPos), this.offsetInBuffer(piece.bufferIndex, originalEndPos) - this.offsetInBuffer(piece.bufferIndex, end));\r\n let newNode = this.rbInsertRight(node, newPiece);\r\n this.validateCRLFWithPrevNode(newNode);\r\n }\r\n appendToNode(node, value) {\r\n if (this.adjustCarriageReturnFromNext(value, node)) {\r\n value += '\\n';\r\n }\r\n const hitCRLF = this.shouldCheckCRLF() && this.startWithLF(value) && this.endWithCR(node);\r\n const startOffset = this._buffers[0].buffer.length;\r\n this._buffers[0].buffer += value;\r\n const lineStarts = createLineStartsFast(value, false);\r\n for (let i = 0; i < lineStarts.length; i++) {\r\n lineStarts[i] += startOffset;\r\n }\r\n if (hitCRLF) {\r\n let prevStartOffset = this._buffers[0].lineStarts[this._buffers[0].lineStarts.length - 2];\r\n this._buffers[0].lineStarts.pop();\r\n // _lastChangeBufferPos is already wrong\r\n this._lastChangeBufferPos = { line: this._lastChangeBufferPos.line - 1, column: startOffset - prevStartOffset };\r\n }\r\n this._buffers[0].lineStarts = this._buffers[0].lineStarts.concat(lineStarts.slice(1));\r\n const endIndex = this._buffers[0].lineStarts.length - 1;\r\n const endColumn = this._buffers[0].buffer.length - this._buffers[0].lineStarts[endIndex];\r\n const newEnd = { line: endIndex, column: endColumn };\r\n const newLength = node.piece.length + value.length;\r\n const oldLineFeedCnt = node.piece.lineFeedCnt;\r\n const newLineFeedCnt = this.getLineFeedCnt(0, node.piece.start, newEnd);\r\n const lf_delta = newLineFeedCnt - oldLineFeedCnt;\r\n node.piece = new Piece(node.piece.bufferIndex, node.piece.start, newEnd, newLineFeedCnt, newLength);\r\n this._lastChangeBufferPos = newEnd;\r\n updateTreeMetadata(this, node, value.length, lf_delta);\r\n }\r\n nodeAt(offset) {\r\n let x = this.root;\r\n let cache = this._searchCache.get(offset);\r\n if (cache) {\r\n return {\r\n node: cache.node,\r\n nodeStartOffset: cache.nodeStartOffset,\r\n remainder: offset - cache.nodeStartOffset\r\n };\r\n }\r\n let nodeStartOffset = 0;\r\n while (x !== SENTINEL) {\r\n if (x.size_left > offset) {\r\n x = x.left;\r\n }\r\n else if (x.size_left + x.piece.length >= offset) {\r\n nodeStartOffset += x.size_left;\r\n let ret = {\r\n node: x,\r\n remainder: offset - x.size_left,\r\n nodeStartOffset\r\n };\r\n this._searchCache.set(ret);\r\n return ret;\r\n }\r\n else {\r\n offset -= x.size_left + x.piece.length;\r\n nodeStartOffset += x.size_left + x.piece.length;\r\n x = x.right;\r\n }\r\n }\r\n return null;\r\n }\r\n nodeAt2(lineNumber, column) {\r\n let x = this.root;\r\n let nodeStartOffset = 0;\r\n while (x !== SENTINEL) {\r\n if (x.left !== SENTINEL && x.lf_left >= lineNumber - 1) {\r\n x = x.left;\r\n }\r\n else if (x.lf_left + x.piece.lineFeedCnt > lineNumber - 1) {\r\n let prevAccumualtedValue = this.getAccumulatedValue(x, lineNumber - x.lf_left - 2);\r\n let accumulatedValue = this.getAccumulatedValue(x, lineNumber - x.lf_left - 1);\r\n nodeStartOffset += x.size_left;\r\n return {\r\n node: x,\r\n remainder: Math.min(prevAccumualtedValue + column - 1, accumulatedValue),\r\n nodeStartOffset\r\n };\r\n }\r\n else if (x.lf_left + x.piece.lineFeedCnt === lineNumber - 1) {\r\n let prevAccumualtedValue = this.getAccumulatedValue(x, lineNumber - x.lf_left - 2);\r\n if (prevAccumualtedValue + column - 1 <= x.piece.length) {\r\n return {\r\n node: x,\r\n remainder: prevAccumualtedValue + column - 1,\r\n nodeStartOffset\r\n };\r\n }\r\n else {\r\n column -= x.piece.length - prevAccumualtedValue;\r\n break;\r\n }\r\n }\r\n else {\r\n lineNumber -= x.lf_left + x.piece.lineFeedCnt;\r\n nodeStartOffset += x.size_left + x.piece.length;\r\n x = x.right;\r\n }\r\n }\r\n // search in order, to find the node contains position.column\r\n x = x.next();\r\n while (x !== SENTINEL) {\r\n if (x.piece.lineFeedCnt > 0) {\r\n let accumulatedValue = this.getAccumulatedValue(x, 0);\r\n let nodeStartOffset = this.offsetOfNode(x);\r\n return {\r\n node: x,\r\n remainder: Math.min(column - 1, accumulatedValue),\r\n nodeStartOffset\r\n };\r\n }\r\n else {\r\n if (x.piece.length >= column - 1) {\r\n let nodeStartOffset = this.offsetOfNode(x);\r\n return {\r\n node: x,\r\n remainder: column - 1,\r\n nodeStartOffset\r\n };\r\n }\r\n else {\r\n column -= x.piece.length;\r\n }\r\n }\r\n x = x.next();\r\n }\r\n return null;\r\n }\r\n nodeCharCodeAt(node, offset) {\r\n if (node.piece.lineFeedCnt < 1) {\r\n return -1;\r\n }\r\n let buffer = this._buffers[node.piece.bufferIndex];\r\n let newOffset = this.offsetInBuffer(node.piece.bufferIndex, node.piece.start) + offset;\r\n return buffer.buffer.charCodeAt(newOffset);\r\n }\r\n offsetOfNode(node) {\r\n if (!node) {\r\n return 0;\r\n }\r\n let pos = node.size_left;\r\n while (node !== this.root) {\r\n if (node.parent.right === node) {\r\n pos += node.parent.size_left + node.parent.piece.length;\r\n }\r\n node = node.parent;\r\n }\r\n return pos;\r\n }\r\n // #endregion\r\n // #region CRLF\r\n shouldCheckCRLF() {\r\n return !(this._EOLNormalized && this._EOL === '\\n');\r\n }\r\n startWithLF(val) {\r\n if (typeof val === 'string') {\r\n return val.charCodeAt(0) === 10;\r\n }\r\n if (val === SENTINEL || val.piece.lineFeedCnt === 0) {\r\n return false;\r\n }\r\n let piece = val.piece;\r\n let lineStarts = this._buffers[piece.bufferIndex].lineStarts;\r\n let line = piece.start.line;\r\n let startOffset = lineStarts[line] + piece.start.column;\r\n if (line === lineStarts.length - 1) {\r\n // last line, so there is no line feed at the end of this line\r\n return false;\r\n }\r\n let nextLineOffset = lineStarts[line + 1];\r\n if (nextLineOffset > startOffset + 1) {\r\n return false;\r\n }\r\n return this._buffers[piece.bufferIndex].buffer.charCodeAt(startOffset) === 10;\r\n }\r\n endWithCR(val) {\r\n if (typeof val === 'string') {\r\n return val.charCodeAt(val.length - 1) === 13;\r\n }\r\n if (val === SENTINEL || val.piece.lineFeedCnt === 0) {\r\n return false;\r\n }\r\n return this.nodeCharCodeAt(val, val.piece.length - 1) === 13;\r\n }\r\n validateCRLFWithPrevNode(nextNode) {\r\n if (this.shouldCheckCRLF() && this.startWithLF(nextNode)) {\r\n let node = nextNode.prev();\r\n if (this.endWithCR(node)) {\r\n this.fixCRLF(node, nextNode);\r\n }\r\n }\r\n }\r\n validateCRLFWithNextNode(node) {\r\n if (this.shouldCheckCRLF() && this.endWithCR(node)) {\r\n let nextNode = node.next();\r\n if (this.startWithLF(nextNode)) {\r\n this.fixCRLF(node, nextNode);\r\n }\r\n }\r\n }\r\n fixCRLF(prev, next) {\r\n let nodesToDel = [];\r\n // update node\r\n let lineStarts = this._buffers[prev.piece.bufferIndex].lineStarts;\r\n let newEnd;\r\n if (prev.piece.end.column === 0) {\r\n // it means, last line ends with \\r, not \\r\\n\r\n newEnd = { line: prev.piece.end.line - 1, column: lineStarts[prev.piece.end.line] - lineStarts[prev.piece.end.line - 1] - 1 };\r\n }\r\n else {\r\n // \\r\\n\r\n newEnd = { line: prev.piece.end.line, column: prev.piece.end.column - 1 };\r\n }\r\n const prevNewLength = prev.piece.length - 1;\r\n const prevNewLFCnt = prev.piece.lineFeedCnt - 1;\r\n prev.piece = new Piece(prev.piece.bufferIndex, prev.piece.start, newEnd, prevNewLFCnt, prevNewLength);\r\n updateTreeMetadata(this, prev, -1, -1);\r\n if (prev.piece.length === 0) {\r\n nodesToDel.push(prev);\r\n }\r\n // update nextNode\r\n let newStart = { line: next.piece.start.line + 1, column: 0 };\r\n const newLength = next.piece.length - 1;\r\n const newLineFeedCnt = this.getLineFeedCnt(next.piece.bufferIndex, newStart, next.piece.end);\r\n next.piece = new Piece(next.piece.bufferIndex, newStart, next.piece.end, newLineFeedCnt, newLength);\r\n updateTreeMetadata(this, next, -1, -1);\r\n if (next.piece.length === 0) {\r\n nodesToDel.push(next);\r\n }\r\n // create new piece which contains \\r\\n\r\n let pieces = this.createNewPieces('\\r\\n');\r\n this.rbInsertRight(prev, pieces[0]);\r\n // delete empty nodes\r\n for (let i = 0; i < nodesToDel.length; i++) {\r\n rbDelete(this, nodesToDel[i]);\r\n }\r\n }\r\n adjustCarriageReturnFromNext(value, node) {\r\n if (this.shouldCheckCRLF() && this.endWithCR(value)) {\r\n let nextNode = node.next();\r\n if (this.startWithLF(nextNode)) {\r\n // move `\\n` forward\r\n value += '\\n';\r\n if (nextNode.piece.length === 1) {\r\n rbDelete(this, nextNode);\r\n }\r\n else {\r\n const piece = nextNode.piece;\r\n const newStart = { line: piece.start.line + 1, column: 0 };\r\n const newLength = piece.length - 1;\r\n const newLineFeedCnt = this.getLineFeedCnt(piece.bufferIndex, newStart, piece.end);\r\n nextNode.piece = new Piece(piece.bufferIndex, newStart, piece.end, newLineFeedCnt, newLength);\r\n updateTreeMetadata(this, nextNode, -1, -1);\r\n }\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n // #endregion\r\n // #endregion\r\n // #region Tree operations\r\n iterate(node, callback) {\r\n if (node === SENTINEL) {\r\n return callback(SENTINEL);\r\n }\r\n let leftRet = this.iterate(node.left, callback);\r\n if (!leftRet) {\r\n return leftRet;\r\n }\r\n return callback(node) && this.iterate(node.right, callback);\r\n }\r\n getNodeContent(node) {\r\n if (node === SENTINEL) {\r\n return '';\r\n }\r\n let buffer = this._buffers[node.piece.bufferIndex];\r\n let currentContent;\r\n let piece = node.piece;\r\n let startOffset = this.offsetInBuffer(piece.bufferIndex, piece.start);\r\n let endOffset = this.offsetInBuffer(piece.bufferIndex, piece.end);\r\n currentContent = buffer.buffer.substring(startOffset, endOffset);\r\n return currentContent;\r\n }\r\n getPieceContent(piece) {\r\n let buffer = this._buffers[piece.bufferIndex];\r\n let startOffset = this.offsetInBuffer(piece.bufferIndex, piece.start);\r\n let endOffset = this.offsetInBuffer(piece.bufferIndex, piece.end);\r\n let currentContent = buffer.buffer.substring(startOffset, endOffset);\r\n return currentContent;\r\n }\r\n /**\r\n * node node\r\n * / \\ / \\\r\n * a b <---- a b\r\n * /\r\n * z\r\n */\r\n rbInsertRight(node, p) {\r\n let z = new TreeNode(p, 1 /* Red */);\r\n z.left = SENTINEL;\r\n z.right = SENTINEL;\r\n z.parent = SENTINEL;\r\n z.size_left = 0;\r\n z.lf_left = 0;\r\n let x = this.root;\r\n if (x === SENTINEL) {\r\n this.root = z;\r\n z.color = 0 /* Black */;\r\n }\r\n else if (node.right === SENTINEL) {\r\n node.right = z;\r\n z.parent = node;\r\n }\r\n else {\r\n let nextNode = leftest(node.right);\r\n nextNode.left = z;\r\n z.parent = nextNode;\r\n }\r\n fixInsert(this, z);\r\n return z;\r\n }\r\n /**\r\n * node node\r\n * / \\ / \\\r\n * a b ----> a b\r\n * \\\r\n * z\r\n */\r\n rbInsertLeft(node, p) {\r\n let z = new TreeNode(p, 1 /* Red */);\r\n z.left = SENTINEL;\r\n z.right = SENTINEL;\r\n z.parent = SENTINEL;\r\n z.size_left = 0;\r\n z.lf_left = 0;\r\n if (this.root === SENTINEL) {\r\n this.root = z;\r\n z.color = 0 /* Black */;\r\n }\r\n else if (node.left === SENTINEL) {\r\n node.left = z;\r\n z.parent = node;\r\n }\r\n else {\r\n let prevNode = righttest(node.left); // a\r\n prevNode.right = z;\r\n z.parent = prevNode;\r\n }\r\n fixInsert(this, z);\r\n return z;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as arrays from '../../../base/common/arrays.js';\r\nimport { LineTokens } from '../core/lineTokens.js';\r\nimport { Position } from '../core/position.js';\r\nimport { Range } from '../core/range.js';\r\nimport { TokenMetadata } from '../modes.js';\r\nexport function countEOL(text) {\r\n let eolCount = 0;\r\n let firstLineLength = 0;\r\n let lastLineStart = 0;\r\n let eol = 0 /* Unknown */;\r\n for (let i = 0, len = text.length; i < len; i++) {\r\n const chr = text.charCodeAt(i);\r\n if (chr === 13 /* CarriageReturn */) {\r\n if (eolCount === 0) {\r\n firstLineLength = i;\r\n }\r\n eolCount++;\r\n if (i + 1 < len && text.charCodeAt(i + 1) === 10 /* LineFeed */) {\r\n // \\r\\n... case\r\n eol |= 2 /* CRLF */;\r\n i++; // skip \\n\r\n }\r\n else {\r\n // \\r... case\r\n eol |= 3 /* Invalid */;\r\n }\r\n lastLineStart = i + 1;\r\n }\r\n else if (chr === 10 /* LineFeed */) {\r\n // \\n... case\r\n eol |= 1 /* LF */;\r\n if (eolCount === 0) {\r\n firstLineLength = i;\r\n }\r\n eolCount++;\r\n lastLineStart = i + 1;\r\n }\r\n }\r\n if (eolCount === 0) {\r\n firstLineLength = text.length;\r\n }\r\n return [eolCount, firstLineLength, text.length - lastLineStart, eol];\r\n}\r\nfunction getDefaultMetadata(topLevelLanguageId) {\r\n return ((topLevelLanguageId << 0 /* LANGUAGEID_OFFSET */)\r\n | (0 /* Other */ << 8 /* TOKEN_TYPE_OFFSET */)\r\n | (0 /* None */ << 11 /* FONT_STYLE_OFFSET */)\r\n | (1 /* DefaultForeground */ << 14 /* FOREGROUND_OFFSET */)\r\n | (2 /* DefaultBackground */ << 23 /* BACKGROUND_OFFSET */)) >>> 0;\r\n}\r\nconst EMPTY_LINE_TOKENS = (new Uint32Array(0)).buffer;\r\nexport class MultilineTokensBuilder {\r\n constructor() {\r\n this.tokens = [];\r\n }\r\n add(lineNumber, lineTokens) {\r\n if (this.tokens.length > 0) {\r\n const last = this.tokens[this.tokens.length - 1];\r\n const lastLineNumber = last.startLineNumber + last.tokens.length - 1;\r\n if (lastLineNumber + 1 === lineNumber) {\r\n // append\r\n last.tokens.push(lineTokens);\r\n return;\r\n }\r\n }\r\n this.tokens.push(new MultilineTokens(lineNumber, [lineTokens]));\r\n }\r\n}\r\nexport class SparseEncodedTokens {\r\n constructor(tokens) {\r\n this._tokens = tokens;\r\n this._tokenCount = tokens.length / 4;\r\n }\r\n toString(startLineNumber) {\r\n let pieces = [];\r\n for (let i = 0; i < this._tokenCount; i++) {\r\n pieces.push(`(${this._getDeltaLine(i) + startLineNumber},${this._getStartCharacter(i)}-${this._getEndCharacter(i)})`);\r\n }\r\n return `[${pieces.join(',')}]`;\r\n }\r\n getMaxDeltaLine() {\r\n const tokenCount = this._getTokenCount();\r\n if (tokenCount === 0) {\r\n return -1;\r\n }\r\n return this._getDeltaLine(tokenCount - 1);\r\n }\r\n getRange() {\r\n const tokenCount = this._getTokenCount();\r\n if (tokenCount === 0) {\r\n return null;\r\n }\r\n const startChar = this._getStartCharacter(0);\r\n const maxDeltaLine = this._getDeltaLine(tokenCount - 1);\r\n const endChar = this._getEndCharacter(tokenCount - 1);\r\n return new Range(0, startChar + 1, maxDeltaLine, endChar + 1);\r\n }\r\n _getTokenCount() {\r\n return this._tokenCount;\r\n }\r\n _getDeltaLine(tokenIndex) {\r\n return this._tokens[4 * tokenIndex];\r\n }\r\n _getStartCharacter(tokenIndex) {\r\n return this._tokens[4 * tokenIndex + 1];\r\n }\r\n _getEndCharacter(tokenIndex) {\r\n return this._tokens[4 * tokenIndex + 2];\r\n }\r\n isEmpty() {\r\n return (this._getTokenCount() === 0);\r\n }\r\n getLineTokens(deltaLine) {\r\n let low = 0;\r\n let high = this._getTokenCount() - 1;\r\n while (low < high) {\r\n const mid = low + Math.floor((high - low) / 2);\r\n const midDeltaLine = this._getDeltaLine(mid);\r\n if (midDeltaLine < deltaLine) {\r\n low = mid + 1;\r\n }\r\n else if (midDeltaLine > deltaLine) {\r\n high = mid - 1;\r\n }\r\n else {\r\n let min = mid;\r\n while (min > low && this._getDeltaLine(min - 1) === deltaLine) {\r\n min--;\r\n }\r\n let max = mid;\r\n while (max < high && this._getDeltaLine(max + 1) === deltaLine) {\r\n max++;\r\n }\r\n return new LineTokens2(this._tokens.subarray(4 * min, 4 * max + 4));\r\n }\r\n }\r\n if (this._getDeltaLine(low) === deltaLine) {\r\n return new LineTokens2(this._tokens.subarray(4 * low, 4 * low + 4));\r\n }\r\n return null;\r\n }\r\n clear() {\r\n this._tokenCount = 0;\r\n }\r\n removeTokens(startDeltaLine, startChar, endDeltaLine, endChar) {\r\n const tokens = this._tokens;\r\n const tokenCount = this._tokenCount;\r\n let newTokenCount = 0;\r\n let hasDeletedTokens = false;\r\n let firstDeltaLine = 0;\r\n for (let i = 0; i < tokenCount; i++) {\r\n const srcOffset = 4 * i;\r\n const tokenDeltaLine = tokens[srcOffset];\r\n const tokenStartCharacter = tokens[srcOffset + 1];\r\n const tokenEndCharacter = tokens[srcOffset + 2];\r\n const tokenMetadata = tokens[srcOffset + 3];\r\n if ((tokenDeltaLine > startDeltaLine || (tokenDeltaLine === startDeltaLine && tokenEndCharacter >= startChar))\r\n && (tokenDeltaLine < endDeltaLine || (tokenDeltaLine === endDeltaLine && tokenStartCharacter <= endChar))) {\r\n hasDeletedTokens = true;\r\n }\r\n else {\r\n if (newTokenCount === 0) {\r\n firstDeltaLine = tokenDeltaLine;\r\n }\r\n if (hasDeletedTokens) {\r\n // must move the token to the left\r\n const destOffset = 4 * newTokenCount;\r\n tokens[destOffset] = tokenDeltaLine - firstDeltaLine;\r\n tokens[destOffset + 1] = tokenStartCharacter;\r\n tokens[destOffset + 2] = tokenEndCharacter;\r\n tokens[destOffset + 3] = tokenMetadata;\r\n }\r\n newTokenCount++;\r\n }\r\n }\r\n this._tokenCount = newTokenCount;\r\n return firstDeltaLine;\r\n }\r\n split(startDeltaLine, startChar, endDeltaLine, endChar) {\r\n const tokens = this._tokens;\r\n const tokenCount = this._tokenCount;\r\n let aTokens = [];\r\n let bTokens = [];\r\n let destTokens = aTokens;\r\n let destOffset = 0;\r\n let destFirstDeltaLine = 0;\r\n for (let i = 0; i < tokenCount; i++) {\r\n const srcOffset = 4 * i;\r\n const tokenDeltaLine = tokens[srcOffset];\r\n const tokenStartCharacter = tokens[srcOffset + 1];\r\n const tokenEndCharacter = tokens[srcOffset + 2];\r\n const tokenMetadata = tokens[srcOffset + 3];\r\n if ((tokenDeltaLine > startDeltaLine || (tokenDeltaLine === startDeltaLine && tokenEndCharacter >= startChar))) {\r\n if ((tokenDeltaLine < endDeltaLine || (tokenDeltaLine === endDeltaLine && tokenStartCharacter <= endChar))) {\r\n // this token is touching the range\r\n continue;\r\n }\r\n else {\r\n // this token is after the range\r\n if (destTokens !== bTokens) {\r\n // this token is the first token after the range\r\n destTokens = bTokens;\r\n destOffset = 0;\r\n destFirstDeltaLine = tokenDeltaLine;\r\n }\r\n }\r\n }\r\n destTokens[destOffset++] = tokenDeltaLine - destFirstDeltaLine;\r\n destTokens[destOffset++] = tokenStartCharacter;\r\n destTokens[destOffset++] = tokenEndCharacter;\r\n destTokens[destOffset++] = tokenMetadata;\r\n }\r\n return [new SparseEncodedTokens(new Uint32Array(aTokens)), new SparseEncodedTokens(new Uint32Array(bTokens)), destFirstDeltaLine];\r\n }\r\n acceptDeleteRange(horizontalShiftForFirstLineTokens, startDeltaLine, startCharacter, endDeltaLine, endCharacter) {\r\n // This is a bit complex, here are the cases I used to think about this:\r\n //\r\n // 1. The token starts before the deletion range\r\n // 1a. The token is completely before the deletion range\r\n // -----------\r\n // xxxxxxxxxxx\r\n // 1b. The token starts before, the deletion range ends after the token\r\n // -----------\r\n // xxxxxxxxxxx\r\n // 1c. The token starts before, the deletion range ends precisely with the token\r\n // ---------------\r\n // xxxxxxxx\r\n // 1d. The token starts before, the deletion range is inside the token\r\n // ---------------\r\n // xxxxx\r\n //\r\n // 2. The token starts at the same position with the deletion range\r\n // 2a. The token starts at the same position, and ends inside the deletion range\r\n // -------\r\n // xxxxxxxxxxx\r\n // 2b. The token starts at the same position, and ends at the same position as the deletion range\r\n // ----------\r\n // xxxxxxxxxx\r\n // 2c. The token starts at the same position, and ends after the deletion range\r\n // -------------\r\n // xxxxxxx\r\n //\r\n // 3. The token starts inside the deletion range\r\n // 3a. The token is inside the deletion range\r\n // -------\r\n // xxxxxxxxxxxxx\r\n // 3b. The token starts inside the deletion range, and ends at the same position as the deletion range\r\n // ----------\r\n // xxxxxxxxxxxxx\r\n // 3c. The token starts inside the deletion range, and ends after the deletion range\r\n // ------------\r\n // xxxxxxxxxxx\r\n //\r\n // 4. The token starts after the deletion range\r\n // -----------\r\n // xxxxxxxx\r\n //\r\n const tokens = this._tokens;\r\n const tokenCount = this._tokenCount;\r\n const deletedLineCount = (endDeltaLine - startDeltaLine);\r\n let newTokenCount = 0;\r\n let hasDeletedTokens = false;\r\n for (let i = 0; i < tokenCount; i++) {\r\n const srcOffset = 4 * i;\r\n let tokenDeltaLine = tokens[srcOffset];\r\n let tokenStartCharacter = tokens[srcOffset + 1];\r\n let tokenEndCharacter = tokens[srcOffset + 2];\r\n const tokenMetadata = tokens[srcOffset + 3];\r\n if (tokenDeltaLine < startDeltaLine || (tokenDeltaLine === startDeltaLine && tokenEndCharacter <= startCharacter)) {\r\n // 1a. The token is completely before the deletion range\r\n // => nothing to do\r\n newTokenCount++;\r\n continue;\r\n }\r\n else if (tokenDeltaLine === startDeltaLine && tokenStartCharacter < startCharacter) {\r\n // 1b, 1c, 1d\r\n // => the token survives, but it needs to shrink\r\n if (tokenDeltaLine === endDeltaLine && tokenEndCharacter > endCharacter) {\r\n // 1d. The token starts before, the deletion range is inside the token\r\n // => the token shrinks by the deletion character count\r\n tokenEndCharacter -= (endCharacter - startCharacter);\r\n }\r\n else {\r\n // 1b. The token starts before, the deletion range ends after the token\r\n // 1c. The token starts before, the deletion range ends precisely with the token\r\n // => the token shrinks its ending to the deletion start\r\n tokenEndCharacter = startCharacter;\r\n }\r\n }\r\n else if (tokenDeltaLine === startDeltaLine && tokenStartCharacter === startCharacter) {\r\n // 2a, 2b, 2c\r\n if (tokenDeltaLine === endDeltaLine && tokenEndCharacter > endCharacter) {\r\n // 2c. The token starts at the same position, and ends after the deletion range\r\n // => the token shrinks by the deletion character count\r\n tokenEndCharacter -= (endCharacter - startCharacter);\r\n }\r\n else {\r\n // 2a. The token starts at the same position, and ends inside the deletion range\r\n // 2b. The token starts at the same position, and ends at the same position as the deletion range\r\n // => the token is deleted\r\n hasDeletedTokens = true;\r\n continue;\r\n }\r\n }\r\n else if (tokenDeltaLine < endDeltaLine || (tokenDeltaLine === endDeltaLine && tokenStartCharacter < endCharacter)) {\r\n // 3a, 3b, 3c\r\n if (tokenDeltaLine === endDeltaLine && tokenEndCharacter > endCharacter) {\r\n // 3c. The token starts inside the deletion range, and ends after the deletion range\r\n // => the token moves left and shrinks\r\n if (tokenDeltaLine === startDeltaLine) {\r\n // the deletion started on the same line as the token\r\n // => the token moves left and shrinks\r\n tokenStartCharacter = startCharacter;\r\n tokenEndCharacter = tokenStartCharacter + (tokenEndCharacter - endCharacter);\r\n }\r\n else {\r\n // the deletion started on a line above the token\r\n // => the token moves to the beginning of the line\r\n tokenStartCharacter = 0;\r\n tokenEndCharacter = tokenStartCharacter + (tokenEndCharacter - endCharacter);\r\n }\r\n }\r\n else {\r\n // 3a. The token is inside the deletion range\r\n // 3b. The token starts inside the deletion range, and ends at the same position as the deletion range\r\n // => the token is deleted\r\n hasDeletedTokens = true;\r\n continue;\r\n }\r\n }\r\n else if (tokenDeltaLine > endDeltaLine) {\r\n // 4. (partial) The token starts after the deletion range, on a line below...\r\n if (deletedLineCount === 0 && !hasDeletedTokens) {\r\n // early stop, there is no need to walk all the tokens and do nothing...\r\n newTokenCount = tokenCount;\r\n break;\r\n }\r\n tokenDeltaLine -= deletedLineCount;\r\n }\r\n else if (tokenDeltaLine === endDeltaLine && tokenStartCharacter >= endCharacter) {\r\n // 4. (continued) The token starts after the deletion range, on the last line where a deletion occurs\r\n if (horizontalShiftForFirstLineTokens && tokenDeltaLine === 0) {\r\n tokenStartCharacter += horizontalShiftForFirstLineTokens;\r\n tokenEndCharacter += horizontalShiftForFirstLineTokens;\r\n }\r\n tokenDeltaLine -= deletedLineCount;\r\n tokenStartCharacter -= (endCharacter - startCharacter);\r\n tokenEndCharacter -= (endCharacter - startCharacter);\r\n }\r\n else {\r\n throw new Error(`Not possible!`);\r\n }\r\n const destOffset = 4 * newTokenCount;\r\n tokens[destOffset] = tokenDeltaLine;\r\n tokens[destOffset + 1] = tokenStartCharacter;\r\n tokens[destOffset + 2] = tokenEndCharacter;\r\n tokens[destOffset + 3] = tokenMetadata;\r\n newTokenCount++;\r\n }\r\n this._tokenCount = newTokenCount;\r\n }\r\n acceptInsertText(deltaLine, character, eolCount, firstLineLength, lastLineLength, firstCharCode) {\r\n // Here are the cases I used to think about this:\r\n //\r\n // 1. The token is completely before the insertion point\r\n // ----------- |\r\n // 2. The token ends precisely at the insertion point\r\n // -----------|\r\n // 3. The token contains the insertion point\r\n // -----|------\r\n // 4. The token starts precisely at the insertion point\r\n // |-----------\r\n // 5. The token is completely after the insertion point\r\n // | -----------\r\n //\r\n const isInsertingPreciselyOneWordCharacter = (eolCount === 0\r\n && firstLineLength === 1\r\n && ((firstCharCode >= 48 /* Digit0 */ && firstCharCode <= 57 /* Digit9 */)\r\n || (firstCharCode >= 65 /* A */ && firstCharCode <= 90 /* Z */)\r\n || (firstCharCode >= 97 /* a */ && firstCharCode <= 122 /* z */)));\r\n const tokens = this._tokens;\r\n const tokenCount = this._tokenCount;\r\n for (let i = 0; i < tokenCount; i++) {\r\n const offset = 4 * i;\r\n let tokenDeltaLine = tokens[offset];\r\n let tokenStartCharacter = tokens[offset + 1];\r\n let tokenEndCharacter = tokens[offset + 2];\r\n if (tokenDeltaLine < deltaLine || (tokenDeltaLine === deltaLine && tokenEndCharacter < character)) {\r\n // 1. The token is completely before the insertion point\r\n // => nothing to do\r\n continue;\r\n }\r\n else if (tokenDeltaLine === deltaLine && tokenEndCharacter === character) {\r\n // 2. The token ends precisely at the insertion point\r\n // => expand the end character only if inserting precisely one character that is a word character\r\n if (isInsertingPreciselyOneWordCharacter) {\r\n tokenEndCharacter += 1;\r\n }\r\n else {\r\n continue;\r\n }\r\n }\r\n else if (tokenDeltaLine === deltaLine && tokenStartCharacter < character && character < tokenEndCharacter) {\r\n // 3. The token contains the insertion point\r\n if (eolCount === 0) {\r\n // => just expand the end character\r\n tokenEndCharacter += firstLineLength;\r\n }\r\n else {\r\n // => cut off the token\r\n tokenEndCharacter = character;\r\n }\r\n }\r\n else {\r\n // 4. or 5.\r\n if (tokenDeltaLine === deltaLine && tokenStartCharacter === character) {\r\n // 4. The token starts precisely at the insertion point\r\n // => grow the token (by keeping its start constant) only if inserting precisely one character that is a word character\r\n // => otherwise behave as in case 5.\r\n if (isInsertingPreciselyOneWordCharacter) {\r\n continue;\r\n }\r\n }\r\n // => the token must move and keep its size constant\r\n if (tokenDeltaLine === deltaLine) {\r\n tokenDeltaLine += eolCount;\r\n // this token is on the line where the insertion is taking place\r\n if (eolCount === 0) {\r\n tokenStartCharacter += firstLineLength;\r\n tokenEndCharacter += firstLineLength;\r\n }\r\n else {\r\n const tokenLength = tokenEndCharacter - tokenStartCharacter;\r\n tokenStartCharacter = lastLineLength + (tokenStartCharacter - character);\r\n tokenEndCharacter = tokenStartCharacter + tokenLength;\r\n }\r\n }\r\n else {\r\n tokenDeltaLine += eolCount;\r\n }\r\n }\r\n tokens[offset] = tokenDeltaLine;\r\n tokens[offset + 1] = tokenStartCharacter;\r\n tokens[offset + 2] = tokenEndCharacter;\r\n }\r\n }\r\n}\r\nexport class LineTokens2 {\r\n constructor(tokens) {\r\n this._tokens = tokens;\r\n }\r\n getCount() {\r\n return this._tokens.length / 4;\r\n }\r\n getStartCharacter(tokenIndex) {\r\n return this._tokens[4 * tokenIndex + 1];\r\n }\r\n getEndCharacter(tokenIndex) {\r\n return this._tokens[4 * tokenIndex + 2];\r\n }\r\n getMetadata(tokenIndex) {\r\n return this._tokens[4 * tokenIndex + 3];\r\n }\r\n}\r\nexport class MultilineTokens2 {\r\n constructor(startLineNumber, tokens) {\r\n this.startLineNumber = startLineNumber;\r\n this.tokens = tokens;\r\n this.endLineNumber = this.startLineNumber + this.tokens.getMaxDeltaLine();\r\n }\r\n toString() {\r\n return this.tokens.toString(this.startLineNumber);\r\n }\r\n _updateEndLineNumber() {\r\n this.endLineNumber = this.startLineNumber + this.tokens.getMaxDeltaLine();\r\n }\r\n isEmpty() {\r\n return this.tokens.isEmpty();\r\n }\r\n getLineTokens(lineNumber) {\r\n if (this.startLineNumber <= lineNumber && lineNumber <= this.endLineNumber) {\r\n return this.tokens.getLineTokens(lineNumber - this.startLineNumber);\r\n }\r\n return null;\r\n }\r\n getRange() {\r\n const deltaRange = this.tokens.getRange();\r\n if (!deltaRange) {\r\n return deltaRange;\r\n }\r\n return new Range(this.startLineNumber + deltaRange.startLineNumber, deltaRange.startColumn, this.startLineNumber + deltaRange.endLineNumber, deltaRange.endColumn);\r\n }\r\n removeTokens(range) {\r\n const startLineIndex = range.startLineNumber - this.startLineNumber;\r\n const endLineIndex = range.endLineNumber - this.startLineNumber;\r\n this.startLineNumber += this.tokens.removeTokens(startLineIndex, range.startColumn - 1, endLineIndex, range.endColumn - 1);\r\n this._updateEndLineNumber();\r\n }\r\n split(range) {\r\n // split tokens to two:\r\n // a) all the tokens before `range`\r\n // b) all the tokens after `range`\r\n const startLineIndex = range.startLineNumber - this.startLineNumber;\r\n const endLineIndex = range.endLineNumber - this.startLineNumber;\r\n const [a, b, bDeltaLine] = this.tokens.split(startLineIndex, range.startColumn - 1, endLineIndex, range.endColumn - 1);\r\n return [new MultilineTokens2(this.startLineNumber, a), new MultilineTokens2(this.startLineNumber + bDeltaLine, b)];\r\n }\r\n applyEdit(range, text) {\r\n const [eolCount, firstLineLength, lastLineLength] = countEOL(text);\r\n this.acceptEdit(range, eolCount, firstLineLength, lastLineLength, text.length > 0 ? text.charCodeAt(0) : 0 /* Null */);\r\n }\r\n acceptEdit(range, eolCount, firstLineLength, lastLineLength, firstCharCode) {\r\n this._acceptDeleteRange(range);\r\n this._acceptInsertText(new Position(range.startLineNumber, range.startColumn), eolCount, firstLineLength, lastLineLength, firstCharCode);\r\n this._updateEndLineNumber();\r\n }\r\n _acceptDeleteRange(range) {\r\n if (range.startLineNumber === range.endLineNumber && range.startColumn === range.endColumn) {\r\n // Nothing to delete\r\n return;\r\n }\r\n const firstLineIndex = range.startLineNumber - this.startLineNumber;\r\n const lastLineIndex = range.endLineNumber - this.startLineNumber;\r\n if (lastLineIndex < 0) {\r\n // this deletion occurs entirely before this block, so we only need to adjust line numbers\r\n const deletedLinesCount = lastLineIndex - firstLineIndex;\r\n this.startLineNumber -= deletedLinesCount;\r\n return;\r\n }\r\n const tokenMaxDeltaLine = this.tokens.getMaxDeltaLine();\r\n if (firstLineIndex >= tokenMaxDeltaLine + 1) {\r\n // this deletion occurs entirely after this block, so there is nothing to do\r\n return;\r\n }\r\n if (firstLineIndex < 0 && lastLineIndex >= tokenMaxDeltaLine + 1) {\r\n // this deletion completely encompasses this block\r\n this.startLineNumber = 0;\r\n this.tokens.clear();\r\n return;\r\n }\r\n if (firstLineIndex < 0) {\r\n const deletedBefore = -firstLineIndex;\r\n this.startLineNumber -= deletedBefore;\r\n this.tokens.acceptDeleteRange(range.startColumn - 1, 0, 0, lastLineIndex, range.endColumn - 1);\r\n }\r\n else {\r\n this.tokens.acceptDeleteRange(0, firstLineIndex, range.startColumn - 1, lastLineIndex, range.endColumn - 1);\r\n }\r\n }\r\n _acceptInsertText(position, eolCount, firstLineLength, lastLineLength, firstCharCode) {\r\n if (eolCount === 0 && firstLineLength === 0) {\r\n // Nothing to insert\r\n return;\r\n }\r\n const lineIndex = position.lineNumber - this.startLineNumber;\r\n if (lineIndex < 0) {\r\n // this insertion occurs before this block, so we only need to adjust line numbers\r\n this.startLineNumber += eolCount;\r\n return;\r\n }\r\n const tokenMaxDeltaLine = this.tokens.getMaxDeltaLine();\r\n if (lineIndex >= tokenMaxDeltaLine + 1) {\r\n // this insertion occurs after this block, so there is nothing to do\r\n return;\r\n }\r\n this.tokens.acceptInsertText(lineIndex, position.column - 1, eolCount, firstLineLength, lastLineLength, firstCharCode);\r\n }\r\n}\r\nexport class MultilineTokens {\r\n constructor(startLineNumber, tokens) {\r\n this.startLineNumber = startLineNumber;\r\n this.tokens = tokens;\r\n }\r\n}\r\nfunction toUint32Array(arr) {\r\n if (arr instanceof Uint32Array) {\r\n return arr;\r\n }\r\n else {\r\n return new Uint32Array(arr);\r\n }\r\n}\r\nexport class TokensStore2 {\r\n constructor() {\r\n this._pieces = [];\r\n this._isComplete = false;\r\n }\r\n flush() {\r\n this._pieces = [];\r\n this._isComplete = false;\r\n }\r\n isEmpty() {\r\n return (this._pieces.length === 0);\r\n }\r\n set(pieces, isComplete) {\r\n this._pieces = pieces || [];\r\n this._isComplete = isComplete;\r\n }\r\n setPartial(_range, pieces) {\r\n // console.log(`setPartial ${_range} ${pieces.map(p => p.toString()).join(', ')}`);\r\n let range = _range;\r\n if (pieces.length > 0) {\r\n const _firstRange = pieces[0].getRange();\r\n const _lastRange = pieces[pieces.length - 1].getRange();\r\n if (!_firstRange || !_lastRange) {\r\n return _range;\r\n }\r\n range = _range.plusRange(_firstRange).plusRange(_lastRange);\r\n }\r\n let insertPosition = null;\r\n for (let i = 0, len = this._pieces.length; i < len; i++) {\r\n const piece = this._pieces[i];\r\n if (piece.endLineNumber < range.startLineNumber) {\r\n // this piece is before the range\r\n continue;\r\n }\r\n if (piece.startLineNumber > range.endLineNumber) {\r\n // this piece is after the range, so mark the spot before this piece\r\n // as a good insertion position and stop looping\r\n insertPosition = insertPosition || { index: i };\r\n break;\r\n }\r\n // this piece might intersect with the range\r\n piece.removeTokens(range);\r\n if (piece.isEmpty()) {\r\n // remove the piece if it became empty\r\n this._pieces.splice(i, 1);\r\n i--;\r\n len--;\r\n continue;\r\n }\r\n if (piece.endLineNumber < range.startLineNumber) {\r\n // after removal, this piece is before the range\r\n continue;\r\n }\r\n if (piece.startLineNumber > range.endLineNumber) {\r\n // after removal, this piece is after the range\r\n insertPosition = insertPosition || { index: i };\r\n continue;\r\n }\r\n // after removal, this piece contains the range\r\n const [a, b] = piece.split(range);\r\n if (a.isEmpty()) {\r\n // this piece is actually after the range\r\n insertPosition = insertPosition || { index: i };\r\n continue;\r\n }\r\n if (b.isEmpty()) {\r\n // this piece is actually before the range\r\n continue;\r\n }\r\n this._pieces.splice(i, 1, a, b);\r\n i++;\r\n len++;\r\n insertPosition = insertPosition || { index: i };\r\n }\r\n insertPosition = insertPosition || { index: this._pieces.length };\r\n if (pieces.length > 0) {\r\n this._pieces = arrays.arrayInsert(this._pieces, insertPosition.index, pieces);\r\n }\r\n // console.log(`I HAVE ${this._pieces.length} pieces`);\r\n // console.log(`${this._pieces.map(p => p.toString()).join('\\n')}`);\r\n return range;\r\n }\r\n isComplete() {\r\n return this._isComplete;\r\n }\r\n addSemanticTokens(lineNumber, aTokens) {\r\n const pieces = this._pieces;\r\n if (pieces.length === 0) {\r\n return aTokens;\r\n }\r\n const pieceIndex = TokensStore2._findFirstPieceWithLine(pieces, lineNumber);\r\n const bTokens = pieces[pieceIndex].getLineTokens(lineNumber);\r\n if (!bTokens) {\r\n return aTokens;\r\n }\r\n const aLen = aTokens.getCount();\r\n const bLen = bTokens.getCount();\r\n let aIndex = 0;\r\n let result = [], resultLen = 0;\r\n let lastEndOffset = 0;\r\n const emitToken = (endOffset, metadata) => {\r\n if (endOffset === lastEndOffset) {\r\n return;\r\n }\r\n lastEndOffset = endOffset;\r\n result[resultLen++] = endOffset;\r\n result[resultLen++] = metadata;\r\n };\r\n for (let bIndex = 0; bIndex < bLen; bIndex++) {\r\n const bStartCharacter = bTokens.getStartCharacter(bIndex);\r\n const bEndCharacter = bTokens.getEndCharacter(bIndex);\r\n const bMetadata = bTokens.getMetadata(bIndex);\r\n const bMask = (((bMetadata & 1 /* SEMANTIC_USE_ITALIC */) ? 2048 /* ITALIC_MASK */ : 0)\r\n | ((bMetadata & 2 /* SEMANTIC_USE_BOLD */) ? 4096 /* BOLD_MASK */ : 0)\r\n | ((bMetadata & 4 /* SEMANTIC_USE_UNDERLINE */) ? 8192 /* UNDERLINE_MASK */ : 0)\r\n | ((bMetadata & 8 /* SEMANTIC_USE_FOREGROUND */) ? 8372224 /* FOREGROUND_MASK */ : 0)\r\n | ((bMetadata & 16 /* SEMANTIC_USE_BACKGROUND */) ? 4286578688 /* BACKGROUND_MASK */ : 0)) >>> 0;\r\n const aMask = (~bMask) >>> 0;\r\n // push any token from `a` that is before `b`\r\n while (aIndex < aLen && aTokens.getEndOffset(aIndex) <= bStartCharacter) {\r\n emitToken(aTokens.getEndOffset(aIndex), aTokens.getMetadata(aIndex));\r\n aIndex++;\r\n }\r\n // push the token from `a` if it intersects the token from `b`\r\n if (aIndex < aLen && aTokens.getStartOffset(aIndex) < bStartCharacter) {\r\n emitToken(bStartCharacter, aTokens.getMetadata(aIndex));\r\n }\r\n // skip any tokens from `a` that are contained inside `b`\r\n while (aIndex < aLen && aTokens.getEndOffset(aIndex) < bEndCharacter) {\r\n emitToken(aTokens.getEndOffset(aIndex), (aTokens.getMetadata(aIndex) & aMask) | (bMetadata & bMask));\r\n aIndex++;\r\n }\r\n if (aIndex < aLen) {\r\n emitToken(bEndCharacter, (aTokens.getMetadata(aIndex) & aMask) | (bMetadata & bMask));\r\n if (aTokens.getEndOffset(aIndex) === bEndCharacter) {\r\n // `a` ends exactly at the same spot as `b`!\r\n aIndex++;\r\n }\r\n }\r\n else {\r\n const aMergeIndex = Math.min(Math.max(0, aIndex - 1), aLen - 1);\r\n // push the token from `b`\r\n emitToken(bEndCharacter, (aTokens.getMetadata(aMergeIndex) & aMask) | (bMetadata & bMask));\r\n }\r\n }\r\n // push the remaining tokens from `a`\r\n while (aIndex < aLen) {\r\n emitToken(aTokens.getEndOffset(aIndex), aTokens.getMetadata(aIndex));\r\n aIndex++;\r\n }\r\n return new LineTokens(new Uint32Array(result), aTokens.getLineContent());\r\n }\r\n static _findFirstPieceWithLine(pieces, lineNumber) {\r\n let low = 0;\r\n let high = pieces.length - 1;\r\n while (low < high) {\r\n let mid = low + Math.floor((high - low) / 2);\r\n if (pieces[mid].endLineNumber < lineNumber) {\r\n low = mid + 1;\r\n }\r\n else if (pieces[mid].startLineNumber > lineNumber) {\r\n high = mid - 1;\r\n }\r\n else {\r\n while (mid > low && pieces[mid - 1].startLineNumber <= lineNumber && lineNumber <= pieces[mid - 1].endLineNumber) {\r\n mid--;\r\n }\r\n return mid;\r\n }\r\n }\r\n return low;\r\n }\r\n //#region Editing\r\n acceptEdit(range, eolCount, firstLineLength, lastLineLength, firstCharCode) {\r\n for (const piece of this._pieces) {\r\n piece.acceptEdit(range, eolCount, firstLineLength, lastLineLength, firstCharCode);\r\n }\r\n }\r\n}\r\nexport class TokensStore {\r\n constructor() {\r\n this._lineTokens = [];\r\n this._len = 0;\r\n }\r\n flush() {\r\n this._lineTokens = [];\r\n this._len = 0;\r\n }\r\n getTokens(topLevelLanguageId, lineIndex, lineText) {\r\n let rawLineTokens = null;\r\n if (lineIndex < this._len) {\r\n rawLineTokens = this._lineTokens[lineIndex];\r\n }\r\n if (rawLineTokens !== null && rawLineTokens !== EMPTY_LINE_TOKENS) {\r\n return new LineTokens(toUint32Array(rawLineTokens), lineText);\r\n }\r\n let lineTokens = new Uint32Array(2);\r\n lineTokens[0] = lineText.length;\r\n lineTokens[1] = getDefaultMetadata(topLevelLanguageId);\r\n return new LineTokens(lineTokens, lineText);\r\n }\r\n static _massageTokens(topLevelLanguageId, lineTextLength, _tokens) {\r\n const tokens = _tokens ? toUint32Array(_tokens) : null;\r\n if (lineTextLength === 0) {\r\n let hasDifferentLanguageId = false;\r\n if (tokens && tokens.length > 1) {\r\n hasDifferentLanguageId = (TokenMetadata.getLanguageId(tokens[1]) !== topLevelLanguageId);\r\n }\r\n if (!hasDifferentLanguageId) {\r\n return EMPTY_LINE_TOKENS;\r\n }\r\n }\r\n if (!tokens || tokens.length === 0) {\r\n const tokens = new Uint32Array(2);\r\n tokens[0] = lineTextLength;\r\n tokens[1] = getDefaultMetadata(topLevelLanguageId);\r\n return tokens.buffer;\r\n }\r\n // Ensure the last token covers the end of the text\r\n tokens[tokens.length - 2] = lineTextLength;\r\n if (tokens.byteOffset === 0 && tokens.byteLength === tokens.buffer.byteLength) {\r\n // Store directly the ArrayBuffer pointer to save an object\r\n return tokens.buffer;\r\n }\r\n return tokens;\r\n }\r\n _ensureLine(lineIndex) {\r\n while (lineIndex >= this._len) {\r\n this._lineTokens[this._len] = null;\r\n this._len++;\r\n }\r\n }\r\n _deleteLines(start, deleteCount) {\r\n if (deleteCount === 0) {\r\n return;\r\n }\r\n if (start + deleteCount > this._len) {\r\n deleteCount = this._len - start;\r\n }\r\n this._lineTokens.splice(start, deleteCount);\r\n this._len -= deleteCount;\r\n }\r\n _insertLines(insertIndex, insertCount) {\r\n if (insertCount === 0) {\r\n return;\r\n }\r\n let lineTokens = [];\r\n for (let i = 0; i < insertCount; i++) {\r\n lineTokens[i] = null;\r\n }\r\n this._lineTokens = arrays.arrayInsert(this._lineTokens, insertIndex, lineTokens);\r\n this._len += insertCount;\r\n }\r\n setTokens(topLevelLanguageId, lineIndex, lineTextLength, _tokens, checkEquality) {\r\n const tokens = TokensStore._massageTokens(topLevelLanguageId, lineTextLength, _tokens);\r\n this._ensureLine(lineIndex);\r\n const oldTokens = this._lineTokens[lineIndex];\r\n this._lineTokens[lineIndex] = tokens;\r\n if (checkEquality) {\r\n return !TokensStore._equals(oldTokens, tokens);\r\n }\r\n return false;\r\n }\r\n static _equals(_a, _b) {\r\n if (!_a || !_b) {\r\n return !_a && !_b;\r\n }\r\n const a = toUint32Array(_a);\r\n const b = toUint32Array(_b);\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (let i = 0, len = a.length; i < len; i++) {\r\n if (a[i] !== b[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n //#region Editing\r\n acceptEdit(range, eolCount, firstLineLength) {\r\n this._acceptDeleteRange(range);\r\n this._acceptInsertText(new Position(range.startLineNumber, range.startColumn), eolCount, firstLineLength);\r\n }\r\n _acceptDeleteRange(range) {\r\n const firstLineIndex = range.startLineNumber - 1;\r\n if (firstLineIndex >= this._len) {\r\n return;\r\n }\r\n if (range.startLineNumber === range.endLineNumber) {\r\n if (range.startColumn === range.endColumn) {\r\n // Nothing to delete\r\n return;\r\n }\r\n this._lineTokens[firstLineIndex] = TokensStore._delete(this._lineTokens[firstLineIndex], range.startColumn - 1, range.endColumn - 1);\r\n return;\r\n }\r\n this._lineTokens[firstLineIndex] = TokensStore._deleteEnding(this._lineTokens[firstLineIndex], range.startColumn - 1);\r\n const lastLineIndex = range.endLineNumber - 1;\r\n let lastLineTokens = null;\r\n if (lastLineIndex < this._len) {\r\n lastLineTokens = TokensStore._deleteBeginning(this._lineTokens[lastLineIndex], range.endColumn - 1);\r\n }\r\n // Take remaining text on last line and append it to remaining text on first line\r\n this._lineTokens[firstLineIndex] = TokensStore._append(this._lineTokens[firstLineIndex], lastLineTokens);\r\n // Delete middle lines\r\n this._deleteLines(range.startLineNumber, range.endLineNumber - range.startLineNumber);\r\n }\r\n _acceptInsertText(position, eolCount, firstLineLength) {\r\n if (eolCount === 0 && firstLineLength === 0) {\r\n // Nothing to insert\r\n return;\r\n }\r\n const lineIndex = position.lineNumber - 1;\r\n if (lineIndex >= this._len) {\r\n return;\r\n }\r\n if (eolCount === 0) {\r\n // Inserting text on one line\r\n this._lineTokens[lineIndex] = TokensStore._insert(this._lineTokens[lineIndex], position.column - 1, firstLineLength);\r\n return;\r\n }\r\n this._lineTokens[lineIndex] = TokensStore._deleteEnding(this._lineTokens[lineIndex], position.column - 1);\r\n this._lineTokens[lineIndex] = TokensStore._insert(this._lineTokens[lineIndex], position.column - 1, firstLineLength);\r\n this._insertLines(position.lineNumber, eolCount);\r\n }\r\n static _deleteBeginning(lineTokens, toChIndex) {\r\n if (lineTokens === null || lineTokens === EMPTY_LINE_TOKENS) {\r\n return lineTokens;\r\n }\r\n return TokensStore._delete(lineTokens, 0, toChIndex);\r\n }\r\n static _deleteEnding(lineTokens, fromChIndex) {\r\n if (lineTokens === null || lineTokens === EMPTY_LINE_TOKENS) {\r\n return lineTokens;\r\n }\r\n const tokens = toUint32Array(lineTokens);\r\n const lineTextLength = tokens[tokens.length - 2];\r\n return TokensStore._delete(lineTokens, fromChIndex, lineTextLength);\r\n }\r\n static _delete(lineTokens, fromChIndex, toChIndex) {\r\n if (lineTokens === null || lineTokens === EMPTY_LINE_TOKENS || fromChIndex === toChIndex) {\r\n return lineTokens;\r\n }\r\n const tokens = toUint32Array(lineTokens);\r\n const tokensCount = (tokens.length >>> 1);\r\n // special case: deleting everything\r\n if (fromChIndex === 0 && tokens[tokens.length - 2] === toChIndex) {\r\n return EMPTY_LINE_TOKENS;\r\n }\r\n const fromTokenIndex = LineTokens.findIndexInTokensArray(tokens, fromChIndex);\r\n const fromTokenStartOffset = (fromTokenIndex > 0 ? tokens[(fromTokenIndex - 1) << 1] : 0);\r\n const fromTokenEndOffset = tokens[fromTokenIndex << 1];\r\n if (toChIndex < fromTokenEndOffset) {\r\n // the delete range is inside a single token\r\n const delta = (toChIndex - fromChIndex);\r\n for (let i = fromTokenIndex; i < tokensCount; i++) {\r\n tokens[i << 1] -= delta;\r\n }\r\n return lineTokens;\r\n }\r\n let dest;\r\n let lastEnd;\r\n if (fromTokenStartOffset !== fromChIndex) {\r\n tokens[fromTokenIndex << 1] = fromChIndex;\r\n dest = ((fromTokenIndex + 1) << 1);\r\n lastEnd = fromChIndex;\r\n }\r\n else {\r\n dest = (fromTokenIndex << 1);\r\n lastEnd = fromTokenStartOffset;\r\n }\r\n const delta = (toChIndex - fromChIndex);\r\n for (let tokenIndex = fromTokenIndex + 1; tokenIndex < tokensCount; tokenIndex++) {\r\n const tokenEndOffset = tokens[tokenIndex << 1] - delta;\r\n if (tokenEndOffset > lastEnd) {\r\n tokens[dest++] = tokenEndOffset;\r\n tokens[dest++] = tokens[(tokenIndex << 1) + 1];\r\n lastEnd = tokenEndOffset;\r\n }\r\n }\r\n if (dest === tokens.length) {\r\n // nothing to trim\r\n return lineTokens;\r\n }\r\n let tmp = new Uint32Array(dest);\r\n tmp.set(tokens.subarray(0, dest), 0);\r\n return tmp.buffer;\r\n }\r\n static _append(lineTokens, _otherTokens) {\r\n if (_otherTokens === EMPTY_LINE_TOKENS) {\r\n return lineTokens;\r\n }\r\n if (lineTokens === EMPTY_LINE_TOKENS) {\r\n return _otherTokens;\r\n }\r\n if (lineTokens === null) {\r\n return lineTokens;\r\n }\r\n if (_otherTokens === null) {\r\n // cannot determine combined line length...\r\n return null;\r\n }\r\n const myTokens = toUint32Array(lineTokens);\r\n const otherTokens = toUint32Array(_otherTokens);\r\n const otherTokensCount = (otherTokens.length >>> 1);\r\n let result = new Uint32Array(myTokens.length + otherTokens.length);\r\n result.set(myTokens, 0);\r\n let dest = myTokens.length;\r\n const delta = myTokens[myTokens.length - 2];\r\n for (let i = 0; i < otherTokensCount; i++) {\r\n result[dest++] = otherTokens[(i << 1)] + delta;\r\n result[dest++] = otherTokens[(i << 1) + 1];\r\n }\r\n return result.buffer;\r\n }\r\n static _insert(lineTokens, chIndex, textLength) {\r\n if (lineTokens === null || lineTokens === EMPTY_LINE_TOKENS) {\r\n // nothing to do\r\n return lineTokens;\r\n }\r\n const tokens = toUint32Array(lineTokens);\r\n const tokensCount = (tokens.length >>> 1);\r\n let fromTokenIndex = LineTokens.findIndexInTokensArray(tokens, chIndex);\r\n if (fromTokenIndex > 0) {\r\n const fromTokenStartOffset = tokens[(fromTokenIndex - 1) << 1];\r\n if (fromTokenStartOffset === chIndex) {\r\n fromTokenIndex--;\r\n }\r\n }\r\n for (let tokenIndex = fromTokenIndex; tokenIndex < tokensCount; tokenIndex++) {\r\n tokens[tokenIndex << 1] += textLength;\r\n }\r\n return lineTokens;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../../../../base/common/event.js';\r\nimport * as strings from '../../../../base/common/strings.js';\r\nimport { Range } from '../../core/range.js';\r\nimport { ApplyEditsResult } from '../../model.js';\r\nimport { PieceTreeBase } from './pieceTreeBase.js';\r\nimport { countEOL } from '../tokensStore.js';\r\nimport { TextChange } from '../textChange.js';\r\nimport { Disposable } from '../../../../base/common/lifecycle.js';\r\nexport class PieceTreeTextBuffer extends Disposable {\r\n constructor(chunks, BOM, eol, containsRTL, containsUnusualLineTerminators, isBasicASCII, eolNormalized) {\r\n super();\r\n this._onDidChangeContent = this._register(new Emitter());\r\n this._BOM = BOM;\r\n this._mightContainNonBasicASCII = !isBasicASCII;\r\n this._mightContainRTL = containsRTL;\r\n this._mightContainUnusualLineTerminators = containsUnusualLineTerminators;\r\n this._pieceTree = new PieceTreeBase(chunks, eol, eolNormalized);\r\n }\r\n mightContainRTL() {\r\n return this._mightContainRTL;\r\n }\r\n mightContainUnusualLineTerminators() {\r\n return this._mightContainUnusualLineTerminators;\r\n }\r\n resetMightContainUnusualLineTerminators() {\r\n this._mightContainUnusualLineTerminators = false;\r\n }\r\n mightContainNonBasicASCII() {\r\n return this._mightContainNonBasicASCII;\r\n }\r\n getBOM() {\r\n return this._BOM;\r\n }\r\n getEOL() {\r\n return this._pieceTree.getEOL();\r\n }\r\n createSnapshot(preserveBOM) {\r\n return this._pieceTree.createSnapshot(preserveBOM ? this._BOM : '');\r\n }\r\n getOffsetAt(lineNumber, column) {\r\n return this._pieceTree.getOffsetAt(lineNumber, column);\r\n }\r\n getPositionAt(offset) {\r\n return this._pieceTree.getPositionAt(offset);\r\n }\r\n getRangeAt(start, length) {\r\n let end = start + length;\r\n const startPosition = this.getPositionAt(start);\r\n const endPosition = this.getPositionAt(end);\r\n return new Range(startPosition.lineNumber, startPosition.column, endPosition.lineNumber, endPosition.column);\r\n }\r\n getValueInRange(range, eol = 0 /* TextDefined */) {\r\n if (range.isEmpty()) {\r\n return '';\r\n }\r\n const lineEnding = this._getEndOfLine(eol);\r\n return this._pieceTree.getValueInRange(range, lineEnding);\r\n }\r\n getValueLengthInRange(range, eol = 0 /* TextDefined */) {\r\n if (range.isEmpty()) {\r\n return 0;\r\n }\r\n if (range.startLineNumber === range.endLineNumber) {\r\n return (range.endColumn - range.startColumn);\r\n }\r\n let startOffset = this.getOffsetAt(range.startLineNumber, range.startColumn);\r\n let endOffset = this.getOffsetAt(range.endLineNumber, range.endColumn);\r\n return endOffset - startOffset;\r\n }\r\n getCharacterCountInRange(range, eol = 0 /* TextDefined */) {\r\n if (this._mightContainNonBasicASCII) {\r\n // we must count by iterating\r\n let result = 0;\r\n const fromLineNumber = range.startLineNumber;\r\n const toLineNumber = range.endLineNumber;\r\n for (let lineNumber = fromLineNumber; lineNumber <= toLineNumber; lineNumber++) {\r\n const lineContent = this.getLineContent(lineNumber);\r\n const fromOffset = (lineNumber === fromLineNumber ? range.startColumn - 1 : 0);\r\n const toOffset = (lineNumber === toLineNumber ? range.endColumn - 1 : lineContent.length);\r\n for (let offset = fromOffset; offset < toOffset; offset++) {\r\n if (strings.isHighSurrogate(lineContent.charCodeAt(offset))) {\r\n result = result + 1;\r\n offset = offset + 1;\r\n }\r\n else {\r\n result = result + 1;\r\n }\r\n }\r\n }\r\n result += this._getEndOfLine(eol).length * (toLineNumber - fromLineNumber);\r\n return result;\r\n }\r\n return this.getValueLengthInRange(range, eol);\r\n }\r\n getLength() {\r\n return this._pieceTree.getLength();\r\n }\r\n getLineCount() {\r\n return this._pieceTree.getLineCount();\r\n }\r\n getLinesContent() {\r\n return this._pieceTree.getLinesContent();\r\n }\r\n getLineContent(lineNumber) {\r\n return this._pieceTree.getLineContent(lineNumber);\r\n }\r\n getLineCharCode(lineNumber, index) {\r\n return this._pieceTree.getLineCharCode(lineNumber, index);\r\n }\r\n getLineLength(lineNumber) {\r\n return this._pieceTree.getLineLength(lineNumber);\r\n }\r\n getLineFirstNonWhitespaceColumn(lineNumber) {\r\n const result = strings.firstNonWhitespaceIndex(this.getLineContent(lineNumber));\r\n if (result === -1) {\r\n return 0;\r\n }\r\n return result + 1;\r\n }\r\n getLineLastNonWhitespaceColumn(lineNumber) {\r\n const result = strings.lastNonWhitespaceIndex(this.getLineContent(lineNumber));\r\n if (result === -1) {\r\n return 0;\r\n }\r\n return result + 2;\r\n }\r\n _getEndOfLine(eol) {\r\n switch (eol) {\r\n case 1 /* LF */:\r\n return '\\n';\r\n case 2 /* CRLF */:\r\n return '\\r\\n';\r\n case 0 /* TextDefined */:\r\n return this.getEOL();\r\n default:\r\n throw new Error('Unknown EOL preference');\r\n }\r\n }\r\n setEOL(newEOL) {\r\n this._pieceTree.setEOL(newEOL);\r\n }\r\n applyEdits(rawOperations, recordTrimAutoWhitespace, computeUndoEdits) {\r\n let mightContainRTL = this._mightContainRTL;\r\n let mightContainUnusualLineTerminators = this._mightContainUnusualLineTerminators;\r\n let mightContainNonBasicASCII = this._mightContainNonBasicASCII;\r\n let canReduceOperations = true;\r\n let operations = [];\r\n for (let i = 0; i < rawOperations.length; i++) {\r\n let op = rawOperations[i];\r\n if (canReduceOperations && op._isTracked) {\r\n canReduceOperations = false;\r\n }\r\n let validatedRange = op.range;\r\n if (op.text) {\r\n let textMightContainNonBasicASCII = true;\r\n if (!mightContainNonBasicASCII) {\r\n textMightContainNonBasicASCII = !strings.isBasicASCII(op.text);\r\n mightContainNonBasicASCII = textMightContainNonBasicASCII;\r\n }\r\n if (!mightContainRTL && textMightContainNonBasicASCII) {\r\n // check if the new inserted text contains RTL\r\n mightContainRTL = strings.containsRTL(op.text);\r\n }\r\n if (!mightContainUnusualLineTerminators && textMightContainNonBasicASCII) {\r\n // check if the new inserted text contains unusual line terminators\r\n mightContainUnusualLineTerminators = strings.containsUnusualLineTerminators(op.text);\r\n }\r\n }\r\n let validText = '';\r\n let eolCount = 0;\r\n let firstLineLength = 0;\r\n let lastLineLength = 0;\r\n if (op.text) {\r\n let strEOL;\r\n [eolCount, firstLineLength, lastLineLength, strEOL] = countEOL(op.text);\r\n const bufferEOL = this.getEOL();\r\n const expectedStrEOL = (bufferEOL === '\\r\\n' ? 2 /* CRLF */ : 1 /* LF */);\r\n if (strEOL === 0 /* Unknown */ || strEOL === expectedStrEOL) {\r\n validText = op.text;\r\n }\r\n else {\r\n validText = op.text.replace(/\\r\\n|\\r|\\n/g, bufferEOL);\r\n }\r\n }\r\n operations[i] = {\r\n sortIndex: i,\r\n identifier: op.identifier || null,\r\n range: validatedRange,\r\n rangeOffset: this.getOffsetAt(validatedRange.startLineNumber, validatedRange.startColumn),\r\n rangeLength: this.getValueLengthInRange(validatedRange),\r\n text: validText,\r\n eolCount: eolCount,\r\n firstLineLength: firstLineLength,\r\n lastLineLength: lastLineLength,\r\n forceMoveMarkers: Boolean(op.forceMoveMarkers),\r\n isAutoWhitespaceEdit: op.isAutoWhitespaceEdit || false\r\n };\r\n }\r\n // Sort operations ascending\r\n operations.sort(PieceTreeTextBuffer._sortOpsAscending);\r\n let hasTouchingRanges = false;\r\n for (let i = 0, count = operations.length - 1; i < count; i++) {\r\n let rangeEnd = operations[i].range.getEndPosition();\r\n let nextRangeStart = operations[i + 1].range.getStartPosition();\r\n if (nextRangeStart.isBeforeOrEqual(rangeEnd)) {\r\n if (nextRangeStart.isBefore(rangeEnd)) {\r\n // overlapping ranges\r\n throw new Error('Overlapping ranges are not allowed!');\r\n }\r\n hasTouchingRanges = true;\r\n }\r\n }\r\n if (canReduceOperations) {\r\n operations = this._reduceOperations(operations);\r\n }\r\n // Delta encode operations\r\n let reverseRanges = (computeUndoEdits || recordTrimAutoWhitespace ? PieceTreeTextBuffer._getInverseEditRanges(operations) : []);\r\n let newTrimAutoWhitespaceCandidates = [];\r\n if (recordTrimAutoWhitespace) {\r\n for (let i = 0; i < operations.length; i++) {\r\n let op = operations[i];\r\n let reverseRange = reverseRanges[i];\r\n if (op.isAutoWhitespaceEdit && op.range.isEmpty()) {\r\n // Record already the future line numbers that might be auto whitespace removal candidates on next edit\r\n for (let lineNumber = reverseRange.startLineNumber; lineNumber <= reverseRange.endLineNumber; lineNumber++) {\r\n let currentLineContent = '';\r\n if (lineNumber === reverseRange.startLineNumber) {\r\n currentLineContent = this.getLineContent(op.range.startLineNumber);\r\n if (strings.firstNonWhitespaceIndex(currentLineContent) !== -1) {\r\n continue;\r\n }\r\n }\r\n newTrimAutoWhitespaceCandidates.push({ lineNumber: lineNumber, oldContent: currentLineContent });\r\n }\r\n }\r\n }\r\n }\r\n let reverseOperations = null;\r\n if (computeUndoEdits) {\r\n let reverseRangeDeltaOffset = 0;\r\n reverseOperations = [];\r\n for (let i = 0; i < operations.length; i++) {\r\n const op = operations[i];\r\n const reverseRange = reverseRanges[i];\r\n const bufferText = this.getValueInRange(op.range);\r\n const reverseRangeOffset = op.rangeOffset + reverseRangeDeltaOffset;\r\n reverseRangeDeltaOffset += (op.text.length - bufferText.length);\r\n reverseOperations[i] = {\r\n sortIndex: op.sortIndex,\r\n identifier: op.identifier,\r\n range: reverseRange,\r\n text: bufferText,\r\n textChange: new TextChange(op.rangeOffset, bufferText, reverseRangeOffset, op.text)\r\n };\r\n }\r\n // Can only sort reverse operations when the order is not significant\r\n if (!hasTouchingRanges) {\r\n reverseOperations.sort((a, b) => a.sortIndex - b.sortIndex);\r\n }\r\n }\r\n this._mightContainRTL = mightContainRTL;\r\n this._mightContainUnusualLineTerminators = mightContainUnusualLineTerminators;\r\n this._mightContainNonBasicASCII = mightContainNonBasicASCII;\r\n const contentChanges = this._doApplyEdits(operations);\r\n let trimAutoWhitespaceLineNumbers = null;\r\n if (recordTrimAutoWhitespace && newTrimAutoWhitespaceCandidates.length > 0) {\r\n // sort line numbers auto whitespace removal candidates for next edit descending\r\n newTrimAutoWhitespaceCandidates.sort((a, b) => b.lineNumber - a.lineNumber);\r\n trimAutoWhitespaceLineNumbers = [];\r\n for (let i = 0, len = newTrimAutoWhitespaceCandidates.length; i < len; i++) {\r\n let lineNumber = newTrimAutoWhitespaceCandidates[i].lineNumber;\r\n if (i > 0 && newTrimAutoWhitespaceCandidates[i - 1].lineNumber === lineNumber) {\r\n // Do not have the same line number twice\r\n continue;\r\n }\r\n let prevContent = newTrimAutoWhitespaceCandidates[i].oldContent;\r\n let lineContent = this.getLineContent(lineNumber);\r\n if (lineContent.length === 0 || lineContent === prevContent || strings.firstNonWhitespaceIndex(lineContent) !== -1) {\r\n continue;\r\n }\r\n trimAutoWhitespaceLineNumbers.push(lineNumber);\r\n }\r\n }\r\n this._onDidChangeContent.fire();\r\n return new ApplyEditsResult(reverseOperations, contentChanges, trimAutoWhitespaceLineNumbers);\r\n }\r\n /**\r\n * Transform operations such that they represent the same logic edit,\r\n * but that they also do not cause OOM crashes.\r\n */\r\n _reduceOperations(operations) {\r\n if (operations.length < 1000) {\r\n // We know from empirical testing that a thousand edits work fine regardless of their shape.\r\n return operations;\r\n }\r\n // At one point, due to how events are emitted and how each operation is handled,\r\n // some operations can trigger a high amount of temporary string allocations,\r\n // that will immediately get edited again.\r\n // e.g. a formatter inserting ridiculous ammounts of \\n on a model with a single line\r\n // Therefore, the strategy is to collapse all the operations into a huge single edit operation\r\n return [this._toSingleEditOperation(operations)];\r\n }\r\n _toSingleEditOperation(operations) {\r\n let forceMoveMarkers = false;\r\n const firstEditRange = operations[0].range;\r\n const lastEditRange = operations[operations.length - 1].range;\r\n const entireEditRange = new Range(firstEditRange.startLineNumber, firstEditRange.startColumn, lastEditRange.endLineNumber, lastEditRange.endColumn);\r\n let lastEndLineNumber = firstEditRange.startLineNumber;\r\n let lastEndColumn = firstEditRange.startColumn;\r\n const result = [];\r\n for (let i = 0, len = operations.length; i < len; i++) {\r\n const operation = operations[i];\r\n const range = operation.range;\r\n forceMoveMarkers = forceMoveMarkers || operation.forceMoveMarkers;\r\n // (1) -- Push old text\r\n result.push(this.getValueInRange(new Range(lastEndLineNumber, lastEndColumn, range.startLineNumber, range.startColumn)));\r\n // (2) -- Push new text\r\n if (operation.text.length > 0) {\r\n result.push(operation.text);\r\n }\r\n lastEndLineNumber = range.endLineNumber;\r\n lastEndColumn = range.endColumn;\r\n }\r\n const text = result.join('');\r\n const [eolCount, firstLineLength, lastLineLength] = countEOL(text);\r\n return {\r\n sortIndex: 0,\r\n identifier: operations[0].identifier,\r\n range: entireEditRange,\r\n rangeOffset: this.getOffsetAt(entireEditRange.startLineNumber, entireEditRange.startColumn),\r\n rangeLength: this.getValueLengthInRange(entireEditRange, 0 /* TextDefined */),\r\n text: text,\r\n eolCount: eolCount,\r\n firstLineLength: firstLineLength,\r\n lastLineLength: lastLineLength,\r\n forceMoveMarkers: forceMoveMarkers,\r\n isAutoWhitespaceEdit: false\r\n };\r\n }\r\n _doApplyEdits(operations) {\r\n operations.sort(PieceTreeTextBuffer._sortOpsDescending);\r\n let contentChanges = [];\r\n // operations are from bottom to top\r\n for (let i = 0; i < operations.length; i++) {\r\n let op = operations[i];\r\n const startLineNumber = op.range.startLineNumber;\r\n const startColumn = op.range.startColumn;\r\n const endLineNumber = op.range.endLineNumber;\r\n const endColumn = op.range.endColumn;\r\n if (startLineNumber === endLineNumber && startColumn === endColumn && op.text.length === 0) {\r\n // no-op\r\n continue;\r\n }\r\n if (op.text) {\r\n // replacement\r\n this._pieceTree.delete(op.rangeOffset, op.rangeLength);\r\n this._pieceTree.insert(op.rangeOffset, op.text, true);\r\n }\r\n else {\r\n // deletion\r\n this._pieceTree.delete(op.rangeOffset, op.rangeLength);\r\n }\r\n const contentChangeRange = new Range(startLineNumber, startColumn, endLineNumber, endColumn);\r\n contentChanges.push({\r\n range: contentChangeRange,\r\n rangeLength: op.rangeLength,\r\n text: op.text,\r\n rangeOffset: op.rangeOffset,\r\n forceMoveMarkers: op.forceMoveMarkers\r\n });\r\n }\r\n return contentChanges;\r\n }\r\n findMatchesLineByLine(searchRange, searchData, captureMatches, limitResultCount) {\r\n return this._pieceTree.findMatchesLineByLine(searchRange, searchData, captureMatches, limitResultCount);\r\n }\r\n /**\r\n * Assumes `operations` are validated and sorted ascending\r\n */\r\n static _getInverseEditRanges(operations) {\r\n let result = [];\r\n let prevOpEndLineNumber = 0;\r\n let prevOpEndColumn = 0;\r\n let prevOp = null;\r\n for (let i = 0, len = operations.length; i < len; i++) {\r\n let op = operations[i];\r\n let startLineNumber;\r\n let startColumn;\r\n if (prevOp) {\r\n if (prevOp.range.endLineNumber === op.range.startLineNumber) {\r\n startLineNumber = prevOpEndLineNumber;\r\n startColumn = prevOpEndColumn + (op.range.startColumn - prevOp.range.endColumn);\r\n }\r\n else {\r\n startLineNumber = prevOpEndLineNumber + (op.range.startLineNumber - prevOp.range.endLineNumber);\r\n startColumn = op.range.startColumn;\r\n }\r\n }\r\n else {\r\n startLineNumber = op.range.startLineNumber;\r\n startColumn = op.range.startColumn;\r\n }\r\n let resultRange;\r\n if (op.text.length > 0) {\r\n // the operation inserts something\r\n const lineCount = op.eolCount + 1;\r\n if (lineCount === 1) {\r\n // single line insert\r\n resultRange = new Range(startLineNumber, startColumn, startLineNumber, startColumn + op.firstLineLength);\r\n }\r\n else {\r\n // multi line insert\r\n resultRange = new Range(startLineNumber, startColumn, startLineNumber + lineCount - 1, op.lastLineLength + 1);\r\n }\r\n }\r\n else {\r\n // There is nothing to insert\r\n resultRange = new Range(startLineNumber, startColumn, startLineNumber, startColumn);\r\n }\r\n prevOpEndLineNumber = resultRange.endLineNumber;\r\n prevOpEndColumn = resultRange.endColumn;\r\n result.push(resultRange);\r\n prevOp = op;\r\n }\r\n return result;\r\n }\r\n static _sortOpsAscending(a, b) {\r\n let r = Range.compareRangesUsingEnds(a.range, b.range);\r\n if (r === 0) {\r\n return a.sortIndex - b.sortIndex;\r\n }\r\n return r;\r\n }\r\n static _sortOpsDescending(a, b) {\r\n let r = Range.compareRangesUsingEnds(a.range, b.range);\r\n if (r === 0) {\r\n return b.sortIndex - a.sortIndex;\r\n }\r\n return -r;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../../base/common/strings.js';\r\nimport { StringBuffer, createLineStarts, createLineStartsFast } from './pieceTreeBase.js';\r\nimport { PieceTreeTextBuffer } from './pieceTreeTextBuffer.js';\r\nexport class PieceTreeTextBufferFactory {\r\n constructor(_chunks, _bom, _cr, _lf, _crlf, _containsRTL, _containsUnusualLineTerminators, _isBasicASCII, _normalizeEOL) {\r\n this._chunks = _chunks;\r\n this._bom = _bom;\r\n this._cr = _cr;\r\n this._lf = _lf;\r\n this._crlf = _crlf;\r\n this._containsRTL = _containsRTL;\r\n this._containsUnusualLineTerminators = _containsUnusualLineTerminators;\r\n this._isBasicASCII = _isBasicASCII;\r\n this._normalizeEOL = _normalizeEOL;\r\n }\r\n _getEOL(defaultEOL) {\r\n const totalEOLCount = this._cr + this._lf + this._crlf;\r\n const totalCRCount = this._cr + this._crlf;\r\n if (totalEOLCount === 0) {\r\n // This is an empty file or a file with precisely one line\r\n return (defaultEOL === 1 /* LF */ ? '\\n' : '\\r\\n');\r\n }\r\n if (totalCRCount > totalEOLCount / 2) {\r\n // More than half of the file contains \\r\\n ending lines\r\n return '\\r\\n';\r\n }\r\n // At least one line more ends in \\n\r\n return '\\n';\r\n }\r\n create(defaultEOL) {\r\n const eol = this._getEOL(defaultEOL);\r\n let chunks = this._chunks;\r\n if (this._normalizeEOL &&\r\n ((eol === '\\r\\n' && (this._cr > 0 || this._lf > 0))\r\n || (eol === '\\n' && (this._cr > 0 || this._crlf > 0)))) {\r\n // Normalize pieces\r\n for (let i = 0, len = chunks.length; i < len; i++) {\r\n let str = chunks[i].buffer.replace(/\\r\\n|\\r|\\n/g, eol);\r\n let newLineStart = createLineStartsFast(str);\r\n chunks[i] = new StringBuffer(str, newLineStart);\r\n }\r\n }\r\n const textBuffer = new PieceTreeTextBuffer(chunks, this._bom, eol, this._containsRTL, this._containsUnusualLineTerminators, this._isBasicASCII, this._normalizeEOL);\r\n return { textBuffer: textBuffer, disposable: textBuffer };\r\n }\r\n}\r\nexport class PieceTreeTextBufferBuilder {\r\n constructor() {\r\n this.chunks = [];\r\n this.BOM = '';\r\n this._hasPreviousChar = false;\r\n this._previousChar = 0;\r\n this._tmpLineStarts = [];\r\n this.cr = 0;\r\n this.lf = 0;\r\n this.crlf = 0;\r\n this.containsRTL = false;\r\n this.containsUnusualLineTerminators = false;\r\n this.isBasicASCII = true;\r\n }\r\n acceptChunk(chunk) {\r\n if (chunk.length === 0) {\r\n return;\r\n }\r\n if (this.chunks.length === 0) {\r\n if (strings.startsWithUTF8BOM(chunk)) {\r\n this.BOM = strings.UTF8_BOM_CHARACTER;\r\n chunk = chunk.substr(1);\r\n }\r\n }\r\n const lastChar = chunk.charCodeAt(chunk.length - 1);\r\n if (lastChar === 13 /* CarriageReturn */ || (lastChar >= 0xD800 && lastChar <= 0xDBFF)) {\r\n // last character is \\r or a high surrogate => keep it back\r\n this._acceptChunk1(chunk.substr(0, chunk.length - 1), false);\r\n this._hasPreviousChar = true;\r\n this._previousChar = lastChar;\r\n }\r\n else {\r\n this._acceptChunk1(chunk, false);\r\n this._hasPreviousChar = false;\r\n this._previousChar = lastChar;\r\n }\r\n }\r\n _acceptChunk1(chunk, allowEmptyStrings) {\r\n if (!allowEmptyStrings && chunk.length === 0) {\r\n // Nothing to do\r\n return;\r\n }\r\n if (this._hasPreviousChar) {\r\n this._acceptChunk2(String.fromCharCode(this._previousChar) + chunk);\r\n }\r\n else {\r\n this._acceptChunk2(chunk);\r\n }\r\n }\r\n _acceptChunk2(chunk) {\r\n const lineStarts = createLineStarts(this._tmpLineStarts, chunk);\r\n this.chunks.push(new StringBuffer(chunk, lineStarts.lineStarts));\r\n this.cr += lineStarts.cr;\r\n this.lf += lineStarts.lf;\r\n this.crlf += lineStarts.crlf;\r\n if (this.isBasicASCII) {\r\n this.isBasicASCII = lineStarts.isBasicASCII;\r\n }\r\n if (!this.isBasicASCII && !this.containsRTL) {\r\n // No need to check if it is basic ASCII\r\n this.containsRTL = strings.containsRTL(chunk);\r\n }\r\n if (!this.isBasicASCII && !this.containsUnusualLineTerminators) {\r\n // No need to check if it is basic ASCII\r\n this.containsUnusualLineTerminators = strings.containsUnusualLineTerminators(chunk);\r\n }\r\n }\r\n finish(normalizeEOL = true) {\r\n this._finish();\r\n return new PieceTreeTextBufferFactory(this.chunks, this.BOM, this.cr, this.lf, this.crlf, this.containsRTL, this.containsUnusualLineTerminators, this.isBasicASCII, normalizeEOL);\r\n }\r\n _finish() {\r\n if (this.chunks.length === 0) {\r\n this._acceptChunk1('', true);\r\n }\r\n if (this._hasPreviousChar) {\r\n this._hasPreviousChar = false;\r\n // recreate last chunk\r\n let lastChunk = this.chunks[this.chunks.length - 1];\r\n lastChunk.buffer += String.fromCharCode(this._previousChar);\r\n let newLineStarts = createLineStartsFast(lastChunk.buffer);\r\n lastChunk.lineStarts = newLineStarts;\r\n if (this._previousChar === 13 /* CarriageReturn */) {\r\n this.cr++;\r\n }\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/**\r\n * An event describing that a model has been reset to a new value.\r\n * @internal\r\n */\r\nexport class ModelRawFlush {\r\n constructor() {\r\n this.changeType = 1 /* Flush */;\r\n }\r\n}\r\n/**\r\n * Represents text injected on a line\r\n * @internal\r\n */\r\nexport class LineInjectedText {\r\n constructor(ownerId, lineNumber, column, options, order) {\r\n this.ownerId = ownerId;\r\n this.lineNumber = lineNumber;\r\n this.column = column;\r\n this.options = options;\r\n this.order = order;\r\n }\r\n static applyInjectedText(lineText, injectedTexts) {\r\n if (!injectedTexts || injectedTexts.length === 0) {\r\n return lineText;\r\n }\r\n let result = '';\r\n let lastOriginalOffset = 0;\r\n for (const injectedText of injectedTexts) {\r\n result += lineText.substring(lastOriginalOffset, injectedText.column - 1);\r\n lastOriginalOffset = injectedText.column - 1;\r\n result += injectedText.options.content;\r\n }\r\n result += lineText.substring(lastOriginalOffset);\r\n return result;\r\n }\r\n static fromDecorations(decorations) {\r\n const result = [];\r\n for (const decoration of decorations) {\r\n if (decoration.options.before && decoration.options.before.content.length > 0) {\r\n result.push(new LineInjectedText(decoration.ownerId, decoration.range.startLineNumber, decoration.range.startColumn, decoration.options.before, 0));\r\n }\r\n if (decoration.options.after && decoration.options.after.content.length > 0) {\r\n result.push(new LineInjectedText(decoration.ownerId, decoration.range.endLineNumber, decoration.range.endColumn, decoration.options.after, 1));\r\n }\r\n }\r\n result.sort((a, b) => {\r\n if (a.lineNumber === b.lineNumber) {\r\n if (a.column === b.column) {\r\n return a.order - b.order;\r\n }\r\n return a.column - b.column;\r\n }\r\n return a.lineNumber - b.lineNumber;\r\n });\r\n return result;\r\n }\r\n}\r\n/**\r\n * An event describing that a line has changed in a model.\r\n * @internal\r\n */\r\nexport class ModelRawLineChanged {\r\n constructor(lineNumber, detail, injectedText) {\r\n this.changeType = 2 /* LineChanged */;\r\n this.lineNumber = lineNumber;\r\n this.detail = detail;\r\n this.injectedText = injectedText;\r\n }\r\n}\r\n/**\r\n * An event describing that line(s) have been deleted in a model.\r\n * @internal\r\n */\r\nexport class ModelRawLinesDeleted {\r\n constructor(fromLineNumber, toLineNumber) {\r\n this.changeType = 3 /* LinesDeleted */;\r\n this.fromLineNumber = fromLineNumber;\r\n this.toLineNumber = toLineNumber;\r\n }\r\n}\r\n/**\r\n * An event describing that line(s) have been inserted in a model.\r\n * @internal\r\n */\r\nexport class ModelRawLinesInserted {\r\n constructor(fromLineNumber, toLineNumber, detail, injectedTexts) {\r\n this.changeType = 4 /* LinesInserted */;\r\n this.injectedTexts = injectedTexts;\r\n this.fromLineNumber = fromLineNumber;\r\n this.toLineNumber = toLineNumber;\r\n this.detail = detail;\r\n }\r\n}\r\n/**\r\n * An event describing that a model has had its EOL changed.\r\n * @internal\r\n */\r\nexport class ModelRawEOLChanged {\r\n constructor() {\r\n this.changeType = 5 /* EOLChanged */;\r\n }\r\n}\r\n/**\r\n * An event describing a change in the text of a model.\r\n * @internal\r\n */\r\nexport class ModelRawContentChangedEvent {\r\n constructor(changes, versionId, isUndoing, isRedoing) {\r\n this.changes = changes;\r\n this.versionId = versionId;\r\n this.isUndoing = isUndoing;\r\n this.isRedoing = isRedoing;\r\n this.resultingSelection = null;\r\n }\r\n containsEvent(type) {\r\n for (let i = 0, len = this.changes.length; i < len; i++) {\r\n const change = this.changes[i];\r\n if (change.changeType === type) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n static merge(a, b) {\r\n const changes = [].concat(a.changes).concat(b.changes);\r\n const versionId = b.versionId;\r\n const isUndoing = (a.isUndoing || b.isUndoing);\r\n const isRedoing = (a.isRedoing || b.isRedoing);\r\n return new ModelRawContentChangedEvent(changes, versionId, isUndoing, isRedoing);\r\n }\r\n}\r\n/**\r\n * An event describing a change in injected text.\r\n * @internal\r\n */\r\nexport class ModelInjectedTextChangedEvent {\r\n constructor(changes) {\r\n this.changes = changes;\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport class InternalModelContentChangeEvent {\r\n constructor(rawContentChangedEvent, contentChangedEvent) {\r\n this.rawContentChangedEvent = rawContentChangedEvent;\r\n this.contentChangedEvent = contentChangedEvent;\r\n }\r\n merge(other) {\r\n const rawContentChangedEvent = ModelRawContentChangedEvent.merge(this.rawContentChangedEvent, other.rawContentChangedEvent);\r\n const contentChangedEvent = InternalModelContentChangeEvent._mergeChangeEvents(this.contentChangedEvent, other.contentChangedEvent);\r\n return new InternalModelContentChangeEvent(rawContentChangedEvent, contentChangedEvent);\r\n }\r\n static _mergeChangeEvents(a, b) {\r\n const changes = [].concat(a.changes).concat(b.changes);\r\n const eol = b.eol;\r\n const versionId = b.versionId;\r\n const isUndoing = (a.isUndoing || b.isUndoing);\r\n const isRedoing = (a.isRedoing || b.isRedoing);\r\n const isFlush = (a.isFlush || b.isFlush);\r\n return {\r\n changes: changes,\r\n eol: eol,\r\n versionId: versionId,\r\n isUndoing: isUndoing,\r\n isRedoing: isRedoing,\r\n isFlush: isFlush\r\n };\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as arrays from '../../../base/common/arrays.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { LineTokens } from '../core/lineTokens.js';\r\nimport { Position } from '../core/position.js';\r\nimport { TokenizationRegistry } from '../modes.js';\r\nimport { nullTokenize2 } from '../modes/nullMode.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { StopWatch } from '../../../base/common/stopwatch.js';\r\nimport { MultilineTokensBuilder, countEOL } from './tokensStore.js';\r\nimport * as platform from '../../../base/common/platform.js';\r\nexport class TokenizationStateStore {\r\n constructor() {\r\n this._beginState = [];\r\n this._valid = [];\r\n this._len = 0;\r\n this._invalidLineStartIndex = 0;\r\n }\r\n _reset(initialState) {\r\n this._beginState = [];\r\n this._valid = [];\r\n this._len = 0;\r\n this._invalidLineStartIndex = 0;\r\n if (initialState) {\r\n this._setBeginState(0, initialState);\r\n }\r\n }\r\n flush(initialState) {\r\n this._reset(initialState);\r\n }\r\n get invalidLineStartIndex() {\r\n return this._invalidLineStartIndex;\r\n }\r\n _invalidateLine(lineIndex) {\r\n if (lineIndex < this._len) {\r\n this._valid[lineIndex] = false;\r\n }\r\n if (lineIndex < this._invalidLineStartIndex) {\r\n this._invalidLineStartIndex = lineIndex;\r\n }\r\n }\r\n _isValid(lineIndex) {\r\n if (lineIndex < this._len) {\r\n return this._valid[lineIndex];\r\n }\r\n return false;\r\n }\r\n getBeginState(lineIndex) {\r\n if (lineIndex < this._len) {\r\n return this._beginState[lineIndex];\r\n }\r\n return null;\r\n }\r\n _ensureLine(lineIndex) {\r\n while (lineIndex >= this._len) {\r\n this._beginState[this._len] = null;\r\n this._valid[this._len] = false;\r\n this._len++;\r\n }\r\n }\r\n _deleteLines(start, deleteCount) {\r\n if (deleteCount === 0) {\r\n return;\r\n }\r\n if (start + deleteCount > this._len) {\r\n deleteCount = this._len - start;\r\n }\r\n this._beginState.splice(start, deleteCount);\r\n this._valid.splice(start, deleteCount);\r\n this._len -= deleteCount;\r\n }\r\n _insertLines(insertIndex, insertCount) {\r\n if (insertCount === 0) {\r\n return;\r\n }\r\n let beginState = [];\r\n let valid = [];\r\n for (let i = 0; i < insertCount; i++) {\r\n beginState[i] = null;\r\n valid[i] = false;\r\n }\r\n this._beginState = arrays.arrayInsert(this._beginState, insertIndex, beginState);\r\n this._valid = arrays.arrayInsert(this._valid, insertIndex, valid);\r\n this._len += insertCount;\r\n }\r\n _setValid(lineIndex, valid) {\r\n this._ensureLine(lineIndex);\r\n this._valid[lineIndex] = valid;\r\n }\r\n _setBeginState(lineIndex, beginState) {\r\n this._ensureLine(lineIndex);\r\n this._beginState[lineIndex] = beginState;\r\n }\r\n setEndState(linesLength, lineIndex, endState) {\r\n this._setValid(lineIndex, true);\r\n this._invalidLineStartIndex = lineIndex + 1;\r\n // Check if this was the last line\r\n if (lineIndex === linesLength - 1) {\r\n return;\r\n }\r\n // Check if the end state has changed\r\n const previousEndState = this.getBeginState(lineIndex + 1);\r\n if (previousEndState === null || !endState.equals(previousEndState)) {\r\n this._setBeginState(lineIndex + 1, endState);\r\n this._invalidateLine(lineIndex + 1);\r\n return;\r\n }\r\n // Perhaps we can skip tokenizing some lines...\r\n let i = lineIndex + 1;\r\n while (i < linesLength) {\r\n if (!this._isValid(i)) {\r\n break;\r\n }\r\n i++;\r\n }\r\n this._invalidLineStartIndex = i;\r\n }\r\n setFakeTokens(lineIndex) {\r\n this._setValid(lineIndex, false);\r\n }\r\n //#region Editing\r\n applyEdits(range, eolCount) {\r\n const deletingLinesCnt = range.endLineNumber - range.startLineNumber;\r\n const insertingLinesCnt = eolCount;\r\n const editingLinesCnt = Math.min(deletingLinesCnt, insertingLinesCnt);\r\n for (let j = editingLinesCnt; j >= 0; j--) {\r\n this._invalidateLine(range.startLineNumber + j - 1);\r\n }\r\n this._acceptDeleteRange(range);\r\n this._acceptInsertText(new Position(range.startLineNumber, range.startColumn), eolCount);\r\n }\r\n _acceptDeleteRange(range) {\r\n const firstLineIndex = range.startLineNumber - 1;\r\n if (firstLineIndex >= this._len) {\r\n return;\r\n }\r\n this._deleteLines(range.startLineNumber, range.endLineNumber - range.startLineNumber);\r\n }\r\n _acceptInsertText(position, eolCount) {\r\n const lineIndex = position.lineNumber - 1;\r\n if (lineIndex >= this._len) {\r\n return;\r\n }\r\n this._insertLines(position.lineNumber, eolCount);\r\n }\r\n}\r\nexport class TextModelTokenization extends Disposable {\r\n constructor(textModel) {\r\n super();\r\n this._isDisposed = false;\r\n this._textModel = textModel;\r\n this._tokenizationStateStore = new TokenizationStateStore();\r\n this._tokenizationSupport = null;\r\n this._register(TokenizationRegistry.onDidChange((e) => {\r\n const languageIdentifier = this._textModel.getLanguageIdentifier();\r\n if (e.changedLanguages.indexOf(languageIdentifier.language) === -1) {\r\n return;\r\n }\r\n this._resetTokenizationState();\r\n this._textModel.clearTokens();\r\n }));\r\n this._register(this._textModel.onDidChangeContentFast((e) => {\r\n if (e.isFlush) {\r\n this._resetTokenizationState();\r\n return;\r\n }\r\n for (let i = 0, len = e.changes.length; i < len; i++) {\r\n const change = e.changes[i];\r\n const [eolCount] = countEOL(change.text);\r\n this._tokenizationStateStore.applyEdits(change.range, eolCount);\r\n }\r\n this._beginBackgroundTokenization();\r\n }));\r\n this._register(this._textModel.onDidChangeAttached(() => {\r\n this._beginBackgroundTokenization();\r\n }));\r\n this._register(this._textModel.onDidChangeLanguage(() => {\r\n this._resetTokenizationState();\r\n this._textModel.clearTokens();\r\n }));\r\n this._resetTokenizationState();\r\n }\r\n dispose() {\r\n this._isDisposed = true;\r\n super.dispose();\r\n }\r\n _resetTokenizationState() {\r\n const [tokenizationSupport, initialState] = initializeTokenization(this._textModel);\r\n this._tokenizationSupport = tokenizationSupport;\r\n this._tokenizationStateStore.flush(initialState);\r\n this._beginBackgroundTokenization();\r\n }\r\n _beginBackgroundTokenization() {\r\n if (this._textModel.isAttachedToEditor() && this._hasLinesToTokenize()) {\r\n platform.setImmediate(() => {\r\n if (this._isDisposed) {\r\n // disposed in the meantime\r\n return;\r\n }\r\n this._revalidateTokensNow();\r\n });\r\n }\r\n }\r\n _revalidateTokensNow(toLineNumber = this._textModel.getLineCount()) {\r\n const MAX_ALLOWED_TIME = 1;\r\n const builder = new MultilineTokensBuilder();\r\n const sw = StopWatch.create(false);\r\n while (this._hasLinesToTokenize()) {\r\n if (sw.elapsed() > MAX_ALLOWED_TIME) {\r\n // Stop if MAX_ALLOWED_TIME is reached\r\n break;\r\n }\r\n const tokenizedLineNumber = this._tokenizeOneInvalidLine(builder);\r\n if (tokenizedLineNumber >= toLineNumber) {\r\n break;\r\n }\r\n }\r\n this._beginBackgroundTokenization();\r\n this._textModel.setTokens(builder.tokens);\r\n }\r\n tokenizeViewport(startLineNumber, endLineNumber) {\r\n const builder = new MultilineTokensBuilder();\r\n this._tokenizeViewport(builder, startLineNumber, endLineNumber);\r\n this._textModel.setTokens(builder.tokens);\r\n }\r\n reset() {\r\n this._resetTokenizationState();\r\n this._textModel.clearTokens();\r\n }\r\n forceTokenization(lineNumber) {\r\n const builder = new MultilineTokensBuilder();\r\n this._updateTokensUntilLine(builder, lineNumber);\r\n this._textModel.setTokens(builder.tokens);\r\n }\r\n isCheapToTokenize(lineNumber) {\r\n if (!this._tokenizationSupport) {\r\n return true;\r\n }\r\n const firstInvalidLineNumber = this._tokenizationStateStore.invalidLineStartIndex + 1;\r\n if (lineNumber > firstInvalidLineNumber) {\r\n return false;\r\n }\r\n if (lineNumber < firstInvalidLineNumber) {\r\n return true;\r\n }\r\n if (this._textModel.getLineLength(lineNumber) < 2048 /* CHEAP_TOKENIZATION_LENGTH_LIMIT */) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n _hasLinesToTokenize() {\r\n if (!this._tokenizationSupport) {\r\n return false;\r\n }\r\n return (this._tokenizationStateStore.invalidLineStartIndex < this._textModel.getLineCount());\r\n }\r\n _tokenizeOneInvalidLine(builder) {\r\n if (!this._hasLinesToTokenize()) {\r\n return this._textModel.getLineCount() + 1;\r\n }\r\n const lineNumber = this._tokenizationStateStore.invalidLineStartIndex + 1;\r\n this._updateTokensUntilLine(builder, lineNumber);\r\n return lineNumber;\r\n }\r\n _updateTokensUntilLine(builder, lineNumber) {\r\n if (!this._tokenizationSupport) {\r\n return;\r\n }\r\n const languageIdentifier = this._textModel.getLanguageIdentifier();\r\n const linesLength = this._textModel.getLineCount();\r\n const endLineIndex = lineNumber - 1;\r\n // Validate all states up to and including endLineIndex\r\n for (let lineIndex = this._tokenizationStateStore.invalidLineStartIndex; lineIndex <= endLineIndex; lineIndex++) {\r\n const text = this._textModel.getLineContent(lineIndex + 1);\r\n const lineStartState = this._tokenizationStateStore.getBeginState(lineIndex);\r\n const r = safeTokenize(languageIdentifier, this._tokenizationSupport, text, true, lineStartState);\r\n builder.add(lineIndex + 1, r.tokens);\r\n this._tokenizationStateStore.setEndState(linesLength, lineIndex, r.endState);\r\n lineIndex = this._tokenizationStateStore.invalidLineStartIndex - 1; // -1 because the outer loop increments it\r\n }\r\n }\r\n _tokenizeViewport(builder, startLineNumber, endLineNumber) {\r\n if (!this._tokenizationSupport) {\r\n // nothing to do\r\n return;\r\n }\r\n if (endLineNumber <= this._tokenizationStateStore.invalidLineStartIndex) {\r\n // nothing to do\r\n return;\r\n }\r\n if (startLineNumber <= this._tokenizationStateStore.invalidLineStartIndex) {\r\n // tokenization has reached the viewport start...\r\n this._updateTokensUntilLine(builder, endLineNumber);\r\n return;\r\n }\r\n let nonWhitespaceColumn = this._textModel.getLineFirstNonWhitespaceColumn(startLineNumber);\r\n let fakeLines = [];\r\n let initialState = null;\r\n for (let i = startLineNumber - 1; nonWhitespaceColumn > 0 && i >= 1; i--) {\r\n let newNonWhitespaceIndex = this._textModel.getLineFirstNonWhitespaceColumn(i);\r\n if (newNonWhitespaceIndex === 0) {\r\n continue;\r\n }\r\n if (newNonWhitespaceIndex < nonWhitespaceColumn) {\r\n initialState = this._tokenizationStateStore.getBeginState(i - 1);\r\n if (initialState) {\r\n break;\r\n }\r\n fakeLines.push(this._textModel.getLineContent(i));\r\n nonWhitespaceColumn = newNonWhitespaceIndex;\r\n }\r\n }\r\n if (!initialState) {\r\n initialState = this._tokenizationSupport.getInitialState();\r\n }\r\n const languageIdentifier = this._textModel.getLanguageIdentifier();\r\n let state = initialState;\r\n for (let i = fakeLines.length - 1; i >= 0; i--) {\r\n let r = safeTokenize(languageIdentifier, this._tokenizationSupport, fakeLines[i], false, state);\r\n state = r.endState;\r\n }\r\n for (let lineNumber = startLineNumber; lineNumber <= endLineNumber; lineNumber++) {\r\n let text = this._textModel.getLineContent(lineNumber);\r\n let r = safeTokenize(languageIdentifier, this._tokenizationSupport, text, true, state);\r\n builder.add(lineNumber, r.tokens);\r\n this._tokenizationStateStore.setFakeTokens(lineNumber - 1);\r\n state = r.endState;\r\n }\r\n }\r\n}\r\nfunction initializeTokenization(textModel) {\r\n const languageIdentifier = textModel.getLanguageIdentifier();\r\n let tokenizationSupport = (textModel.isTooLargeForTokenization()\r\n ? null\r\n : TokenizationRegistry.get(languageIdentifier.language));\r\n let initialState = null;\r\n if (tokenizationSupport) {\r\n try {\r\n initialState = tokenizationSupport.getInitialState();\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n tokenizationSupport = null;\r\n }\r\n }\r\n return [tokenizationSupport, initialState];\r\n}\r\nfunction safeTokenize(languageIdentifier, tokenizationSupport, text, hasEOL, state) {\r\n let r = null;\r\n if (tokenizationSupport) {\r\n try {\r\n r = tokenizationSupport.tokenize2(text, hasEOL, state.clone(), 0);\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n }\r\n }\r\n if (!r) {\r\n r = nullTokenize2(languageIdentifier.id, text, state, 0);\r\n }\r\n LineTokens.convertToEndOffset(r.tokens, text.length);\r\n return r;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nfunction roundFloat(number, decimalPoints) {\r\n const decimal = Math.pow(10, decimalPoints);\r\n return Math.round(number * decimal) / decimal;\r\n}\r\nexport class RGBA {\r\n constructor(r, g, b, a = 1) {\r\n this._rgbaBrand = undefined;\r\n this.r = Math.min(255, Math.max(0, r)) | 0;\r\n this.g = Math.min(255, Math.max(0, g)) | 0;\r\n this.b = Math.min(255, Math.max(0, b)) | 0;\r\n this.a = roundFloat(Math.max(Math.min(1, a), 0), 3);\r\n }\r\n static equals(a, b) {\r\n return a.r === b.r && a.g === b.g && a.b === b.b && a.a === b.a;\r\n }\r\n}\r\nexport class HSLA {\r\n constructor(h, s, l, a) {\r\n this._hslaBrand = undefined;\r\n this.h = Math.max(Math.min(360, h), 0) | 0;\r\n this.s = roundFloat(Math.max(Math.min(1, s), 0), 3);\r\n this.l = roundFloat(Math.max(Math.min(1, l), 0), 3);\r\n this.a = roundFloat(Math.max(Math.min(1, a), 0), 3);\r\n }\r\n static equals(a, b) {\r\n return a.h === b.h && a.s === b.s && a.l === b.l && a.a === b.a;\r\n }\r\n /**\r\n * Converts an RGB color value to HSL. Conversion formula\r\n * adapted from http://en.wikipedia.org/wiki/HSL_color_space.\r\n * Assumes r, g, and b are contained in the set [0, 255] and\r\n * returns h in the set [0, 360], s, and l in the set [0, 1].\r\n */\r\n static fromRGBA(rgba) {\r\n const r = rgba.r / 255;\r\n const g = rgba.g / 255;\r\n const b = rgba.b / 255;\r\n const a = rgba.a;\r\n const max = Math.max(r, g, b);\r\n const min = Math.min(r, g, b);\r\n let h = 0;\r\n let s = 0;\r\n const l = (min + max) / 2;\r\n const chroma = max - min;\r\n if (chroma > 0) {\r\n s = Math.min((l <= 0.5 ? chroma / (2 * l) : chroma / (2 - (2 * l))), 1);\r\n switch (max) {\r\n case r:\r\n h = (g - b) / chroma + (g < b ? 6 : 0);\r\n break;\r\n case g:\r\n h = (b - r) / chroma + 2;\r\n break;\r\n case b:\r\n h = (r - g) / chroma + 4;\r\n break;\r\n }\r\n h *= 60;\r\n h = Math.round(h);\r\n }\r\n return new HSLA(h, s, l, a);\r\n }\r\n static _hue2rgb(p, q, t) {\r\n if (t < 0) {\r\n t += 1;\r\n }\r\n if (t > 1) {\r\n t -= 1;\r\n }\r\n if (t < 1 / 6) {\r\n return p + (q - p) * 6 * t;\r\n }\r\n if (t < 1 / 2) {\r\n return q;\r\n }\r\n if (t < 2 / 3) {\r\n return p + (q - p) * (2 / 3 - t) * 6;\r\n }\r\n return p;\r\n }\r\n /**\r\n * Converts an HSL color value to RGB. Conversion formula\r\n * adapted from http://en.wikipedia.org/wiki/HSL_color_space.\r\n * Assumes h in the set [0, 360] s, and l are contained in the set [0, 1] and\r\n * returns r, g, and b in the set [0, 255].\r\n */\r\n static toRGBA(hsla) {\r\n const h = hsla.h / 360;\r\n const { s, l, a } = hsla;\r\n let r, g, b;\r\n if (s === 0) {\r\n r = g = b = l; // achromatic\r\n }\r\n else {\r\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\r\n const p = 2 * l - q;\r\n r = HSLA._hue2rgb(p, q, h + 1 / 3);\r\n g = HSLA._hue2rgb(p, q, h);\r\n b = HSLA._hue2rgb(p, q, h - 1 / 3);\r\n }\r\n return new RGBA(Math.round(r * 255), Math.round(g * 255), Math.round(b * 255), a);\r\n }\r\n}\r\nexport class HSVA {\r\n constructor(h, s, v, a) {\r\n this._hsvaBrand = undefined;\r\n this.h = Math.max(Math.min(360, h), 0) | 0;\r\n this.s = roundFloat(Math.max(Math.min(1, s), 0), 3);\r\n this.v = roundFloat(Math.max(Math.min(1, v), 0), 3);\r\n this.a = roundFloat(Math.max(Math.min(1, a), 0), 3);\r\n }\r\n static equals(a, b) {\r\n return a.h === b.h && a.s === b.s && a.v === b.v && a.a === b.a;\r\n }\r\n // from http://www.rapidtables.com/convert/color/rgb-to-hsv.htm\r\n static fromRGBA(rgba) {\r\n const r = rgba.r / 255;\r\n const g = rgba.g / 255;\r\n const b = rgba.b / 255;\r\n const cmax = Math.max(r, g, b);\r\n const cmin = Math.min(r, g, b);\r\n const delta = cmax - cmin;\r\n const s = cmax === 0 ? 0 : (delta / cmax);\r\n let m;\r\n if (delta === 0) {\r\n m = 0;\r\n }\r\n else if (cmax === r) {\r\n m = ((((g - b) / delta) % 6) + 6) % 6;\r\n }\r\n else if (cmax === g) {\r\n m = ((b - r) / delta) + 2;\r\n }\r\n else {\r\n m = ((r - g) / delta) + 4;\r\n }\r\n return new HSVA(Math.round(m * 60), s, cmax, rgba.a);\r\n }\r\n // from http://www.rapidtables.com/convert/color/hsv-to-rgb.htm\r\n static toRGBA(hsva) {\r\n const { h, s, v, a } = hsva;\r\n const c = v * s;\r\n const x = c * (1 - Math.abs((h / 60) % 2 - 1));\r\n const m = v - c;\r\n let [r, g, b] = [0, 0, 0];\r\n if (h < 60) {\r\n r = c;\r\n g = x;\r\n }\r\n else if (h < 120) {\r\n r = x;\r\n g = c;\r\n }\r\n else if (h < 180) {\r\n g = c;\r\n b = x;\r\n }\r\n else if (h < 240) {\r\n g = x;\r\n b = c;\r\n }\r\n else if (h < 300) {\r\n r = x;\r\n b = c;\r\n }\r\n else if (h <= 360) {\r\n r = c;\r\n b = x;\r\n }\r\n r = Math.round((r + m) * 255);\r\n g = Math.round((g + m) * 255);\r\n b = Math.round((b + m) * 255);\r\n return new RGBA(r, g, b, a);\r\n }\r\n}\r\nexport class Color {\r\n constructor(arg) {\r\n if (!arg) {\r\n throw new Error('Color needs a value');\r\n }\r\n else if (arg instanceof RGBA) {\r\n this.rgba = arg;\r\n }\r\n else if (arg instanceof HSLA) {\r\n this._hsla = arg;\r\n this.rgba = HSLA.toRGBA(arg);\r\n }\r\n else if (arg instanceof HSVA) {\r\n this._hsva = arg;\r\n this.rgba = HSVA.toRGBA(arg);\r\n }\r\n else {\r\n throw new Error('Invalid color ctor argument');\r\n }\r\n }\r\n static fromHex(hex) {\r\n return Color.Format.CSS.parseHex(hex) || Color.red;\r\n }\r\n get hsla() {\r\n if (this._hsla) {\r\n return this._hsla;\r\n }\r\n else {\r\n return HSLA.fromRGBA(this.rgba);\r\n }\r\n }\r\n get hsva() {\r\n if (this._hsva) {\r\n return this._hsva;\r\n }\r\n return HSVA.fromRGBA(this.rgba);\r\n }\r\n equals(other) {\r\n return !!other && RGBA.equals(this.rgba, other.rgba) && HSLA.equals(this.hsla, other.hsla) && HSVA.equals(this.hsva, other.hsva);\r\n }\r\n /**\r\n * http://www.w3.org/TR/WCAG20/#relativeluminancedef\r\n * Returns the number in the set [0, 1]. O => Darkest Black. 1 => Lightest white.\r\n */\r\n getRelativeLuminance() {\r\n const R = Color._relativeLuminanceForComponent(this.rgba.r);\r\n const G = Color._relativeLuminanceForComponent(this.rgba.g);\r\n const B = Color._relativeLuminanceForComponent(this.rgba.b);\r\n const luminance = 0.2126 * R + 0.7152 * G + 0.0722 * B;\r\n return roundFloat(luminance, 4);\r\n }\r\n static _relativeLuminanceForComponent(color) {\r\n const c = color / 255;\r\n return (c <= 0.03928) ? c / 12.92 : Math.pow(((c + 0.055) / 1.055), 2.4);\r\n }\r\n /**\r\n *\thttp://24ways.org/2010/calculating-color-contrast\r\n * Return 'true' if lighter color otherwise 'false'\r\n */\r\n isLighter() {\r\n const yiq = (this.rgba.r * 299 + this.rgba.g * 587 + this.rgba.b * 114) / 1000;\r\n return yiq >= 128;\r\n }\r\n isLighterThan(another) {\r\n const lum1 = this.getRelativeLuminance();\r\n const lum2 = another.getRelativeLuminance();\r\n return lum1 > lum2;\r\n }\r\n isDarkerThan(another) {\r\n const lum1 = this.getRelativeLuminance();\r\n const lum2 = another.getRelativeLuminance();\r\n return lum1 < lum2;\r\n }\r\n lighten(factor) {\r\n return new Color(new HSLA(this.hsla.h, this.hsla.s, this.hsla.l + this.hsla.l * factor, this.hsla.a));\r\n }\r\n darken(factor) {\r\n return new Color(new HSLA(this.hsla.h, this.hsla.s, this.hsla.l - this.hsla.l * factor, this.hsla.a));\r\n }\r\n transparent(factor) {\r\n const { r, g, b, a } = this.rgba;\r\n return new Color(new RGBA(r, g, b, a * factor));\r\n }\r\n isTransparent() {\r\n return this.rgba.a === 0;\r\n }\r\n isOpaque() {\r\n return this.rgba.a === 1;\r\n }\r\n opposite() {\r\n return new Color(new RGBA(255 - this.rgba.r, 255 - this.rgba.g, 255 - this.rgba.b, this.rgba.a));\r\n }\r\n toString() {\r\n return '' + Color.Format.CSS.format(this);\r\n }\r\n static getLighterColor(of, relative, factor) {\r\n if (of.isLighterThan(relative)) {\r\n return of;\r\n }\r\n factor = factor ? factor : 0.5;\r\n const lum1 = of.getRelativeLuminance();\r\n const lum2 = relative.getRelativeLuminance();\r\n factor = factor * (lum2 - lum1) / lum2;\r\n return of.lighten(factor);\r\n }\r\n static getDarkerColor(of, relative, factor) {\r\n if (of.isDarkerThan(relative)) {\r\n return of;\r\n }\r\n factor = factor ? factor : 0.5;\r\n const lum1 = of.getRelativeLuminance();\r\n const lum2 = relative.getRelativeLuminance();\r\n factor = factor * (lum1 - lum2) / lum1;\r\n return of.darken(factor);\r\n }\r\n}\r\nColor.white = new Color(new RGBA(255, 255, 255, 1));\r\nColor.black = new Color(new RGBA(0, 0, 0, 1));\r\nColor.red = new Color(new RGBA(255, 0, 0, 1));\r\nColor.blue = new Color(new RGBA(0, 0, 255, 1));\r\nColor.cyan = new Color(new RGBA(0, 255, 255, 1));\r\nColor.lightgrey = new Color(new RGBA(211, 211, 211, 1));\r\nColor.transparent = new Color(new RGBA(0, 0, 0, 0));\r\n(function (Color) {\r\n let Format;\r\n (function (Format) {\r\n let CSS;\r\n (function (CSS) {\r\n function formatRGB(color) {\r\n if (color.rgba.a === 1) {\r\n return `rgb(${color.rgba.r}, ${color.rgba.g}, ${color.rgba.b})`;\r\n }\r\n return Color.Format.CSS.formatRGBA(color);\r\n }\r\n CSS.formatRGB = formatRGB;\r\n function formatRGBA(color) {\r\n return `rgba(${color.rgba.r}, ${color.rgba.g}, ${color.rgba.b}, ${+(color.rgba.a).toFixed(2)})`;\r\n }\r\n CSS.formatRGBA = formatRGBA;\r\n function formatHSL(color) {\r\n if (color.hsla.a === 1) {\r\n return `hsl(${color.hsla.h}, ${(color.hsla.s * 100).toFixed(2)}%, ${(color.hsla.l * 100).toFixed(2)}%)`;\r\n }\r\n return Color.Format.CSS.formatHSLA(color);\r\n }\r\n CSS.formatHSL = formatHSL;\r\n function formatHSLA(color) {\r\n return `hsla(${color.hsla.h}, ${(color.hsla.s * 100).toFixed(2)}%, ${(color.hsla.l * 100).toFixed(2)}%, ${color.hsla.a.toFixed(2)})`;\r\n }\r\n CSS.formatHSLA = formatHSLA;\r\n function _toTwoDigitHex(n) {\r\n const r = n.toString(16);\r\n return r.length !== 2 ? '0' + r : r;\r\n }\r\n /**\r\n * Formats the color as #RRGGBB\r\n */\r\n function formatHex(color) {\r\n return `#${_toTwoDigitHex(color.rgba.r)}${_toTwoDigitHex(color.rgba.g)}${_toTwoDigitHex(color.rgba.b)}`;\r\n }\r\n CSS.formatHex = formatHex;\r\n /**\r\n * Formats the color as #RRGGBBAA\r\n * If 'compact' is set, colors without transparancy will be printed as #RRGGBB\r\n */\r\n function formatHexA(color, compact = false) {\r\n if (compact && color.rgba.a === 1) {\r\n return Color.Format.CSS.formatHex(color);\r\n }\r\n return `#${_toTwoDigitHex(color.rgba.r)}${_toTwoDigitHex(color.rgba.g)}${_toTwoDigitHex(color.rgba.b)}${_toTwoDigitHex(Math.round(color.rgba.a * 255))}`;\r\n }\r\n CSS.formatHexA = formatHexA;\r\n /**\r\n * The default format will use HEX if opaque and RGBA otherwise.\r\n */\r\n function format(color) {\r\n if (color.isOpaque()) {\r\n return Color.Format.CSS.formatHex(color);\r\n }\r\n return Color.Format.CSS.formatRGBA(color);\r\n }\r\n CSS.format = format;\r\n /**\r\n * Converts an Hex color value to a Color.\r\n * returns r, g, and b are contained in the set [0, 255]\r\n * @param hex string (#RGB, #RGBA, #RRGGBB or #RRGGBBAA).\r\n */\r\n function parseHex(hex) {\r\n const length = hex.length;\r\n if (length === 0) {\r\n // Invalid color\r\n return null;\r\n }\r\n if (hex.charCodeAt(0) !== 35 /* Hash */) {\r\n // Does not begin with a #\r\n return null;\r\n }\r\n if (length === 7) {\r\n // #RRGGBB format\r\n const r = 16 * _parseHexDigit(hex.charCodeAt(1)) + _parseHexDigit(hex.charCodeAt(2));\r\n const g = 16 * _parseHexDigit(hex.charCodeAt(3)) + _parseHexDigit(hex.charCodeAt(4));\r\n const b = 16 * _parseHexDigit(hex.charCodeAt(5)) + _parseHexDigit(hex.charCodeAt(6));\r\n return new Color(new RGBA(r, g, b, 1));\r\n }\r\n if (length === 9) {\r\n // #RRGGBBAA format\r\n const r = 16 * _parseHexDigit(hex.charCodeAt(1)) + _parseHexDigit(hex.charCodeAt(2));\r\n const g = 16 * _parseHexDigit(hex.charCodeAt(3)) + _parseHexDigit(hex.charCodeAt(4));\r\n const b = 16 * _parseHexDigit(hex.charCodeAt(5)) + _parseHexDigit(hex.charCodeAt(6));\r\n const a = 16 * _parseHexDigit(hex.charCodeAt(7)) + _parseHexDigit(hex.charCodeAt(8));\r\n return new Color(new RGBA(r, g, b, a / 255));\r\n }\r\n if (length === 4) {\r\n // #RGB format\r\n const r = _parseHexDigit(hex.charCodeAt(1));\r\n const g = _parseHexDigit(hex.charCodeAt(2));\r\n const b = _parseHexDigit(hex.charCodeAt(3));\r\n return new Color(new RGBA(16 * r + r, 16 * g + g, 16 * b + b));\r\n }\r\n if (length === 5) {\r\n // #RGBA format\r\n const r = _parseHexDigit(hex.charCodeAt(1));\r\n const g = _parseHexDigit(hex.charCodeAt(2));\r\n const b = _parseHexDigit(hex.charCodeAt(3));\r\n const a = _parseHexDigit(hex.charCodeAt(4));\r\n return new Color(new RGBA(16 * r + r, 16 * g + g, 16 * b + b, (16 * a + a) / 255));\r\n }\r\n // Invalid color\r\n return null;\r\n }\r\n CSS.parseHex = parseHex;\r\n function _parseHexDigit(charCode) {\r\n switch (charCode) {\r\n case 48 /* Digit0 */: return 0;\r\n case 49 /* Digit1 */: return 1;\r\n case 50 /* Digit2 */: return 2;\r\n case 51 /* Digit3 */: return 3;\r\n case 52 /* Digit4 */: return 4;\r\n case 53 /* Digit5 */: return 5;\r\n case 54 /* Digit6 */: return 6;\r\n case 55 /* Digit7 */: return 7;\r\n case 56 /* Digit8 */: return 8;\r\n case 57 /* Digit9 */: return 9;\r\n case 97 /* a */: return 10;\r\n case 65 /* A */: return 10;\r\n case 98 /* b */: return 11;\r\n case 66 /* B */: return 11;\r\n case 99 /* c */: return 12;\r\n case 67 /* C */: return 12;\r\n case 100 /* d */: return 13;\r\n case 68 /* D */: return 13;\r\n case 101 /* e */: return 14;\r\n case 69 /* E */: return 14;\r\n case 102 /* f */: return 15;\r\n case 70 /* F */: return 15;\r\n }\r\n return 0;\r\n }\r\n })(CSS = Format.CSS || (Format.CSS = {}));\r\n })(Format = Color.Format || (Color.Format = {}));\r\n})(Color || (Color = {}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { EDITOR_MODEL_DEFAULTS } from '../config/editorOptions.js';\r\nimport { Position } from '../core/position.js';\r\nimport { Range } from '../core/range.js';\r\nimport { Selection } from '../core/selection.js';\r\nimport * as model from '../model.js';\r\nimport { EditStack } from './editStack.js';\r\nimport { guessIndentation } from './indentationGuesser.js';\r\nimport { IntervalNode, IntervalTree, recomputeMaxEnd } from './intervalTree.js';\r\nimport { PieceTreeTextBufferBuilder } from './pieceTreeTextBuffer/pieceTreeTextBufferBuilder.js';\r\nimport { InternalModelContentChangeEvent, LineInjectedText, ModelInjectedTextChangedEvent, ModelRawContentChangedEvent, ModelRawEOLChanged, ModelRawFlush, ModelRawLineChanged, ModelRawLinesDeleted, ModelRawLinesInserted } from './textModelEvents.js';\r\nimport { SearchParams, TextModelSearch } from './textModelSearch.js';\r\nimport { TextModelTokenization } from './textModelTokens.js';\r\nimport { getWordAtText } from './wordHelper.js';\r\nimport { LanguageConfigurationRegistry } from '../modes/languageConfigurationRegistry.js';\r\nimport { NULL_LANGUAGE_IDENTIFIER } from '../modes/nullMode.js';\r\nimport { ignoreBracketsInToken } from '../modes/supports.js';\r\nimport { BracketsUtils } from '../modes/supports/richEditBrackets.js';\r\nimport { TokensStore, countEOL, TokensStore2 } from './tokensStore.js';\r\nimport { Color } from '../../../base/common/color.js';\r\nimport { PieceTreeTextBuffer } from './pieceTreeTextBuffer/pieceTreeTextBuffer.js';\r\nimport { ArrayQueue } from '../../../base/common/arrays.js';\r\nfunction createTextBufferBuilder() {\r\n return new PieceTreeTextBufferBuilder();\r\n}\r\nexport function createTextBufferFactory(text) {\r\n const builder = createTextBufferBuilder();\r\n builder.acceptChunk(text);\r\n return builder.finish();\r\n}\r\nexport function createTextBuffer(value, defaultEOL) {\r\n const factory = (typeof value === 'string' ? createTextBufferFactory(value) : value);\r\n return factory.create(defaultEOL);\r\n}\r\nlet MODEL_ID = 0;\r\nconst LIMIT_FIND_COUNT = 999;\r\nexport const LONG_LINE_BOUNDARY = 10000;\r\nclass TextModelSnapshot {\r\n constructor(source) {\r\n this._source = source;\r\n this._eos = false;\r\n }\r\n read() {\r\n if (this._eos) {\r\n return null;\r\n }\r\n let result = [], resultCnt = 0, resultLength = 0;\r\n do {\r\n let tmp = this._source.read();\r\n if (tmp === null) {\r\n // end-of-stream\r\n this._eos = true;\r\n if (resultCnt === 0) {\r\n return null;\r\n }\r\n else {\r\n return result.join('');\r\n }\r\n }\r\n if (tmp.length > 0) {\r\n result[resultCnt++] = tmp;\r\n resultLength += tmp.length;\r\n }\r\n if (resultLength >= 64 * 1024) {\r\n return result.join('');\r\n }\r\n } while (true);\r\n }\r\n}\r\nconst invalidFunc = () => { throw new Error(`Invalid change accessor`); };\r\nclass BracketSearchCanceled {\r\n constructor() {\r\n this._searchCanceledBrand = undefined;\r\n }\r\n}\r\nBracketSearchCanceled.INSTANCE = new BracketSearchCanceled();\r\nfunction stripBracketSearchCanceled(result) {\r\n if (result instanceof BracketSearchCanceled) {\r\n return null;\r\n }\r\n return result;\r\n}\r\nexport class TextModel extends Disposable {\r\n //#endregion\r\n constructor(source, creationOptions, languageIdentifier, associatedResource = null, undoRedoService) {\r\n super();\r\n //#region Events\r\n this._onWillDispose = this._register(new Emitter());\r\n this.onWillDispose = this._onWillDispose.event;\r\n this._onDidChangeDecorations = this._register(new DidChangeDecorationsEmitter(affectedInjectedTextLines => this.handleBeforeFireDecorationsChangedEvent(affectedInjectedTextLines)));\r\n this.onDidChangeDecorations = this._onDidChangeDecorations.event;\r\n this._onDidChangeLanguage = this._register(new Emitter());\r\n this.onDidChangeLanguage = this._onDidChangeLanguage.event;\r\n this._onDidChangeLanguageConfiguration = this._register(new Emitter());\r\n this.onDidChangeLanguageConfiguration = this._onDidChangeLanguageConfiguration.event;\r\n this._onDidChangeTokens = this._register(new Emitter());\r\n this.onDidChangeTokens = this._onDidChangeTokens.event;\r\n this._onDidChangeOptions = this._register(new Emitter());\r\n this.onDidChangeOptions = this._onDidChangeOptions.event;\r\n this._onDidChangeAttached = this._register(new Emitter());\r\n this.onDidChangeAttached = this._onDidChangeAttached.event;\r\n this._onDidChangeContentOrInjectedText = this._register(new Emitter());\r\n this.onDidChangeContentOrInjectedText = this._onDidChangeContentOrInjectedText.event;\r\n this._eventEmitter = this._register(new DidChangeContentEmitter());\r\n this._register(this._eventEmitter.fastEvent((e) => {\r\n this._onDidChangeContentOrInjectedText.fire(e.rawContentChangedEvent);\r\n }));\r\n // Generate a new unique model id\r\n MODEL_ID++;\r\n this.id = '$model' + MODEL_ID;\r\n this.isForSimpleWidget = creationOptions.isForSimpleWidget;\r\n if (typeof associatedResource === 'undefined' || associatedResource === null) {\r\n this._associatedResource = URI.parse('inmemory://model/' + MODEL_ID);\r\n }\r\n else {\r\n this._associatedResource = associatedResource;\r\n }\r\n this._undoRedoService = undoRedoService;\r\n this._attachedEditorCount = 0;\r\n const { textBuffer, disposable } = createTextBuffer(source, creationOptions.defaultEOL);\r\n this._buffer = textBuffer;\r\n this._bufferDisposable = disposable;\r\n this._options = TextModel.resolveOptions(this._buffer, creationOptions);\r\n const bufferLineCount = this._buffer.getLineCount();\r\n const bufferTextLength = this._buffer.getValueLengthInRange(new Range(1, 1, bufferLineCount, this._buffer.getLineLength(bufferLineCount) + 1), 0 /* TextDefined */);\r\n // !!! Make a decision in the ctor and permanently respect this decision !!!\r\n // If a model is too large at construction time, it will never get tokenized,\r\n // under no circumstances.\r\n if (creationOptions.largeFileOptimizations) {\r\n this._isTooLargeForTokenization = ((bufferTextLength > TextModel.LARGE_FILE_SIZE_THRESHOLD)\r\n || (bufferLineCount > TextModel.LARGE_FILE_LINE_COUNT_THRESHOLD));\r\n }\r\n else {\r\n this._isTooLargeForTokenization = false;\r\n }\r\n this._isTooLargeForSyncing = (bufferTextLength > TextModel.MODEL_SYNC_LIMIT);\r\n this._versionId = 1;\r\n this._alternativeVersionId = 1;\r\n this._initialUndoRedoSnapshot = null;\r\n this._isDisposed = false;\r\n this._isDisposing = false;\r\n this._languageIdentifier = languageIdentifier || NULL_LANGUAGE_IDENTIFIER;\r\n this._languageRegistryListener = LanguageConfigurationRegistry.onDidChange((e) => {\r\n if (e.languageIdentifier.id === this._languageIdentifier.id) {\r\n this._onDidChangeLanguageConfiguration.fire({});\r\n }\r\n });\r\n this._instanceId = strings.singleLetterHash(MODEL_ID);\r\n this._lastDecorationId = 0;\r\n this._decorations = Object.create(null);\r\n this._decorationsTree = new DecorationsTrees();\r\n this._commandManager = new EditStack(this, undoRedoService);\r\n this._isUndoing = false;\r\n this._isRedoing = false;\r\n this._trimAutoWhitespaceLines = null;\r\n this._tokens = new TokensStore();\r\n this._tokens2 = new TokensStore2();\r\n this._tokenization = new TextModelTokenization(this);\r\n }\r\n static resolveOptions(textBuffer, options) {\r\n if (options.detectIndentation) {\r\n const guessedIndentation = guessIndentation(textBuffer, options.tabSize, options.insertSpaces);\r\n return new model.TextModelResolvedOptions({\r\n tabSize: guessedIndentation.tabSize,\r\n indentSize: guessedIndentation.tabSize,\r\n insertSpaces: guessedIndentation.insertSpaces,\r\n trimAutoWhitespace: options.trimAutoWhitespace,\r\n defaultEOL: options.defaultEOL\r\n });\r\n }\r\n return new model.TextModelResolvedOptions({\r\n tabSize: options.tabSize,\r\n indentSize: options.indentSize,\r\n insertSpaces: options.insertSpaces,\r\n trimAutoWhitespace: options.trimAutoWhitespace,\r\n defaultEOL: options.defaultEOL\r\n });\r\n }\r\n onDidChangeContentFast(listener) {\r\n return this._eventEmitter.fastEvent((e) => listener(e.contentChangedEvent));\r\n }\r\n onDidChangeContent(listener) {\r\n return this._eventEmitter.slowEvent((e) => listener(e.contentChangedEvent));\r\n }\r\n dispose() {\r\n this._isDisposing = true;\r\n this._onWillDispose.fire();\r\n this._languageRegistryListener.dispose();\r\n this._tokenization.dispose();\r\n this._isDisposed = true;\r\n super.dispose();\r\n this._bufferDisposable.dispose();\r\n this._isDisposing = false;\r\n // Manually release reference to previous text buffer to avoid large leaks\r\n // in case someone leaks a TextModel reference\r\n const emptyDisposedTextBuffer = new PieceTreeTextBuffer([], '', '\\n', false, false, true, true);\r\n emptyDisposedTextBuffer.dispose();\r\n this._buffer = emptyDisposedTextBuffer;\r\n }\r\n _assertNotDisposed() {\r\n if (this._isDisposed) {\r\n throw new Error('Model is disposed!');\r\n }\r\n }\r\n _emitContentChangedEvent(rawChange, change) {\r\n if (this._isDisposing) {\r\n // Do not confuse listeners by emitting any event after disposing\r\n return;\r\n }\r\n this._eventEmitter.fire(new InternalModelContentChangeEvent(rawChange, change));\r\n }\r\n setValue(value) {\r\n this._assertNotDisposed();\r\n if (value === null) {\r\n // There's nothing to do\r\n return;\r\n }\r\n const { textBuffer, disposable } = createTextBuffer(value, this._options.defaultEOL);\r\n this._setValueFromTextBuffer(textBuffer, disposable);\r\n }\r\n _createContentChanged2(range, rangeOffset, rangeLength, text, isUndoing, isRedoing, isFlush) {\r\n return {\r\n changes: [{\r\n range: range,\r\n rangeOffset: rangeOffset,\r\n rangeLength: rangeLength,\r\n text: text,\r\n }],\r\n eol: this._buffer.getEOL(),\r\n versionId: this.getVersionId(),\r\n isUndoing: isUndoing,\r\n isRedoing: isRedoing,\r\n isFlush: isFlush\r\n };\r\n }\r\n _setValueFromTextBuffer(textBuffer, textBufferDisposable) {\r\n this._assertNotDisposed();\r\n const oldFullModelRange = this.getFullModelRange();\r\n const oldModelValueLength = this.getValueLengthInRange(oldFullModelRange);\r\n const endLineNumber = this.getLineCount();\r\n const endColumn = this.getLineMaxColumn(endLineNumber);\r\n this._buffer = textBuffer;\r\n this._bufferDisposable.dispose();\r\n this._bufferDisposable = textBufferDisposable;\r\n this._increaseVersionId();\r\n // Flush all tokens\r\n this._tokens.flush();\r\n this._tokens2.flush();\r\n // Destroy all my decorations\r\n this._decorations = Object.create(null);\r\n this._decorationsTree = new DecorationsTrees();\r\n // Destroy my edit history and settings\r\n this._commandManager.clear();\r\n this._trimAutoWhitespaceLines = null;\r\n this._emitContentChangedEvent(new ModelRawContentChangedEvent([\r\n new ModelRawFlush()\r\n ], this._versionId, false, false), this._createContentChanged2(new Range(1, 1, endLineNumber, endColumn), 0, oldModelValueLength, this.getValue(), false, false, true));\r\n }\r\n setEOL(eol) {\r\n this._assertNotDisposed();\r\n const newEOL = (eol === 1 /* CRLF */ ? '\\r\\n' : '\\n');\r\n if (this._buffer.getEOL() === newEOL) {\r\n // Nothing to do\r\n return;\r\n }\r\n const oldFullModelRange = this.getFullModelRange();\r\n const oldModelValueLength = this.getValueLengthInRange(oldFullModelRange);\r\n const endLineNumber = this.getLineCount();\r\n const endColumn = this.getLineMaxColumn(endLineNumber);\r\n this._onBeforeEOLChange();\r\n this._buffer.setEOL(newEOL);\r\n this._increaseVersionId();\r\n this._onAfterEOLChange();\r\n this._emitContentChangedEvent(new ModelRawContentChangedEvent([\r\n new ModelRawEOLChanged()\r\n ], this._versionId, false, false), this._createContentChanged2(new Range(1, 1, endLineNumber, endColumn), 0, oldModelValueLength, this.getValue(), false, false, false));\r\n }\r\n _onBeforeEOLChange() {\r\n // Ensure all decorations get their `range` set.\r\n this._decorationsTree.ensureAllNodesHaveRanges(this);\r\n }\r\n _onAfterEOLChange() {\r\n // Transform back `range` to offsets\r\n const versionId = this.getVersionId();\r\n const allDecorations = this._decorationsTree.collectNodesPostOrder();\r\n for (let i = 0, len = allDecorations.length; i < len; i++) {\r\n const node = allDecorations[i];\r\n const range = node.range; // the range is defined due to `_onBeforeEOLChange`\r\n const delta = node.cachedAbsoluteStart - node.start;\r\n const startOffset = this._buffer.getOffsetAt(range.startLineNumber, range.startColumn);\r\n const endOffset = this._buffer.getOffsetAt(range.endLineNumber, range.endColumn);\r\n node.cachedAbsoluteStart = startOffset;\r\n node.cachedAbsoluteEnd = endOffset;\r\n node.cachedVersionId = versionId;\r\n node.start = startOffset - delta;\r\n node.end = endOffset - delta;\r\n recomputeMaxEnd(node);\r\n }\r\n }\r\n onBeforeAttached() {\r\n this._attachedEditorCount++;\r\n if (this._attachedEditorCount === 1) {\r\n this._onDidChangeAttached.fire(undefined);\r\n }\r\n }\r\n onBeforeDetached() {\r\n this._attachedEditorCount--;\r\n if (this._attachedEditorCount === 0) {\r\n this._onDidChangeAttached.fire(undefined);\r\n }\r\n }\r\n isAttachedToEditor() {\r\n return this._attachedEditorCount > 0;\r\n }\r\n getAttachedEditorCount() {\r\n return this._attachedEditorCount;\r\n }\r\n isTooLargeForSyncing() {\r\n return this._isTooLargeForSyncing;\r\n }\r\n isTooLargeForTokenization() {\r\n return this._isTooLargeForTokenization;\r\n }\r\n isDisposed() {\r\n return this._isDisposed;\r\n }\r\n isDominatedByLongLines() {\r\n this._assertNotDisposed();\r\n if (this.isTooLargeForTokenization()) {\r\n // Cannot word wrap huge files anyways, so it doesn't really matter\r\n return false;\r\n }\r\n let smallLineCharCount = 0;\r\n let longLineCharCount = 0;\r\n const lineCount = this._buffer.getLineCount();\r\n for (let lineNumber = 1; lineNumber <= lineCount; lineNumber++) {\r\n const lineLength = this._buffer.getLineLength(lineNumber);\r\n if (lineLength >= LONG_LINE_BOUNDARY) {\r\n longLineCharCount += lineLength;\r\n }\r\n else {\r\n smallLineCharCount += lineLength;\r\n }\r\n }\r\n return (longLineCharCount > smallLineCharCount);\r\n }\r\n get uri() {\r\n return this._associatedResource;\r\n }\r\n //#region Options\r\n getOptions() {\r\n this._assertNotDisposed();\r\n return this._options;\r\n }\r\n getFormattingOptions() {\r\n return {\r\n tabSize: this._options.indentSize,\r\n insertSpaces: this._options.insertSpaces\r\n };\r\n }\r\n updateOptions(_newOpts) {\r\n this._assertNotDisposed();\r\n let tabSize = (typeof _newOpts.tabSize !== 'undefined') ? _newOpts.tabSize : this._options.tabSize;\r\n let indentSize = (typeof _newOpts.indentSize !== 'undefined') ? _newOpts.indentSize : this._options.indentSize;\r\n let insertSpaces = (typeof _newOpts.insertSpaces !== 'undefined') ? _newOpts.insertSpaces : this._options.insertSpaces;\r\n let trimAutoWhitespace = (typeof _newOpts.trimAutoWhitespace !== 'undefined') ? _newOpts.trimAutoWhitespace : this._options.trimAutoWhitespace;\r\n let newOpts = new model.TextModelResolvedOptions({\r\n tabSize: tabSize,\r\n indentSize: indentSize,\r\n insertSpaces: insertSpaces,\r\n defaultEOL: this._options.defaultEOL,\r\n trimAutoWhitespace: trimAutoWhitespace\r\n });\r\n if (this._options.equals(newOpts)) {\r\n return;\r\n }\r\n let e = this._options.createChangeEvent(newOpts);\r\n this._options = newOpts;\r\n this._onDidChangeOptions.fire(e);\r\n }\r\n detectIndentation(defaultInsertSpaces, defaultTabSize) {\r\n this._assertNotDisposed();\r\n let guessedIndentation = guessIndentation(this._buffer, defaultTabSize, defaultInsertSpaces);\r\n this.updateOptions({\r\n insertSpaces: guessedIndentation.insertSpaces,\r\n tabSize: guessedIndentation.tabSize,\r\n indentSize: guessedIndentation.tabSize, // TODO@Alex: guess indentSize independent of tabSize\r\n });\r\n }\r\n static _normalizeIndentationFromWhitespace(str, indentSize, insertSpaces) {\r\n let spacesCnt = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n if (str.charAt(i) === '\\t') {\r\n spacesCnt += indentSize;\r\n }\r\n else {\r\n spacesCnt++;\r\n }\r\n }\r\n let result = '';\r\n if (!insertSpaces) {\r\n let tabsCnt = Math.floor(spacesCnt / indentSize);\r\n spacesCnt = spacesCnt % indentSize;\r\n for (let i = 0; i < tabsCnt; i++) {\r\n result += '\\t';\r\n }\r\n }\r\n for (let i = 0; i < spacesCnt; i++) {\r\n result += ' ';\r\n }\r\n return result;\r\n }\r\n static normalizeIndentation(str, indentSize, insertSpaces) {\r\n let firstNonWhitespaceIndex = strings.firstNonWhitespaceIndex(str);\r\n if (firstNonWhitespaceIndex === -1) {\r\n firstNonWhitespaceIndex = str.length;\r\n }\r\n return TextModel._normalizeIndentationFromWhitespace(str.substring(0, firstNonWhitespaceIndex), indentSize, insertSpaces) + str.substring(firstNonWhitespaceIndex);\r\n }\r\n normalizeIndentation(str) {\r\n this._assertNotDisposed();\r\n return TextModel.normalizeIndentation(str, this._options.indentSize, this._options.insertSpaces);\r\n }\r\n //#endregion\r\n //#region Reading\r\n getVersionId() {\r\n this._assertNotDisposed();\r\n return this._versionId;\r\n }\r\n mightContainRTL() {\r\n return this._buffer.mightContainRTL();\r\n }\r\n mightContainUnusualLineTerminators() {\r\n return this._buffer.mightContainUnusualLineTerminators();\r\n }\r\n removeUnusualLineTerminators(selections = null) {\r\n const matches = this.findMatches(strings.UNUSUAL_LINE_TERMINATORS.source, false, true, false, null, false, 1073741824 /* MAX_SAFE_SMALL_INTEGER */);\r\n this._buffer.resetMightContainUnusualLineTerminators();\r\n this.pushEditOperations(selections, matches.map(m => ({ range: m.range, text: null })), () => null);\r\n }\r\n mightContainNonBasicASCII() {\r\n return this._buffer.mightContainNonBasicASCII();\r\n }\r\n getAlternativeVersionId() {\r\n this._assertNotDisposed();\r\n return this._alternativeVersionId;\r\n }\r\n getInitialUndoRedoSnapshot() {\r\n this._assertNotDisposed();\r\n return this._initialUndoRedoSnapshot;\r\n }\r\n getOffsetAt(rawPosition) {\r\n this._assertNotDisposed();\r\n let position = this._validatePosition(rawPosition.lineNumber, rawPosition.column, 0 /* Relaxed */);\r\n return this._buffer.getOffsetAt(position.lineNumber, position.column);\r\n }\r\n getPositionAt(rawOffset) {\r\n this._assertNotDisposed();\r\n let offset = (Math.min(this._buffer.getLength(), Math.max(0, rawOffset)));\r\n return this._buffer.getPositionAt(offset);\r\n }\r\n _increaseVersionId() {\r\n this._versionId = this._versionId + 1;\r\n this._alternativeVersionId = this._versionId;\r\n }\r\n _overwriteVersionId(versionId) {\r\n this._versionId = versionId;\r\n }\r\n _overwriteAlternativeVersionId(newAlternativeVersionId) {\r\n this._alternativeVersionId = newAlternativeVersionId;\r\n }\r\n _overwriteInitialUndoRedoSnapshot(newInitialUndoRedoSnapshot) {\r\n this._initialUndoRedoSnapshot = newInitialUndoRedoSnapshot;\r\n }\r\n getValue(eol, preserveBOM = false) {\r\n this._assertNotDisposed();\r\n const fullModelRange = this.getFullModelRange();\r\n const fullModelValue = this.getValueInRange(fullModelRange, eol);\r\n if (preserveBOM) {\r\n return this._buffer.getBOM() + fullModelValue;\r\n }\r\n return fullModelValue;\r\n }\r\n createSnapshot(preserveBOM = false) {\r\n return new TextModelSnapshot(this._buffer.createSnapshot(preserveBOM));\r\n }\r\n getValueLength(eol, preserveBOM = false) {\r\n this._assertNotDisposed();\r\n const fullModelRange = this.getFullModelRange();\r\n const fullModelValue = this.getValueLengthInRange(fullModelRange, eol);\r\n if (preserveBOM) {\r\n return this._buffer.getBOM().length + fullModelValue;\r\n }\r\n return fullModelValue;\r\n }\r\n getValueInRange(rawRange, eol = 0 /* TextDefined */) {\r\n this._assertNotDisposed();\r\n return this._buffer.getValueInRange(this.validateRange(rawRange), eol);\r\n }\r\n getValueLengthInRange(rawRange, eol = 0 /* TextDefined */) {\r\n this._assertNotDisposed();\r\n return this._buffer.getValueLengthInRange(this.validateRange(rawRange), eol);\r\n }\r\n getCharacterCountInRange(rawRange, eol = 0 /* TextDefined */) {\r\n this._assertNotDisposed();\r\n return this._buffer.getCharacterCountInRange(this.validateRange(rawRange), eol);\r\n }\r\n getLineCount() {\r\n this._assertNotDisposed();\r\n return this._buffer.getLineCount();\r\n }\r\n getLineContent(lineNumber) {\r\n this._assertNotDisposed();\r\n if (lineNumber < 1 || lineNumber > this.getLineCount()) {\r\n throw new Error('Illegal value for lineNumber');\r\n }\r\n return this._buffer.getLineContent(lineNumber);\r\n }\r\n getLineLength(lineNumber) {\r\n this._assertNotDisposed();\r\n if (lineNumber < 1 || lineNumber > this.getLineCount()) {\r\n throw new Error('Illegal value for lineNumber');\r\n }\r\n return this._buffer.getLineLength(lineNumber);\r\n }\r\n getLinesContent() {\r\n this._assertNotDisposed();\r\n return this._buffer.getLinesContent();\r\n }\r\n getEOL() {\r\n this._assertNotDisposed();\r\n return this._buffer.getEOL();\r\n }\r\n getEndOfLineSequence() {\r\n this._assertNotDisposed();\r\n return (this._buffer.getEOL() === '\\n'\r\n ? 0 /* LF */\r\n : 1 /* CRLF */);\r\n }\r\n getLineMinColumn(lineNumber) {\r\n this._assertNotDisposed();\r\n return 1;\r\n }\r\n getLineMaxColumn(lineNumber) {\r\n this._assertNotDisposed();\r\n if (lineNumber < 1 || lineNumber > this.getLineCount()) {\r\n throw new Error('Illegal value for lineNumber');\r\n }\r\n return this._buffer.getLineLength(lineNumber) + 1;\r\n }\r\n getLineFirstNonWhitespaceColumn(lineNumber) {\r\n this._assertNotDisposed();\r\n if (lineNumber < 1 || lineNumber > this.getLineCount()) {\r\n throw new Error('Illegal value for lineNumber');\r\n }\r\n return this._buffer.getLineFirstNonWhitespaceColumn(lineNumber);\r\n }\r\n getLineLastNonWhitespaceColumn(lineNumber) {\r\n this._assertNotDisposed();\r\n if (lineNumber < 1 || lineNumber > this.getLineCount()) {\r\n throw new Error('Illegal value for lineNumber');\r\n }\r\n return this._buffer.getLineLastNonWhitespaceColumn(lineNumber);\r\n }\r\n /**\r\n * Validates `range` is within buffer bounds, but allows it to sit in between surrogate pairs, etc.\r\n * Will try to not allocate if possible.\r\n */\r\n _validateRangeRelaxedNoAllocations(range) {\r\n const linesCount = this._buffer.getLineCount();\r\n const initialStartLineNumber = range.startLineNumber;\r\n const initialStartColumn = range.startColumn;\r\n let startLineNumber = Math.floor((typeof initialStartLineNumber === 'number' && !isNaN(initialStartLineNumber)) ? initialStartLineNumber : 1);\r\n let startColumn = Math.floor((typeof initialStartColumn === 'number' && !isNaN(initialStartColumn)) ? initialStartColumn : 1);\r\n if (startLineNumber < 1) {\r\n startLineNumber = 1;\r\n startColumn = 1;\r\n }\r\n else if (startLineNumber > linesCount) {\r\n startLineNumber = linesCount;\r\n startColumn = this.getLineMaxColumn(startLineNumber);\r\n }\r\n else {\r\n if (startColumn <= 1) {\r\n startColumn = 1;\r\n }\r\n else {\r\n const maxColumn = this.getLineMaxColumn(startLineNumber);\r\n if (startColumn >= maxColumn) {\r\n startColumn = maxColumn;\r\n }\r\n }\r\n }\r\n const initialEndLineNumber = range.endLineNumber;\r\n const initialEndColumn = range.endColumn;\r\n let endLineNumber = Math.floor((typeof initialEndLineNumber === 'number' && !isNaN(initialEndLineNumber)) ? initialEndLineNumber : 1);\r\n let endColumn = Math.floor((typeof initialEndColumn === 'number' && !isNaN(initialEndColumn)) ? initialEndColumn : 1);\r\n if (endLineNumber < 1) {\r\n endLineNumber = 1;\r\n endColumn = 1;\r\n }\r\n else if (endLineNumber > linesCount) {\r\n endLineNumber = linesCount;\r\n endColumn = this.getLineMaxColumn(endLineNumber);\r\n }\r\n else {\r\n if (endColumn <= 1) {\r\n endColumn = 1;\r\n }\r\n else {\r\n const maxColumn = this.getLineMaxColumn(endLineNumber);\r\n if (endColumn >= maxColumn) {\r\n endColumn = maxColumn;\r\n }\r\n }\r\n }\r\n if (initialStartLineNumber === startLineNumber\r\n && initialStartColumn === startColumn\r\n && initialEndLineNumber === endLineNumber\r\n && initialEndColumn === endColumn\r\n && range instanceof Range\r\n && !(range instanceof Selection)) {\r\n return range;\r\n }\r\n return new Range(startLineNumber, startColumn, endLineNumber, endColumn);\r\n }\r\n _isValidPosition(lineNumber, column, validationType) {\r\n if (typeof lineNumber !== 'number' || typeof column !== 'number') {\r\n return false;\r\n }\r\n if (isNaN(lineNumber) || isNaN(column)) {\r\n return false;\r\n }\r\n if (lineNumber < 1 || column < 1) {\r\n return false;\r\n }\r\n if ((lineNumber | 0) !== lineNumber || (column | 0) !== column) {\r\n return false;\r\n }\r\n const lineCount = this._buffer.getLineCount();\r\n if (lineNumber > lineCount) {\r\n return false;\r\n }\r\n if (column === 1) {\r\n return true;\r\n }\r\n const maxColumn = this.getLineMaxColumn(lineNumber);\r\n if (column > maxColumn) {\r\n return false;\r\n }\r\n if (validationType === 1 /* SurrogatePairs */) {\r\n // !!At this point, column > 1\r\n const charCodeBefore = this._buffer.getLineCharCode(lineNumber, column - 2);\r\n if (strings.isHighSurrogate(charCodeBefore)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n _validatePosition(_lineNumber, _column, validationType) {\r\n const lineNumber = Math.floor((typeof _lineNumber === 'number' && !isNaN(_lineNumber)) ? _lineNumber : 1);\r\n const column = Math.floor((typeof _column === 'number' && !isNaN(_column)) ? _column : 1);\r\n const lineCount = this._buffer.getLineCount();\r\n if (lineNumber < 1) {\r\n return new Position(1, 1);\r\n }\r\n if (lineNumber > lineCount) {\r\n return new Position(lineCount, this.getLineMaxColumn(lineCount));\r\n }\r\n if (column <= 1) {\r\n return new Position(lineNumber, 1);\r\n }\r\n const maxColumn = this.getLineMaxColumn(lineNumber);\r\n if (column >= maxColumn) {\r\n return new Position(lineNumber, maxColumn);\r\n }\r\n if (validationType === 1 /* SurrogatePairs */) {\r\n // If the position would end up in the middle of a high-low surrogate pair,\r\n // we move it to before the pair\r\n // !!At this point, column > 1\r\n const charCodeBefore = this._buffer.getLineCharCode(lineNumber, column - 2);\r\n if (strings.isHighSurrogate(charCodeBefore)) {\r\n return new Position(lineNumber, column - 1);\r\n }\r\n }\r\n return new Position(lineNumber, column);\r\n }\r\n validatePosition(position) {\r\n const validationType = 1 /* SurrogatePairs */;\r\n this._assertNotDisposed();\r\n // Avoid object allocation and cover most likely case\r\n if (position instanceof Position) {\r\n if (this._isValidPosition(position.lineNumber, position.column, validationType)) {\r\n return position;\r\n }\r\n }\r\n return this._validatePosition(position.lineNumber, position.column, validationType);\r\n }\r\n _isValidRange(range, validationType) {\r\n const startLineNumber = range.startLineNumber;\r\n const startColumn = range.startColumn;\r\n const endLineNumber = range.endLineNumber;\r\n const endColumn = range.endColumn;\r\n if (!this._isValidPosition(startLineNumber, startColumn, 0 /* Relaxed */)) {\r\n return false;\r\n }\r\n if (!this._isValidPosition(endLineNumber, endColumn, 0 /* Relaxed */)) {\r\n return false;\r\n }\r\n if (validationType === 1 /* SurrogatePairs */) {\r\n const charCodeBeforeStart = (startColumn > 1 ? this._buffer.getLineCharCode(startLineNumber, startColumn - 2) : 0);\r\n const charCodeBeforeEnd = (endColumn > 1 && endColumn <= this._buffer.getLineLength(endLineNumber) ? this._buffer.getLineCharCode(endLineNumber, endColumn - 2) : 0);\r\n const startInsideSurrogatePair = strings.isHighSurrogate(charCodeBeforeStart);\r\n const endInsideSurrogatePair = strings.isHighSurrogate(charCodeBeforeEnd);\r\n if (!startInsideSurrogatePair && !endInsideSurrogatePair) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n }\r\n validateRange(_range) {\r\n const validationType = 1 /* SurrogatePairs */;\r\n this._assertNotDisposed();\r\n // Avoid object allocation and cover most likely case\r\n if ((_range instanceof Range) && !(_range instanceof Selection)) {\r\n if (this._isValidRange(_range, validationType)) {\r\n return _range;\r\n }\r\n }\r\n const start = this._validatePosition(_range.startLineNumber, _range.startColumn, 0 /* Relaxed */);\r\n const end = this._validatePosition(_range.endLineNumber, _range.endColumn, 0 /* Relaxed */);\r\n const startLineNumber = start.lineNumber;\r\n const startColumn = start.column;\r\n const endLineNumber = end.lineNumber;\r\n const endColumn = end.column;\r\n if (validationType === 1 /* SurrogatePairs */) {\r\n const charCodeBeforeStart = (startColumn > 1 ? this._buffer.getLineCharCode(startLineNumber, startColumn - 2) : 0);\r\n const charCodeBeforeEnd = (endColumn > 1 && endColumn <= this._buffer.getLineLength(endLineNumber) ? this._buffer.getLineCharCode(endLineNumber, endColumn - 2) : 0);\r\n const startInsideSurrogatePair = strings.isHighSurrogate(charCodeBeforeStart);\r\n const endInsideSurrogatePair = strings.isHighSurrogate(charCodeBeforeEnd);\r\n if (!startInsideSurrogatePair && !endInsideSurrogatePair) {\r\n return new Range(startLineNumber, startColumn, endLineNumber, endColumn);\r\n }\r\n if (startLineNumber === endLineNumber && startColumn === endColumn) {\r\n // do not expand a collapsed range, simply move it to a valid location\r\n return new Range(startLineNumber, startColumn - 1, endLineNumber, endColumn - 1);\r\n }\r\n if (startInsideSurrogatePair && endInsideSurrogatePair) {\r\n // expand range at both ends\r\n return new Range(startLineNumber, startColumn - 1, endLineNumber, endColumn + 1);\r\n }\r\n if (startInsideSurrogatePair) {\r\n // only expand range at the start\r\n return new Range(startLineNumber, startColumn - 1, endLineNumber, endColumn);\r\n }\r\n // only expand range at the end\r\n return new Range(startLineNumber, startColumn, endLineNumber, endColumn + 1);\r\n }\r\n return new Range(startLineNumber, startColumn, endLineNumber, endColumn);\r\n }\r\n modifyPosition(rawPosition, offset) {\r\n this._assertNotDisposed();\r\n let candidate = this.getOffsetAt(rawPosition) + offset;\r\n return this.getPositionAt(Math.min(this._buffer.getLength(), Math.max(0, candidate)));\r\n }\r\n getFullModelRange() {\r\n this._assertNotDisposed();\r\n const lineCount = this.getLineCount();\r\n return new Range(1, 1, lineCount, this.getLineMaxColumn(lineCount));\r\n }\r\n findMatchesLineByLine(searchRange, searchData, captureMatches, limitResultCount) {\r\n return this._buffer.findMatchesLineByLine(searchRange, searchData, captureMatches, limitResultCount);\r\n }\r\n findMatches(searchString, rawSearchScope, isRegex, matchCase, wordSeparators, captureMatches, limitResultCount = LIMIT_FIND_COUNT) {\r\n this._assertNotDisposed();\r\n let searchRanges = null;\r\n if (rawSearchScope !== null) {\r\n if (!Array.isArray(rawSearchScope)) {\r\n rawSearchScope = [rawSearchScope];\r\n }\r\n if (rawSearchScope.every((searchScope) => Range.isIRange(searchScope))) {\r\n searchRanges = rawSearchScope.map((searchScope) => this.validateRange(searchScope));\r\n }\r\n }\r\n if (searchRanges === null) {\r\n searchRanges = [this.getFullModelRange()];\r\n }\r\n searchRanges = searchRanges.sort((d1, d2) => d1.startLineNumber - d2.startLineNumber || d1.startColumn - d2.startColumn);\r\n const uniqueSearchRanges = [];\r\n uniqueSearchRanges.push(searchRanges.reduce((prev, curr) => {\r\n if (Range.areIntersecting(prev, curr)) {\r\n return prev.plusRange(curr);\r\n }\r\n uniqueSearchRanges.push(prev);\r\n return curr;\r\n }));\r\n let matchMapper;\r\n if (!isRegex && searchString.indexOf('\\n') < 0) {\r\n // not regex, not multi line\r\n const searchParams = new SearchParams(searchString, isRegex, matchCase, wordSeparators);\r\n const searchData = searchParams.parseSearchRequest();\r\n if (!searchData) {\r\n return [];\r\n }\r\n matchMapper = (searchRange) => this.findMatchesLineByLine(searchRange, searchData, captureMatches, limitResultCount);\r\n }\r\n else {\r\n matchMapper = (searchRange) => TextModelSearch.findMatches(this, new SearchParams(searchString, isRegex, matchCase, wordSeparators), searchRange, captureMatches, limitResultCount);\r\n }\r\n return uniqueSearchRanges.map(matchMapper).reduce((arr, matches) => arr.concat(matches), []);\r\n }\r\n findNextMatch(searchString, rawSearchStart, isRegex, matchCase, wordSeparators, captureMatches) {\r\n this._assertNotDisposed();\r\n const searchStart = this.validatePosition(rawSearchStart);\r\n if (!isRegex && searchString.indexOf('\\n') < 0) {\r\n const searchParams = new SearchParams(searchString, isRegex, matchCase, wordSeparators);\r\n const searchData = searchParams.parseSearchRequest();\r\n if (!searchData) {\r\n return null;\r\n }\r\n const lineCount = this.getLineCount();\r\n let searchRange = new Range(searchStart.lineNumber, searchStart.column, lineCount, this.getLineMaxColumn(lineCount));\r\n let ret = this.findMatchesLineByLine(searchRange, searchData, captureMatches, 1);\r\n TextModelSearch.findNextMatch(this, new SearchParams(searchString, isRegex, matchCase, wordSeparators), searchStart, captureMatches);\r\n if (ret.length > 0) {\r\n return ret[0];\r\n }\r\n searchRange = new Range(1, 1, searchStart.lineNumber, this.getLineMaxColumn(searchStart.lineNumber));\r\n ret = this.findMatchesLineByLine(searchRange, searchData, captureMatches, 1);\r\n if (ret.length > 0) {\r\n return ret[0];\r\n }\r\n return null;\r\n }\r\n return TextModelSearch.findNextMatch(this, new SearchParams(searchString, isRegex, matchCase, wordSeparators), searchStart, captureMatches);\r\n }\r\n findPreviousMatch(searchString, rawSearchStart, isRegex, matchCase, wordSeparators, captureMatches) {\r\n this._assertNotDisposed();\r\n const searchStart = this.validatePosition(rawSearchStart);\r\n return TextModelSearch.findPreviousMatch(this, new SearchParams(searchString, isRegex, matchCase, wordSeparators), searchStart, captureMatches);\r\n }\r\n //#endregion\r\n //#region Editing\r\n pushStackElement() {\r\n this._commandManager.pushStackElement();\r\n }\r\n popStackElement() {\r\n this._commandManager.popStackElement();\r\n }\r\n pushEOL(eol) {\r\n const currentEOL = (this.getEOL() === '\\n' ? 0 /* LF */ : 1 /* CRLF */);\r\n if (currentEOL === eol) {\r\n return;\r\n }\r\n try {\r\n this._onDidChangeDecorations.beginDeferredEmit();\r\n this._eventEmitter.beginDeferredEmit();\r\n if (this._initialUndoRedoSnapshot === null) {\r\n this._initialUndoRedoSnapshot = this._undoRedoService.createSnapshot(this.uri);\r\n }\r\n this._commandManager.pushEOL(eol);\r\n }\r\n finally {\r\n this._eventEmitter.endDeferredEmit();\r\n this._onDidChangeDecorations.endDeferredEmit();\r\n }\r\n }\r\n _validateEditOperation(rawOperation) {\r\n if (rawOperation instanceof model.ValidAnnotatedEditOperation) {\r\n return rawOperation;\r\n }\r\n return new model.ValidAnnotatedEditOperation(rawOperation.identifier || null, this.validateRange(rawOperation.range), rawOperation.text, rawOperation.forceMoveMarkers || false, rawOperation.isAutoWhitespaceEdit || false, rawOperation._isTracked || false);\r\n }\r\n _validateEditOperations(rawOperations) {\r\n const result = [];\r\n for (let i = 0, len = rawOperations.length; i < len; i++) {\r\n result[i] = this._validateEditOperation(rawOperations[i]);\r\n }\r\n return result;\r\n }\r\n pushEditOperations(beforeCursorState, editOperations, cursorStateComputer) {\r\n try {\r\n this._onDidChangeDecorations.beginDeferredEmit();\r\n this._eventEmitter.beginDeferredEmit();\r\n return this._pushEditOperations(beforeCursorState, this._validateEditOperations(editOperations), cursorStateComputer);\r\n }\r\n finally {\r\n this._eventEmitter.endDeferredEmit();\r\n this._onDidChangeDecorations.endDeferredEmit();\r\n }\r\n }\r\n _pushEditOperations(beforeCursorState, editOperations, cursorStateComputer) {\r\n if (this._options.trimAutoWhitespace && this._trimAutoWhitespaceLines) {\r\n // Go through each saved line number and insert a trim whitespace edit\r\n // if it is safe to do so (no conflicts with other edits).\r\n let incomingEdits = editOperations.map((op) => {\r\n return {\r\n range: this.validateRange(op.range),\r\n text: op.text\r\n };\r\n });\r\n // Sometimes, auto-formatters change ranges automatically which can cause undesired auto whitespace trimming near the cursor\r\n // We'll use the following heuristic: if the edits occur near the cursor, then it's ok to trim auto whitespace\r\n let editsAreNearCursors = true;\r\n if (beforeCursorState) {\r\n for (let i = 0, len = beforeCursorState.length; i < len; i++) {\r\n let sel = beforeCursorState[i];\r\n let foundEditNearSel = false;\r\n for (let j = 0, lenJ = incomingEdits.length; j < lenJ; j++) {\r\n let editRange = incomingEdits[j].range;\r\n let selIsAbove = editRange.startLineNumber > sel.endLineNumber;\r\n let selIsBelow = sel.startLineNumber > editRange.endLineNumber;\r\n if (!selIsAbove && !selIsBelow) {\r\n foundEditNearSel = true;\r\n break;\r\n }\r\n }\r\n if (!foundEditNearSel) {\r\n editsAreNearCursors = false;\r\n break;\r\n }\r\n }\r\n }\r\n if (editsAreNearCursors) {\r\n for (let i = 0, len = this._trimAutoWhitespaceLines.length; i < len; i++) {\r\n let trimLineNumber = this._trimAutoWhitespaceLines[i];\r\n let maxLineColumn = this.getLineMaxColumn(trimLineNumber);\r\n let allowTrimLine = true;\r\n for (let j = 0, lenJ = incomingEdits.length; j < lenJ; j++) {\r\n let editRange = incomingEdits[j].range;\r\n let editText = incomingEdits[j].text;\r\n if (trimLineNumber < editRange.startLineNumber || trimLineNumber > editRange.endLineNumber) {\r\n // `trimLine` is completely outside this edit\r\n continue;\r\n }\r\n // At this point:\r\n // editRange.startLineNumber <= trimLine <= editRange.endLineNumber\r\n if (trimLineNumber === editRange.startLineNumber && editRange.startColumn === maxLineColumn\r\n && editRange.isEmpty() && editText && editText.length > 0 && editText.charAt(0) === '\\n') {\r\n // This edit inserts a new line (and maybe other text) after `trimLine`\r\n continue;\r\n }\r\n if (trimLineNumber === editRange.startLineNumber && editRange.startColumn === 1\r\n && editRange.isEmpty() && editText && editText.length > 0 && editText.charAt(editText.length - 1) === '\\n') {\r\n // This edit inserts a new line (and maybe other text) before `trimLine`\r\n continue;\r\n }\r\n // Looks like we can't trim this line as it would interfere with an incoming edit\r\n allowTrimLine = false;\r\n break;\r\n }\r\n if (allowTrimLine) {\r\n const trimRange = new Range(trimLineNumber, 1, trimLineNumber, maxLineColumn);\r\n editOperations.push(new model.ValidAnnotatedEditOperation(null, trimRange, null, false, false, false));\r\n }\r\n }\r\n }\r\n this._trimAutoWhitespaceLines = null;\r\n }\r\n if (this._initialUndoRedoSnapshot === null) {\r\n this._initialUndoRedoSnapshot = this._undoRedoService.createSnapshot(this.uri);\r\n }\r\n return this._commandManager.pushEditOperation(beforeCursorState, editOperations, cursorStateComputer);\r\n }\r\n _applyUndo(changes, eol, resultingAlternativeVersionId, resultingSelection) {\r\n const edits = changes.map((change) => {\r\n const rangeStart = this.getPositionAt(change.newPosition);\r\n const rangeEnd = this.getPositionAt(change.newEnd);\r\n return {\r\n range: new Range(rangeStart.lineNumber, rangeStart.column, rangeEnd.lineNumber, rangeEnd.column),\r\n text: change.oldText\r\n };\r\n });\r\n this._applyUndoRedoEdits(edits, eol, true, false, resultingAlternativeVersionId, resultingSelection);\r\n }\r\n _applyRedo(changes, eol, resultingAlternativeVersionId, resultingSelection) {\r\n const edits = changes.map((change) => {\r\n const rangeStart = this.getPositionAt(change.oldPosition);\r\n const rangeEnd = this.getPositionAt(change.oldEnd);\r\n return {\r\n range: new Range(rangeStart.lineNumber, rangeStart.column, rangeEnd.lineNumber, rangeEnd.column),\r\n text: change.newText\r\n };\r\n });\r\n this._applyUndoRedoEdits(edits, eol, false, true, resultingAlternativeVersionId, resultingSelection);\r\n }\r\n _applyUndoRedoEdits(edits, eol, isUndoing, isRedoing, resultingAlternativeVersionId, resultingSelection) {\r\n try {\r\n this._onDidChangeDecorations.beginDeferredEmit();\r\n this._eventEmitter.beginDeferredEmit();\r\n this._isUndoing = isUndoing;\r\n this._isRedoing = isRedoing;\r\n this.applyEdits(edits, false);\r\n this.setEOL(eol);\r\n this._overwriteAlternativeVersionId(resultingAlternativeVersionId);\r\n }\r\n finally {\r\n this._isUndoing = false;\r\n this._isRedoing = false;\r\n this._eventEmitter.endDeferredEmit(resultingSelection);\r\n this._onDidChangeDecorations.endDeferredEmit();\r\n }\r\n }\r\n applyEdits(rawOperations, computeUndoEdits = false) {\r\n try {\r\n this._onDidChangeDecorations.beginDeferredEmit();\r\n this._eventEmitter.beginDeferredEmit();\r\n const operations = this._validateEditOperations(rawOperations);\r\n return this._doApplyEdits(operations, computeUndoEdits);\r\n }\r\n finally {\r\n this._eventEmitter.endDeferredEmit();\r\n this._onDidChangeDecorations.endDeferredEmit();\r\n }\r\n }\r\n _doApplyEdits(rawOperations, computeUndoEdits) {\r\n const oldLineCount = this._buffer.getLineCount();\r\n const result = this._buffer.applyEdits(rawOperations, this._options.trimAutoWhitespace, computeUndoEdits);\r\n const newLineCount = this._buffer.getLineCount();\r\n const contentChanges = result.changes;\r\n this._trimAutoWhitespaceLines = result.trimAutoWhitespaceLineNumbers;\r\n if (contentChanges.length !== 0) {\r\n // We do a first pass to update tokens and decorations\r\n // because we want to read decorations in the second pass\r\n // where we will emit content change events\r\n // and we want to read the final decorations\r\n for (let i = 0, len = contentChanges.length; i < len; i++) {\r\n const change = contentChanges[i];\r\n const [eolCount, firstLineLength, lastLineLength] = countEOL(change.text);\r\n this._tokens.acceptEdit(change.range, eolCount, firstLineLength);\r\n this._tokens2.acceptEdit(change.range, eolCount, firstLineLength, lastLineLength, change.text.length > 0 ? change.text.charCodeAt(0) : 0 /* Null */);\r\n this._decorationsTree.acceptReplace(change.rangeOffset, change.rangeLength, change.text.length, change.forceMoveMarkers);\r\n }\r\n let rawContentChanges = [];\r\n this._increaseVersionId();\r\n let lineCount = oldLineCount;\r\n for (let i = 0, len = contentChanges.length; i < len; i++) {\r\n const change = contentChanges[i];\r\n const [eolCount] = countEOL(change.text);\r\n this._onDidChangeDecorations.fire();\r\n const startLineNumber = change.range.startLineNumber;\r\n const endLineNumber = change.range.endLineNumber;\r\n const deletingLinesCnt = endLineNumber - startLineNumber;\r\n const insertingLinesCnt = eolCount;\r\n const editingLinesCnt = Math.min(deletingLinesCnt, insertingLinesCnt);\r\n const changeLineCountDelta = (insertingLinesCnt - deletingLinesCnt);\r\n const currentEditStartLineNumber = newLineCount - lineCount - changeLineCountDelta + startLineNumber;\r\n const firstEditLineNumber = currentEditStartLineNumber;\r\n const lastInsertedLineNumber = currentEditStartLineNumber + insertingLinesCnt;\r\n const decorationsWithInjectedTextInEditedRange = this._decorationsTree.getInjectedTextInInterval(this, this.getOffsetAt(new Position(firstEditLineNumber, 1)), this.getOffsetAt(new Position(lastInsertedLineNumber, this.getLineMaxColumn(lastInsertedLineNumber))), 0);\r\n const injectedTextInEditedRange = LineInjectedText.fromDecorations(decorationsWithInjectedTextInEditedRange);\r\n const injectedTextInEditedRangeQueue = new ArrayQueue(injectedTextInEditedRange);\r\n for (let j = editingLinesCnt; j >= 0; j--) {\r\n const editLineNumber = startLineNumber + j;\r\n const currentEditLineNumber = currentEditStartLineNumber + j;\r\n injectedTextInEditedRangeQueue.takeFromEndWhile(r => r.lineNumber > currentEditLineNumber);\r\n const decorationsInCurrentLine = injectedTextInEditedRangeQueue.takeFromEndWhile(r => r.lineNumber === currentEditLineNumber);\r\n rawContentChanges.push(new ModelRawLineChanged(editLineNumber, this.getLineContent(currentEditLineNumber), decorationsInCurrentLine));\r\n }\r\n if (editingLinesCnt < deletingLinesCnt) {\r\n // Must delete some lines\r\n const spliceStartLineNumber = startLineNumber + editingLinesCnt;\r\n rawContentChanges.push(new ModelRawLinesDeleted(spliceStartLineNumber + 1, endLineNumber));\r\n }\r\n if (editingLinesCnt < insertingLinesCnt) {\r\n const injectedTextInEditedRangeQueue = new ArrayQueue(injectedTextInEditedRange);\r\n // Must insert some lines\r\n const spliceLineNumber = startLineNumber + editingLinesCnt;\r\n const cnt = insertingLinesCnt - editingLinesCnt;\r\n const fromLineNumber = newLineCount - lineCount - cnt + spliceLineNumber + 1;\r\n let injectedTexts = [];\r\n let newLines = [];\r\n for (let i = 0; i < cnt; i++) {\r\n let lineNumber = fromLineNumber + i;\r\n newLines[i] = this.getLineContent(lineNumber);\r\n injectedTextInEditedRangeQueue.takeWhile(r => r.lineNumber < lineNumber);\r\n injectedTexts[i] = injectedTextInEditedRangeQueue.takeWhile(r => r.lineNumber === lineNumber);\r\n }\r\n rawContentChanges.push(new ModelRawLinesInserted(spliceLineNumber + 1, startLineNumber + insertingLinesCnt, newLines, injectedTexts));\r\n }\r\n lineCount += changeLineCountDelta;\r\n }\r\n this._emitContentChangedEvent(new ModelRawContentChangedEvent(rawContentChanges, this.getVersionId(), this._isUndoing, this._isRedoing), {\r\n changes: contentChanges,\r\n eol: this._buffer.getEOL(),\r\n versionId: this.getVersionId(),\r\n isUndoing: this._isUndoing,\r\n isRedoing: this._isRedoing,\r\n isFlush: false\r\n });\r\n }\r\n return (result.reverseEdits === null ? undefined : result.reverseEdits);\r\n }\r\n undo() {\r\n return this._undoRedoService.undo(this.uri);\r\n }\r\n canUndo() {\r\n return this._undoRedoService.canUndo(this.uri);\r\n }\r\n redo() {\r\n return this._undoRedoService.redo(this.uri);\r\n }\r\n canRedo() {\r\n return this._undoRedoService.canRedo(this.uri);\r\n }\r\n //#endregion\r\n //#region Decorations\r\n handleBeforeFireDecorationsChangedEvent(affectedInjectedTextLines) {\r\n // This is called before the decoration changed event is fired.\r\n if (affectedInjectedTextLines === null || affectedInjectedTextLines.size === 0) {\r\n return;\r\n }\r\n const affectedLines = [...affectedInjectedTextLines];\r\n const lineChangeEvents = affectedLines.map(lineNumber => new ModelRawLineChanged(lineNumber, this.getLineContent(lineNumber), this._getInjectedTextInLine(lineNumber)));\r\n this._onDidChangeContentOrInjectedText.fire(new ModelInjectedTextChangedEvent(lineChangeEvents));\r\n }\r\n changeDecorations(callback, ownerId = 0) {\r\n this._assertNotDisposed();\r\n try {\r\n this._onDidChangeDecorations.beginDeferredEmit();\r\n return this._changeDecorations(ownerId, callback);\r\n }\r\n finally {\r\n this._onDidChangeDecorations.endDeferredEmit();\r\n }\r\n }\r\n _changeDecorations(ownerId, callback) {\r\n let changeAccessor = {\r\n addDecoration: (range, options) => {\r\n return this._deltaDecorationsImpl(ownerId, [], [{ range: range, options: options }])[0];\r\n },\r\n changeDecoration: (id, newRange) => {\r\n this._changeDecorationImpl(id, newRange);\r\n },\r\n changeDecorationOptions: (id, options) => {\r\n this._changeDecorationOptionsImpl(id, _normalizeOptions(options));\r\n },\r\n removeDecoration: (id) => {\r\n this._deltaDecorationsImpl(ownerId, [id], []);\r\n },\r\n deltaDecorations: (oldDecorations, newDecorations) => {\r\n if (oldDecorations.length === 0 && newDecorations.length === 0) {\r\n // nothing to do\r\n return [];\r\n }\r\n return this._deltaDecorationsImpl(ownerId, oldDecorations, newDecorations);\r\n }\r\n };\r\n let result = null;\r\n try {\r\n result = callback(changeAccessor);\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n }\r\n // Invalidate change accessor\r\n changeAccessor.addDecoration = invalidFunc;\r\n changeAccessor.changeDecoration = invalidFunc;\r\n changeAccessor.changeDecorationOptions = invalidFunc;\r\n changeAccessor.removeDecoration = invalidFunc;\r\n changeAccessor.deltaDecorations = invalidFunc;\r\n return result;\r\n }\r\n deltaDecorations(oldDecorations, newDecorations, ownerId = 0) {\r\n this._assertNotDisposed();\r\n if (!oldDecorations) {\r\n oldDecorations = [];\r\n }\r\n if (oldDecorations.length === 0 && newDecorations.length === 0) {\r\n // nothing to do\r\n return [];\r\n }\r\n try {\r\n this._onDidChangeDecorations.beginDeferredEmit();\r\n return this._deltaDecorationsImpl(ownerId, oldDecorations, newDecorations);\r\n }\r\n finally {\r\n this._onDidChangeDecorations.endDeferredEmit();\r\n }\r\n }\r\n _getTrackedRange(id) {\r\n return this.getDecorationRange(id);\r\n }\r\n _setTrackedRange(id, newRange, newStickiness) {\r\n const node = (id ? this._decorations[id] : null);\r\n if (!node) {\r\n if (!newRange) {\r\n // node doesn't exist, the request is to delete => nothing to do\r\n return null;\r\n }\r\n // node doesn't exist, the request is to set => add the tracked range\r\n return this._deltaDecorationsImpl(0, [], [{ range: newRange, options: TRACKED_RANGE_OPTIONS[newStickiness] }])[0];\r\n }\r\n if (!newRange) {\r\n // node exists, the request is to delete => delete node\r\n this._decorationsTree.delete(node);\r\n delete this._decorations[node.id];\r\n return null;\r\n }\r\n // node exists, the request is to set => change the tracked range and its options\r\n const range = this._validateRangeRelaxedNoAllocations(newRange);\r\n const startOffset = this._buffer.getOffsetAt(range.startLineNumber, range.startColumn);\r\n const endOffset = this._buffer.getOffsetAt(range.endLineNumber, range.endColumn);\r\n this._decorationsTree.delete(node);\r\n node.reset(this.getVersionId(), startOffset, endOffset, range);\r\n node.setOptions(TRACKED_RANGE_OPTIONS[newStickiness]);\r\n this._decorationsTree.insert(node);\r\n return node.id;\r\n }\r\n removeAllDecorationsWithOwnerId(ownerId) {\r\n if (this._isDisposed) {\r\n return;\r\n }\r\n const nodes = this._decorationsTree.collectNodesFromOwner(ownerId);\r\n for (let i = 0, len = nodes.length; i < len; i++) {\r\n const node = nodes[i];\r\n this._decorationsTree.delete(node);\r\n delete this._decorations[node.id];\r\n }\r\n }\r\n getDecorationOptions(decorationId) {\r\n const node = this._decorations[decorationId];\r\n if (!node) {\r\n return null;\r\n }\r\n return node.options;\r\n }\r\n getDecorationRange(decorationId) {\r\n const node = this._decorations[decorationId];\r\n if (!node) {\r\n return null;\r\n }\r\n return this._decorationsTree.getNodeRange(this, node);\r\n }\r\n getLineDecorations(lineNumber, ownerId = 0, filterOutValidation = false) {\r\n if (lineNumber < 1 || lineNumber > this.getLineCount()) {\r\n return [];\r\n }\r\n return this.getLinesDecorations(lineNumber, lineNumber, ownerId, filterOutValidation);\r\n }\r\n getLinesDecorations(_startLineNumber, _endLineNumber, ownerId = 0, filterOutValidation = false) {\r\n let lineCount = this.getLineCount();\r\n let startLineNumber = Math.min(lineCount, Math.max(1, _startLineNumber));\r\n let endLineNumber = Math.min(lineCount, Math.max(1, _endLineNumber));\r\n let endColumn = this.getLineMaxColumn(endLineNumber);\r\n return this._getDecorationsInRange(new Range(startLineNumber, 1, endLineNumber, endColumn), ownerId, filterOutValidation);\r\n }\r\n getDecorationsInRange(range, ownerId = 0, filterOutValidation = false) {\r\n let validatedRange = this.validateRange(range);\r\n return this._getDecorationsInRange(validatedRange, ownerId, filterOutValidation);\r\n }\r\n getOverviewRulerDecorations(ownerId = 0, filterOutValidation = false) {\r\n return this._decorationsTree.getAll(this, ownerId, filterOutValidation, true);\r\n }\r\n getInjectedTextDecorations(ownerId = 0) {\r\n return this._decorationsTree.getAllInjectedText(this, ownerId);\r\n }\r\n _getInjectedTextInLine(lineNumber) {\r\n const startOffset = this._buffer.getOffsetAt(lineNumber, 1);\r\n const endOffset = startOffset + this._buffer.getLineLength(lineNumber);\r\n const result = this._decorationsTree.getInjectedTextInInterval(this, startOffset, endOffset, 0);\r\n return LineInjectedText.fromDecorations(result).filter(t => t.lineNumber === lineNumber);\r\n }\r\n getAllDecorations(ownerId = 0, filterOutValidation = false) {\r\n return this._decorationsTree.getAll(this, ownerId, filterOutValidation, false);\r\n }\r\n _getDecorationsInRange(filterRange, filterOwnerId, filterOutValidation) {\r\n const startOffset = this._buffer.getOffsetAt(filterRange.startLineNumber, filterRange.startColumn);\r\n const endOffset = this._buffer.getOffsetAt(filterRange.endLineNumber, filterRange.endColumn);\r\n return this._decorationsTree.getAllInInterval(this, startOffset, endOffset, filterOwnerId, filterOutValidation);\r\n }\r\n getRangeAt(start, end) {\r\n return this._buffer.getRangeAt(start, end - start);\r\n }\r\n _changeDecorationImpl(decorationId, _range) {\r\n const node = this._decorations[decorationId];\r\n if (!node) {\r\n return;\r\n }\r\n if (node.options.after) {\r\n const oldRange = this.getDecorationRange(decorationId);\r\n this._onDidChangeDecorations.recordLineAffectedByInjectedText(oldRange.endLineNumber);\r\n }\r\n if (node.options.before) {\r\n const oldRange = this.getDecorationRange(decorationId);\r\n this._onDidChangeDecorations.recordLineAffectedByInjectedText(oldRange.startLineNumber);\r\n }\r\n const range = this._validateRangeRelaxedNoAllocations(_range);\r\n const startOffset = this._buffer.getOffsetAt(range.startLineNumber, range.startColumn);\r\n const endOffset = this._buffer.getOffsetAt(range.endLineNumber, range.endColumn);\r\n this._decorationsTree.delete(node);\r\n node.reset(this.getVersionId(), startOffset, endOffset, range);\r\n this._decorationsTree.insert(node);\r\n this._onDidChangeDecorations.checkAffectedAndFire(node.options);\r\n if (node.options.after) {\r\n this._onDidChangeDecorations.recordLineAffectedByInjectedText(range.endLineNumber);\r\n }\r\n if (node.options.before) {\r\n this._onDidChangeDecorations.recordLineAffectedByInjectedText(range.startLineNumber);\r\n }\r\n }\r\n _changeDecorationOptionsImpl(decorationId, options) {\r\n const node = this._decorations[decorationId];\r\n if (!node) {\r\n return;\r\n }\r\n const nodeWasInOverviewRuler = (node.options.overviewRuler && node.options.overviewRuler.color ? true : false);\r\n const nodeIsInOverviewRuler = (options.overviewRuler && options.overviewRuler.color ? true : false);\r\n this._onDidChangeDecorations.checkAffectedAndFire(node.options);\r\n this._onDidChangeDecorations.checkAffectedAndFire(options);\r\n if (node.options.after || options.after) {\r\n const nodeRange = this._decorationsTree.getNodeRange(this, node);\r\n this._onDidChangeDecorations.recordLineAffectedByInjectedText(nodeRange.endLineNumber);\r\n }\r\n if (node.options.before || options.before) {\r\n const nodeRange = this._decorationsTree.getNodeRange(this, node);\r\n this._onDidChangeDecorations.recordLineAffectedByInjectedText(nodeRange.startLineNumber);\r\n }\r\n if (nodeWasInOverviewRuler !== nodeIsInOverviewRuler) {\r\n // Delete + Insert due to an overview ruler status change\r\n this._decorationsTree.delete(node);\r\n node.setOptions(options);\r\n this._decorationsTree.insert(node);\r\n }\r\n else {\r\n node.setOptions(options);\r\n }\r\n }\r\n _deltaDecorationsImpl(ownerId, oldDecorationsIds, newDecorations) {\r\n const versionId = this.getVersionId();\r\n const oldDecorationsLen = oldDecorationsIds.length;\r\n let oldDecorationIndex = 0;\r\n const newDecorationsLen = newDecorations.length;\r\n let newDecorationIndex = 0;\r\n let result = new Array(newDecorationsLen);\r\n while (oldDecorationIndex < oldDecorationsLen || newDecorationIndex < newDecorationsLen) {\r\n let node = null;\r\n if (oldDecorationIndex < oldDecorationsLen) {\r\n // (1) get ourselves an old node\r\n do {\r\n node = this._decorations[oldDecorationsIds[oldDecorationIndex++]];\r\n } while (!node && oldDecorationIndex < oldDecorationsLen);\r\n // (2) remove the node from the tree (if it exists)\r\n if (node) {\r\n if (node.options.after) {\r\n const nodeRange = this._decorationsTree.getNodeRange(this, node);\r\n this._onDidChangeDecorations.recordLineAffectedByInjectedText(nodeRange.endLineNumber);\r\n }\r\n if (node.options.before) {\r\n const nodeRange = this._decorationsTree.getNodeRange(this, node);\r\n this._onDidChangeDecorations.recordLineAffectedByInjectedText(nodeRange.startLineNumber);\r\n }\r\n this._decorationsTree.delete(node);\r\n this._onDidChangeDecorations.checkAffectedAndFire(node.options);\r\n }\r\n }\r\n if (newDecorationIndex < newDecorationsLen) {\r\n // (3) create a new node if necessary\r\n if (!node) {\r\n const internalDecorationId = (++this._lastDecorationId);\r\n const decorationId = `${this._instanceId};${internalDecorationId}`;\r\n node = new IntervalNode(decorationId, 0, 0);\r\n this._decorations[decorationId] = node;\r\n }\r\n // (4) initialize node\r\n const newDecoration = newDecorations[newDecorationIndex];\r\n const range = this._validateRangeRelaxedNoAllocations(newDecoration.range);\r\n const options = _normalizeOptions(newDecoration.options);\r\n const startOffset = this._buffer.getOffsetAt(range.startLineNumber, range.startColumn);\r\n const endOffset = this._buffer.getOffsetAt(range.endLineNumber, range.endColumn);\r\n node.ownerId = ownerId;\r\n node.reset(versionId, startOffset, endOffset, range);\r\n node.setOptions(options);\r\n if (node.options.after) {\r\n this._onDidChangeDecorations.recordLineAffectedByInjectedText(range.endLineNumber);\r\n }\r\n if (node.options.before) {\r\n this._onDidChangeDecorations.recordLineAffectedByInjectedText(range.startLineNumber);\r\n }\r\n this._onDidChangeDecorations.checkAffectedAndFire(options);\r\n this._decorationsTree.insert(node);\r\n result[newDecorationIndex] = node.id;\r\n newDecorationIndex++;\r\n }\r\n else {\r\n if (node) {\r\n delete this._decorations[node.id];\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n setTokens(tokens) {\r\n if (tokens.length === 0) {\r\n return;\r\n }\r\n let ranges = [];\r\n for (let i = 0, len = tokens.length; i < len; i++) {\r\n const element = tokens[i];\r\n let minChangedLineNumber = 0;\r\n let maxChangedLineNumber = 0;\r\n let hasChange = false;\r\n for (let j = 0, lenJ = element.tokens.length; j < lenJ; j++) {\r\n const lineNumber = element.startLineNumber + j;\r\n if (hasChange) {\r\n this._tokens.setTokens(this._languageIdentifier.id, lineNumber - 1, this._buffer.getLineLength(lineNumber), element.tokens[j], false);\r\n maxChangedLineNumber = lineNumber;\r\n }\r\n else {\r\n const lineHasChange = this._tokens.setTokens(this._languageIdentifier.id, lineNumber - 1, this._buffer.getLineLength(lineNumber), element.tokens[j], true);\r\n if (lineHasChange) {\r\n hasChange = true;\r\n minChangedLineNumber = lineNumber;\r\n maxChangedLineNumber = lineNumber;\r\n }\r\n }\r\n }\r\n if (hasChange) {\r\n ranges.push({ fromLineNumber: minChangedLineNumber, toLineNumber: maxChangedLineNumber });\r\n }\r\n }\r\n if (ranges.length > 0) {\r\n this._emitModelTokensChangedEvent({\r\n tokenizationSupportChanged: false,\r\n semanticTokensApplied: false,\r\n ranges: ranges\r\n });\r\n }\r\n }\r\n setSemanticTokens(tokens, isComplete) {\r\n this._tokens2.set(tokens, isComplete);\r\n this._emitModelTokensChangedEvent({\r\n tokenizationSupportChanged: false,\r\n semanticTokensApplied: tokens !== null,\r\n ranges: [{ fromLineNumber: 1, toLineNumber: this.getLineCount() }]\r\n });\r\n }\r\n hasCompleteSemanticTokens() {\r\n return this._tokens2.isComplete();\r\n }\r\n hasSomeSemanticTokens() {\r\n return !this._tokens2.isEmpty();\r\n }\r\n setPartialSemanticTokens(range, tokens) {\r\n if (this.hasCompleteSemanticTokens()) {\r\n return;\r\n }\r\n const changedRange = this._tokens2.setPartial(range, tokens);\r\n this._emitModelTokensChangedEvent({\r\n tokenizationSupportChanged: false,\r\n semanticTokensApplied: true,\r\n ranges: [{ fromLineNumber: changedRange.startLineNumber, toLineNumber: changedRange.endLineNumber }]\r\n });\r\n }\r\n tokenizeViewport(startLineNumber, endLineNumber) {\r\n startLineNumber = Math.max(1, startLineNumber);\r\n endLineNumber = Math.min(this._buffer.getLineCount(), endLineNumber);\r\n this._tokenization.tokenizeViewport(startLineNumber, endLineNumber);\r\n }\r\n clearTokens() {\r\n this._tokens.flush();\r\n this._emitModelTokensChangedEvent({\r\n tokenizationSupportChanged: true,\r\n semanticTokensApplied: false,\r\n ranges: [{\r\n fromLineNumber: 1,\r\n toLineNumber: this._buffer.getLineCount()\r\n }]\r\n });\r\n }\r\n _emitModelTokensChangedEvent(e) {\r\n if (!this._isDisposing) {\r\n this._onDidChangeTokens.fire(e);\r\n }\r\n }\r\n resetTokenization() {\r\n this._tokenization.reset();\r\n }\r\n forceTokenization(lineNumber) {\r\n if (lineNumber < 1 || lineNumber > this.getLineCount()) {\r\n throw new Error('Illegal value for lineNumber');\r\n }\r\n this._tokenization.forceTokenization(lineNumber);\r\n }\r\n isCheapToTokenize(lineNumber) {\r\n return this._tokenization.isCheapToTokenize(lineNumber);\r\n }\r\n tokenizeIfCheap(lineNumber) {\r\n if (this.isCheapToTokenize(lineNumber)) {\r\n this.forceTokenization(lineNumber);\r\n }\r\n }\r\n getLineTokens(lineNumber) {\r\n if (lineNumber < 1 || lineNumber > this.getLineCount()) {\r\n throw new Error('Illegal value for lineNumber');\r\n }\r\n return this._getLineTokens(lineNumber);\r\n }\r\n _getLineTokens(lineNumber) {\r\n const lineText = this.getLineContent(lineNumber);\r\n const syntacticTokens = this._tokens.getTokens(this._languageIdentifier.id, lineNumber - 1, lineText);\r\n return this._tokens2.addSemanticTokens(lineNumber, syntacticTokens);\r\n }\r\n getLanguageIdentifier() {\r\n return this._languageIdentifier;\r\n }\r\n getModeId() {\r\n return this._languageIdentifier.language;\r\n }\r\n setMode(languageIdentifier) {\r\n if (this._languageIdentifier.id === languageIdentifier.id) {\r\n // There's nothing to do\r\n return;\r\n }\r\n let e = {\r\n oldLanguage: this._languageIdentifier.language,\r\n newLanguage: languageIdentifier.language\r\n };\r\n this._languageIdentifier = languageIdentifier;\r\n this._onDidChangeLanguage.fire(e);\r\n this._onDidChangeLanguageConfiguration.fire({});\r\n }\r\n getLanguageIdAtPosition(lineNumber, column) {\r\n const position = this.validatePosition(new Position(lineNumber, column));\r\n const lineTokens = this.getLineTokens(position.lineNumber);\r\n return lineTokens.getLanguageId(lineTokens.findTokenIndexAtOffset(position.column - 1));\r\n }\r\n // Having tokens allows implementing additional helper methods\r\n getWordAtPosition(_position) {\r\n this._assertNotDisposed();\r\n const position = this.validatePosition(_position);\r\n const lineContent = this.getLineContent(position.lineNumber);\r\n const lineTokens = this._getLineTokens(position.lineNumber);\r\n const tokenIndex = lineTokens.findTokenIndexAtOffset(position.column - 1);\r\n // (1). First try checking right biased word\r\n const [rbStartOffset, rbEndOffset] = TextModel._findLanguageBoundaries(lineTokens, tokenIndex);\r\n const rightBiasedWord = getWordAtText(position.column, LanguageConfigurationRegistry.getWordDefinition(lineTokens.getLanguageId(tokenIndex)), lineContent.substring(rbStartOffset, rbEndOffset), rbStartOffset);\r\n // Make sure the result touches the original passed in position\r\n if (rightBiasedWord && rightBiasedWord.startColumn <= _position.column && _position.column <= rightBiasedWord.endColumn) {\r\n return rightBiasedWord;\r\n }\r\n // (2). Else, if we were at a language boundary, check the left biased word\r\n if (tokenIndex > 0 && rbStartOffset === position.column - 1) {\r\n // edge case, where `position` sits between two tokens belonging to two different languages\r\n const [lbStartOffset, lbEndOffset] = TextModel._findLanguageBoundaries(lineTokens, tokenIndex - 1);\r\n const leftBiasedWord = getWordAtText(position.column, LanguageConfigurationRegistry.getWordDefinition(lineTokens.getLanguageId(tokenIndex - 1)), lineContent.substring(lbStartOffset, lbEndOffset), lbStartOffset);\r\n // Make sure the result touches the original passed in position\r\n if (leftBiasedWord && leftBiasedWord.startColumn <= _position.column && _position.column <= leftBiasedWord.endColumn) {\r\n return leftBiasedWord;\r\n }\r\n }\r\n return null;\r\n }\r\n static _findLanguageBoundaries(lineTokens, tokenIndex) {\r\n const languageId = lineTokens.getLanguageId(tokenIndex);\r\n // go left until a different language is hit\r\n let startOffset = 0;\r\n for (let i = tokenIndex; i >= 0 && lineTokens.getLanguageId(i) === languageId; i--) {\r\n startOffset = lineTokens.getStartOffset(i);\r\n }\r\n // go right until a different language is hit\r\n let endOffset = lineTokens.getLineContent().length;\r\n for (let i = tokenIndex, tokenCount = lineTokens.getCount(); i < tokenCount && lineTokens.getLanguageId(i) === languageId; i++) {\r\n endOffset = lineTokens.getEndOffset(i);\r\n }\r\n return [startOffset, endOffset];\r\n }\r\n getWordUntilPosition(position) {\r\n const wordAtPosition = this.getWordAtPosition(position);\r\n if (!wordAtPosition) {\r\n return {\r\n word: '',\r\n startColumn: position.column,\r\n endColumn: position.column\r\n };\r\n }\r\n return {\r\n word: wordAtPosition.word.substr(0, position.column - wordAtPosition.startColumn),\r\n startColumn: wordAtPosition.startColumn,\r\n endColumn: position.column\r\n };\r\n }\r\n findMatchingBracketUp(_bracket, _position) {\r\n let bracket = _bracket.toLowerCase();\r\n let position = this.validatePosition(_position);\r\n let lineTokens = this._getLineTokens(position.lineNumber);\r\n let languageId = lineTokens.getLanguageId(lineTokens.findTokenIndexAtOffset(position.column - 1));\r\n let bracketsSupport = LanguageConfigurationRegistry.getBracketsSupport(languageId);\r\n if (!bracketsSupport) {\r\n return null;\r\n }\r\n let data = bracketsSupport.textIsBracket[bracket];\r\n if (!data) {\r\n return null;\r\n }\r\n return stripBracketSearchCanceled(this._findMatchingBracketUp(data, position, null));\r\n }\r\n matchBracket(position) {\r\n return this._matchBracket(this.validatePosition(position));\r\n }\r\n _establishBracketSearchOffsets(position, lineTokens, modeBrackets, tokenIndex) {\r\n const tokenCount = lineTokens.getCount();\r\n const currentLanguageId = lineTokens.getLanguageId(tokenIndex);\r\n // limit search to not go before `maxBracketLength`\r\n let searchStartOffset = Math.max(0, position.column - 1 - modeBrackets.maxBracketLength);\r\n for (let i = tokenIndex - 1; i >= 0; i--) {\r\n const tokenEndOffset = lineTokens.getEndOffset(i);\r\n if (tokenEndOffset <= searchStartOffset) {\r\n break;\r\n }\r\n if (ignoreBracketsInToken(lineTokens.getStandardTokenType(i)) || lineTokens.getLanguageId(i) !== currentLanguageId) {\r\n searchStartOffset = tokenEndOffset;\r\n break;\r\n }\r\n }\r\n // limit search to not go after `maxBracketLength`\r\n let searchEndOffset = Math.min(lineTokens.getLineContent().length, position.column - 1 + modeBrackets.maxBracketLength);\r\n for (let i = tokenIndex + 1; i < tokenCount; i++) {\r\n const tokenStartOffset = lineTokens.getStartOffset(i);\r\n if (tokenStartOffset >= searchEndOffset) {\r\n break;\r\n }\r\n if (ignoreBracketsInToken(lineTokens.getStandardTokenType(i)) || lineTokens.getLanguageId(i) !== currentLanguageId) {\r\n searchEndOffset = tokenStartOffset;\r\n break;\r\n }\r\n }\r\n return { searchStartOffset, searchEndOffset };\r\n }\r\n _matchBracket(position) {\r\n const lineNumber = position.lineNumber;\r\n const lineTokens = this._getLineTokens(lineNumber);\r\n const lineText = this._buffer.getLineContent(lineNumber);\r\n const tokenIndex = lineTokens.findTokenIndexAtOffset(position.column - 1);\r\n if (tokenIndex < 0) {\r\n return null;\r\n }\r\n const currentModeBrackets = LanguageConfigurationRegistry.getBracketsSupport(lineTokens.getLanguageId(tokenIndex));\r\n // check that the token is not to be ignored\r\n if (currentModeBrackets && !ignoreBracketsInToken(lineTokens.getStandardTokenType(tokenIndex))) {\r\n let { searchStartOffset, searchEndOffset } = this._establishBracketSearchOffsets(position, lineTokens, currentModeBrackets, tokenIndex);\r\n // it might be the case that [currentTokenStart -> currentTokenEnd] contains multiple brackets\r\n // `bestResult` will contain the most right-side result\r\n let bestResult = null;\r\n while (true) {\r\n const foundBracket = BracketsUtils.findNextBracketInRange(currentModeBrackets.forwardRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (!foundBracket) {\r\n // there are no more brackets in this text\r\n break;\r\n }\r\n // check that we didn't hit a bracket too far away from position\r\n if (foundBracket.startColumn <= position.column && position.column <= foundBracket.endColumn) {\r\n const foundBracketText = lineText.substring(foundBracket.startColumn - 1, foundBracket.endColumn - 1).toLowerCase();\r\n const r = this._matchFoundBracket(foundBracket, currentModeBrackets.textIsBracket[foundBracketText], currentModeBrackets.textIsOpenBracket[foundBracketText], null);\r\n if (r) {\r\n if (r instanceof BracketSearchCanceled) {\r\n return null;\r\n }\r\n bestResult = r;\r\n }\r\n }\r\n searchStartOffset = foundBracket.endColumn - 1;\r\n }\r\n if (bestResult) {\r\n return bestResult;\r\n }\r\n }\r\n // If position is in between two tokens, try also looking in the previous token\r\n if (tokenIndex > 0 && lineTokens.getStartOffset(tokenIndex) === position.column - 1) {\r\n const prevTokenIndex = tokenIndex - 1;\r\n const prevModeBrackets = LanguageConfigurationRegistry.getBracketsSupport(lineTokens.getLanguageId(prevTokenIndex));\r\n // check that previous token is not to be ignored\r\n if (prevModeBrackets && !ignoreBracketsInToken(lineTokens.getStandardTokenType(prevTokenIndex))) {\r\n let { searchStartOffset, searchEndOffset } = this._establishBracketSearchOffsets(position, lineTokens, prevModeBrackets, prevTokenIndex);\r\n const foundBracket = BracketsUtils.findPrevBracketInRange(prevModeBrackets.reversedRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n // check that we didn't hit a bracket too far away from position\r\n if (foundBracket && foundBracket.startColumn <= position.column && position.column <= foundBracket.endColumn) {\r\n const foundBracketText = lineText.substring(foundBracket.startColumn - 1, foundBracket.endColumn - 1).toLowerCase();\r\n const r = this._matchFoundBracket(foundBracket, prevModeBrackets.textIsBracket[foundBracketText], prevModeBrackets.textIsOpenBracket[foundBracketText], null);\r\n if (r) {\r\n if (r instanceof BracketSearchCanceled) {\r\n return null;\r\n }\r\n return r;\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n _matchFoundBracket(foundBracket, data, isOpen, continueSearchPredicate) {\r\n if (!data) {\r\n return null;\r\n }\r\n const matched = (isOpen\r\n ? this._findMatchingBracketDown(data, foundBracket.getEndPosition(), continueSearchPredicate)\r\n : this._findMatchingBracketUp(data, foundBracket.getStartPosition(), continueSearchPredicate));\r\n if (!matched) {\r\n return null;\r\n }\r\n if (matched instanceof BracketSearchCanceled) {\r\n return matched;\r\n }\r\n return [foundBracket, matched];\r\n }\r\n _findMatchingBracketUp(bracket, position, continueSearchPredicate) {\r\n // console.log('_findMatchingBracketUp: ', 'bracket: ', JSON.stringify(bracket), 'startPosition: ', String(position));\r\n const languageId = bracket.languageIdentifier.id;\r\n const reversedBracketRegex = bracket.reversedRegex;\r\n let count = -1;\r\n let totalCallCount = 0;\r\n const searchPrevMatchingBracketInRange = (lineNumber, lineText, searchStartOffset, searchEndOffset) => {\r\n while (true) {\r\n if (continueSearchPredicate && (++totalCallCount) % 100 === 0 && !continueSearchPredicate()) {\r\n return BracketSearchCanceled.INSTANCE;\r\n }\r\n const r = BracketsUtils.findPrevBracketInRange(reversedBracketRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (!r) {\r\n break;\r\n }\r\n const hitText = lineText.substring(r.startColumn - 1, r.endColumn - 1).toLowerCase();\r\n if (bracket.isOpen(hitText)) {\r\n count++;\r\n }\r\n else if (bracket.isClose(hitText)) {\r\n count--;\r\n }\r\n if (count === 0) {\r\n return r;\r\n }\r\n searchEndOffset = r.startColumn - 1;\r\n }\r\n return null;\r\n };\r\n for (let lineNumber = position.lineNumber; lineNumber >= 1; lineNumber--) {\r\n const lineTokens = this._getLineTokens(lineNumber);\r\n const tokenCount = lineTokens.getCount();\r\n const lineText = this._buffer.getLineContent(lineNumber);\r\n let tokenIndex = tokenCount - 1;\r\n let searchStartOffset = lineText.length;\r\n let searchEndOffset = lineText.length;\r\n if (lineNumber === position.lineNumber) {\r\n tokenIndex = lineTokens.findTokenIndexAtOffset(position.column - 1);\r\n searchStartOffset = position.column - 1;\r\n searchEndOffset = position.column - 1;\r\n }\r\n let prevSearchInToken = true;\r\n for (; tokenIndex >= 0; tokenIndex--) {\r\n const searchInToken = (lineTokens.getLanguageId(tokenIndex) === languageId && !ignoreBracketsInToken(lineTokens.getStandardTokenType(tokenIndex)));\r\n if (searchInToken) {\r\n // this token should be searched\r\n if (prevSearchInToken) {\r\n // the previous token should be searched, simply extend searchStartOffset\r\n searchStartOffset = lineTokens.getStartOffset(tokenIndex);\r\n }\r\n else {\r\n // the previous token should not be searched\r\n searchStartOffset = lineTokens.getStartOffset(tokenIndex);\r\n searchEndOffset = lineTokens.getEndOffset(tokenIndex);\r\n }\r\n }\r\n else {\r\n // this token should not be searched\r\n if (prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = searchPrevMatchingBracketInRange(lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return r;\r\n }\r\n }\r\n }\r\n prevSearchInToken = searchInToken;\r\n }\r\n if (prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = searchPrevMatchingBracketInRange(lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return r;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n _findMatchingBracketDown(bracket, position, continueSearchPredicate) {\r\n // console.log('_findMatchingBracketDown: ', 'bracket: ', JSON.stringify(bracket), 'startPosition: ', String(position));\r\n const languageId = bracket.languageIdentifier.id;\r\n const bracketRegex = bracket.forwardRegex;\r\n let count = 1;\r\n let totalCallCount = 0;\r\n const searchNextMatchingBracketInRange = (lineNumber, lineText, searchStartOffset, searchEndOffset) => {\r\n while (true) {\r\n if (continueSearchPredicate && (++totalCallCount) % 100 === 0 && !continueSearchPredicate()) {\r\n return BracketSearchCanceled.INSTANCE;\r\n }\r\n const r = BracketsUtils.findNextBracketInRange(bracketRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (!r) {\r\n break;\r\n }\r\n const hitText = lineText.substring(r.startColumn - 1, r.endColumn - 1).toLowerCase();\r\n if (bracket.isOpen(hitText)) {\r\n count++;\r\n }\r\n else if (bracket.isClose(hitText)) {\r\n count--;\r\n }\r\n if (count === 0) {\r\n return r;\r\n }\r\n searchStartOffset = r.endColumn - 1;\r\n }\r\n return null;\r\n };\r\n const lineCount = this.getLineCount();\r\n for (let lineNumber = position.lineNumber; lineNumber <= lineCount; lineNumber++) {\r\n const lineTokens = this._getLineTokens(lineNumber);\r\n const tokenCount = lineTokens.getCount();\r\n const lineText = this._buffer.getLineContent(lineNumber);\r\n let tokenIndex = 0;\r\n let searchStartOffset = 0;\r\n let searchEndOffset = 0;\r\n if (lineNumber === position.lineNumber) {\r\n tokenIndex = lineTokens.findTokenIndexAtOffset(position.column - 1);\r\n searchStartOffset = position.column - 1;\r\n searchEndOffset = position.column - 1;\r\n }\r\n let prevSearchInToken = true;\r\n for (; tokenIndex < tokenCount; tokenIndex++) {\r\n const searchInToken = (lineTokens.getLanguageId(tokenIndex) === languageId && !ignoreBracketsInToken(lineTokens.getStandardTokenType(tokenIndex)));\r\n if (searchInToken) {\r\n // this token should be searched\r\n if (prevSearchInToken) {\r\n // the previous token should be searched, simply extend searchEndOffset\r\n searchEndOffset = lineTokens.getEndOffset(tokenIndex);\r\n }\r\n else {\r\n // the previous token should not be searched\r\n searchStartOffset = lineTokens.getStartOffset(tokenIndex);\r\n searchEndOffset = lineTokens.getEndOffset(tokenIndex);\r\n }\r\n }\r\n else {\r\n // this token should not be searched\r\n if (prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = searchNextMatchingBracketInRange(lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return r;\r\n }\r\n }\r\n }\r\n prevSearchInToken = searchInToken;\r\n }\r\n if (prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = searchNextMatchingBracketInRange(lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return r;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n findPrevBracket(_position) {\r\n const position = this.validatePosition(_position);\r\n let languageId = -1;\r\n let modeBrackets = null;\r\n for (let lineNumber = position.lineNumber; lineNumber >= 1; lineNumber--) {\r\n const lineTokens = this._getLineTokens(lineNumber);\r\n const tokenCount = lineTokens.getCount();\r\n const lineText = this._buffer.getLineContent(lineNumber);\r\n let tokenIndex = tokenCount - 1;\r\n let searchStartOffset = lineText.length;\r\n let searchEndOffset = lineText.length;\r\n if (lineNumber === position.lineNumber) {\r\n tokenIndex = lineTokens.findTokenIndexAtOffset(position.column - 1);\r\n searchStartOffset = position.column - 1;\r\n searchEndOffset = position.column - 1;\r\n const tokenLanguageId = lineTokens.getLanguageId(tokenIndex);\r\n if (languageId !== tokenLanguageId) {\r\n languageId = tokenLanguageId;\r\n modeBrackets = LanguageConfigurationRegistry.getBracketsSupport(languageId);\r\n }\r\n }\r\n let prevSearchInToken = true;\r\n for (; tokenIndex >= 0; tokenIndex--) {\r\n const tokenLanguageId = lineTokens.getLanguageId(tokenIndex);\r\n if (languageId !== tokenLanguageId) {\r\n // language id change!\r\n if (modeBrackets && prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = BracketsUtils.findPrevBracketInRange(modeBrackets.reversedRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return this._toFoundBracket(modeBrackets, r);\r\n }\r\n prevSearchInToken = false;\r\n }\r\n languageId = tokenLanguageId;\r\n modeBrackets = LanguageConfigurationRegistry.getBracketsSupport(languageId);\r\n }\r\n const searchInToken = (!!modeBrackets && !ignoreBracketsInToken(lineTokens.getStandardTokenType(tokenIndex)));\r\n if (searchInToken) {\r\n // this token should be searched\r\n if (prevSearchInToken) {\r\n // the previous token should be searched, simply extend searchStartOffset\r\n searchStartOffset = lineTokens.getStartOffset(tokenIndex);\r\n }\r\n else {\r\n // the previous token should not be searched\r\n searchStartOffset = lineTokens.getStartOffset(tokenIndex);\r\n searchEndOffset = lineTokens.getEndOffset(tokenIndex);\r\n }\r\n }\r\n else {\r\n // this token should not be searched\r\n if (modeBrackets && prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = BracketsUtils.findPrevBracketInRange(modeBrackets.reversedRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return this._toFoundBracket(modeBrackets, r);\r\n }\r\n }\r\n }\r\n prevSearchInToken = searchInToken;\r\n }\r\n if (modeBrackets && prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = BracketsUtils.findPrevBracketInRange(modeBrackets.reversedRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return this._toFoundBracket(modeBrackets, r);\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n findNextBracket(_position) {\r\n const position = this.validatePosition(_position);\r\n const lineCount = this.getLineCount();\r\n let languageId = -1;\r\n let modeBrackets = null;\r\n for (let lineNumber = position.lineNumber; lineNumber <= lineCount; lineNumber++) {\r\n const lineTokens = this._getLineTokens(lineNumber);\r\n const tokenCount = lineTokens.getCount();\r\n const lineText = this._buffer.getLineContent(lineNumber);\r\n let tokenIndex = 0;\r\n let searchStartOffset = 0;\r\n let searchEndOffset = 0;\r\n if (lineNumber === position.lineNumber) {\r\n tokenIndex = lineTokens.findTokenIndexAtOffset(position.column - 1);\r\n searchStartOffset = position.column - 1;\r\n searchEndOffset = position.column - 1;\r\n const tokenLanguageId = lineTokens.getLanguageId(tokenIndex);\r\n if (languageId !== tokenLanguageId) {\r\n languageId = tokenLanguageId;\r\n modeBrackets = LanguageConfigurationRegistry.getBracketsSupport(languageId);\r\n }\r\n }\r\n let prevSearchInToken = true;\r\n for (; tokenIndex < tokenCount; tokenIndex++) {\r\n const tokenLanguageId = lineTokens.getLanguageId(tokenIndex);\r\n if (languageId !== tokenLanguageId) {\r\n // language id change!\r\n if (modeBrackets && prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = BracketsUtils.findNextBracketInRange(modeBrackets.forwardRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return this._toFoundBracket(modeBrackets, r);\r\n }\r\n prevSearchInToken = false;\r\n }\r\n languageId = tokenLanguageId;\r\n modeBrackets = LanguageConfigurationRegistry.getBracketsSupport(languageId);\r\n }\r\n const searchInToken = (!!modeBrackets && !ignoreBracketsInToken(lineTokens.getStandardTokenType(tokenIndex)));\r\n if (searchInToken) {\r\n // this token should be searched\r\n if (prevSearchInToken) {\r\n // the previous token should be searched, simply extend searchEndOffset\r\n searchEndOffset = lineTokens.getEndOffset(tokenIndex);\r\n }\r\n else {\r\n // the previous token should not be searched\r\n searchStartOffset = lineTokens.getStartOffset(tokenIndex);\r\n searchEndOffset = lineTokens.getEndOffset(tokenIndex);\r\n }\r\n }\r\n else {\r\n // this token should not be searched\r\n if (modeBrackets && prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = BracketsUtils.findNextBracketInRange(modeBrackets.forwardRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return this._toFoundBracket(modeBrackets, r);\r\n }\r\n }\r\n }\r\n prevSearchInToken = searchInToken;\r\n }\r\n if (modeBrackets && prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = BracketsUtils.findNextBracketInRange(modeBrackets.forwardRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return this._toFoundBracket(modeBrackets, r);\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n findEnclosingBrackets(_position, maxDuration) {\r\n let continueSearchPredicate;\r\n if (typeof maxDuration === 'undefined') {\r\n continueSearchPredicate = null;\r\n }\r\n else {\r\n const startTime = Date.now();\r\n continueSearchPredicate = () => {\r\n return (Date.now() - startTime <= maxDuration);\r\n };\r\n }\r\n const position = this.validatePosition(_position);\r\n const lineCount = this.getLineCount();\r\n const savedCounts = new Map();\r\n let counts = [];\r\n const resetCounts = (languageId, modeBrackets) => {\r\n if (!savedCounts.has(languageId)) {\r\n let tmp = [];\r\n for (let i = 0, len = modeBrackets ? modeBrackets.brackets.length : 0; i < len; i++) {\r\n tmp[i] = 0;\r\n }\r\n savedCounts.set(languageId, tmp);\r\n }\r\n counts = savedCounts.get(languageId);\r\n };\r\n let totalCallCount = 0;\r\n const searchInRange = (modeBrackets, lineNumber, lineText, searchStartOffset, searchEndOffset) => {\r\n while (true) {\r\n if (continueSearchPredicate && (++totalCallCount) % 100 === 0 && !continueSearchPredicate()) {\r\n return BracketSearchCanceled.INSTANCE;\r\n }\r\n const r = BracketsUtils.findNextBracketInRange(modeBrackets.forwardRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (!r) {\r\n break;\r\n }\r\n const hitText = lineText.substring(r.startColumn - 1, r.endColumn - 1).toLowerCase();\r\n const bracket = modeBrackets.textIsBracket[hitText];\r\n if (bracket) {\r\n if (bracket.isOpen(hitText)) {\r\n counts[bracket.index]++;\r\n }\r\n else if (bracket.isClose(hitText)) {\r\n counts[bracket.index]--;\r\n }\r\n if (counts[bracket.index] === -1) {\r\n return this._matchFoundBracket(r, bracket, false, continueSearchPredicate);\r\n }\r\n }\r\n searchStartOffset = r.endColumn - 1;\r\n }\r\n return null;\r\n };\r\n let languageId = -1;\r\n let modeBrackets = null;\r\n for (let lineNumber = position.lineNumber; lineNumber <= lineCount; lineNumber++) {\r\n const lineTokens = this._getLineTokens(lineNumber);\r\n const tokenCount = lineTokens.getCount();\r\n const lineText = this._buffer.getLineContent(lineNumber);\r\n let tokenIndex = 0;\r\n let searchStartOffset = 0;\r\n let searchEndOffset = 0;\r\n if (lineNumber === position.lineNumber) {\r\n tokenIndex = lineTokens.findTokenIndexAtOffset(position.column - 1);\r\n searchStartOffset = position.column - 1;\r\n searchEndOffset = position.column - 1;\r\n const tokenLanguageId = lineTokens.getLanguageId(tokenIndex);\r\n if (languageId !== tokenLanguageId) {\r\n languageId = tokenLanguageId;\r\n modeBrackets = LanguageConfigurationRegistry.getBracketsSupport(languageId);\r\n resetCounts(languageId, modeBrackets);\r\n }\r\n }\r\n let prevSearchInToken = true;\r\n for (; tokenIndex < tokenCount; tokenIndex++) {\r\n const tokenLanguageId = lineTokens.getLanguageId(tokenIndex);\r\n if (languageId !== tokenLanguageId) {\r\n // language id change!\r\n if (modeBrackets && prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = searchInRange(modeBrackets, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return stripBracketSearchCanceled(r);\r\n }\r\n prevSearchInToken = false;\r\n }\r\n languageId = tokenLanguageId;\r\n modeBrackets = LanguageConfigurationRegistry.getBracketsSupport(languageId);\r\n resetCounts(languageId, modeBrackets);\r\n }\r\n const searchInToken = (!!modeBrackets && !ignoreBracketsInToken(lineTokens.getStandardTokenType(tokenIndex)));\r\n if (searchInToken) {\r\n // this token should be searched\r\n if (prevSearchInToken) {\r\n // the previous token should be searched, simply extend searchEndOffset\r\n searchEndOffset = lineTokens.getEndOffset(tokenIndex);\r\n }\r\n else {\r\n // the previous token should not be searched\r\n searchStartOffset = lineTokens.getStartOffset(tokenIndex);\r\n searchEndOffset = lineTokens.getEndOffset(tokenIndex);\r\n }\r\n }\r\n else {\r\n // this token should not be searched\r\n if (modeBrackets && prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = searchInRange(modeBrackets, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return stripBracketSearchCanceled(r);\r\n }\r\n }\r\n }\r\n prevSearchInToken = searchInToken;\r\n }\r\n if (modeBrackets && prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = searchInRange(modeBrackets, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return stripBracketSearchCanceled(r);\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n _toFoundBracket(modeBrackets, r) {\r\n if (!r) {\r\n return null;\r\n }\r\n let text = this.getValueInRange(r);\r\n text = text.toLowerCase();\r\n let data = modeBrackets.textIsBracket[text];\r\n if (!data) {\r\n return null;\r\n }\r\n return {\r\n range: r,\r\n open: data.open,\r\n close: data.close,\r\n isOpen: modeBrackets.textIsOpenBracket[text]\r\n };\r\n }\r\n /**\r\n * Returns:\r\n * - -1 => the line consists of whitespace\r\n * - otherwise => the indent level is returned value\r\n */\r\n static computeIndentLevel(line, tabSize) {\r\n let indent = 0;\r\n let i = 0;\r\n let len = line.length;\r\n while (i < len) {\r\n let chCode = line.charCodeAt(i);\r\n if (chCode === 32 /* Space */) {\r\n indent++;\r\n }\r\n else if (chCode === 9 /* Tab */) {\r\n indent = indent - indent % tabSize + tabSize;\r\n }\r\n else {\r\n break;\r\n }\r\n i++;\r\n }\r\n if (i === len) {\r\n return -1; // line only consists of whitespace\r\n }\r\n return indent;\r\n }\r\n _computeIndentLevel(lineIndex) {\r\n return TextModel.computeIndentLevel(this._buffer.getLineContent(lineIndex + 1), this._options.tabSize);\r\n }\r\n getActiveIndentGuide(lineNumber, minLineNumber, maxLineNumber) {\r\n this._assertNotDisposed();\r\n const lineCount = this.getLineCount();\r\n if (lineNumber < 1 || lineNumber > lineCount) {\r\n throw new Error('Illegal value for lineNumber');\r\n }\r\n const foldingRules = LanguageConfigurationRegistry.getFoldingRules(this._languageIdentifier.id);\r\n const offSide = Boolean(foldingRules && foldingRules.offSide);\r\n let up_aboveContentLineIndex = -2; /* -2 is a marker for not having computed it */\r\n let up_aboveContentLineIndent = -1;\r\n let up_belowContentLineIndex = -2; /* -2 is a marker for not having computed it */\r\n let up_belowContentLineIndent = -1;\r\n const up_resolveIndents = (lineNumber) => {\r\n if (up_aboveContentLineIndex !== -1 && (up_aboveContentLineIndex === -2 || up_aboveContentLineIndex > lineNumber - 1)) {\r\n up_aboveContentLineIndex = -1;\r\n up_aboveContentLineIndent = -1;\r\n // must find previous line with content\r\n for (let lineIndex = lineNumber - 2; lineIndex >= 0; lineIndex--) {\r\n let indent = this._computeIndentLevel(lineIndex);\r\n if (indent >= 0) {\r\n up_aboveContentLineIndex = lineIndex;\r\n up_aboveContentLineIndent = indent;\r\n break;\r\n }\r\n }\r\n }\r\n if (up_belowContentLineIndex === -2) {\r\n up_belowContentLineIndex = -1;\r\n up_belowContentLineIndent = -1;\r\n // must find next line with content\r\n for (let lineIndex = lineNumber; lineIndex < lineCount; lineIndex++) {\r\n let indent = this._computeIndentLevel(lineIndex);\r\n if (indent >= 0) {\r\n up_belowContentLineIndex = lineIndex;\r\n up_belowContentLineIndent = indent;\r\n break;\r\n }\r\n }\r\n }\r\n };\r\n let down_aboveContentLineIndex = -2; /* -2 is a marker for not having computed it */\r\n let down_aboveContentLineIndent = -1;\r\n let down_belowContentLineIndex = -2; /* -2 is a marker for not having computed it */\r\n let down_belowContentLineIndent = -1;\r\n const down_resolveIndents = (lineNumber) => {\r\n if (down_aboveContentLineIndex === -2) {\r\n down_aboveContentLineIndex = -1;\r\n down_aboveContentLineIndent = -1;\r\n // must find previous line with content\r\n for (let lineIndex = lineNumber - 2; lineIndex >= 0; lineIndex--) {\r\n let indent = this._computeIndentLevel(lineIndex);\r\n if (indent >= 0) {\r\n down_aboveContentLineIndex = lineIndex;\r\n down_aboveContentLineIndent = indent;\r\n break;\r\n }\r\n }\r\n }\r\n if (down_belowContentLineIndex !== -1 && (down_belowContentLineIndex === -2 || down_belowContentLineIndex < lineNumber - 1)) {\r\n down_belowContentLineIndex = -1;\r\n down_belowContentLineIndent = -1;\r\n // must find next line with content\r\n for (let lineIndex = lineNumber; lineIndex < lineCount; lineIndex++) {\r\n let indent = this._computeIndentLevel(lineIndex);\r\n if (indent >= 0) {\r\n down_belowContentLineIndex = lineIndex;\r\n down_belowContentLineIndent = indent;\r\n break;\r\n }\r\n }\r\n }\r\n };\r\n let startLineNumber = 0;\r\n let goUp = true;\r\n let endLineNumber = 0;\r\n let goDown = true;\r\n let indent = 0;\r\n let initialIndent = 0;\r\n for (let distance = 0; goUp || goDown; distance++) {\r\n const upLineNumber = lineNumber - distance;\r\n const downLineNumber = lineNumber + distance;\r\n if (distance > 1 && (upLineNumber < 1 || upLineNumber < minLineNumber)) {\r\n goUp = false;\r\n }\r\n if (distance > 1 && (downLineNumber > lineCount || downLineNumber > maxLineNumber)) {\r\n goDown = false;\r\n }\r\n if (distance > 50000) {\r\n // stop processing\r\n goUp = false;\r\n goDown = false;\r\n }\r\n let upLineIndentLevel = -1;\r\n if (goUp) {\r\n // compute indent level going up\r\n const currentIndent = this._computeIndentLevel(upLineNumber - 1);\r\n if (currentIndent >= 0) {\r\n // This line has content (besides whitespace)\r\n // Use the line's indent\r\n up_belowContentLineIndex = upLineNumber - 1;\r\n up_belowContentLineIndent = currentIndent;\r\n upLineIndentLevel = Math.ceil(currentIndent / this._options.indentSize);\r\n }\r\n else {\r\n up_resolveIndents(upLineNumber);\r\n upLineIndentLevel = this._getIndentLevelForWhitespaceLine(offSide, up_aboveContentLineIndent, up_belowContentLineIndent);\r\n }\r\n }\r\n let downLineIndentLevel = -1;\r\n if (goDown) {\r\n // compute indent level going down\r\n const currentIndent = this._computeIndentLevel(downLineNumber - 1);\r\n if (currentIndent >= 0) {\r\n // This line has content (besides whitespace)\r\n // Use the line's indent\r\n down_aboveContentLineIndex = downLineNumber - 1;\r\n down_aboveContentLineIndent = currentIndent;\r\n downLineIndentLevel = Math.ceil(currentIndent / this._options.indentSize);\r\n }\r\n else {\r\n down_resolveIndents(downLineNumber);\r\n downLineIndentLevel = this._getIndentLevelForWhitespaceLine(offSide, down_aboveContentLineIndent, down_belowContentLineIndent);\r\n }\r\n }\r\n if (distance === 0) {\r\n initialIndent = upLineIndentLevel;\r\n continue;\r\n }\r\n if (distance === 1) {\r\n if (downLineNumber <= lineCount && downLineIndentLevel >= 0 && initialIndent + 1 === downLineIndentLevel) {\r\n // This is the beginning of a scope, we have special handling here, since we want the\r\n // child scope indent to be active, not the parent scope\r\n goUp = false;\r\n startLineNumber = downLineNumber;\r\n endLineNumber = downLineNumber;\r\n indent = downLineIndentLevel;\r\n continue;\r\n }\r\n if (upLineNumber >= 1 && upLineIndentLevel >= 0 && upLineIndentLevel - 1 === initialIndent) {\r\n // This is the end of a scope, just like above\r\n goDown = false;\r\n startLineNumber = upLineNumber;\r\n endLineNumber = upLineNumber;\r\n indent = upLineIndentLevel;\r\n continue;\r\n }\r\n startLineNumber = lineNumber;\r\n endLineNumber = lineNumber;\r\n indent = initialIndent;\r\n if (indent === 0) {\r\n // No need to continue\r\n return { startLineNumber, endLineNumber, indent };\r\n }\r\n }\r\n if (goUp) {\r\n if (upLineIndentLevel >= indent) {\r\n startLineNumber = upLineNumber;\r\n }\r\n else {\r\n goUp = false;\r\n }\r\n }\r\n if (goDown) {\r\n if (downLineIndentLevel >= indent) {\r\n endLineNumber = downLineNumber;\r\n }\r\n else {\r\n goDown = false;\r\n }\r\n }\r\n }\r\n return { startLineNumber, endLineNumber, indent };\r\n }\r\n getLinesIndentGuides(startLineNumber, endLineNumber) {\r\n this._assertNotDisposed();\r\n const lineCount = this.getLineCount();\r\n if (startLineNumber < 1 || startLineNumber > lineCount) {\r\n throw new Error('Illegal value for startLineNumber');\r\n }\r\n if (endLineNumber < 1 || endLineNumber > lineCount) {\r\n throw new Error('Illegal value for endLineNumber');\r\n }\r\n const foldingRules = LanguageConfigurationRegistry.getFoldingRules(this._languageIdentifier.id);\r\n const offSide = Boolean(foldingRules && foldingRules.offSide);\r\n let result = new Array(endLineNumber - startLineNumber + 1);\r\n let aboveContentLineIndex = -2; /* -2 is a marker for not having computed it */\r\n let aboveContentLineIndent = -1;\r\n let belowContentLineIndex = -2; /* -2 is a marker for not having computed it */\r\n let belowContentLineIndent = -1;\r\n for (let lineNumber = startLineNumber; lineNumber <= endLineNumber; lineNumber++) {\r\n let resultIndex = lineNumber - startLineNumber;\r\n const currentIndent = this._computeIndentLevel(lineNumber - 1);\r\n if (currentIndent >= 0) {\r\n // This line has content (besides whitespace)\r\n // Use the line's indent\r\n aboveContentLineIndex = lineNumber - 1;\r\n aboveContentLineIndent = currentIndent;\r\n result[resultIndex] = Math.ceil(currentIndent / this._options.indentSize);\r\n continue;\r\n }\r\n if (aboveContentLineIndex === -2) {\r\n aboveContentLineIndex = -1;\r\n aboveContentLineIndent = -1;\r\n // must find previous line with content\r\n for (let lineIndex = lineNumber - 2; lineIndex >= 0; lineIndex--) {\r\n let indent = this._computeIndentLevel(lineIndex);\r\n if (indent >= 0) {\r\n aboveContentLineIndex = lineIndex;\r\n aboveContentLineIndent = indent;\r\n break;\r\n }\r\n }\r\n }\r\n if (belowContentLineIndex !== -1 && (belowContentLineIndex === -2 || belowContentLineIndex < lineNumber - 1)) {\r\n belowContentLineIndex = -1;\r\n belowContentLineIndent = -1;\r\n // must find next line with content\r\n for (let lineIndex = lineNumber; lineIndex < lineCount; lineIndex++) {\r\n let indent = this._computeIndentLevel(lineIndex);\r\n if (indent >= 0) {\r\n belowContentLineIndex = lineIndex;\r\n belowContentLineIndent = indent;\r\n break;\r\n }\r\n }\r\n }\r\n result[resultIndex] = this._getIndentLevelForWhitespaceLine(offSide, aboveContentLineIndent, belowContentLineIndent);\r\n }\r\n return result;\r\n }\r\n _getIndentLevelForWhitespaceLine(offSide, aboveContentLineIndent, belowContentLineIndent) {\r\n if (aboveContentLineIndent === -1 || belowContentLineIndent === -1) {\r\n // At the top or bottom of the file\r\n return 0;\r\n }\r\n else if (aboveContentLineIndent < belowContentLineIndent) {\r\n // we are inside the region above\r\n return (1 + Math.floor(aboveContentLineIndent / this._options.indentSize));\r\n }\r\n else if (aboveContentLineIndent === belowContentLineIndent) {\r\n // we are in between two regions\r\n return Math.ceil(belowContentLineIndent / this._options.indentSize);\r\n }\r\n else {\r\n if (offSide) {\r\n // same level as region below\r\n return Math.ceil(belowContentLineIndent / this._options.indentSize);\r\n }\r\n else {\r\n // we are inside the region that ends below\r\n return (1 + Math.floor(belowContentLineIndent / this._options.indentSize));\r\n }\r\n }\r\n }\r\n //#endregion\r\n normalizePosition(position, affinity) {\r\n return position;\r\n }\r\n /**\r\n * Gets the column at which indentation stops at a given line.\r\n * @internal\r\n */\r\n getLineIndentColumn(lineNumber) {\r\n // Columns start with 1.\r\n return indentOfLine(this.getLineContent(lineNumber)) + 1;\r\n }\r\n}\r\nTextModel.MODEL_SYNC_LIMIT = 50 * 1024 * 1024; // 50 MB\r\nTextModel.LARGE_FILE_SIZE_THRESHOLD = 20 * 1024 * 1024; // 20 MB;\r\nTextModel.LARGE_FILE_LINE_COUNT_THRESHOLD = 300 * 1000; // 300K lines\r\nTextModel.DEFAULT_CREATION_OPTIONS = {\r\n isForSimpleWidget: false,\r\n tabSize: EDITOR_MODEL_DEFAULTS.tabSize,\r\n indentSize: EDITOR_MODEL_DEFAULTS.indentSize,\r\n insertSpaces: EDITOR_MODEL_DEFAULTS.insertSpaces,\r\n detectIndentation: false,\r\n defaultEOL: 1 /* LF */,\r\n trimAutoWhitespace: EDITOR_MODEL_DEFAULTS.trimAutoWhitespace,\r\n largeFileOptimizations: EDITOR_MODEL_DEFAULTS.largeFileOptimizations,\r\n};\r\nfunction indentOfLine(line) {\r\n let indent = 0;\r\n for (const c of line) {\r\n if (c === ' ' || c === '\\t') {\r\n indent++;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return indent;\r\n}\r\n//#region Decorations\r\nfunction isNodeInOverviewRuler(node) {\r\n return (node.options.overviewRuler && node.options.overviewRuler.color ? true : false);\r\n}\r\nfunction isNodeInjectedText(node) {\r\n return !!node.options.after || !!node.options.before;\r\n}\r\nclass DecorationsTrees {\r\n constructor() {\r\n this._decorationsTree0 = new IntervalTree();\r\n this._decorationsTree1 = new IntervalTree();\r\n this._injectedTextDecorationsTree = new IntervalTree();\r\n }\r\n ensureAllNodesHaveRanges(host) {\r\n this.getAll(host, 0, false, false);\r\n }\r\n _ensureNodesHaveRanges(host, nodes) {\r\n for (const node of nodes) {\r\n if (node.range === null) {\r\n node.range = host.getRangeAt(node.cachedAbsoluteStart, node.cachedAbsoluteEnd);\r\n }\r\n }\r\n return nodes;\r\n }\r\n getAllInInterval(host, start, end, filterOwnerId, filterOutValidation) {\r\n const versionId = host.getVersionId();\r\n const result = this._intervalSearch(start, end, filterOwnerId, filterOutValidation, versionId);\r\n return this._ensureNodesHaveRanges(host, result);\r\n }\r\n _intervalSearch(start, end, filterOwnerId, filterOutValidation, cachedVersionId) {\r\n const r0 = this._decorationsTree0.intervalSearch(start, end, filterOwnerId, filterOutValidation, cachedVersionId);\r\n const r1 = this._decorationsTree1.intervalSearch(start, end, filterOwnerId, filterOutValidation, cachedVersionId);\r\n const r2 = this._injectedTextDecorationsTree.intervalSearch(start, end, filterOwnerId, filterOutValidation, cachedVersionId);\r\n return r0.concat(r1).concat(r2);\r\n }\r\n getInjectedTextInInterval(host, start, end, filterOwnerId) {\r\n const versionId = host.getVersionId();\r\n const result = this._injectedTextDecorationsTree.intervalSearch(start, end, filterOwnerId, false, versionId);\r\n return this._ensureNodesHaveRanges(host, result);\r\n }\r\n getAllInjectedText(host, filterOwnerId) {\r\n const versionId = host.getVersionId();\r\n const result = this._injectedTextDecorationsTree.search(filterOwnerId, false, versionId);\r\n return this._ensureNodesHaveRanges(host, result);\r\n }\r\n getAll(host, filterOwnerId, filterOutValidation, overviewRulerOnly) {\r\n const versionId = host.getVersionId();\r\n const result = this._search(filterOwnerId, filterOutValidation, overviewRulerOnly, versionId);\r\n return this._ensureNodesHaveRanges(host, result);\r\n }\r\n _search(filterOwnerId, filterOutValidation, overviewRulerOnly, cachedVersionId) {\r\n if (overviewRulerOnly) {\r\n return this._decorationsTree1.search(filterOwnerId, filterOutValidation, cachedVersionId);\r\n }\r\n else {\r\n const r0 = this._decorationsTree0.search(filterOwnerId, filterOutValidation, cachedVersionId);\r\n const r1 = this._decorationsTree1.search(filterOwnerId, filterOutValidation, cachedVersionId);\r\n const r2 = this._injectedTextDecorationsTree.search(filterOwnerId, filterOutValidation, cachedVersionId);\r\n return r0.concat(r1).concat(r2);\r\n }\r\n }\r\n collectNodesFromOwner(ownerId) {\r\n const r0 = this._decorationsTree0.collectNodesFromOwner(ownerId);\r\n const r1 = this._decorationsTree1.collectNodesFromOwner(ownerId);\r\n const r2 = this._injectedTextDecorationsTree.collectNodesFromOwner(ownerId);\r\n return r0.concat(r1).concat(r2);\r\n }\r\n collectNodesPostOrder() {\r\n const r0 = this._decorationsTree0.collectNodesPostOrder();\r\n const r1 = this._decorationsTree1.collectNodesPostOrder();\r\n const r2 = this._injectedTextDecorationsTree.collectNodesPostOrder();\r\n return r0.concat(r1).concat(r2);\r\n }\r\n insert(node) {\r\n if (isNodeInjectedText(node)) {\r\n this._injectedTextDecorationsTree.insert(node);\r\n }\r\n else if (isNodeInOverviewRuler(node)) {\r\n this._decorationsTree1.insert(node);\r\n }\r\n else {\r\n this._decorationsTree0.insert(node);\r\n }\r\n }\r\n delete(node) {\r\n if (isNodeInjectedText(node)) {\r\n this._injectedTextDecorationsTree.delete(node);\r\n }\r\n else if (isNodeInOverviewRuler(node)) {\r\n this._decorationsTree1.delete(node);\r\n }\r\n else {\r\n this._decorationsTree0.delete(node);\r\n }\r\n }\r\n getNodeRange(host, node) {\r\n const versionId = host.getVersionId();\r\n if (node.cachedVersionId !== versionId) {\r\n this._resolveNode(node, versionId);\r\n }\r\n if (node.range === null) {\r\n node.range = host.getRangeAt(node.cachedAbsoluteStart, node.cachedAbsoluteEnd);\r\n }\r\n return node.range;\r\n }\r\n _resolveNode(node, cachedVersionId) {\r\n if (isNodeInjectedText(node)) {\r\n this._injectedTextDecorationsTree.resolveNode(node, cachedVersionId);\r\n }\r\n else if (isNodeInOverviewRuler(node)) {\r\n this._decorationsTree1.resolveNode(node, cachedVersionId);\r\n }\r\n else {\r\n this._decorationsTree0.resolveNode(node, cachedVersionId);\r\n }\r\n }\r\n acceptReplace(offset, length, textLength, forceMoveMarkers) {\r\n this._decorationsTree0.acceptReplace(offset, length, textLength, forceMoveMarkers);\r\n this._decorationsTree1.acceptReplace(offset, length, textLength, forceMoveMarkers);\r\n this._injectedTextDecorationsTree.acceptReplace(offset, length, textLength, forceMoveMarkers);\r\n }\r\n}\r\nfunction cleanClassName(className) {\r\n return className.replace(/[^a-z0-9\\-_]/gi, ' ');\r\n}\r\nclass DecorationOptions {\r\n constructor(options) {\r\n this.color = options.color || '';\r\n this.darkColor = options.darkColor || '';\r\n }\r\n}\r\nexport class ModelDecorationOverviewRulerOptions extends DecorationOptions {\r\n constructor(options) {\r\n super(options);\r\n this._resolvedColor = null;\r\n this.position = (typeof options.position === 'number' ? options.position : model.OverviewRulerLane.Center);\r\n }\r\n getColor(theme) {\r\n if (!this._resolvedColor) {\r\n if (theme.type !== 'light' && this.darkColor) {\r\n this._resolvedColor = this._resolveColor(this.darkColor, theme);\r\n }\r\n else {\r\n this._resolvedColor = this._resolveColor(this.color, theme);\r\n }\r\n }\r\n return this._resolvedColor;\r\n }\r\n invalidateCachedColor() {\r\n this._resolvedColor = null;\r\n }\r\n _resolveColor(color, theme) {\r\n if (typeof color === 'string') {\r\n return color;\r\n }\r\n let c = color ? theme.getColor(color.id) : null;\r\n if (!c) {\r\n return '';\r\n }\r\n return c.toString();\r\n }\r\n}\r\nexport class ModelDecorationMinimapOptions extends DecorationOptions {\r\n constructor(options) {\r\n super(options);\r\n this.position = options.position;\r\n }\r\n getColor(theme) {\r\n if (!this._resolvedColor) {\r\n if (theme.type !== 'light' && this.darkColor) {\r\n this._resolvedColor = this._resolveColor(this.darkColor, theme);\r\n }\r\n else {\r\n this._resolvedColor = this._resolveColor(this.color, theme);\r\n }\r\n }\r\n return this._resolvedColor;\r\n }\r\n invalidateCachedColor() {\r\n this._resolvedColor = undefined;\r\n }\r\n _resolveColor(color, theme) {\r\n if (typeof color === 'string') {\r\n return Color.fromHex(color);\r\n }\r\n return theme.getColor(color.id);\r\n }\r\n}\r\nexport class ModelDecorationInjectedTextOptions {\r\n constructor(options) {\r\n this.content = options.content || '';\r\n this.inlineClassName = options.inlineClassName || null;\r\n this.inlineClassNameAffectsLetterSpacing = options.inlineClassNameAffectsLetterSpacing || false;\r\n }\r\n static from(options) {\r\n if (options instanceof ModelDecorationInjectedTextOptions) {\r\n return options;\r\n }\r\n return new ModelDecorationInjectedTextOptions(options);\r\n }\r\n}\r\nexport class ModelDecorationOptions {\r\n constructor(options) {\r\n this.description = options.description;\r\n this.stickiness = options.stickiness || 0 /* AlwaysGrowsWhenTypingAtEdges */;\r\n this.zIndex = options.zIndex || 0;\r\n this.className = options.className ? cleanClassName(options.className) : null;\r\n this.hoverMessage = options.hoverMessage || null;\r\n this.glyphMarginHoverMessage = options.glyphMarginHoverMessage || null;\r\n this.isWholeLine = options.isWholeLine || false;\r\n this.showIfCollapsed = options.showIfCollapsed || false;\r\n this.collapseOnReplaceEdit = options.collapseOnReplaceEdit || false;\r\n this.overviewRuler = options.overviewRuler ? new ModelDecorationOverviewRulerOptions(options.overviewRuler) : null;\r\n this.minimap = options.minimap ? new ModelDecorationMinimapOptions(options.minimap) : null;\r\n this.glyphMarginClassName = options.glyphMarginClassName ? cleanClassName(options.glyphMarginClassName) : null;\r\n this.linesDecorationsClassName = options.linesDecorationsClassName ? cleanClassName(options.linesDecorationsClassName) : null;\r\n this.firstLineDecorationClassName = options.firstLineDecorationClassName ? cleanClassName(options.firstLineDecorationClassName) : null;\r\n this.marginClassName = options.marginClassName ? cleanClassName(options.marginClassName) : null;\r\n this.inlineClassName = options.inlineClassName ? cleanClassName(options.inlineClassName) : null;\r\n this.inlineClassNameAffectsLetterSpacing = options.inlineClassNameAffectsLetterSpacing || false;\r\n this.beforeContentClassName = options.beforeContentClassName ? cleanClassName(options.beforeContentClassName) : null;\r\n this.afterContentClassName = options.afterContentClassName ? cleanClassName(options.afterContentClassName) : null;\r\n this.after = options.after ? ModelDecorationInjectedTextOptions.from(options.after) : null;\r\n this.before = options.before ? ModelDecorationInjectedTextOptions.from(options.before) : null;\r\n }\r\n static register(options) {\r\n return new ModelDecorationOptions(options);\r\n }\r\n static createDynamic(options) {\r\n return new ModelDecorationOptions(options);\r\n }\r\n}\r\nModelDecorationOptions.EMPTY = ModelDecorationOptions.register({ description: 'empty' });\r\n/**\r\n * The order carefully matches the values of the enum.\r\n */\r\nconst TRACKED_RANGE_OPTIONS = [\r\n ModelDecorationOptions.register({ description: 'tracked-range-always-grows-when-typing-at-edges', stickiness: 0 /* AlwaysGrowsWhenTypingAtEdges */ }),\r\n ModelDecorationOptions.register({ description: 'tracked-range-never-grows-when-typing-at-edges', stickiness: 1 /* NeverGrowsWhenTypingAtEdges */ }),\r\n ModelDecorationOptions.register({ description: 'tracked-range-grows-only-when-typing-before', stickiness: 2 /* GrowsOnlyWhenTypingBefore */ }),\r\n ModelDecorationOptions.register({ description: 'tracked-range-grows-only-when-typing-after', stickiness: 3 /* GrowsOnlyWhenTypingAfter */ }),\r\n];\r\nfunction _normalizeOptions(options) {\r\n if (options instanceof ModelDecorationOptions) {\r\n return options;\r\n }\r\n return ModelDecorationOptions.createDynamic(options);\r\n}\r\nexport class DidChangeDecorationsEmitter extends Disposable {\r\n constructor(handleBeforeFire) {\r\n super();\r\n this.handleBeforeFire = handleBeforeFire;\r\n this._actual = this._register(new Emitter());\r\n this.event = this._actual.event;\r\n this._affectedInjectedTextLines = null;\r\n this._deferredCnt = 0;\r\n this._shouldFire = false;\r\n this._affectsMinimap = false;\r\n this._affectsOverviewRuler = false;\r\n }\r\n beginDeferredEmit() {\r\n this._deferredCnt++;\r\n }\r\n endDeferredEmit() {\r\n var _a;\r\n this._deferredCnt--;\r\n if (this._deferredCnt === 0) {\r\n if (this._shouldFire) {\r\n this.handleBeforeFire(this._affectedInjectedTextLines);\r\n const event = {\r\n affectsMinimap: this._affectsMinimap,\r\n affectsOverviewRuler: this._affectsOverviewRuler\r\n };\r\n this._shouldFire = false;\r\n this._affectsMinimap = false;\r\n this._affectsOverviewRuler = false;\r\n this._actual.fire(event);\r\n }\r\n (_a = this._affectedInjectedTextLines) === null || _a === void 0 ? void 0 : _a.clear();\r\n this._affectedInjectedTextLines = null;\r\n }\r\n }\r\n recordLineAffectedByInjectedText(lineNumber) {\r\n if (!this._affectedInjectedTextLines) {\r\n this._affectedInjectedTextLines = new Set();\r\n }\r\n this._affectedInjectedTextLines.add(lineNumber);\r\n }\r\n checkAffectedAndFire(options) {\r\n if (!this._affectsMinimap) {\r\n this._affectsMinimap = options.minimap && options.minimap.position ? true : false;\r\n }\r\n if (!this._affectsOverviewRuler) {\r\n this._affectsOverviewRuler = options.overviewRuler && options.overviewRuler.color ? true : false;\r\n }\r\n this._shouldFire = true;\r\n }\r\n fire() {\r\n this._affectsMinimap = true;\r\n this._affectsOverviewRuler = true;\r\n this._shouldFire = true;\r\n }\r\n}\r\n//#endregion\r\nexport class DidChangeContentEmitter extends Disposable {\r\n constructor() {\r\n super();\r\n /**\r\n * Both `fastEvent` and `slowEvent` work the same way and contain the same events, but first we invoke `fastEvent` and then `slowEvent`.\r\n */\r\n this._fastEmitter = this._register(new Emitter());\r\n this.fastEvent = this._fastEmitter.event;\r\n this._slowEmitter = this._register(new Emitter());\r\n this.slowEvent = this._slowEmitter.event;\r\n this._deferredCnt = 0;\r\n this._deferredEvent = null;\r\n }\r\n beginDeferredEmit() {\r\n this._deferredCnt++;\r\n }\r\n endDeferredEmit(resultingSelection = null) {\r\n this._deferredCnt--;\r\n if (this._deferredCnt === 0) {\r\n if (this._deferredEvent !== null) {\r\n this._deferredEvent.rawContentChangedEvent.resultingSelection = resultingSelection;\r\n const e = this._deferredEvent;\r\n this._deferredEvent = null;\r\n this._fastEmitter.fire(e);\r\n this._slowEmitter.fire(e);\r\n }\r\n }\r\n }\r\n fire(e) {\r\n if (this._deferredCnt > 0) {\r\n if (this._deferredEvent) {\r\n this._deferredEvent = this._deferredEvent.merge(e);\r\n }\r\n else {\r\n this._deferredEvent = e;\r\n }\r\n return;\r\n }\r\n this._fastEmitter.fire(e);\r\n this._slowEmitter.fire(e);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { Position } from '../core/position.js';\r\nimport { Range } from '../core/range.js';\r\nimport { Selection } from '../core/selection.js';\r\nimport { TextModel } from '../model/textModel.js';\r\nimport { LanguageConfigurationRegistry } from '../modes/languageConfigurationRegistry.js';\r\nconst autoCloseAlways = () => true;\r\nconst autoCloseNever = () => false;\r\nconst autoCloseBeforeWhitespace = (chr) => (chr === ' ' || chr === '\\t');\r\nexport class CursorConfiguration {\r\n constructor(languageIdentifier, modelOptions, configuration) {\r\n this._cursorMoveConfigurationBrand = undefined;\r\n this._languageIdentifier = languageIdentifier;\r\n const options = configuration.options;\r\n const layoutInfo = options.get(129 /* layoutInfo */);\r\n this.readOnly = options.get(79 /* readOnly */);\r\n this.tabSize = modelOptions.tabSize;\r\n this.indentSize = modelOptions.indentSize;\r\n this.insertSpaces = modelOptions.insertSpaces;\r\n this.stickyTabStops = options.get(103 /* stickyTabStops */);\r\n this.lineHeight = options.get(57 /* lineHeight */);\r\n this.pageSize = Math.max(1, Math.floor(layoutInfo.height / this.lineHeight) - 2);\r\n this.useTabStops = options.get(114 /* useTabStops */);\r\n this.wordSeparators = options.get(115 /* wordSeparators */);\r\n this.emptySelectionClipboard = options.get(30 /* emptySelectionClipboard */);\r\n this.copyWithSyntaxHighlighting = options.get(19 /* copyWithSyntaxHighlighting */);\r\n this.multiCursorMergeOverlapping = options.get(67 /* multiCursorMergeOverlapping */);\r\n this.multiCursorPaste = options.get(69 /* multiCursorPaste */);\r\n this.autoClosingBrackets = options.get(5 /* autoClosingBrackets */);\r\n this.autoClosingQuotes = options.get(8 /* autoClosingQuotes */);\r\n this.autoClosingDelete = options.get(6 /* autoClosingDelete */);\r\n this.autoClosingOvertype = options.get(7 /* autoClosingOvertype */);\r\n this.autoSurround = options.get(11 /* autoSurround */);\r\n this.autoIndent = options.get(9 /* autoIndent */);\r\n this.surroundingPairs = {};\r\n this._electricChars = null;\r\n this.shouldAutoCloseBefore = {\r\n quote: CursorConfiguration._getShouldAutoClose(languageIdentifier, this.autoClosingQuotes),\r\n bracket: CursorConfiguration._getShouldAutoClose(languageIdentifier, this.autoClosingBrackets)\r\n };\r\n this.autoClosingPairs = LanguageConfigurationRegistry.getAutoClosingPairs(languageIdentifier.id);\r\n let surroundingPairs = CursorConfiguration._getSurroundingPairs(languageIdentifier);\r\n if (surroundingPairs) {\r\n for (const pair of surroundingPairs) {\r\n this.surroundingPairs[pair.open] = pair.close;\r\n }\r\n }\r\n }\r\n static shouldRecreate(e) {\r\n return (e.hasChanged(129 /* layoutInfo */)\r\n || e.hasChanged(115 /* wordSeparators */)\r\n || e.hasChanged(30 /* emptySelectionClipboard */)\r\n || e.hasChanged(67 /* multiCursorMergeOverlapping */)\r\n || e.hasChanged(69 /* multiCursorPaste */)\r\n || e.hasChanged(5 /* autoClosingBrackets */)\r\n || e.hasChanged(8 /* autoClosingQuotes */)\r\n || e.hasChanged(6 /* autoClosingDelete */)\r\n || e.hasChanged(7 /* autoClosingOvertype */)\r\n || e.hasChanged(11 /* autoSurround */)\r\n || e.hasChanged(114 /* useTabStops */)\r\n || e.hasChanged(57 /* lineHeight */)\r\n || e.hasChanged(79 /* readOnly */));\r\n }\r\n get electricChars() {\r\n if (!this._electricChars) {\r\n this._electricChars = {};\r\n let electricChars = CursorConfiguration._getElectricCharacters(this._languageIdentifier);\r\n if (electricChars) {\r\n for (const char of electricChars) {\r\n this._electricChars[char] = true;\r\n }\r\n }\r\n }\r\n return this._electricChars;\r\n }\r\n normalizeIndentation(str) {\r\n return TextModel.normalizeIndentation(str, this.indentSize, this.insertSpaces);\r\n }\r\n static _getElectricCharacters(languageIdentifier) {\r\n try {\r\n return LanguageConfigurationRegistry.getElectricCharacters(languageIdentifier.id);\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n return null;\r\n }\r\n }\r\n static _getShouldAutoClose(languageIdentifier, autoCloseConfig) {\r\n switch (autoCloseConfig) {\r\n case 'beforeWhitespace':\r\n return autoCloseBeforeWhitespace;\r\n case 'languageDefined':\r\n return CursorConfiguration._getLanguageDefinedShouldAutoClose(languageIdentifier);\r\n case 'always':\r\n return autoCloseAlways;\r\n case 'never':\r\n return autoCloseNever;\r\n }\r\n }\r\n static _getLanguageDefinedShouldAutoClose(languageIdentifier) {\r\n try {\r\n const autoCloseBeforeSet = LanguageConfigurationRegistry.getAutoCloseBeforeSet(languageIdentifier.id);\r\n return c => autoCloseBeforeSet.indexOf(c) !== -1;\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n return autoCloseNever;\r\n }\r\n }\r\n static _getSurroundingPairs(languageIdentifier) {\r\n try {\r\n return LanguageConfigurationRegistry.getSurroundingPairs(languageIdentifier.id);\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n return null;\r\n }\r\n }\r\n}\r\n/**\r\n * Represents the cursor state on either the model or on the view model.\r\n */\r\nexport class SingleCursorState {\r\n constructor(selectionStart, selectionStartLeftoverVisibleColumns, position, leftoverVisibleColumns) {\r\n this._singleCursorStateBrand = undefined;\r\n this.selectionStart = selectionStart;\r\n this.selectionStartLeftoverVisibleColumns = selectionStartLeftoverVisibleColumns;\r\n this.position = position;\r\n this.leftoverVisibleColumns = leftoverVisibleColumns;\r\n this.selection = SingleCursorState._computeSelection(this.selectionStart, this.position);\r\n }\r\n equals(other) {\r\n return (this.selectionStartLeftoverVisibleColumns === other.selectionStartLeftoverVisibleColumns\r\n && this.leftoverVisibleColumns === other.leftoverVisibleColumns\r\n && this.position.equals(other.position)\r\n && this.selectionStart.equalsRange(other.selectionStart));\r\n }\r\n hasSelection() {\r\n return (!this.selection.isEmpty() || !this.selectionStart.isEmpty());\r\n }\r\n move(inSelectionMode, lineNumber, column, leftoverVisibleColumns) {\r\n if (inSelectionMode) {\r\n // move just position\r\n return new SingleCursorState(this.selectionStart, this.selectionStartLeftoverVisibleColumns, new Position(lineNumber, column), leftoverVisibleColumns);\r\n }\r\n else {\r\n // move everything\r\n return new SingleCursorState(new Range(lineNumber, column, lineNumber, column), leftoverVisibleColumns, new Position(lineNumber, column), leftoverVisibleColumns);\r\n }\r\n }\r\n static _computeSelection(selectionStart, position) {\r\n let startLineNumber, startColumn, endLineNumber, endColumn;\r\n if (selectionStart.isEmpty()) {\r\n startLineNumber = selectionStart.startLineNumber;\r\n startColumn = selectionStart.startColumn;\r\n endLineNumber = position.lineNumber;\r\n endColumn = position.column;\r\n }\r\n else {\r\n if (position.isBeforeOrEqual(selectionStart.getStartPosition())) {\r\n startLineNumber = selectionStart.endLineNumber;\r\n startColumn = selectionStart.endColumn;\r\n endLineNumber = position.lineNumber;\r\n endColumn = position.column;\r\n }\r\n else {\r\n startLineNumber = selectionStart.startLineNumber;\r\n startColumn = selectionStart.startColumn;\r\n endLineNumber = position.lineNumber;\r\n endColumn = position.column;\r\n }\r\n }\r\n return new Selection(startLineNumber, startColumn, endLineNumber, endColumn);\r\n }\r\n}\r\nexport class CursorContext {\r\n constructor(model, viewModel, coordinatesConverter, cursorConfig) {\r\n this._cursorContextBrand = undefined;\r\n this.model = model;\r\n this.viewModel = viewModel;\r\n this.coordinatesConverter = coordinatesConverter;\r\n this.cursorConfig = cursorConfig;\r\n }\r\n}\r\nexport class PartialModelCursorState {\r\n constructor(modelState) {\r\n this.modelState = modelState;\r\n this.viewState = null;\r\n }\r\n}\r\nexport class PartialViewCursorState {\r\n constructor(viewState) {\r\n this.modelState = null;\r\n this.viewState = viewState;\r\n }\r\n}\r\nexport class CursorState {\r\n constructor(modelState, viewState) {\r\n this._cursorStateBrand = undefined;\r\n this.modelState = modelState;\r\n this.viewState = viewState;\r\n }\r\n static fromModelState(modelState) {\r\n return new PartialModelCursorState(modelState);\r\n }\r\n static fromViewState(viewState) {\r\n return new PartialViewCursorState(viewState);\r\n }\r\n static fromModelSelection(modelSelection) {\r\n const selectionStartLineNumber = modelSelection.selectionStartLineNumber;\r\n const selectionStartColumn = modelSelection.selectionStartColumn;\r\n const positionLineNumber = modelSelection.positionLineNumber;\r\n const positionColumn = modelSelection.positionColumn;\r\n const modelState = new SingleCursorState(new Range(selectionStartLineNumber, selectionStartColumn, selectionStartLineNumber, selectionStartColumn), 0, new Position(positionLineNumber, positionColumn), 0);\r\n return CursorState.fromModelState(modelState);\r\n }\r\n static fromModelSelections(modelSelections) {\r\n let states = [];\r\n for (let i = 0, len = modelSelections.length; i < len; i++) {\r\n states[i] = this.fromModelSelection(modelSelections[i]);\r\n }\r\n return states;\r\n }\r\n equals(other) {\r\n return (this.viewState.equals(other.viewState) && this.modelState.equals(other.modelState));\r\n }\r\n}\r\nexport class EditOperationResult {\r\n constructor(type, commands, opts) {\r\n this._editOperationResultBrand = undefined;\r\n this.type = type;\r\n this.commands = commands;\r\n this.shouldPushStackElementBefore = opts.shouldPushStackElementBefore;\r\n this.shouldPushStackElementAfter = opts.shouldPushStackElementAfter;\r\n }\r\n}\r\n/**\r\n * Common operations that work and make sense both on the model and on the view model.\r\n */\r\nexport class CursorColumns {\r\n static visibleColumnFromColumn(lineContent, column, tabSize) {\r\n const lineContentLength = lineContent.length;\r\n const endOffset = column - 1 < lineContentLength ? column - 1 : lineContentLength;\r\n let result = 0;\r\n let i = 0;\r\n while (i < endOffset) {\r\n const codePoint = strings.getNextCodePoint(lineContent, endOffset, i);\r\n i += (codePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n if (codePoint === 9 /* Tab */) {\r\n result = CursorColumns.nextRenderTabStop(result, tabSize);\r\n }\r\n else {\r\n let graphemeBreakType = strings.getGraphemeBreakType(codePoint);\r\n while (i < endOffset) {\r\n const nextCodePoint = strings.getNextCodePoint(lineContent, endOffset, i);\r\n const nextGraphemeBreakType = strings.getGraphemeBreakType(nextCodePoint);\r\n if (strings.breakBetweenGraphemeBreakType(graphemeBreakType, nextGraphemeBreakType)) {\r\n break;\r\n }\r\n i += (nextCodePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n graphemeBreakType = nextGraphemeBreakType;\r\n }\r\n if (strings.isFullWidthCharacter(codePoint) || strings.isEmojiImprecise(codePoint)) {\r\n result = result + 2;\r\n }\r\n else {\r\n result = result + 1;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n /**\r\n * Returns an array that maps one based columns to one based visible columns. The entry at position 0 is -1.\r\n */\r\n static visibleColumnsByColumns(lineContent, tabSize) {\r\n const endOffset = lineContent.length;\r\n let result = new Array();\r\n result.push(-1);\r\n let pos = 0;\r\n let i = 0;\r\n while (i < endOffset) {\r\n const codePoint = strings.getNextCodePoint(lineContent, endOffset, i);\r\n i += (codePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n result.push(pos);\r\n if (codePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */) {\r\n result.push(pos);\r\n }\r\n if (codePoint === 9 /* Tab */) {\r\n pos = CursorColumns.nextRenderTabStop(pos, tabSize);\r\n }\r\n else {\r\n let graphemeBreakType = strings.getGraphemeBreakType(codePoint);\r\n while (i < endOffset) {\r\n const nextCodePoint = strings.getNextCodePoint(lineContent, endOffset, i);\r\n const nextGraphemeBreakType = strings.getGraphemeBreakType(nextCodePoint);\r\n if (strings.breakBetweenGraphemeBreakType(graphemeBreakType, nextGraphemeBreakType)) {\r\n break;\r\n }\r\n i += (nextCodePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n result.push(pos);\r\n if (codePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */) {\r\n result.push(pos);\r\n }\r\n graphemeBreakType = nextGraphemeBreakType;\r\n }\r\n if (strings.isFullWidthCharacter(codePoint) || strings.isEmojiImprecise(codePoint)) {\r\n pos = pos + 2;\r\n }\r\n else {\r\n pos = pos + 1;\r\n }\r\n }\r\n }\r\n result.push(pos);\r\n return result;\r\n }\r\n static visibleColumnFromColumn2(config, model, position) {\r\n return this.visibleColumnFromColumn(model.getLineContent(position.lineNumber), position.column, config.tabSize);\r\n }\r\n static columnFromVisibleColumn(lineContent, visibleColumn, tabSize) {\r\n if (visibleColumn <= 0) {\r\n return 1;\r\n }\r\n const lineLength = lineContent.length;\r\n let beforeVisibleColumn = 0;\r\n let beforeColumn = 1;\r\n let i = 0;\r\n while (i < lineLength) {\r\n const codePoint = strings.getNextCodePoint(lineContent, lineLength, i);\r\n i += (codePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n let afterVisibleColumn;\r\n if (codePoint === 9 /* Tab */) {\r\n afterVisibleColumn = CursorColumns.nextRenderTabStop(beforeVisibleColumn, tabSize);\r\n }\r\n else {\r\n let graphemeBreakType = strings.getGraphemeBreakType(codePoint);\r\n while (i < lineLength) {\r\n const nextCodePoint = strings.getNextCodePoint(lineContent, lineLength, i);\r\n const nextGraphemeBreakType = strings.getGraphemeBreakType(nextCodePoint);\r\n if (strings.breakBetweenGraphemeBreakType(graphemeBreakType, nextGraphemeBreakType)) {\r\n break;\r\n }\r\n i += (nextCodePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n graphemeBreakType = nextGraphemeBreakType;\r\n }\r\n if (strings.isFullWidthCharacter(codePoint) || strings.isEmojiImprecise(codePoint)) {\r\n afterVisibleColumn = beforeVisibleColumn + 2;\r\n }\r\n else {\r\n afterVisibleColumn = beforeVisibleColumn + 1;\r\n }\r\n }\r\n const afterColumn = i + 1;\r\n if (afterVisibleColumn >= visibleColumn) {\r\n const beforeDelta = visibleColumn - beforeVisibleColumn;\r\n const afterDelta = afterVisibleColumn - visibleColumn;\r\n if (afterDelta < beforeDelta) {\r\n return afterColumn;\r\n }\r\n else {\r\n return beforeColumn;\r\n }\r\n }\r\n beforeVisibleColumn = afterVisibleColumn;\r\n beforeColumn = afterColumn;\r\n }\r\n // walked the entire string\r\n return lineLength + 1;\r\n }\r\n static columnFromVisibleColumn2(config, model, lineNumber, visibleColumn) {\r\n let result = this.columnFromVisibleColumn(model.getLineContent(lineNumber), visibleColumn, config.tabSize);\r\n let minColumn = model.getLineMinColumn(lineNumber);\r\n if (result < minColumn) {\r\n return minColumn;\r\n }\r\n let maxColumn = model.getLineMaxColumn(lineNumber);\r\n if (result > maxColumn) {\r\n return maxColumn;\r\n }\r\n return result;\r\n }\r\n /**\r\n * ATTENTION: This works with 0-based columns (as oposed to the regular 1-based columns)\r\n */\r\n static nextRenderTabStop(visibleColumn, tabSize) {\r\n return visibleColumn + tabSize - visibleColumn % tabSize;\r\n }\r\n /**\r\n * ATTENTION: This works with 0-based columns (as oposed to the regular 1-based columns)\r\n */\r\n static nextIndentTabStop(visibleColumn, indentSize) {\r\n return visibleColumn + indentSize - visibleColumn % indentSize;\r\n }\r\n /**\r\n * ATTENTION: This works with 0-based columns (as opposed to the regular 1-based columns)\r\n */\r\n static prevRenderTabStop(column, tabSize) {\r\n return Math.max(0, column - 1 - (column - 1) % tabSize);\r\n }\r\n /**\r\n * ATTENTION: This works with 0-based columns (as opposed to the regular 1-based columns)\r\n */\r\n static prevIndentTabStop(column, indentSize) {\r\n return Math.max(0, column - 1 - (column - 1) % indentSize);\r\n }\r\n}\r\nexport function isQuote(ch) {\r\n return (ch === '\\'' || ch === '\"' || ch === '`');\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { CursorColumns } from './cursorCommon.js';\r\nexport class AtomicTabMoveOperations {\r\n /**\r\n * Get the visible column at the position. If we get to a non-whitespace character first\r\n * or past the end of string then return -1.\r\n *\r\n * **Note** `position` and the return value are 0-based.\r\n */\r\n static whitespaceVisibleColumn(lineContent, position, tabSize) {\r\n const lineLength = lineContent.length;\r\n let visibleColumn = 0;\r\n let prevTabStopPosition = -1;\r\n let prevTabStopVisibleColumn = -1;\r\n for (let i = 0; i < lineLength; i++) {\r\n if (i === position) {\r\n return [prevTabStopPosition, prevTabStopVisibleColumn, visibleColumn];\r\n }\r\n if (visibleColumn % tabSize === 0) {\r\n prevTabStopPosition = i;\r\n prevTabStopVisibleColumn = visibleColumn;\r\n }\r\n const chCode = lineContent.charCodeAt(i);\r\n switch (chCode) {\r\n case 32 /* Space */:\r\n visibleColumn += 1;\r\n break;\r\n case 9 /* Tab */:\r\n // Skip to the next multiple of tabSize.\r\n visibleColumn = CursorColumns.nextRenderTabStop(visibleColumn, tabSize);\r\n break;\r\n default:\r\n return [-1, -1, -1];\r\n }\r\n }\r\n if (position === lineLength) {\r\n return [prevTabStopPosition, prevTabStopVisibleColumn, visibleColumn];\r\n }\r\n return [-1, -1, -1];\r\n }\r\n /**\r\n * Return the position that should result from a move left, right or to the\r\n * nearest tab, if atomic tabs are enabled. Left and right are used for the\r\n * arrow key movements, nearest is used for mouse selection. It returns\r\n * -1 if atomic tabs are not relevant and you should fall back to normal\r\n * behaviour.\r\n *\r\n * **Note**: `position` and the return value are 0-based.\r\n */\r\n static atomicPosition(lineContent, position, tabSize, direction) {\r\n const lineLength = lineContent.length;\r\n // Get the 0-based visible column corresponding to the position, or return\r\n // -1 if it is not in the initial whitespace.\r\n const [prevTabStopPosition, prevTabStopVisibleColumn, visibleColumn] = AtomicTabMoveOperations.whitespaceVisibleColumn(lineContent, position, tabSize);\r\n if (visibleColumn === -1) {\r\n return -1;\r\n }\r\n // Is the output left or right of the current position. The case for nearest\r\n // where it is the same as the current position is handled in the switch.\r\n let left;\r\n switch (direction) {\r\n case 0 /* Left */:\r\n left = true;\r\n break;\r\n case 1 /* Right */:\r\n left = false;\r\n break;\r\n case 2 /* Nearest */:\r\n // The code below assumes the output position is either left or right\r\n // of the input position. If it is the same, return immediately.\r\n if (visibleColumn % tabSize === 0) {\r\n return position;\r\n }\r\n // Go to the nearest indentation.\r\n left = visibleColumn % tabSize <= (tabSize / 2);\r\n break;\r\n }\r\n // If going left, we can just use the info about the last tab stop position and\r\n // last tab stop visible column that we computed in the first walk over the whitespace.\r\n if (left) {\r\n if (prevTabStopPosition === -1) {\r\n return -1;\r\n }\r\n // If the direction is left, we need to keep scanning right to ensure\r\n // that targetVisibleColumn + tabSize is before non-whitespace.\r\n // This is so that when we press left at the end of a partial\r\n // indentation it only goes one character. For example ' foo' with\r\n // tabSize 4, should jump from position 6 to position 5, not 4.\r\n let currentVisibleColumn = prevTabStopVisibleColumn;\r\n for (let i = prevTabStopPosition; i < lineLength; ++i) {\r\n if (currentVisibleColumn === prevTabStopVisibleColumn + tabSize) {\r\n // It is a full indentation.\r\n return prevTabStopPosition;\r\n }\r\n const chCode = lineContent.charCodeAt(i);\r\n switch (chCode) {\r\n case 32 /* Space */:\r\n currentVisibleColumn += 1;\r\n break;\r\n case 9 /* Tab */:\r\n currentVisibleColumn = CursorColumns.nextRenderTabStop(currentVisibleColumn, tabSize);\r\n break;\r\n default:\r\n return -1;\r\n }\r\n }\r\n if (currentVisibleColumn === prevTabStopVisibleColumn + tabSize) {\r\n return prevTabStopPosition;\r\n }\r\n // It must have been a partial indentation.\r\n return -1;\r\n }\r\n // We are going right.\r\n const targetVisibleColumn = CursorColumns.nextRenderTabStop(visibleColumn, tabSize);\r\n // We can just continue from where whitespaceVisibleColumn got to.\r\n let currentVisibleColumn = visibleColumn;\r\n for (let i = position; i < lineLength; i++) {\r\n if (currentVisibleColumn === targetVisibleColumn) {\r\n return i;\r\n }\r\n const chCode = lineContent.charCodeAt(i);\r\n switch (chCode) {\r\n case 32 /* Space */:\r\n currentVisibleColumn += 1;\r\n break;\r\n case 9 /* Tab */:\r\n currentVisibleColumn = CursorColumns.nextRenderTabStop(currentVisibleColumn, tabSize);\r\n break;\r\n default:\r\n return -1;\r\n }\r\n }\r\n // This condition handles when the target column is at the end of the line.\r\n if (currentVisibleColumn === targetVisibleColumn) {\r\n return lineLength;\r\n }\r\n return -1;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { PageCoordinates } from '../editorDom.js';\r\nimport { PartFingerprints } from '../view/viewPart.js';\r\nimport { ViewLine } from '../viewParts/lines/viewLine.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Range as EditorRange } from '../../common/core/range.js';\r\nimport { CursorColumns } from '../../common/controller/cursorCommon.js';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { AtomicTabMoveOperations } from '../../common/controller/cursorAtomicMoveOperations.js';\r\nclass UnknownHitTestResult {\r\n constructor(hitTarget = null) {\r\n this.hitTarget = hitTarget;\r\n this.type = 0 /* Unknown */;\r\n }\r\n}\r\nclass ContentHitTestResult {\r\n constructor(position, spanNode, injectedText) {\r\n this.position = position;\r\n this.spanNode = spanNode;\r\n this.injectedText = injectedText;\r\n this.type = 1 /* Content */;\r\n }\r\n}\r\nvar HitTestResult;\r\n(function (HitTestResult) {\r\n function createFromDOMInfo(ctx, spanNode, offset) {\r\n const position = ctx.getPositionFromDOMInfo(spanNode, offset);\r\n if (position) {\r\n return new ContentHitTestResult(position, spanNode, null);\r\n }\r\n return new UnknownHitTestResult(spanNode);\r\n }\r\n HitTestResult.createFromDOMInfo = createFromDOMInfo;\r\n})(HitTestResult || (HitTestResult = {}));\r\nexport class PointerHandlerLastRenderData {\r\n constructor(lastViewCursorsRenderData, lastTextareaPosition) {\r\n this.lastViewCursorsRenderData = lastViewCursorsRenderData;\r\n this.lastTextareaPosition = lastTextareaPosition;\r\n }\r\n}\r\nexport class MouseTarget {\r\n constructor(element, type, mouseColumn = 0, position = null, range = null, detail = null) {\r\n this.element = element;\r\n this.type = type;\r\n this.mouseColumn = mouseColumn;\r\n this.position = position;\r\n if (!range && position) {\r\n range = new EditorRange(position.lineNumber, position.column, position.lineNumber, position.column);\r\n }\r\n this.range = range;\r\n this.detail = detail;\r\n }\r\n static _typeToString(type) {\r\n if (type === 1 /* TEXTAREA */) {\r\n return 'TEXTAREA';\r\n }\r\n if (type === 2 /* GUTTER_GLYPH_MARGIN */) {\r\n return 'GUTTER_GLYPH_MARGIN';\r\n }\r\n if (type === 3 /* GUTTER_LINE_NUMBERS */) {\r\n return 'GUTTER_LINE_NUMBERS';\r\n }\r\n if (type === 4 /* GUTTER_LINE_DECORATIONS */) {\r\n return 'GUTTER_LINE_DECORATIONS';\r\n }\r\n if (type === 5 /* GUTTER_VIEW_ZONE */) {\r\n return 'GUTTER_VIEW_ZONE';\r\n }\r\n if (type === 6 /* CONTENT_TEXT */) {\r\n return 'CONTENT_TEXT';\r\n }\r\n if (type === 7 /* CONTENT_EMPTY */) {\r\n return 'CONTENT_EMPTY';\r\n }\r\n if (type === 8 /* CONTENT_VIEW_ZONE */) {\r\n return 'CONTENT_VIEW_ZONE';\r\n }\r\n if (type === 9 /* CONTENT_WIDGET */) {\r\n return 'CONTENT_WIDGET';\r\n }\r\n if (type === 10 /* OVERVIEW_RULER */) {\r\n return 'OVERVIEW_RULER';\r\n }\r\n if (type === 11 /* SCROLLBAR */) {\r\n return 'SCROLLBAR';\r\n }\r\n if (type === 12 /* OVERLAY_WIDGET */) {\r\n return 'OVERLAY_WIDGET';\r\n }\r\n return 'UNKNOWN';\r\n }\r\n static toString(target) {\r\n return this._typeToString(target.type) + ': ' + target.position + ' - ' + target.range + ' - ' + target.detail;\r\n }\r\n toString() {\r\n return MouseTarget.toString(this);\r\n }\r\n}\r\nclass ElementPath {\r\n static isTextArea(path) {\r\n return (path.length === 2\r\n && path[0] === 3 /* OverflowGuard */\r\n && path[1] === 6 /* TextArea */);\r\n }\r\n static isChildOfViewLines(path) {\r\n return (path.length >= 4\r\n && path[0] === 3 /* OverflowGuard */\r\n && path[3] === 7 /* ViewLines */);\r\n }\r\n static isStrictChildOfViewLines(path) {\r\n return (path.length > 4\r\n && path[0] === 3 /* OverflowGuard */\r\n && path[3] === 7 /* ViewLines */);\r\n }\r\n static isChildOfScrollableElement(path) {\r\n return (path.length >= 2\r\n && path[0] === 3 /* OverflowGuard */\r\n && path[1] === 5 /* ScrollableElement */);\r\n }\r\n static isChildOfMinimap(path) {\r\n return (path.length >= 2\r\n && path[0] === 3 /* OverflowGuard */\r\n && path[1] === 8 /* Minimap */);\r\n }\r\n static isChildOfContentWidgets(path) {\r\n return (path.length >= 4\r\n && path[0] === 3 /* OverflowGuard */\r\n && path[3] === 1 /* ContentWidgets */);\r\n }\r\n static isChildOfOverflowingContentWidgets(path) {\r\n return (path.length >= 1\r\n && path[0] === 2 /* OverflowingContentWidgets */);\r\n }\r\n static isChildOfOverlayWidgets(path) {\r\n return (path.length >= 2\r\n && path[0] === 3 /* OverflowGuard */\r\n && path[1] === 4 /* OverlayWidgets */);\r\n }\r\n}\r\nexport class HitTestContext {\r\n constructor(context, viewHelper, lastRenderData) {\r\n this.model = context.model;\r\n const options = context.configuration.options;\r\n this.layoutInfo = options.get(129 /* layoutInfo */);\r\n this.viewDomNode = viewHelper.viewDomNode;\r\n this.lineHeight = options.get(57 /* lineHeight */);\r\n this.stickyTabStops = options.get(103 /* stickyTabStops */);\r\n this.typicalHalfwidthCharacterWidth = options.get(41 /* fontInfo */).typicalHalfwidthCharacterWidth;\r\n this.lastRenderData = lastRenderData;\r\n this._context = context;\r\n this._viewHelper = viewHelper;\r\n }\r\n getZoneAtCoord(mouseVerticalOffset) {\r\n return HitTestContext.getZoneAtCoord(this._context, mouseVerticalOffset);\r\n }\r\n static getZoneAtCoord(context, mouseVerticalOffset) {\r\n // The target is either a view zone or the empty space after the last view-line\r\n const viewZoneWhitespace = context.viewLayout.getWhitespaceAtVerticalOffset(mouseVerticalOffset);\r\n if (viewZoneWhitespace) {\r\n const viewZoneMiddle = viewZoneWhitespace.verticalOffset + viewZoneWhitespace.height / 2;\r\n const lineCount = context.model.getLineCount();\r\n let positionBefore = null;\r\n let position;\r\n let positionAfter = null;\r\n if (viewZoneWhitespace.afterLineNumber !== lineCount) {\r\n // There are more lines after this view zone\r\n positionAfter = new Position(viewZoneWhitespace.afterLineNumber + 1, 1);\r\n }\r\n if (viewZoneWhitespace.afterLineNumber > 0) {\r\n // There are more lines above this view zone\r\n positionBefore = new Position(viewZoneWhitespace.afterLineNumber, context.model.getLineMaxColumn(viewZoneWhitespace.afterLineNumber));\r\n }\r\n if (positionAfter === null) {\r\n position = positionBefore;\r\n }\r\n else if (positionBefore === null) {\r\n position = positionAfter;\r\n }\r\n else if (mouseVerticalOffset < viewZoneMiddle) {\r\n position = positionBefore;\r\n }\r\n else {\r\n position = positionAfter;\r\n }\r\n return {\r\n viewZoneId: viewZoneWhitespace.id,\r\n afterLineNumber: viewZoneWhitespace.afterLineNumber,\r\n positionBefore: positionBefore,\r\n positionAfter: positionAfter,\r\n position: position\r\n };\r\n }\r\n return null;\r\n }\r\n getFullLineRangeAtCoord(mouseVerticalOffset) {\r\n if (this._context.viewLayout.isAfterLines(mouseVerticalOffset)) {\r\n // Below the last line\r\n const lineNumber = this._context.model.getLineCount();\r\n const maxLineColumn = this._context.model.getLineMaxColumn(lineNumber);\r\n return {\r\n range: new EditorRange(lineNumber, maxLineColumn, lineNumber, maxLineColumn),\r\n isAfterLines: true\r\n };\r\n }\r\n const lineNumber = this._context.viewLayout.getLineNumberAtVerticalOffset(mouseVerticalOffset);\r\n const maxLineColumn = this._context.model.getLineMaxColumn(lineNumber);\r\n return {\r\n range: new EditorRange(lineNumber, 1, lineNumber, maxLineColumn),\r\n isAfterLines: false\r\n };\r\n }\r\n getLineNumberAtVerticalOffset(mouseVerticalOffset) {\r\n return this._context.viewLayout.getLineNumberAtVerticalOffset(mouseVerticalOffset);\r\n }\r\n isAfterLines(mouseVerticalOffset) {\r\n return this._context.viewLayout.isAfterLines(mouseVerticalOffset);\r\n }\r\n isInTopPadding(mouseVerticalOffset) {\r\n return this._context.viewLayout.isInTopPadding(mouseVerticalOffset);\r\n }\r\n isInBottomPadding(mouseVerticalOffset) {\r\n return this._context.viewLayout.isInBottomPadding(mouseVerticalOffset);\r\n }\r\n getVerticalOffsetForLineNumber(lineNumber) {\r\n return this._context.viewLayout.getVerticalOffsetForLineNumber(lineNumber);\r\n }\r\n findAttribute(element, attr) {\r\n return HitTestContext._findAttribute(element, attr, this._viewHelper.viewDomNode);\r\n }\r\n static _findAttribute(element, attr, stopAt) {\r\n while (element && element !== document.body) {\r\n if (element.hasAttribute && element.hasAttribute(attr)) {\r\n return element.getAttribute(attr);\r\n }\r\n if (element === stopAt) {\r\n return null;\r\n }\r\n element = element.parentNode;\r\n }\r\n return null;\r\n }\r\n getLineWidth(lineNumber) {\r\n return this._viewHelper.getLineWidth(lineNumber);\r\n }\r\n visibleRangeForPosition(lineNumber, column) {\r\n return this._viewHelper.visibleRangeForPosition(lineNumber, column);\r\n }\r\n getPositionFromDOMInfo(spanNode, offset) {\r\n return this._viewHelper.getPositionFromDOMInfo(spanNode, offset);\r\n }\r\n getCurrentScrollTop() {\r\n return this._context.viewLayout.getCurrentScrollTop();\r\n }\r\n getCurrentScrollLeft() {\r\n return this._context.viewLayout.getCurrentScrollLeft();\r\n }\r\n}\r\nclass BareHitTestRequest {\r\n constructor(ctx, editorPos, pos) {\r\n this.editorPos = editorPos;\r\n this.pos = pos;\r\n this.mouseVerticalOffset = Math.max(0, ctx.getCurrentScrollTop() + pos.y - editorPos.y);\r\n this.mouseContentHorizontalOffset = ctx.getCurrentScrollLeft() + pos.x - editorPos.x - ctx.layoutInfo.contentLeft;\r\n this.isInMarginArea = (pos.x - editorPos.x < ctx.layoutInfo.contentLeft && pos.x - editorPos.x >= ctx.layoutInfo.glyphMarginLeft);\r\n this.isInContentArea = !this.isInMarginArea;\r\n this.mouseColumn = Math.max(0, MouseTargetFactory._getMouseColumn(this.mouseContentHorizontalOffset, ctx.typicalHalfwidthCharacterWidth));\r\n }\r\n}\r\nclass HitTestRequest extends BareHitTestRequest {\r\n constructor(ctx, editorPos, pos, target) {\r\n super(ctx, editorPos, pos);\r\n this._ctx = ctx;\r\n if (target) {\r\n this.target = target;\r\n this.targetPath = PartFingerprints.collect(target, ctx.viewDomNode);\r\n }\r\n else {\r\n this.target = null;\r\n this.targetPath = new Uint8Array(0);\r\n }\r\n }\r\n toString() {\r\n return `pos(${this.pos.x},${this.pos.y}), editorPos(${this.editorPos.x},${this.editorPos.y}), mouseVerticalOffset: ${this.mouseVerticalOffset}, mouseContentHorizontalOffset: ${this.mouseContentHorizontalOffset}\\n\\ttarget: ${this.target ? this.target.outerHTML : null}`;\r\n }\r\n // public fulfill(type: MouseTargetType.OVERVIEW_RULER, position?: Position | null, range?: EditorRange | null, detail?: any): MouseTarget;\r\n // public fulfill(type: MouseTargetType.OUTSIDE_EDITOR, position?: Position | null, range?: EditorRange | null, detail?: any): MouseTarget;\r\n fulfill(type, position = null, range = null, detail = null) {\r\n let mouseColumn = this.mouseColumn;\r\n if (position && position.column < this._ctx.model.getLineMaxColumn(position.lineNumber)) {\r\n // Most likely, the line contains foreign decorations...\r\n mouseColumn = CursorColumns.visibleColumnFromColumn(this._ctx.model.getLineContent(position.lineNumber), position.column, this._ctx.model.getTextModelOptions().tabSize) + 1;\r\n }\r\n return new MouseTarget(this.target, type, mouseColumn, position, range, detail);\r\n }\r\n withTarget(target) {\r\n return new HitTestRequest(this._ctx, this.editorPos, this.pos, target);\r\n }\r\n}\r\nconst EMPTY_CONTENT_AFTER_LINES = { isAfterLines: true };\r\nfunction createEmptyContentDataInLines(horizontalDistanceToText) {\r\n return {\r\n isAfterLines: false,\r\n horizontalDistanceToText: horizontalDistanceToText\r\n };\r\n}\r\nexport class MouseTargetFactory {\r\n constructor(context, viewHelper) {\r\n this._context = context;\r\n this._viewHelper = viewHelper;\r\n }\r\n mouseTargetIsWidget(e) {\r\n const t = e.target;\r\n const path = PartFingerprints.collect(t, this._viewHelper.viewDomNode);\r\n // Is it a content widget?\r\n if (ElementPath.isChildOfContentWidgets(path) || ElementPath.isChildOfOverflowingContentWidgets(path)) {\r\n return true;\r\n }\r\n // Is it an overlay widget?\r\n if (ElementPath.isChildOfOverlayWidgets(path)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n createMouseTarget(lastRenderData, editorPos, pos, target) {\r\n const ctx = new HitTestContext(this._context, this._viewHelper, lastRenderData);\r\n const request = new HitTestRequest(ctx, editorPos, pos, target);\r\n try {\r\n const r = MouseTargetFactory._createMouseTarget(ctx, request, false);\r\n // console.log(r.toString());\r\n return r;\r\n }\r\n catch (err) {\r\n // console.log(err);\r\n return request.fulfill(0 /* UNKNOWN */);\r\n }\r\n }\r\n static _createMouseTarget(ctx, request, domHitTestExecuted) {\r\n // console.log(`${domHitTestExecuted ? '=>' : ''}CAME IN REQUEST: ${request}`);\r\n // First ensure the request has a target\r\n if (request.target === null) {\r\n if (domHitTestExecuted) {\r\n // Still no target... and we have already executed hit test...\r\n return request.fulfill(0 /* UNKNOWN */);\r\n }\r\n const hitTestResult = MouseTargetFactory._doHitTest(ctx, request);\r\n if (hitTestResult.type === 1 /* Content */) {\r\n return MouseTargetFactory.createMouseTargetFromHitTestPosition(ctx, request, hitTestResult.spanNode, hitTestResult.position, hitTestResult.injectedText);\r\n }\r\n return this._createMouseTarget(ctx, request.withTarget(hitTestResult.hitTarget), true);\r\n }\r\n // we know for a fact that request.target is not null\r\n const resolvedRequest = request;\r\n let result = null;\r\n result = result || MouseTargetFactory._hitTestContentWidget(ctx, resolvedRequest);\r\n result = result || MouseTargetFactory._hitTestOverlayWidget(ctx, resolvedRequest);\r\n result = result || MouseTargetFactory._hitTestMinimap(ctx, resolvedRequest);\r\n result = result || MouseTargetFactory._hitTestScrollbarSlider(ctx, resolvedRequest);\r\n result = result || MouseTargetFactory._hitTestViewZone(ctx, resolvedRequest);\r\n result = result || MouseTargetFactory._hitTestMargin(ctx, resolvedRequest);\r\n result = result || MouseTargetFactory._hitTestViewCursor(ctx, resolvedRequest);\r\n result = result || MouseTargetFactory._hitTestTextArea(ctx, resolvedRequest);\r\n result = result || MouseTargetFactory._hitTestViewLines(ctx, resolvedRequest, domHitTestExecuted);\r\n result = result || MouseTargetFactory._hitTestScrollbar(ctx, resolvedRequest);\r\n return (result || request.fulfill(0 /* UNKNOWN */));\r\n }\r\n static _hitTestContentWidget(ctx, request) {\r\n // Is it a content widget?\r\n if (ElementPath.isChildOfContentWidgets(request.targetPath) || ElementPath.isChildOfOverflowingContentWidgets(request.targetPath)) {\r\n const widgetId = ctx.findAttribute(request.target, 'widgetId');\r\n if (widgetId) {\r\n return request.fulfill(9 /* CONTENT_WIDGET */, null, null, widgetId);\r\n }\r\n else {\r\n return request.fulfill(0 /* UNKNOWN */);\r\n }\r\n }\r\n return null;\r\n }\r\n static _hitTestOverlayWidget(ctx, request) {\r\n // Is it an overlay widget?\r\n if (ElementPath.isChildOfOverlayWidgets(request.targetPath)) {\r\n const widgetId = ctx.findAttribute(request.target, 'widgetId');\r\n if (widgetId) {\r\n return request.fulfill(12 /* OVERLAY_WIDGET */, null, null, widgetId);\r\n }\r\n else {\r\n return request.fulfill(0 /* UNKNOWN */);\r\n }\r\n }\r\n return null;\r\n }\r\n static _hitTestViewCursor(ctx, request) {\r\n if (request.target) {\r\n // Check if we've hit a painted cursor\r\n const lastViewCursorsRenderData = ctx.lastRenderData.lastViewCursorsRenderData;\r\n for (const d of lastViewCursorsRenderData) {\r\n if (request.target === d.domNode) {\r\n return request.fulfill(6 /* CONTENT_TEXT */, d.position, null, { mightBeForeignElement: false });\r\n }\r\n }\r\n }\r\n if (request.isInContentArea) {\r\n // Edge has a bug when hit-testing the exact position of a cursor,\r\n // instead of returning the correct dom node, it returns the\r\n // first or last rendered view line dom node, therefore help it out\r\n // and first check if we are on top of a cursor\r\n const lastViewCursorsRenderData = ctx.lastRenderData.lastViewCursorsRenderData;\r\n const mouseContentHorizontalOffset = request.mouseContentHorizontalOffset;\r\n const mouseVerticalOffset = request.mouseVerticalOffset;\r\n for (const d of lastViewCursorsRenderData) {\r\n if (mouseContentHorizontalOffset < d.contentLeft) {\r\n // mouse position is to the left of the cursor\r\n continue;\r\n }\r\n if (mouseContentHorizontalOffset > d.contentLeft + d.width) {\r\n // mouse position is to the right of the cursor\r\n continue;\r\n }\r\n const cursorVerticalOffset = ctx.getVerticalOffsetForLineNumber(d.position.lineNumber);\r\n if (cursorVerticalOffset <= mouseVerticalOffset\r\n && mouseVerticalOffset <= cursorVerticalOffset + d.height) {\r\n return request.fulfill(6 /* CONTENT_TEXT */, d.position, null, { mightBeForeignElement: false });\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n static _hitTestViewZone(ctx, request) {\r\n const viewZoneData = ctx.getZoneAtCoord(request.mouseVerticalOffset);\r\n if (viewZoneData) {\r\n const mouseTargetType = (request.isInContentArea ? 8 /* CONTENT_VIEW_ZONE */ : 5 /* GUTTER_VIEW_ZONE */);\r\n return request.fulfill(mouseTargetType, viewZoneData.position, null, viewZoneData);\r\n }\r\n return null;\r\n }\r\n static _hitTestTextArea(ctx, request) {\r\n // Is it the textarea?\r\n if (ElementPath.isTextArea(request.targetPath)) {\r\n if (ctx.lastRenderData.lastTextareaPosition) {\r\n return request.fulfill(6 /* CONTENT_TEXT */, ctx.lastRenderData.lastTextareaPosition, null, { mightBeForeignElement: false });\r\n }\r\n return request.fulfill(1 /* TEXTAREA */, ctx.lastRenderData.lastTextareaPosition);\r\n }\r\n return null;\r\n }\r\n static _hitTestMargin(ctx, request) {\r\n if (request.isInMarginArea) {\r\n const res = ctx.getFullLineRangeAtCoord(request.mouseVerticalOffset);\r\n const pos = res.range.getStartPosition();\r\n let offset = Math.abs(request.pos.x - request.editorPos.x);\r\n const detail = {\r\n isAfterLines: res.isAfterLines,\r\n glyphMarginLeft: ctx.layoutInfo.glyphMarginLeft,\r\n glyphMarginWidth: ctx.layoutInfo.glyphMarginWidth,\r\n lineNumbersWidth: ctx.layoutInfo.lineNumbersWidth,\r\n offsetX: offset\r\n };\r\n offset -= ctx.layoutInfo.glyphMarginLeft;\r\n if (offset <= ctx.layoutInfo.glyphMarginWidth) {\r\n // On the glyph margin\r\n return request.fulfill(2 /* GUTTER_GLYPH_MARGIN */, pos, res.range, detail);\r\n }\r\n offset -= ctx.layoutInfo.glyphMarginWidth;\r\n if (offset <= ctx.layoutInfo.lineNumbersWidth) {\r\n // On the line numbers\r\n return request.fulfill(3 /* GUTTER_LINE_NUMBERS */, pos, res.range, detail);\r\n }\r\n offset -= ctx.layoutInfo.lineNumbersWidth;\r\n // On the line decorations\r\n return request.fulfill(4 /* GUTTER_LINE_DECORATIONS */, pos, res.range, detail);\r\n }\r\n return null;\r\n }\r\n static _hitTestViewLines(ctx, request, domHitTestExecuted) {\r\n if (!ElementPath.isChildOfViewLines(request.targetPath)) {\r\n return null;\r\n }\r\n if (ctx.isInTopPadding(request.mouseVerticalOffset)) {\r\n return request.fulfill(7 /* CONTENT_EMPTY */, new Position(1, 1), null, EMPTY_CONTENT_AFTER_LINES);\r\n }\r\n // Check if it is below any lines and any view zones\r\n if (ctx.isAfterLines(request.mouseVerticalOffset) || ctx.isInBottomPadding(request.mouseVerticalOffset)) {\r\n // This most likely indicates it happened after the last view-line\r\n const lineCount = ctx.model.getLineCount();\r\n const maxLineColumn = ctx.model.getLineMaxColumn(lineCount);\r\n return request.fulfill(7 /* CONTENT_EMPTY */, new Position(lineCount, maxLineColumn), null, EMPTY_CONTENT_AFTER_LINES);\r\n }\r\n if (domHitTestExecuted) {\r\n // Check if we are hitting a view-line (can happen in the case of inline decorations on empty lines)\r\n // See https://github.com/microsoft/vscode/issues/46942\r\n if (ElementPath.isStrictChildOfViewLines(request.targetPath)) {\r\n const lineNumber = ctx.getLineNumberAtVerticalOffset(request.mouseVerticalOffset);\r\n if (ctx.model.getLineLength(lineNumber) === 0) {\r\n const lineWidth = ctx.getLineWidth(lineNumber);\r\n const detail = createEmptyContentDataInLines(request.mouseContentHorizontalOffset - lineWidth);\r\n return request.fulfill(7 /* CONTENT_EMPTY */, new Position(lineNumber, 1), null, detail);\r\n }\r\n const lineWidth = ctx.getLineWidth(lineNumber);\r\n if (request.mouseContentHorizontalOffset >= lineWidth) {\r\n const detail = createEmptyContentDataInLines(request.mouseContentHorizontalOffset - lineWidth);\r\n const pos = new Position(lineNumber, ctx.model.getLineMaxColumn(lineNumber));\r\n return request.fulfill(7 /* CONTENT_EMPTY */, pos, null, detail);\r\n }\r\n }\r\n // We have already executed hit test...\r\n return request.fulfill(0 /* UNKNOWN */);\r\n }\r\n const hitTestResult = MouseTargetFactory._doHitTest(ctx, request);\r\n if (hitTestResult.type === 1 /* Content */) {\r\n return MouseTargetFactory.createMouseTargetFromHitTestPosition(ctx, request, hitTestResult.spanNode, hitTestResult.position, hitTestResult.injectedText);\r\n }\r\n return this._createMouseTarget(ctx, request.withTarget(hitTestResult.hitTarget), true);\r\n }\r\n static _hitTestMinimap(ctx, request) {\r\n if (ElementPath.isChildOfMinimap(request.targetPath)) {\r\n const possibleLineNumber = ctx.getLineNumberAtVerticalOffset(request.mouseVerticalOffset);\r\n const maxColumn = ctx.model.getLineMaxColumn(possibleLineNumber);\r\n return request.fulfill(11 /* SCROLLBAR */, new Position(possibleLineNumber, maxColumn));\r\n }\r\n return null;\r\n }\r\n static _hitTestScrollbarSlider(ctx, request) {\r\n if (ElementPath.isChildOfScrollableElement(request.targetPath)) {\r\n if (request.target && request.target.nodeType === 1) {\r\n const className = request.target.className;\r\n if (className && /\\b(slider|scrollbar)\\b/.test(className)) {\r\n const possibleLineNumber = ctx.getLineNumberAtVerticalOffset(request.mouseVerticalOffset);\r\n const maxColumn = ctx.model.getLineMaxColumn(possibleLineNumber);\r\n return request.fulfill(11 /* SCROLLBAR */, new Position(possibleLineNumber, maxColumn));\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n static _hitTestScrollbar(ctx, request) {\r\n // Is it the overview ruler?\r\n // Is it a child of the scrollable element?\r\n if (ElementPath.isChildOfScrollableElement(request.targetPath)) {\r\n const possibleLineNumber = ctx.getLineNumberAtVerticalOffset(request.mouseVerticalOffset);\r\n const maxColumn = ctx.model.getLineMaxColumn(possibleLineNumber);\r\n return request.fulfill(11 /* SCROLLBAR */, new Position(possibleLineNumber, maxColumn));\r\n }\r\n return null;\r\n }\r\n getMouseColumn(editorPos, pos) {\r\n const options = this._context.configuration.options;\r\n const layoutInfo = options.get(129 /* layoutInfo */);\r\n const mouseContentHorizontalOffset = this._context.viewLayout.getCurrentScrollLeft() + pos.x - editorPos.x - layoutInfo.contentLeft;\r\n return MouseTargetFactory._getMouseColumn(mouseContentHorizontalOffset, options.get(41 /* fontInfo */).typicalHalfwidthCharacterWidth);\r\n }\r\n static _getMouseColumn(mouseContentHorizontalOffset, typicalHalfwidthCharacterWidth) {\r\n if (mouseContentHorizontalOffset < 0) {\r\n return 1;\r\n }\r\n const chars = Math.round(mouseContentHorizontalOffset / typicalHalfwidthCharacterWidth);\r\n return (chars + 1);\r\n }\r\n static createMouseTargetFromHitTestPosition(ctx, request, spanNode, pos, injectedText) {\r\n const lineNumber = pos.lineNumber;\r\n const column = pos.column;\r\n const lineWidth = ctx.getLineWidth(lineNumber);\r\n if (request.mouseContentHorizontalOffset > lineWidth) {\r\n const detail = createEmptyContentDataInLines(request.mouseContentHorizontalOffset - lineWidth);\r\n return request.fulfill(7 /* CONTENT_EMPTY */, pos, null, detail);\r\n }\r\n const visibleRange = ctx.visibleRangeForPosition(lineNumber, column);\r\n if (!visibleRange) {\r\n return request.fulfill(0 /* UNKNOWN */, pos);\r\n }\r\n const columnHorizontalOffset = visibleRange.left;\r\n if (request.mouseContentHorizontalOffset === columnHorizontalOffset) {\r\n return request.fulfill(6 /* CONTENT_TEXT */, pos, null, { mightBeForeignElement: !!injectedText });\r\n }\r\n const points = [];\r\n points.push({ offset: visibleRange.left, column: column });\r\n if (column > 1) {\r\n const visibleRange = ctx.visibleRangeForPosition(lineNumber, column - 1);\r\n if (visibleRange) {\r\n points.push({ offset: visibleRange.left, column: column - 1 });\r\n }\r\n }\r\n const lineMaxColumn = ctx.model.getLineMaxColumn(lineNumber);\r\n if (column < lineMaxColumn) {\r\n const visibleRange = ctx.visibleRangeForPosition(lineNumber, column + 1);\r\n if (visibleRange) {\r\n points.push({ offset: visibleRange.left, column: column + 1 });\r\n }\r\n }\r\n points.sort((a, b) => a.offset - b.offset);\r\n const mouseCoordinates = request.pos.toClientCoordinates();\r\n const spanNodeClientRect = spanNode.getBoundingClientRect();\r\n const mouseIsOverSpanNode = (spanNodeClientRect.left <= mouseCoordinates.clientX && mouseCoordinates.clientX <= spanNodeClientRect.right);\r\n for (let i = 1; i < points.length; i++) {\r\n const prev = points[i - 1];\r\n const curr = points[i];\r\n if (prev.offset <= request.mouseContentHorizontalOffset && request.mouseContentHorizontalOffset <= curr.offset) {\r\n const rng = new EditorRange(lineNumber, prev.column, lineNumber, curr.column);\r\n return request.fulfill(6 /* CONTENT_TEXT */, pos, rng, { mightBeForeignElement: !mouseIsOverSpanNode || !!injectedText });\r\n }\r\n }\r\n return request.fulfill(6 /* CONTENT_TEXT */, pos, null, { mightBeForeignElement: !mouseIsOverSpanNode || !!injectedText });\r\n }\r\n /**\r\n * Most probably WebKit browsers and Edge\r\n */\r\n static _doHitTestWithCaretRangeFromPoint(ctx, request) {\r\n // In Chrome, especially on Linux it is possible to click between lines,\r\n // so try to adjust the `hity` below so that it lands in the center of a line\r\n const lineNumber = ctx.getLineNumberAtVerticalOffset(request.mouseVerticalOffset);\r\n const lineVerticalOffset = ctx.getVerticalOffsetForLineNumber(lineNumber);\r\n const lineCenteredVerticalOffset = lineVerticalOffset + Math.floor(ctx.lineHeight / 2);\r\n let adjustedPageY = request.pos.y + (lineCenteredVerticalOffset - request.mouseVerticalOffset);\r\n if (adjustedPageY <= request.editorPos.y) {\r\n adjustedPageY = request.editorPos.y + 1;\r\n }\r\n if (adjustedPageY >= request.editorPos.y + ctx.layoutInfo.height) {\r\n adjustedPageY = request.editorPos.y + ctx.layoutInfo.height - 1;\r\n }\r\n const adjustedPage = new PageCoordinates(request.pos.x, adjustedPageY);\r\n const r = this._actualDoHitTestWithCaretRangeFromPoint(ctx, adjustedPage.toClientCoordinates());\r\n if (r.type === 1 /* Content */) {\r\n return r;\r\n }\r\n // Also try to hit test without the adjustment (for the edge cases that we are near the top or bottom)\r\n return this._actualDoHitTestWithCaretRangeFromPoint(ctx, request.pos.toClientCoordinates());\r\n }\r\n static _actualDoHitTestWithCaretRangeFromPoint(ctx, coords) {\r\n const shadowRoot = dom.getShadowRoot(ctx.viewDomNode);\r\n let range;\r\n if (shadowRoot) {\r\n if (typeof shadowRoot.caretRangeFromPoint === 'undefined') {\r\n range = shadowCaretRangeFromPoint(shadowRoot, coords.clientX, coords.clientY);\r\n }\r\n else {\r\n range = shadowRoot.caretRangeFromPoint(coords.clientX, coords.clientY);\r\n }\r\n }\r\n else {\r\n range = document.caretRangeFromPoint(coords.clientX, coords.clientY);\r\n }\r\n if (!range || !range.startContainer) {\r\n return new UnknownHitTestResult();\r\n }\r\n // Chrome always hits a TEXT_NODE, while Edge sometimes hits a token span\r\n const startContainer = range.startContainer;\r\n if (startContainer.nodeType === startContainer.TEXT_NODE) {\r\n // startContainer is expected to be the token text\r\n const parent1 = startContainer.parentNode; // expected to be the token span\r\n const parent2 = parent1 ? parent1.parentNode : null; // expected to be the view line container span\r\n const parent3 = parent2 ? parent2.parentNode : null; // expected to be the view line div\r\n const parent3ClassName = parent3 && parent3.nodeType === parent3.ELEMENT_NODE ? parent3.className : null;\r\n if (parent3ClassName === ViewLine.CLASS_NAME) {\r\n return HitTestResult.createFromDOMInfo(ctx, parent1, range.startOffset);\r\n }\r\n else {\r\n return new UnknownHitTestResult(startContainer.parentNode);\r\n }\r\n }\r\n else if (startContainer.nodeType === startContainer.ELEMENT_NODE) {\r\n // startContainer is expected to be the token span\r\n const parent1 = startContainer.parentNode; // expected to be the view line container span\r\n const parent2 = parent1 ? parent1.parentNode : null; // expected to be the view line div\r\n const parent2ClassName = parent2 && parent2.nodeType === parent2.ELEMENT_NODE ? parent2.className : null;\r\n if (parent2ClassName === ViewLine.CLASS_NAME) {\r\n return HitTestResult.createFromDOMInfo(ctx, startContainer, startContainer.textContent.length);\r\n }\r\n else {\r\n return new UnknownHitTestResult(startContainer);\r\n }\r\n }\r\n return new UnknownHitTestResult();\r\n }\r\n /**\r\n * Most probably Gecko\r\n */\r\n static _doHitTestWithCaretPositionFromPoint(ctx, coords) {\r\n const hitResult = document.caretPositionFromPoint(coords.clientX, coords.clientY);\r\n if (hitResult.offsetNode.nodeType === hitResult.offsetNode.TEXT_NODE) {\r\n // offsetNode is expected to be the token text\r\n const parent1 = hitResult.offsetNode.parentNode; // expected to be the token span\r\n const parent2 = parent1 ? parent1.parentNode : null; // expected to be the view line container span\r\n const parent3 = parent2 ? parent2.parentNode : null; // expected to be the view line div\r\n const parent3ClassName = parent3 && parent3.nodeType === parent3.ELEMENT_NODE ? parent3.className : null;\r\n if (parent3ClassName === ViewLine.CLASS_NAME) {\r\n return HitTestResult.createFromDOMInfo(ctx, hitResult.offsetNode.parentNode, hitResult.offset);\r\n }\r\n else {\r\n return new UnknownHitTestResult(hitResult.offsetNode.parentNode);\r\n }\r\n }\r\n // For inline decorations, Gecko sometimes returns the `` of the line and the offset is the `` with the inline decoration\r\n // Some other times, it returns the `` with the inline decoration\r\n if (hitResult.offsetNode.nodeType === hitResult.offsetNode.ELEMENT_NODE) {\r\n const parent1 = hitResult.offsetNode.parentNode;\r\n const parent1ClassName = parent1 && parent1.nodeType === parent1.ELEMENT_NODE ? parent1.className : null;\r\n const parent2 = parent1 ? parent1.parentNode : null;\r\n const parent2ClassName = parent2 && parent2.nodeType === parent2.ELEMENT_NODE ? parent2.className : null;\r\n if (parent1ClassName === ViewLine.CLASS_NAME) {\r\n // it returned the `` of the line and the offset is the `` with the inline decoration\r\n const tokenSpan = hitResult.offsetNode.childNodes[Math.min(hitResult.offset, hitResult.offsetNode.childNodes.length - 1)];\r\n if (tokenSpan) {\r\n return HitTestResult.createFromDOMInfo(ctx, tokenSpan, 0);\r\n }\r\n }\r\n else if (parent2ClassName === ViewLine.CLASS_NAME) {\r\n // it returned the `` with the inline decoration\r\n return HitTestResult.createFromDOMInfo(ctx, hitResult.offsetNode, 0);\r\n }\r\n }\r\n return new UnknownHitTestResult(hitResult.offsetNode);\r\n }\r\n static _snapToSoftTabBoundary(position, viewModel) {\r\n const lineContent = viewModel.getLineContent(position.lineNumber);\r\n const { tabSize } = viewModel.getTextModelOptions();\r\n const newPosition = AtomicTabMoveOperations.atomicPosition(lineContent, position.column - 1, tabSize, 2 /* Nearest */);\r\n if (newPosition !== -1) {\r\n return new Position(position.lineNumber, newPosition + 1);\r\n }\r\n return position;\r\n }\r\n static _doHitTest(ctx, request) {\r\n let result = new UnknownHitTestResult();\r\n if (typeof document.caretRangeFromPoint === 'function') {\r\n result = this._doHitTestWithCaretRangeFromPoint(ctx, request);\r\n }\r\n else if (document.caretPositionFromPoint) {\r\n result = this._doHitTestWithCaretPositionFromPoint(ctx, request.pos.toClientCoordinates());\r\n }\r\n if (result.type === 1 /* Content */) {\r\n const injectedText = ctx.model.getInjectedTextAt(result.position);\r\n const normalizedPosition = ctx.model.normalizePosition(result.position, 2 /* None */);\r\n if (injectedText || !normalizedPosition.equals(result.position)) {\r\n result = new ContentHitTestResult(normalizedPosition, result.spanNode, injectedText);\r\n }\r\n }\r\n // Snap to the nearest soft tab boundary if atomic soft tabs are enabled.\r\n if (result.type === 1 /* Content */ && ctx.stickyTabStops) {\r\n result = new ContentHitTestResult(this._snapToSoftTabBoundary(result.position, ctx.model), result.spanNode, result.injectedText);\r\n }\r\n return result;\r\n }\r\n}\r\nexport function shadowCaretRangeFromPoint(shadowRoot, x, y) {\r\n const range = document.createRange();\r\n // Get the element under the point\r\n let el = shadowRoot.elementFromPoint(x, y);\r\n if (el !== null) {\r\n // Get the last child of the element until its firstChild is a text node\r\n // This assumes that the pointer is on the right of the line, out of the tokens\r\n // and that we want to get the offset of the last token of the line\r\n while (el && el.firstChild && el.firstChild.nodeType !== el.firstChild.TEXT_NODE && el.lastChild && el.lastChild.firstChild) {\r\n el = el.lastChild;\r\n }\r\n // Grab its rect\r\n const rect = el.getBoundingClientRect();\r\n // And its font\r\n const font = window.getComputedStyle(el, null).getPropertyValue('font');\r\n // And also its txt content\r\n const text = el.innerText;\r\n // Position the pixel cursor at the left of the element\r\n let pixelCursor = rect.left;\r\n let offset = 0;\r\n let step;\r\n // If the point is on the right of the box put the cursor after the last character\r\n if (x > rect.left + rect.width) {\r\n offset = text.length;\r\n }\r\n else {\r\n const charWidthReader = CharWidthReader.getInstance();\r\n // Goes through all the characters of the innerText, and checks if the x of the point\r\n // belongs to the character.\r\n for (let i = 0; i < text.length + 1; i++) {\r\n // The step is half the width of the character\r\n step = charWidthReader.getCharWidth(text.charAt(i), font) / 2;\r\n // Move to the center of the character\r\n pixelCursor += step;\r\n // If the x of the point is smaller that the position of the cursor, the point is over that character\r\n if (x < pixelCursor) {\r\n offset = i;\r\n break;\r\n }\r\n // Move between the current character and the next\r\n pixelCursor += step;\r\n }\r\n }\r\n // Creates a range with the text node of the element and set the offset found\r\n range.setStart(el.firstChild, offset);\r\n range.setEnd(el.firstChild, offset);\r\n }\r\n return range;\r\n}\r\nclass CharWidthReader {\r\n constructor() {\r\n this._cache = {};\r\n this._canvas = document.createElement('canvas');\r\n }\r\n static getInstance() {\r\n if (!CharWidthReader._INSTANCE) {\r\n CharWidthReader._INSTANCE = new CharWidthReader();\r\n }\r\n return CharWidthReader._INSTANCE;\r\n }\r\n getCharWidth(char, font) {\r\n const cacheKey = char + font;\r\n if (this._cache[cacheKey]) {\r\n return this._cache[cacheKey];\r\n }\r\n const context = this._canvas.getContext('2d');\r\n context.font = font;\r\n const metrics = context.measureText(char);\r\n const width = metrics.width;\r\n this._cache[cacheKey] = width;\r\n return width;\r\n }\r\n}\r\nCharWidthReader._INSTANCE = null;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { StandardWheelEvent } from '../../../base/browser/mouseEvent.js';\r\nimport { TimeoutTimer } from '../../../base/common/async.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport * as platform from '../../../base/common/platform.js';\r\nimport { HitTestContext, MouseTarget, MouseTargetFactory } from './mouseTarget.js';\r\nimport { ClientCoordinates, EditorMouseEventFactory, GlobalEditorMouseMoveMonitor, createEditorPagePosition } from '../editorDom.js';\r\nimport { EditorZoom } from '../../common/config/editorZoom.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { ViewEventHandler } from '../../common/viewModel/viewEventHandler.js';\r\n/**\r\n * Merges mouse events when mouse move events are throttled\r\n */\r\nexport function createMouseMoveEventMerger(mouseTargetFactory) {\r\n return function (lastEvent, currentEvent) {\r\n let targetIsWidget = false;\r\n if (mouseTargetFactory) {\r\n targetIsWidget = mouseTargetFactory.mouseTargetIsWidget(currentEvent);\r\n }\r\n if (!targetIsWidget) {\r\n currentEvent.preventDefault();\r\n }\r\n return currentEvent;\r\n };\r\n}\r\nexport class MouseHandler extends ViewEventHandler {\r\n constructor(context, viewController, viewHelper) {\r\n super();\r\n this._context = context;\r\n this.viewController = viewController;\r\n this.viewHelper = viewHelper;\r\n this.mouseTargetFactory = new MouseTargetFactory(this._context, viewHelper);\r\n this._mouseDownOperation = this._register(new MouseDownOperation(this._context, this.viewController, this.viewHelper, (e, testEventTarget) => this._createMouseTarget(e, testEventTarget), (e) => this._getMouseColumn(e)));\r\n this.lastMouseLeaveTime = -1;\r\n this._height = this._context.configuration.options.get(129 /* layoutInfo */).height;\r\n const mouseEvents = new EditorMouseEventFactory(this.viewHelper.viewDomNode);\r\n this._register(mouseEvents.onContextMenu(this.viewHelper.viewDomNode, (e) => this._onContextMenu(e, true)));\r\n this._register(mouseEvents.onMouseMoveThrottled(this.viewHelper.viewDomNode, (e) => this._onMouseMove(e), createMouseMoveEventMerger(this.mouseTargetFactory), MouseHandler.MOUSE_MOVE_MINIMUM_TIME));\r\n this._register(mouseEvents.onMouseUp(this.viewHelper.viewDomNode, (e) => this._onMouseUp(e)));\r\n this._register(mouseEvents.onMouseLeave(this.viewHelper.viewDomNode, (e) => this._onMouseLeave(e)));\r\n this._register(mouseEvents.onMouseDown(this.viewHelper.viewDomNode, (e) => this._onMouseDown(e)));\r\n const onMouseWheel = (browserEvent) => {\r\n this.viewController.emitMouseWheel(browserEvent);\r\n if (!this._context.configuration.options.get(66 /* mouseWheelZoom */)) {\r\n return;\r\n }\r\n const e = new StandardWheelEvent(browserEvent);\r\n const doMouseWheelZoom = (platform.isMacintosh\r\n // on macOS we support cmd + two fingers scroll (`metaKey` set)\r\n // and also the two fingers pinch gesture (`ctrKey` set)\r\n ? ((browserEvent.metaKey || browserEvent.ctrlKey) && !browserEvent.shiftKey && !browserEvent.altKey)\r\n : (browserEvent.ctrlKey && !browserEvent.metaKey && !browserEvent.shiftKey && !browserEvent.altKey));\r\n if (doMouseWheelZoom) {\r\n const zoomLevel = EditorZoom.getZoomLevel();\r\n const delta = e.deltaY > 0 ? 1 : -1;\r\n EditorZoom.setZoomLevel(zoomLevel + delta);\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n };\r\n this._register(dom.addDisposableListener(this.viewHelper.viewDomNode, dom.EventType.MOUSE_WHEEL, onMouseWheel, { capture: true, passive: false }));\r\n this._context.addEventHandler(this);\r\n }\r\n dispose() {\r\n this._context.removeEventHandler(this);\r\n super.dispose();\r\n }\r\n // --- begin event handlers\r\n onConfigurationChanged(e) {\r\n if (e.hasChanged(129 /* layoutInfo */)) {\r\n // layout change\r\n const height = this._context.configuration.options.get(129 /* layoutInfo */).height;\r\n if (this._height !== height) {\r\n this._height = height;\r\n this._mouseDownOperation.onHeightChanged();\r\n }\r\n }\r\n return false;\r\n }\r\n onCursorStateChanged(e) {\r\n this._mouseDownOperation.onCursorStateChanged(e);\r\n return false;\r\n }\r\n onFocusChanged(e) {\r\n return false;\r\n }\r\n onScrollChanged(e) {\r\n this._mouseDownOperation.onScrollChanged();\r\n return false;\r\n }\r\n // --- end event handlers\r\n getTargetAtClientPoint(clientX, clientY) {\r\n const clientPos = new ClientCoordinates(clientX, clientY);\r\n const pos = clientPos.toPageCoordinates();\r\n const editorPos = createEditorPagePosition(this.viewHelper.viewDomNode);\r\n if (pos.y < editorPos.y || pos.y > editorPos.y + editorPos.height || pos.x < editorPos.x || pos.x > editorPos.x + editorPos.width) {\r\n return null;\r\n }\r\n return this.mouseTargetFactory.createMouseTarget(this.viewHelper.getLastRenderData(), editorPos, pos, null);\r\n }\r\n _createMouseTarget(e, testEventTarget) {\r\n return this.mouseTargetFactory.createMouseTarget(this.viewHelper.getLastRenderData(), e.editorPos, e.pos, testEventTarget ? e.target : null);\r\n }\r\n _getMouseColumn(e) {\r\n return this.mouseTargetFactory.getMouseColumn(e.editorPos, e.pos);\r\n }\r\n _onContextMenu(e, testEventTarget) {\r\n this.viewController.emitContextMenu({\r\n event: e,\r\n target: this._createMouseTarget(e, testEventTarget)\r\n });\r\n }\r\n _onMouseMove(e) {\r\n if (this._mouseDownOperation.isActive()) {\r\n // In selection/drag operation\r\n return;\r\n }\r\n const actualMouseMoveTime = e.timestamp;\r\n if (actualMouseMoveTime < this.lastMouseLeaveTime) {\r\n // Due to throttling, this event occurred before the mouse left the editor, therefore ignore it.\r\n return;\r\n }\r\n this.viewController.emitMouseMove({\r\n event: e,\r\n target: this._createMouseTarget(e, true)\r\n });\r\n }\r\n _onMouseLeave(e) {\r\n this.lastMouseLeaveTime = (new Date()).getTime();\r\n this.viewController.emitMouseLeave({\r\n event: e,\r\n target: null\r\n });\r\n }\r\n _onMouseUp(e) {\r\n this.viewController.emitMouseUp({\r\n event: e,\r\n target: this._createMouseTarget(e, true)\r\n });\r\n }\r\n _onMouseDown(e) {\r\n const t = this._createMouseTarget(e, true);\r\n const targetIsContent = (t.type === 6 /* CONTENT_TEXT */ || t.type === 7 /* CONTENT_EMPTY */);\r\n const targetIsGutter = (t.type === 2 /* GUTTER_GLYPH_MARGIN */ || t.type === 3 /* GUTTER_LINE_NUMBERS */ || t.type === 4 /* GUTTER_LINE_DECORATIONS */);\r\n const targetIsLineNumbers = (t.type === 3 /* GUTTER_LINE_NUMBERS */);\r\n const selectOnLineNumbers = this._context.configuration.options.get(97 /* selectOnLineNumbers */);\r\n const targetIsViewZone = (t.type === 8 /* CONTENT_VIEW_ZONE */ || t.type === 5 /* GUTTER_VIEW_ZONE */);\r\n const targetIsWidget = (t.type === 9 /* CONTENT_WIDGET */);\r\n let shouldHandle = e.leftButton || e.middleButton;\r\n if (platform.isMacintosh && e.leftButton && e.ctrlKey) {\r\n shouldHandle = false;\r\n }\r\n const focus = () => {\r\n e.preventDefault();\r\n this.viewHelper.focusTextArea();\r\n };\r\n if (shouldHandle && (targetIsContent || (targetIsLineNumbers && selectOnLineNumbers))) {\r\n focus();\r\n this._mouseDownOperation.start(t.type, e);\r\n }\r\n else if (targetIsGutter) {\r\n // Do not steal focus\r\n e.preventDefault();\r\n }\r\n else if (targetIsViewZone) {\r\n const viewZoneData = t.detail;\r\n if (this.viewHelper.shouldSuppressMouseDownOnViewZone(viewZoneData.viewZoneId)) {\r\n focus();\r\n this._mouseDownOperation.start(t.type, e);\r\n e.preventDefault();\r\n }\r\n }\r\n else if (targetIsWidget && this.viewHelper.shouldSuppressMouseDownOnWidget(t.detail)) {\r\n focus();\r\n e.preventDefault();\r\n }\r\n this.viewController.emitMouseDown({\r\n event: e,\r\n target: t\r\n });\r\n }\r\n}\r\nMouseHandler.MOUSE_MOVE_MINIMUM_TIME = 100; // ms\r\nclass MouseDownOperation extends Disposable {\r\n constructor(context, viewController, viewHelper, createMouseTarget, getMouseColumn) {\r\n super();\r\n this._context = context;\r\n this._viewController = viewController;\r\n this._viewHelper = viewHelper;\r\n this._createMouseTarget = createMouseTarget;\r\n this._getMouseColumn = getMouseColumn;\r\n this._mouseMoveMonitor = this._register(new GlobalEditorMouseMoveMonitor(this._viewHelper.viewDomNode));\r\n this._onScrollTimeout = this._register(new TimeoutTimer());\r\n this._mouseState = new MouseDownState();\r\n this._currentSelection = new Selection(1, 1, 1, 1);\r\n this._isActive = false;\r\n this._lastMouseEvent = null;\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n isActive() {\r\n return this._isActive;\r\n }\r\n _onMouseDownThenMove(e) {\r\n this._lastMouseEvent = e;\r\n this._mouseState.setModifiers(e);\r\n const position = this._findMousePosition(e, true);\r\n if (!position) {\r\n // Ignoring because position is unknown\r\n return;\r\n }\r\n if (this._mouseState.isDragAndDrop) {\r\n this._viewController.emitMouseDrag({\r\n event: e,\r\n target: position\r\n });\r\n }\r\n else {\r\n this._dispatchMouse(position, true);\r\n }\r\n }\r\n start(targetType, e) {\r\n this._lastMouseEvent = e;\r\n this._mouseState.setStartedOnLineNumbers(targetType === 3 /* GUTTER_LINE_NUMBERS */);\r\n this._mouseState.setStartButtons(e);\r\n this._mouseState.setModifiers(e);\r\n const position = this._findMousePosition(e, true);\r\n if (!position || !position.position) {\r\n // Ignoring because position is unknown\r\n return;\r\n }\r\n this._mouseState.trySetCount(e.detail, position.position);\r\n // Overwrite the detail of the MouseEvent, as it will be sent out in an event and contributions might rely on it.\r\n e.detail = this._mouseState.count;\r\n const options = this._context.configuration.options;\r\n if (!options.get(79 /* readOnly */)\r\n && options.get(29 /* dragAndDrop */)\r\n && !options.get(16 /* columnSelection */)\r\n && !this._mouseState.altKey // we don't support multiple mouse\r\n && e.detail < 2 // only single click on a selection can work\r\n && !this._isActive // the mouse is not down yet\r\n && !this._currentSelection.isEmpty() // we don't drag single cursor\r\n && (position.type === 6 /* CONTENT_TEXT */) // single click on text\r\n && position.position && this._currentSelection.containsPosition(position.position) // single click on a selection\r\n ) {\r\n this._mouseState.isDragAndDrop = true;\r\n this._isActive = true;\r\n this._mouseMoveMonitor.startMonitoring(e.target, e.buttons, createMouseMoveEventMerger(null), (e) => this._onMouseDownThenMove(e), (browserEvent) => {\r\n const position = this._findMousePosition(this._lastMouseEvent, true);\r\n if (browserEvent && browserEvent instanceof KeyboardEvent) {\r\n // cancel\r\n this._viewController.emitMouseDropCanceled();\r\n }\r\n else {\r\n this._viewController.emitMouseDrop({\r\n event: this._lastMouseEvent,\r\n target: (position ? this._createMouseTarget(this._lastMouseEvent, true) : null) // Ignoring because position is unknown, e.g., Content View Zone\r\n });\r\n }\r\n this._stop();\r\n });\r\n return;\r\n }\r\n this._mouseState.isDragAndDrop = false;\r\n this._dispatchMouse(position, e.shiftKey);\r\n if (!this._isActive) {\r\n this._isActive = true;\r\n this._mouseMoveMonitor.startMonitoring(e.target, e.buttons, createMouseMoveEventMerger(null), (e) => this._onMouseDownThenMove(e), () => this._stop());\r\n }\r\n }\r\n _stop() {\r\n this._isActive = false;\r\n this._onScrollTimeout.cancel();\r\n }\r\n onHeightChanged() {\r\n this._mouseMoveMonitor.stopMonitoring();\r\n }\r\n onScrollChanged() {\r\n if (!this._isActive) {\r\n return;\r\n }\r\n this._onScrollTimeout.setIfNotSet(() => {\r\n if (!this._lastMouseEvent) {\r\n return;\r\n }\r\n const position = this._findMousePosition(this._lastMouseEvent, false);\r\n if (!position) {\r\n // Ignoring because position is unknown\r\n return;\r\n }\r\n if (this._mouseState.isDragAndDrop) {\r\n // Ignoring because users are dragging the text\r\n return;\r\n }\r\n this._dispatchMouse(position, true);\r\n }, 10);\r\n }\r\n onCursorStateChanged(e) {\r\n this._currentSelection = e.selections[0];\r\n }\r\n _getPositionOutsideEditor(e) {\r\n const editorContent = e.editorPos;\r\n const model = this._context.model;\r\n const viewLayout = this._context.viewLayout;\r\n const mouseColumn = this._getMouseColumn(e);\r\n if (e.posy < editorContent.y) {\r\n const verticalOffset = Math.max(viewLayout.getCurrentScrollTop() - (editorContent.y - e.posy), 0);\r\n const viewZoneData = HitTestContext.getZoneAtCoord(this._context, verticalOffset);\r\n if (viewZoneData) {\r\n const newPosition = this._helpPositionJumpOverViewZone(viewZoneData);\r\n if (newPosition) {\r\n return new MouseTarget(null, 13 /* OUTSIDE_EDITOR */, mouseColumn, newPosition);\r\n }\r\n }\r\n const aboveLineNumber = viewLayout.getLineNumberAtVerticalOffset(verticalOffset);\r\n return new MouseTarget(null, 13 /* OUTSIDE_EDITOR */, mouseColumn, new Position(aboveLineNumber, 1));\r\n }\r\n if (e.posy > editorContent.y + editorContent.height) {\r\n const verticalOffset = viewLayout.getCurrentScrollTop() + (e.posy - editorContent.y);\r\n const viewZoneData = HitTestContext.getZoneAtCoord(this._context, verticalOffset);\r\n if (viewZoneData) {\r\n const newPosition = this._helpPositionJumpOverViewZone(viewZoneData);\r\n if (newPosition) {\r\n return new MouseTarget(null, 13 /* OUTSIDE_EDITOR */, mouseColumn, newPosition);\r\n }\r\n }\r\n const belowLineNumber = viewLayout.getLineNumberAtVerticalOffset(verticalOffset);\r\n return new MouseTarget(null, 13 /* OUTSIDE_EDITOR */, mouseColumn, new Position(belowLineNumber, model.getLineMaxColumn(belowLineNumber)));\r\n }\r\n const possibleLineNumber = viewLayout.getLineNumberAtVerticalOffset(viewLayout.getCurrentScrollTop() + (e.posy - editorContent.y));\r\n if (e.posx < editorContent.x) {\r\n return new MouseTarget(null, 13 /* OUTSIDE_EDITOR */, mouseColumn, new Position(possibleLineNumber, 1));\r\n }\r\n if (e.posx > editorContent.x + editorContent.width) {\r\n return new MouseTarget(null, 13 /* OUTSIDE_EDITOR */, mouseColumn, new Position(possibleLineNumber, model.getLineMaxColumn(possibleLineNumber)));\r\n }\r\n return null;\r\n }\r\n _findMousePosition(e, testEventTarget) {\r\n const positionOutsideEditor = this._getPositionOutsideEditor(e);\r\n if (positionOutsideEditor) {\r\n return positionOutsideEditor;\r\n }\r\n const t = this._createMouseTarget(e, testEventTarget);\r\n const hintedPosition = t.position;\r\n if (!hintedPosition) {\r\n return null;\r\n }\r\n if (t.type === 8 /* CONTENT_VIEW_ZONE */ || t.type === 5 /* GUTTER_VIEW_ZONE */) {\r\n const newPosition = this._helpPositionJumpOverViewZone(t.detail);\r\n if (newPosition) {\r\n return new MouseTarget(t.element, t.type, t.mouseColumn, newPosition, null, t.detail);\r\n }\r\n }\r\n return t;\r\n }\r\n _helpPositionJumpOverViewZone(viewZoneData) {\r\n // Force position on view zones to go above or below depending on where selection started from\r\n const selectionStart = new Position(this._currentSelection.selectionStartLineNumber, this._currentSelection.selectionStartColumn);\r\n const positionBefore = viewZoneData.positionBefore;\r\n const positionAfter = viewZoneData.positionAfter;\r\n if (positionBefore && positionAfter) {\r\n if (positionBefore.isBefore(selectionStart)) {\r\n return positionBefore;\r\n }\r\n else {\r\n return positionAfter;\r\n }\r\n }\r\n return null;\r\n }\r\n _dispatchMouse(position, inSelectionMode) {\r\n if (!position.position) {\r\n return;\r\n }\r\n this._viewController.dispatchMouse({\r\n position: position.position,\r\n mouseColumn: position.mouseColumn,\r\n startedOnLineNumbers: this._mouseState.startedOnLineNumbers,\r\n inSelectionMode: inSelectionMode,\r\n mouseDownCount: this._mouseState.count,\r\n altKey: this._mouseState.altKey,\r\n ctrlKey: this._mouseState.ctrlKey,\r\n metaKey: this._mouseState.metaKey,\r\n shiftKey: this._mouseState.shiftKey,\r\n leftButton: this._mouseState.leftButton,\r\n middleButton: this._mouseState.middleButton,\r\n });\r\n }\r\n}\r\nclass MouseDownState {\r\n constructor() {\r\n this._altKey = false;\r\n this._ctrlKey = false;\r\n this._metaKey = false;\r\n this._shiftKey = false;\r\n this._leftButton = false;\r\n this._middleButton = false;\r\n this._startedOnLineNumbers = false;\r\n this._lastMouseDownPosition = null;\r\n this._lastMouseDownPositionEqualCount = 0;\r\n this._lastMouseDownCount = 0;\r\n this._lastSetMouseDownCountTime = 0;\r\n this.isDragAndDrop = false;\r\n }\r\n get altKey() { return this._altKey; }\r\n get ctrlKey() { return this._ctrlKey; }\r\n get metaKey() { return this._metaKey; }\r\n get shiftKey() { return this._shiftKey; }\r\n get leftButton() { return this._leftButton; }\r\n get middleButton() { return this._middleButton; }\r\n get startedOnLineNumbers() { return this._startedOnLineNumbers; }\r\n get count() {\r\n return this._lastMouseDownCount;\r\n }\r\n setModifiers(source) {\r\n this._altKey = source.altKey;\r\n this._ctrlKey = source.ctrlKey;\r\n this._metaKey = source.metaKey;\r\n this._shiftKey = source.shiftKey;\r\n }\r\n setStartButtons(source) {\r\n this._leftButton = source.leftButton;\r\n this._middleButton = source.middleButton;\r\n }\r\n setStartedOnLineNumbers(startedOnLineNumbers) {\r\n this._startedOnLineNumbers = startedOnLineNumbers;\r\n }\r\n trySetCount(setMouseDownCount, newMouseDownPosition) {\r\n // a. Invalidate multiple clicking if too much time has passed (will be hit by IE because the detail field of mouse events contains garbage in IE10)\r\n const currentTime = (new Date()).getTime();\r\n if (currentTime - this._lastSetMouseDownCountTime > MouseDownState.CLEAR_MOUSE_DOWN_COUNT_TIME) {\r\n setMouseDownCount = 1;\r\n }\r\n this._lastSetMouseDownCountTime = currentTime;\r\n // b. Ensure that we don't jump from single click to triple click in one go (will be hit by IE because the detail field of mouse events contains garbage in IE10)\r\n if (setMouseDownCount > this._lastMouseDownCount + 1) {\r\n setMouseDownCount = this._lastMouseDownCount + 1;\r\n }\r\n // c. Invalidate multiple clicking if the logical position is different\r\n if (this._lastMouseDownPosition && this._lastMouseDownPosition.equals(newMouseDownPosition)) {\r\n this._lastMouseDownPositionEqualCount++;\r\n }\r\n else {\r\n this._lastMouseDownPositionEqualCount = 1;\r\n }\r\n this._lastMouseDownPosition = newMouseDownPosition;\r\n // Finally set the lastMouseDownCount\r\n this._lastMouseDownCount = Math.min(setMouseDownCount, this._lastMouseDownPositionEqualCount);\r\n }\r\n}\r\nMouseDownState.CLEAR_MOUSE_DOWN_COUNT_TIME = 400; // ms\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { basename, posix } from './path.js';\r\nimport { startsWithUTF8BOM } from './strings.js';\r\nimport { match } from './glob.js';\r\nimport { Schemas } from './network.js';\r\nimport { DataUri } from './resources.js';\r\nexport var Mimes;\r\n(function (Mimes) {\r\n Mimes.text = 'text/plain';\r\n Mimes.binary = 'application/octet-stream';\r\n Mimes.unknown = 'application/unknown';\r\n Mimes.markdown = 'text/markdown';\r\n})(Mimes || (Mimes = {}));\r\nlet registeredAssociations = [];\r\nlet nonUserRegisteredAssociations = [];\r\nlet userRegisteredAssociations = [];\r\n/**\r\n * Associate a text mime to the registry.\r\n */\r\nexport function registerTextMime(association, warnOnOverwrite = false) {\r\n // Register\r\n const associationItem = toTextMimeAssociationItem(association);\r\n registeredAssociations.push(associationItem);\r\n if (!associationItem.userConfigured) {\r\n nonUserRegisteredAssociations.push(associationItem);\r\n }\r\n else {\r\n userRegisteredAssociations.push(associationItem);\r\n }\r\n // Check for conflicts unless this is a user configured association\r\n if (warnOnOverwrite && !associationItem.userConfigured) {\r\n registeredAssociations.forEach(a => {\r\n if (a.mime === associationItem.mime || a.userConfigured) {\r\n return; // same mime or userConfigured is ok\r\n }\r\n if (associationItem.extension && a.extension === associationItem.extension) {\r\n console.warn(`Overwriting extension <<${associationItem.extension}>> to now point to mime <<${associationItem.mime}>>`);\r\n }\r\n if (associationItem.filename && a.filename === associationItem.filename) {\r\n console.warn(`Overwriting filename <<${associationItem.filename}>> to now point to mime <<${associationItem.mime}>>`);\r\n }\r\n if (associationItem.filepattern && a.filepattern === associationItem.filepattern) {\r\n console.warn(`Overwriting filepattern <<${associationItem.filepattern}>> to now point to mime <<${associationItem.mime}>>`);\r\n }\r\n if (associationItem.firstline && a.firstline === associationItem.firstline) {\r\n console.warn(`Overwriting firstline <<${associationItem.firstline}>> to now point to mime <<${associationItem.mime}>>`);\r\n }\r\n });\r\n }\r\n}\r\nfunction toTextMimeAssociationItem(association) {\r\n return {\r\n id: association.id,\r\n mime: association.mime,\r\n filename: association.filename,\r\n extension: association.extension,\r\n filepattern: association.filepattern,\r\n firstline: association.firstline,\r\n userConfigured: association.userConfigured,\r\n filenameLowercase: association.filename ? association.filename.toLowerCase() : undefined,\r\n extensionLowercase: association.extension ? association.extension.toLowerCase() : undefined,\r\n filepatternLowercase: association.filepattern ? association.filepattern.toLowerCase() : undefined,\r\n filepatternOnPath: association.filepattern ? association.filepattern.indexOf(posix.sep) >= 0 : false\r\n };\r\n}\r\n/**\r\n * Given a file, return the best matching mime type for it\r\n */\r\nexport function guessMimeTypes(resource, firstLine) {\r\n let path;\r\n if (resource) {\r\n switch (resource.scheme) {\r\n case Schemas.file:\r\n path = resource.fsPath;\r\n break;\r\n case Schemas.data:\r\n const metadata = DataUri.parseMetaData(resource);\r\n path = metadata.get(DataUri.META_DATA_LABEL);\r\n break;\r\n default:\r\n path = resource.path;\r\n }\r\n }\r\n if (!path) {\r\n return [Mimes.unknown];\r\n }\r\n path = path.toLowerCase();\r\n const filename = basename(path);\r\n // 1.) User configured mappings have highest priority\r\n const configuredMime = guessMimeTypeByPath(path, filename, userRegisteredAssociations);\r\n if (configuredMime) {\r\n return [configuredMime, Mimes.text];\r\n }\r\n // 2.) Registered mappings have middle priority\r\n const registeredMime = guessMimeTypeByPath(path, filename, nonUserRegisteredAssociations);\r\n if (registeredMime) {\r\n return [registeredMime, Mimes.text];\r\n }\r\n // 3.) Firstline has lowest priority\r\n if (firstLine) {\r\n const firstlineMime = guessMimeTypeByFirstline(firstLine);\r\n if (firstlineMime) {\r\n return [firstlineMime, Mimes.text];\r\n }\r\n }\r\n return [Mimes.unknown];\r\n}\r\nfunction guessMimeTypeByPath(path, filename, associations) {\r\n let filenameMatch = null;\r\n let patternMatch = null;\r\n let extensionMatch = null;\r\n // We want to prioritize associations based on the order they are registered so that the last registered\r\n // association wins over all other. This is for https://github.com/microsoft/vscode/issues/20074\r\n for (let i = associations.length - 1; i >= 0; i--) {\r\n const association = associations[i];\r\n // First exact name match\r\n if (filename === association.filenameLowercase) {\r\n filenameMatch = association;\r\n break; // take it!\r\n }\r\n // Longest pattern match\r\n if (association.filepattern) {\r\n if (!patternMatch || association.filepattern.length > patternMatch.filepattern.length) {\r\n const target = association.filepatternOnPath ? path : filename; // match on full path if pattern contains path separator\r\n if (match(association.filepatternLowercase, target)) {\r\n patternMatch = association;\r\n }\r\n }\r\n }\r\n // Longest extension match\r\n if (association.extension) {\r\n if (!extensionMatch || association.extension.length > extensionMatch.extension.length) {\r\n if (filename.endsWith(association.extensionLowercase)) {\r\n extensionMatch = association;\r\n }\r\n }\r\n }\r\n }\r\n // 1.) Exact name match has second highest prio\r\n if (filenameMatch) {\r\n return filenameMatch.mime;\r\n }\r\n // 2.) Match on pattern\r\n if (patternMatch) {\r\n return patternMatch.mime;\r\n }\r\n // 3.) Match on extension comes next\r\n if (extensionMatch) {\r\n return extensionMatch.mime;\r\n }\r\n return null;\r\n}\r\nfunction guessMimeTypeByFirstline(firstLine) {\r\n if (startsWithUTF8BOM(firstLine)) {\r\n firstLine = firstLine.substr(1);\r\n }\r\n if (firstLine.length > 0) {\r\n // We want to prioritize associations based on the order they are registered so that the last registered\r\n // association wins over all other. This is for https://github.com/microsoft/vscode/issues/20074\r\n for (let i = registeredAssociations.length - 1; i >= 0; i--) {\r\n const association = registeredAssociations[i];\r\n if (!association.firstline) {\r\n continue;\r\n }\r\n const matches = firstLine.match(association.firstline);\r\n if (matches && matches.length > 0) {\r\n return association.mime;\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Range } from '../../common/core/range.js';\r\nexport const _debugComposition = false;\r\nexport class TextAreaState {\r\n constructor(value, selectionStart, selectionEnd, selectionStartPosition, selectionEndPosition) {\r\n this.value = value;\r\n this.selectionStart = selectionStart;\r\n this.selectionEnd = selectionEnd;\r\n this.selectionStartPosition = selectionStartPosition;\r\n this.selectionEndPosition = selectionEndPosition;\r\n }\r\n toString() {\r\n return '[ <' + this.value + '>, selectionStart: ' + this.selectionStart + ', selectionEnd: ' + this.selectionEnd + ']';\r\n }\r\n static readFromTextArea(textArea) {\r\n return new TextAreaState(textArea.getValue(), textArea.getSelectionStart(), textArea.getSelectionEnd(), null, null);\r\n }\r\n collapseSelection() {\r\n return new TextAreaState(this.value, this.value.length, this.value.length, null, null);\r\n }\r\n writeToTextArea(reason, textArea, select) {\r\n if (_debugComposition) {\r\n console.log('writeToTextArea ' + reason + ': ' + this.toString());\r\n }\r\n textArea.setValue(reason, this.value);\r\n if (select) {\r\n textArea.setSelectionRange(reason, this.selectionStart, this.selectionEnd);\r\n }\r\n }\r\n deduceEditorPosition(offset) {\r\n if (offset <= this.selectionStart) {\r\n const str = this.value.substring(offset, this.selectionStart);\r\n return this._finishDeduceEditorPosition(this.selectionStartPosition, str, -1);\r\n }\r\n if (offset >= this.selectionEnd) {\r\n const str = this.value.substring(this.selectionEnd, offset);\r\n return this._finishDeduceEditorPosition(this.selectionEndPosition, str, 1);\r\n }\r\n const str1 = this.value.substring(this.selectionStart, offset);\r\n if (str1.indexOf(String.fromCharCode(8230)) === -1) {\r\n return this._finishDeduceEditorPosition(this.selectionStartPosition, str1, 1);\r\n }\r\n const str2 = this.value.substring(offset, this.selectionEnd);\r\n return this._finishDeduceEditorPosition(this.selectionEndPosition, str2, -1);\r\n }\r\n _finishDeduceEditorPosition(anchor, deltaText, signum) {\r\n let lineFeedCnt = 0;\r\n let lastLineFeedIndex = -1;\r\n while ((lastLineFeedIndex = deltaText.indexOf('\\n', lastLineFeedIndex + 1)) !== -1) {\r\n lineFeedCnt++;\r\n }\r\n return [anchor, signum * deltaText.length, lineFeedCnt];\r\n }\r\n static selectedText(text) {\r\n return new TextAreaState(text, 0, text.length, null, null);\r\n }\r\n static deduceInput(previousState, currentState, couldBeEmojiInput) {\r\n if (!previousState) {\r\n // This is the EMPTY state\r\n return {\r\n text: '',\r\n replacePrevCharCnt: 0,\r\n replaceNextCharCnt: 0,\r\n positionDelta: 0\r\n };\r\n }\r\n if (_debugComposition) {\r\n console.log('------------------------deduceInput');\r\n console.log('PREVIOUS STATE: ' + previousState.toString());\r\n console.log('CURRENT STATE: ' + currentState.toString());\r\n }\r\n let previousValue = previousState.value;\r\n let previousSelectionStart = previousState.selectionStart;\r\n let previousSelectionEnd = previousState.selectionEnd;\r\n let currentValue = currentState.value;\r\n let currentSelectionStart = currentState.selectionStart;\r\n let currentSelectionEnd = currentState.selectionEnd;\r\n // Strip the previous suffix from the value (without interfering with the current selection)\r\n const previousSuffix = previousValue.substring(previousSelectionEnd);\r\n const currentSuffix = currentValue.substring(currentSelectionEnd);\r\n const suffixLength = strings.commonSuffixLength(previousSuffix, currentSuffix);\r\n currentValue = currentValue.substring(0, currentValue.length - suffixLength);\r\n previousValue = previousValue.substring(0, previousValue.length - suffixLength);\r\n const previousPrefix = previousValue.substring(0, previousSelectionStart);\r\n const currentPrefix = currentValue.substring(0, currentSelectionStart);\r\n const prefixLength = strings.commonPrefixLength(previousPrefix, currentPrefix);\r\n currentValue = currentValue.substring(prefixLength);\r\n previousValue = previousValue.substring(prefixLength);\r\n currentSelectionStart -= prefixLength;\r\n previousSelectionStart -= prefixLength;\r\n currentSelectionEnd -= prefixLength;\r\n previousSelectionEnd -= prefixLength;\r\n if (_debugComposition) {\r\n console.log('AFTER DIFFING PREVIOUS STATE: <' + previousValue + '>, selectionStart: ' + previousSelectionStart + ', selectionEnd: ' + previousSelectionEnd);\r\n console.log('AFTER DIFFING CURRENT STATE: <' + currentValue + '>, selectionStart: ' + currentSelectionStart + ', selectionEnd: ' + currentSelectionEnd);\r\n }\r\n if (couldBeEmojiInput && currentSelectionStart === currentSelectionEnd && previousValue.length > 0) {\r\n // on OSX, emojis from the emoji picker are inserted at random locations\r\n // the only hints we can use is that the selection is immediately after the inserted emoji\r\n // and that none of the old text has been deleted\r\n let potentialEmojiInput = null;\r\n if (currentSelectionStart === currentValue.length) {\r\n // emoji potentially inserted \"somewhere\" after the previous selection => it should appear at the end of `currentValue`\r\n if (currentValue.startsWith(previousValue)) {\r\n // only if all of the old text is accounted for\r\n potentialEmojiInput = currentValue.substring(previousValue.length);\r\n }\r\n }\r\n else {\r\n // emoji potentially inserted \"somewhere\" before the previous selection => it should appear at the start of `currentValue`\r\n if (currentValue.endsWith(previousValue)) {\r\n // only if all of the old text is accounted for\r\n potentialEmojiInput = currentValue.substring(0, currentValue.length - previousValue.length);\r\n }\r\n }\r\n if (potentialEmojiInput !== null && potentialEmojiInput.length > 0) {\r\n // now we check that this is indeed an emoji\r\n // emojis can grow quite long, so a length check is of no help\r\n // e.g. 1F3F4 E0067 E0062 E0065 E006E E0067 E007F ; fully-qualified # 🏴󠁧󠁢󠁥󠁮󠁧󠁿 England\r\n // Oftentimes, emojis use Variation Selector-16 (U+FE0F), so that is a good hint\r\n // http://emojipedia.org/variation-selector-16/\r\n // > An invisible codepoint which specifies that the preceding character\r\n // > should be displayed with emoji presentation. Only required if the\r\n // > preceding character defaults to text presentation.\r\n if (/\\uFE0F/.test(potentialEmojiInput) || strings.containsEmoji(potentialEmojiInput)) {\r\n return {\r\n text: potentialEmojiInput,\r\n replacePrevCharCnt: 0,\r\n replaceNextCharCnt: 0,\r\n positionDelta: 0\r\n };\r\n }\r\n }\r\n }\r\n if (currentSelectionStart === currentSelectionEnd) {\r\n // composition accept case (noticed in FF + Japanese)\r\n // [blahblah] => blahblah|\r\n if (previousValue === currentValue\r\n && previousSelectionStart === 0\r\n && previousSelectionEnd === previousValue.length\r\n && currentSelectionStart === currentValue.length\r\n && currentValue.indexOf('\\n') === -1) {\r\n if (strings.containsFullWidthCharacter(currentValue)) {\r\n return {\r\n text: '',\r\n replacePrevCharCnt: 0,\r\n replaceNextCharCnt: 0,\r\n positionDelta: 0\r\n };\r\n }\r\n }\r\n // no current selection\r\n const replacePreviousCharacters = (previousPrefix.length - prefixLength);\r\n if (_debugComposition) {\r\n console.log('REMOVE PREVIOUS: ' + (previousPrefix.length - prefixLength) + ' chars');\r\n }\r\n return {\r\n text: currentValue,\r\n replacePrevCharCnt: replacePreviousCharacters,\r\n replaceNextCharCnt: 0,\r\n positionDelta: 0\r\n };\r\n }\r\n // there is a current selection => composition case\r\n const replacePreviousCharacters = previousSelectionEnd - previousSelectionStart;\r\n return {\r\n text: currentValue,\r\n replacePrevCharCnt: replacePreviousCharacters,\r\n replaceNextCharCnt: 0,\r\n positionDelta: 0\r\n };\r\n }\r\n static deduceAndroidCompositionInput(previousState, currentState) {\r\n if (!previousState) {\r\n // This is the EMPTY state\r\n return {\r\n text: '',\r\n replacePrevCharCnt: 0,\r\n replaceNextCharCnt: 0,\r\n positionDelta: 0\r\n };\r\n }\r\n if (_debugComposition) {\r\n console.log('------------------------deduceAndroidCompositionInput');\r\n console.log('PREVIOUS STATE: ' + previousState.toString());\r\n console.log('CURRENT STATE: ' + currentState.toString());\r\n }\r\n if (previousState.value === currentState.value) {\r\n return {\r\n text: '',\r\n replacePrevCharCnt: 0,\r\n replaceNextCharCnt: 0,\r\n positionDelta: currentState.selectionEnd - previousState.selectionEnd\r\n };\r\n }\r\n const prefixLength = Math.min(strings.commonPrefixLength(previousState.value, currentState.value), previousState.selectionEnd);\r\n const suffixLength = Math.min(strings.commonSuffixLength(previousState.value, currentState.value), previousState.value.length - previousState.selectionEnd);\r\n const previousValue = previousState.value.substring(prefixLength, previousState.value.length - suffixLength);\r\n const currentValue = currentState.value.substring(prefixLength, currentState.value.length - suffixLength);\r\n const previousSelectionStart = previousState.selectionStart - prefixLength;\r\n const previousSelectionEnd = previousState.selectionEnd - prefixLength;\r\n const currentSelectionStart = currentState.selectionStart - prefixLength;\r\n const currentSelectionEnd = currentState.selectionEnd - prefixLength;\r\n if (_debugComposition) {\r\n console.log('AFTER DIFFING PREVIOUS STATE: <' + previousValue + '>, selectionStart: ' + previousSelectionStart + ', selectionEnd: ' + previousSelectionEnd);\r\n console.log('AFTER DIFFING CURRENT STATE: <' + currentValue + '>, selectionStart: ' + currentSelectionStart + ', selectionEnd: ' + currentSelectionEnd);\r\n }\r\n return {\r\n text: currentValue,\r\n replacePrevCharCnt: previousSelectionEnd,\r\n replaceNextCharCnt: previousValue.length - previousSelectionEnd,\r\n positionDelta: currentSelectionEnd - currentValue.length\r\n };\r\n }\r\n}\r\nTextAreaState.EMPTY = new TextAreaState('', 0, 0, null, null);\r\nexport class PagedScreenReaderStrategy {\r\n static _getPageOfLine(lineNumber, linesPerPage) {\r\n return Math.floor((lineNumber - 1) / linesPerPage);\r\n }\r\n static _getRangeForPage(page, linesPerPage) {\r\n const offset = page * linesPerPage;\r\n const startLineNumber = offset + 1;\r\n const endLineNumber = offset + linesPerPage;\r\n return new Range(startLineNumber, 1, endLineNumber + 1, 1);\r\n }\r\n static fromEditorSelection(previousState, model, selection, linesPerPage, trimLongText) {\r\n const selectionStartPage = PagedScreenReaderStrategy._getPageOfLine(selection.startLineNumber, linesPerPage);\r\n const selectionStartPageRange = PagedScreenReaderStrategy._getRangeForPage(selectionStartPage, linesPerPage);\r\n const selectionEndPage = PagedScreenReaderStrategy._getPageOfLine(selection.endLineNumber, linesPerPage);\r\n const selectionEndPageRange = PagedScreenReaderStrategy._getRangeForPage(selectionEndPage, linesPerPage);\r\n const pretextRange = selectionStartPageRange.intersectRanges(new Range(1, 1, selection.startLineNumber, selection.startColumn));\r\n let pretext = model.getValueInRange(pretextRange, 1 /* LF */);\r\n const lastLine = model.getLineCount();\r\n const lastLineMaxColumn = model.getLineMaxColumn(lastLine);\r\n const posttextRange = selectionEndPageRange.intersectRanges(new Range(selection.endLineNumber, selection.endColumn, lastLine, lastLineMaxColumn));\r\n let posttext = model.getValueInRange(posttextRange, 1 /* LF */);\r\n let text;\r\n if (selectionStartPage === selectionEndPage || selectionStartPage + 1 === selectionEndPage) {\r\n // take full selection\r\n text = model.getValueInRange(selection, 1 /* LF */);\r\n }\r\n else {\r\n const selectionRange1 = selectionStartPageRange.intersectRanges(selection);\r\n const selectionRange2 = selectionEndPageRange.intersectRanges(selection);\r\n text = (model.getValueInRange(selectionRange1, 1 /* LF */)\r\n + String.fromCharCode(8230)\r\n + model.getValueInRange(selectionRange2, 1 /* LF */));\r\n }\r\n // Chromium handles very poorly text even of a few thousand chars\r\n // Cut text to avoid stalling the entire UI\r\n if (trimLongText) {\r\n const LIMIT_CHARS = 500;\r\n if (pretext.length > LIMIT_CHARS) {\r\n pretext = pretext.substring(pretext.length - LIMIT_CHARS, pretext.length);\r\n }\r\n if (posttext.length > LIMIT_CHARS) {\r\n posttext = posttext.substring(0, LIMIT_CHARS);\r\n }\r\n if (text.length > 2 * LIMIT_CHARS) {\r\n text = text.substring(0, LIMIT_CHARS) + String.fromCharCode(8230) + text.substring(text.length - LIMIT_CHARS, text.length);\r\n }\r\n }\r\n return new TextAreaState(pretext + text + posttext, pretext.length, pretext.length + text.length, new Position(selection.startLineNumber, selection.startColumn), new Position(selection.endLineNumber, selection.endColumn));\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as browser from '../../../base/browser/browser.js';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { RunOnceScheduler } from '../../../base/common/async.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { Mimes } from '../../../base/common/mime.js';\r\nimport * as platform from '../../../base/common/platform.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { TextAreaState, _debugComposition } from './textAreaState.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nexport var TextAreaSyntethicEvents;\r\n(function (TextAreaSyntethicEvents) {\r\n TextAreaSyntethicEvents.Tap = '-monaco-textarea-synthetic-tap';\r\n})(TextAreaSyntethicEvents || (TextAreaSyntethicEvents = {}));\r\nexport const CopyOptions = {\r\n forceCopyWithSyntaxHighlighting: false\r\n};\r\n/**\r\n * Every time we write to the clipboard, we record a bit of extra metadata here.\r\n * Every time we read from the cipboard, if the text matches our last written text,\r\n * we can fetch the previous metadata.\r\n */\r\nexport class InMemoryClipboardMetadataManager {\r\n constructor() {\r\n this._lastState = null;\r\n }\r\n set(lastCopiedValue, data) {\r\n this._lastState = { lastCopiedValue, data };\r\n }\r\n get(pastedText) {\r\n if (this._lastState && this._lastState.lastCopiedValue === pastedText) {\r\n // match!\r\n return this._lastState.data;\r\n }\r\n this._lastState = null;\r\n return null;\r\n }\r\n}\r\nInMemoryClipboardMetadataManager.INSTANCE = new InMemoryClipboardMetadataManager();\r\n/**\r\n * Writes screen reader content to the textarea and is able to analyze its input events to generate:\r\n * - onCut\r\n * - onPaste\r\n * - onType\r\n *\r\n * Composition events are generated for presentation purposes (composition input is reflected in onType).\r\n */\r\nexport class TextAreaInput extends Disposable {\r\n constructor(host, textArea) {\r\n super();\r\n this.textArea = textArea;\r\n this._onFocus = this._register(new Emitter());\r\n this.onFocus = this._onFocus.event;\r\n this._onBlur = this._register(new Emitter());\r\n this.onBlur = this._onBlur.event;\r\n this._onKeyDown = this._register(new Emitter());\r\n this.onKeyDown = this._onKeyDown.event;\r\n this._onKeyUp = this._register(new Emitter());\r\n this.onKeyUp = this._onKeyUp.event;\r\n this._onCut = this._register(new Emitter());\r\n this.onCut = this._onCut.event;\r\n this._onPaste = this._register(new Emitter());\r\n this.onPaste = this._onPaste.event;\r\n this._onType = this._register(new Emitter());\r\n this.onType = this._onType.event;\r\n this._onCompositionStart = this._register(new Emitter());\r\n this.onCompositionStart = this._onCompositionStart.event;\r\n this._onCompositionUpdate = this._register(new Emitter());\r\n this.onCompositionUpdate = this._onCompositionUpdate.event;\r\n this._onCompositionEnd = this._register(new Emitter());\r\n this.onCompositionEnd = this._onCompositionEnd.event;\r\n this._onSelectionChangeRequest = this._register(new Emitter());\r\n this.onSelectionChangeRequest = this._onSelectionChangeRequest.event;\r\n this._host = host;\r\n this._textArea = this._register(new TextAreaWrapper(textArea));\r\n this._asyncTriggerCut = this._register(new RunOnceScheduler(() => this._onCut.fire(), 0));\r\n this._asyncFocusGainWriteScreenReaderContent = this._register(new RunOnceScheduler(() => this.writeScreenReaderContent('asyncFocusGain'), 0));\r\n this._textAreaState = TextAreaState.EMPTY;\r\n this._selectionChangeListener = null;\r\n this.writeScreenReaderContent('ctor');\r\n this._hasFocus = false;\r\n this._isDoingComposition = false;\r\n this._nextCommand = 0 /* Type */;\r\n let lastKeyDown = null;\r\n this._register(dom.addStandardDisposableListener(textArea.domNode, 'keydown', (e) => {\r\n if (e.keyCode === 109 /* KEY_IN_COMPOSITION */\r\n || (this._isDoingComposition && e.keyCode === 1 /* Backspace */)) {\r\n // Stop propagation for keyDown events if the IME is processing key input\r\n e.stopPropagation();\r\n }\r\n if (e.equals(9 /* Escape */)) {\r\n // Prevent default always for `Esc`, otherwise it will generate a keypress\r\n // See https://msdn.microsoft.com/en-us/library/ie/ms536939(v=vs.85).aspx\r\n e.preventDefault();\r\n }\r\n lastKeyDown = e;\r\n this._onKeyDown.fire(e);\r\n }));\r\n this._register(dom.addStandardDisposableListener(textArea.domNode, 'keyup', (e) => {\r\n this._onKeyUp.fire(e);\r\n }));\r\n this._register(dom.addDisposableListener(textArea.domNode, 'compositionstart', (e) => {\r\n if (_debugComposition) {\r\n console.log(`[compositionstart]`, e);\r\n }\r\n if (this._isDoingComposition) {\r\n return;\r\n }\r\n this._isDoingComposition = true;\r\n if (platform.isMacintosh\r\n && this._textAreaState.selectionStart === this._textAreaState.selectionEnd\r\n && this._textAreaState.selectionStart > 0\r\n && this._textAreaState.value.substr(this._textAreaState.selectionStart - 1, 1) === e.data) {\r\n const isArrowKey = (lastKeyDown && lastKeyDown.equals(109 /* KEY_IN_COMPOSITION */)\r\n && (lastKeyDown.code === 'ArrowRight' || lastKeyDown.code === 'ArrowLeft'));\r\n if (isArrowKey || browser.isFirefox) {\r\n // Handling long press case on Chromium/Safari macOS + arrow key => pretend the character was selected\r\n // or long press case on Firefox on macOS\r\n if (_debugComposition) {\r\n console.log(`[compositionstart] Handling long press case on macOS + arrow key or Firefox`, e);\r\n }\r\n this._textAreaState = new TextAreaState(this._textAreaState.value, this._textAreaState.selectionStart - 1, this._textAreaState.selectionEnd, this._textAreaState.selectionStartPosition ? new Position(this._textAreaState.selectionStartPosition.lineNumber, this._textAreaState.selectionStartPosition.column - 1) : null, this._textAreaState.selectionEndPosition);\r\n this._onCompositionStart.fire({ revealDeltaColumns: -1 });\r\n return;\r\n }\r\n }\r\n if (browser.isAndroid) {\r\n // when tapping on the editor, Android enters composition mode to edit the current word\r\n // so we cannot clear the textarea on Android and we must pretend the current word was selected\r\n this._onCompositionStart.fire({ revealDeltaColumns: -this._textAreaState.selectionStart });\r\n return;\r\n }\r\n this._setAndWriteTextAreaState('compositionstart', TextAreaState.EMPTY);\r\n this._onCompositionStart.fire({ revealDeltaColumns: 0 });\r\n }));\r\n /**\r\n * Deduce the typed input from a text area's value and the last observed state.\r\n */\r\n const deduceInputFromTextAreaValue = (couldBeEmojiInput) => {\r\n const oldState = this._textAreaState;\r\n const newState = TextAreaState.readFromTextArea(this._textArea);\r\n return [newState, TextAreaState.deduceInput(oldState, newState, couldBeEmojiInput)];\r\n };\r\n const deduceAndroidCompositionInput = () => {\r\n const oldState = this._textAreaState;\r\n const newState = TextAreaState.readFromTextArea(this._textArea);\r\n return [newState, TextAreaState.deduceAndroidCompositionInput(oldState, newState)];\r\n };\r\n /**\r\n * Deduce the composition input from a string.\r\n */\r\n const deduceComposition = (text) => {\r\n const oldState = this._textAreaState;\r\n const newState = TextAreaState.selectedText(text);\r\n const typeInput = {\r\n text: newState.value,\r\n replacePrevCharCnt: oldState.selectionEnd - oldState.selectionStart,\r\n replaceNextCharCnt: 0,\r\n positionDelta: 0\r\n };\r\n return [newState, typeInput];\r\n };\r\n this._register(dom.addDisposableListener(textArea.domNode, 'compositionupdate', (e) => {\r\n if (_debugComposition) {\r\n console.log(`[compositionupdate]`, e);\r\n }\r\n if (browser.isAndroid) {\r\n // On Android, the data sent with the composition update event is unusable.\r\n // For example, if the cursor is in the middle of a word like Mic|osoft\r\n // and Microsoft is chosen from the keyboard's suggestions, the e.data will contain \"Microsoft\".\r\n // This is not really usable because it doesn't tell us where the edit began and where it ended.\r\n const [newState, typeInput] = deduceAndroidCompositionInput();\r\n this._textAreaState = newState;\r\n this._onType.fire(typeInput);\r\n this._onCompositionUpdate.fire(e);\r\n return;\r\n }\r\n const [newState, typeInput] = deduceComposition(e.data || '');\r\n this._textAreaState = newState;\r\n this._onType.fire(typeInput);\r\n this._onCompositionUpdate.fire(e);\r\n }));\r\n this._register(dom.addDisposableListener(textArea.domNode, 'compositionend', (e) => {\r\n if (_debugComposition) {\r\n console.log(`[compositionend]`, e);\r\n }\r\n // https://github.com/microsoft/monaco-editor/issues/1663\r\n // On iOS 13.2, Chinese system IME randomly trigger an additional compositionend event with empty data\r\n if (!this._isDoingComposition) {\r\n return;\r\n }\r\n this._isDoingComposition = false;\r\n if (browser.isAndroid) {\r\n // On Android, the data sent with the composition update event is unusable.\r\n // For example, if the cursor is in the middle of a word like Mic|osoft\r\n // and Microsoft is chosen from the keyboard's suggestions, the e.data will contain \"Microsoft\".\r\n // This is not really usable because it doesn't tell us where the edit began and where it ended.\r\n const [newState, typeInput] = deduceAndroidCompositionInput();\r\n this._textAreaState = newState;\r\n this._onType.fire(typeInput);\r\n this._onCompositionEnd.fire();\r\n return;\r\n }\r\n const [newState, typeInput] = deduceComposition(e.data || '');\r\n this._textAreaState = newState;\r\n this._onType.fire(typeInput);\r\n // isChrome: the textarea is not updated correctly when composition ends\r\n // isFirefox: the textarea is not updated correctly after inserting emojis\r\n // => we cannot assume the text at the end consists only of the composited text\r\n if (browser.isChrome || browser.isFirefox) {\r\n this._textAreaState = TextAreaState.readFromTextArea(this._textArea);\r\n }\r\n this._onCompositionEnd.fire();\r\n }));\r\n this._register(dom.addDisposableListener(textArea.domNode, 'input', () => {\r\n // Pretend here we touched the text area, as the `input` event will most likely\r\n // result in a `selectionchange` event which we want to ignore\r\n this._textArea.setIgnoreSelectionChangeTime('received input event');\r\n if (this._isDoingComposition) {\r\n return;\r\n }\r\n const [newState, typeInput] = deduceInputFromTextAreaValue(/*couldBeEmojiInput*/ platform.isMacintosh);\r\n if (typeInput.replacePrevCharCnt === 0 && typeInput.text.length === 1 && strings.isHighSurrogate(typeInput.text.charCodeAt(0))) {\r\n // Ignore invalid input but keep it around for next time\r\n return;\r\n }\r\n this._textAreaState = newState;\r\n if (this._nextCommand === 0 /* Type */) {\r\n if (typeInput.text !== '' || typeInput.replacePrevCharCnt !== 0) {\r\n this._onType.fire(typeInput);\r\n }\r\n }\r\n else {\r\n if (typeInput.text !== '' || typeInput.replacePrevCharCnt !== 0) {\r\n this._firePaste(typeInput.text, null);\r\n }\r\n this._nextCommand = 0 /* Type */;\r\n }\r\n }));\r\n // --- Clipboard operations\r\n this._register(dom.addDisposableListener(textArea.domNode, 'cut', (e) => {\r\n // Pretend here we touched the text area, as the `cut` event will most likely\r\n // result in a `selectionchange` event which we want to ignore\r\n this._textArea.setIgnoreSelectionChangeTime('received cut event');\r\n this._ensureClipboardGetsEditorSelection(e);\r\n this._asyncTriggerCut.schedule();\r\n }));\r\n this._register(dom.addDisposableListener(textArea.domNode, 'copy', (e) => {\r\n this._ensureClipboardGetsEditorSelection(e);\r\n }));\r\n this._register(dom.addDisposableListener(textArea.domNode, 'paste', (e) => {\r\n // Pretend here we touched the text area, as the `paste` event will most likely\r\n // result in a `selectionchange` event which we want to ignore\r\n this._textArea.setIgnoreSelectionChangeTime('received paste event');\r\n if (ClipboardEventUtils.canUseTextData(e)) {\r\n const [pastePlainText, metadata] = ClipboardEventUtils.getTextData(e);\r\n if (pastePlainText !== '') {\r\n this._firePaste(pastePlainText, metadata);\r\n }\r\n }\r\n else {\r\n if (this._textArea.getSelectionStart() !== this._textArea.getSelectionEnd()) {\r\n // Clean up the textarea, to get a clean paste\r\n this._setAndWriteTextAreaState('paste', TextAreaState.EMPTY);\r\n }\r\n this._nextCommand = 1 /* Paste */;\r\n }\r\n }));\r\n this._register(dom.addDisposableListener(textArea.domNode, 'focus', () => {\r\n const hadFocus = this._hasFocus;\r\n this._setHasFocus(true);\r\n if (browser.isSafari && !hadFocus && this._hasFocus) {\r\n // When \"tabbing into\" the textarea, immediately after dispatching the 'focus' event,\r\n // Safari will always move the selection at offset 0 in the textarea\r\n this._asyncFocusGainWriteScreenReaderContent.schedule();\r\n }\r\n }));\r\n this._register(dom.addDisposableListener(textArea.domNode, 'blur', () => {\r\n if (this._isDoingComposition) {\r\n // See https://github.com/microsoft/vscode/issues/112621\r\n // where compositionend is not triggered when the editor\r\n // is taken off-dom during a composition\r\n // Clear the flag to be able to write to the textarea\r\n this._isDoingComposition = false;\r\n // Clear the textarea to avoid an unwanted cursor type\r\n this.writeScreenReaderContent('blurWithoutCompositionEnd');\r\n // Fire artificial composition end\r\n this._onCompositionEnd.fire();\r\n }\r\n this._setHasFocus(false);\r\n }));\r\n this._register(dom.addDisposableListener(textArea.domNode, TextAreaSyntethicEvents.Tap, () => {\r\n if (browser.isAndroid && this._isDoingComposition) {\r\n // on Android, tapping does not cancel the current composition, so the\r\n // textarea is stuck showing the old composition\r\n // Clear the flag to be able to write to the textarea\r\n this._isDoingComposition = false;\r\n // Clear the textarea to avoid an unwanted cursor type\r\n this.writeScreenReaderContent('tapWithoutCompositionEnd');\r\n // Fire artificial composition end\r\n this._onCompositionEnd.fire();\r\n }\r\n }));\r\n }\r\n _installSelectionChangeListener() {\r\n // See https://github.com/microsoft/vscode/issues/27216 and https://github.com/microsoft/vscode/issues/98256\r\n // When using a Braille display, it is possible for users to reposition the\r\n // system caret. This is reflected in Chrome as a `selectionchange` event.\r\n //\r\n // The `selectionchange` event appears to be emitted under numerous other circumstances,\r\n // so it is quite a challenge to distinguish a `selectionchange` coming in from a user\r\n // using a Braille display from all the other cases.\r\n //\r\n // The problems with the `selectionchange` event are:\r\n // * the event is emitted when the textarea is focused programmatically -- textarea.focus()\r\n // * the event is emitted when the selection is changed in the textarea programmatically -- textarea.setSelectionRange(...)\r\n // * the event is emitted when the value of the textarea is changed programmatically -- textarea.value = '...'\r\n // * the event is emitted when tabbing into the textarea\r\n // * the event is emitted asynchronously (sometimes with a delay as high as a few tens of ms)\r\n // * the event sometimes comes in bursts for a single logical textarea operation\r\n // `selectionchange` events often come multiple times for a single logical change\r\n // so throttle multiple `selectionchange` events that burst in a short period of time.\r\n let previousSelectionChangeEventTime = 0;\r\n return dom.addDisposableListener(document, 'selectionchange', (e) => {\r\n if (!this._hasFocus) {\r\n return;\r\n }\r\n if (this._isDoingComposition) {\r\n return;\r\n }\r\n if (!browser.isChrome) {\r\n // Support only for Chrome until testing happens on other browsers\r\n return;\r\n }\r\n const now = Date.now();\r\n const delta1 = now - previousSelectionChangeEventTime;\r\n previousSelectionChangeEventTime = now;\r\n if (delta1 < 5) {\r\n // received another `selectionchange` event within 5ms of the previous `selectionchange` event\r\n // => ignore it\r\n return;\r\n }\r\n const delta2 = now - this._textArea.getIgnoreSelectionChangeTime();\r\n this._textArea.resetSelectionChangeTime();\r\n if (delta2 < 100) {\r\n // received a `selectionchange` event within 100ms since we touched the textarea\r\n // => ignore it, since we caused it\r\n return;\r\n }\r\n if (!this._textAreaState.selectionStartPosition || !this._textAreaState.selectionEndPosition) {\r\n // Cannot correlate a position in the textarea with a position in the editor...\r\n return;\r\n }\r\n const newValue = this._textArea.getValue();\r\n if (this._textAreaState.value !== newValue) {\r\n // Cannot correlate a position in the textarea with a position in the editor...\r\n return;\r\n }\r\n const newSelectionStart = this._textArea.getSelectionStart();\r\n const newSelectionEnd = this._textArea.getSelectionEnd();\r\n if (this._textAreaState.selectionStart === newSelectionStart && this._textAreaState.selectionEnd === newSelectionEnd) {\r\n // Nothing to do...\r\n return;\r\n }\r\n const _newSelectionStartPosition = this._textAreaState.deduceEditorPosition(newSelectionStart);\r\n const newSelectionStartPosition = this._host.deduceModelPosition(_newSelectionStartPosition[0], _newSelectionStartPosition[1], _newSelectionStartPosition[2]);\r\n const _newSelectionEndPosition = this._textAreaState.deduceEditorPosition(newSelectionEnd);\r\n const newSelectionEndPosition = this._host.deduceModelPosition(_newSelectionEndPosition[0], _newSelectionEndPosition[1], _newSelectionEndPosition[2]);\r\n const newSelection = new Selection(newSelectionStartPosition.lineNumber, newSelectionStartPosition.column, newSelectionEndPosition.lineNumber, newSelectionEndPosition.column);\r\n this._onSelectionChangeRequest.fire(newSelection);\r\n });\r\n }\r\n dispose() {\r\n super.dispose();\r\n if (this._selectionChangeListener) {\r\n this._selectionChangeListener.dispose();\r\n this._selectionChangeListener = null;\r\n }\r\n }\r\n focusTextArea() {\r\n // Setting this._hasFocus and writing the screen reader content\r\n // will result in a focus() and setSelectionRange() in the textarea\r\n this._setHasFocus(true);\r\n // If the editor is off DOM, focus cannot be really set, so let's double check that we have managed to set the focus\r\n this.refreshFocusState();\r\n }\r\n isFocused() {\r\n return this._hasFocus;\r\n }\r\n refreshFocusState() {\r\n const shadowRoot = dom.getShadowRoot(this.textArea.domNode);\r\n if (shadowRoot) {\r\n this._setHasFocus(shadowRoot.activeElement === this.textArea.domNode);\r\n }\r\n else if (dom.isInDOM(this.textArea.domNode)) {\r\n this._setHasFocus(document.activeElement === this.textArea.domNode);\r\n }\r\n else {\r\n this._setHasFocus(false);\r\n }\r\n }\r\n _setHasFocus(newHasFocus) {\r\n if (this._hasFocus === newHasFocus) {\r\n // no change\r\n return;\r\n }\r\n this._hasFocus = newHasFocus;\r\n if (this._selectionChangeListener) {\r\n this._selectionChangeListener.dispose();\r\n this._selectionChangeListener = null;\r\n }\r\n if (this._hasFocus) {\r\n this._selectionChangeListener = this._installSelectionChangeListener();\r\n }\r\n if (this._hasFocus) {\r\n this.writeScreenReaderContent('focusgain');\r\n }\r\n if (this._hasFocus) {\r\n this._onFocus.fire();\r\n }\r\n else {\r\n this._onBlur.fire();\r\n }\r\n }\r\n _setAndWriteTextAreaState(reason, textAreaState) {\r\n if (!this._hasFocus) {\r\n textAreaState = textAreaState.collapseSelection();\r\n }\r\n textAreaState.writeToTextArea(reason, this._textArea, this._hasFocus);\r\n this._textAreaState = textAreaState;\r\n }\r\n writeScreenReaderContent(reason) {\r\n if (this._isDoingComposition) {\r\n // Do not write to the text area when doing composition\r\n return;\r\n }\r\n this._setAndWriteTextAreaState(reason, this._host.getScreenReaderContent(this._textAreaState));\r\n }\r\n _ensureClipboardGetsEditorSelection(e) {\r\n const dataToCopy = this._host.getDataToCopy(ClipboardEventUtils.canUseTextData(e));\r\n const storedMetadata = {\r\n version: 1,\r\n isFromEmptySelection: dataToCopy.isFromEmptySelection,\r\n multicursorText: dataToCopy.multicursorText,\r\n mode: dataToCopy.mode\r\n };\r\n InMemoryClipboardMetadataManager.INSTANCE.set(\r\n // When writing \"LINE\\r\\n\" to the clipboard and then pasting,\r\n // Firefox pastes \"LINE\\n\", so let's work around this quirk\r\n (browser.isFirefox ? dataToCopy.text.replace(/\\r\\n/g, '\\n') : dataToCopy.text), storedMetadata);\r\n if (!ClipboardEventUtils.canUseTextData(e)) {\r\n // Looks like an old browser. The strategy is to place the text\r\n // we'd like to be copied to the clipboard in the textarea and select it.\r\n this._setAndWriteTextAreaState('copy or cut', TextAreaState.selectedText(dataToCopy.text));\r\n return;\r\n }\r\n ClipboardEventUtils.setTextData(e, dataToCopy.text, dataToCopy.html, storedMetadata);\r\n }\r\n _firePaste(text, metadata) {\r\n if (!metadata) {\r\n // try the in-memory store\r\n metadata = InMemoryClipboardMetadataManager.INSTANCE.get(text);\r\n }\r\n this._onPaste.fire({\r\n text: text,\r\n metadata: metadata\r\n });\r\n }\r\n}\r\nclass ClipboardEventUtils {\r\n static canUseTextData(e) {\r\n if (e.clipboardData) {\r\n return true;\r\n }\r\n if (window.clipboardData) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n static getTextData(e) {\r\n if (e.clipboardData) {\r\n e.preventDefault();\r\n const text = e.clipboardData.getData(Mimes.text);\r\n let metadata = null;\r\n const rawmetadata = e.clipboardData.getData('vscode-editor-data');\r\n if (typeof rawmetadata === 'string') {\r\n try {\r\n metadata = JSON.parse(rawmetadata);\r\n if (metadata.version !== 1) {\r\n metadata = null;\r\n }\r\n }\r\n catch (err) {\r\n // no problem!\r\n }\r\n }\r\n return [text, metadata];\r\n }\r\n if (window.clipboardData) {\r\n e.preventDefault();\r\n const text = window.clipboardData.getData('Text');\r\n return [text, null];\r\n }\r\n throw new Error('ClipboardEventUtils.getTextData: Cannot use text data!');\r\n }\r\n static setTextData(e, text, html, metadata) {\r\n if (e.clipboardData) {\r\n e.clipboardData.setData(Mimes.text, text);\r\n if (typeof html === 'string') {\r\n e.clipboardData.setData('text/html', html);\r\n }\r\n e.clipboardData.setData('vscode-editor-data', JSON.stringify(metadata));\r\n e.preventDefault();\r\n return;\r\n }\r\n if (window.clipboardData) {\r\n window.clipboardData.setData('Text', text);\r\n e.preventDefault();\r\n return;\r\n }\r\n throw new Error('ClipboardEventUtils.setTextData: Cannot use text data!');\r\n }\r\n}\r\nclass TextAreaWrapper extends Disposable {\r\n constructor(_textArea) {\r\n super();\r\n this._actual = _textArea;\r\n this._ignoreSelectionChangeTime = 0;\r\n }\r\n setIgnoreSelectionChangeTime(reason) {\r\n this._ignoreSelectionChangeTime = Date.now();\r\n }\r\n getIgnoreSelectionChangeTime() {\r\n return this._ignoreSelectionChangeTime;\r\n }\r\n resetSelectionChangeTime() {\r\n this._ignoreSelectionChangeTime = 0;\r\n }\r\n getValue() {\r\n // console.log('current value: ' + this._textArea.value);\r\n return this._actual.domNode.value;\r\n }\r\n setValue(reason, value) {\r\n const textArea = this._actual.domNode;\r\n if (textArea.value === value) {\r\n // No change\r\n return;\r\n }\r\n // console.log('reason: ' + reason + ', current value: ' + textArea.value + ' => new value: ' + value);\r\n this.setIgnoreSelectionChangeTime('setValue');\r\n textArea.value = value;\r\n }\r\n getSelectionStart() {\r\n return this._actual.domNode.selectionDirection === 'backward' ? this._actual.domNode.selectionEnd : this._actual.domNode.selectionStart;\r\n }\r\n getSelectionEnd() {\r\n return this._actual.domNode.selectionDirection === 'backward' ? this._actual.domNode.selectionStart : this._actual.domNode.selectionEnd;\r\n }\r\n setSelectionRange(reason, selectionStart, selectionEnd) {\r\n const textArea = this._actual.domNode;\r\n let activeElement = null;\r\n const shadowRoot = dom.getShadowRoot(textArea);\r\n if (shadowRoot) {\r\n activeElement = shadowRoot.activeElement;\r\n }\r\n else {\r\n activeElement = document.activeElement;\r\n }\r\n const currentIsFocused = (activeElement === textArea);\r\n const currentSelectionStart = textArea.selectionStart;\r\n const currentSelectionEnd = textArea.selectionEnd;\r\n if (currentIsFocused && currentSelectionStart === selectionStart && currentSelectionEnd === selectionEnd) {\r\n // No change\r\n // Firefox iframe bug https://github.com/microsoft/monaco-editor/issues/643#issuecomment-367871377\r\n if (browser.isFirefox && window.parent !== window) {\r\n textArea.focus();\r\n }\r\n return;\r\n }\r\n // console.log('reason: ' + reason + ', setSelectionRange: ' + selectionStart + ' -> ' + selectionEnd);\r\n if (currentIsFocused) {\r\n // No need to focus, only need to change the selection range\r\n this.setIgnoreSelectionChangeTime('setSelectionRange');\r\n textArea.setSelectionRange(selectionStart, selectionEnd);\r\n if (browser.isFirefox && window.parent !== window) {\r\n textArea.focus();\r\n }\r\n return;\r\n }\r\n // If the focus is outside the textarea, browsers will try really hard to reveal the textarea.\r\n // Here, we try to undo the browser's desperate reveal.\r\n try {\r\n const scrollState = dom.saveParentsScrollTop(textArea);\r\n this.setIgnoreSelectionChangeTime('setSelectionRange');\r\n textArea.focus();\r\n textArea.setSelectionRange(selectionStart, selectionEnd);\r\n dom.restoreParentsScrollTop(textArea, scrollState);\r\n }\r\n catch (e) {\r\n // Sometimes IE throws when setting selection (e.g. textarea is off-DOM)\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport * as platform from '../../../base/common/platform.js';\r\nimport { EventType, Gesture } from '../../../base/browser/touch.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { MouseHandler, createMouseMoveEventMerger } from './mouseHandler.js';\r\nimport { EditorMouseEvent, EditorPointerEventFactory } from '../editorDom.js';\r\nimport { BrowserFeatures } from '../../../base/browser/canIUse.js';\r\nimport { TextAreaSyntethicEvents } from './textAreaInput.js';\r\n/**\r\n * Currently only tested on iOS 13/ iPadOS.\r\n */\r\nexport class PointerEventHandler extends MouseHandler {\r\n constructor(context, viewController, viewHelper) {\r\n super(context, viewController, viewHelper);\r\n this._register(Gesture.addTarget(this.viewHelper.linesContentDomNode));\r\n this._register(dom.addDisposableListener(this.viewHelper.linesContentDomNode, EventType.Tap, (e) => this.onTap(e)));\r\n this._register(dom.addDisposableListener(this.viewHelper.linesContentDomNode, EventType.Change, (e) => this.onChange(e)));\r\n this._register(dom.addDisposableListener(this.viewHelper.linesContentDomNode, EventType.Contextmenu, (e) => this._onContextMenu(new EditorMouseEvent(e, this.viewHelper.viewDomNode), false)));\r\n this._lastPointerType = 'mouse';\r\n this._register(dom.addDisposableListener(this.viewHelper.linesContentDomNode, 'pointerdown', (e) => {\r\n const pointerType = e.pointerType;\r\n if (pointerType === 'mouse') {\r\n this._lastPointerType = 'mouse';\r\n return;\r\n }\r\n else if (pointerType === 'touch') {\r\n this._lastPointerType = 'touch';\r\n }\r\n else {\r\n this._lastPointerType = 'pen';\r\n }\r\n }));\r\n // PonterEvents\r\n const pointerEvents = new EditorPointerEventFactory(this.viewHelper.viewDomNode);\r\n this._register(pointerEvents.onPointerMoveThrottled(this.viewHelper.viewDomNode, (e) => this._onMouseMove(e), createMouseMoveEventMerger(this.mouseTargetFactory), MouseHandler.MOUSE_MOVE_MINIMUM_TIME));\r\n this._register(pointerEvents.onPointerUp(this.viewHelper.viewDomNode, (e) => this._onMouseUp(e)));\r\n this._register(pointerEvents.onPointerLeave(this.viewHelper.viewDomNode, (e) => this._onMouseLeave(e)));\r\n this._register(pointerEvents.onPointerDown(this.viewHelper.viewDomNode, (e) => this._onMouseDown(e)));\r\n }\r\n onTap(event) {\r\n if (!event.initialTarget || !this.viewHelper.linesContentDomNode.contains(event.initialTarget)) {\r\n return;\r\n }\r\n event.preventDefault();\r\n this.viewHelper.focusTextArea();\r\n const target = this._createMouseTarget(new EditorMouseEvent(event, this.viewHelper.viewDomNode), false);\r\n if (target.position) {\r\n // this.viewController.moveTo(target.position);\r\n this.viewController.dispatchMouse({\r\n position: target.position,\r\n mouseColumn: target.position.column,\r\n startedOnLineNumbers: false,\r\n mouseDownCount: event.tapCount,\r\n inSelectionMode: false,\r\n altKey: false,\r\n ctrlKey: false,\r\n metaKey: false,\r\n shiftKey: false,\r\n leftButton: false,\r\n middleButton: false,\r\n });\r\n }\r\n }\r\n onChange(e) {\r\n if (this._lastPointerType === 'touch') {\r\n this._context.model.deltaScrollNow(-e.translationX, -e.translationY);\r\n }\r\n }\r\n _onMouseDown(e) {\r\n if (e.browserEvent.pointerType === 'touch') {\r\n return;\r\n }\r\n super._onMouseDown(e);\r\n }\r\n}\r\nclass TouchHandler extends MouseHandler {\r\n constructor(context, viewController, viewHelper) {\r\n super(context, viewController, viewHelper);\r\n this._register(Gesture.addTarget(this.viewHelper.linesContentDomNode));\r\n this._register(dom.addDisposableListener(this.viewHelper.linesContentDomNode, EventType.Tap, (e) => this.onTap(e)));\r\n this._register(dom.addDisposableListener(this.viewHelper.linesContentDomNode, EventType.Change, (e) => this.onChange(e)));\r\n this._register(dom.addDisposableListener(this.viewHelper.linesContentDomNode, EventType.Contextmenu, (e) => this._onContextMenu(new EditorMouseEvent(e, this.viewHelper.viewDomNode), false)));\r\n }\r\n onTap(event) {\r\n event.preventDefault();\r\n this.viewHelper.focusTextArea();\r\n const target = this._createMouseTarget(new EditorMouseEvent(event, this.viewHelper.viewDomNode), false);\r\n if (target.position) {\r\n // Send the tap event also to the