monaco-editor11 1.1.0 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -8
- package/dist/monaco-editor11.es.js +1 -49
- package/dist/monaco-editor11.umd.js +1 -1
- package/dist/workers/_.contribution.js +120 -0
- package/dist/workers/abap.contribution.js +8 -0
- package/dist/workers/abap.js +1397 -0
- package/dist/workers/abstractCodeEditorService.js +129 -0
- package/dist/workers/abstractKeybindingService.js +286 -0
- package/dist/workers/abstractScrollbar.js +214 -0
- package/dist/workers/abstractSyntaxTokenBackend.js +128 -0
- package/dist/workers/abstractText.js +89 -0
- package/dist/workers/abstractTree.js +2027 -0
- package/dist/workers/accessibility.js +11 -0
- package/dist/workers/accessibilityService.js +111 -0
- package/dist/workers/accessibilitySignalService.js +331 -0
- package/dist/workers/accessibleDiffViewer.js +588 -0
- package/dist/workers/accessibleViewRegistry.js +25 -0
- package/dist/workers/action.js +15 -0
- package/dist/workers/actionCommonCategories.js +16 -0
- package/dist/workers/actionList.js +344 -0
- package/dist/workers/actionViewItemService.js +29 -0
- package/dist/workers/actionViewItems.js +376 -0
- package/dist/workers/actionWidget.js +236 -0
- package/dist/workers/actionbar.js +462 -0
- package/dist/workers/actions.js +483 -0
- package/dist/workers/anchorSelect.js +160 -0
- package/dist/workers/animation.js +74 -0
- package/dist/workers/apex.contribution.js +9 -0
- package/dist/workers/apex.js +329 -0
- package/dist/workers/aria.js +84 -0
- package/dist/workers/arrays.js +529 -0
- package/dist/workers/arraysFind.js +177 -0
- package/dist/workers/assert.js +79 -0
- package/dist/workers/ast.js +485 -0
- package/dist/workers/async.js +938 -0
- package/dist/workers/asyncDataTree.js +946 -0
- package/dist/workers/autoIndent.js +390 -0
- package/dist/workers/autorun.js +89 -0
- package/dist/workers/autorunImpl.js +215 -0
- package/dist/workers/azcli.contribution.js +8 -0
- package/dist/workers/azcli.js +67 -0
- package/dist/workers/bannerController.js +118 -0
- package/dist/workers/base.js +19 -0
- package/dist/workers/baseColors.js +31 -0
- package/dist/workers/baseObservable.js +106 -0
- package/dist/workers/baseRenderStrategy.js +19 -0
- package/dist/workers/baseResolvedKeybinding.js +56 -0
- package/dist/workers/bat.contribution.js +8 -0
- package/dist/workers/bat.js +99 -0
- package/dist/workers/beforeEditPositionMapper.js +110 -0
- package/dist/workers/bicep.contribution.js +8 -0
- package/dist/workers/bicep.js +108 -0
- package/dist/workers/blockCommentCommand.js +149 -0
- package/dist/workers/blockDecorations.js +97 -0
- package/dist/workers/bracketMatching.js +359 -0
- package/dist/workers/bracketPairsImpl.js +717 -0
- package/dist/workers/bracketPairsTree.js +343 -0
- package/dist/workers/bracketSelections.js +149 -0
- package/dist/workers/brackets.js +108 -0
- package/dist/workers/browser.js +57 -0
- package/dist/workers/buffer.js +81 -0
- package/dist/workers/bufferDirtyTracker.js +45 -0
- package/dist/workers/bulkEditService.js +76 -0
- package/dist/workers/button.js +226 -0
- package/dist/workers/cache.js +61 -0
- package/dist/workers/cameligo.contribution.js +8 -0
- package/dist/workers/cameligo.js +173 -0
- package/dist/workers/canIUse.js +23 -0
- package/dist/workers/cancellation.js +116 -0
- package/dist/workers/caretOperations.js +48 -0
- package/dist/workers/changeRecorder.js +78 -0
- package/dist/workers/changeTracker.js +80 -0
- package/dist/workers/charWidthReader.js +104 -0
- package/dist/workers/characterClassifier.js +59 -0
- package/dist/workers/characterPair.js +40 -0
- package/dist/workers/chartsColors.js +18 -0
- package/dist/workers/clickLinkGesture.js +161 -0
- package/dist/workers/clipboard.js +308 -0
- package/dist/workers/clipboardService.js +9 -0
- package/dist/workers/clipboardUtils.js +85 -0
- package/dist/workers/clojure.contribution.js +8 -0
- package/dist/workers/clojure.js +760 -0
- package/dist/workers/codeAction.js +306 -0
- package/dist/workers/codeActionCommands.js +230 -0
- package/dist/workers/codeActionContributions.js +55 -0
- package/dist/workers/codeActionController.js +372 -0
- package/dist/workers/codeActionKeybindingResolver.js +90 -0
- package/dist/workers/codeActionMenu.js +68 -0
- package/dist/workers/codeActionModel.js +334 -0
- package/dist/workers/codeEditorContributions.js +132 -0
- package/dist/workers/codeEditorService.js +9 -0
- package/dist/workers/codeEditorWidget.js +1856 -0
- package/dist/workers/codeLensCache.js +112 -0
- package/dist/workers/codelens.js +114 -0
- package/dist/workers/codelensController.js +469 -0
- package/dist/workers/codelensWidget.js +265 -0
- package/dist/workers/codicons.js +50 -0
- package/dist/workers/codiconsLibrary.js +642 -0
- package/dist/workers/codiconsUtil.js +22 -0
- package/dist/workers/coffee.contribution.js +9 -0
- package/dist/workers/coffee.js +231 -0
- package/dist/workers/collections.js +98 -0
- package/dist/workers/color.js +94 -0
- package/dist/workers/colorDetector.js +245 -0
- package/dist/workers/colorPickerBody.js +71 -0
- package/dist/workers/colorPickerCloseButton.js +34 -0
- package/dist/workers/colorPickerContribution.js +50 -0
- package/dist/workers/colorPickerHeader.js +79 -0
- package/dist/workers/colorPickerInsertButton.js +27 -0
- package/dist/workers/colorPickerModel.js +74 -0
- package/dist/workers/colorPickerParticipantUtils.js +52 -0
- package/dist/workers/colorPickerSaturationBox.js +106 -0
- package/dist/workers/colorPickerStrip.js +98 -0
- package/dist/workers/colorPickerWidget.js +32 -0
- package/dist/workers/colorUtils.js +199 -0
- package/dist/workers/colorizedBracketPairsDecorationProvider.js +97 -0
- package/dist/workers/colorizer.js +120 -0
- package/dist/workers/colors.js +20 -0
- package/dist/workers/columnRange.js +35 -0
- package/dist/workers/combineTextEditInfos.js +124 -0
- package/dist/workers/commandIds.js +12 -0
- package/dist/workers/commands.js +329 -0
- package/dist/workers/commandsQuickAccess.js +40 -0
- package/dist/workers/comment.js +147 -0
- package/dist/workers/common.js +20 -0
- package/dist/workers/comparers.js +87 -0
- package/dist/workers/completionModel.js +227 -0
- package/dist/workers/compressedObjectTreeModel.js +385 -0
- package/dist/workers/computeGhostText.js +182 -0
- package/dist/workers/computeMovedLines.js +249 -0
- package/dist/workers/concat23Trees.js +192 -0
- package/dist/workers/configuration.js +92 -0
- package/dist/workers/configurationModels.js +614 -0
- package/dist/workers/configurationRegistry.js +400 -0
- package/dist/workers/configurations.js +46 -0
- package/dist/workers/consoleObservableLogger.js +83 -0
- package/dist/workers/constObservable.js +35 -0
- package/dist/workers/contentHoverComputer.js +71 -0
- package/dist/workers/contentHoverController.js +320 -0
- package/dist/workers/contentHoverRendered.js +336 -0
- package/dist/workers/contentHoverStatusBar.js +52 -0
- package/dist/workers/contentHoverTypes.js +29 -0
- package/dist/workers/contentHoverWidget.js +394 -0
- package/dist/workers/contentHoverWidgetWrapper.js +362 -0
- package/dist/workers/contentSegmenter.js +52 -0
- package/dist/workers/contentWidgets.js +495 -0
- package/dist/workers/contextKeyService.js +468 -0
- package/dist/workers/contextMenuHandler.js +126 -0
- package/dist/workers/contextMenuService.js +103 -0
- package/dist/workers/contextScopedHistoryWidget.js +106 -0
- package/dist/workers/contextViewService.js +73 -0
- package/dist/workers/contextkey.js +1551 -0
- package/dist/workers/contextkeys.js +21 -0
- package/dist/workers/contextmenu.js +334 -0
- package/dist/workers/contextview.js +298 -0
- package/dist/workers/contiguousMultilineTokens.js +32 -0
- package/dist/workers/contiguousMultilineTokensBuilder.js +23 -0
- package/dist/workers/contiguousTokensEditing.js +128 -0
- package/dist/workers/contiguousTokensStore.js +207 -0
- package/dist/workers/contribution.js +36 -0
- package/dist/workers/coordinatesConverter.js +51 -0
- package/dist/workers/copyLinesCommand.js +73 -0
- package/dist/workers/copyPasteContribution.js +114 -0
- package/dist/workers/copyPasteController.js +585 -0
- package/dist/workers/copySelection.js +47 -0
- package/dist/workers/coreCommands.js +1731 -0
- package/dist/workers/countBadge.js +52 -0
- package/dist/workers/cpp.contribution.js +14 -0
- package/dist/workers/cpp.js +388 -0
- package/dist/workers/csharp.contribution.js +8 -0
- package/dist/workers/csharp.js +325 -0
- package/dist/workers/csp.contribution.js +8 -0
- package/dist/workers/csp.js +52 -0
- package/dist/workers/css.contribution.js +9 -0
- package/dist/workers/css.js +184 -0
- package/dist/workers/cssMode.js +198 -0
- package/dist/workers/cssValue.js +69 -0
- package/dist/workers/cssWorker.js +183 -0
- package/dist/workers/currentLineHighlight.js +205 -0
- package/dist/workers/cursor.js +899 -0
- package/dist/workers/cursorAtomicMoveOperations.js +145 -0
- package/dist/workers/cursorCollection.js +194 -0
- package/dist/workers/cursorColumnSelection.js +93 -0
- package/dist/workers/cursorColumns.js +112 -0
- package/dist/workers/cursorCommon.js +250 -0
- package/dist/workers/cursorContext.js +15 -0
- package/dist/workers/cursorDeleteOperations.js +231 -0
- package/dist/workers/cursorMoveCommands.js +676 -0
- package/dist/workers/cursorMoveOperations.js +290 -0
- package/dist/workers/cursorTypeEditOperations.js +968 -0
- package/dist/workers/cursorTypeOperations.js +173 -0
- package/dist/workers/cursorUndo.js +133 -0
- package/dist/workers/cursorUtils.js +75 -0
- package/dist/workers/cursorWordOperations.js +720 -0
- package/dist/workers/cypher.contribution.js +8 -0
- package/dist/workers/cypher.js +262 -0
- package/dist/workers/dart.contribution.js +9 -0
- package/dist/workers/dart.js +280 -0
- package/dist/workers/dataChannel.js +12 -0
- package/dist/workers/dataTransfer.js +80 -0
- package/dist/workers/dataTree.js +20 -0
- package/dist/workers/date.js +57 -0
- package/dist/workers/debugLocation.js +66 -0
- package/dist/workers/debugName.js +110 -0
- package/dist/workers/debuggerRpc.js +67 -0
- package/dist/workers/decorationCssRuleExtractor.js +73 -0
- package/dist/workers/decorationStyleCache.js +40 -0
- package/dist/workers/decorations.js +196 -0
- package/dist/workers/decorationsOverviewRuler.js +416 -0
- package/dist/workers/decorators.js +33 -0
- package/dist/workers/defaultDocumentColorProvider.js +55 -0
- package/dist/workers/defaultDocumentColorsComputer.js +138 -0
- package/dist/workers/defaultLinesDiffComputer.js +188 -0
- package/dist/workers/defaultProviders.js +230 -0
- package/dist/workers/defaultStyles.js +194 -0
- package/dist/workers/delegatingEditorImpl.js +111 -0
- package/dist/workers/derived.js +80 -0
- package/dist/workers/derivedImpl.js +353 -0
- package/dist/workers/descriptors.js +13 -0
- package/dist/workers/devToolsLogger.js +442 -0
- package/dist/workers/dialogs.js +5 -0
- package/dist/workers/diff.js +902 -0
- package/dist/workers/diffAlgorithm.js +139 -0
- package/dist/workers/diffChange.js +34 -0
- package/dist/workers/diffEditor.contribution.js +83 -0
- package/dist/workers/diffEditor.js +38 -0
- package/dist/workers/diffEditorDecorations.js +115 -0
- package/dist/workers/diffEditorEditors.js +190 -0
- package/dist/workers/diffEditorItemTemplate.js +272 -0
- package/dist/workers/diffEditorOptions.js +152 -0
- package/dist/workers/diffEditorSash.js +86 -0
- package/dist/workers/diffEditorViewModel.js +608 -0
- package/dist/workers/diffEditorViewZones.js +525 -0
- package/dist/workers/diffEditorWidget.js +590 -0
- package/dist/workers/diffProviderFactoryService.js +142 -0
- package/dist/workers/dnd.js +198 -0
- package/dist/workers/dockerfile.contribution.js +9 -0
- package/dist/workers/dockerfile.js +129 -0
- package/dist/workers/documentSemanticTokens.js +362 -0
- package/dist/workers/documentSymbols.js +24 -0
- package/dist/workers/dom.js +1454 -0
- package/dist/workers/domFontInfo.js +28 -0
- package/dist/workers/domLineBreaksComputer.js +301 -0
- package/dist/workers/domReadingContext.js +43 -0
- package/dist/workers/domSanitize.js +312 -0
- package/dist/workers/domStylesheets.js +145 -0
- package/dist/workers/dompurify.js +1347 -0
- package/dist/workers/dragAndDropCommand.js +65 -0
- package/dist/workers/dragScrolling.js +174 -0
- package/dist/workers/dropIntoEditorContribution.js +41 -0
- package/dist/workers/dropIntoEditorController.js +173 -0
- package/dist/workers/dropdown.js +141 -0
- package/dist/workers/dropdownActionViewItem.js +109 -0
- package/dist/workers/dynamicProgrammingDiffing.js +101 -0
- package/dist/workers/dynamicViewOverlay.js +10 -0
- package/dist/workers/ecl.contribution.js +8 -0
- package/dist/workers/ecl.js +455 -0
- package/dist/workers/edcore.main.js +74 -0
- package/dist/workers/edit.js +83 -0
- package/dist/workers/editContext.js +10 -0
- package/dist/workers/editContextFactory.js +16 -0
- package/dist/workers/editOperation.js +36 -0
- package/dist/workers/editStack.js +363 -0
- package/dist/workers/editor.all.js +65 -0
- package/dist/workers/editor.api.js +2 -0
- package/dist/workers/editor.api2.js +60 -0
- package/dist/workers/editor.js +15 -0
- package/dist/workers/editor.main.js +170 -0
- package/dist/workers/editor.worker.start.js +44 -0
- package/dist/workers/editorAction.js +26 -0
- package/dist/workers/editorBaseApi.js +43 -0
- package/dist/workers/editorBrowser.js +53 -0
- package/dist/workers/editorColorRegistry.js +102 -0
- package/dist/workers/editorColors.js +128 -0
- package/dist/workers/editorCommon.js +13 -0
- package/dist/workers/editorConfiguration.js +292 -0
- package/dist/workers/editorConfigurationSchema.js +338 -0
- package/dist/workers/editorContextKeys.js +84 -0
- package/dist/workers/editorDom.js +299 -0
- package/dist/workers/editorExtensions.js +489 -0
- package/dist/workers/editorFeatures.js +17 -0
- package/dist/workers/editorGutter.js +117 -0
- package/dist/workers/editorMarkdownCodeBlockRenderer.js +85 -0
- package/dist/workers/editorNavigationQuickAccess.js +152 -0
- package/dist/workers/editorOptions.js +3440 -0
- package/dist/workers/editorScrollbar.js +151 -0
- package/dist/workers/editorState.js +115 -0
- package/dist/workers/editorTheme.js +23 -0
- package/dist/workers/editorWebWorker.js +299 -0
- package/dist/workers/editorWorker.js +9 -0
- package/dist/workers/editorWorkerHost.js +15 -0
- package/dist/workers/editorWorkerService.js +366 -0
- package/dist/workers/editorZoom.js +26 -0
- package/dist/workers/electricCharacter.js +55 -0
- package/dist/workers/elementSizeObserver.js +107 -0
- package/dist/workers/elixir.contribution.js +8 -0
- package/dist/workers/elixir.js +568 -0
- package/dist/workers/embeddedCodeEditorWidget.js +66 -0
- package/dist/workers/encodedTokenAttributes.js +79 -0
- package/dist/workers/enterAction.js +53 -0
- package/dist/workers/environment.js +5 -0
- package/dist/workers/eolCounter.js +44 -0
- package/dist/workers/equals.js +84 -0
- package/dist/workers/errorMessage.js +71 -0
- package/dist/workers/errors.js +163 -0
- package/dist/workers/event.js +1197 -0
- package/dist/workers/extensions.js +18 -0
- package/dist/workers/extpath.js +147 -0
- package/dist/workers/fastDomNode.js +255 -0
- package/dist/workers/files.js +19 -0
- package/dist/workers/filters.js +742 -0
- package/dist/workers/findController.js +970 -0
- package/dist/workers/findDecorations.js +311 -0
- package/dist/workers/findInput.js +294 -0
- package/dist/workers/findInputToggles.js +52 -0
- package/dist/workers/findModel.js +497 -0
- package/dist/workers/findOptionsWidget.js +155 -0
- package/dist/workers/findSectionHeaders.js +128 -0
- package/dist/workers/findState.js +244 -0
- package/dist/workers/findWidget.js +1168 -0
- package/dist/workers/findWidgetSearchHistory.js +85 -0
- package/dist/workers/fixBrackets.js +67 -0
- package/dist/workers/fixedArray.js +70 -0
- package/dist/workers/floatingMenu.contribution.js +9 -0
- package/dist/workers/floatingMenu.js +94 -0
- package/dist/workers/flow9.contribution.js +8 -0
- package/dist/workers/flow9.js +141 -0
- package/dist/workers/folding.js +1136 -0
- package/dist/workers/foldingDecorations.js +158 -0
- package/dist/workers/foldingModel.js +532 -0
- package/dist/workers/foldingRanges.js +354 -0
- package/dist/workers/fontInfo.js +172 -0
- package/dist/workers/fontInfoFromSettings.js +29 -0
- package/dist/workers/fontMeasurements.js +206 -0
- package/dist/workers/fontZoom.js +47 -0
- package/dist/workers/fonts.js +17 -0
- package/dist/workers/format.js +367 -0
- package/dist/workers/formatActions.js +263 -0
- package/dist/workers/formattedTextRenderer.js +160 -0
- package/dist/workers/formattingEdit.js +57 -0
- package/dist/workers/forwardingTelemetryService.js +60 -0
- package/dist/workers/freemarker2.contribution.js +52 -0
- package/dist/workers/freemarker2.js +1062 -0
- package/dist/workers/fsharp.contribution.js +8 -0
- package/dist/workers/fsharp.js +216 -0
- package/dist/workers/fullFileRenderStrategy.js +414 -0
- package/dist/workers/fullFileRenderStrategy.wgsl.js +93 -0
- package/dist/workers/functional.js +24 -0
- package/dist/workers/fuzzyScorer.js +143 -0
- package/dist/workers/getHover.js +56 -0
- package/dist/workers/getIconClasses.js +106 -0
- package/dist/workers/getLinks.js +157 -0
- package/dist/workers/getPositionOffsetTransformerFromTextModel.js +24 -0
- package/dist/workers/getSemanticTokens.js +211 -0
- package/dist/workers/ghostText.js +111 -0
- package/dist/workers/ghostTextView.js +449 -0
- package/dist/workers/glob.js +581 -0
- package/dist/workers/globalPointerMoveMonitor.js +83 -0
- package/dist/workers/glyphHoverComputer.js +40 -0
- package/dist/workers/glyphHoverController.js +171 -0
- package/dist/workers/glyphHoverWidget.js +184 -0
- package/dist/workers/glyphLanesModel.js +61 -0
- package/dist/workers/glyphMargin.js +403 -0
- package/dist/workers/glyphRasterizer.js +276 -0
- package/dist/workers/go.contribution.js +8 -0
- package/dist/workers/go.js +217 -0
- package/dist/workers/goToCommands.js +694 -0
- package/dist/workers/goToDefinitionAtPosition.js +267 -0
- package/dist/workers/goToSymbol.js +128 -0
- package/dist/workers/gotoError.js +272 -0
- package/dist/workers/gotoErrorWidget.js +352 -0
- package/dist/workers/gotoLineQuickAccess.js +183 -0
- package/dist/workers/gotoSymbolQuickAccess.js +395 -0
- package/dist/workers/gpuActions.js +126 -0
- package/dist/workers/gpuDisposable.js +48 -0
- package/dist/workers/gpuMark.js +80 -0
- package/dist/workers/gpuUtils.js +58 -0
- package/dist/workers/graph.js +74 -0
- package/dist/workers/graphql.contribution.js +9 -0
- package/dist/workers/graphql.js +150 -0
- package/dist/workers/guidesTextModelPart.js +405 -0
- package/dist/workers/gutterFeature.js +238 -0
- package/dist/workers/gutterIndicatorMenu.js +252 -0
- package/dist/workers/gutterIndicatorView.js +456 -0
- package/dist/workers/handlebars.contribution.js +9 -0
- package/dist/workers/handlebars.js +485 -0
- package/dist/workers/hash.js +256 -0
- package/dist/workers/hcl.contribution.js +8 -0
- package/dist/workers/hcl.js +182 -0
- package/dist/workers/helpQuickAccess.js +77 -0
- package/dist/workers/heuristicSequenceOptimizations.js +374 -0
- package/dist/workers/hiddenRangeModel.js +126 -0
- package/dist/workers/hideUnchangedRegionsFeature.js +433 -0
- package/dist/workers/hierarchicalKind.js +26 -0
- package/dist/workers/highlightDecorations.js +111 -0
- package/dist/workers/highlightedLabel.js +129 -0
- package/dist/workers/history.js +85 -0
- package/dist/workers/historyWidgetKeybindingHint.js +9 -0
- package/dist/workers/horizontalScrollbar.js +91 -0
- package/dist/workers/hotReloadHelpers.js +17 -0
- package/dist/workers/hover.js +11 -0
- package/dist/workers/hoverAccessibleViews.js +8 -0
- package/dist/workers/hoverActionIds.js +23 -0
- package/dist/workers/hoverActions.js +424 -0
- package/dist/workers/hoverColorPicker.js +14 -0
- package/dist/workers/hoverColorPickerContribution.js +44 -0
- package/dist/workers/hoverColorPickerParticipant.js +151 -0
- package/dist/workers/hoverContribution.js +56 -0
- package/dist/workers/hoverCopyButton.js +54 -0
- package/dist/workers/hoverDelegate2.js +39 -0
- package/dist/workers/hoverDelegateFactory.js +34 -0
- package/dist/workers/hoverOperation.js +168 -0
- package/dist/workers/hoverParticipant.js +161 -0
- package/dist/workers/hoverService.js +542 -0
- package/dist/workers/hoverTypes.js +64 -0
- package/dist/workers/hoverUtils.js +18 -0
- package/dist/workers/hoverWidget.js +93 -0
- package/dist/workers/html.contribution.js +9 -0
- package/dist/workers/html.js +374 -0
- package/dist/workers/htmlContent.js +164 -0
- package/dist/workers/htmlMode.js +213 -0
- package/dist/workers/htmlWorker.js +126 -0
- package/dist/workers/iPadShowKeyboard.js +74 -0
- package/dist/workers/iconLabel.js +291 -0
- package/dist/workers/iconLabels.js +33 -0
- package/dist/workers/iconRegistry.js +183 -0
- package/dist/workers/iconsStyleSheet.js +75 -0
- package/dist/workers/idGenerator.js +16 -0
- package/dist/workers/iframe.js +87 -0
- package/dist/workers/ime.js +33 -0
- package/dist/workers/inPlaceReplace.js +151 -0
- package/dist/workers/inPlaceReplaceCommand.js +27 -0
- package/dist/workers/indentGuides.js +254 -0
- package/dist/workers/indentRangeProvider.js +166 -0
- package/dist/workers/indentRules.js +63 -0
- package/dist/workers/indentUtils.js +33 -0
- package/dist/workers/indentation.js +100 -0
- package/dist/workers/indentationGuesser.js +178 -0
- package/dist/workers/indentationLineProcessor.js +193 -0
- package/dist/workers/index.js +21 -0
- package/dist/workers/indexTreeModel.js +538 -0
- package/dist/workers/ini.contribution.js +9 -0
- package/dist/workers/ini.js +70 -0
- package/dist/workers/initialize.js +11 -0
- package/dist/workers/inlayHints.js +147 -0
- package/dist/workers/inlayHintsContribution.js +11 -0
- package/dist/workers/inlayHintsController.js +686 -0
- package/dist/workers/inlayHintsHover.js +162 -0
- package/dist/workers/inlayHintsLocations.js +96 -0
- package/dist/workers/inlineCompletionContextKeys.js +23 -0
- package/dist/workers/inlineCompletions.contribution.js +31 -0
- package/dist/workers/inlineCompletionsAccessibleView.js +4 -0
- package/dist/workers/inlineCompletionsController.js +427 -0
- package/dist/workers/inlineCompletionsHintsWidget.js +356 -0
- package/dist/workers/inlineCompletionsModel.js +1048 -0
- package/dist/workers/inlineCompletionsService.js +170 -0
- package/dist/workers/inlineCompletionsSource.js +548 -0
- package/dist/workers/inlineCompletionsView.js +86 -0
- package/dist/workers/inlineDecorations.js +26 -0
- package/dist/workers/inlineDiffDeletedCodeMargin.js +138 -0
- package/dist/workers/inlineEdit.js +17 -0
- package/dist/workers/inlineEditWithChanges.js +30 -0
- package/dist/workers/inlineEditsCollapsedView.js +132 -0
- package/dist/workers/inlineEditsCustomView.js +256 -0
- package/dist/workers/inlineEditsDeletionView.js +178 -0
- package/dist/workers/inlineEditsInsertionView.js +267 -0
- package/dist/workers/inlineEditsLineReplacementView.js +329 -0
- package/dist/workers/inlineEditsModel.js +59 -0
- package/dist/workers/inlineEditsNewUsers.js +174 -0
- package/dist/workers/inlineEditsSideBySideView.js +517 -0
- package/dist/workers/inlineEditsView.js +561 -0
- package/dist/workers/inlineEditsViewInterface.js +21 -0
- package/dist/workers/inlineEditsViewProducer.js +119 -0
- package/dist/workers/inlineEditsWordReplacementView.js +211 -0
- package/dist/workers/inlineProgress.js +139 -0
- package/dist/workers/inlineSuggestionItem.js +497 -0
- package/dist/workers/inplaceReplaceSupport.js +87 -0
- package/dist/workers/inputBox.js +510 -0
- package/dist/workers/inputColors.js +66 -0
- package/dist/workers/inputMode.js +22 -0
- package/dist/workers/insertFinalNewLine.js +32 -0
- package/dist/workers/insertFinalNewLineCommand.js +39 -0
- package/dist/workers/inspectTokens.js +240 -0
- package/dist/workers/instantiation.js +44 -0
- package/dist/workers/instantiationService.js +403 -0
- package/dist/workers/intervalTree.js +1002 -0
- package/dist/workers/iterator.js +186 -0
- package/dist/workers/java.contribution.js +9 -0
- package/dist/workers/java.js +231 -0
- package/dist/workers/javascript.contribution.js +11 -0
- package/dist/workers/javascript.js +70 -0
- package/dist/workers/jsonContributionRegistry.js +42 -0
- package/dist/workers/jsonMode.js +224 -0
- package/dist/workers/jsonWorker.js +187 -0
- package/dist/workers/julia.contribution.js +8 -0
- package/dist/workers/julia.js +510 -0
- package/dist/workers/keyCodes.js +351 -0
- package/dist/workers/keybinding.js +9 -0
- package/dist/workers/keybindingCancellation.js +81 -0
- package/dist/workers/keybindingLabel.js +122 -0
- package/dist/workers/keybindingLabels.js +139 -0
- package/dist/workers/keybindingResolver.js +304 -0
- package/dist/workers/keybindings.js +104 -0
- package/dist/workers/keybindingsRegistry.js +111 -0
- package/dist/workers/keyboardEvent.js +125 -0
- package/dist/workers/korean.js +321 -0
- package/dist/workers/kotlin.contribution.js +9 -0
- package/dist/workers/kotlin.js +251 -0
- package/dist/workers/label.js +5 -0
- package/dist/workers/labels.js +15 -0
- package/dist/workers/language.js +9 -0
- package/dist/workers/languageBracketsConfiguration.js +133 -0
- package/dist/workers/languageConfiguration.js +138 -0
- package/dist/workers/languageConfigurationRegistry.js +361 -0
- package/dist/workers/languageFeatureDebounce.js +137 -0
- package/dist/workers/languageFeatureRegistry.js +180 -0
- package/dist/workers/languageFeatures.js +9 -0
- package/dist/workers/languageFeaturesService.js +47 -0
- package/dist/workers/languageSelector.js +112 -0
- package/dist/workers/languageService.js +92 -0
- package/dist/workers/languages.js +522 -0
- package/dist/workers/languagesAssociations.js +193 -0
- package/dist/workers/languagesRegistry.js +237 -0
- package/dist/workers/layoutService.js +9 -0
- package/dist/workers/lazy.js +49 -0
- package/dist/workers/lazyObservableValue.js +125 -0
- package/dist/workers/legacyLinesDiffComputer.js +468 -0
- package/dist/workers/length.js +129 -0
- package/dist/workers/less.contribution.js +9 -0
- package/dist/workers/less.js +160 -0
- package/dist/workers/lexon.contribution.js +8 -0
- package/dist/workers/lexon.js +156 -0
- package/dist/workers/lib.index.js +103 -0
- package/dist/workers/lib.js +1107 -0
- package/dist/workers/lifecycle.js +311 -0
- package/dist/workers/lightBulbWidget.js +427 -0
- package/dist/workers/lineCommentCommand.js +328 -0
- package/dist/workers/lineDecorations.js +208 -0
- package/dist/workers/lineEdit.js +75 -0
- package/dist/workers/lineHeights.js +370 -0
- package/dist/workers/lineNumbers.js +184 -0
- package/dist/workers/linePart.js +25 -0
- package/dist/workers/lineRange.js +312 -0
- package/dist/workers/lineSelection.js +36 -0
- package/dist/workers/lineSequence.js +36 -0
- package/dist/workers/lineTokens.js +405 -0
- package/dist/workers/linesDecorations.js +104 -0
- package/dist/workers/linesDiffComputer.js +29 -0
- package/dist/workers/linesDiffComputers.js +13 -0
- package/dist/workers/linesLayout.js +765 -0
- package/dist/workers/linesOperations.js +1187 -0
- package/dist/workers/linesSliceCharSequence.js +205 -0
- package/dist/workers/link.js +95 -0
- package/dist/workers/linkComputer.js +269 -0
- package/dist/workers/linkedEditing.js +381 -0
- package/dist/workers/linkedList.js +126 -0
- package/dist/workers/linkedText.js +48 -0
- package/dist/workers/links.js +376 -0
- package/dist/workers/liquid.contribution.js +9 -0
- package/dist/workers/liquid.js +306 -0
- package/dist/workers/list.js +11 -0
- package/dist/workers/listColors.js +51 -0
- package/dist/workers/listPaging.js +128 -0
- package/dist/workers/listService.js +1025 -0
- package/dist/workers/listView.js +1173 -0
- package/dist/workers/listWidget.js +1535 -0
- package/dist/workers/log.js +271 -0
- package/dist/workers/logService.js +40 -0
- package/dist/workers/logging.js +86 -0
- package/dist/workers/longLinesHelper.js +23 -0
- package/dist/workers/lspLanguageFeatures.js +716 -0
- package/dist/workers/lua.contribution.js +8 -0
- package/dist/workers/lua.js +161 -0
- package/dist/workers/m3.contribution.js +8 -0
- package/dist/workers/m3.js +209 -0
- package/dist/workers/map.js +670 -0
- package/dist/workers/margin.js +71 -0
- package/dist/workers/marginDecorations.js +84 -0
- package/dist/workers/markdown.contribution.js +8 -0
- package/dist/workers/markdown.js +228 -0
- package/dist/workers/markdownHoverParticipant.js +419 -0
- package/dist/workers/markdownRenderer.js +73 -0
- package/dist/workers/marked.js +2478 -0
- package/dist/workers/markerDecorations.js +9 -0
- package/dist/workers/markerDecorationsService.js +248 -0
- package/dist/workers/markerHoverParticipant.js +270 -0
- package/dist/workers/markerNavigationService.js +223 -0
- package/dist/workers/markerService.js +330 -0
- package/dist/workers/markers.js +127 -0
- package/dist/workers/marshalling.js +62 -0
- package/dist/workers/mdx.contribution.js +8 -0
- package/dist/workers/mdx.js +230 -0
- package/dist/workers/menu.js +1147 -0
- package/dist/workers/menuColors.js +19 -0
- package/dist/workers/menuEntryActionViewItem.js +519 -0
- package/dist/workers/menuService.js +436 -0
- package/dist/workers/messageController.js +186 -0
- package/dist/workers/middleScroll.contribution.js +8 -0
- package/dist/workers/middleScrollController.js +128 -0
- package/dist/workers/migrateOptions.js +220 -0
- package/dist/workers/mime.js +11 -0
- package/dist/workers/minimap.js +1662 -0
- package/dist/workers/minimapCharRenderer.js +90 -0
- package/dist/workers/minimapCharRendererFactory.js +136 -0
- package/dist/workers/minimapCharSheet.js +25 -0
- package/dist/workers/minimapColors.js +23 -0
- package/dist/workers/minimapPreBaked.js +52 -0
- package/dist/workers/minimapTokensColorTracker.js +58 -0
- package/dist/workers/mips.contribution.js +9 -0
- package/dist/workers/mips.js +197 -0
- package/dist/workers/mirrorTextModel.js +117 -0
- package/dist/workers/miscColors.js +32 -0
- package/dist/workers/model.js +9 -0
- package/dist/workers/modelLineProjection.js +350 -0
- package/dist/workers/modelLineProjectionData.js +297 -0
- package/dist/workers/modelService.js +413 -0
- package/dist/workers/modesRegistry.js +75 -0
- package/dist/workers/monaco.contribution.js +302 -0
- package/dist/workers/monarchCommon.js +147 -0
- package/dist/workers/monarchCompile.js +546 -0
- package/dist/workers/monarchLexer.js +764 -0
- package/dist/workers/monospaceLineBreaksComputer.js +473 -0
- package/dist/workers/mouseCursor.js +9 -0
- package/dist/workers/mouseEvent.js +153 -0
- package/dist/workers/mouseHandler.js +539 -0
- package/dist/workers/mouseTarget.js +978 -0
- package/dist/workers/moveCaretCommand.js +49 -0
- package/dist/workers/moveLinesCommand.js +394 -0
- package/dist/workers/movedBlocksLinesFeature.js +277 -0
- package/dist/workers/msdax.contribution.js +8 -0
- package/dist/workers/msdax.js +374 -0
- package/dist/workers/multiDiffEditorWidget.js +43 -0
- package/dist/workers/multiDiffEditorWidgetImpl.js +427 -0
- package/dist/workers/multicursor.js +1004 -0
- package/dist/workers/myersDiffAlgorithm.js +159 -0
- package/dist/workers/mysql.contribution.js +8 -0
- package/dist/workers/mysql.js +877 -0
- package/dist/workers/nativeEditContext.js +518 -0
- package/dist/workers/nativeEditContextRegistry.js +23 -0
- package/dist/workers/nativeEditContextUtils.js +85 -0
- package/dist/workers/navigator.js +36 -0
- package/dist/workers/network.js +267 -0
- package/dist/workers/nls.js +76 -0
- package/dist/workers/nls.messages.js +18 -0
- package/dist/workers/nodeReader.js +127 -0
- package/dist/workers/normalization.js +41 -0
- package/dist/workers/notification.js +9 -0
- package/dist/workers/nullTokenize.js +29 -0
- package/dist/workers/numbers.js +45 -0
- package/dist/workers/objectCollectionBuffer.js +102 -0
- package/dist/workers/objectPool.js +47 -0
- package/dist/workers/objectTree.js +204 -0
- package/dist/workers/objectTreeModel.js +220 -0
- package/dist/workers/objective-c.contribution.js +8 -0
- package/dist/workers/objective-c.js +182 -0
- package/dist/workers/objects.js +152 -0
- package/dist/workers/observableCodeEditor.js +373 -0
- package/dist/workers/observableFromEvent.js +123 -0
- package/dist/workers/observableSignal.js +47 -0
- package/dist/workers/observableSignalFromEvent.js +41 -0
- package/dist/workers/observableValue.js +105 -0
- package/dist/workers/observableValueOpts.js +20 -0
- package/dist/workers/offsetRange.js +225 -0
- package/dist/workers/onEnter.js +109 -0
- package/dist/workers/oneCursor.js +117 -0
- package/dist/workers/opener.js +43 -0
- package/dist/workers/openerService.js +222 -0
- package/dist/workers/originalEditorInlineDiffView.js +215 -0
- package/dist/workers/outlineModel.js +265 -0
- package/dist/workers/overlayWidgets.js +181 -0
- package/dist/workers/overviewRuler.js +134 -0
- package/dist/workers/overviewRulerFeature.js +168 -0
- package/dist/workers/overviewZoneManager.js +176 -0
- package/dist/workers/parameterHints.js +126 -0
- package/dist/workers/parameterHintsModel.js +258 -0
- package/dist/workers/parameterHintsWidget.js +318 -0
- package/dist/workers/parser.js +121 -0
- package/dist/workers/pascal.contribution.js +9 -0
- package/dist/workers/pascal.js +250 -0
- package/dist/workers/pascaligo.contribution.js +8 -0
- package/dist/workers/pascaligo.js +163 -0
- package/dist/workers/path.js +1451 -0
- package/dist/workers/peekView.js +246 -0
- package/dist/workers/performance.js +222 -0
- package/dist/workers/perl.contribution.js +8 -0
- package/dist/workers/perl.js +625 -0
- package/dist/workers/pgsql.contribution.js +8 -0
- package/dist/workers/pgsql.js +850 -0
- package/dist/workers/php.contribution.js +9 -0
- package/dist/workers/php.js +499 -0
- package/dist/workers/pickerQuickAccess.js +271 -0
- package/dist/workers/pieceTreeBase.js +1473 -0
- package/dist/workers/pieceTreeTextBuffer.js +461 -0
- package/dist/workers/pieceTreeTextBufferBuilder.js +140 -0
- package/dist/workers/pixelRatio.js +88 -0
- package/dist/workers/pla.contribution.js +7 -0
- package/dist/workers/pla.js +136 -0
- package/dist/workers/placeholderText.contribution.js +14 -0
- package/dist/workers/placeholderTextContribution.js +77 -0
- package/dist/workers/platform.js +32 -0
- package/dist/workers/platformObservableUtils.js +31 -0
- package/dist/workers/point.js +50 -0
- package/dist/workers/pointerHandler.js +132 -0
- package/dist/workers/position.js +142 -0
- package/dist/workers/positionToOffset.js +17 -0
- package/dist/workers/positionToOffsetImpl.js +98 -0
- package/dist/workers/postEditWidget.js +220 -0
- package/dist/workers/postiats.contribution.js +8 -0
- package/dist/workers/postiats.js +906 -0
- package/dist/workers/powerquery.contribution.js +8 -0
- package/dist/workers/powerquery.js +889 -0
- package/dist/workers/powershell.contribution.js +8 -0
- package/dist/workers/powershell.js +238 -0
- package/dist/workers/prefixSumComputer.js +226 -0
- package/dist/workers/process.js +61 -0
- package/dist/workers/product.js +70 -0
- package/dist/workers/productService.js +9 -0
- package/dist/workers/progress.js +16 -0
- package/dist/workers/progressbar.js +105 -0
- package/dist/workers/promise.js +56 -0
- package/dist/workers/protobuf.contribution.js +8 -0
- package/dist/workers/protobuf.js +419 -0
- package/dist/workers/provideInlineCompletions.js +372 -0
- package/dist/workers/provideSignatureHelp.js +59 -0
- package/dist/workers/pug.contribution.js +8 -0
- package/dist/workers/pug.js +401 -0
- package/dist/workers/python.contribution.js +9 -0
- package/dist/workers/python.js +366 -0
- package/dist/workers/qsharp.contribution.js +8 -0
- package/dist/workers/qsharp.js +300 -0
- package/dist/workers/quickAccess.js +56 -0
- package/dist/workers/quickInput.js +108 -0
- package/dist/workers/quickInputActions.js +189 -0
- package/dist/workers/quickInputBox.js +104 -0
- package/dist/workers/quickInputController.js +901 -0
- package/dist/workers/quickInputDelegate.js +19 -0
- package/dist/workers/quickInputList.js +1391 -0
- package/dist/workers/quickInputService.js +197 -0
- package/dist/workers/quickInputTree.js +37 -0
- package/dist/workers/quickInputTreeAccessibilityProvider.js +39 -0
- package/dist/workers/quickInputTreeController.js +181 -0
- package/dist/workers/quickInputTreeFilter.js +42 -0
- package/dist/workers/quickInputTreeRenderer.js +141 -0
- package/dist/workers/quickInputTreeSorter.js +48 -0
- package/dist/workers/quickInputUtils.js +89 -0
- package/dist/workers/quickpickColors.js +21 -0
- package/dist/workers/r.contribution.js +8 -0
- package/dist/workers/r.js +242 -0
- package/dist/workers/range.js +421 -0
- package/dist/workers/rangeMap.js +161 -0
- package/dist/workers/rangeMapping.js +229 -0
- package/dist/workers/rangeSingleLine.js +17 -0
- package/dist/workers/rangeUtil.js +117 -0
- package/dist/workers/razor.contribution.js +9 -0
- package/dist/workers/razor.js +616 -0
- package/dist/workers/rbTreeBase.js +362 -0
- package/dist/workers/rect.js +163 -0
- package/dist/workers/rectangleRenderer.js +214 -0
- package/dist/workers/rectangleRenderer.wgsl.js +68 -0
- package/dist/workers/redis.contribution.js +8 -0
- package/dist/workers/redis.js +301 -0
- package/dist/workers/redshift.contribution.js +8 -0
- package/dist/workers/redshift.js +808 -0
- package/dist/workers/reducer.js +46 -0
- package/dist/workers/referencesController.js +382 -0
- package/dist/workers/referencesModel.js +241 -0
- package/dist/workers/referencesTree.js +200 -0
- package/dist/workers/referencesWidget.js +525 -0
- package/dist/workers/registrations.contribution.js +82 -0
- package/dist/workers/rename.js +458 -0
- package/dist/workers/renameWidget.js +741 -0
- package/dist/workers/renderLines.js +185 -0
- package/dist/workers/renderingContext.js +118 -0
- package/dist/workers/replaceAllCommand.js +54 -0
- package/dist/workers/replaceCommand.js +158 -0
- package/dist/workers/replaceInput.js +176 -0
- package/dist/workers/replacePattern.js +289 -0
- package/dist/workers/replaceWidgetHistory.js +85 -0
- package/dist/workers/resizable.js +150 -0
- package/dist/workers/resizableContentWidget.js +92 -0
- package/dist/workers/resolvedKeybindingItem.js +35 -0
- package/dist/workers/resolverService.js +5 -0
- package/dist/workers/resources.js +231 -0
- package/dist/workers/restructuredtext.contribution.js +8 -0
- package/dist/workers/restructuredtext.js +173 -0
- package/dist/workers/revertButtonsFeature.js +149 -0
- package/dist/workers/rgba.js +35 -0
- package/dist/workers/richEditBrackets.js +356 -0
- package/dist/workers/rowCache.js +110 -0
- package/dist/workers/rpc.js +57 -0
- package/dist/workers/ruby.contribution.js +9 -0
- package/dist/workers/ruby.js +510 -0
- package/dist/workers/rulers.js +82 -0
- package/dist/workers/rulersGpu.js +66 -0
- package/dist/workers/runOnChange.js +61 -0
- package/dist/workers/rust.contribution.js +8 -0
- package/dist/workers/rust.js +342 -0
- package/dist/workers/sash.js +451 -0
- package/dist/workers/sb.contribution.js +8 -0
- package/dist/workers/sb.js +114 -0
- package/dist/workers/scala.contribution.js +9 -0
- package/dist/workers/scala.js +369 -0
- package/dist/workers/scanner.js +287 -0
- package/dist/workers/scheme.contribution.js +8 -0
- package/dist/workers/scheme.js +107 -0
- package/dist/workers/screenReaderContentRich.js +337 -0
- package/dist/workers/screenReaderContentSimple.js +194 -0
- package/dist/workers/screenReaderSupport.js +175 -0
- package/dist/workers/screenReaderUtils.js +111 -0
- package/dist/workers/scrollDecoration.js +70 -0
- package/dist/workers/scrollable.js +323 -0
- package/dist/workers/scrollableElement.js +603 -0
- package/dist/workers/scrollbarArrow.js +78 -0
- package/dist/workers/scrollbarState.js +163 -0
- package/dist/workers/scrollbarVisibilityController.js +93 -0
- package/dist/workers/scss.contribution.js +9 -0
- package/dist/workers/scss.js +259 -0
- package/dist/workers/search.js +52 -0
- package/dist/workers/searchColors.js +13 -0
- package/dist/workers/sectionHeaders.js +179 -0
- package/dist/workers/selectBox.js +47 -0
- package/dist/workers/selectBoxCustom.js +858 -0
- package/dist/workers/selectBoxNative.js +142 -0
- package/dist/workers/selection.js +145 -0
- package/dist/workers/selections.js +338 -0
- package/dist/workers/semanticTokensConfig.js +14 -0
- package/dist/workers/semanticTokensDto.js +82 -0
- package/dist/workers/semanticTokensProviderStyling.js +263 -0
- package/dist/workers/semanticTokensStyling.js +9 -0
- package/dist/workers/semanticTokensStylingService.js +47 -0
- package/dist/workers/serviceCollection.js +22 -0
- package/dist/workers/severity.js +52 -0
- package/dist/workers/severityIcon.js +29 -0
- package/dist/workers/shell.contribution.js +8 -0
- package/dist/workers/shell.js +220 -0
- package/dist/workers/shiftCommand.js +241 -0
- package/dist/workers/singleTextEditHelpers.js +32 -0
- package/dist/workers/smallImmutableSet.js +108 -0
- package/dist/workers/smartSelect.js +281 -0
- package/dist/workers/snippetController2.js +297 -0
- package/dist/workers/snippetParser.js +890 -0
- package/dist/workers/snippetSession.js +650 -0
- package/dist/workers/snippetVariables.js +323 -0
- package/dist/workers/solidity.contribution.js +8 -0
- package/dist/workers/solidity.js +1366 -0
- package/dist/workers/sophia.contribution.js +8 -0
- package/dist/workers/sophia.js +198 -0
- package/dist/workers/sortLinesCommand.js +81 -0
- package/dist/workers/sparql.contribution.js +8 -0
- package/dist/workers/sparql.js +200 -0
- package/dist/workers/sparseMultilineTokens.js +548 -0
- package/dist/workers/sparseTokensStore.js +210 -0
- package/dist/workers/splice.js +14 -0
- package/dist/workers/splitview.js +829 -0
- package/dist/workers/sql.contribution.js +8 -0
- package/dist/workers/sql.js +852 -0
- package/dist/workers/st.contribution.js +8 -0
- package/dist/workers/st.js +415 -0
- package/dist/workers/stableEditorScroll.js +52 -0
- package/dist/workers/standaloneCodeEditor.js +335 -0
- package/dist/workers/standaloneCodeEditorService.js +96 -0
- package/dist/workers/standaloneColorPickerActions.js +81 -0
- package/dist/workers/standaloneColorPickerController.js +62 -0
- package/dist/workers/standaloneColorPickerParticipant.js +117 -0
- package/dist/workers/standaloneColorPickerWidget.js +215 -0
- package/dist/workers/standaloneCommandsQuickAccess.js +82 -0
- package/dist/workers/standaloneEditor.js +519 -0
- package/dist/workers/standaloneEnums.js +1017 -0
- package/dist/workers/standaloneGotoLineQuickAccess.js +67 -0
- package/dist/workers/standaloneGotoSymbolQuickAccess.js +77 -0
- package/dist/workers/standaloneHelpQuickAccess.js +14 -0
- package/dist/workers/standaloneLanguages.js +621 -0
- package/dist/workers/standaloneLayoutService.js +74 -0
- package/dist/workers/standaloneQuickInputService.js +150 -0
- package/dist/workers/standaloneReferenceSearch.js +38 -0
- package/dist/workers/standaloneServices.js +787 -0
- package/dist/workers/standaloneStrings.js +42 -0
- package/dist/workers/standaloneTheme.js +9 -0
- package/dist/workers/standaloneThemeService.js +367 -0
- package/dist/workers/standaloneTreeSitterLibraryService.js +23 -0
- package/dist/workers/standaloneWebWorker.js +55 -0
- package/dist/workers/stickyScrollActions.js +132 -0
- package/dist/workers/stickyScrollContribution.js +16 -0
- package/dist/workers/stickyScrollController.js +566 -0
- package/dist/workers/stickyScrollElement.js +39 -0
- package/dist/workers/stickyScrollModelProvider.js +338 -0
- package/dist/workers/stickyScrollProvider.js +197 -0
- package/dist/workers/stickyScrollWidget.js +474 -0
- package/dist/workers/stopwatch.js +30 -0
- package/dist/workers/storage.js +200 -0
- package/dist/workers/stringBuilder.js +122 -0
- package/dist/workers/stringEdit.js +165 -0
- package/dist/workers/strings.js +834 -0
- package/dist/workers/structuredLogger.js +56 -0
- package/dist/workers/suggest.js +322 -0
- package/dist/workers/suggestAlternatives.js +95 -0
- package/dist/workers/suggestCommitCharacters.js +59 -0
- package/dist/workers/suggestController.js +941 -0
- package/dist/workers/suggestInlineCompletions.js +193 -0
- package/dist/workers/suggestMemory.js +254 -0
- package/dist/workers/suggestModel.js +667 -0
- package/dist/workers/suggestOvertypingCapturer.js +62 -0
- package/dist/workers/suggestWidget.js +890 -0
- package/dist/workers/suggestWidgetAdapter.js +210 -0
- package/dist/workers/suggestWidgetDetails.js +393 -0
- package/dist/workers/suggestWidgetRenderer.js +208 -0
- package/dist/workers/suggestWidgetStatus.js +74 -0
- package/dist/workers/supports.js +58 -0
- package/dist/workers/surroundSelectionCommand.js +44 -0
- package/dist/workers/swift.contribution.js +9 -0
- package/dist/workers/swift.js +311 -0
- package/dist/workers/symbolIcons.js +101 -0
- package/dist/workers/symbolNavigation.js +178 -0
- package/dist/workers/symbols.js +10 -0
- package/dist/workers/syntaxRangeProvider.js +177 -0
- package/dist/workers/systemverilog.contribution.js +14 -0
- package/dist/workers/systemverilog.js +575 -0
- package/dist/workers/tabFocus.js +29 -0
- package/dist/workers/tableWidget.js +181 -0
- package/dist/workers/taskQueue.js +116 -0
- package/dist/workers/tcl.contribution.js +8 -0
- package/dist/workers/tcl.js +231 -0
- package/dist/workers/telemetry.js +9 -0
- package/dist/workers/ternarySearchTree.js +674 -0
- package/dist/workers/textAreaEditContext.js +720 -0
- package/dist/workers/textAreaEditContextInput.js +588 -0
- package/dist/workers/textAreaEditContextState.js +160 -0
- package/dist/workers/textChange.js +248 -0
- package/dist/workers/textEdit.js +269 -0
- package/dist/workers/textLength.js +87 -0
- package/dist/workers/textModel.js +2031 -0
- package/dist/workers/textModelBracketPairs.js +45 -0
- package/dist/workers/textModelDefaults.js +18 -0
- package/dist/workers/textModelEditSource.js +166 -0
- package/dist/workers/textModelEvents.js +216 -0
- package/dist/workers/textModelGuides.js +40 -0
- package/dist/workers/textModelPart.js +23 -0
- package/dist/workers/textModelSearch.js +455 -0
- package/dist/workers/textModelStringEdit.js +11 -0
- package/dist/workers/textModelSync.impl.js +307 -0
- package/dist/workers/textModelText.js +26 -0
- package/dist/workers/textModelTokens.js +436 -0
- package/dist/workers/textResourceConfiguration.js +6 -0
- package/dist/workers/textToHtmlTokenizer.js +139 -0
- package/dist/workers/textualHighlightProvider.js +78 -0
- package/dist/workers/textureAtlas.js +179 -0
- package/dist/workers/textureAtlasPage.js +110 -0
- package/dist/workers/textureAtlasShelfAllocator.js +129 -0
- package/dist/workers/textureAtlasSlabAllocator.js +346 -0
- package/dist/workers/tfIdf.js +179 -0
- package/dist/workers/themables.js +100 -0
- package/dist/workers/theme.js +110 -0
- package/dist/workers/themeService.js +67 -0
- package/dist/workers/themes.js +242 -0
- package/dist/workers/toggle.js +242 -0
- package/dist/workers/toggleHighContrast.js +35 -0
- package/dist/workers/toggleTabFocusMode.js +42 -0
- package/dist/workers/tokenStore.js +407 -0
- package/dist/workers/tokenWithTextArray.js +73 -0
- package/dist/workers/tokenization.js +29 -0
- package/dist/workers/tokenizationRegistry.js +123 -0
- package/dist/workers/tokenizationTextModelPart.js +275 -0
- package/dist/workers/tokenizer.js +301 -0
- package/dist/workers/tokenizerSyntaxTokenBackend.js +261 -0
- package/dist/workers/toolbar.js +244 -0
- package/dist/workers/touch.js +270 -0
- package/dist/workers/transaction.js +109 -0
- package/dist/workers/transpose.js +65 -0
- package/dist/workers/tree.js +45 -0
- package/dist/workers/treeSitterLibraryService.js +9 -0
- package/dist/workers/treeSitterSyntaxTokenBackend.js +167 -0
- package/dist/workers/treeSitterThemeService.js +9 -0
- package/dist/workers/treeSitterTokenizationImpl.js +713 -0
- package/dist/workers/treeSitterTree.js +395 -0
- package/dist/workers/treeViewsDnd.js +24 -0
- package/dist/workers/treeViewsDndService.js +12 -0
- package/dist/workers/triggerInlineEditCommandsRegistry.js +18 -0
- package/dist/workers/trimTrailingWhitespaceCommand.js +98 -0
- package/dist/workers/trustedTypes.js +29 -0
- package/dist/workers/tsMode.js +212 -0
- package/dist/workers/tsWorker.js +352 -0
- package/dist/workers/twig.contribution.js +9 -0
- package/dist/workers/twig.js +391 -0
- package/dist/workers/types.js +144 -0
- package/dist/workers/typescript.contribution.js +11 -0
- package/dist/workers/typescript.js +408 -0
- package/dist/workers/typescriptServices.js +210154 -0
- package/dist/workers/typescriptServicesMetadata.js +3 -0
- package/dist/workers/typespec.contribution.js +8 -0
- package/dist/workers/typespec.js +126 -0
- package/dist/workers/typingSpeed.js +165 -0
- package/dist/workers/uint.js +24 -0
- package/dist/workers/undoRedo.js +43 -0
- package/dist/workers/undoRedoService.js +1076 -0
- package/dist/workers/unicodeHighlighter.js +673 -0
- package/dist/workers/unicodeTextModelHighlighter.js +188 -0
- package/dist/workers/unusualLineTerminators.js +113 -0
- package/dist/workers/updatableHoverWidget.js +107 -0
- package/dist/workers/uri.js +606 -0
- package/dist/workers/usLayoutResolvedKeybinding.js +175 -0
- package/dist/workers/utils.js +209 -0
- package/dist/workers/utilsCancellation.js +63 -0
- package/dist/workers/uuid.js +53 -0
- package/dist/workers/validation.js +159 -0
- package/dist/workers/vb.contribution.js +8 -0
- package/dist/workers/vb.js +371 -0
- package/dist/workers/verticalScrollbar.js +94 -0
- package/dist/workers/view.js +720 -0
- package/dist/workers/viewContext.js +22 -0
- package/dist/workers/viewController.js +274 -0
- package/dist/workers/viewCursor.js +218 -0
- package/dist/workers/viewCursors.js +339 -0
- package/dist/workers/viewEventHandler.js +186 -0
- package/dist/workers/viewEvents.js +180 -0
- package/dist/workers/viewGpuContext.js +241 -0
- package/dist/workers/viewLayer.js +478 -0
- package/dist/workers/viewLayout.js +368 -0
- package/dist/workers/viewLine.js +544 -0
- package/dist/workers/viewLineOptions.js +43 -0
- package/dist/workers/viewLineRenderer.js +948 -0
- package/dist/workers/viewLines.js +721 -0
- package/dist/workers/viewLinesGpu.js +571 -0
- package/dist/workers/viewLinesViewportData.js +30 -0
- package/dist/workers/viewModel.js +98 -0
- package/dist/workers/viewModelDecoration.js +55 -0
- package/dist/workers/viewModelDecorations.js +132 -0
- package/dist/workers/viewModelEventDispatcher.js +398 -0
- package/dist/workers/viewModelImpl.js +1163 -0
- package/dist/workers/viewModelLines.js +938 -0
- package/dist/workers/viewOverlays.js +204 -0
- package/dist/workers/viewPart.js +49 -0
- package/dist/workers/viewUserInputEvents.js +91 -0
- package/dist/workers/viewZones.js +335 -0
- package/dist/workers/viewportRenderStrategy.js +316 -0
- package/dist/workers/viewportSemanticTokens.js +166 -0
- package/dist/workers/webWorker.js +396 -0
- package/dist/workers/webWorkerBootstrap.js +20 -0
- package/dist/workers/webWorkerFactory.js +171 -0
- package/dist/workers/wgsl.contribution.js +8 -0
- package/dist/workers/wgsl.js +452 -0
- package/dist/workers/whitespace.js +277 -0
- package/dist/workers/widget.js +44 -0
- package/dist/workers/window.js +60 -0
- package/dist/workers/wordCharacterClassifier.js +87 -0
- package/dist/workers/wordContextKey.js +69 -0
- package/dist/workers/wordDistance.js +64 -0
- package/dist/workers/wordHelper.js +127 -0
- package/dist/workers/wordHighlighter.js +796 -0
- package/dist/workers/wordOperations.js +442 -0
- package/dist/workers/wordPartOperations.js +145 -0
- package/dist/workers/wordSelections.js +82 -0
- package/dist/workers/workerManager.js +147 -0
- package/dist/workers/workers.js +141 -0
- package/dist/workers/workspace.js +84 -0
- package/dist/workers/workspaceTrust.js +9 -0
- package/dist/workers/wrapInHotClass.js +41 -0
- package/dist/workers/wrapInReloadableClass.js +35 -0
- package/dist/workers/xml.contribution.js +28 -0
- package/dist/workers/xml.js +160 -0
- package/dist/workers/yaml.contribution.js +9 -0
- package/dist/workers/yaml.js +271 -0
- package/dist/workers/zoneWidget.js +406 -0
- package/package.json +2 -2
- package/dist/assets/css.worker-C7FogG4G.js +0 -93
- package/dist/assets/editor.worker-iXcRX1Tq.js +0 -26
- package/dist/assets/html.worker-C8VxctEJ.js +0 -470
- package/dist/assets/json.worker-CMC9kgPL.js +0 -58
- package/dist/assets/ts.worker-CtTJ3hNN.js +0 -67731
|
@@ -0,0 +1,1454 @@
|
|
|
1
|
+
import './browser.js';
|
|
2
|
+
import { BrowserFeatures } from './canIUse.js';
|
|
3
|
+
import { StandardKeyboardEvent } from './keyboardEvent.js';
|
|
4
|
+
import { StandardMouseEvent } from './mouseEvent.js';
|
|
5
|
+
import { IntervalTimer, _runWhenIdle, AbstractIdleValue } from '../common/async.js';
|
|
6
|
+
import { BugIndicatingError, onUnexpectedError } from '../common/errors.js';
|
|
7
|
+
import { Emitter, Event } from '../common/event.js';
|
|
8
|
+
import { DisposableStore, Disposable, toDisposable } from '../common/lifecycle.js';
|
|
9
|
+
import { RemoteAuthorities } from '../common/network.js';
|
|
10
|
+
import { isIOS } from '../common/platform.js';
|
|
11
|
+
import { hash } from '../common/hash.js';
|
|
12
|
+
import { ensureCodeWindow, mainWindow } from './window.js';
|
|
13
|
+
import '../common/observableInternal/index.js';
|
|
14
|
+
import { observableValue } from '../common/observableInternal/observables/observableValue.js';
|
|
15
|
+
import { derived, derivedOpts } from '../common/observableInternal/observables/derived.js';
|
|
16
|
+
|
|
17
|
+
/*---------------------------------------------------------------------------------------------
|
|
18
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
19
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
20
|
+
*--------------------------------------------------------------------------------------------*/
|
|
21
|
+
//# region Multi-Window Support Utilities
|
|
22
|
+
const { getWindow, getDocument, getWindows, getWindowsCount, getWindowId, getWindowById, onDidRegisterWindow, onWillUnregisterWindow, onDidUnregisterWindow } = (function () {
|
|
23
|
+
const windows = new Map();
|
|
24
|
+
ensureCodeWindow(mainWindow, 1);
|
|
25
|
+
const mainWindowRegistration = { window: mainWindow, disposables: new DisposableStore() };
|
|
26
|
+
windows.set(mainWindow.vscodeWindowId, mainWindowRegistration);
|
|
27
|
+
const onDidRegisterWindow = new Emitter();
|
|
28
|
+
const onDidUnregisterWindow = new Emitter();
|
|
29
|
+
const onWillUnregisterWindow = new Emitter();
|
|
30
|
+
function getWindowById(windowId, fallbackToMain) {
|
|
31
|
+
const window = typeof windowId === 'number' ? windows.get(windowId) : undefined;
|
|
32
|
+
return window ?? (fallbackToMain ? mainWindowRegistration : undefined);
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
onDidRegisterWindow: onDidRegisterWindow.event,
|
|
36
|
+
onWillUnregisterWindow: onWillUnregisterWindow.event,
|
|
37
|
+
onDidUnregisterWindow: onDidUnregisterWindow.event,
|
|
38
|
+
registerWindow(window) {
|
|
39
|
+
if (windows.has(window.vscodeWindowId)) {
|
|
40
|
+
return Disposable.None;
|
|
41
|
+
}
|
|
42
|
+
const disposables = new DisposableStore();
|
|
43
|
+
const registeredWindow = {
|
|
44
|
+
window,
|
|
45
|
+
disposables: disposables.add(new DisposableStore())
|
|
46
|
+
};
|
|
47
|
+
windows.set(window.vscodeWindowId, registeredWindow);
|
|
48
|
+
disposables.add(toDisposable(() => {
|
|
49
|
+
windows.delete(window.vscodeWindowId);
|
|
50
|
+
onDidUnregisterWindow.fire(window);
|
|
51
|
+
}));
|
|
52
|
+
disposables.add(addDisposableListener(window, EventType.BEFORE_UNLOAD, () => {
|
|
53
|
+
onWillUnregisterWindow.fire(window);
|
|
54
|
+
}));
|
|
55
|
+
onDidRegisterWindow.fire(registeredWindow);
|
|
56
|
+
return disposables;
|
|
57
|
+
},
|
|
58
|
+
getWindows() {
|
|
59
|
+
return windows.values();
|
|
60
|
+
},
|
|
61
|
+
getWindowsCount() {
|
|
62
|
+
return windows.size;
|
|
63
|
+
},
|
|
64
|
+
getWindowId(targetWindow) {
|
|
65
|
+
return targetWindow.vscodeWindowId;
|
|
66
|
+
},
|
|
67
|
+
hasWindow(windowId) {
|
|
68
|
+
return windows.has(windowId);
|
|
69
|
+
},
|
|
70
|
+
getWindowById,
|
|
71
|
+
getWindow(e) {
|
|
72
|
+
const candidateNode = e;
|
|
73
|
+
if (candidateNode?.ownerDocument?.defaultView) {
|
|
74
|
+
return candidateNode.ownerDocument.defaultView.window;
|
|
75
|
+
}
|
|
76
|
+
const candidateEvent = e;
|
|
77
|
+
if (candidateEvent?.view) {
|
|
78
|
+
return candidateEvent.view.window;
|
|
79
|
+
}
|
|
80
|
+
return mainWindow;
|
|
81
|
+
},
|
|
82
|
+
getDocument(e) {
|
|
83
|
+
const candidateNode = e;
|
|
84
|
+
return getWindow(candidateNode).document;
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
})();
|
|
88
|
+
//#endregion
|
|
89
|
+
function clearNode(node) {
|
|
90
|
+
while (node.firstChild) {
|
|
91
|
+
node.firstChild.remove();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
class DomListener {
|
|
95
|
+
constructor(node, type, handler, options) {
|
|
96
|
+
this._node = node;
|
|
97
|
+
this._type = type;
|
|
98
|
+
this._handler = handler;
|
|
99
|
+
this._options = (options || false);
|
|
100
|
+
this._node.addEventListener(this._type, this._handler, this._options);
|
|
101
|
+
}
|
|
102
|
+
dispose() {
|
|
103
|
+
if (!this._handler) {
|
|
104
|
+
// Already disposed
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
this._node.removeEventListener(this._type, this._handler, this._options);
|
|
108
|
+
// Prevent leakers from holding on to the dom or handler func
|
|
109
|
+
this._node = null;
|
|
110
|
+
this._handler = null;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
function addDisposableListener(node, type, handler, useCaptureOrOptions) {
|
|
114
|
+
return new DomListener(node, type, handler, useCaptureOrOptions);
|
|
115
|
+
}
|
|
116
|
+
function _wrapAsStandardMouseEvent(targetWindow, handler) {
|
|
117
|
+
return function (e) {
|
|
118
|
+
return handler(new StandardMouseEvent(targetWindow, e));
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
function _wrapAsStandardKeyboardEvent(handler) {
|
|
122
|
+
return function (e) {
|
|
123
|
+
return handler(new StandardKeyboardEvent(e));
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
const addStandardDisposableListener = function addStandardDisposableListener(node, type, handler, useCapture) {
|
|
127
|
+
let wrapHandler = handler;
|
|
128
|
+
if (type === 'click' || type === 'mousedown' || type === 'contextmenu') {
|
|
129
|
+
wrapHandler = _wrapAsStandardMouseEvent(getWindow(node), handler);
|
|
130
|
+
}
|
|
131
|
+
else if (type === 'keydown' || type === 'keypress' || type === 'keyup') {
|
|
132
|
+
wrapHandler = _wrapAsStandardKeyboardEvent(handler);
|
|
133
|
+
}
|
|
134
|
+
return addDisposableListener(node, type, wrapHandler, useCapture);
|
|
135
|
+
};
|
|
136
|
+
const addStandardDisposableGenericMouseDownListener = function addStandardDisposableListener(node, handler, useCapture) {
|
|
137
|
+
const wrapHandler = _wrapAsStandardMouseEvent(getWindow(node), handler);
|
|
138
|
+
return addDisposableGenericMouseDownListener(node, wrapHandler, useCapture);
|
|
139
|
+
};
|
|
140
|
+
function addDisposableGenericMouseDownListener(node, handler, useCapture) {
|
|
141
|
+
return addDisposableListener(node, isIOS && BrowserFeatures.pointerEvents ? EventType.POINTER_DOWN : EventType.MOUSE_DOWN, handler, useCapture);
|
|
142
|
+
}
|
|
143
|
+
function addDisposableGenericMouseMoveListener(node, handler, useCapture) {
|
|
144
|
+
return addDisposableListener(node, isIOS && BrowserFeatures.pointerEvents ? EventType.POINTER_MOVE : EventType.MOUSE_MOVE, handler, useCapture);
|
|
145
|
+
}
|
|
146
|
+
function addDisposableGenericMouseUpListener(node, handler, useCapture) {
|
|
147
|
+
return addDisposableListener(node, isIOS && BrowserFeatures.pointerEvents ? EventType.POINTER_UP : EventType.MOUSE_UP, handler, useCapture);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Execute the callback the next time the browser is idle, returning an
|
|
151
|
+
* {@link IDisposable} that will cancel the callback when disposed. This wraps
|
|
152
|
+
* [requestIdleCallback] so it will fallback to [setTimeout] if the environment
|
|
153
|
+
* doesn't support it.
|
|
154
|
+
*
|
|
155
|
+
* @param targetWindow The window for which to run the idle callback
|
|
156
|
+
* @param callback The callback to run when idle, this includes an
|
|
157
|
+
* [IdleDeadline] that provides the time alloted for the idle callback by the
|
|
158
|
+
* browser. Not respecting this deadline will result in a degraded user
|
|
159
|
+
* experience.
|
|
160
|
+
* @param timeout A timeout at which point to queue no longer wait for an idle
|
|
161
|
+
* callback but queue it on the regular event loop (like setTimeout). Typically
|
|
162
|
+
* this should not be used.
|
|
163
|
+
*
|
|
164
|
+
* [IdleDeadline]: https://developer.mozilla.org/en-US/docs/Web/API/IdleDeadline
|
|
165
|
+
* [requestIdleCallback]: https://developer.mozilla.org/en-US/docs/Web/API/Window/requestIdleCallback
|
|
166
|
+
* [setTimeout]: https://developer.mozilla.org/en-US/docs/Web/API/Window/setTimeout
|
|
167
|
+
*/
|
|
168
|
+
function runWhenWindowIdle(targetWindow, callback, timeout) {
|
|
169
|
+
return _runWhenIdle(targetWindow, callback, timeout);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* An implementation of the "idle-until-urgent"-strategy as introduced
|
|
173
|
+
* here: https://philipwalton.com/articles/idle-until-urgent/
|
|
174
|
+
*/
|
|
175
|
+
class WindowIdleValue extends AbstractIdleValue {
|
|
176
|
+
constructor(targetWindow, executor) {
|
|
177
|
+
super(targetWindow, executor);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Schedule a callback to be run at the next animation frame.
|
|
182
|
+
* This allows multiple parties to register callbacks that should run at the next animation frame.
|
|
183
|
+
* If currently in an animation frame, `runner` will be executed immediately.
|
|
184
|
+
* @return token that can be used to cancel the scheduled runner (only if `runner` was not executed immediately).
|
|
185
|
+
*/
|
|
186
|
+
let runAtThisOrScheduleAtNextAnimationFrame;
|
|
187
|
+
/**
|
|
188
|
+
* Schedule a callback to be run at the next animation frame.
|
|
189
|
+
* This allows multiple parties to register callbacks that should run at the next animation frame.
|
|
190
|
+
* If currently in an animation frame, `runner` will be executed at the next animation frame.
|
|
191
|
+
* @return token that can be used to cancel the scheduled runner.
|
|
192
|
+
*/
|
|
193
|
+
let scheduleAtNextAnimationFrame;
|
|
194
|
+
class WindowIntervalTimer extends IntervalTimer {
|
|
195
|
+
/**
|
|
196
|
+
*
|
|
197
|
+
* @param node The optional node from which the target window is determined
|
|
198
|
+
*/
|
|
199
|
+
constructor(node) {
|
|
200
|
+
super();
|
|
201
|
+
this.defaultTarget = node && getWindow(node);
|
|
202
|
+
}
|
|
203
|
+
cancelAndSet(runner, interval, targetWindow) {
|
|
204
|
+
return super.cancelAndSet(runner, interval, targetWindow ?? this.defaultTarget);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
class AnimationFrameQueueItem {
|
|
208
|
+
constructor(runner, priority = 0) {
|
|
209
|
+
this._runner = runner;
|
|
210
|
+
this.priority = priority;
|
|
211
|
+
this._canceled = false;
|
|
212
|
+
}
|
|
213
|
+
dispose() {
|
|
214
|
+
this._canceled = true;
|
|
215
|
+
}
|
|
216
|
+
execute() {
|
|
217
|
+
if (this._canceled) {
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
try {
|
|
221
|
+
this._runner();
|
|
222
|
+
}
|
|
223
|
+
catch (e) {
|
|
224
|
+
onUnexpectedError(e);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
// Sort by priority (largest to lowest)
|
|
228
|
+
static sort(a, b) {
|
|
229
|
+
return b.priority - a.priority;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
(function () {
|
|
233
|
+
/**
|
|
234
|
+
* The runners scheduled at the next animation frame
|
|
235
|
+
*/
|
|
236
|
+
const NEXT_QUEUE = new Map();
|
|
237
|
+
/**
|
|
238
|
+
* The runners scheduled at the current animation frame
|
|
239
|
+
*/
|
|
240
|
+
const CURRENT_QUEUE = new Map();
|
|
241
|
+
/**
|
|
242
|
+
* A flag to keep track if the native requestAnimationFrame was already called
|
|
243
|
+
*/
|
|
244
|
+
const animFrameRequested = new Map();
|
|
245
|
+
/**
|
|
246
|
+
* A flag to indicate if currently handling a native requestAnimationFrame callback
|
|
247
|
+
*/
|
|
248
|
+
const inAnimationFrameRunner = new Map();
|
|
249
|
+
const animationFrameRunner = (targetWindowId) => {
|
|
250
|
+
animFrameRequested.set(targetWindowId, false);
|
|
251
|
+
const currentQueue = NEXT_QUEUE.get(targetWindowId) ?? [];
|
|
252
|
+
CURRENT_QUEUE.set(targetWindowId, currentQueue);
|
|
253
|
+
NEXT_QUEUE.set(targetWindowId, []);
|
|
254
|
+
inAnimationFrameRunner.set(targetWindowId, true);
|
|
255
|
+
while (currentQueue.length > 0) {
|
|
256
|
+
currentQueue.sort(AnimationFrameQueueItem.sort);
|
|
257
|
+
const top = currentQueue.shift();
|
|
258
|
+
top.execute();
|
|
259
|
+
}
|
|
260
|
+
inAnimationFrameRunner.set(targetWindowId, false);
|
|
261
|
+
};
|
|
262
|
+
scheduleAtNextAnimationFrame = (targetWindow, runner, priority = 0) => {
|
|
263
|
+
const targetWindowId = getWindowId(targetWindow);
|
|
264
|
+
const item = new AnimationFrameQueueItem(runner, priority);
|
|
265
|
+
let nextQueue = NEXT_QUEUE.get(targetWindowId);
|
|
266
|
+
if (!nextQueue) {
|
|
267
|
+
nextQueue = [];
|
|
268
|
+
NEXT_QUEUE.set(targetWindowId, nextQueue);
|
|
269
|
+
}
|
|
270
|
+
nextQueue.push(item);
|
|
271
|
+
if (!animFrameRequested.get(targetWindowId)) {
|
|
272
|
+
animFrameRequested.set(targetWindowId, true);
|
|
273
|
+
targetWindow.requestAnimationFrame(() => animationFrameRunner(targetWindowId));
|
|
274
|
+
}
|
|
275
|
+
return item;
|
|
276
|
+
};
|
|
277
|
+
runAtThisOrScheduleAtNextAnimationFrame = (targetWindow, runner, priority) => {
|
|
278
|
+
const targetWindowId = getWindowId(targetWindow);
|
|
279
|
+
if (inAnimationFrameRunner.get(targetWindowId)) {
|
|
280
|
+
const item = new AnimationFrameQueueItem(runner, priority);
|
|
281
|
+
let currentQueue = CURRENT_QUEUE.get(targetWindowId);
|
|
282
|
+
if (!currentQueue) {
|
|
283
|
+
currentQueue = [];
|
|
284
|
+
CURRENT_QUEUE.set(targetWindowId, currentQueue);
|
|
285
|
+
}
|
|
286
|
+
currentQueue.push(item);
|
|
287
|
+
return item;
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
return scheduleAtNextAnimationFrame(targetWindow, runner, priority);
|
|
291
|
+
}
|
|
292
|
+
};
|
|
293
|
+
})();
|
|
294
|
+
function getComputedStyle(el) {
|
|
295
|
+
return getWindow(el).getComputedStyle(el, null);
|
|
296
|
+
}
|
|
297
|
+
function getClientArea(element, defaultValue, fallbackElement) {
|
|
298
|
+
const elWindow = getWindow(element);
|
|
299
|
+
const elDocument = elWindow.document;
|
|
300
|
+
// Try with DOM clientWidth / clientHeight
|
|
301
|
+
if (element !== elDocument.body) {
|
|
302
|
+
return new Dimension(element.clientWidth, element.clientHeight);
|
|
303
|
+
}
|
|
304
|
+
// 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
|
|
305
|
+
if (isIOS && elWindow?.visualViewport) {
|
|
306
|
+
return new Dimension(elWindow.visualViewport.width, elWindow.visualViewport.height);
|
|
307
|
+
}
|
|
308
|
+
// Try innerWidth / innerHeight
|
|
309
|
+
if (elWindow?.innerWidth && elWindow.innerHeight) {
|
|
310
|
+
return new Dimension(elWindow.innerWidth, elWindow.innerHeight);
|
|
311
|
+
}
|
|
312
|
+
// Try with document.body.clientWidth / document.body.clientHeight
|
|
313
|
+
if (elDocument.body && elDocument.body.clientWidth && elDocument.body.clientHeight) {
|
|
314
|
+
return new Dimension(elDocument.body.clientWidth, elDocument.body.clientHeight);
|
|
315
|
+
}
|
|
316
|
+
// Try with document.documentElement.clientWidth / document.documentElement.clientHeight
|
|
317
|
+
if (elDocument.documentElement && elDocument.documentElement.clientWidth && elDocument.documentElement.clientHeight) {
|
|
318
|
+
return new Dimension(elDocument.documentElement.clientWidth, elDocument.documentElement.clientHeight);
|
|
319
|
+
}
|
|
320
|
+
throw new Error('Unable to figure out browser width and height');
|
|
321
|
+
}
|
|
322
|
+
class SizeUtils {
|
|
323
|
+
// Adapted from WinJS
|
|
324
|
+
// Converts a CSS positioning string for the specified element to pixels.
|
|
325
|
+
static convertToPixels(element, value) {
|
|
326
|
+
return parseFloat(value) || 0;
|
|
327
|
+
}
|
|
328
|
+
static getDimension(element, cssPropertyName) {
|
|
329
|
+
const computedStyle = getComputedStyle(element);
|
|
330
|
+
const value = computedStyle ? computedStyle.getPropertyValue(cssPropertyName) : '0';
|
|
331
|
+
return SizeUtils.convertToPixels(element, value);
|
|
332
|
+
}
|
|
333
|
+
static getBorderLeftWidth(element) {
|
|
334
|
+
return SizeUtils.getDimension(element, 'border-left-width');
|
|
335
|
+
}
|
|
336
|
+
static getBorderRightWidth(element) {
|
|
337
|
+
return SizeUtils.getDimension(element, 'border-right-width');
|
|
338
|
+
}
|
|
339
|
+
static getBorderTopWidth(element) {
|
|
340
|
+
return SizeUtils.getDimension(element, 'border-top-width');
|
|
341
|
+
}
|
|
342
|
+
static getBorderBottomWidth(element) {
|
|
343
|
+
return SizeUtils.getDimension(element, 'border-bottom-width');
|
|
344
|
+
}
|
|
345
|
+
static getPaddingLeft(element) {
|
|
346
|
+
return SizeUtils.getDimension(element, 'padding-left');
|
|
347
|
+
}
|
|
348
|
+
static getPaddingRight(element) {
|
|
349
|
+
return SizeUtils.getDimension(element, 'padding-right');
|
|
350
|
+
}
|
|
351
|
+
static getPaddingTop(element) {
|
|
352
|
+
return SizeUtils.getDimension(element, 'padding-top');
|
|
353
|
+
}
|
|
354
|
+
static getPaddingBottom(element) {
|
|
355
|
+
return SizeUtils.getDimension(element, 'padding-bottom');
|
|
356
|
+
}
|
|
357
|
+
static getMarginLeft(element) {
|
|
358
|
+
return SizeUtils.getDimension(element, 'margin-left');
|
|
359
|
+
}
|
|
360
|
+
static getMarginTop(element) {
|
|
361
|
+
return SizeUtils.getDimension(element, 'margin-top');
|
|
362
|
+
}
|
|
363
|
+
static getMarginRight(element) {
|
|
364
|
+
return SizeUtils.getDimension(element, 'margin-right');
|
|
365
|
+
}
|
|
366
|
+
static getMarginBottom(element) {
|
|
367
|
+
return SizeUtils.getDimension(element, 'margin-bottom');
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
class Dimension {
|
|
371
|
+
static { this.None = new Dimension(0, 0); }
|
|
372
|
+
constructor(width, height) {
|
|
373
|
+
this.width = width;
|
|
374
|
+
this.height = height;
|
|
375
|
+
}
|
|
376
|
+
with(width = this.width, height = this.height) {
|
|
377
|
+
if (width !== this.width || height !== this.height) {
|
|
378
|
+
return new Dimension(width, height);
|
|
379
|
+
}
|
|
380
|
+
else {
|
|
381
|
+
return this;
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
static is(obj) {
|
|
385
|
+
return typeof obj === 'object' && typeof obj.height === 'number' && typeof obj.width === 'number';
|
|
386
|
+
}
|
|
387
|
+
static lift(obj) {
|
|
388
|
+
if (obj instanceof Dimension) {
|
|
389
|
+
return obj;
|
|
390
|
+
}
|
|
391
|
+
else {
|
|
392
|
+
return new Dimension(obj.width, obj.height);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
static equals(a, b) {
|
|
396
|
+
if (a === b) {
|
|
397
|
+
return true;
|
|
398
|
+
}
|
|
399
|
+
if (!a || !b) {
|
|
400
|
+
return false;
|
|
401
|
+
}
|
|
402
|
+
return a.width === b.width && a.height === b.height;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
function getTopLeftOffset(element) {
|
|
406
|
+
// Adapted from WinJS.Utilities.getPosition
|
|
407
|
+
// and added borders to the mix
|
|
408
|
+
let offsetParent = element.offsetParent;
|
|
409
|
+
let top = element.offsetTop;
|
|
410
|
+
let left = element.offsetLeft;
|
|
411
|
+
while ((element = element.parentNode) !== null
|
|
412
|
+
&& element !== element.ownerDocument.body
|
|
413
|
+
&& element !== element.ownerDocument.documentElement) {
|
|
414
|
+
top -= element.scrollTop;
|
|
415
|
+
const c = isShadowRoot(element) ? null : getComputedStyle(element);
|
|
416
|
+
if (c) {
|
|
417
|
+
left -= c.direction !== 'rtl' ? element.scrollLeft : -element.scrollLeft;
|
|
418
|
+
}
|
|
419
|
+
if (element === offsetParent) {
|
|
420
|
+
left += SizeUtils.getBorderLeftWidth(element);
|
|
421
|
+
top += SizeUtils.getBorderTopWidth(element);
|
|
422
|
+
top += element.offsetTop;
|
|
423
|
+
left += element.offsetLeft;
|
|
424
|
+
offsetParent = element.offsetParent;
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
return {
|
|
428
|
+
left: left,
|
|
429
|
+
top: top
|
|
430
|
+
};
|
|
431
|
+
}
|
|
432
|
+
function size(element, width, height) {
|
|
433
|
+
if (typeof width === 'number') {
|
|
434
|
+
element.style.width = `${width}px`;
|
|
435
|
+
}
|
|
436
|
+
if (typeof height === 'number') {
|
|
437
|
+
element.style.height = `${height}px`;
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Returns the position of a dom node relative to the entire page.
|
|
442
|
+
*/
|
|
443
|
+
function getDomNodePagePosition(domNode) {
|
|
444
|
+
const bb = domNode.getBoundingClientRect();
|
|
445
|
+
const window = getWindow(domNode);
|
|
446
|
+
return {
|
|
447
|
+
left: bb.left + window.scrollX,
|
|
448
|
+
top: bb.top + window.scrollY,
|
|
449
|
+
width: bb.width,
|
|
450
|
+
height: bb.height
|
|
451
|
+
};
|
|
452
|
+
}
|
|
453
|
+
/**
|
|
454
|
+
* Returns the effective zoom on a given element before window zoom level is applied
|
|
455
|
+
*/
|
|
456
|
+
function getDomNodeZoomLevel(domNode) {
|
|
457
|
+
let testElement = domNode;
|
|
458
|
+
let zoom = 1.0;
|
|
459
|
+
do {
|
|
460
|
+
// eslint-disable-next-line local/code-no-any-casts
|
|
461
|
+
const elementZoomLevel = getComputedStyle(testElement).zoom;
|
|
462
|
+
if (elementZoomLevel !== null && elementZoomLevel !== undefined && elementZoomLevel !== '1') {
|
|
463
|
+
zoom *= elementZoomLevel;
|
|
464
|
+
}
|
|
465
|
+
testElement = testElement.parentElement;
|
|
466
|
+
} while (testElement !== null && testElement !== testElement.ownerDocument.documentElement);
|
|
467
|
+
return zoom;
|
|
468
|
+
}
|
|
469
|
+
// Adapted from WinJS
|
|
470
|
+
// Gets the width of the element, including margins.
|
|
471
|
+
function getTotalWidth(element) {
|
|
472
|
+
const margin = SizeUtils.getMarginLeft(element) + SizeUtils.getMarginRight(element);
|
|
473
|
+
return element.offsetWidth + margin;
|
|
474
|
+
}
|
|
475
|
+
function getContentWidth(element) {
|
|
476
|
+
const border = SizeUtils.getBorderLeftWidth(element) + SizeUtils.getBorderRightWidth(element);
|
|
477
|
+
const padding = SizeUtils.getPaddingLeft(element) + SizeUtils.getPaddingRight(element);
|
|
478
|
+
return element.offsetWidth - border - padding;
|
|
479
|
+
}
|
|
480
|
+
// Adapted from WinJS
|
|
481
|
+
// Gets the height of the content of the specified element. The content height does not include borders or padding.
|
|
482
|
+
function getContentHeight(element) {
|
|
483
|
+
const border = SizeUtils.getBorderTopWidth(element) + SizeUtils.getBorderBottomWidth(element);
|
|
484
|
+
const padding = SizeUtils.getPaddingTop(element) + SizeUtils.getPaddingBottom(element);
|
|
485
|
+
return element.offsetHeight - border - padding;
|
|
486
|
+
}
|
|
487
|
+
// Adapted from WinJS
|
|
488
|
+
// Gets the height of the element, including its margins.
|
|
489
|
+
function getTotalHeight(element) {
|
|
490
|
+
const margin = SizeUtils.getMarginTop(element) + SizeUtils.getMarginBottom(element);
|
|
491
|
+
return element.offsetHeight + margin;
|
|
492
|
+
}
|
|
493
|
+
// ----------------------------------------------------------------------------------------
|
|
494
|
+
function isAncestor(testChild, testAncestor) {
|
|
495
|
+
return Boolean(testAncestor?.contains(testChild));
|
|
496
|
+
}
|
|
497
|
+
function findParentWithClass(node, clazz, stopAtClazzOrNode) {
|
|
498
|
+
while (node && node.nodeType === node.ELEMENT_NODE) {
|
|
499
|
+
if (node.classList.contains(clazz)) {
|
|
500
|
+
return node;
|
|
501
|
+
}
|
|
502
|
+
if (stopAtClazzOrNode) {
|
|
503
|
+
if (typeof stopAtClazzOrNode === 'string') {
|
|
504
|
+
if (node.classList.contains(stopAtClazzOrNode)) {
|
|
505
|
+
return null;
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
else {
|
|
509
|
+
if (node === stopAtClazzOrNode) {
|
|
510
|
+
return null;
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
node = node.parentNode;
|
|
515
|
+
}
|
|
516
|
+
return null;
|
|
517
|
+
}
|
|
518
|
+
function hasParentWithClass(node, clazz, stopAtClazzOrNode) {
|
|
519
|
+
return !!findParentWithClass(node, clazz, stopAtClazzOrNode);
|
|
520
|
+
}
|
|
521
|
+
function isShadowRoot(node) {
|
|
522
|
+
return (node && !!node.host && !!node.mode);
|
|
523
|
+
}
|
|
524
|
+
function isInShadowDOM(domNode) {
|
|
525
|
+
return !!getShadowRoot(domNode);
|
|
526
|
+
}
|
|
527
|
+
function getShadowRoot(domNode) {
|
|
528
|
+
while (domNode.parentNode) {
|
|
529
|
+
if (domNode === domNode.ownerDocument?.body) {
|
|
530
|
+
// reached the body
|
|
531
|
+
return null;
|
|
532
|
+
}
|
|
533
|
+
domNode = domNode.parentNode;
|
|
534
|
+
}
|
|
535
|
+
return isShadowRoot(domNode) ? domNode : null;
|
|
536
|
+
}
|
|
537
|
+
/**
|
|
538
|
+
* Returns the active element across all child windows
|
|
539
|
+
* based on document focus. Falls back to the main
|
|
540
|
+
* window if no window has focus.
|
|
541
|
+
*/
|
|
542
|
+
function getActiveElement() {
|
|
543
|
+
let result = getActiveDocument().activeElement;
|
|
544
|
+
while (result?.shadowRoot) {
|
|
545
|
+
result = result.shadowRoot.activeElement;
|
|
546
|
+
}
|
|
547
|
+
return result;
|
|
548
|
+
}
|
|
549
|
+
/**
|
|
550
|
+
* Returns true if the focused window active element matches
|
|
551
|
+
* the provided element. Falls back to the main window if no
|
|
552
|
+
* window has focus.
|
|
553
|
+
*/
|
|
554
|
+
function isActiveElement(element) {
|
|
555
|
+
return getActiveElement() === element;
|
|
556
|
+
}
|
|
557
|
+
/**
|
|
558
|
+
* Returns true if the focused window active element is contained in
|
|
559
|
+
* `ancestor`. Falls back to the main window if no window has focus.
|
|
560
|
+
*/
|
|
561
|
+
function isAncestorOfActiveElement(ancestor) {
|
|
562
|
+
return isAncestor(getActiveElement(), ancestor);
|
|
563
|
+
}
|
|
564
|
+
/**
|
|
565
|
+
* Returns the active document across main and child windows.
|
|
566
|
+
* Prefers the window with focus, otherwise falls back to
|
|
567
|
+
* the main windows document.
|
|
568
|
+
*/
|
|
569
|
+
function getActiveDocument() {
|
|
570
|
+
if (getWindowsCount() <= 1) {
|
|
571
|
+
return mainWindow.document;
|
|
572
|
+
}
|
|
573
|
+
const documents = Array.from(getWindows()).map(({ window }) => window.document);
|
|
574
|
+
return documents.find(doc => doc.hasFocus()) ?? mainWindow.document;
|
|
575
|
+
}
|
|
576
|
+
/**
|
|
577
|
+
* Returns the active window across main and child windows.
|
|
578
|
+
* Prefers the window with focus, otherwise falls back to
|
|
579
|
+
* the main window.
|
|
580
|
+
*/
|
|
581
|
+
function getActiveWindow() {
|
|
582
|
+
const document = getActiveDocument();
|
|
583
|
+
return (document.defaultView?.window ?? mainWindow);
|
|
584
|
+
}
|
|
585
|
+
const sharedMutationObserver = new class {
|
|
586
|
+
constructor() {
|
|
587
|
+
this.mutationObservers = new Map();
|
|
588
|
+
}
|
|
589
|
+
observe(target, disposables, options) {
|
|
590
|
+
let mutationObserversPerTarget = this.mutationObservers.get(target);
|
|
591
|
+
if (!mutationObserversPerTarget) {
|
|
592
|
+
mutationObserversPerTarget = new Map();
|
|
593
|
+
this.mutationObservers.set(target, mutationObserversPerTarget);
|
|
594
|
+
}
|
|
595
|
+
const optionsHash = hash(options);
|
|
596
|
+
let mutationObserverPerOptions = mutationObserversPerTarget.get(optionsHash);
|
|
597
|
+
if (!mutationObserverPerOptions) {
|
|
598
|
+
const onDidMutate = new Emitter();
|
|
599
|
+
const observer = new MutationObserver(mutations => onDidMutate.fire(mutations));
|
|
600
|
+
observer.observe(target, options);
|
|
601
|
+
const resolvedMutationObserverPerOptions = mutationObserverPerOptions = {
|
|
602
|
+
users: 1,
|
|
603
|
+
observer,
|
|
604
|
+
onDidMutate: onDidMutate.event
|
|
605
|
+
};
|
|
606
|
+
disposables.add(toDisposable(() => {
|
|
607
|
+
resolvedMutationObserverPerOptions.users -= 1;
|
|
608
|
+
if (resolvedMutationObserverPerOptions.users === 0) {
|
|
609
|
+
onDidMutate.dispose();
|
|
610
|
+
observer.disconnect();
|
|
611
|
+
mutationObserversPerTarget?.delete(optionsHash);
|
|
612
|
+
if (mutationObserversPerTarget?.size === 0) {
|
|
613
|
+
this.mutationObservers.delete(target);
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
}));
|
|
617
|
+
mutationObserversPerTarget.set(optionsHash, mutationObserverPerOptions);
|
|
618
|
+
}
|
|
619
|
+
else {
|
|
620
|
+
mutationObserverPerOptions.users += 1;
|
|
621
|
+
}
|
|
622
|
+
return mutationObserverPerOptions.onDidMutate;
|
|
623
|
+
}
|
|
624
|
+
};
|
|
625
|
+
function isHTMLElement(e) {
|
|
626
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
627
|
+
return e instanceof HTMLElement || e instanceof getWindow(e).HTMLElement;
|
|
628
|
+
}
|
|
629
|
+
function isHTMLAnchorElement(e) {
|
|
630
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
631
|
+
return e instanceof HTMLAnchorElement || e instanceof getWindow(e).HTMLAnchorElement;
|
|
632
|
+
}
|
|
633
|
+
function isSVGElement(e) {
|
|
634
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
635
|
+
return e instanceof SVGElement || e instanceof getWindow(e).SVGElement;
|
|
636
|
+
}
|
|
637
|
+
function isMouseEvent(e) {
|
|
638
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
639
|
+
return e instanceof MouseEvent || e instanceof getWindow(e).MouseEvent;
|
|
640
|
+
}
|
|
641
|
+
function isKeyboardEvent(e) {
|
|
642
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
643
|
+
return e instanceof KeyboardEvent || e instanceof getWindow(e).KeyboardEvent;
|
|
644
|
+
}
|
|
645
|
+
const EventType = {
|
|
646
|
+
// Mouse
|
|
647
|
+
CLICK: 'click',
|
|
648
|
+
AUXCLICK: 'auxclick',
|
|
649
|
+
DBLCLICK: 'dblclick',
|
|
650
|
+
MOUSE_UP: 'mouseup',
|
|
651
|
+
MOUSE_DOWN: 'mousedown',
|
|
652
|
+
MOUSE_OVER: 'mouseover',
|
|
653
|
+
MOUSE_MOVE: 'mousemove',
|
|
654
|
+
MOUSE_OUT: 'mouseout',
|
|
655
|
+
MOUSE_ENTER: 'mouseenter',
|
|
656
|
+
MOUSE_LEAVE: 'mouseleave',
|
|
657
|
+
MOUSE_WHEEL: 'wheel',
|
|
658
|
+
POINTER_UP: 'pointerup',
|
|
659
|
+
POINTER_DOWN: 'pointerdown',
|
|
660
|
+
POINTER_MOVE: 'pointermove',
|
|
661
|
+
POINTER_LEAVE: 'pointerleave',
|
|
662
|
+
CONTEXT_MENU: 'contextmenu',
|
|
663
|
+
// Keyboard
|
|
664
|
+
KEY_DOWN: 'keydown',
|
|
665
|
+
KEY_UP: 'keyup',
|
|
666
|
+
BEFORE_UNLOAD: 'beforeunload',
|
|
667
|
+
FOCUS: 'focus',
|
|
668
|
+
FOCUS_IN: 'focusin',
|
|
669
|
+
FOCUS_OUT: 'focusout',
|
|
670
|
+
BLUR: 'blur',
|
|
671
|
+
INPUT: 'input',
|
|
672
|
+
// Drag
|
|
673
|
+
DRAG_START: 'dragstart',
|
|
674
|
+
DRAG: 'drag',
|
|
675
|
+
DRAG_ENTER: 'dragenter',
|
|
676
|
+
DRAG_LEAVE: 'dragleave',
|
|
677
|
+
DRAG_OVER: 'dragover',
|
|
678
|
+
DROP: 'drop',
|
|
679
|
+
DRAG_END: 'dragend'};
|
|
680
|
+
function isEventLike(obj) {
|
|
681
|
+
const candidate = obj;
|
|
682
|
+
return !!(candidate && typeof candidate.preventDefault === 'function' && typeof candidate.stopPropagation === 'function');
|
|
683
|
+
}
|
|
684
|
+
const EventHelper = {
|
|
685
|
+
stop: (e, cancelBubble) => {
|
|
686
|
+
e.preventDefault();
|
|
687
|
+
if (cancelBubble) {
|
|
688
|
+
e.stopPropagation();
|
|
689
|
+
}
|
|
690
|
+
return e;
|
|
691
|
+
}
|
|
692
|
+
};
|
|
693
|
+
function saveParentsScrollTop(node) {
|
|
694
|
+
const r = [];
|
|
695
|
+
for (let i = 0; node && node.nodeType === node.ELEMENT_NODE; i++) {
|
|
696
|
+
r[i] = node.scrollTop;
|
|
697
|
+
node = node.parentNode;
|
|
698
|
+
}
|
|
699
|
+
return r;
|
|
700
|
+
}
|
|
701
|
+
function restoreParentsScrollTop(node, state) {
|
|
702
|
+
for (let i = 0; node && node.nodeType === node.ELEMENT_NODE; i++) {
|
|
703
|
+
if (node.scrollTop !== state[i]) {
|
|
704
|
+
node.scrollTop = state[i];
|
|
705
|
+
}
|
|
706
|
+
node = node.parentNode;
|
|
707
|
+
}
|
|
708
|
+
}
|
|
709
|
+
class FocusTracker extends Disposable {
|
|
710
|
+
get onDidFocus() { return this._onDidFocus.event; }
|
|
711
|
+
get onDidBlur() { return this._onDidBlur.event; }
|
|
712
|
+
static hasFocusWithin(element) {
|
|
713
|
+
if (isHTMLElement(element)) {
|
|
714
|
+
const shadowRoot = getShadowRoot(element);
|
|
715
|
+
const activeElement = (shadowRoot ? shadowRoot.activeElement : element.ownerDocument.activeElement);
|
|
716
|
+
return isAncestor(activeElement, element);
|
|
717
|
+
}
|
|
718
|
+
else {
|
|
719
|
+
const window = element;
|
|
720
|
+
return isAncestor(window.document.activeElement, window.document);
|
|
721
|
+
}
|
|
722
|
+
}
|
|
723
|
+
constructor(element) {
|
|
724
|
+
super();
|
|
725
|
+
this._onDidFocus = this._register(new Emitter());
|
|
726
|
+
this._onDidBlur = this._register(new Emitter());
|
|
727
|
+
let hasFocus = FocusTracker.hasFocusWithin(element);
|
|
728
|
+
let loosingFocus = false;
|
|
729
|
+
const onFocus = () => {
|
|
730
|
+
loosingFocus = false;
|
|
731
|
+
if (!hasFocus) {
|
|
732
|
+
hasFocus = true;
|
|
733
|
+
this._onDidFocus.fire();
|
|
734
|
+
}
|
|
735
|
+
};
|
|
736
|
+
const onBlur = () => {
|
|
737
|
+
if (hasFocus) {
|
|
738
|
+
loosingFocus = true;
|
|
739
|
+
(isHTMLElement(element) ? getWindow(element) : element).setTimeout(() => {
|
|
740
|
+
if (loosingFocus) {
|
|
741
|
+
loosingFocus = false;
|
|
742
|
+
hasFocus = false;
|
|
743
|
+
this._onDidBlur.fire();
|
|
744
|
+
}
|
|
745
|
+
}, 0);
|
|
746
|
+
}
|
|
747
|
+
};
|
|
748
|
+
this._refreshStateHandler = () => {
|
|
749
|
+
const currentNodeHasFocus = FocusTracker.hasFocusWithin(element);
|
|
750
|
+
if (currentNodeHasFocus !== hasFocus) {
|
|
751
|
+
if (hasFocus) {
|
|
752
|
+
onBlur();
|
|
753
|
+
}
|
|
754
|
+
else {
|
|
755
|
+
onFocus();
|
|
756
|
+
}
|
|
757
|
+
}
|
|
758
|
+
};
|
|
759
|
+
this._register(addDisposableListener(element, EventType.FOCUS, onFocus, true));
|
|
760
|
+
this._register(addDisposableListener(element, EventType.BLUR, onBlur, true));
|
|
761
|
+
if (isHTMLElement(element)) {
|
|
762
|
+
this._register(addDisposableListener(element, EventType.FOCUS_IN, () => this._refreshStateHandler()));
|
|
763
|
+
this._register(addDisposableListener(element, EventType.FOCUS_OUT, () => this._refreshStateHandler()));
|
|
764
|
+
}
|
|
765
|
+
}
|
|
766
|
+
}
|
|
767
|
+
/**
|
|
768
|
+
* Creates a new `IFocusTracker` instance that tracks focus changes on the given `element` and its descendants.
|
|
769
|
+
*
|
|
770
|
+
* @param element The `HTMLElement` or `Window` to track focus changes on.
|
|
771
|
+
* @returns An `IFocusTracker` instance.
|
|
772
|
+
*/
|
|
773
|
+
function trackFocus(element) {
|
|
774
|
+
return new FocusTracker(element);
|
|
775
|
+
}
|
|
776
|
+
function after(sibling, child) {
|
|
777
|
+
sibling.after(child);
|
|
778
|
+
return child;
|
|
779
|
+
}
|
|
780
|
+
function append(parent, ...children) {
|
|
781
|
+
parent.append(...children);
|
|
782
|
+
if (children.length === 1 && typeof children[0] !== 'string') {
|
|
783
|
+
return children[0];
|
|
784
|
+
}
|
|
785
|
+
}
|
|
786
|
+
function prepend(parent, child) {
|
|
787
|
+
parent.insertBefore(child, parent.firstChild);
|
|
788
|
+
return child;
|
|
789
|
+
}
|
|
790
|
+
/**
|
|
791
|
+
* Removes all children from `parent` and appends `children`
|
|
792
|
+
*/
|
|
793
|
+
function reset(parent, ...children) {
|
|
794
|
+
parent.textContent = '';
|
|
795
|
+
append(parent, ...children);
|
|
796
|
+
}
|
|
797
|
+
const SELECTOR_REGEX = /([\w\-]+)?(#([\w\-]+))?((\.([\w\-]+))*)/;
|
|
798
|
+
var Namespace;
|
|
799
|
+
(function (Namespace) {
|
|
800
|
+
Namespace["HTML"] = "http://www.w3.org/1999/xhtml";
|
|
801
|
+
Namespace["SVG"] = "http://www.w3.org/2000/svg";
|
|
802
|
+
})(Namespace || (Namespace = {}));
|
|
803
|
+
function _$(namespace, description, attrs, ...children) {
|
|
804
|
+
const match = SELECTOR_REGEX.exec(description);
|
|
805
|
+
if (!match) {
|
|
806
|
+
throw new Error('Bad use of emmet');
|
|
807
|
+
}
|
|
808
|
+
const tagName = match[1] || 'div';
|
|
809
|
+
let result;
|
|
810
|
+
if (namespace !== Namespace.HTML) {
|
|
811
|
+
result = document.createElementNS(namespace, tagName);
|
|
812
|
+
}
|
|
813
|
+
else {
|
|
814
|
+
result = document.createElement(tagName);
|
|
815
|
+
}
|
|
816
|
+
if (match[3]) {
|
|
817
|
+
result.id = match[3];
|
|
818
|
+
}
|
|
819
|
+
if (match[4]) {
|
|
820
|
+
result.className = match[4].replace(/\./g, ' ').trim();
|
|
821
|
+
}
|
|
822
|
+
if (attrs) {
|
|
823
|
+
Object.entries(attrs).forEach(([name, value]) => {
|
|
824
|
+
if (typeof value === 'undefined') {
|
|
825
|
+
return;
|
|
826
|
+
}
|
|
827
|
+
if (/^on\w+$/.test(name)) {
|
|
828
|
+
// eslint-disable-next-line local/code-no-any-casts
|
|
829
|
+
result[name] = value;
|
|
830
|
+
}
|
|
831
|
+
else if (name === 'selected') {
|
|
832
|
+
if (value) {
|
|
833
|
+
result.setAttribute(name, 'true');
|
|
834
|
+
}
|
|
835
|
+
}
|
|
836
|
+
else {
|
|
837
|
+
result.setAttribute(name, value);
|
|
838
|
+
}
|
|
839
|
+
});
|
|
840
|
+
}
|
|
841
|
+
result.append(...children);
|
|
842
|
+
return result;
|
|
843
|
+
}
|
|
844
|
+
function $(description, attrs, ...children) {
|
|
845
|
+
return _$(Namespace.HTML, description, attrs, ...children);
|
|
846
|
+
}
|
|
847
|
+
$.SVG = function (description, attrs, ...children) {
|
|
848
|
+
return _$(Namespace.SVG, description, attrs, ...children);
|
|
849
|
+
};
|
|
850
|
+
function setVisibility(visible, ...elements) {
|
|
851
|
+
if (visible) {
|
|
852
|
+
show(...elements);
|
|
853
|
+
}
|
|
854
|
+
else {
|
|
855
|
+
hide(...elements);
|
|
856
|
+
}
|
|
857
|
+
}
|
|
858
|
+
function show(...elements) {
|
|
859
|
+
for (const element of elements) {
|
|
860
|
+
element.style.display = '';
|
|
861
|
+
element.removeAttribute('aria-hidden');
|
|
862
|
+
}
|
|
863
|
+
}
|
|
864
|
+
function hide(...elements) {
|
|
865
|
+
for (const element of elements) {
|
|
866
|
+
element.style.display = 'none';
|
|
867
|
+
element.setAttribute('aria-hidden', 'true');
|
|
868
|
+
}
|
|
869
|
+
}
|
|
870
|
+
/**
|
|
871
|
+
* Find a value usable for a dom node size such that the likelihood that it would be
|
|
872
|
+
* displayed with constant screen pixels size is as high as possible.
|
|
873
|
+
*
|
|
874
|
+
* e.g. We would desire for the cursors to be 2px (CSS px) wide. Under a devicePixelRatio
|
|
875
|
+
* of 1.25, the cursor will be 2.5 screen pixels wide. Depending on how the dom node aligns/"snaps"
|
|
876
|
+
* with the screen pixels, it will sometimes be rendered with 2 screen pixels, and sometimes with 3 screen pixels.
|
|
877
|
+
*/
|
|
878
|
+
function computeScreenAwareSize(window, cssPx) {
|
|
879
|
+
const screenPx = window.devicePixelRatio * cssPx;
|
|
880
|
+
return Math.max(1, Math.floor(screenPx)) / window.devicePixelRatio;
|
|
881
|
+
}
|
|
882
|
+
/**
|
|
883
|
+
* Open safely a new window. This is the best way to do so, but you cannot tell
|
|
884
|
+
* if the window was opened or if it was blocked by the browser's popup blocker.
|
|
885
|
+
* If you want to tell if the browser blocked the new window, use {@link windowOpenWithSuccess}.
|
|
886
|
+
*
|
|
887
|
+
* See https://github.com/microsoft/monaco-editor/issues/601
|
|
888
|
+
* To protect against malicious code in the linked site, particularly phishing attempts,
|
|
889
|
+
* the window.opener should be set to null to prevent the linked site from having access
|
|
890
|
+
* to change the location of the current page.
|
|
891
|
+
* See https://mathiasbynens.github.io/rel-noopener/
|
|
892
|
+
*/
|
|
893
|
+
function windowOpenNoOpener(url) {
|
|
894
|
+
// By using 'noopener' in the `windowFeatures` argument, the newly created window will
|
|
895
|
+
// not be able to use `window.opener` to reach back to the current page.
|
|
896
|
+
// See https://stackoverflow.com/a/46958731
|
|
897
|
+
// See https://developer.mozilla.org/en-US/docs/Web/API/Window/open#noopener
|
|
898
|
+
// However, this also doesn't allow us to realize if the browser blocked
|
|
899
|
+
// the creation of the window.
|
|
900
|
+
mainWindow.open(url, '_blank', 'noopener');
|
|
901
|
+
}
|
|
902
|
+
function animate(targetWindow, fn) {
|
|
903
|
+
const step = () => {
|
|
904
|
+
fn();
|
|
905
|
+
stepDisposable = scheduleAtNextAnimationFrame(targetWindow, step);
|
|
906
|
+
};
|
|
907
|
+
let stepDisposable = scheduleAtNextAnimationFrame(targetWindow, step);
|
|
908
|
+
return toDisposable(() => stepDisposable.dispose());
|
|
909
|
+
}
|
|
910
|
+
RemoteAuthorities.setPreferredWebSchema(/^https:/.test(mainWindow.location.href) ? 'https' : 'http');
|
|
911
|
+
class ModifierKeyEmitter extends Emitter {
|
|
912
|
+
constructor() {
|
|
913
|
+
super();
|
|
914
|
+
this._subscriptions = new DisposableStore();
|
|
915
|
+
this._keyStatus = {
|
|
916
|
+
altKey: false,
|
|
917
|
+
shiftKey: false,
|
|
918
|
+
ctrlKey: false,
|
|
919
|
+
metaKey: false
|
|
920
|
+
};
|
|
921
|
+
this._subscriptions.add(Event.runAndSubscribe(onDidRegisterWindow, ({ window, disposables }) => this.registerListeners(window, disposables), { window: mainWindow, disposables: this._subscriptions }));
|
|
922
|
+
}
|
|
923
|
+
registerListeners(window, disposables) {
|
|
924
|
+
disposables.add(addDisposableListener(window, 'keydown', e => {
|
|
925
|
+
if (e.defaultPrevented) {
|
|
926
|
+
return;
|
|
927
|
+
}
|
|
928
|
+
const event = new StandardKeyboardEvent(e);
|
|
929
|
+
// If Alt-key keydown event is repeated, ignore it #112347
|
|
930
|
+
// Only known to be necessary for Alt-Key at the moment #115810
|
|
931
|
+
if (event.keyCode === 6 /* KeyCode.Alt */ && e.repeat) {
|
|
932
|
+
return;
|
|
933
|
+
}
|
|
934
|
+
if (e.altKey && !this._keyStatus.altKey) {
|
|
935
|
+
this._keyStatus.lastKeyPressed = 'alt';
|
|
936
|
+
}
|
|
937
|
+
else if (e.ctrlKey && !this._keyStatus.ctrlKey) {
|
|
938
|
+
this._keyStatus.lastKeyPressed = 'ctrl';
|
|
939
|
+
}
|
|
940
|
+
else if (e.metaKey && !this._keyStatus.metaKey) {
|
|
941
|
+
this._keyStatus.lastKeyPressed = 'meta';
|
|
942
|
+
}
|
|
943
|
+
else if (e.shiftKey && !this._keyStatus.shiftKey) {
|
|
944
|
+
this._keyStatus.lastKeyPressed = 'shift';
|
|
945
|
+
}
|
|
946
|
+
else if (event.keyCode !== 6 /* KeyCode.Alt */) {
|
|
947
|
+
this._keyStatus.lastKeyPressed = undefined;
|
|
948
|
+
}
|
|
949
|
+
else {
|
|
950
|
+
return;
|
|
951
|
+
}
|
|
952
|
+
this._keyStatus.altKey = e.altKey;
|
|
953
|
+
this._keyStatus.ctrlKey = e.ctrlKey;
|
|
954
|
+
this._keyStatus.metaKey = e.metaKey;
|
|
955
|
+
this._keyStatus.shiftKey = e.shiftKey;
|
|
956
|
+
if (this._keyStatus.lastKeyPressed) {
|
|
957
|
+
this._keyStatus.event = e;
|
|
958
|
+
this.fire(this._keyStatus);
|
|
959
|
+
}
|
|
960
|
+
}, true));
|
|
961
|
+
disposables.add(addDisposableListener(window, 'keyup', e => {
|
|
962
|
+
if (e.defaultPrevented) {
|
|
963
|
+
return;
|
|
964
|
+
}
|
|
965
|
+
if (!e.altKey && this._keyStatus.altKey) {
|
|
966
|
+
this._keyStatus.lastKeyReleased = 'alt';
|
|
967
|
+
}
|
|
968
|
+
else if (!e.ctrlKey && this._keyStatus.ctrlKey) {
|
|
969
|
+
this._keyStatus.lastKeyReleased = 'ctrl';
|
|
970
|
+
}
|
|
971
|
+
else if (!e.metaKey && this._keyStatus.metaKey) {
|
|
972
|
+
this._keyStatus.lastKeyReleased = 'meta';
|
|
973
|
+
}
|
|
974
|
+
else if (!e.shiftKey && this._keyStatus.shiftKey) {
|
|
975
|
+
this._keyStatus.lastKeyReleased = 'shift';
|
|
976
|
+
}
|
|
977
|
+
else {
|
|
978
|
+
this._keyStatus.lastKeyReleased = undefined;
|
|
979
|
+
}
|
|
980
|
+
if (this._keyStatus.lastKeyPressed !== this._keyStatus.lastKeyReleased) {
|
|
981
|
+
this._keyStatus.lastKeyPressed = undefined;
|
|
982
|
+
}
|
|
983
|
+
this._keyStatus.altKey = e.altKey;
|
|
984
|
+
this._keyStatus.ctrlKey = e.ctrlKey;
|
|
985
|
+
this._keyStatus.metaKey = e.metaKey;
|
|
986
|
+
this._keyStatus.shiftKey = e.shiftKey;
|
|
987
|
+
if (this._keyStatus.lastKeyReleased) {
|
|
988
|
+
this._keyStatus.event = e;
|
|
989
|
+
this.fire(this._keyStatus);
|
|
990
|
+
}
|
|
991
|
+
}, true));
|
|
992
|
+
disposables.add(addDisposableListener(window.document.body, 'mousedown', () => {
|
|
993
|
+
this._keyStatus.lastKeyPressed = undefined;
|
|
994
|
+
}, true));
|
|
995
|
+
disposables.add(addDisposableListener(window.document.body, 'mouseup', () => {
|
|
996
|
+
this._keyStatus.lastKeyPressed = undefined;
|
|
997
|
+
}, true));
|
|
998
|
+
disposables.add(addDisposableListener(window.document.body, 'mousemove', e => {
|
|
999
|
+
if (e.buttons) {
|
|
1000
|
+
this._keyStatus.lastKeyPressed = undefined;
|
|
1001
|
+
}
|
|
1002
|
+
}, true));
|
|
1003
|
+
disposables.add(addDisposableListener(window, 'blur', () => {
|
|
1004
|
+
this.resetKeyStatus();
|
|
1005
|
+
}));
|
|
1006
|
+
}
|
|
1007
|
+
get keyStatus() {
|
|
1008
|
+
return this._keyStatus;
|
|
1009
|
+
}
|
|
1010
|
+
/**
|
|
1011
|
+
* Allows to explicitly reset the key status based on more knowledge (#109062)
|
|
1012
|
+
*/
|
|
1013
|
+
resetKeyStatus() {
|
|
1014
|
+
this.doResetKeyStatus();
|
|
1015
|
+
this.fire(this._keyStatus);
|
|
1016
|
+
}
|
|
1017
|
+
doResetKeyStatus() {
|
|
1018
|
+
this._keyStatus = {
|
|
1019
|
+
altKey: false,
|
|
1020
|
+
shiftKey: false,
|
|
1021
|
+
ctrlKey: false,
|
|
1022
|
+
metaKey: false
|
|
1023
|
+
};
|
|
1024
|
+
}
|
|
1025
|
+
static getInstance() {
|
|
1026
|
+
if (!ModifierKeyEmitter.instance) {
|
|
1027
|
+
ModifierKeyEmitter.instance = new ModifierKeyEmitter();
|
|
1028
|
+
}
|
|
1029
|
+
return ModifierKeyEmitter.instance;
|
|
1030
|
+
}
|
|
1031
|
+
dispose() {
|
|
1032
|
+
super.dispose();
|
|
1033
|
+
this._subscriptions.dispose();
|
|
1034
|
+
}
|
|
1035
|
+
}
|
|
1036
|
+
class DragAndDropObserver extends Disposable {
|
|
1037
|
+
constructor(element, callbacks) {
|
|
1038
|
+
super();
|
|
1039
|
+
this.element = element;
|
|
1040
|
+
this.callbacks = callbacks;
|
|
1041
|
+
// A helper to fix issues with repeated DRAG_ENTER / DRAG_LEAVE
|
|
1042
|
+
// calls see https://github.com/microsoft/vscode/issues/14470
|
|
1043
|
+
// when the element has child elements where the events are fired
|
|
1044
|
+
// repeadedly.
|
|
1045
|
+
this.counter = 0;
|
|
1046
|
+
// Allows to measure the duration of the drag operation.
|
|
1047
|
+
this.dragStartTime = 0;
|
|
1048
|
+
this.registerListeners();
|
|
1049
|
+
}
|
|
1050
|
+
registerListeners() {
|
|
1051
|
+
if (this.callbacks.onDragStart) {
|
|
1052
|
+
this._register(addDisposableListener(this.element, EventType.DRAG_START, (e) => {
|
|
1053
|
+
this.callbacks.onDragStart?.(e);
|
|
1054
|
+
}));
|
|
1055
|
+
}
|
|
1056
|
+
if (this.callbacks.onDrag) {
|
|
1057
|
+
this._register(addDisposableListener(this.element, EventType.DRAG, (e) => {
|
|
1058
|
+
this.callbacks.onDrag?.(e);
|
|
1059
|
+
}));
|
|
1060
|
+
}
|
|
1061
|
+
this._register(addDisposableListener(this.element, EventType.DRAG_ENTER, (e) => {
|
|
1062
|
+
this.counter++;
|
|
1063
|
+
this.dragStartTime = e.timeStamp;
|
|
1064
|
+
this.callbacks.onDragEnter?.(e);
|
|
1065
|
+
}));
|
|
1066
|
+
this._register(addDisposableListener(this.element, EventType.DRAG_OVER, (e) => {
|
|
1067
|
+
e.preventDefault(); // needed so that the drop event fires (https://stackoverflow.com/questions/21339924/drop-event-not-firing-in-chrome)
|
|
1068
|
+
this.callbacks.onDragOver?.(e, e.timeStamp - this.dragStartTime);
|
|
1069
|
+
}));
|
|
1070
|
+
this._register(addDisposableListener(this.element, EventType.DRAG_LEAVE, (e) => {
|
|
1071
|
+
this.counter--;
|
|
1072
|
+
if (this.counter === 0) {
|
|
1073
|
+
this.dragStartTime = 0;
|
|
1074
|
+
this.callbacks.onDragLeave?.(e);
|
|
1075
|
+
}
|
|
1076
|
+
}));
|
|
1077
|
+
this._register(addDisposableListener(this.element, EventType.DRAG_END, (e) => {
|
|
1078
|
+
this.counter = 0;
|
|
1079
|
+
this.dragStartTime = 0;
|
|
1080
|
+
this.callbacks.onDragEnd?.(e);
|
|
1081
|
+
}));
|
|
1082
|
+
this._register(addDisposableListener(this.element, EventType.DROP, (e) => {
|
|
1083
|
+
this.counter = 0;
|
|
1084
|
+
this.dragStartTime = 0;
|
|
1085
|
+
this.callbacks.onDrop?.(e);
|
|
1086
|
+
}));
|
|
1087
|
+
}
|
|
1088
|
+
}
|
|
1089
|
+
const H_REGEX = /(?<tag>[\w\-]+)?(?:#(?<id>[\w\-]+))?(?<class>(?:\.(?:[\w\-]+))*)(?:@(?<name>(?:[\w\_])+))?/;
|
|
1090
|
+
function h(tag, ...args) {
|
|
1091
|
+
let attributes;
|
|
1092
|
+
let children;
|
|
1093
|
+
if (Array.isArray(args[0])) {
|
|
1094
|
+
attributes = {};
|
|
1095
|
+
children = args[0];
|
|
1096
|
+
}
|
|
1097
|
+
else {
|
|
1098
|
+
// eslint-disable-next-line local/code-no-any-casts
|
|
1099
|
+
attributes = args[0] || {};
|
|
1100
|
+
children = args[1];
|
|
1101
|
+
}
|
|
1102
|
+
const match = H_REGEX.exec(tag);
|
|
1103
|
+
if (!match || !match.groups) {
|
|
1104
|
+
throw new Error('Bad use of h');
|
|
1105
|
+
}
|
|
1106
|
+
const tagName = match.groups['tag'] || 'div';
|
|
1107
|
+
const el = document.createElement(tagName);
|
|
1108
|
+
if (match.groups['id']) {
|
|
1109
|
+
el.id = match.groups['id'];
|
|
1110
|
+
}
|
|
1111
|
+
const classNames = [];
|
|
1112
|
+
if (match.groups['class']) {
|
|
1113
|
+
for (const className of match.groups['class'].split('.')) {
|
|
1114
|
+
if (className !== '') {
|
|
1115
|
+
classNames.push(className);
|
|
1116
|
+
}
|
|
1117
|
+
}
|
|
1118
|
+
}
|
|
1119
|
+
if (attributes.className !== undefined) {
|
|
1120
|
+
for (const className of attributes.className.split('.')) {
|
|
1121
|
+
if (className !== '') {
|
|
1122
|
+
classNames.push(className);
|
|
1123
|
+
}
|
|
1124
|
+
}
|
|
1125
|
+
}
|
|
1126
|
+
if (classNames.length > 0) {
|
|
1127
|
+
el.className = classNames.join(' ');
|
|
1128
|
+
}
|
|
1129
|
+
const result = {};
|
|
1130
|
+
if (match.groups['name']) {
|
|
1131
|
+
result[match.groups['name']] = el;
|
|
1132
|
+
}
|
|
1133
|
+
if (children) {
|
|
1134
|
+
for (const c of children) {
|
|
1135
|
+
if (isHTMLElement(c)) {
|
|
1136
|
+
el.appendChild(c);
|
|
1137
|
+
}
|
|
1138
|
+
else if (typeof c === 'string') {
|
|
1139
|
+
el.append(c);
|
|
1140
|
+
}
|
|
1141
|
+
else if ('root' in c) {
|
|
1142
|
+
Object.assign(result, c);
|
|
1143
|
+
el.appendChild(c.root);
|
|
1144
|
+
}
|
|
1145
|
+
}
|
|
1146
|
+
}
|
|
1147
|
+
for (const [key, value] of Object.entries(attributes)) {
|
|
1148
|
+
if (key === 'className') {
|
|
1149
|
+
continue;
|
|
1150
|
+
}
|
|
1151
|
+
else if (key === 'style') {
|
|
1152
|
+
for (const [cssKey, cssValue] of Object.entries(value)) {
|
|
1153
|
+
el.style.setProperty(camelCaseToHyphenCase(cssKey), typeof cssValue === 'number' ? cssValue + 'px' : '' + cssValue);
|
|
1154
|
+
}
|
|
1155
|
+
}
|
|
1156
|
+
else if (key === 'tabIndex') {
|
|
1157
|
+
el.tabIndex = value;
|
|
1158
|
+
}
|
|
1159
|
+
else {
|
|
1160
|
+
el.setAttribute(camelCaseToHyphenCase(key), value.toString());
|
|
1161
|
+
}
|
|
1162
|
+
}
|
|
1163
|
+
result['root'] = el;
|
|
1164
|
+
return result;
|
|
1165
|
+
}
|
|
1166
|
+
function camelCaseToHyphenCase(str) {
|
|
1167
|
+
return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
|
|
1168
|
+
}
|
|
1169
|
+
function isEditableElement(element) {
|
|
1170
|
+
return element.tagName.toLowerCase() === 'input' || element.tagName.toLowerCase() === 'textarea' || isHTMLElement(element) && !!element.editContext;
|
|
1171
|
+
}
|
|
1172
|
+
var n;
|
|
1173
|
+
(function (n) {
|
|
1174
|
+
function nodeNs(elementNs = undefined) {
|
|
1175
|
+
return (tag, attributes, children) => {
|
|
1176
|
+
const className = attributes.class;
|
|
1177
|
+
delete attributes.class;
|
|
1178
|
+
const ref = attributes.ref;
|
|
1179
|
+
delete attributes.ref;
|
|
1180
|
+
const obsRef = attributes.obsRef;
|
|
1181
|
+
delete attributes.obsRef;
|
|
1182
|
+
// eslint-disable-next-line local/code-no-any-casts
|
|
1183
|
+
return new ObserverNodeWithElement(tag, ref, obsRef, elementNs, className, attributes, children);
|
|
1184
|
+
};
|
|
1185
|
+
}
|
|
1186
|
+
function node(tag, elementNs = undefined) {
|
|
1187
|
+
// eslint-disable-next-line local/code-no-any-casts
|
|
1188
|
+
const f = nodeNs(elementNs);
|
|
1189
|
+
return (attributes, children) => {
|
|
1190
|
+
return f(tag, attributes, children);
|
|
1191
|
+
};
|
|
1192
|
+
}
|
|
1193
|
+
n.div = node('div');
|
|
1194
|
+
n.elem = nodeNs(undefined);
|
|
1195
|
+
n.svg = node('svg', 'http://www.w3.org/2000/svg');
|
|
1196
|
+
n.svgElem = nodeNs('http://www.w3.org/2000/svg');
|
|
1197
|
+
function ref() {
|
|
1198
|
+
let value = undefined;
|
|
1199
|
+
const result = function (val) {
|
|
1200
|
+
value = val;
|
|
1201
|
+
};
|
|
1202
|
+
Object.defineProperty(result, 'element', {
|
|
1203
|
+
get() {
|
|
1204
|
+
if (!value) {
|
|
1205
|
+
throw new BugIndicatingError('Make sure the ref is set before accessing the element. Maybe wrong initialization order?');
|
|
1206
|
+
}
|
|
1207
|
+
return value;
|
|
1208
|
+
}
|
|
1209
|
+
});
|
|
1210
|
+
// eslint-disable-next-line local/code-no-any-casts
|
|
1211
|
+
return result;
|
|
1212
|
+
}
|
|
1213
|
+
n.ref = ref;
|
|
1214
|
+
})(n || (n = {}));
|
|
1215
|
+
class ObserverNode {
|
|
1216
|
+
constructor(tag, ref, obsRef, ns, className, attributes, children) {
|
|
1217
|
+
this._deriveds = [];
|
|
1218
|
+
this._element = (ns ? document.createElementNS(ns, tag) : document.createElement(tag));
|
|
1219
|
+
if (ref) {
|
|
1220
|
+
ref(this._element);
|
|
1221
|
+
}
|
|
1222
|
+
if (obsRef) {
|
|
1223
|
+
this._deriveds.push(derived((_reader) => {
|
|
1224
|
+
obsRef(this);
|
|
1225
|
+
_reader.store.add({
|
|
1226
|
+
dispose: () => {
|
|
1227
|
+
obsRef(null);
|
|
1228
|
+
}
|
|
1229
|
+
});
|
|
1230
|
+
}));
|
|
1231
|
+
}
|
|
1232
|
+
if (className) {
|
|
1233
|
+
if (hasObservable(className)) {
|
|
1234
|
+
this._deriveds.push(derived(this, reader => {
|
|
1235
|
+
/** @description set.class */
|
|
1236
|
+
setClassName(this._element, getClassName(className, reader));
|
|
1237
|
+
}));
|
|
1238
|
+
}
|
|
1239
|
+
else {
|
|
1240
|
+
setClassName(this._element, getClassName(className, undefined));
|
|
1241
|
+
}
|
|
1242
|
+
}
|
|
1243
|
+
for (const [key, value] of Object.entries(attributes)) {
|
|
1244
|
+
if (key === 'style') {
|
|
1245
|
+
for (const [cssKey, cssValue] of Object.entries(value)) {
|
|
1246
|
+
const key = camelCaseToHyphenCase(cssKey);
|
|
1247
|
+
if (isObservable(cssValue)) {
|
|
1248
|
+
this._deriveds.push(derivedOpts({ owner: this, debugName: () => `set.style.${key}` }, reader => {
|
|
1249
|
+
this._element.style.setProperty(key, convertCssValue(cssValue.read(reader)));
|
|
1250
|
+
}));
|
|
1251
|
+
}
|
|
1252
|
+
else {
|
|
1253
|
+
this._element.style.setProperty(key, convertCssValue(cssValue));
|
|
1254
|
+
}
|
|
1255
|
+
}
|
|
1256
|
+
}
|
|
1257
|
+
else if (key === 'tabIndex') {
|
|
1258
|
+
if (isObservable(value)) {
|
|
1259
|
+
this._deriveds.push(derived(this, reader => {
|
|
1260
|
+
/** @description set.tabIndex */
|
|
1261
|
+
// eslint-disable-next-line local/code-no-any-casts
|
|
1262
|
+
this._element.tabIndex = value.read(reader);
|
|
1263
|
+
}));
|
|
1264
|
+
}
|
|
1265
|
+
else {
|
|
1266
|
+
this._element.tabIndex = value;
|
|
1267
|
+
}
|
|
1268
|
+
}
|
|
1269
|
+
else if (key.startsWith('on')) {
|
|
1270
|
+
// eslint-disable-next-line local/code-no-any-casts
|
|
1271
|
+
this._element[key] = value;
|
|
1272
|
+
}
|
|
1273
|
+
else {
|
|
1274
|
+
if (isObservable(value)) {
|
|
1275
|
+
this._deriveds.push(derivedOpts({ owner: this, debugName: () => `set.${key}` }, reader => {
|
|
1276
|
+
setOrRemoveAttribute(this._element, key, value.read(reader));
|
|
1277
|
+
}));
|
|
1278
|
+
}
|
|
1279
|
+
else {
|
|
1280
|
+
setOrRemoveAttribute(this._element, key, value);
|
|
1281
|
+
}
|
|
1282
|
+
}
|
|
1283
|
+
}
|
|
1284
|
+
if (children) {
|
|
1285
|
+
function getChildren(reader, children) {
|
|
1286
|
+
if (isObservable(children)) {
|
|
1287
|
+
return getChildren(reader, children.read(reader));
|
|
1288
|
+
}
|
|
1289
|
+
if (Array.isArray(children)) {
|
|
1290
|
+
return children.flatMap(c => getChildren(reader, c));
|
|
1291
|
+
}
|
|
1292
|
+
if (children instanceof ObserverNode) {
|
|
1293
|
+
if (reader) {
|
|
1294
|
+
children.readEffect(reader);
|
|
1295
|
+
}
|
|
1296
|
+
return [children._element];
|
|
1297
|
+
}
|
|
1298
|
+
if (children) {
|
|
1299
|
+
return [children];
|
|
1300
|
+
}
|
|
1301
|
+
return [];
|
|
1302
|
+
}
|
|
1303
|
+
const d = derived(this, reader => {
|
|
1304
|
+
/** @description set.children */
|
|
1305
|
+
this._element.replaceChildren(...getChildren(reader, children));
|
|
1306
|
+
});
|
|
1307
|
+
this._deriveds.push(d);
|
|
1308
|
+
if (!childrenIsObservable(children)) {
|
|
1309
|
+
d.get();
|
|
1310
|
+
}
|
|
1311
|
+
}
|
|
1312
|
+
}
|
|
1313
|
+
readEffect(reader) {
|
|
1314
|
+
for (const d of this._deriveds) {
|
|
1315
|
+
d.read(reader);
|
|
1316
|
+
}
|
|
1317
|
+
}
|
|
1318
|
+
keepUpdated(store) {
|
|
1319
|
+
derived(reader => {
|
|
1320
|
+
/** update */
|
|
1321
|
+
this.readEffect(reader);
|
|
1322
|
+
}).recomputeInitiallyAndOnChange(store);
|
|
1323
|
+
return this;
|
|
1324
|
+
}
|
|
1325
|
+
/**
|
|
1326
|
+
* Creates a live element that will keep the element updated as long as the returned object is not disposed.
|
|
1327
|
+
*/
|
|
1328
|
+
toDisposableLiveElement() {
|
|
1329
|
+
const store = new DisposableStore();
|
|
1330
|
+
this.keepUpdated(store);
|
|
1331
|
+
return new LiveElement(this._element, store);
|
|
1332
|
+
}
|
|
1333
|
+
}
|
|
1334
|
+
function setClassName(domNode, className) {
|
|
1335
|
+
if (isSVGElement(domNode)) {
|
|
1336
|
+
domNode.setAttribute('class', className);
|
|
1337
|
+
}
|
|
1338
|
+
else {
|
|
1339
|
+
domNode.className = className;
|
|
1340
|
+
}
|
|
1341
|
+
}
|
|
1342
|
+
function resolve(value, reader, cb) {
|
|
1343
|
+
if (isObservable(value)) {
|
|
1344
|
+
cb(value.read(reader));
|
|
1345
|
+
return;
|
|
1346
|
+
}
|
|
1347
|
+
if (Array.isArray(value)) {
|
|
1348
|
+
for (const v of value) {
|
|
1349
|
+
resolve(v, reader, cb);
|
|
1350
|
+
}
|
|
1351
|
+
return;
|
|
1352
|
+
}
|
|
1353
|
+
// eslint-disable-next-line local/code-no-any-casts
|
|
1354
|
+
cb(value);
|
|
1355
|
+
}
|
|
1356
|
+
function getClassName(className, reader) {
|
|
1357
|
+
let result = '';
|
|
1358
|
+
resolve(className, reader, val => {
|
|
1359
|
+
if (val) {
|
|
1360
|
+
if (result.length === 0) {
|
|
1361
|
+
result = val;
|
|
1362
|
+
}
|
|
1363
|
+
else {
|
|
1364
|
+
result += ' ' + val;
|
|
1365
|
+
}
|
|
1366
|
+
}
|
|
1367
|
+
});
|
|
1368
|
+
return result;
|
|
1369
|
+
}
|
|
1370
|
+
function hasObservable(value) {
|
|
1371
|
+
if (isObservable(value)) {
|
|
1372
|
+
return true;
|
|
1373
|
+
}
|
|
1374
|
+
if (Array.isArray(value)) {
|
|
1375
|
+
return value.some(v => hasObservable(v));
|
|
1376
|
+
}
|
|
1377
|
+
return false;
|
|
1378
|
+
}
|
|
1379
|
+
function convertCssValue(value) {
|
|
1380
|
+
if (typeof value === 'number') {
|
|
1381
|
+
return value + 'px';
|
|
1382
|
+
}
|
|
1383
|
+
return value;
|
|
1384
|
+
}
|
|
1385
|
+
function childrenIsObservable(children) {
|
|
1386
|
+
if (isObservable(children)) {
|
|
1387
|
+
return true;
|
|
1388
|
+
}
|
|
1389
|
+
if (Array.isArray(children)) {
|
|
1390
|
+
return children.some(c => childrenIsObservable(c));
|
|
1391
|
+
}
|
|
1392
|
+
return false;
|
|
1393
|
+
}
|
|
1394
|
+
class LiveElement {
|
|
1395
|
+
constructor(element, _disposable) {
|
|
1396
|
+
this.element = element;
|
|
1397
|
+
this._disposable = _disposable;
|
|
1398
|
+
}
|
|
1399
|
+
dispose() {
|
|
1400
|
+
this._disposable.dispose();
|
|
1401
|
+
}
|
|
1402
|
+
}
|
|
1403
|
+
class ObserverNodeWithElement extends ObserverNode {
|
|
1404
|
+
constructor() {
|
|
1405
|
+
super(...arguments);
|
|
1406
|
+
this._isHovered = undefined;
|
|
1407
|
+
this._didMouseMoveDuringHover = undefined;
|
|
1408
|
+
}
|
|
1409
|
+
get element() {
|
|
1410
|
+
return this._element;
|
|
1411
|
+
}
|
|
1412
|
+
get isHovered() {
|
|
1413
|
+
if (!this._isHovered) {
|
|
1414
|
+
const hovered = observableValue('hovered', false);
|
|
1415
|
+
this._element.addEventListener('mouseenter', (_e) => hovered.set(true, undefined));
|
|
1416
|
+
this._element.addEventListener('mouseleave', (_e) => hovered.set(false, undefined));
|
|
1417
|
+
this._isHovered = hovered;
|
|
1418
|
+
}
|
|
1419
|
+
return this._isHovered;
|
|
1420
|
+
}
|
|
1421
|
+
get didMouseMoveDuringHover() {
|
|
1422
|
+
if (!this._didMouseMoveDuringHover) {
|
|
1423
|
+
let _hovering = false;
|
|
1424
|
+
const hovered = observableValue('didMouseMoveDuringHover', false);
|
|
1425
|
+
this._element.addEventListener('mouseenter', (_e) => {
|
|
1426
|
+
_hovering = true;
|
|
1427
|
+
});
|
|
1428
|
+
this._element.addEventListener('mousemove', (_e) => {
|
|
1429
|
+
if (_hovering) {
|
|
1430
|
+
hovered.set(true, undefined);
|
|
1431
|
+
}
|
|
1432
|
+
});
|
|
1433
|
+
this._element.addEventListener('mouseleave', (_e) => {
|
|
1434
|
+
_hovering = false;
|
|
1435
|
+
hovered.set(false, undefined);
|
|
1436
|
+
});
|
|
1437
|
+
this._didMouseMoveDuringHover = hovered;
|
|
1438
|
+
}
|
|
1439
|
+
return this._didMouseMoveDuringHover;
|
|
1440
|
+
}
|
|
1441
|
+
}
|
|
1442
|
+
function setOrRemoveAttribute(element, key, value) {
|
|
1443
|
+
if (value === null || value === undefined) {
|
|
1444
|
+
element.removeAttribute(camelCaseToHyphenCase(key));
|
|
1445
|
+
}
|
|
1446
|
+
else {
|
|
1447
|
+
element.setAttribute(camelCaseToHyphenCase(key), String(value));
|
|
1448
|
+
}
|
|
1449
|
+
}
|
|
1450
|
+
function isObservable(obj) {
|
|
1451
|
+
return !!obj && obj.read !== undefined && obj.reportChanges !== undefined;
|
|
1452
|
+
}
|
|
1453
|
+
|
|
1454
|
+
export { $, Dimension, DragAndDropObserver, EventHelper, EventType, LiveElement, ModifierKeyEmitter, Namespace, ObserverNode, ObserverNodeWithElement, WindowIdleValue, WindowIntervalTimer, addDisposableGenericMouseDownListener, addDisposableGenericMouseMoveListener, addDisposableGenericMouseUpListener, addDisposableListener, addStandardDisposableGenericMouseDownListener, addStandardDisposableListener, after, animate, append, clearNode, computeScreenAwareSize, findParentWithClass, getActiveDocument, getActiveElement, getActiveWindow, getClientArea, getComputedStyle, getContentHeight, getContentWidth, getDocument, getDomNodePagePosition, getDomNodeZoomLevel, getShadowRoot, getTopLeftOffset, getTotalHeight, getTotalWidth, getWindow, getWindowById, getWindowId, getWindows, getWindowsCount, h, hasParentWithClass, hide, isActiveElement, isAncestor, isAncestorOfActiveElement, isEditableElement, isEventLike, isHTMLAnchorElement, isHTMLElement, isInShadowDOM, isKeyboardEvent, isMouseEvent, isSVGElement, isShadowRoot, n, onDidRegisterWindow, onDidUnregisterWindow, onWillUnregisterWindow, prepend, reset, restoreParentsScrollTop, runAtThisOrScheduleAtNextAnimationFrame, runWhenWindowIdle, saveParentsScrollTop, scheduleAtNextAnimationFrame, setVisibility, sharedMutationObserver, show, size, trackFocus, windowOpenNoOpener };
|