@lvce-editor/server 0.14.12 → 0.14.13
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/ThirdPartyNotices.txt +2 -2
- package/package.json +2 -2
- package/static/{b969c79 → a615e33}/css/App.css +3 -3
- package/static/{b969c79 → a615e33}/css/parts/EditorTabs.css +1 -1
- package/static/a615e33/css/parts/Symbol.css +35 -0
- package/static/{b969c79 → a615e33}/css/parts/ViewletTitleBarButtons.css +3 -3
- package/static/{b969c79 → a615e33}/css/parts/ViewletTitleBarIcon.css +1 -1
- package/static/{b969c79 → a615e33}/packages/renderer-process/dist/rendererProcessMain.js +1 -1
- package/static/{b969c79 → a615e33}/packages/renderer-process/dist/rendererProcessMain.js.map +1 -1
- package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Platform/Platform.js +2 -2
- package/static/{b969c79 → a615e33}/packages/renderer-worker/dist/rendererWorkerMain.js +1 -1
- package/static/{b969c79 → a615e33}/packages/renderer-worker/dist/rendererWorkerMain.js.map +1 -1
- package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Platform/Platform.js +2 -2
- package/static/index.html +5 -5
- package/static/manifest.json +2 -2
- package/static/serviceWorker.js +1 -1
- package/static/b969c79/css/parts/Symbol.css +0 -35
- /package/static/{b969c79 → a615e33}/config/builtinCommands.json +0 -0
- /package/static/{b969c79 → a615e33}/config/colorTheme.json +0 -0
- /package/static/{b969c79 → a615e33}/config/defaultKeyBindings.json +0 -0
- /package/static/{b969c79 → a615e33}/config/defaultSettings.json +0 -0
- /package/static/{b969c79 → a615e33}/config/fileMap.json +0 -0
- /package/static/{b969c79 → a615e33}/config/webExtensions.json +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/Actions.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/Animation.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/Drag.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/EditorHover.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/Highlight.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/IconButton.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ImagePreview.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/InputBox.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/Label.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/Markdown.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/MaskIcon.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ScrollBar.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/TreeItem.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletActivityBar.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletAudio.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletColorPicker.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletDebugConsole.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletDialog.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletDiffEditor.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletEditor.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletEditorCompletion.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletEditorImage.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletExplorer.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletExtensionDetail.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletExtensions.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletFindWidget.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletKeyBindings.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletList.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletMain.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletOutput.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletPanel.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletPdf.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletProblems.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletQuickPick.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletReferences.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletRunAndDebug.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletSearch.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletSideBar.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletSimpleBrowser.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletSourceControl.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletStatusBar.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletTerminal.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletTitleBar.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletTitleBarMenuBar.css +0 -0
- /package/static/{b969c79 → a615e33}/css/parts/ViewletVideo.css +0 -0
- /package/static/{b969c79 → a615e33}/fonts/FiraCode-VariableFont.ttf +0 -0
- /package/static/{b969c79 → a615e33}/icons/add.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/arrow-down.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/arrow-left.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/arrow-right.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/arrow-up.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/blank.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/book.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/case-sensitive.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/check.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/chevron-down.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/chevron-left.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/chevron-right.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/chevron-up.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/chrome-close.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/chrome-maximize.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/chrome-minimize.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/clear-all.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/close.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/collapse-all.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-all.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-alt-2.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-alt-small.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-alt.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-breakpoint-conditional-unverified.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-breakpoint-conditional.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-breakpoint-data-unverified.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-breakpoint-data.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-breakpoint-function-unverified.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-breakpoint-function.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-breakpoint-log-unverified.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-breakpoint-log.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-breakpoint-unsupported.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-console.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-continue-small.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-continue.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-coverage.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-disconnect.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-line-by-line.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-pause.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-rerun.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-restart-frame.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-restart.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-reverse-continue.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-stackframe-active.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-stackframe.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-start.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-step-back.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-step-into.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-step-out.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-step-over.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug-stop.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/debug.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/discard.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/ellipsis.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/exclude.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/extensionDefaultIcon.png +0 -0
- /package/static/{b969c79 → a615e33}/icons/extensions.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/files.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/filter.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/go-to-file.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/icon-close.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/icon-source-control.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/icon-sync.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/icon.png +0 -0
- /package/static/{b969c79 → a615e33}/icons/language-icon.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/link-external.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/list-flat.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/new-file.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/new-folder.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/newline.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/open-preview.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/pwa-icon-192.png +0 -0
- /package/static/{b969c79 → a615e33}/icons/pwa-icon-512.png +0 -0
- /package/static/{b969c79 → a615e33}/icons/refresh.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/regex.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/remove.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/replace-all.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/search.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/settings-gear.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/source-control.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/symbol-array.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/symbol-boolean.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/symbol-class.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/symbol-color.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/symbol-constant.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/symbol-enum-member.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/symbol-enum.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/symbol-event.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/symbol-field.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/symbol-file.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/symbol-interface.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/symbol-key.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/symbol-keyword.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/symbol-method.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/symbol-misc.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/symbol-namespace.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/symbol-numeric.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/symbol-operator.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/symbol-parameter.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/symbol-property.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/symbol-ruler.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/symbol-snippet.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/symbol-string.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/symbol-structure.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/symbol-variable.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/theme-icon.png +0 -0
- /package/static/{b969c79 → a615e33}/icons/triangle-down.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/triangle-left.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/triangle-right.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/triangle-up.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/whole-word.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/zoom-in.svg +0 -0
- /package/static/{b969c79 → a615e33}/icons/zoom-out.svg +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/dist/extensionHostWorkerMain.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/dist/extensionHostWorkerMain.js.map +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/extensionHostWorkerMain.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/Ajax/Ajax.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/Api/Api.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/Assert/Assert.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/BabelNodeType/BabelNodeType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/BabelParseError/BabelParseError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/BabelParser/BabelParser.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/Callback/Callback.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/CodeFrameColumns/CodeFrameColumns.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/Command/Command.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/CommandMap/CommandMap.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/CommandNotFoundError/CommandNotFoundError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ContentSecurityPolicyError/ContentSecurityPolicyError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ContentSecurityPolicyErrorState/ContentSecurityPolicyErrorState.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/DependencyNotFoundError/DependencyNotFoundError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/EditorCompletionType/EditorCompletionType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ErrorCodes/ErrorCodes.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ErrorHandling/ErrorHandling.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ErrorType/ErrorType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ExecError/ExecError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ExtensionActivationError/ExtensionActivationError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ExtensionHostAjax/ExtensionHostAjax.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ExtensionHostBraceCompletion/ExtensionHostBraceCompletion.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ExtensionHostClosingTag/ExtensionHostClosingTag.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ExtensionHostCommand/ExtensionHostCommand.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ExtensionHostCommandType/ExtensionHostCommandType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ExtensionHostCompletion/ExtensionHostCompletion.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ExtensionHostConfiguration/ExtensionHostConfiguration.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ExtensionHostDebug/ExtensionHostDebug.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ExtensionHostDefinition/ExtensionHostDefinition.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ExtensionHostEnv/ExtensionHostEnv.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ExtensionHostExec/ExtensionHostExec.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ExtensionHostExtension/ExtensionHostExtension.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ExtensionHostFileSystem/ExtensionHostFileSystem.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ExtensionHostFormatting/ExtensionHostFormatting.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ExtensionHostHelperProcess/ExtensionHostHelperProcess.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ExtensionHostHelperProcessIpc/ExtensionHostHelperProcessIpc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ExtensionHostHelperProcessIpcType/ExtensionHostHelperProcessIpcType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ExtensionHostHelperProcessRpc/ExtensionHostHelperProcessRpc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ExtensionHostImplementation/ExtensionHostImplementation.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ExtensionHostMockExec/ExtensionHostMockExec.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ExtensionHostNotification/ExtensionHostNotification.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ExtensionHostReference/ExtensionHostReference.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ExtensionHostSourceControl/ExtensionHostSourceControl.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ExtensionHostTabCompletion/ExtensionHostTabCompletion.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ExtensionHostTextDocument/ExtensionHostTextDocument.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ExtensionHostTextSearch/ExtensionHostTextSearch.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ExtensionHostTypeDefinition/ExtensionHostTypeDefinition.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ExtensionHostWorker/ExtensionHostWorker.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ExtensionHostWorkspace/ExtensionHostWorkspace.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/FunctionFromString/FunctionFromString.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/GetBabelAstDependencies/GetBabelAstDependencies.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/GetErrorConstructor/GetErrorConstructor.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/GetErrorResponse/GetErrorResponse.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/GetExtensionAbsolutePath/GetExtensionAbsolutePath.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/GetExtensionId/GetExtensionId.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/GetLineAndColumn/GetLineAndColumn.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/GetResponse/GetResponse.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/GetSuccessResponse/GetSuccessResponse.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/HandleContentSecurityPolicyViolation/HandleContentSecurityPolicyViolation.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/HttpStatusCode/HttpStatusCode.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/Id/Id.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/ImportScript/ImportScript.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/IpcChild/IpcChild.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/IpcChild/IpcChildWithMessagePort.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/IpcChild/IpcChildWithModuleWorker.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/IpcChild/IpcChildWithModuleWorkerAndMessagePort.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/IpcChild/IpcChildWithReferencePort.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/IpcChildModule/IpcChildModule.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/IpcChildType/IpcChildType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/IpcParent/IpcParent.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/IpcParentModule/IpcParentModule.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/IpcParentType/IpcParentType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/IpcParentWithElectronMessagePort/IpcParentWithElectronMessagePort.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/IpcParentWithWebSocket/IpcParentWithWebSocket.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/IsBabelParseError/IsBabelParseError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/IsElectron/IsElectron.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/IsImportError/IsImportError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/IsImportErrorChrome/IsImportErrorChrome.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/IsImportErrorFirefox/IsImportErrorFirefox.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/IsSyntaxError/IsSyntaxError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/JoinLines/JoinLines.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/Json/Json.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/JsonRpc/JsonRpc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/JsonRpcError/JsonRpcError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/JsonRpcErrorCode/JsonRpcErrorCode.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/JsonRpcVersion/JsonRpcVersion.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/Location/Location.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/NameAnonymousFunction/NameAnonymousFunction.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/PrettyError/PrettyError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/Registry/Registry.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/RestoreJsonRpcError/RestoreJsonRpcError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/Rpc/Rpc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/SplitLines/SplitLines.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/TextSearchResultType/TextSearchResultType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/Timeout/Timeout.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/TryToGetActualErrorMessageWhenNetworkRequestSucceeds/TryToGetActualErrorMessageWhenNetworkRequestSucceeds.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/TryToGetActualImportErrorMessage/TryToGetActualImportErrorMessage.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/Url/Url.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/VError/VError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/Validation/Validation.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/WaitForWebSocketToBeOpen/WaitForWebSocketToBeOpen.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/extension-host-worker/src/parts/WebSocketProtocol/WebSocketProtocol.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Action/Action.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ActionButton/ActionButton.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ActionDefault/ActionDefault.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ActionFilter/ActionFilter.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ActionSelect/ActionSelect.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ActionType/ActionType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Actions/Actions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ActivityBarItemFlags/ActivityBarItemFlags.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/AllowedDragEffectType/AllowedDragEffectType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/AriaAlert/AriaAlert.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/AriaAlertState/AriaAlertState.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/AriaAutoCompleteType/AriaAutoCompleteType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/AriaBoolean/AriaBoolean.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/AriaLiveType/AriaLiveType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/AriaOrientationType/AriaOrientationType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/AriaRoleDescriptionType/AriaRoleDescriptionType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/AriaRoles/AriaRoles.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Assert/Assert.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/AssertionError/AssertionError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Audio/Audio.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Audio/Audio.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/BackDrop/BackDrop.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Callback/Callback.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ClipBoard/ClipBoard.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ClipBoard/ClipBoard.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ClipBoardData/ClipBoardData.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ClipBoardDataType/ClipBoardDataType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Command/Command.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ComponentUid/ComponentUid.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ConfirmPrompt/ConfirmPrompt.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ConfirmPrompt/ConfirmPrompt.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Context/Context.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Css/Css.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Css/Css.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/DataTransfer/DataTransfer.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/DataTransferType/DataTransferType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/DebugValueType/DebugValueType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Developer/Developer.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Developer/Developer.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/DirentType/DirentType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/DomAttributeType/DomAttributeType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/DomEventOptions/DomEventOptions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/DomEventType/DomEventType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Download/Download.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Download/Download.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/DropEffectType/DropEffectType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Editor/Editor.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Editor/EditorEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Editor/EditorFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Editor/EditorHelper.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Editor/LayerCursor.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Editor/LayerDecoration2.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Editor/LayerDiagnostics.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Editor/LayerLineNumbers.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Editor/LayerMarker.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Editor/LayerScreenReader.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Editor/LayerScrollBar.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Editor/LayerSelections.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Editor/LayerText.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/EditorError/EditorError.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/EditorError/EditorError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/EditorHover/EditorHover.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/EditorHover/EditorHover.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/EditorRename/EditorRename.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/EditorRename/EditorRename.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ElementTagMap/ElementTagMap.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ElementTags/ElementTags.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/EnterKeyHintType/EnterKeyHintType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ErrorHandling/ErrorHandling.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Errors/JsonRpcError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Eval/Eval.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Eval/Eval.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Event/Event.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/FilePicker/FilePicker.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/FilePicker/FilePicker.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/FileSystemHandle/FileSystemHandle.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/FileSystemHandle/FileSystemHandle.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/FirstWorkerEventType/FirstWorkerEventType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Focus/Focus.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/GetFileHandlesFromDataTransferItems/GetFileHandlesFromDataTransferItems.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/GetFirstWorkerEvent/GetFirstWorkerEvent.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/GetModifierKey/GetModifierKey.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/GetResponse/GetResponse.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/GetWorkerDisplayName/GetWorkerDisplayName.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/HandleContextMenu/HandleContextMenu.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/HttpStatusCode/HttpStatusCode.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Icon/Icon.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/IconButton/IconButton.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Id/Id.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ImagePreview/ImagePreview.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ImagePreview/ImagePreview.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/InitData/InitData.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/InitData/InitData.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/InputBox/InputBox.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/InputEventType/InputEventType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/InputType/InputType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/IpcClient/IpcClient.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/IpcParent/IpcParent.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/IpcParentModule/IpcParentModule.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/IpcParentType/IpcParentType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/IpcParentWithElectron/IpcParentWithElectron.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/IpcParentWithMessagePort/IpcParentWithMessagePort.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/IpcParentWithModuleWorker/IpcParentWithModuleWorker.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/IpcParentWithModuleWorkerWithMessagePort/IpcParentWithModuleWorkerWithMessagePort.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/IpcParentWithReferencePort/IpcParentWithReferencePort.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/IsChromeExtensionError/IsChromeExtensionError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/IsFileSystemAccessNotSupportedOnFireFoxError/IsFileSystemAccessNotSupportedOnFirefoxError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/IsFirefoxWorkerError/IsFirefoxWorkerError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/IsHtmlElement/IsHtmlElement.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/JsonRpcVersion/JsonRpcVersion.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/KeyBindings/KeyBindings.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/KeyBindings/KeyBindings.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/KeyBindingsEvents/KeyBindingsEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/KeyBindingsState/KeyBindingsState.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Label/Label.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Layout/Layout.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Layout/Layout.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Location/Location.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Location/Location.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Logger/Logger.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/MaskIcon/MaskIcon.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/MaskImage/MaskImage.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/MenuEntryId/MenuEntryId.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/MenuItem/MenuItem.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/MenuItemFlags/MenuItemFlags.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Meta/Meta.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Meta/Meta.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ModifierKey/ModifierKey.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Module/Module.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ModuleId/ModuleId.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ModuleMap/ModuleMap.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ModuleWorkersAreNotSupportedInFirefoxError/ModuleWorkersAreNotSupportedInFirefoxError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/MouseEventType/MouseEventType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Notification/Notification.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Notification/Notification.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/OffscreenCanvas/OffscreenCanvas.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/OffscreenCanvas/OffscreenCanvas.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/OldMenu/Menu.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/OldMenu/Menu.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/OldMenu/Menu2.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Open/Open.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Open/Open.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Performance/Performance.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Performance/Performance.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/PlatformType/PlatformType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Renderer/Renderer.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Renderer/RendererExtension.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Renderer/RendererQuickPick.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Renderer/RendererSearchResult.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Renderer/RendererSuggestWidget.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Renderer/RendererTree.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/RendererWorker/RendererWorker.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/SanitizeHtml/SanitizeHtml.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/SanitizeHtml/SanitizeHtml.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ServiceWorker/ServiceWorker.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ServiceWorker/ServiceWorker.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/SetBounds/SetBounds.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Tab/Tab.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Terminal/Terminal.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Terminal/Terminal.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/TestFrameWork/ConditionErrorMap.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/TestFrameWork/ConditionErrors.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/TestFrameWork/ElementActions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/TestFrameWork/HtmlElements.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/TestFrameWork/KeyBoardActions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/TestFrameWork/MultiElementConditions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/TestFrameWork/QuerySelector.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/TestFrameWork/SingleElementConditions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/TestFrameWork/TestFrameWork.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/TestFrameWork/TestFrameWork.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/TouchEvent/TouchEvent.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Transferrable/Transferrable.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Transferrable/Transferrable.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/TryToGetActualWorkerErrorMessage/TryToGetActualWorkerErrorMessage.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/VError/VError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Viewlet/ExplorerModel.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Viewlet/TreeProviderJson.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Viewlet/TreeProviderNpm.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Viewlet/TreeView.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Viewlet/TreeView2.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Viewlet/TreeViewClass.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Viewlet/TreeViewNumber.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Viewlet/Viewlet.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Viewlet/Viewlet.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Viewlet/ViewletList.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletActivityBar/ViewletActivityBar.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletActivityBar/ViewletActivityBarEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletActivityBar/ViewletActivityBarFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletAudio/ViewletAudio.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletAudio/ViewletAudioEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletAudio/ViewletAudioFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletClock/ViewletClock.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletColorPicker/ViewletColorPicker.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletColorPicker/ViewletColorPickerEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletColorPicker/ViewletColorPickerFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletDebugConsole/ViewletDebugConsole.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletDialog/ViewletDialog.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletDialog/ViewletDialogEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletDialog/ViewletDialogFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletDiffEditor/ViewletDiffEditor.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletDiffEditor/ViewletDiffEditorEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletDiffEditor/ViewletDiffEditorFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletEditorCompletion/ViewletEditorCompletion.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletEditorCompletion/ViewletEditorCompletionEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletEditorCompletion/ViewletEditorCompletionFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletEditorImage/ViewletEditorImage.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletEditorImage/ViewletEditorImageEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletEditorImage/ViewletEditorImageFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletEditorPlainText/ViewletEditorPlainText.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletEditorPlainText/ViewletOutputEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletEditorText/ViewletEditorText.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletEmpty/ViewletEmpty.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletError/ViewletError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletExplorer/ViewletExplorer.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletExplorer/ViewletExplorerEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletExplorer/ViewletExplorerFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletExtensionDetail/ViewletExtensionDetail.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletExtensionDetail/ViewletExtensionDetailEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletExtensionDetail/ViewletExtensionDetailFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletExtensions/ViewletExtensions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletExtensions/ViewletExtensionsEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletExtensions/ViewletExtensionsFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletFindWidget/ViewletFindWidget.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletFindWidget/ViewletFindWidgetEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletFindWidget/ViewletFindWidgetFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletIframe/ViewletIframe.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletImplementations/ViewletImplementations.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletKeyBindings/ViewletKeyBindings.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletKeyBindings/ViewletKeyBindingsEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletKeyBindings/ViewletKeyBindingsFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletLayout/ViewletLayout.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletLayout/ViewletLayoutEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletLayout/ViewletLayoutFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletList/ViewletList.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletLocations/ViewletLocations.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletMain/ViewletMain.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletMain/ViewletMainEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletMain/ViewletMainFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletMainTabs/ViewletMainTabEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletMainTabs/ViewletMainTabs.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletMainTabs/ViewletMainTabsFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletModule/ViewletModule.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletModuleId/ViewletModuleId.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletOutput/ViewletOutput.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletOutput/ViewletOutputEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletOutput/ViewletOutputFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletPanel/ViewletPanel.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletPanel/ViewletPanelEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletPanel/ViewletPanelFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletPdf/ViewletPdf.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletPdf/ViewletPdfEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletProblems/ViewletProblems.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletProblems/ViewletProblemsEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletProblems/ViewletProblemsFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletQuickPick/ViewletQuickPick.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletQuickPick/ViewletQuickPickEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletQuickPick/ViewletQuickPickFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletReferences/ViewletReferences.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletRunAndDebug/ViewletRunAndDebug.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletRunAndDebug/ViewletRunAndDebugEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletRunAndDebug/ViewletRunAndDebugFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletSash/ViewletSash.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletSash/ViewletSashEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletSash/ViewletSashFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletScrollable/ViewletScrollable.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletSearch/ViewletSearch.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletSearch/ViewletSearchEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletSearch/ViewletSearchFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletSideBar/ViewletSideBar.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowser.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletSizable/ViewletSizable.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletSize/ViewletSize.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletSizeClassName/ViewletSizeClassName.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletSizeMap/ViewletSizeMap.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletSourceControl/ViewletSourceControl.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletSourceControl/ViewletSourceControlEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletSourceControl/ViewletSourceControlFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletStatusBar/ViewletStatusBar.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletTerminal/ViewletTerminal.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletTerminal/ViewletTerminalEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletTerminal/ViewletTerminalFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletTitleBar/ViewletTitleBar.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletTitleBar/ViewletTitleBarEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletTitleBar/ViewletTitleBarFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletTitleBarButtons/ViewletTitleBarButtons.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletTitleBarButtons/ViewletTitleBarButtonsEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletTitleBarButtons/ViewletTitleBarButtonsFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletTitleBarIcon/ViewletTitleBarIcon.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletTitleBarIcon/ViewletTitleBarIconEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletTitleBarIcon/ViewletTitleBarIconFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBar.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletVideo/ViewletVideo.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletVideo/ViewletVideoEvents.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/ViewletVideo/ViewletVideoFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/VirtualDom/VirtualDom.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/VirtualDomElement/VirtualDomElement.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/VirtualDomElementProps/VirtualDomElementProps.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/VirtualDomElements/VirtualDomElements.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/WebStorage/WebStorage.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/WebStorage/WebStorage.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/WebStorageType/WebStorageType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/WheelEventType/WheelEventType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Widget/Widget.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/WidgetManager/WidgetManager.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Window/Window.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/Window/Window.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/parts/WorkerType/WorkerType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/rendererProcessMain.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-process/src/shared/findIndex.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/About/About.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/About/About.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ActionType/ActionType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ActivityBarItemFlags/ActivityBarItemFlags.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Ajax/Ajax.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Ajax/Ajax.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Arrays/Arrays.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Arrow/Arrow.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Assert/Assert.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/AssertionError/AssertionError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Audio/Audio.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Audio/Audio.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/AutoClosing/AutoClosing.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/AutoUpdater/AutoUpdater.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/AutoUpdater/AutoUpdater.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/BabelNodeType/BabelNodeType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/BabelParseError/BabelParseError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/BabelParser/BabelParser.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/BackgroundTabs/BackgroundTabs.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Base64/Base64.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Base64/Base64.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/BeforeInput/BeforeInput.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Blob/Blob.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Blob/Blob.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/BlobSrc/BlobSrc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Bracket/Bracket.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/BrowserErrorTypes/BrowserErrorTypes.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/BrowserSearchSuggestions/BrowserSearchSuggestions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/BrowserSearchSuggestionsFromGoogle/BrowserSearchSuggestionsFromGoogle.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/BulkReplacement/BulkReplacement.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/BulkReplacement/BulkReplacement.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/CacheStorage/CacheStorage.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/CacheStorage/CacheStorage.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Callback/Callback.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Callback/Callback.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Character/Character.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Chrome/Chrome.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Chrome/Chrome.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ChromeExtension/ChromeExtension.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ChromeExtension/ChromeExtension.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ChromeExtensionType/ChromeExtensionType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ChromeExtensionUrl/ChromeExtensionUrl.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Clamp/Clamp.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/CleanStack/CleanStack.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ClickDetailType/ClickDetailType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ClipBoard/ClipBoard.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ClipBoard/ClipBoard.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/CodeFrameColumns/CodeFrameColumns.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ColorPicker/ColorPicker.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ColorPicker/ColorPicker.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ColorTheme/Color.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ColorTheme/ColorTheme.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ColorTheme/ColorTheme.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ColorThemeFromJson/ColorThemeFromJson.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ColorThemeFromJson/ColorThemeFromJson.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Command/Command.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/CommandNotFoundError/CommandNotFoundError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Compare/Compare.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/CompareResultType/CompareResultType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Completions/Completions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ComputeLinks/ComputeLinks.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ConfirmPrompt/ConfirmPrompt.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ConfirmPrompt/ConfirmPrompt.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ContentSecurityPolicyError/ContentSecurityPolicyError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ContentSecurityPolicyErrorState/ContentSecurityPolicyErrorState.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ContentTracing/ContentTracing.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ContentTracing/ContentTracing.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Context/ContextImpl.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ContextMenu/ContextMenu.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ContextMenu/ContextMenu.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ContextMenu/ContextMenuBrowser.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ContextMenu/ContextMenuElectron.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/CreateTable/CreateTable.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Css/Css.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Debug/Debug.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/DebugDisplay/DebugDisplay.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/DebugPausedReason/DebugPausedReason.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/DebugScopeChainType/DebugScopeChainType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/DebugScopeType/DebugScopeType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/DebugState/DebugState.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/DebugValueType/DebugValueType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/DecorationClassName/DecorationClassName.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/DecorationType/DecorationType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/DefaultIcon/DefaultIcon.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/DependencyNotFoundError/DependencyNotFoundError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Developer/Developer.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Developer/Developer.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Diagnostics/Diagnostics.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Dialog/Dialog.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Dialog/Dialog.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Diff/Diff.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/DiffDom/DiffDom.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/DifferenceType/DifferenceType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/DirentType/DirentType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/DomExceptionType/DomExceptionType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/DomMatrix/DomMatrix.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Download/Download.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Download/Download.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditOrigin/EditOrigin.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Editor/Editor.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Editor/EditorCursor.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Editor/EditorScrolling.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Editor/EditorSelection.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Editor/EditorText.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandApplyEdit.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandBlur.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandBraceCompletion.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCancelSelection.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCloseCompletion.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCompletion.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandComposition.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCopy.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCopyLineDown.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCopyLineUp.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorCharacterLeft.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorCharacterRight.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorDown.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorEnd.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorHome.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorHorizontalLeft.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorHorizontalRight.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorSet.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorUp.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorVertical.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorWordLeft.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorWordPartLeft.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorWordPartRight.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorWordRight.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCut.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCutLine.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCutSelectedText.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteAllLeft.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteAllRight.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteCharacterLeft.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteCharacterRight.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteHorizontal.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteHorizontalLeft.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteHorizontalRight.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteSelection.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteWordLeft.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteWordPartLeft.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteWordPartRight.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteWordRight.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDelta.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandFormat.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandGetPositionLeft.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandGetPositionRight.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandGetSelectionFromNativeRange.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandGetWordAt.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandGoTo.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandGoToDefinition.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandGoToTypeDefinition.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleContextMenu.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleDoubleClick.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleMouseDown.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleMouseMove.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleMouseMoveWithAltKey.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleNativeBeforeInputFromContentEditable.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleNativeSelectionChange.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandlePointerCaptureLost.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleScrollBarHorizontalMove.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleScrollBarHorizontalPointerDown.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleScrollBarMove.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleScrollBarPointerDown.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleSingleClick.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleTab.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleTouchEnd.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleTouchMove.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleTouchStart.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleTripleClick.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleWheel.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandIndent.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandIndentLess.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandIndentMore.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandIndentSelection.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandInsertLineBreak.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandMoveLineDown.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandMoveLineUp.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandMoveRectangleSelection.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandMoveRectangleSelectionPx.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandMoveSelection.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandMoveSelectionPx.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandOpenFind.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandPaste.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandPasteText.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandPosition.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandReplaceRange.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandReplaceSelection.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSave.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectAll.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectAllLeft.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectAllOccurrences.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectAllRight.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectCharacterLeft.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectCharacterRight.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectDown.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectHorizontalLeft.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectHorizontalRight.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectInsideString.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectLine.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectNextOccurrence.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectPreviousOccurrence.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectUp.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectWord.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectWordLeft.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectWordRight.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelection.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSetDecorations.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSetDelta.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSetLanguageId.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSetSelections.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandShowMessage.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSnippet.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSortLinesAscending.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandTabCompletion.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandToggleBlockComment.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandToggleComment.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandToggleLineComment.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandTypeWithAutoClosing.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandTypeWithAutoClosingBracket.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandTypeWithAutoClosingQuote.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandTypeWithAutoClosingTag.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandUndo.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandUnindent.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/EditorIndent.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCommand/RunEditorWidgetFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCompletionMap/EditorCompletionMap.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCompletionState/EditorCompletionState.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorCompletionType/EditorCompletionType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorDiagnostics/EditorDiagnostics.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorDiagnostics/EditorDiagnostics.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorError/EditorError.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorError/EditorError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorFunctionType/EditorFunctionType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorMoveSelectionAnchorState/EditorMoveSelectionAnchorState.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorRename/EditorRename.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorRename/EditorRename.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorSelection/EditorSelection.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorSelectionAutoMoveState/EditorSelectionAutoMoveState.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EditorSplitDirectionType/EditorSplitDirectionType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ElectronApp/ElectronApp.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ElectronApp/ElectronApp.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ElectronApplicationMenu/ElectronApplicationMenu.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ElectronApplicationMenu/ElectronApplicationMenu.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ElectronBrowserView/ElectronBrowserView.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ElectronBrowserView/ElectronBrowserView.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ElectronBrowserViewFunctions/ElectronBrowserViewFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ElectronBrowserViewQuickPick/ElectronBrowserViewQuickPick.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ElectronBrowserViewSuggestions/ElectronBrowserViewSuggestions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ElectronClipBoard/ElectronClipBoard.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ElectronClipBoard/ElectronClipBoard.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ElectronContentTracing/ElectronContentTracing.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ElectronContextMenu/ElectronContextMenu.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ElectronContextMenu/ElectronContextMenu.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ElectronDeveloper/ElectronDeveloper.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ElectronDialog/ElectronDialog.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ElectronMenuItemFlags/ElectronMenuItemFlags.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ElectronMenuItemRole/ElectronMenuItemRole.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ElectronMenuItemType/ElectronMenuItemType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ElectronMessageBoxType/ElectronMessageBoxType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ElectronNet/ElectronNet.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ElectronNetLog/ElectronNetLog.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ElectronPowerSaveBlocker/ElectronPowerSaveBlocker.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ElectronProcess/ElectronProcess.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ElectronSafeStorage/ElectronSafeStorage.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ElectronShell/ElectronShell.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ElectronWindow/ElectronWindow.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ElectronWindow/ElectronWindow.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ElectronWindowAbout/ElectronWindowAbout.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ElectronWindowProcessExplorer/ElectronWindowProcessExplorer.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/EncodingType/EncodingType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ErrorCodes/ErrorCodes.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ErrorHandling/ErrorHandling.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ErrorHandling/ErrorHandling.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ErrorType/ErrorType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Errors/CancelationError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Errors/Errors.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Eval/Eval.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Eval/Eval.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExecuteMenuItemCommand/ExecuteMenuItemCommand.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExecuteTest/ExecuteTest.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExplorerEditingType/ExplorerEditingType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExposeGlobals/ExposeGlobals.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionDisplay/ExtensionDisplay.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionFilterParameter/ExtensionFilterParameter.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostBraceCompletion.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostClosingTagCompletion.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostCompletion.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostCore.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostCore.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostDebug.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostDefinition.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostDiagnostic.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostEditor.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostFileSystem.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostFormatting.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostHover.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostImplementation.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostLanguages.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostLanguagesNode.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostLanguagesWeb.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostOutput.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostQuickPick.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostReference.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostRename.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostSemanticTokens.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostShared.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostSourceControl.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostStatusBarItems.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostTabCompletion.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostTextDocument.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostTextSearch.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostTypeDefinition.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHost/shared.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHostActivationEvent/ExtensionHostActivationEvent.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHostCommandType/ExtensionHostCommandType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHostIpc/ExtensionHostIpc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHostManagement/ExtensionHostManagement.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHostManagement/ExtensionHostManagementBrowser.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHostManagement/ExtensionHostManagementElectron.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHostManagement/ExtensionHostManagementNode.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHostManagement/ExtensionHostManagementShared.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionHostRpc/ExtensionHostRpc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionManagement/ExtensionManagement.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionManifestStatus/ExtensionManifestStatus.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionMarketplace/ExtensionMarketplace.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionMeta/ExtensionMeta.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionMeta/ExtensionMeta.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionStatus/ExtensionStatus.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Extensions/Extensions.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Extensions/Extensions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ExtensionsSomething/ExtensionsSomething.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FileHandleEditMode/FileHandleEditMode.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FileHandlePermissionType/FileHandlePermissionType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FileHandleType/FileHandleType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FileHandleTypeMap/FileHandleTypeMap.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FileNotFoundError/FileNotFoundError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FilePicker/FilePicker.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FilePicker/FilePicker.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FileSearchCache/FileSearchCache.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FileSystem/FileSystem.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FileSystem/FileSystem.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FileSystem/FileSystemApp.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FileSystem/FileSystemAppMemoryUsage.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FileSystem/FileSystemAppRecentlyOpened.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FileSystem/FileSystemAppSession.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FileSystem/FileSystemAppSettings.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FileSystem/FileSystemAppShared.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FileSystem/FileSystemAppStartupPerformance.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FileSystem/FileSystemData.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FileSystem/FileSystemDisk.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FileSystem/FileSystemFetch.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FileSystem/FileSystemGitHub.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FileSystem/FileSystemHtml.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FileSystem/FileSystemMemory.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FileSystem/FileSystemWeb.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FileSystemDirectoryHandle/FileSystemDirectoryHandle.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FileSystemFileHandle/FileSystemFileHandle.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FileSystemHandlePermission/FileSystemHandlePermission.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FileSystemProtocol/FileSystemProtocol.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FilterCompletionItem/FilterCompletionItem.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FilterCompletionItems/FilterCompletionItems.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FilterKeyBindings/FilterKeyBindings.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FilterQuickPickItems/FilterQuickPickItems.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FirstWorkerEventType/FirstWorkerEventType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Focus/Focus.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Font/Font.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Format/Format.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Format/Format.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FuzzySearch/FuzzySearch.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/FuzzySearch/FuzzySearchMrAleph.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetAccurateColumnIndex/GetAccurateColumnIndex.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetBabelAstDependencies/GetBabelAstDependencies.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetBulkReplacementEdits/GetBulkReplacementEdits.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetCompletionItemScore/GetCompletionItemScore.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetDecorationClassName/GetDecorationClassName.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetDeleteHorizonatlLeftChanges/GetDeleteHorizontalLeftChanges.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetEditorSplitDirectionType/GetEditorSplitDirectionType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetErrorConstructor/GetErrorConstructor.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetErrorResponse/GetErrorResponse.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetExtensionReadme/GetExtensionReadme.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetFileExtension/GetFileExtension.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetFileSystem/GetFileSystem.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetFinalDeltaY/GetFinalDeltaY.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetFirstWorkerEvent/GetFirstWorkerEvent.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetLineAndColumn/GetLineAndColumn.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetListHeight/GetListHeight.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetNewLineIndex/GetNewLineIndex.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetProtocol/GetProtocol.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetResponse/GetResponse.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetSplitDimensions/GetSplitDimensions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetSplitDimensionsDown/GetSplitDimensionsDown.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetSplitDimensionsLeft/GetSplitDimensionsLeft.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetSplitDimensionsRight/GetSplitDimensionsRight.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetSplitDimensionsUp/GetSplitDimensionsUp.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetSplitOverlayDimensions/GetSplitOverlayDimensions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetSuccessResponse/GetSuccessResponse.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetTokensViewport/GetTokensViewport.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetViewletSize/GetViewletSize.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetVisibleCompletionItems/GetVisibleCompletionItems.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetVisibleExtensions/GetVisibleExtensions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetVisibleQuickPickItems/GetVisibleQuickPickItems.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GetWorkerDisplayName/GetWorkerDisplayName.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GitHubDirentType/GitHubDirentType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GitHubRestApi/GitHubRestApi.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GitLsFiles/GitLsFiles.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GlobalEventBus/GlobalEventBus.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/GridLayout/GridLayout.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Headers/Headers.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Height/Height.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Highlight/Highlight.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/History/History.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/HtmlFile/HtmlFile.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/HttpStatusCode/HttpStatusCode.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/I18NString/I18NString.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Icon/Icon.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IconTheme/IconTheme.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IconTheme/IconTheme.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Id/Id.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IframeSrc/IframeSrc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ImagePreview/ImagePreview.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ImagePreview/ImagePreview.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ImportScript/ImportScript.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IndexedDb/IndexedDb.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IndexedDb/IndexedDb.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/InitData/InitData.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/InputCursorLeft/InputCursorLeft.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/InputCursorRight/InputCursorRight.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/InputDeleteCharacterLeft/InputDeleteCharacterLeft.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/InputDeleteCharacterRight/InputDeleteCharacterRight.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/InputEventType/InputEventType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/InstallExtension/InstallExtension.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IpcChild/IpcChild.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IpcChildModule/IpcChildModule.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IpcChildType/IpcChildType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IpcChildWithMessagePort/IpcChildWithMessagePort.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IpcChildWithModuleWorker/IpcChildWithModuleWorker.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IpcChildWithReferencePort/IpcChildWithReferencePort.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IpcParent/IpcParent.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IpcParentModule/IpcParentModule.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IpcParentType/IpcParentType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IpcParentWithElectron/IpcParentWithElectron.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IpcParentWithMessagePort/IpcParentWithMessagePort.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IpcParentWithModuleWorker/IpcParentWithModuleWorker.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IpcParentWithModuleWorkerAndWorkaroundForChromeDevtoolsBug/IpcParentWithModuleWorkerAndWorkaroundForChromeDevtoolsBug.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IpcParentWithReferencePort/IpcParentWithReferencePort.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IpcParentWithWebSocket/IpcParentWithWebSocket.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IsAbortError/IsAbortError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IsAllAutoClosingPairDelete/IsAllAutoClosingPairDelete.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IsAscii/IsAscii.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IsAutoClosingPairDelete/IsAutoClosingPairDelete.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IsAutoUpdateSupported/IsAutoUpdateSupported.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IsBabelParseError/IsBabelParseError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IsEmptyString/IsEmptyString.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IsFirefoxWorkerError/IsFirefoxWorkerError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IsGap/IsGap.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IsImportError/IsImportError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IsImportErrorChrome/IsImportErrorChrome.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IsImportErrorFirefox/IsImportErrorFirefox.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IsLowerCase/IsLowerCase.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IsPatternInWord/IsPatternInWord.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IsSyntaxError/IsSyntaxError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IsUpperCase/IsUpperCase.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/IsWhitespace/IsWhitespace.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/JoinLines/JoinLines.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Json/Json.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/JsonRpc/JsonRpc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/JsonRpcError/JsonRpcError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/JsonRpcErrorCode/JsonRpcErrorCode.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/JsonRpcVersion/JsonRpcVersion.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/KeyBindings/KeyBindings.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/KeyBindings/KeyBindings.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/KeyBindingsInitial/KeyBindingsInitial.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/KeyBindingsInitial/KeyBindingsInitial.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/LanguageFeatures/LanguageFeatures.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Languages/Languages.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/LanguagesState/LanguagesState.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/LazyCommand/LazyCommand.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/LifeCycle/LifeCycle.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/LifeCyclePhase/LifeCyclePhase.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/List/List.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ListIndex/ListIndex.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Listener/Listener.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Listener/Listener.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/LocalStorage/LocalStorage.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/LocalStorage/LocalStorage.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Location/Location.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Logger/Logger.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Main/Main.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Main/MainCloseActiveEditor.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Main/MainCloseAllEditors.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Main/MainCloseEditorsToTheLeft.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Main/MainCloseEditorsToTheRight.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Main/MainFocusFirst.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Main/MainFocusIndex.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Main/MainFocusLast.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Main/MainFocusNext.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Main/MainFocusPrevious.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MapObject/MapObject.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Markdown/Markdown.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MeasureLongestLineWidth/MeasureLongestLineWidth.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MeasureTextWidth/MeasureTextWidth.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MeasureTextWidthState/MeasureTextWidthState.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MeasureTotalTextWidth/MeasureTotalTextWIdth.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Menu/Menu.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Menu/Menu.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MenuCore/MenuCore.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MenuEntries/MenuEntries.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MenuEntriesActivityBar/MenuEntriesActivityBar.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MenuEntriesActivityBarAdditionalViews/MenuEntriesActivityBarAdditionalViews.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MenuEntriesEdit/MenuEntriesEdit.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MenuEntriesEditor/MenuEntriesEditor.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MenuEntriesEditorImage/MenuEntriesEditorImage.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MenuEntriesExplorer/MenuEntriesExplorer.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MenuEntriesExplorer/MenuEntriesExplorerFile.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MenuEntriesExplorer/MenuEntriesExplorerFolder.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MenuEntriesExtensionDetailReadme/MenuEntriesExtensionDetailReadme.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MenuEntriesFile/MenuEntriesFile.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MenuEntriesGo/MenuEntriesGo.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MenuEntriesHelp/MenuEntriesHelp.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MenuEntriesManageExtension/MenuEntriesManageExtension.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MenuEntriesModule/MenuEntriesModule.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MenuEntriesOpenRecent/MenuEntriesOpenRecent.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MenuEntriesRun/MenuEntriesRun.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MenuEntriesSearch/MenuEntriesSearch.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MenuEntriesSelection/MenuEntriesSelection.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MenuEntriesSettings/MenuEntriesSettings.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MenuEntriesSimpleBrowser/MenuEntriesSimpleBrowser.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MenuEntriesSourceControl/MenuEntriesSourceControl.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MenuEntriesTab/MenuEntriesTab.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MenuEntriesTerminal/MenuEntriesTerminal.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MenuEntriesTitleBar/MenuEntriesTitleBar.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MenuEntriesTitleBar/MenuEntriesTitleBarRemote.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MenuEntriesTitleBar/MenuEntriesTitleBarWeb.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MenuEntriesView/MenuEntriesView.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MenuEntryId/MenuEntryId.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MenuItemFlags/MenuItemFlags.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MergeStacks/MergeStacks.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Meta/Meta.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Mime/Mime.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Mime/Mime.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MimeType/MimeType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MimeTypes/MimeTypes.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MimeTypes/MimeTypes.json +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ModifierKey/ModifierKey.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Module/Module.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ModuleId/ModuleId.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ModuleMap/ModuleMap.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ModuleWorkersAreNotSupportedInFirefoxError/ModuleWorkersAreNotSupportedInFirefoxError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/MouseEventType/MouseEventType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/NameAnonymousFunction/NameAnonymousFunction.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Navigation/Navigation.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Navigation/Navigation.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/NestedError/NestedError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/NormalizeText/NormalizeText.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Notification/Notification.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Notification/Notification.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/OffscreenCanvas/OffscreenCanvas.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Open/Open.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Open/Open.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/OpenNativeFolder/OpenNativeFolder.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/OpenNativeFolder/OpenNativeFolder.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ParseExtensionSearchValue/ParseExtensionSearchValue.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ParseKeyBindings/ParseKeyBindings.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Path/Path.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/PathSeparatorType/PathSeparatorType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/PdfWorker/PdfWorker.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/PdfWorkerFunctions/PdfWorkerFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/PdfWorkerIpc/PdfWorkerIpc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/PdfWorkerUrl/PdfWorkerUrl.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Performance/Performance.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/PerformanceMarkerType/PerformanceMarkerType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/PersistentFileHandle/PersistentFileHandle.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/PersistentFileHandle/PersistentFileHandle.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/PlatformType/PlatformType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Preferences/Preferences.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Preferences/Preferences.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/PrettyBytes/PrettyBytes.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/PrettyError/PrettyError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/PrintTable/PrintTable.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ProcessExplorer/ProcessExplorer.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ProcessExplorer/ProcessExplorerElectron.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ProcessExplorer/ProcessExplorerRemote.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ProcessExplorer/ProcessExplorerWeb.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/PromiseStatus/PromiseStatus.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Protocol/Protocol.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/QuickPIckPrefix/QuickPickPrefix.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/QuickPickEntries/QuickPickEntries.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/QuickPickEntriesColorTheme/QuickPickEntriesColorTheme.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/QuickPickEntriesCommand/QuickPickEntriesCommand.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/QuickPickEntriesEverything/QuickPickEntriesEverything.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/QuickPickEntriesFile/QuickPickEntriesFile.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/QuickPickEntriesGoToLine/QuickPickEntriesGoToLine.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/QuickPickEntriesNoop/QuickPickNoop.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/QuickPickEntriesNumber/QuickPickEntriesNumber.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/QuickPickEntriesOpenRecent/QuickPickEntriesOpenRecent.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/QuickPickEntriesSymbol/QuickPickEntriesSymbol.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/QuickPickEntriesView/QuickPickEntriesView.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/QuickPickEntriesWorkspaceSymbol/QuickPickEntriesWorkspaceSymbol.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/QuickPickEntryId/QuickPickEntryId.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/QuickPickReturnValue/QuickPickReturnValue.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Quote/Quote.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/RecentlyOpened/RecentlyOpened.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/RecentlyOpened/RecentlyOpened.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/RenderMethod/RenderMethod.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/RendererProcess/RendererProcess.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/RendererProcessIpcParentType/RendererProcessIpcParentType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/RendererWorkerCommandType/RendererWorkerCommandType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/RequestAnimationFrame/RequestAnimationFrame.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Response/Response.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/RestoreJsonRpcError/RestoreJsonRpcError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SafeTokenizeLine/SafeTokenizeLine.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SanitizeHtml/SanitizeHtml.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SashDirectionType/SashDirectionType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SashOrientation/SashOrientation.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SashType/SashType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SaveFileAs/SaveFileAs.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SaveFileAs/SaveFileAs.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SaveState/SaveState.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SaveState/SaveState.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ScrollBarFunctions/ScrollBarFunctions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SearchExtensions/SearchExtensions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SearchExtensionsLocal/SearchExtensionsLocal.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SearchExtensionsMarketplace/SearchExtensionsMarketplace.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SearchFile/SearchFile.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SearchFileMemfs/SearchFileMemfs.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SearchFileWIthGitLsFiles/SearchFileWIthGitLsFiles.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SearchFileWeb/SearchFileWeb.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SearchFileWithFetch/SearchFileWithFetch.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SearchFileWithHtml/SearchFIleWithHtml.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SearchFileWithRipGrep/SearchFileWithRipGrep.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ServiceWorker/ServiceWorker.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ServiceWorker/ServiceWorker.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SessionReplay/SessionReplay.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SessionReplay/SessionReplay.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SessionStorage/SessionStorage.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SessionStorage/SessionStorage.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SharedProcess/SharedProcess.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SharedProcessCommandType/SharedProcessCommandType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SharedProcessIpc/SharedProcessIpc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ShouldIgnoreCacheStorageError/ShouldIgnoreCacheStorageError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SideBarLocationType/SideBarLocationType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SortExplorerItems/SortExplorerItems.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SourceControl/SourceControl.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SourceControlActions/SourceControlActions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SourceMap/SourceMap.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SplitLines/SplitLines.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Storage/Storage.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SymbolName/SymbolName.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/SyntaxHighlightingWorker/SyntaxHighlightingWorker.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TabCompletion/TabCompletion.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Test/Test.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Test/Test.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TestFrameWork/Locator.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TestFrameWork/TestFrameWork.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponent.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentBaseUrl.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentCommand.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentContextMenu.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentEditor.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentEval.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentExplorer.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentExtension.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentFileSystem.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentFindWidget.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentIconTheme.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentKeyBoard.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentMain.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentPlatform.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentQuickPick.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentSearch.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentSettings.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentSideBar.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentSourceControl.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentTitleBarMenuBar.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentWorkspace.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameworkComponentActivityBar.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TestState/TestState.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TextDocument/TextDocument.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TextDocumentEditType/TextDocumentEditType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TextDocumentSearch/TextDocumentSearch.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TextSearch/TextSearch.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TextSearch/TextSearchExtension.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TextSearch/TextSearchFetch.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TextSearch/TextSearchHtml.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TextSearch/TextSearchNode.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TextSearch/TextSearchWeb.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TextSearchReplaceAll/TextSearchReplaceAll.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TextSearchResultType/TextSearchResultType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TextSegmenter/TextSegmenter.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Timeout/Timeout.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Timers/Timers.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Timestamp/Timestamp.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TitleBarButtons/TitleBarButtons.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TitleBarMenuBarEntries/TitleBarMenuBarEntries.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ToElectronMenu/ToElectronMenu.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ToElectronMenuItem/ToElectronMenuItem.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TokenizePlainText/TokenizePlainText.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Tokenizer/Tokenizer.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TokenizerState/TokenizerState.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TraceHighlights/TraceHighlights.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Transferrable/Transferrable.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TryToGetActualErrorMessageWhenNetworkRequestSucceeds/TryToGetActualErrorMessageWhenNetworkRequestSucceeds.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TryToGetActualImportErrorMessage/TryToGetActualImportErrorMessage.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/TryToGetActualWorkerErrorMessage/TryToGetActualWorkerErrorMessage.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/UploadFileSystemDirectoryHandle/UploadFileSystemDirectoryHandle.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/UploadFileSystemFileHandle/UploadFileSystemFileHandle.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/UploadFileSystemHandle/UploadFileSystemHandle.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/UploadFileSystemHandles/UploadFileSystemHandles.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Url/Url.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Url/Url.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/VError/VError.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Viewlet/Viewlet.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Viewlet/Viewlet.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Viewlet/ViewletElectron.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Viewlet/ViewletExtension.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Viewlet/ViewletExtensionsHeader.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Viewlet/ViewletExtensionsList.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletActions/ViewletActions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBar.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBar.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarCss.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarFocus.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarFocusFirst.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarFocusIndex.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarFocusLast.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarFocusNext.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarFocusPrevious.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarGetHiddenItems.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarHandleClick.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarHandleContextMenu.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarKeyBindings.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarRender.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarResize.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarSelectCurrent.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarStrings.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletAudio/ViewletAudio.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletAudio/ViewletAudio.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletAudio/ViewletAudioCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletAudio/ViewletAudioCss.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletAudio/ViewletAudioRender.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletClock/ViewletClock.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletClock/ViewletClock.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletColorPicker/ViewletColorPicker.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletColorPicker/ViewletColorPicker.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletColorPicker/ViewletColorPickerCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletColorPicker/ViewletColorPickerCss.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletColorPicker/ViewletColorPickerRender.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletContextMenu/ViewletContextMenu.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletCounter/ViewletCounter.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletCounter/ViewletCounter.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletDebugConsole/ViewletDebugConsole.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletDebugConsole/ViewletDebugConsole.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletDebugConsole/ViewletDebugConsoleActions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletDebugConsole/ViewletDebugConsoleCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletDebugConsole/ViewletDebugConsoleCss.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletDialog/ViewletDialog.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletDialog/ViewletDialog.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletDialog/ViewletDialogCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletDialog/ViewletDialogCss.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletDialog/ViewletDialogRender.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletDiffEditor/ViewletDiffEditor.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletDiffEditor/ViewletDiffEditor.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletDiffEditor/ViewletDiffEditorCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletDiffEditor/ViewletDiffEditorCss.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletEditorCompletion/ViewletEditorCompletion.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletEditorCompletion/ViewletEditorCompletion.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletEditorCompletion/ViewletEditorCompletionCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletEditorCompletion/ViewletEditorCompletionCss.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletEditorCompletion/ViewletEditorCompletionKeyBindings.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletEditorCompletion/ViewletEditorCompletionRender.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletEditorCompletion/ViewletEditorCompletionSelectCurrent.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletEditorCompletion/ViewletEditorCompletionSelectIndex.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletEditorImage/ViewletEditorImage.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletEditorImage/ViewletEditorImage.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletEditorImage/ViewletEditorImageCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletEditorImage/ViewletEditorImageCopyImage.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletEditorImage/ViewletEditorImageCopyPath.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletEditorImage/ViewletEditorImageCss.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletEditorImage/ViewletEditorImageHandleContextMenu.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletEditorImage/ViewletEditorImageKeyBindings.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletEditorImage/ViewletEditorImageRender.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletEditorImage/ViewletEditorImageStrings.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletEditorPlainText/ViewletEditorPlainText.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletEditorPlainText/ViewletEditorPlainText.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletEditorText/ViewletEditorText.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletEditorText/ViewletEditorText.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletEditorText/ViewletEditorTextCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletEditorText/ViewletEditorTextCss.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletEditorText/ViewletEditorTextKeyBindings.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletEmpty/ViewletEmpty.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorer.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorer.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerAcceptEdit.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerActions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerCss.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerExpandRecursively.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerFocus.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerFocusFirst.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerFocusIndex.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerFocusLast.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerFocusNext.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerFocusNone.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerFocusPrevious.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerHandleContextMenu.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerHandleContextMenuKeyboard.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerHandleContextMenuMouseAt.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerHandleDragOver.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerHandleDrop.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerHandleDropIndex.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerHandleDropRoot.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerHandleDropRootDefault.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerHandleDropRootElectron.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerHandlePaste.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerHandlePointerDown.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerKeyBindings.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerRender.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerShared.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerUpdateRoot.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExtensionDetail/VielwetExtensionDetailCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExtensionDetail/ViewletExtensionDetail.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExtensionDetail/ViewletExtensionDetail.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExtensionDetail/ViewletExtensionDetailCss.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExtensionDetail/ViewletExtensionDetailHandleReadmeContextMenu.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensions.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsActions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsClearSearchResults.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsCss.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsHandleClick.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsHandleClickCurrent.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsHandleClickCurrentButKeepFocus.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsHandleContextMenu.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsHandleInput.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsKeyBindings.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsRender.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsResize.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsShared.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsStrings.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletFindWidget/ViewletFindWidget.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletFindWidget/ViewletFindWidget.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletFindWidget/ViewletFindWidgetCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletFindWidget/ViewletFindWidgetCss.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletFindWidget/ViewletFindWidgetRender.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletFindWidget/ViewletFindWidgetStrings.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletIframe/ViewletIframe.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletIframe/ViewletIframe.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletImplementations/ViewletImplementations.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletImplementations/ViewletImplementations.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletKeyBindings/ViewletKeyBindings.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletKeyBindings/ViewletKeyBindings.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletKeyBindings/ViewletKeyBindingsCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletKeyBindings/ViewletKeyBindingsCss.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletKeyBindings/ViewletKeyBindingsRender.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletLayout/ViewletLayout.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletLayout/ViewletLayout.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletLayout/ViewletLayoutCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletLayout/ViewletLayoutKeyBindings.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletList/ViewletList.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletList/ViewletList.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletLocations/ViewletLocations.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletLocations/ViewletLocations.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletLocations/ViewletLocationsCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletLocations/ViewletLocationsKeyBindings.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletLocations/ViewletLocationsStrings.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletMain/ViewletMain.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletMain/ViewletMain.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletMain/ViewletMainCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletMain/ViewletMainCss.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletMain/ViewletMainKeyBindings.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletManager/ViewletManager.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletMap/ViewletMap.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletModule/ViewletModule.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletModuleId/ViewletModuleId.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletModuleInternal/ViewletModuleInternal.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletNoop/ViewletNoop.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletNoop/ViewletNoop.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletOutput/ViewletOutput.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletOutput/ViewletOutput.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletOutput/ViewletOutputActions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletOutput/ViewletOutputCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletOutput/ViewletOutputCss.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletPanel/ViewletPanel.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletPanel/ViewletPanel.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletPanel/ViewletPanelCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletPanel/ViewletPanelCss.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletPanel/ViewletPanelRender.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletPanel/ViewletPanelResize.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletPdf/ViewletPdf.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletPdf/ViewletPdf.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletPdf/ViewletPdfCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletPdf/ViewletPdfCss.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletPdf/ViewletPdfFocusPage.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletPdf/ViewletPdfNext.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletPdf/ViewletPdfPrevious.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletPdf/ViewletPdfPrint.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletPdf/ViewletPdfZoomIn.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletPdf/ViewletPdfZoomOut.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletProblems/ViewletProblems.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletProblems/ViewletProblems.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletProblems/ViewletProblemsActions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletProblems/ViewletProblemsCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletProblems/ViewletProblemsCss.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletProblems/ViewletProblemsRender.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletQuickPick/ViewletQuickPick.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletQuickPick/ViewletQuickPick.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletQuickPick/ViewletQuickPickCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletQuickPick/ViewletQuickPickCss.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletQuickPick/ViewletQuickPickFocusFirst.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletQuickPick/ViewletQuickPickFocusIndex.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletQuickPick/ViewletQuickPickFocusLast.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletQuickPick/ViewletQuickPickFocusNext.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletQuickPick/ViewletQuickPickFocusPrevious.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletQuickPick/ViewletQuickPickGetFilteredItems.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletQuickPick/ViewletQuickPickHandleBeforeInput.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletQuickPick/ViewletQuickPickHandleInput.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletQuickPick/ViewletQuickPickKeyBindings.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletQuickPick/ViewletQuickPickRender.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletQuickPick/quickpickRender.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletQuickPickElectron/ViewletQuickPickElectron.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletQuickPickElectron/ViewletQuickPickElectron.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletReferences/ViewletReferences.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletReferences/ViewletReferences.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletReferences/ViewletReferencesCss.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletRunAndDebug/ViewletRunAndDebug.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletRunAndDebug/ViewletRunAndDebug.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletRunAndDebug/ViewletRunAndDebugCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletRunAndDebug/ViewletRunAndDebugCss.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletRunAndDebug/ViewletRunAndDebugRender.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearch.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearch.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearchActions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearchClearSearchResults.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearchCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearchCopy.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearchCss.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearchDismissItem.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearchFocusFirst.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearchFocusIndex.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearchFocusLast.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearchFocusNext.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearchFocusPrevious.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearchHandleClick.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearchHandleContextMenu.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearchHandleContextMenuKeyBoard.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearchHandleContextMenuMouseAt.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearchHandleListBlur.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearchHandleListFocus.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearchHandleReplaceInput.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearchHandleToggleButtonClick.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearchHandleUpdate.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearchKeyBindings.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearchRefresh.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearchRender.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearchReplaceAll.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearchResize.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearchSelectIndex.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearchStatusMessage.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearchStrings.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearchToggleMatchCase.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearchToggleMatchWholeWord.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearchToggleUseRegularExpression.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSideBar/ViewletSideBar.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSideBar/ViewletSideBar.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSideBar/ViewletSideBarCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSideBar/ViewletSideBarCss.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSideBar/ViewletSideBarRender.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowser.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowser.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserBackward.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserCancelNavigation.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserCopyImage.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserForward.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserHandleContextMenu.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserInspectElement.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserOpenBackgroundTab.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserOpenDevtools.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserOpenExternal.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserReload.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserRender.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserResize.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSize/ViewletSize.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSourceControl/ViewletSourceControl.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSourceControl/ViewletSourceControl.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSourceControl/ViewletSourceControlAcceptInput.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSourceControl/ViewletSourceControlActions.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSourceControl/ViewletSourceControlCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSourceControl/ViewletSourceControlCss.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSourceControl/ViewletSourceControlGetDisplayItems.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSourceControl/ViewletSourceControlHandleButtonClick.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSourceControl/ViewletSourceControlHandleClick.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSourceControl/ViewletSourceControlHandleContextMenu.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSourceControl/ViewletSourceControlLoadContent.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletSourceControl/ViewletSourceControlRender.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletStates/ViewletStates.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletStatusBar/ViewletStatusBar.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletStatusBar/ViewletStatusBar.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletStatusBar/ViewletStatusBarCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletStatusBar/ViewletStatusBarCss.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletStatusBar/ViewletStatusBarRender.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTerminal/ViewletTerminal.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTerminal/ViewletTerminal.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBar/ViewletTitleBar.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBar/ViewletTitleBar.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBar/ViewletTitleBarCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBar/ViewletTitleBarCss.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBar/ViewletTitleBarRender.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBar/ViewletTitleBarResize.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarButtons/ViewletTitleBarButtons.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarButtons/ViewletTitleBarButtons.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarButtons/ViewletTitleBarButtonsCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarButtons/ViewletTitleBarButtonsCss.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarButtons/ViewletTitleBarButtonsHandleClickClose.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarButtons/ViewletTitleBarButtonsHandleClickMinimize.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarButtons/ViewletTitleBarButtonsHandleClickToggleMaximize.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarButtons/ViewletTitleBarButtonsRender.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarButtons/ViewletTitleBarButtonsResize.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarIcon/ViewletTitleBarIcon.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarIcon/ViewletTitleBarIcon.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarIcon/ViewletTitleBarIconCss.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarIcon/ViewletTitleBarIconRender.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarIcon/ViewletTitleBarIconResize.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBar.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBar.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarCloseMenu.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarCloseOneMenu.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarCss.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarFocus.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarFocusFirst.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarFocusIndex.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarFocusLast.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarFocusNext.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarFocusPrevious.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleClick.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowDown.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowDownMenuClosed.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowDownMenuOpen.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowLeft.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowLeftMenuClosed.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowLeftMenuOpen.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowRight.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowRightMenuClosed.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowRightMenuOpen.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowUp.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowUpMenuClosed.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowUpMenuOpen.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyEnd.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyEndMenuClosed.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyEndMenuOpen.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyEnter.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyEnterMenuClosed.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyEnterMenuOpen.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyEscape.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyEscapeMenuClosed.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyEscapeMenuOpen.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyHome.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyHomeMenuClosed.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyHomeMenuOpen.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeySpace.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeySpaceMenuClosed.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeySpaceMenuOpen.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleMenuMouseDown.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleMenuMouseOver.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleMouseOut.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleMouseOutMenuClosed.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleMouseOutMenuOpen.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleMouseOver.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleMouseOverMenuClosed.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleMouseOverMenuOpen.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarIfElse.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarKeyBindings.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarNoop.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarOpenMenu.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarOpenMenuAtIndex.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarRender.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarSelectIndexIgnore.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarSelectIndexNone.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarSelectIndexRestoreFocus.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarSelectIndexSubMenu.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarToggleIndex.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarToggleMenu.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTodoList/ViewletTodoList.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletTodoList/ViewletTodoList.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletVideo/ViewletVideo.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletVideo/ViewletVideo.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletVideo/ViewletVideoCommands.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletVideo/ViewletVideoCss.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletVideo/ViewletVideoRender.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/ViewletVideo/ViewletVideoStrings.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/VirtualDomElements/VirtualDomElements.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/VirtualDomHelpers/VirtualDomHelpers.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/VirtualList/VirtualList.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/VirtualList/VirtualList.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/VirtualList/VirtualListFocusFirst.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/VirtualList/VirtualListFocusIndex.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/VirtualList/VirtualListFocusLast.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/VirtualList/VirtualListFocusNext.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/VirtualList/VirtualListFocusNextPage.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/VirtualList/VirtualListFocusPrevious.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/VirtualList/VirtualListFocusPreviousPage.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/VirtualList/VirtualListHandleClickAt.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/VirtualList/VirtualListHandleScrollBarClick.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/VirtualList/VirtualListHandleScrollBarMove.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/VirtualList/VirtualListHandleTouchEnd.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/VirtualList/VirtualListHandleTouchMove.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/VirtualList/VirtualListHandleTouchStart.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/VirtualList/VirtualListHandleWheel.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/VirtualList/VirtualListSetDeltaY.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Vlq/Vlq.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/WaitForWebSocketToBeOpen/WaitForWebSocketToBeOpen.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/WebSocket/WebSocket.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/WebSocket/WebSocketNew.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/WebSocketProtocol/WebSocketProtocol.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/WebStorage/WebStorage.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/WebStorageType/WebStorageType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/WellKnownDirectoryType/WellKnownDirectoryType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/WheelEvent/WheelEvent.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/WheelEventType/WheelEventType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Window/Window.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Window/Window.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Workbench/Workbench.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Workbench/Workbench.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Worker/Worker.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/WorkerType/WorkerType.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Workspace/Workspace.ipc.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/parts/Workspace/Workspace.js +0 -0
- /package/static/{b969c79 → a615e33}/packages/renderer-worker/src/rendererWorkerMain.js +0 -0
- /package/static/{b969c79 → a615e33}/playground/languages/index.cpp +0 -0
- /package/static/{b969c79 → a615e33}/playground/languages/index.css +0 -0
- /package/static/{b969c79 → a615e33}/playground/languages/index.dart +0 -0
- /package/static/{b969c79 → a615e33}/playground/languages/index.env +0 -0
- /package/static/{b969c79 → a615e33}/playground/languages/index.ex +0 -0
- /package/static/{b969c79 → a615e33}/playground/languages/index.html +0 -0
- /package/static/{b969c79 → a615e33}/playground/languages/index.java +0 -0
- /package/static/{b969c79 → a615e33}/playground/languages/index.jl +0 -0
- /package/static/{b969c79 → a615e33}/playground/languages/index.js +0 -0
- /package/static/{b969c79 → a615e33}/playground/languages/index.kt +0 -0
- /package/static/{b969c79 → a615e33}/playground/languages/index.pl +0 -0
- /package/static/{b969c79 → a615e33}/playground/languages/index.py +0 -0
- /package/static/{b969c79 → a615e33}/playground/languages/index.ts +0 -0
- /package/static/{b969c79 → a615e33}/playground/languages/scrolling.txt +0 -0
- /package/static/{b969c79 → a615e33}/playground/sample-folder/a.txt +0 -0
- /package/static/{b969c79 → a615e33}/playground/sample-folder/b.txt +0 -0
- /package/static/{b969c79 → a615e33}/playground/sample-folder/c.txt +0 -0
- /package/static/{b969c79 → a615e33}/sounds/bell.oga +0 -0
- /package/static/{b969c79 → a615e33}/static/js/babel-parser.js +0 -0
- /package/static/{b969c79 → a615e33}/static/js/blob-util.js +0 -0
- /package/static/{b969c79 → a615e33}/static/js/dompurify.js +0 -0
- /package/static/{b969c79 → a615e33}/static/js/idb/async-iterators.js +0 -0
- /package/static/{b969c79 → a615e33}/static/js/idb/index.js +0 -0
- /package/static/{b969c79 → a615e33}/static/js/idb/with-async-ittr.js +0 -0
- /package/static/{b969c79 → a615e33}/static/js/idb/wrap-idb-value.js +0 -0
- /package/static/{b969c79 → a615e33}/static/js/js-base64.js +0 -0
- /package/static/{b969c79 → a615e33}/static/js/ky.js +0 -0
- /package/static/{b969c79 → a615e33}/static/js/marked.js +0 -0
- /package/static/{b969c79 → a615e33}/static/js/p-min-delay.js +0 -0
- /package/static/{b969c79 → a615e33}/static/js/pdfjs/pdf.js +0 -0
- /package/static/{b969c79 → a615e33}/static/js/pdfjs/pdf.worker.js +0 -0
- /package/static/{b969c79 → a615e33}/static/js/pretty-bytes.js +0 -0
- /package/static/{b969c79 → a615e33}/static/js/termterm.js +0 -0
- /package/static/{b969c79 → a615e33}/static/js/yoctodelay.js +0 -0
package/static/{b969c79 → a615e33}/packages/renderer-process/dist/rendererProcessMain.js.map
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/parts/ModuleId/ModuleId.js", "../src/parts/ModuleMap/ModuleMap.js", "../src/parts/VError/VError.js", "../src/parts/Command/Command.js", "../src/parts/IsFirefoxWorkerError/IsFirefoxWorkerError.js", "../src/parts/Logger/Logger.js", "../src/parts/Audio/Audio.js", "../src/parts/Audio/Audio.ipc.js", "../src/parts/AssertionError/AssertionError.js", "../src/parts/Assert/Assert.js", "../src/parts/ClipBoard/ClipBoard.js", "../src/parts/ClipBoard/ClipBoard.ipc.js", "../src/parts/ConfirmPrompt/ConfirmPrompt.js", "../src/parts/ConfirmPrompt/ConfirmPrompt.ipc.js", "../src/parts/Css/Css.js", "../src/parts/Css/Css.ipc.js", "../src/parts/Developer/Developer.js", "../src/parts/Developer/Developer.ipc.js", "../src/parts/Download/Download.js", "../src/parts/Download/Download.ipc.js", "../src/parts/AriaAlertState/AriaAlertState.js", "../src/parts/AriaBoolean/AriaBoolean.js", "../src/parts/AriaRoles/AriaRoles.js", "../src/parts/DomAttributeType/DomAttributeType.js", "../src/parts/AriaAlert/AriaAlert.js", "../src/parts/Widget/Widget.js", "../src/parts/EditorError/EditorError.js", "../src/parts/EditorError/EditorError.ipc.js", "../src/parts/SetBounds/SetBounds.js", "../src/parts/EditorHover/EditorHover.js", "../src/parts/EditorHover/EditorHover.ipc.js", "../src/parts/InputBox/InputBox.js", "../src/parts/Context/Context.js", "../src/parts/Focus/Focus.js", "../src/parts/Id/Id.js", "../src/parts/Callback/Callback.js", "../src/parts/Errors/JsonRpcError.js", "../src/parts/JsonRpcVersion/JsonRpcVersion.js", "../src/parts/GetResponse/GetResponse.js", "../src/parts/IpcParentType/IpcParentType.js", "../src/parts/FirstWorkerEventType/FirstWorkerEventType.js", "../src/parts/GetFirstWorkerEvent/GetFirstWorkerEvent.js", "../src/parts/ModuleWorkersAreNotSupportedInFirefoxError/ModuleWorkersAreNotSupportedInFirefoxError.js", "../src/parts/WorkerType/WorkerType.js", "../src/parts/Event/Event.js", "../src/parts/GetWorkerDisplayName/GetWorkerDisplayName.js", "../src/parts/HttpStatusCode/HttpStatusCode.js", "../src/parts/TryToGetActualWorkerErrorMessage/TryToGetActualWorkerErrorMessage.js", "../src/parts/IpcParentWithMessagePort/IpcParentWithMessagePort.js", "../src/parts/IpcParentWithModuleWorker/IpcParentWithModuleWorker.js", "../src/parts/IpcParentWithReferencePort/IpcParentWithReferencePort.js", "../src/parts/IpcParentWithModuleWorkerWithMessagePort/IpcParentWithModuleWorkerWithMessagePort.js", "../src/parts/IpcParentWithElectron/IpcParentWithElectron.js", "../src/parts/IpcParentModule/IpcParentModule.js", "../src/parts/IpcParent/IpcParent.js", "../src/parts/PlatformType/PlatformType.js", "../src/parts/Platform/Platform.js", "../src/parts/RendererWorker/RendererWorker.js", "../src/parts/EditorRename/EditorRename.js", "../src/parts/EditorRename/EditorRename.ipc.js", "../src/parts/Eval/Eval.js", "../src/parts/Eval/Eval.ipc.js", "../src/parts/FilePicker/FilePicker.js", "../src/parts/FilePicker/FilePicker.ipc.js", "../src/parts/FileSystemHandle/FileSystemHandle.js", "../src/parts/FileSystemHandle/FileSystemHandle.ipc.js", "../src/parts/ImagePreview/ImagePreview.js", "../src/parts/ImagePreview/ImagePreview.ipc.js", "../src/parts/Location/Location.js", "../src/parts/Layout/Layout.js", "../src/parts/InitData/InitData.js", "../src/parts/InitData/InitData.ipc.js", "../src/parts/KeyBindingsState/KeyBindingsState.js", "../src/parts/KeyBindings/KeyBindings.js", "../src/parts/KeyBindings/KeyBindings.ipc.js", "../src/parts/Layout/Layout.ipc.js", "../src/parts/Location/Location.ipc.js", "../src/parts/Meta/Meta.js", "../src/parts/Meta/Meta.ipc.js", "../src/parts/Notification/Notification.js", "../src/parts/Notification/Notification.ipc.js", "../src/parts/OffscreenCanvas/OffscreenCanvas.js", "../src/parts/OffscreenCanvas/OffscreenCanvas.ipc.js", "../src/shared/findIndex.js", "../src/parts/BackDrop/BackDrop.js", "../src/parts/MenuItemFlags/MenuItemFlags.js", "../src/parts/MenuItem/MenuItem.js", "../src/parts/DomEventType/DomEventType.js", "../src/parts/OldMenu/Menu.js", "../src/parts/OldMenu/Menu.ipc.js", "../src/parts/Open/Open.js", "../src/parts/Open/Open.ipc.js", "../src/parts/Performance/Performance.js", "../src/parts/Performance/Performance.ipc.js", "../static/js/dompurify.js", "../src/parts/SanitizeHtml/SanitizeHtml.js", "../src/parts/SanitizeHtml/SanitizeHtml.ipc.js", "../src/parts/ServiceWorker/ServiceWorker.js", "../src/parts/ServiceWorker/ServiceWorker.ipc.js", "../src/parts/TestFrameWork/HtmlElements.js", "../src/parts/TestFrameWork/QuerySelector.js", "../src/parts/TestFrameWork/ConditionErrors.js", "../src/parts/TestFrameWork/ConditionErrorMap.js", "../src/parts/TestFrameWork/ElementActions.js", "../src/parts/TestFrameWork/KeyBoardActions.js", "../src/parts/TestFrameWork/MultiElementConditions.js", "../src/parts/TestFrameWork/SingleElementConditions.js", "../src/parts/TestFrameWork/TestFrameWork.js", "../src/parts/TestFrameWork/TestFrameWork.ipc.js", "../src/parts/Transferrable/Transferrable.js", "../src/parts/Transferrable/Transferrable.ipc.js", "../src/parts/ViewletModuleId/ViewletModuleId.js", "../src/parts/ActivityBarItemFlags/ActivityBarItemFlags.js", "../src/parts/AriaOrientationType/AriaOrientationType.js", "../src/parts/MaskImage/MaskImage.js", "../src/parts/MaskIcon/MaskIcon.js", "../src/parts/MouseEventType/MouseEventType.js", "../src/parts/ViewletActivityBar/ViewletActivityBarFunctions.js", "../src/parts/ViewletActivityBar/ViewletActivityBarEvents.js", "../src/parts/AriaRoleDescriptionType/AriaRoleDescriptionType.js", "../src/parts/ViewletActivityBar/ViewletActivityBar.js", "../src/parts/ViewletAudio/ViewletAudioFunctions.js", "../src/parts/ViewletAudio/ViewletAudioEvents.js", "../src/parts/ViewletAudio/ViewletAudio.js", "../src/parts/ViewletClock/ViewletClock.js", "../src/parts/ViewletColorPicker/ViewletColorPickerFunctions.js", "../src/parts/ViewletColorPicker/ViewletColorPickerEvents.js", "../src/parts/ViewletColorPicker/ViewletColorPicker.js", "../src/parts/ViewletDebugConsole/ViewletDebugConsole.js", "../src/parts/Icon/Icon.js", "../src/parts/IconButton/IconButton.js", "../src/parts/ViewletDialog/ViewletDialogFunctions.js", "../src/parts/ViewletDialog/ViewletDialogEvents.js", "../src/parts/ViewletDialog/ViewletDialog.js", "../src/parts/ViewletSash/ViewletSash.js", "../src/parts/WheelEventType/WheelEventType.js", "../src/parts/ViewletDiffEditor/ViewletDiffEditorFunctions.js", "../src/parts/ViewletDiffEditor/ViewletDiffEditorEvents.js", "../src/parts/DomEventOptions/DomEventOptions.js", "../src/parts/ViewletScrollable/ViewletScrollable.js", "../src/parts/ViewletDiffEditor/ViewletDiffEditor.js", "../src/parts/Label/Label.js", "../src/parts/ViewletEditorCompletion/ViewletEditorCompletionFunctions.js", "../src/parts/ViewletEditorCompletion/ViewletEditorCompletionEvents.js", "../src/parts/ViewletSize/ViewletSize.js", "../src/parts/ViewletSizeClassName/ViewletSizeClassName.js", "../src/parts/ViewletSizeMap/ViewletSizeMap.js", "../src/parts/ViewletSizable/ViewletSizable.js", "../src/parts/ViewletList/ViewletList.js", "../src/parts/ViewletEditorCompletion/ViewletEditorCompletion.js", "../src/parts/ViewletEditorImage/ViewletEditorImageFunctions.js", "../src/parts/ViewletEditorImage/ViewletEditorImageEvents.js", "../src/parts/ViewletEditorImage/ViewletEditorImage.js", "../src/parts/ViewletEditorPlainText/ViewletEditorPlainText.js", "../src/parts/AriaAutoCompleteType/AriaAutoCompleteType.js", "../src/parts/ClipBoardDataType/ClipBoardDataType.js", "../src/parts/ClipBoardData/ClipBoardData.js", "../src/parts/ModifierKey/ModifierKey.js", "../src/parts/GetModifierKey/GetModifierKey.js", "../src/parts/InputEventType/InputEventType.js", "../src/parts/TouchEvent/TouchEvent.js", "../src/parts/MenuEntryId/MenuEntryId.js", "../src/parts/Editor/EditorFunctions.js", "../src/parts/Editor/EditorEvents.js", "../src/parts/Editor/LayerCursor.js", "../src/parts/Editor/LayerDiagnostics.js", "../src/parts/Editor/LayerScrollBar.js", "../src/parts/Editor/LayerSelections.js", "../src/parts/Editor/LayerText.js", "../src/parts/Editor/Editor.js", "../src/parts/ViewletEditorText/ViewletEditorText.js", "../src/parts/ViewletEmpty/ViewletEmpty.js", "../src/parts/ViewletError/ViewletError.js", "../src/parts/DirentType/DirentType.js", "../src/parts/AllowedDragEffectType/AllowedDragEffectType.js", "../src/parts/DataTransferType/DataTransferType.js", "../src/parts/DataTransfer/DataTransfer.js", "../src/parts/DropEffectType/DropEffectType.js", "../src/parts/IsFileSystemAccessNotSupportedOnFireFoxError/IsFileSystemAccessNotSupportedOnFirefoxError.js", "../src/parts/GetFileHandlesFromDataTransferItems/GetFileHandlesFromDataTransferItems.js", "../src/parts/IsHtmlElement/IsHtmlElement.js", "../src/parts/ViewletExplorer/ViewletExplorerFunctions.js", "../src/parts/ViewletExplorer/ViewletExplorerEvents.js", "../src/parts/ViewletExplorer/ViewletExplorer.js", "../src/parts/ViewletExtensionDetail/ViewletExtensionDetailFunctions.js", "../src/parts/ViewletExtensionDetail/ViewletExtensionDetailEvents.js", "../src/parts/ViewletExtensionDetail/ViewletExtensionDetail.js", "../src/parts/AriaLiveType/AriaLiveType.js", "../src/parts/ViewletExtensions/ViewletExtensionsFunctions.js", "../src/parts/ViewletExtensions/ViewletExtensionsEvents.js", "../src/parts/ViewletExtensions/ViewletExtensions.js", "../src/parts/ViewletFindWidget/ViewletFindWidgetFunctions.js", "../src/parts/ViewletFindWidget/ViewletFindWidgetEvents.js", "../src/parts/ViewletFindWidget/ViewletFindWidget.js", "../src/parts/ViewletLocations/ViewletLocations.js", "../src/parts/ViewletImplementations/ViewletImplementations.js", "../src/parts/ElementTags/ElementTags.js", "../src/parts/VirtualDomElements/VirtualDomElements.js", "../src/parts/ElementTagMap/ElementTagMap.js", "../src/parts/VirtualDomElementProps/VirtualDomElementProps.js", "../src/parts/VirtualDomElement/VirtualDomElement.js", "../src/parts/VirtualDom/VirtualDom.js", "../src/parts/ViewletKeyBindings/ViewletKeyBindingsFunctions.js", "../src/parts/ViewletKeyBindings/ViewletKeyBindingsEvents.js", "../src/parts/InputType/InputType.js", "../src/parts/ViewletKeyBindings/ViewletKeyBindings.js", "../src/parts/ViewletLayout/ViewletLayoutFunctions.js", "../src/parts/KeyBindingsEvents/KeyBindingsEvents.js", "../src/parts/ViewletLayout/ViewletLayoutEvents.js", "../src/parts/ViewletLayout/ViewletLayout.js", "../src/parts/Tab/Tab.js", "../src/parts/ViewletMain/ViewletMainFunctions.js", "../src/parts/ViewletMain/ViewletMainEvents.js", "../src/parts/ViewletMain/ViewletMain.js", "../src/parts/ViewletMainTabs/ViewletMainTabsFunctions.js", "../src/parts/ViewletMainTabs/ViewletMainTabEvents.js", "../src/parts/ViewletMainTabs/ViewletMainTabs.js", "../src/parts/ViewletOutput/ViewletOutputFunctions.js", "../src/parts/ViewletOutput/ViewletOutputEvents.js", "../src/parts/ViewletOutput/ViewletOutput.js", "../src/parts/ActionButton/ActionButton.js", "../src/parts/ActionDefault/ActionDefault.js", "../src/parts/ActionFilter/ActionFilter.js", "../src/parts/ActionSelect/ActionSelect.js", "../src/parts/ActionType/ActionType.js", "../src/parts/Action/Action.js", "../src/parts/Actions/Actions.js", "../src/parts/ViewletPanel/ViewletPanelFunctions.js", "../src/parts/ViewletPanel/ViewletPanelEvents.js", "../src/parts/ViewletPanel/ViewletPanel.js", "../src/parts/ViewletPdf/ViewletPdfEvents.js", "../src/parts/ViewletPdf/ViewletPdf.js", "../src/parts/ViewletProblems/ViewletProblemsFunctions.js", "../src/parts/ViewletProblems/ViewletProblemsEvents.js", "../src/parts/ViewletProblems/ViewletProblems.js", "../src/parts/ViewletQuickPick/ViewletQuickPickFunctions.js", "../src/parts/ViewletQuickPick/ViewletQuickPickEvents.js", "../src/parts/ViewletQuickPick/ViewletQuickPick.js", "../src/parts/ViewletReferences/ViewletReferences.js", "../src/parts/ViewletRunAndDebug/ViewletRunAndDebugFunctions.js", "../src/parts/ViewletRunAndDebug/ViewletRunAndDebugEvents.js", "../src/parts/ViewletRunAndDebug/ViewletRunAndDebug.js", "../src/parts/EnterKeyHintType/EnterKeyHintType.js", "../src/parts/ViewletSearch/ViewletSearchFunctions.js", "../src/parts/ViewletSearch/ViewletSearchEvents.js", "../src/parts/ViewletSearch/ViewletSearch.js", "../src/parts/ViewletSideBar/ViewletSideBar.js", "../src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserFunctions.js", "../src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserEvents.js", "../src/parts/ViewletSimpleBrowser/ViewletSimpleBrowser.js", "../src/parts/ViewletSourceControl/ViewletSourceControlFunctions.js", "../src/parts/ViewletSourceControl/ViewletSourceControlEvents.js", "../src/parts/ViewletSourceControl/ViewletSourceControl.js", "../src/parts/ViewletStatusBar/ViewletStatusBar.js", "../static/js/termterm.js", "../src/parts/Terminal/Terminal.js", "../src/parts/ViewletTerminal/ViewletTerminalFunctions.js", "../src/parts/ViewletTerminal/ViewletTerminalEvents.js", "../src/parts/ViewletTerminal/ViewletTerminal.js", "../src/parts/ViewletTitleBar/ViewletTitleBarEvents.js", "../src/parts/ViewletTitleBar/ViewletTitleBar.js", "../src/parts/ViewletTitleBarButtons/ViewletTitleBarButtonsFunctions.js", "../src/parts/ViewletTitleBarButtons/ViewletTitleBarButtonsEvents.js", "../src/parts/ViewletTitleBarButtons/ViewletTitleBarButtons.js", "../src/parts/ViewletTitleBarIcon/ViewletTitleBarIcon.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarFunctions.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarEvents.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBar.js", "../src/parts/ViewletVideo/ViewletVideoFunctions.js", "../src/parts/ViewletVideo/ViewletVideoEvents.js", "../src/parts/ViewletVideo/ViewletVideo.js", "../src/parts/ViewletModule/ViewletModule.js", "../src/parts/Viewlet/Viewlet.js", "../src/parts/Viewlet/Viewlet.ipc.js", "../src/parts/WebStorageType/WebStorageType.js", "../src/parts/WebStorage/WebStorage.js", "../src/parts/WebStorage/WebStorage.ipc.js", "../src/parts/Window/Window.js", "../src/parts/Window/Window.ipc.js", "../src/rendererProcessMain.js", "../src/parts/IsChromeExtensionError/IsChromeExtensionError.js", "../src/parts/ErrorHandling/ErrorHandling.js", "../src/parts/Module/Module.js"],
|
|
4
|
-
"sourcesContent": ["export const Audio = 1\nexport const ClipBoard = 2\nexport const Css = 3\nexport const Developer = 4\nexport const Download = 5\nexport const EditorController = 6\nexport const EditorError = 7\nexport const EditorHover = 8\nexport const EditorRename = 9\nexport const ImagePreview = 10\nexport const InitData = 11\nexport const KeyBindings = 12\nexport const Layout = 13\nexport const Location = 14\nexport const Main = 15\nexport const Menu = 16\nexport const Meta = 17\nexport const Notification = 18\nexport const Open = 19\nexport const Panel = 20\nexport const ServiceWorker = 21\nexport const Test = 22\nexport const TestFrameWork = 23\nexport const Viewlet = 24\nexport const ViewService = 25\nexport const WebStorage = 26\nexport const Window = 27\nexport const Workbench = 28\nexport const Performance = 29\nexport const Eval = 30\nexport const FilePicker = 31\nexport const FileSystemHandle = 32\nexport const SanitizeHtml = 33\nexport const OffscreenCanvas = 34\nexport const Transferrable = 35\nexport const ConfirmPrompt = 36\n", "import * as ModuleId from '../ModuleId/ModuleId.js'\n\nexport const getModuleId = (commandId) => {\n switch (commandId) {\n case 'Audio.play':\n return ModuleId.Audio\n case 'ClipBoard.execCopy':\n case 'ClipBoard.readText':\n case 'ClipBoard.writeImage':\n case 'ClipBoard.writeText':\n return ModuleId.ClipBoard\n case 'ConfirmPrompt.prompt':\n return ModuleId.ConfirmPrompt\n case 'Css.addCssStyleSheet':\n case 'Css.setInlineStyle':\n return ModuleId.Css\n case 'Developer.getMemoryUsage':\n case 'Developer.showState':\n return ModuleId.Developer\n case 'Download.downloadFile':\n return ModuleId.Download\n case 764:\n case 765:\n case 766:\n case 767:\n case 768:\n case 769:\n case 770:\n case 771:\n case 772:\n case 773:\n case 774:\n case 775:\n case 776:\n case 777:\n return ModuleId.EditorController\n case 'EditorError.create':\n return ModuleId.EditorError\n case 'EditorHover.create':\n return ModuleId.EditorHover\n case 'EditorRename.create':\n case 'EditorRename.dispose':\n case 'EditorRename.finish':\n return ModuleId.EditorRename\n case 'Eval.evalCode':\n return ModuleId.Eval\n case 'FilePicker.showDirectoryPicker':\n case 'FilePicker.showFilePicker':\n case 'FilePicker.showSaveFilePicker':\n return ModuleId.FilePicker\n case 'FileSystemHandle.requestPermission':\n return ModuleId.FileSystemHandle\n case 'ImagePreview.create':\n case 'ImagePreview.dispose':\n case 'ImagePreview.showError':\n case 'ImagePreview.update':\n return ModuleId.ImagePreview\n case 'InitData.getInitData':\n return ModuleId.InitData\n case 'KeyBindings.hydrate':\n return ModuleId.KeyBindings\n case 'Layout.getBounds':\n case 'Layout.hide':\n case 'Layout.hydrate':\n case 'Layout.show':\n case 'Layout.update':\n return ModuleId.Layout\n case 'Location.getHref':\n case 'Location.getPathName':\n case 'Location.hydrate':\n case 'Location.setPathName':\n return ModuleId.Location\n case 'Menu.focusIndex':\n case 'Menu.hide':\n case 'Menu.hideSubMenu':\n case 'Menu.show':\n case 'Menu.showContextMenu':\n case 'Menu.showControlled':\n case 'Menu.showMenu':\n case 'Menu.showSubMenu':\n return ModuleId.Menu\n case 'Meta.setThemeColor':\n return ModuleId.Meta\n case 'Notification.create':\n case 'Notification.createWithOptions':\n case 'Notification.dispose':\n return ModuleId.Notification\n case 'OffscreenCanvas.create':\n return ModuleId.OffscreenCanvas\n case 'Open.openUrl':\n return ModuleId.Open\n case 6661:\n case 6662:\n case 6663:\n case 6664:\n return ModuleId.Panel\n case 'Performance.getMemory':\n case 'Performance.measureUserAgentSpecificMemory':\n return ModuleId.Performance\n case 'SanitizeHtml.sanitizeHtml':\n return ModuleId.SanitizeHtml\n case 'ServiceWorker.register':\n case 'ServiceWorker.uninstall':\n return ModuleId.ServiceWorker\n case 'TestFrameWork.checkMultiElementCondition':\n case 'TestFrameWork.checkSingleElementCondition':\n case 'TestFrameWork.performAction':\n case 'TestFrameWork.performKeyBoardAction':\n case 'TestFrameWork.showOverlay':\n return ModuleId.TestFrameWork\n case 'Transferrable.transfer':\n return ModuleId.Transferrable\n case 'Viewlet.appendViewlet':\n case 'Viewlet.dispose':\n case 'Viewlet.focus':\n case 'Viewlet.focusBody':\n case 'Viewlet.handleError':\n case 'Viewlet.invoke':\n case 'Viewlet.load':\n case 'Viewlet.loadModule':\n case 'Viewlet.refresh':\n case 'Viewlet.send':\n case 'Viewlet.sendMultiple':\n case 'Viewlet.setBounds':\n return ModuleId.Viewlet\n case 549:\n case 550:\n case 551:\n return ModuleId.ViewService\n case 'WebStorage.clear':\n case 'WebStorage.getItem':\n case 'WebStorage.setItem':\n return ModuleId.WebStorage\n case 'Window.close':\n case 'Window.maximize':\n case 'Window.minimize':\n case 'Window.onVisibilityChange':\n case 'Window.reload':\n case 'Window.setTitle':\n case 'Window.unmaximize':\n return ModuleId.Window\n case 33111:\n return ModuleId.Workbench\n default:\n throw new Error(`command ${commandId} not found`)\n }\n}\n", "const getCombinedMessage = (error, message) => {\n if (message) {\n return `${message}: ${error}`\n }\n return `${error}`\n}\n\nconst mergeStacks = (parent, child) => {\n if (!child) {\n return parent\n }\n const parentNewLineIndex = parent.indexOf('\\n')\n const childNewLineIndex = child.indexOf('\\n')\n const parentFirstLine = parent.slice(0, parentNewLineIndex)\n const childRest = child.slice(childNewLineIndex)\n const childFirstLine = child.slice(0, childNewLineIndex)\n if (parentFirstLine.includes(childFirstLine)) {\n return parentFirstLine + childRest\n }\n return child\n}\n\nconst getErrorStack = (error) => {\n if (error && error.stack) {\n return error.stack\n }\n if (error && error.lineNumber && error.columnNumber && error.fileName) {\n const normalStackLooksLike = new Error().stack\n if (/^[$\\w]+@.*/.test(normalStackLooksLike)) {\n // firefox stack trace\n return `${error}\\nunknown@${error.fileName}:${error.lineNumber}:${error.columnNumber}`\n }\n // chrome stack trace\n return `${error.message}\\n at ${error.fileName}:${error.lineNumber}:${error.columnNumber}`\n }\n return ''\n}\n\nexport class VError extends Error {\n constructor(error, message) {\n const combinedMessage = getCombinedMessage(error, message)\n super(combinedMessage)\n this.name = 'VError'\n if (error instanceof Error) {\n const errorStack = getErrorStack(error)\n this.stack = mergeStacks(this.stack, errorStack)\n }\n if (error.codeFrame) {\n this.codeFrame = error.codeFrame\n }\n this.cause = error\n }\n}\n", "import * as ModuleMap from '../ModuleMap/ModuleMap.js'\nimport { VError } from '../VError/VError.js'\n\nexport const state = {\n commands: Object.create(null),\n pendingModules: Object.create(null),\n async load(moduleId) {},\n}\n\nconst initializeModule = (module) => {\n if (module.Commands) {\n for (const [key, value] of Object.entries(module.Commands)) {\n if (module.name) {\n const actualKey = `${module.name}.${key}`\n register(actualKey, value)\n } else {\n register(key, value)\n }\n }\n return\n }\n throw new Error(\n `module ${module.name} is missing an initialize function and commands`\n )\n}\n\nconst loadModule = async (moduleId) => {\n try {\n const module = await state.load(moduleId)\n initializeModule(module)\n } catch (error) {\n if (\n error &&\n error instanceof SyntaxError &&\n error.stack === `SyntaxError: ${error.message}`\n ) {\n Error.captureStackTrace(error, loadModule)\n }\n throw new VError(error, `failed to load module ${moduleId}`)\n }\n}\n\nconst getOrLoadModule = (moduleId) => {\n if (!state.pendingModules[moduleId]) {\n state.pendingModules[moduleId] = loadModule(moduleId)\n }\n return state.pendingModules[moduleId]\n}\n\nconst loadCommand = async (command) => {\n await getOrLoadModule(ModuleMap.getModuleId(command))\n}\n\nexport const register = (commandId, listener) => {\n state.commands[commandId] = listener\n}\n\nconst hasThrown = new Set()\n\nconst executeCommandAsync = async (command, ...args) => {\n try {\n await loadCommand(command)\n } catch (error) {\n throw new VError(error, `Failed to load command ${command}`)\n }\n if (!(command in state.commands)) {\n if (hasThrown.has(command)) {\n return\n }\n hasThrown.add(command)\n throw new Error(`Command did not register \"${command}\"`)\n }\n return execute(command, ...args)\n}\n\nexport const execute = (command, ...args) => {\n if (command in state.commands) {\n return state.commands[command](...args)\n }\n return executeCommandAsync(command, ...args)\n}\n\nexport const setLoad = (load) => {\n state.load = load\n}\n", "export const isFirefoxWorkerError = (message) => {\n return [\n 'SyntaxError: import declarations may only appear at top level of a module',\n 'SyntaxError: export declarations may only appear at top level of a module',\n ].includes(message)\n}\n", "export const warn = (...args) => {\n console.warn(...args)\n}\n\nexport const error = (...args) => {\n console.error(...args)\n}\n\nexport const info = (...args) => {\n console.info(...args)\n}\n", "export const play = async (src) => {\n const audio = new Audio(src)\n await audio.play()\n}\n", "import * as Audio from './Audio.js'\n\nexport const name = 'Audio'\n\nexport const Commands = {\n play: Audio.play,\n}\n", "export class AssertionError extends Error {\n constructor(message) {\n super(message)\n this.name = 'AssertionError'\n }\n}\n", "// TODO treeshake out this whole module in production\n\nimport { AssertionError } from '../AssertionError/AssertionError.js'\n\nconst getType = (value) => {\n switch (typeof value) {\n case 'number':\n return 'number'\n case 'function':\n return 'function'\n case 'string':\n return 'string'\n case 'object':\n if (value === null) {\n return 'null'\n }\n if (Array.isArray(value)) {\n return 'array'\n }\n return 'object'\n case 'boolean':\n return 'boolean'\n default:\n return 'unknown'\n }\n}\n\nexport const object = (value) => {\n const type = getType(value)\n if (type !== 'object') {\n throw new AssertionError('expected value to be of type object')\n }\n}\n\nexport const number = (value) => {\n const type = getType(value)\n if (type !== 'number') {\n throw new AssertionError('expected value to be of type number')\n }\n}\n\nexport const array = (value) => {\n const type = getType(value)\n if (type !== 'array') {\n throw new AssertionError('expected value to be of type array')\n }\n}\n\nexport const float32Array = (value) => {\n if (!(value instanceof Float32Array)) {\n throw new Error('expected value to be of float32Array')\n }\n}\n\nexport const string = (value) => {\n const type = getType(value)\n if (type !== 'string') {\n throw new AssertionError('expected value to be of type string')\n }\n}\n\nexport const null_ = (value) => {\n const type = getType(value)\n if (type !== 'null') {\n throw new AssertionError('expected value to be of type null')\n }\n}\n\nexport const boolean = (value) => {\n const type = getType(value)\n if (type !== 'boolean') {\n throw new AssertionError('expected value to be of type boolean')\n }\n}\n", "import * as Assert from '../Assert/Assert.js'\n\nexport const readText = async () => {\n return navigator.clipboard.readText()\n}\n\nexport const writeText = async (text) => {\n Assert.string(text)\n await navigator.clipboard.writeText(text)\n}\n\nexport const writeImage = async (blob) => {\n await navigator.clipboard.write([new ClipboardItem({ [blob.type]: blob })])\n}\n\nexport const execCopy = async () => {\n const text = getSelection().toString()\n await writeText(text)\n}\n", "import * as ClipBoard from './ClipBoard.js'\n\nexport const name = 'ClipBoard'\n\nexport const Commands = {\n execCopy: ClipBoard.execCopy,\n readText: ClipBoard.readText,\n writeImage: ClipBoard.writeImage,\n writeText: ClipBoard.writeText,\n}\n", "export const prompt = (message) => {\n return confirm(message)\n}\n", "import * as ConfirmPrompt from './ConfirmPrompt.js'\n\nexport const name = 'ConfirmPrompt'\n\nexport const Commands = {\n prompt: ConfirmPrompt.prompt,\n}\n", "export const setInlineStyle = (id, css) => {\n const $ExistingStyle = document.getElementById(id)\n if ($ExistingStyle) {\n $ExistingStyle.textContent = css\n } else {\n const $Style = document.createElement('style')\n $Style.id = id\n $Style.textContent = css\n document.head.append($Style)\n }\n}\n\nexport const addCssStyleSheet = async (text) => {\n const sheet = new CSSStyleSheet({})\n await sheet.replace(text)\n document.adoptedStyleSheets.push(sheet)\n}\n", "import * as Css from './Css.js'\n\nexport const name = 'Css'\n\nexport const Commands = {\n addCssStyleSheet: Css.addCssStyleSheet,\n setInlineStyle: Css.setInlineStyle,\n}\n", "import * as Logger from '../Logger/Logger.js'\n\nconst modules = [\n 'ActivityBar',\n 'Ajax',\n 'Allocator',\n 'Callback',\n 'Command',\n 'Context',\n 'ContextMenu',\n 'Delay',\n 'Developer',\n 'DomPool',\n 'Editor',\n 'Exec',\n 'ExtensionHost',\n 'FileSystem',\n 'KeyBindings',\n 'Layout',\n 'Main',\n 'Notification',\n 'Panel',\n 'Parts',\n 'QuickPick',\n 'Renderer',\n 'RendererWorker',\n 'Search',\n 'SharedProcess',\n 'SideBar',\n 'StatusBar',\n 'TitleBar',\n 'Viewlet',\n 'ViewletController',\n 'ViewService',\n 'Vscode',\n 'Window',\n 'Workbench',\n 'Worker',\n 'Workspace',\n]\n\n// TODO send to renderer worker -> renderer worker has all state\nexport const showState = async () => {\n const state = Object.create(null)\n for (const module of modules) {\n let imported\n try {\n imported = await import(`../${module}/${module}.js`)\n } catch {}\n if (imported && imported.state) {\n state[module] = imported.state\n }\n }\n Logger.info(state)\n}\n", "import * as Developer from './Developer.js'\n\nexport const name = 'Developer'\n\nexport const Commands = {\n showState: Developer.showState,\n}\n", "export const downloadFile = (fileName, url) => {\n const a = document.createElement('a')\n a.href = url\n a.download = fileName\n a.click()\n}\n", "import * as Download from './Download.js'\n\nexport const name = 'Download'\n\nexport const Commands = {\n downloadFile: Download.downloadFile,\n}\n", "// based on https://github.com/microsoft/vscode/blob/5f87632829dc3ac80203e2377727935184399431/src/vs/base/browser/ui/aria/aria.ts (License MIT)\n\nexport const state = {\n $AriaAlert1: undefined,\n $AriaAlert2: undefined,\n $AriaMessages: undefined,\n}\n\nexport const getAriaAlert1 = () => {\n return state.$AriaAlert1\n}\n\nexport const getAriaAlert2 = () => {\n return state.$AriaAlert2\n}\n\nexport const setElements = ($AriaMessages, $AriaAlert1, $AriaAlert2) => {\n state.$AriaMessages = $AriaMessages\n state.$AriaAlert1 = $AriaAlert1\n state.$AriaAlert2 = $AriaAlert2\n}\n\nexport const hasElements = () => {\n return state.$AriaMessages\n}\n", "export const True = 'true'\n\nexport const False = 'false'\n", "export const Alert = 'alert'\nexport const Application = 'application'\nexport const Article = 'article'\nexport const Button = 'button'\nexport const CheckBox = 'checkbox'\nexport const Code = 'code'\nexport const Complementary = 'complementary'\nexport const ContentInfo = 'contentinfo'\nexport const Document = 'document'\nexport const Group = 'group'\nexport const List = 'list'\nexport const ListBox = 'listbox'\nexport const ListItem = 'listitem'\nexport const Log = 'log'\nexport const Main = 'main'\nexport const Menu = 'menu'\nexport const MenuBar = 'menubar'\nexport const MenuItem = 'menuitem'\nexport const MenuItemCheckBox = 'menuitemcheckbox'\nexport const None = 'none'\nexport const Option = 'option'\nexport const Separator = 'separator'\nexport const Status = 'status'\nexport const Tab = 'tab'\nexport const TabList = 'tablist'\nexport const TextBox = 'textbox'\nexport const ToolBar = 'toolbar'\nexport const Tree = 'tree'\nexport const TreeItem = 'treeitem'\n", "export const AriaOwns = 'aria-owns'\nexport const AriaLabelledBy = 'aria-labelledby'\nexport const AriaDescribedBy = 'aria-describedby'\nexport const AriaDescription = 'aria-description'\nexport const AriaLevel = 'aria-level'\nexport const AriaExpanded = 'aria-expanded'\nexport const AriaMultiSelectable = 'aria-multiselectable'\nexport const AriaActiveDescendant = 'aria-activedescendant'\nexport const AriaBusy = 'aria-busy'\nexport const AriaSelected = 'aria-selected'\nexport const AriaControls = 'aria-controls'\nexport const AriaHidden = 'aria-hidden'\n", "// based on https://github.com/microsoft/vscode/blob/5f87632829dc3ac80203e2377727935184399431/src/vs/base/browser/ui/aria/aria.ts (License MIT)\nimport * as AriaAlertState from '../AriaAlertState/AriaAlertState.js'\nimport * as AriaBoolean from '../AriaBoolean/AriaBoolean.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as DomAttributeType from '../DomAttributeType/DomAttributeType.js'\n\nconst create$AriaAlert = () => {\n const $AriaAlert = document.createElement('div')\n $AriaAlert.className = 'AriaAlert'\n $AriaAlert.role = AriaRoles.Alert\n $AriaAlert.ariaAtomic = AriaBoolean.True\n return $AriaAlert\n}\n\nconst setMessage = ($Old, $New, message) => {\n $Old.textContent = String(Math.random())\n $Old.ariaHidden = AriaBoolean.True\n $New.removeAttribute(DomAttributeType.AriaHidden)\n $New.textContent = message\n}\n\nexport const alert = (message) => {\n if (!message) {\n return\n }\n if (!AriaAlertState.hasElements()) {\n const $AriaAlert1 = create$AriaAlert()\n const $AriaAlert2 = create$AriaAlert()\n // TODO find better name, for example AriaMessages, AriaOutlet, AriaContainer, ScreenReaderMessages\n const $AriaMessages = document.createElement('div')\n $AriaMessages.className = 'AriaContainer'\n $AriaMessages.append($AriaAlert1, $AriaAlert2)\n document.body.append($AriaMessages)\n AriaAlertState.setElements($AriaMessages, $AriaAlert1, $AriaAlert2)\n }\n const $AriaAlert1 = AriaAlertState.getAriaAlert1()\n const $AriaAlert2 = AriaAlertState.getAriaAlert2()\n if ($AriaAlert1.textContent === message) {\n setMessage($AriaAlert1, $AriaAlert2, message)\n } else {\n setMessage($AriaAlert2, $AriaAlert1, message)\n }\n}\n", "// TODO this file is not needed when all elements are position fixed\nexport const state = {\n isInDom: false,\n $PreviousFocusElement: undefined,\n widgetSet: new Set(),\n $Widgets: undefined,\n}\n\nconst create$Widgets = () => {\n const $Widgets = document.createElement('div')\n $Widgets.id = 'Widgets'\n return $Widgets\n}\n\nexport const append = ($Element) => {\n // TODO should not call append in the first place if it is already in dom\n if (state.widgetSet.has($Element)) {\n return\n }\n state.widgetSet.add($Element)\n if (state.$Widgets) {\n state.$Widgets.append($Element)\n } else {\n state.$Widgets = create$Widgets()\n state.$Widgets.append($Element)\n document.body.append(state.$Widgets)\n }\n}\n\nexport const find = (id) => {\n for (const $Widget of state.widgetSet) {\n if ($Widget.dataset.id === id) {\n return $Widget\n }\n }\n return undefined\n}\n\nexport const remove = ($Element) => {\n if (!$Element) {\n // TODO $Element should always be defined\n return\n }\n state.widgetSet.delete($Element)\n $Element.remove()\n // TODO state.$Widgets should always be defined at this point\n if (state.widgetSet.size === 0 && state.$Widgets) {\n state.$Widgets.remove()\n state.$Widgets = undefined\n }\n}\n", "import * as AriaAlert from '../AriaAlert/AriaAlert.js'\nimport * as Widget from '../Widget/Widget.js'\n\n// TODO not sure whether created dom node\n// should stay in state or be removed\n// one option would result in less memory usage\n// the other option would result in less garbage collection\n\n// probably should optimize for less memory usage by default\n// unless the element is very likely to be used again soon (<30s)\n// but that's difficult to know\n\n// TODO hide widget after timeout or mousemove\nexport const create = (message, x, y) => {\n const $EditorError = document.createElement('div')\n $EditorError.className = 'EditorWidgetError'\n $EditorError.textContent = message\n $EditorError.style.left = `${x}px`\n $EditorError.style.top = `${y}px`\n AriaAlert.alert(message)\n Widget.append($EditorError)\n\n return {\n $EditorError,\n }\n}\n\nexport const dispose = (state) => {}\n", "import * as EditorError from './EditorError.js'\n\nexport const name = 'EditorError'\n\nexport const Commands = {\n create: EditorError.create,\n}\n", "export const setBounds = ($Element, x, y, width, height) => {\n $Element.style.top = `${y}px`\n $Element.style.left = `${x}px`\n $Element.style.width = `${width}px`\n $Element.style.height = `${height}px`\n}\n\nexport const setX = ($Element, x) => {\n $Element.style.translate = `${x}px 0`\n}\n\nexport const setYAndHeight = ($Element, y, height) => {\n $Element.style.translate = `0 ${y}px`\n $Element.style.height = `${height}px`\n}\n\nexport const setXAndWidth = ($Element, x, width) => {\n $Element.style.translate = `${x}px 0`\n $Element.style.width = `${width}px`\n}\n\nexport const setWidth = ($Element, width) => {\n $Element.style.width = `${width}px`\n}\n\nexport const setTop = ($Element, top) => {\n $Element.style.top = `${top}px`\n}\n\nexport const setXAndY = ($Element, x, y) => {\n $Element.style.left = `${x}px`\n $Element.style.top = `${y}px`\n}\n\n/**\n *\n * @param {HTMLElement} $Element\n * @param {number} x\n * @param {number} y\n */\nexport const setXAndYTransform = ($Element, x, y) => {\n $Element.style.translate = `${x}px ${y}px`\n}\n\nexport const setHeight = ($Element, height) => {\n $Element.style.height = `${height}px`\n}\n", "import * as Widget from '../Widget/Widget.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\n\nexport const create = (x, y, hover) => {\n const $Hover = document.createElement('div')\n $Hover.id = 'EditorHover'\n $Hover.textContent = hover.label\n SetBounds.setXAndY($Hover, x, y)\n Widget.append($Hover)\n return {\n $Hover,\n }\n}\n\nexport const update = (state, x, y, hover) => {\n const $Hover = state.$Hover\n $Hover.textContent = hover.label\n SetBounds.setXAndY($Hover, x, y)\n}\n\nexport const dispose = (state) => {}\n", "import * as EditorHover from './EditorHover.js'\n\nexport const name = 'EditorHover'\n\nexport const Commands = {\n create: EditorHover.create,\n}\n", "export const create = () => {\n const $InputBox = document.createElement('input')\n $InputBox.className = 'InputBox'\n $InputBox.spellcheck = false\n $InputBox.autocapitalize = 'off'\n // $InputBox.autocomplete = 'off' // TODO needed?\n $InputBox.type = 'text'\n $InputBox.setAttribute('autocorrect', 'off') // for ios\n return $InputBox\n}\n", "export const state = {\n // contexts: Object.create(null),\n contexts: {},\n}\n\n// TODO all context keys should be numeric\n// comparing numbers is faster and more efficient than comparing strings every time\n// e.g. map 'focus.editor' -> 1\n// e.g. map 'focus.explorer' -> 2\n// Context.get(1), Context.get(2)\n\nexport const get = (key) => {\n return state.contexts[key]\n}\n\nexport const getAll = () => {\n return state.contexts\n}\n\nexport const set = (key, value) => {\n state.contexts[key] = value\n}\n\nexport const remove = (key) => {\n delete state.contexts[key]\n}\n", "import * as Context from '../Context/Context.js'\n\n// TODO not sure if its worth to have a separate module for this or keep it inside Context.js\n// export const setFocus = (item) => {\n// if (Context.state.currentFocus) {\n// Context.remove(Context.state.currentFocus)\n// }\n// Context.set(`focus.${item}`, true)\n// }\n\nexport const state = {\n $PreviousFocusElement: undefined,\n currentFocus: '',\n}\n\nexport const setFocus = (key) => {\n if (state.currentFocus) {\n Context.remove(state.currentFocus)\n }\n // TODO could make focus key numeric enum which would be more efficient\n state.currentFocus = `focus.${key}`\n Context.set(state.currentFocus, true)\n}\n\nexport const setAdditionalFocus = (key) => {\n // TODO key should be numeric\n Context.set(`focus.${key}`, true)\n}\n\nexport const removeAdditionalFocus = (key) => {\n Context.remove(`focus.${key}`)\n}\n\nexport const focus = ($Element, key) => {\n if ($Element === document.activeElement) {\n return\n }\n state.$PreviousFocusElement = document.activeElement\n $Element.focus({ preventScroll: true })\n setFocus(key)\n}\n\nexport const focusPrevious = () => {\n if (state.$PreviousFocusElement) {\n state.$PreviousFocusElement.focus()\n }\n}\n", "export const state = {\n id: 0,\n}\n\nexport const create = () => {\n return ++state.id\n}\n", "import * as Logger from '../Logger/Logger.js'\nimport * as Id from '../Id/Id.js'\n\nconst callbacks = Object.create(null)\n\n/**\n * @deprecated use registerPromise instead\n */\nexport const register = (resolve, reject) => {\n const id = Id.create()\n callbacks[id] = { resolve, reject }\n return id\n}\n\nexport const registerPromise = () => {\n const id = Id.create()\n const promise = new Promise((resolve, reject) => {\n callbacks[id] = { resolve, reject }\n })\n return { id, promise }\n}\n\nexport const unregister = (id) => {\n delete callbacks[id]\n}\n\nexport const resolve = (id, result) => {\n if (!(id in callbacks)) {\n Logger.warn(`callback ${id} may already be disposed`)\n return\n }\n callbacks[id].resolve(result)\n}\n\nexport const reject = (id, error) => {\n if (!(id in callbacks)) {\n Logger.warn(`callback ${id} may already be disposed`)\n return\n }\n callbacks[id].reject(error)\n}\n", "export class JsonRpcError extends Error {\n constructor(message) {\n super(message)\n this.name = 'JsonRpcError'\n }\n}\n", "export const Two = '2.0'\n", "import * as Command from '../Command/Command.js'\nimport * as JsonRpcVersion from '../JsonRpcVersion/JsonRpcVersion.js'\n\nclass NonError extends Error {\n name = 'NonError'\n\n constructor(message) {\n super(message)\n }\n}\n\n// ensureError based on https://github.com/sindresorhus/ensure-error/blob/main/index.js (License MIT)\nconst ensureError = (input) => {\n if (!(input instanceof Error)) {\n return new NonError(input)\n }\n return input\n}\n\nconst serializeError = (error) => {\n error = ensureError(error)\n return {\n stack: error.stack,\n message: error.message,\n name: error.name,\n type: error.constructor.name,\n }\n}\n\nexport const getResponse = async (message) => {\n try {\n const result = await Command.execute(message.method, ...message.params)\n return {\n jsonrpc: JsonRpcVersion.Two,\n id: message.id,\n result,\n }\n } catch (error) {\n const serializedError = serializeError(error)\n return {\n jsonrpc: JsonRpcVersion.Two,\n id: message.id,\n error: {\n message: serializedError.message,\n stack: serializedError.stack,\n name: serializedError.name,\n type: serializedError.type,\n },\n }\n }\n}\n", "export const MessagePort = 1\nexport const ModuleWorker = 2\nexport const ReferencePort = 3\nexport const ModuleWorkerWithMessagePort = 4\nexport const Electron = 5\n\nexport const Auto = ModuleWorker\n", "export const Message = 'message'\n\nexport const Error = 'error'\n", "import * as FirstWorkerEventType from '../FirstWorkerEventType/FirstWorkerEventType.js'\n\nexport const getFirstWorkerEvent = async (worker) => {\n const { type, event } = await new Promise((resolve, reject) => {\n const cleanup = () => {\n worker.onmessage = null\n worker.onerror = null\n }\n const handleFirstMessage = (event) => {\n cleanup()\n resolve({ type: FirstWorkerEventType.Message, event })\n }\n const handleFirstError = (event) => {\n cleanup()\n resolve({ type: FirstWorkerEventType.Error, event })\n }\n worker.onmessage = handleFirstMessage\n worker.onerror = handleFirstError\n })\n return { type, event }\n}\n", "export class ModuleWorkersAreNotSupportedInFirefoxError extends Error {\n constructor() {\n super('module workers are not supported in firefox')\n }\n}\n", "export const Module = 'module'\n", "/**\n * @param {Event} event\n */\nexport const preventDefault = (event) => {\n event.preventDefault()\n}\n\n/**\n * @param {Event} event\n */\nexport const stopPropagation = (event) => {\n event.stopPropagation()\n}\n", "export const getWorkerDisplayName = (name) => {\n if (!name) {\n return '<unknown> worker'\n }\n if (name.endsWith('Worker')) {\n return name.toLowerCase()\n }\n return `${name} worker`\n}\n", "export const NotFound = 404\n", "import * as GetWorkerDisplayName from '../GetWorkerDisplayName/GetWorkerDisplayName.js'\nimport * as HttpStatusCode from '../HttpStatusCode/HttpStatusCode.js'\n\nexport const tryToGetActualErrorMessage = async ({ url, name }) => {\n const displayName = GetWorkerDisplayName.getWorkerDisplayName(name)\n try {\n globalThis.DONT_EXECUTE = 1\n await import(url)\n return `Failed to start ${displayName}: Unknown Error`\n } catch (error) {\n if (error && error instanceof Error && error.message.startsWith('Failed to fetch dynamically imported module')) {\n try {\n const response = await fetch(url)\n switch (response.status) {\n case HttpStatusCode.NotFound:\n return `Failed to start ${displayName}: Not found (404)`\n default:\n return `Failed to start ${displayName}: Unknown Network Error`\n }\n } catch {\n return `Failed to start ${displayName}: Unknown Network Error`\n }\n }\n return `Failed to start ${displayName}: ${error}`\n }\n}\n", "import * as Assert from '../Assert/Assert.js'\n\nexport const create = async ({ url }) => {\n Assert.string(url)\n const port = await new Promise((resolve) => {\n globalThis.acceptPort = resolve\n import(url)\n })\n delete globalThis.acceptPort\n return port\n}\n", "import * as FirstWorkerEventType from '../FirstWorkerEventType/FirstWorkerEventType.js'\nimport * as GetFirstWorkerEvent from '../GetFirstWorkerEvent/GetFirstWorkerEvent.js'\nimport { ModuleWorkersAreNotSupportedInFirefoxError } from '../ModuleWorkersAreNotSupportedInFirefoxError/ModuleWorkersAreNotSupportedInFirefoxError.js'\nimport * as WorkerType from '../WorkerType/WorkerType.js'\nimport * as Event from '../Event/Event.js'\n\nexport const create = async ({ url, name }) => {\n try {\n const worker = new Worker(url, {\n type: WorkerType.Module,\n name,\n })\n const { type, event } = await GetFirstWorkerEvent.getFirstWorkerEvent(worker)\n switch (type) {\n case FirstWorkerEventType.Message:\n if (event.data !== 'ready') {\n throw new Error('unexpected first message from worker')\n }\n break\n case FirstWorkerEventType.Error:\n const IsFirefoxWorkerError = await import('../IsFirefoxWorkerError/IsFirefoxWorkerError.js')\n if (IsFirefoxWorkerError.isFirefoxWorkerError(event.message)) {\n Event.preventDefault(event)\n throw new ModuleWorkersAreNotSupportedInFirefoxError()\n }\n const TryToGetActualWorkerErrorMessage = await import('../TryToGetActualWorkerErrorMessage/TryToGetActualWorkerErrorMessage.js')\n const actualErrorMessage = await TryToGetActualWorkerErrorMessage.tryToGetActualErrorMessage({\n url,\n name,\n })\n throw new Error(actualErrorMessage)\n default:\n break\n }\n return worker\n } catch (error) {\n if (error && error instanceof ModuleWorkersAreNotSupportedInFirefoxError) {\n const IpcParentWithMessagePort = await import('../IpcParentWithMessagePort/IpcParentWithMessagePort.js')\n return IpcParentWithMessagePort.create({ url })\n }\n throw error\n }\n}\n\nexport const wrap = (worker) => {\n let handleMessage\n return {\n get onmessage() {\n return handleMessage\n },\n set onmessage(listener) {\n if (listener) {\n handleMessage = (event) => {\n // TODO why are some events not instance of message event?\n if (event instanceof MessageEvent) {\n const message = event.data\n listener(message, event)\n } else {\n listener(event)\n }\n }\n } else {\n handleMessage = null\n }\n worker.onmessage = handleMessage\n },\n send(message) {\n worker.postMessage(message)\n },\n sendAndTransfer(message, transfer) {\n worker.postMessage(message, transfer)\n },\n }\n}\n", "export const create = async (url) => {\n const referencePort = await new Promise((resolve) => {\n globalThis.acceptReferencePort = resolve\n import(url)\n })\n delete globalThis.acceptReferencePort\n return referencePort\n}\n", "import * as IpcParentWithModuleWorker from '../IpcParentWithModuleWorker/IpcParentWithModuleWorker.js'\nimport * as JsonRpcVersion from '../JsonRpcVersion/JsonRpcVersion.js'\n\nexport const create = async ({ url, name }) => {\n const worker = await IpcParentWithModuleWorker.create({\n url,\n name,\n })\n if (worker instanceof Worker) {\n const channel = new MessageChannel()\n const { port1, port2 } = channel\n worker.postMessage(\n {\n jsonrpc: JsonRpcVersion.Two,\n method: 'initialize',\n params: ['message-port', port1],\n },\n [port1]\n )\n return port2\n }\n return worker\n}\n", "export const create = ({ type }) => {\n return new Promise((resolve, reject) => {\n const handleMessageFromWindow = (event) => {\n const port = event.ports[0]\n resolve(port)\n }\n\n // @ts-ignore\n window.addEventListener('message', handleMessageFromWindow, {\n once: true,\n })\n // @ts-ignore\n if (typeof window.myApi === 'undefined') {\n reject(new Error('Electron api was requested but is not available'))\n }\n // @ts-ignore\n window.myApi.ipcConnect(type)\n })\n}\n", "import * as IpcParentType from '../IpcParentType/IpcParentType.js'\n\nexport const getModule = (method) => {\n switch (method) {\n case IpcParentType.ModuleWorker:\n return import('../IpcParentWithModuleWorker/IpcParentWithModuleWorker.js')\n case IpcParentType.MessagePort:\n return import('../IpcParentWithMessagePort/IpcParentWithMessagePort.js')\n case IpcParentType.ReferencePort:\n return import('../IpcParentWithReferencePort/IpcParentWithReferencePort.js')\n case IpcParentType.ModuleWorkerWithMessagePort:\n return import('../IpcParentWithModuleWorkerWithMessagePort/IpcParentWithModuleWorkerWithMessagePort.js')\n case IpcParentType.Electron:\n return import('../IpcParentWithElectron/IpcParentWithElectron.js')\n default:\n throw new Error('unexpected ipc type')\n }\n}\n", "import * as IpcParentModule from '../IpcParentModule/IpcParentModule.js'\n\nexport const create = async ({ method, ...options }) => {\n const module = await IpcParentModule.getModule(method)\n // @ts-ignore\n return module.create(options)\n}\n", "export const Web = 'web'\n\nexport const Electron = 'electron'\n\nexport const Remote = 'remote'\n", "import * as PlatformType from '../PlatformType/PlatformType.js'\n/* istanbul ignore file */\n\n// TODO this should always be completely tree shaken out during build\n\n/**\n * @returns {'electron'|'remote'|'web'}\n */\nconst getPlatform = () => {\n // @ts-ignore\n if (typeof 'remote' !== 'undefined') {\n // @ts-ignore\n return 'remote'\n }\n if (typeof process !== 'undefined' && process.env.NODE_ENV === 'test') {\n return PlatformType.Remote\n }\n // @ts-ignore\n if (typeof myApi !== 'undefined') {\n return PlatformType.Electron\n }\n return PlatformType.Remote\n}\n\nexport const platform = getPlatform()\n\n// TODO treeshake this function out when targeting electron\n\nexport const state = {\n getAssetDir() {\n // @ts-ignore\n if (typeof '/b969c79' !== 'undefined') {\n // @ts-ignore\n return '/b969c79'\n }\n if (platform === 'electron') {\n return '../../../../..'\n }\n return ''\n },\n supportsHtml5Dialog() {\n const $Dialog = document.createElement('dialog')\n // @ts-ignore\n return typeof $Dialog.showModal === 'function'\n },\n isElectron() {\n return (\n // @ts-ignore\n window.myApi &&\n // @ts-ignore\n window.myApi.ipcConnect &&\n // @ts-ignore\n typeof window.myApi.ipcConnect === 'function'\n )\n },\n}\n\n// TODO if necessary support more browser detection\nexport const getBrowser = () => {\n if (platform === 'electron') {\n return 'electron'\n }\n // @ts-ignore\n const userAgentData = navigator.userAgentData\n if (userAgentData) {\n for (const brand of userAgentData.brands) {\n const actualBrand = brand.brand.toLowerCase()\n switch (actualBrand) {\n case 'firefox':\n return 'firefox'\n case 'chromium':\n return 'chromium'\n default:\n break\n }\n }\n }\n const userAgent = navigator.userAgent.toLowerCase()\n if (userAgent.includes('firefox')) {\n return 'firefox'\n }\n if (userAgent.includes('Electron')) {\n return 'electron'\n }\n return 'chromium'\n}\n\nexport const getAssetDir = () => {\n return state.getAssetDir()\n}\n\nexport const supportsHtml5Dialog = () => {\n return state.supportsHtml5Dialog()\n}\n\nexport const isElectron = () => {\n return state.isElectron()\n}\n\nexport const getRendererWorkerUrl = () => {\n const assetDir = getAssetDir()\n const urlRendererWorker = `${assetDir}/packages/renderer-worker/dist/rendererWorkerMain.js`\n return urlRendererWorker\n}\n\nconst getIsMobile = () => {\n if (typeof process !== 'undefined' && process.env.NODE_ENV === 'test') {\n return false\n }\n // @ts-ignore\n const userAgentData = navigator.userAgentData\n if (userAgentData && 'mobile' in userAgentData) {\n return userAgentData.mobile\n }\n if (navigator.userAgent.includes('Android')) {\n return true\n }\n return false\n}\n\nexport const isMobile = getIsMobile()\n", "import * as Callback from '../Callback/Callback.js'\nimport { JsonRpcError } from '../Errors/JsonRpcError.js'\nimport * as GetResponse from '../GetResponse/GetResponse.js'\nimport * as IpcParent from '../IpcParent/IpcParent.js'\nimport * as IpcParentType from '../IpcParentType/IpcParentType.js'\nimport * as JsonRpcVersion from '../JsonRpcVersion/JsonRpcVersion.js'\nimport * as Platform from '../Platform/Platform.js'\n\nexport const state = {\n /**\n * @type {any}\n */\n ipc: undefined,\n}\n\nconst handleMessageFromRendererWorker = async (event) => {\n const message = event.data\n if ('id' in message) {\n if ('method' in message) {\n const response = await GetResponse.getResponse(message)\n state.ipc.send(response)\n return\n }\n Callback.resolve(message.id, message)\n return\n }\n if (message.method === 'get-port') {\n const port = await getPort(...message.params)\n state.ipc.sendAndTransfer(\n {\n jsonrpc: JsonRpcVersion.Two,\n id: message._id,\n result: port,\n },\n [port]\n )\n return\n }\n throw new JsonRpcError('unexpected message from renderer worker')\n}\n\nconst getIpc = async () => {\n const isElectron = Platform.isElectron()\n const name = isElectron ? 'Renderer Worker (Electron)' : 'Renderer Worker'\n const rendererWorker = await IpcParent.create({\n method: IpcParentType.Auto,\n url: Platform.getRendererWorkerUrl(),\n name,\n })\n return {\n send(message) {\n rendererWorker.postMessage(message)\n },\n sendAndTransfer(message, transferables) {\n rendererWorker.postMessage(message, transferables)\n },\n get onmessage() {\n return rendererWorker.onmessage\n },\n set onmessage(listener) {\n rendererWorker.onmessage = listener\n },\n }\n}\n\nconst getPort = (options) => {\n return IpcParent.create(options)\n}\n\nexport const hydrate = async (config) => {\n const ipc = await getIpc()\n ipc.onmessage = handleMessageFromRendererWorker\n state.ipc = ipc\n}\n\n// TODO needed?\nexport const dispose = () => {\n if (state.rendererWorker) {\n state.rendererWorker.terminate()\n }\n}\n\nexport const send = (method, ...params) => {\n state.ipc.send({\n jsonrpc: JsonRpcVersion.Two,\n method,\n params,\n })\n}\n\nconst deserializeError = (serializedError) => {\n const error = new Error()\n if (serializedError && serializedError.message) {\n error.message = serializedError.message\n }\n if (serializedError && serializedError.stack) {\n error.stack = serializedError.stack\n }\n return error\n}\n\nconst combineStacks = (upperStack, lowerStack) => {\n const indexNewLine = lowerStack.indexOf('\\n')\n return upperStack + lowerStack.slice(indexNewLine)\n}\n\nclass RendererWorkerError extends Error {\n constructor(serializedError) {\n const deserializedError = deserializeError(serializedError)\n super(deserializedError.message)\n if (this.stack) {\n this.stack = combineStacks(deserializedError.stack, this.stack)\n }\n }\n}\n\nexport const invoke = async (method, ...params) => {\n const { id, promise } = Callback.registerPromise()\n state.ipc.send({\n jsonrpc: JsonRpcVersion.Two,\n method,\n params,\n id,\n })\n const responseMessage = await promise\n if ('error' in responseMessage) {\n throw new RendererWorkerError(responseMessage.error)\n }\n if ('result' in responseMessage) {\n return responseMessage.result\n }\n\n throw new JsonRpcError('unexpected message from renderer worker')\n}\n\nexport const sendAndTransfer = (message, transfer) => {\n state.ipc.sendAndTransfer(message, transfer)\n}\n", "import * as Widget from '../Widget/Widget.js'\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\n\nconst handleBlur = () => {\n RendererWorker.send(/* EditorRename.abort */ 'EditorRename.abort')\n}\n\nexport const create = (x, y) => {\n const $RenameWidgetInputBox = InputBox.create()\n $RenameWidgetInputBox.className = 'RenameWidgetInputBox'\n $RenameWidgetInputBox.onblur = handleBlur\n const $RenameWidget = document.createElement('div')\n $RenameWidget.className = 'RenameWidget'\n $RenameWidget.append($RenameWidgetInputBox)\n SetBounds.setXAndY($RenameWidget, x, y)\n Widget.append($RenameWidget)\n Focus.focus($RenameWidgetInputBox, 'editorRename')\n return {\n $RenameWidget,\n $RenameWidgetInputBox,\n }\n}\n\nexport const dispose = (state) => {\n // TODO focus editor\n Widget.remove(state.$RenameWidget)\n}\n\n// TODO could also be event based\n// finish -> finish -> finishWithValue\n\nexport const finish = (state) => {\n const value = state.$RenameWidgetInputBox.value\n // TODO don't like side effect here\n return value\n}\n", "import * as EditorRename from './EditorRename.js'\n\nexport const name = 'EditorRename'\n\nexport const Commands = {\n create: EditorRename.create,\n dispose: EditorRename.dispose,\n finish: EditorRename.finish,\n}\n", "/*\n * should only be used for testing\n */\nexport const evalCode = (code) => {\n window.eval(code)\n}\n", "import * as Eval from './Eval.js'\n\nexport const name = 'Eval'\n\nexport const Commands = {\n evalCode: Eval.evalCode,\n}\n", "export const showDirectoryPicker = (options) => {\n // @ts-ignore\n return window.showDirectoryPicker(options)\n}\n\nexport const showFilePicker = (options) => {\n // @ts-ignore\n return window.showFilePicker(options)\n}\n\nexport const showSaveFilePicker = (options) => {\n // @ts-ignore\n return window.showSaveFilePicker(options)\n}\n", "import * as FilePicker from './FilePicker.js'\n\nexport const name = 'FilePicker'\n\nexport const Commands = {\n showDirectoryPicker: FilePicker.showDirectoryPicker,\n showFilePicker: FilePicker.showFilePicker,\n showSaveFilePicker: FilePicker.showSaveFilePicker,\n}\n", "export const requestPermission = (handle, options) => {\n return handle.requestPermission(options)\n}\n", "import * as FileSystemHandle from './FileSystemHandle.js'\n\nexport const name = 'FileSystemHandle'\n\nexport const Commands = {\n requestPermission: FileSystemHandle.requestPermission,\n}\n", "import * as Widget from '../Widget/Widget.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\n\nconst handleImageLoad = (event) => {\n const $ImagePreviewImage = event.target\n const $ImagePreviewCaption = $ImagePreviewImage.nextSibling\n const width = $ImagePreviewImage.naturalWidth\n const height = $ImagePreviewImage.naturalHeight\n $ImagePreviewCaption.textContent = `${width} \u00D7 ${height}`\n}\n\nconst handleImageError = (event) => {\n const $ImagePreviewImage = event.target\n const $ImagePreviewCaption = $ImagePreviewImage.nextSibling\n $ImagePreviewCaption.textContent = 'Image could not be loaded'\n}\n\n// TODO duplicate code with below\n\nexport const showError = (message, y, x) => {\n const $ImagePreviewImage = document.createElement('img')\n $ImagePreviewImage.className = 'ImagePreviewImage'\n $ImagePreviewImage.alt = ''\n const $ImagePreviewCaption = document.createElement('figcaption')\n $ImagePreviewCaption.className = 'ImagePreviewCaption'\n $ImagePreviewCaption.textContent = message\n const $ImagePreview = document.createElement('figure')\n $ImagePreview.className = 'ImagePreview'\n $ImagePreview.append($ImagePreviewImage, $ImagePreviewCaption)\n SetBounds.setXAndY($ImagePreview, x, y)\n $ImagePreview.style.display = 'none'\n Widget.append($ImagePreview)\n return {\n $ImagePreview,\n $ImagePreviewCaption,\n $ImagePreviewImage,\n }\n}\n\nexport const create = (uri, top, left) => {\n const $ImagePreviewImage = document.createElement('img')\n $ImagePreviewImage.className = 'ImagePreviewImage'\n $ImagePreviewImage.src = uri\n $ImagePreviewImage.alt = ''\n const $ImagePreviewCaption = document.createElement('figcaption')\n $ImagePreviewCaption.className = 'ImagePreviewCaption'\n const $ImagePreview = document.createElement('figure')\n $ImagePreview.className = 'ImagePreview'\n $ImagePreview.append($ImagePreviewImage, $ImagePreviewCaption)\n $ImagePreviewImage.onload = handleImageLoad\n $ImagePreviewImage.onerror = handleImageError\n $ImagePreview.style.top = `${top}px`\n $ImagePreview.style.left = `${left}px`\n $ImagePreview.style.display = 'none'\n Widget.append($ImagePreview)\n return {\n $ImagePreview,\n $ImagePreviewCaption,\n $ImagePreviewImage,\n }\n}\n\nexport const update = (state, uri) => {\n state.$ImagePreviewImage.uri = uri\n}\n\nexport const dispose = (state) => {\n Widget.remove(state.$ImagePreview)\n}\n", "import * as ImagePreview from './ImagePreview.js'\n\nexport const name = 'ImagePreview'\n\nexport const Commands = {\n create: ImagePreview.create,\n dispose: ImagePreview.dispose,\n showError: ImagePreview.showError,\n update: ImagePreview.update,\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const getPathName = () => {\n return location.pathname\n}\n\nexport const getHref = () => {\n return location.href\n}\n\n// TODO should do nothing if it is already at this path\nexport const setPathName = (pathName) => {\n const currentPathName = getPathName()\n if (currentPathName === pathName) {\n return\n }\n history.pushState(null, null, pathName)\n}\n\nconst handlePopState = (event) => {\n // RendererWorker.send(/* Workspace.hydrate */ 'Workspace.hydrate')\n}\n\nexport const hydrate = () => {\n // addEventListener('popstate', handlePopState)\n}\n", "const getTitleBarHeight = () => {\n if (\n // @ts-ignore\n navigator.windowControlsOverlay &&\n // @ts-ignore\n navigator.windowControlsOverlay.getTitlebarAreaRect\n ) {\n // @ts-ignore\n const titleBarRect = navigator.windowControlsOverlay.getTitlebarAreaRect()\n return titleBarRect.height\n }\n return 0\n}\n\nexport const getBounds = () => {\n return {\n windowWidth: window.innerWidth,\n windowHeight: window.innerHeight,\n titleBarHeight: getTitleBarHeight(),\n }\n}\n", "import * as Location from '../Location/Location.js'\nimport * as Layout from '../Layout/Layout.js'\n\nexport const getInitData = () => {\n const initData = {\n Location: {\n href: Location.getHref(),\n },\n Layout: {\n bounds: Layout.getBounds(),\n },\n }\n return initData\n}\n", "import * as InitData from './InitData.js'\n\nexport const name = 'InitData'\n\nexport const Commands = {\n getInitData: InitData.getInitData,\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Logger from '../Logger/Logger.js'\n\nexport const state = {\n keyBindings: [],\n modifier: '',\n modifierTimeout: -1,\n keyBindingSets: Object.create(null),\n}\n\nexport const addKeyBindings = (id, keyBindings) => {\n Assert.string(id)\n Assert.array(keyBindings)\n if (id in state.keyBindingSets) {\n Logger.warn(`cannot add keybindings multiple times: ${id}`)\n return\n }\n state.keyBindingSets[id] = keyBindings\n state.keyBindings.unshift(...keyBindings)\n}\n\nexport const removeKeyBindings = (id) => {\n Assert.string(id)\n const { keyBindingSets } = state\n if (!(id in keyBindingSets)) {\n Logger.warn(`cannot remove keybindings that are not registered: ${id}`)\n return\n }\n delete keyBindingSets[id]\n state.keyBindings = Object.values(keyBindingSets).flat(1)\n}\n\nexport const getKeyBindings = () => {\n return state.keyBindings\n}\n\nexport const isModifier = (modifier) => {\n return state.modifier === modifier\n}\n\nexport const setModifier = (modifier) => {\n state.modifier = modifier\n}\n\nexport const setModifierTimeout = (timeout) => {\n state.modifierTimeout = timeout\n}\n\nexport const hasModifier = () => {\n return state.modifier\n}\n\nexport const getModifierTimeout = () => {\n return state.modifierTimeout\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Context from '../Context/Context.js'\nimport * as KeyBindingsState from '../KeyBindingsState/KeyBindingsState.js'\nimport * as Platform from '../Platform/Platform.js'\n\n// TODO store keybindings as json somewhere\n\n// TODO sort keybindings by `when` priority -> focus.editorCompletions: 10, focus.editor:9 etc.\n\n// TODO does it make sense to have all of these configurable?\n// could remove some context logic and have less user configuration when these are default\n// e.g. arrow down focuses next, arrow up always focuses previous item (like in aria spec)\n\n// TODO ui should only have keys -> commands get resolved inside renderer worker\n// TODO should toggle terminal, not only open\n\nexport const addKeyBindings = (id, keyBindings) => {\n Assert.string(id)\n Assert.array(keyBindings)\n KeyBindingsState.addKeyBindings(id, keyBindings)\n}\n\nexport const removeKeyBindings = (id) => {\n KeyBindingsState.removeKeyBindings(id)\n}\n\nexport const hydrate = (keyBindings) => {\n // TODO is this the right place for browser context ?\n // maybe in env file / env service\n const browser = Platform.getBrowser()\n Context.set(`browser.${browser}`, true)\n addKeyBindings('initial', keyBindings)\n}\n\n// TODO should be in renderer worker\nexport const lookupKeyBinding = (commandId) => {\n switch (commandId) {\n case 'scm.acceptInput':\n return 'Ctrl+Enter'\n default:\n return ''\n }\n}\n", "import * as KeyBindings from './KeyBindings.js'\n\nexport const name = 'KeyBindings'\n\nexport const Commands = {\n // Command.register(756, KeyBindings.setKeyBindings)\n hydrate: KeyBindings.hydrate,\n}\n", "import * as Layout from './Layout.js'\n\nexport const name = 'Layout'\n\nexport const Commands = {\n getBounds: Layout.getBounds,\n}\n", "import * as Location from './Location.js'\n\nexport const name = 'Location'\n\nexport const Commands = {\n getHref: Location.getHref,\n getPathName: Location.getPathName,\n hydrate: Location.hydrate,\n setPathName: Location.setPathName,\n}\n", "export const setThemeColor = (color) => {\n const meta = document.querySelector('meta[name=\"theme-color\"]')\n if (!meta) {\n return\n }\n // @ts-ignore\n meta.content = color\n}\n", "import * as Meta from './Meta.js'\n\nexport const name = 'Meta'\n\nexport const Commands = {\n setThemeColor: Meta.setThemeColor,\n}\n", "import * as Widget from '../Widget/Widget.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const state = {\n $Notifications: undefined,\n}\n\nconst create$Notifications = () => {\n const $Notifications = document.createElement('div')\n $Notifications.id = 'Notifications'\n return $Notifications\n}\n\nconst create$Notification = (message) => {\n const $Notification = document.createElement('div')\n $Notification.className = 'Notification'\n $Notification.textContent = message\n return $Notification\n}\n\nexport const create = (type, message) => {\n // TODO this pattern might be also useful for activitybar, sidebar etc., creating elements as late as possible, only when actually needed\n const $Notification = create$Notification(message)\n Widget.append($Notification)\n}\n\nconst findIndex = ($Child) => {\n const $Parent = $Child.parentNode\n for (let i = 0; i < $Parent.children.length; i++) {\n if ($Parent.children[i] === $Child) {\n return i\n }\n }\n return -1\n}\n\nconst handleNotificationClick = (event) => {\n const $Target = event.target\n switch ($Target.className) {\n case 'NotificationOption':\n const index = findIndex($Target)\n RendererWorker.send(\n /* Notification.handleClick */ 'Notification.handleClick',\n /* index */ index\n )\n break\n default:\n break\n }\n}\n\nconst create$NotificationWithOptions = (message, options) => {\n const $NotificationMessage = document.createElement('p')\n $NotificationMessage.className = 'NotificationMessage'\n $NotificationMessage.textContent = message\n const $NotificationOptions = document.createElement('div')\n $NotificationOptions.className = 'NotificationOptions'\n for (const option of options) {\n const $NotificationOption = document.createElement('button')\n $NotificationOption.className = 'NotificationOption'\n $NotificationOption.textContent = option\n $NotificationOptions.append($NotificationOption)\n }\n const $Notification = document.createElement('div')\n $Notification.className = 'Notification'\n $Notification.append($NotificationMessage, $NotificationOptions)\n $Notification.onclick = handleNotificationClick\n return $Notification\n}\n\nexport const createWithOptions = (type, message, options) => {\n const $Notification = create$NotificationWithOptions(message, options)\n Widget.append($Notification)\n}\n\nexport const dispose = (id) => {\n // const $Notification = state.$Notifications\n}\n", "import * as Notification from './Notification.js'\n\nexport const name = 'Notification'\n\n// prettier-ignore\nexport const Commands = {\n create: Notification.create,\n createWithOptions: Notification.createWithOptions,\n dispose: Notification.dispose,\n}\n", "import * as JsonRpcVersion from '../JsonRpcVersion/JsonRpcVersion.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const state = {\n canvasObjects: Object.create(null),\n}\n\nexport const get = (id) => {\n return state.canvasObjects[id]\n}\n\nexport const create = (canvasId, callbackId) => {\n const canvas = document.createElement('canvas')\n // @ts-ignore\n const offscreenCanvas = canvas.transferControlToOffscreen()\n state.canvasObjects[canvasId] = canvas\n RendererWorker.sendAndTransfer(\n {\n jsonrpc: JsonRpcVersion.Two,\n id: callbackId,\n params: [offscreenCanvas],\n },\n [offscreenCanvas]\n )\n}\n", "import * as OffscreenCanvas from './OffscreenCanvas.js'\n\nexport const name = 'OffscreenCanvas'\n\n// prettier-ignore\nexport const Commands = {\n create: OffscreenCanvas.create,\n}\n", "// TODO this module should be called dom or dom utils\n\n// TODO this module makes for weird code splitting chunks,\n// maybe duplicate the code per file for better chunks\n\nexport const findIndex = ($Container, $Target) => {\n while ($Target && $Target.parentNode !== $Container) {\n $Target = $Target.parentNode\n }\n if (!$Target) {\n return -1\n }\n for (let i = 0; i < $Container.children.length; i++) {\n if ($Container.children[i] === $Target) {\n return i\n }\n }\n return -1\n}\n", "export const create$BackDrop = () => {\n const $BackDrop = document.createElement('div')\n $BackDrop.id = 'BackDrop'\n return $BackDrop\n}\n", "export const Separator = 1\n\nexport const None = 0\n\nexport const SubMenu = 4\n\nexport const Checked = 2\n\nexport const Unchecked = 3\n\nexport const Disabled = 5\n\nexport const RestoreFocus = 6\n\nexport const Ignore = 7\n", "import * as AriaBoolean from '../AriaBoolean/AriaBoolean.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as MenuItemFlags from '../MenuItemFlags/MenuItemFlags.js'\nimport * as Logger from '../Logger/Logger.js'\n\nconst getLabel = (item) => {\n if (!item || !item.label) {\n Logger.warn('menu item has missing label', item)\n return 'n/a'\n }\n return item.label\n}\n\nexport const create$MenuItem = (item) => {\n const $MenuItem = document.createElement('div')\n switch (item.flags) {\n case MenuItemFlags.None:\n case MenuItemFlags.RestoreFocus:\n case MenuItemFlags.Ignore:\n $MenuItem.className = 'MenuItem'\n $MenuItem.role = AriaRoles.MenuItem\n $MenuItem.textContent = getLabel(item)\n $MenuItem.tabIndex = -1\n break\n case MenuItemFlags.Separator:\n $MenuItem.className = 'MenuItemSeparator'\n $MenuItem.role = AriaRoles.Separator\n break\n case MenuItemFlags.Checked:\n $MenuItem.className = 'MenuItem'\n $MenuItem.role = AriaRoles.MenuItemCheckBox\n $MenuItem.ariaChecked = AriaBoolean.True\n $MenuItem.textContent = getLabel(item)\n $MenuItem.tabIndex = -1\n break\n case MenuItemFlags.Unchecked:\n $MenuItem.className = 'MenuItem'\n $MenuItem.role = AriaRoles.MenuItemCheckBox\n $MenuItem.ariaChecked = AriaBoolean.False\n $MenuItem.textContent = getLabel(item)\n $MenuItem.tabIndex = -1\n break\n case MenuItemFlags.SubMenu:\n $MenuItem.className = 'MenuItem'\n $MenuItem.role = AriaRoles.MenuItem\n $MenuItem.textContent = getLabel(item)\n $MenuItem.tabIndex = -1\n $MenuItem.ariaHasPopup = AriaBoolean.True\n $MenuItem.ariaExpanded = AriaBoolean.False\n break\n case MenuItemFlags.Disabled:\n $MenuItem.className = 'MenuItem'\n $MenuItem.role = AriaRoles.MenuItem\n $MenuItem.textContent = getLabel(item)\n $MenuItem.tabIndex = -1\n $MenuItem.setAttribute('disabled', AriaBoolean.True)\n break\n default:\n $MenuItem.className = 'MenuItem'\n $MenuItem.role = AriaRoles.MenuItem\n $MenuItem.textContent = getLabel(item)\n $MenuItem.tabIndex = -1\n Logger.warn('invalid menu item flags:', item)\n break\n }\n return $MenuItem\n}\n", "export const BeforeInput = 'beforeinput'\nexport const Blur = 'blur'\nexport const Click = 'click'\nexport const CompositionEnd = 'compositionend'\nexport const CompositionStart = 'compositionstart'\nexport const CompositionUpdate = 'compositionupdate'\nexport const ContextMenu = 'contextmenu'\nexport const Focus = 'focus'\nexport const FocusIn = 'focusin'\nexport const FocusOut = 'focusout'\nexport const Input = 'input'\nexport const KeyDown = 'keydown'\nexport const KeyUp = 'keyup'\nexport const LostPointerCapture = 'lostpointercapture'\nexport const MouseDown = 'mousedown'\nexport const MouseEnter = 'mouseenter'\nexport const MouseLeave = 'mouseleave'\nexport const MouseMove = 'mousemove'\nexport const MouseUp = 'mouseup'\nexport const PointerDown = 'pointerdown'\nexport const PointerMove = 'pointermove'\nexport const PointerUp = 'pointerup'\nexport const Resize = 'resize'\nexport const TouchEnd = 'touchend'\nexport const TouchMove = 'touchmove'\nexport const TouchStart = 'touchstart'\nexport const Wheel = 'wheel'\n", "import * as FindIndex from '../../shared/findIndex.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as BackDrop from '../BackDrop/BackDrop.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as MenuItem from '../MenuItem/MenuItem.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as Widget from '../Widget/Widget.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\nimport * as DomAttributeType from '../DomAttributeType/DomAttributeType.js'\nimport * as AriaBoolean from '../AriaBoolean/AriaBoolean.js'\nimport * as Event from '../Event/Event.js'\n// TODO when pressing tab -> focus next element in tab order and close menu\n\n// TODO menu and contextmenu should have own keybinding logic\n// seems not possible to do with just one keybinding listener\n\n// TODO similar to context menu, show sub menu entries\n// there can be multiple instances (parent -> child -> child) submenus\n\n// TODO using .style.top, .style.left causes chrome devtools to show many layout shift -> maybe use transform instead\n\n// TODO when cycling through items, recalculate style is much slower\n// than in vscode (1.49ms vs 0.33ms)\n// paint is also faster in vscode (0.32ms vs 0.14ms)\n\n// TODO focus on menu is not announced to screenreader\n\n// TODO recalculate style and paint is slow when cycling through items:\n// 0.59ms recalculate style\n// 36us update layer tree\n// 0.35ms paint\n// 0.20ms composite layer\n\n// const contextMenuWidth = 150\n// const contextMenuHeight = 150 + /* padding */ 8 * 4\n\n// TODO keyboard handling\n\nexport const state = {\n handleKeyDown(event) {},\n handleFocusOut(event) {},\n $$Menus: [],\n anchorX: 0,\n anchorY: 0,\n anchorTime: -1,\n $BackDrop: undefined,\n}\n\nconst getLevel = ($Menu) => {\n return state.$$Menus.indexOf($Menu)\n}\n\nconst handleMouseDown = (event) => {\n const $Target = event.target\n const $Menu = $Target.closest('.Menu')\n const index = FindIndex.findIndex($Menu, $Target)\n if (index === -1) {\n return\n }\n Event.preventDefault(event)\n const level = getLevel($Menu)\n RendererWorker.send(/* Menu.handleClick */ 'Menu.selectIndex', /* level */ level, /* index */ index)\n}\n\n// const handleKeyDown = (event) => {\n// switch (event.key) {\n// case 'ArrowUp':\n// RendererWorker.send( /* Menu.focusPrevious */ 7405)\n// break\n// case 'ArrowLeft':\n// // TODO collapse menu maybe\n// break\n// case 'ArrowDown':\n// RendererWorker.send( /* Menu.focusNext */ 7404)\n// break\n// case 'ArrowRight':\n// // TODO expand sub menu maybe\n// break\n// case 'Home':\n// RendererWorker.send( /* Menu.focusFirst */ 7406)\n// break\n// case 'End':\n// RendererWorker.send( /* Menu.focusLast */ 7407)\n// break\n// default:\n// break\n// }\n// }\n\nconst MOUSE_LOCS_TRACKED = 3\n\n/**\n *\n * @param {MouseEvent} event\n */\nconst handleMouseEnter = (event) => {\n const { target, clientX, clientY, timeStamp } = event\n // @ts-ignore\n const $Menu = target.closest('.Menu')\n const index = FindIndex.findIndex($Menu, target)\n if (index === -1) {\n return\n }\n const level = getLevel($Menu)\n RendererWorker.send(\n /* Menu.handleMouseEnter */ 'Menu.handleMouseEnter',\n /* level */ level,\n /* index */ index,\n /* x */ clientX,\n /* y */ clientY,\n /* timeStamp */ timeStamp\n )\n}\n\nconst handleMouseMove = (event) => {\n // const x = event.clientX\n // const y = event.clientY\n}\n\nconst handleMouseLeave = (event) => {\n const $RelatedTarget = event.relatedTarget\n if ($RelatedTarget.classList.contains('MenuItem')) {\n }\n // RendererWorker.send(/* Menu.handleMouseLeave */ 'Menu.handleMouseLeave')\n}\n\n// const handleBlur = (event) => {}\nconst handleKeyDown = (event) => {\n state.handleKeyDown(event)\n}\n\nconst handleFocusOut = (event) => {\n state.handleFocusOut(event)\n}\n\nconst create$Menu = () => {\n // TODO set aria label on menu (e.g. File, Edit, Selection)\n const $Menu = document.createElement('ul')\n $Menu.className = 'Menu'\n $Menu.role = AriaRoles.Menu\n $Menu.tabIndex = -1\n // $ContextMenu.onmousedown = contextMenuHandleMouseDown\n // TODO mousedown vs click? (click is usually better but mousedown is faster, why wait 100ms?)\n $Menu.addEventListener(DomEventType.MouseDown, handleMouseDown)\n $Menu.addEventListener(DomEventType.MouseEnter, handleMouseEnter, {\n capture: true,\n })\n $Menu.addEventListener(DomEventType.MouseLeave, handleMouseLeave, {\n capture: true,\n })\n // $Menu.addEventListener('mousemove', handleMouseMove, {\n // passive: true,\n // })\n $Menu.onkeydown = handleKeyDown\n $Menu.addEventListener(DomEventType.FocusOut, handleFocusOut)\n $Menu.oncontextmenu = handleContextMenu\n // $ContextMenu.onfocus = handleFocus\n // $ContextMenu.onblur = handleBlur\n return $Menu\n}\n\nexport const focusIndex = (level, oldFocusedIndex, newFocusedIndex) => {\n const $Menu = state.$$Menus[level]\n if (oldFocusedIndex !== -1) {\n $Menu.children[oldFocusedIndex].classList.remove('Focused')\n }\n if (newFocusedIndex !== -1) {\n $Menu.children[newFocusedIndex].classList.add('Focused')\n $Menu.children[newFocusedIndex].focus()\n }\n}\n\n// TODO replace function that recycles menu dom nodes\n\nconst handleBackDropMouseDown = (event) => {\n Event.preventDefault(event)\n Event.stopPropagation(event)\n RendererWorker.send(/* Menu.hide */ 'Menu.hide')\n}\n\nconst handleContextMenu = (event) => {\n Event.preventDefault(event)\n}\n\nexport const showMenu = (x, y, width, height, items, level, parentIndex = -1, mouseBlocking = false) => {\n if (mouseBlocking) {\n const $BackDrop = BackDrop.create$BackDrop()\n $BackDrop.onmousedown = handleBackDropMouseDown\n $BackDrop.oncontextmenu = handleContextMenu\n state.$BackDrop = $BackDrop\n Widget.append($BackDrop)\n }\n\n const $Menu = create$Menu()\n $Menu.append(...items.map(MenuItem.create$MenuItem))\n SetBounds.setXAndY($Menu, x, y)\n $Menu.id = `Menu-${level}`\n\n if (parentIndex !== -1) {\n const $ParentMenu = state.$$Menus[level - 1]\n const $ParentMenuItem = $ParentMenu.children[parentIndex]\n $ParentMenuItem.ariaExpanded = AriaBoolean.True\n $ParentMenuItem.setAttribute(DomAttributeType.AriaOwns, $Menu.id)\n }\n\n state.$$Menus.push($Menu)\n Widget.append($Menu)\n\n if (level === 0) {\n Focus.focus($Menu, 'menu')\n }\n}\n\nexport const showContextMenu = (x, y, width, height, level, items) => {\n for (const $Menu of state.$$Menus) {\n Widget.remove($Menu)\n }\n state.$$Menus = []\n while (state.$$Menus.length > 0) {\n state.$$Menus[0].remove()\n }\n const $Menu = create$Menu()\n $Menu.append(...items.map(MenuItem.create$MenuItem))\n SetBounds.setXAndY($Menu, x, y)\n $Menu.id = `Menu-${level}`\n Widget.append($Menu)\n state.$$Menus.push($Menu)\n // TODO create backdrop\n}\n\nexport const closeSubMenu = () => {\n const $SubMenu = state.$$Menus.pop()\n const $ParentMenu = state.$$Menus.at(-1)\n Widget.remove($SubMenu)\n}\n\nexport const hideSubMenu = (level) => {\n const $$ChildMenus = state.$$Menus.slice(level)\n for (const $ChildMenu of $$ChildMenus) {\n Widget.remove($ChildMenu)\n }\n}\n\n// export const showSubMenu = (level, items, parentIndex) => {\n// const $$ChildMenus = state.$$Menus.slice(level)\n// for (const $ChildMenu of $$ChildMenus) {\n// Widget.remove($ChildMenu)\n// }\n// state.$$Menus = state.$$Menus.slice(0, level)\n// const $ParentMenu = state.$$Menus[level - 1]\n// const $ParentMenuItem = $ParentMenu.children[parentIndex]\n// const rect = $ParentMenuItem.getBoundingClientRect()\n// const x = rect.right\n// const y = rect.top\n// showMenu(x, y, items, level)\n// // TODO remove aria-owns when sub-menu is closed\n// $ParentMenuItem.setAttribute('aria-owns', 'Menu')\n// }\n\n// TODO implement focusIndex like this\n// const focusIndex2=(id, index)=>{\n// const $Menu = state.menus[id]\n// $Menu.children[index].focus()\n// }\n\n// TODO support nested menus / submenus\nexport const showControlled = ({ x, y, items, handleKeyDown, handleFocusOut, $Parent, level, width, height }) => {\n showMenu(x, y, width, height, items, level)\n // TODO menu should not necessarily know about parent (titleBarMenuBar)\n // it should be the other way around\n state.$Parent = $Parent\n state.handleFocusOut = handleFocusOut\n state.handleKeyDown = handleKeyDown\n if ($Parent) {\n // state.$Menu.ariaLabel=''\n // state.$Menu.ariaLabelledBy =$Parent.id\n $Parent.setAttribute(DomAttributeType.AriaOwns, 'Menu')\n } else {\n // state.$Menu.removeAttribute('aria-labelledby')\n }\n // Context.setFocus('menu') // TODO overlapping focus: titleBarMenuBar has focus (kinda) but also menu at the same time\n}\n\n// TODO have function to show submenu\n\nexport const hide = (restoreFocus = true) => {\n for (const $Menu of state.$$Menus) {\n Widget.remove($Menu)\n }\n state.$$Menus = []\n if (state.$BackDrop) {\n Widget.remove(state.$BackDrop)\n state.$BackDrop = undefined\n }\n // TODO focus previous item\n if (restoreFocus) {\n Focus.focusPrevious()\n }\n}\n\nexport const contains = ($Element) => {\n for (const $Menu of state.$$Menus) {\n if ($Menu.contains($Element)) {\n return true\n }\n }\n return false\n}\n", "import * as Menu from './Menu.js'\n\nexport const name = 'Menu'\n\nexport const Commands = {\n focusIndex: Menu.focusIndex,\n hide: Menu.hide,\n hideSubMenu: Menu.hideSubMenu,\n showContextMenu: Menu.showContextMenu,\n showControlled: Menu.showControlled,\n showMenu: Menu.showMenu,\n}\n", "export const openUrl = (url) => {\n open(url)\n}\n", "import * as Open from './Open.js'\n\nexport const name = 'Open'\n\nexport const Commands = {\n openUrl: Open.openUrl,\n}\n", "export const measureUserAgentSpecificMemory = async () => {\n // @ts-ignore\n if (performance && performance.measureUserAgentSpecificMemory) {\n // @ts-ignore\n const memory = await performance.measureUserAgentSpecificMemory()\n return memory\n }\n return undefined\n}\n\nexport const getMemory = () => {\n // @ts-ignore\n const memory = performance.memory\n if (!memory) {\n return undefined\n }\n return {\n jsHeapSizeLimit: memory.jsHeapSizeLimit,\n totalJSHeapSize: memory.totalJSHeapSize,\n usedJSHeapSize: memory.usedJSHeapSize,\n }\n}\n", "import * as Performance from './Performance.js'\n\nexport const name = 'Performance'\n\n// prettier-ignore\nexport const Commands = {\n getMemory: Performance.getMemory,\n measureUserAgentSpecificMemory: Performance.measureUserAgentSpecificMemory,\n}\n", "/*! @license DOMPurify 3.0.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.1/LICENSE */\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n return _typeof = typeof Symbol == \"function\" && typeof Symbol.iterator == \"symbol\" ? function(obj2) {\n return typeof obj2;\n } : function(obj2) {\n return obj2 && typeof Symbol == \"function\" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? \"symbol\" : typeof obj2;\n }, _typeof(obj);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o2, p2) {\n o2.__proto__ = p2;\n return o2;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct)\n return false;\n if (Reflect.construct.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct2(Parent2, args2, Class2) {\n var a = [null];\n a.push.apply(a, args2);\n var Constructor = Function.bind.apply(Parent2, a);\n var instance = new Constructor();\n if (Class2)\n _setPrototypeOf(instance, Class2.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr))\n return _arrayLikeToArray(arr);\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr))\n return arr;\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null)\n return Array.from(iter);\n}\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null)\n return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i)\n break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null)\n _i[\"return\"]();\n } finally {\n if (_d)\n throw _e;\n }\n }\n return _arr;\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o)\n return;\n if (typeof o === \"string\")\n return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor)\n n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\")\n return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))\n return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length)\n len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++)\n arr2[i] = arr[i];\n return arr2;\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it)\n o = it;\n var i = 0;\n var F = function() {\n };\n return {\n s: F,\n n: function() {\n if (i >= o.length)\n return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function(e) {\n throw e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true, didErr = false, err;\n return {\n s: function() {\n it = it.call(o);\n },\n n: function() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function(e) {\n didErr = true;\n err = e;\n },\n f: function() {\n try {\n if (!normalCompletion && it.return != null)\n it.return();\n } finally {\n if (didErr)\n throw err;\n }\n }\n };\n}\nvar entries = Object.entries, setPrototypeOf = Object.setPrototypeOf, isFrozen = Object.isFrozen, getPrototypeOf = Object.getPrototypeOf, getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar freeze = Object.freeze, seal = Object.seal, create = Object.create;\nvar _ref = typeof Reflect !== \"undefined\" && Reflect, apply = _ref.apply, construct = _ref.construct;\nif (!apply) {\n apply = function apply2(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n}\nif (!freeze) {\n freeze = function freeze2(x) {\n return x;\n };\n}\nif (!seal) {\n seal = function seal2(x) {\n return x;\n };\n}\nif (!construct) {\n construct = function construct2(Func, args) {\n return _construct(Func, _toConsumableArray(args));\n };\n}\nvar arrayForEach = unapply(Array.prototype.forEach);\nvar arrayPop = unapply(Array.prototype.pop);\nvar arrayPush = unapply(Array.prototype.push);\nvar stringToLowerCase = unapply(String.prototype.toLowerCase);\nvar stringToString = unapply(String.prototype.toString);\nvar stringMatch = unapply(String.prototype.match);\nvar stringReplace = unapply(String.prototype.replace);\nvar stringIndexOf = unapply(String.prototype.indexOf);\nvar stringTrim = unapply(String.prototype.trim);\nvar regExpTest = unapply(RegExp.prototype.test);\nvar typeErrorCreate = unconstruct(TypeError);\nfunction unapply(func) {\n return function(thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n return apply(func, thisArg, args);\n };\n}\nfunction unconstruct(func) {\n return function() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return construct(func, args);\n };\n}\nfunction addToSet(set, array, transformCaseFunc) {\n transformCaseFunc = transformCaseFunc ? transformCaseFunc : stringToLowerCase;\n if (setPrototypeOf) {\n setPrototypeOf(set, null);\n }\n var l = array.length;\n while (l--) {\n var element = array[l];\n if (typeof element === \"string\") {\n var lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n element = lcElement;\n }\n }\n set[element] = true;\n }\n return set;\n}\nfunction clone(object) {\n var newObject = create(null);\n var _iterator = _createForOfIteratorHelper(entries(object)), _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done; ) {\n var _step$value = _slicedToArray(_step.value, 2), property = _step$value[0], value = _step$value[1];\n newObject[property] = value;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return newObject;\n}\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n var desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n if (typeof desc.value === \"function\") {\n return unapply(desc.value);\n }\n }\n object = getPrototypeOf(object);\n }\n function fallbackValue(element) {\n console.warn(\"fallback value for\", element);\n return null;\n }\n return fallbackValue;\n}\nvar html$1 = freeze([\"a\", \"abbr\", \"acronym\", \"address\", \"area\", \"article\", \"aside\", \"audio\", \"b\", \"bdi\", \"bdo\", \"big\", \"blink\", \"blockquote\", \"body\", \"br\", \"button\", \"canvas\", \"caption\", \"center\", \"cite\", \"code\", \"col\", \"colgroup\", \"content\", \"data\", \"datalist\", \"dd\", \"decorator\", \"del\", \"details\", \"dfn\", \"dialog\", \"dir\", \"div\", \"dl\", \"dt\", \"element\", \"em\", \"fieldset\", \"figcaption\", \"figure\", \"font\", \"footer\", \"form\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"head\", \"header\", \"hgroup\", \"hr\", \"html\", \"i\", \"img\", \"input\", \"ins\", \"kbd\", \"label\", \"legend\", \"li\", \"main\", \"map\", \"mark\", \"marquee\", \"menu\", \"menuitem\", \"meter\", \"nav\", \"nobr\", \"ol\", \"optgroup\", \"option\", \"output\", \"p\", \"picture\", \"pre\", \"progress\", \"q\", \"rp\", \"rt\", \"ruby\", \"s\", \"samp\", \"section\", \"select\", \"shadow\", \"small\", \"source\", \"spacer\", \"span\", \"strike\", \"strong\", \"style\", \"sub\", \"summary\", \"sup\", \"table\", \"tbody\", \"td\", \"template\", \"textarea\", \"tfoot\", \"th\", \"thead\", \"time\", \"tr\", \"track\", \"tt\", \"u\", \"ul\", \"var\", \"video\", \"wbr\"]);\nvar svg$1 = freeze([\"svg\", \"a\", \"altglyph\", \"altglyphdef\", \"altglyphitem\", \"animatecolor\", \"animatemotion\", \"animatetransform\", \"circle\", \"clippath\", \"defs\", \"desc\", \"ellipse\", \"filter\", \"font\", \"g\", \"glyph\", \"glyphref\", \"hkern\", \"image\", \"line\", \"lineargradient\", \"marker\", \"mask\", \"metadata\", \"mpath\", \"path\", \"pattern\", \"polygon\", \"polyline\", \"radialgradient\", \"rect\", \"stop\", \"style\", \"switch\", \"symbol\", \"text\", \"textpath\", \"title\", \"tref\", \"tspan\", \"view\", \"vkern\"]);\nvar svgFilters = freeze([\"feBlend\", \"feColorMatrix\", \"feComponentTransfer\", \"feComposite\", \"feConvolveMatrix\", \"feDiffuseLighting\", \"feDisplacementMap\", \"feDistantLight\", \"feFlood\", \"feFuncA\", \"feFuncB\", \"feFuncG\", \"feFuncR\", \"feGaussianBlur\", \"feImage\", \"feMerge\", \"feMergeNode\", \"feMorphology\", \"feOffset\", \"fePointLight\", \"feSpecularLighting\", \"feSpotLight\", \"feTile\", \"feTurbulence\"]);\nvar svgDisallowed = freeze([\"animate\", \"color-profile\", \"cursor\", \"discard\", \"fedropshadow\", \"font-face\", \"font-face-format\", \"font-face-name\", \"font-face-src\", \"font-face-uri\", \"foreignobject\", \"hatch\", \"hatchpath\", \"mesh\", \"meshgradient\", \"meshpatch\", \"meshrow\", \"missing-glyph\", \"script\", \"set\", \"solidcolor\", \"unknown\", \"use\"]);\nvar mathMl$1 = freeze([\"math\", \"menclose\", \"merror\", \"mfenced\", \"mfrac\", \"mglyph\", \"mi\", \"mlabeledtr\", \"mmultiscripts\", \"mn\", \"mo\", \"mover\", \"mpadded\", \"mphantom\", \"mroot\", \"mrow\", \"ms\", \"mspace\", \"msqrt\", \"mstyle\", \"msub\", \"msup\", \"msubsup\", \"mtable\", \"mtd\", \"mtext\", \"mtr\", \"munder\", \"munderover\"]);\nvar mathMlDisallowed = freeze([\"maction\", \"maligngroup\", \"malignmark\", \"mlongdiv\", \"mscarries\", \"mscarry\", \"msgroup\", \"mstack\", \"msline\", \"msrow\", \"semantics\", \"annotation\", \"annotation-xml\", \"mprescripts\", \"none\"]);\nvar text = freeze([\"#text\"]);\nvar html = freeze([\"accept\", \"action\", \"align\", \"alt\", \"autocapitalize\", \"autocomplete\", \"autopictureinpicture\", \"autoplay\", \"background\", \"bgcolor\", \"border\", \"capture\", \"cellpadding\", \"cellspacing\", \"checked\", \"cite\", \"class\", \"clear\", \"color\", \"cols\", \"colspan\", \"controls\", \"controlslist\", \"coords\", \"crossorigin\", \"datetime\", \"decoding\", \"default\", \"dir\", \"disabled\", \"disablepictureinpicture\", \"disableremoteplayback\", \"download\", \"draggable\", \"enctype\", \"enterkeyhint\", \"face\", \"for\", \"headers\", \"height\", \"hidden\", \"high\", \"href\", \"hreflang\", \"id\", \"inputmode\", \"integrity\", \"ismap\", \"kind\", \"label\", \"lang\", \"list\", \"loading\", \"loop\", \"low\", \"max\", \"maxlength\", \"media\", \"method\", \"min\", \"minlength\", \"multiple\", \"muted\", \"name\", \"nonce\", \"noshade\", \"novalidate\", \"nowrap\", \"open\", \"optimum\", \"pattern\", \"placeholder\", \"playsinline\", \"poster\", \"preload\", \"pubdate\", \"radiogroup\", \"readonly\", \"rel\", \"required\", \"rev\", \"reversed\", \"role\", \"rows\", \"rowspan\", \"spellcheck\", \"scope\", \"selected\", \"shape\", \"size\", \"sizes\", \"span\", \"srclang\", \"start\", \"src\", \"srcset\", \"step\", \"style\", \"summary\", \"tabindex\", \"title\", \"translate\", \"type\", \"usemap\", \"valign\", \"value\", \"width\", \"xmlns\", \"slot\"]);\nvar svg = freeze([\"accent-height\", \"accumulate\", \"additive\", \"alignment-baseline\", \"ascent\", \"attributename\", \"attributetype\", \"azimuth\", \"basefrequency\", \"baseline-shift\", \"begin\", \"bias\", \"by\", \"class\", \"clip\", \"clippathunits\", \"clip-path\", \"clip-rule\", \"color\", \"color-interpolation\", \"color-interpolation-filters\", \"color-profile\", \"color-rendering\", \"cx\", \"cy\", \"d\", \"dx\", \"dy\", \"diffuseconstant\", \"direction\", \"display\", \"divisor\", \"dur\", \"edgemode\", \"elevation\", \"end\", \"fill\", \"fill-opacity\", \"fill-rule\", \"filter\", \"filterunits\", \"flood-color\", \"flood-opacity\", \"font-family\", \"font-size\", \"font-size-adjust\", \"font-stretch\", \"font-style\", \"font-variant\", \"font-weight\", \"fx\", \"fy\", \"g1\", \"g2\", \"glyph-name\", \"glyphref\", \"gradientunits\", \"gradienttransform\", \"height\", \"href\", \"id\", \"image-rendering\", \"in\", \"in2\", \"k\", \"k1\", \"k2\", \"k3\", \"k4\", \"kerning\", \"keypoints\", \"keysplines\", \"keytimes\", \"lang\", \"lengthadjust\", \"letter-spacing\", \"kernelmatrix\", \"kernelunitlength\", \"lighting-color\", \"local\", \"marker-end\", \"marker-mid\", \"marker-start\", \"markerheight\", \"markerunits\", \"markerwidth\", \"maskcontentunits\", \"maskunits\", \"max\", \"mask\", \"media\", \"method\", \"mode\", \"min\", \"name\", \"numoctaves\", \"offset\", \"operator\", \"opacity\", \"order\", \"orient\", \"orientation\", \"origin\", \"overflow\", \"paint-order\", \"path\", \"pathlength\", \"patterncontentunits\", \"patterntransform\", \"patternunits\", \"points\", \"preservealpha\", \"preserveaspectratio\", \"primitiveunits\", \"r\", \"rx\", \"ry\", \"radius\", \"refx\", \"refy\", \"repeatcount\", \"repeatdur\", \"restart\", \"result\", \"rotate\", \"scale\", \"seed\", \"shape-rendering\", \"specularconstant\", \"specularexponent\", \"spreadmethod\", \"startoffset\", \"stddeviation\", \"stitchtiles\", \"stop-color\", \"stop-opacity\", \"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-linecap\", \"stroke-linejoin\", \"stroke-miterlimit\", \"stroke-opacity\", \"stroke\", \"stroke-width\", \"style\", \"surfacescale\", \"systemlanguage\", \"tabindex\", \"targetx\", \"targety\", \"transform\", \"transform-origin\", \"text-anchor\", \"text-decoration\", \"text-rendering\", \"textlength\", \"type\", \"u1\", \"u2\", \"unicode\", \"values\", \"viewbox\", \"visibility\", \"version\", \"vert-adv-y\", \"vert-origin-x\", \"vert-origin-y\", \"width\", \"word-spacing\", \"wrap\", \"writing-mode\", \"xchannelselector\", \"ychannelselector\", \"x\", \"x1\", \"x2\", \"xmlns\", \"y\", \"y1\", \"y2\", \"z\", \"zoomandpan\"]);\nvar mathMl = freeze([\"accent\", \"accentunder\", \"align\", \"bevelled\", \"close\", \"columnsalign\", \"columnlines\", \"columnspan\", \"denomalign\", \"depth\", \"dir\", \"display\", \"displaystyle\", \"encoding\", \"fence\", \"frame\", \"height\", \"href\", \"id\", \"largeop\", \"length\", \"linethickness\", \"lspace\", \"lquote\", \"mathbackground\", \"mathcolor\", \"mathsize\", \"mathvariant\", \"maxsize\", \"minsize\", \"movablelimits\", \"notation\", \"numalign\", \"open\", \"rowalign\", \"rowlines\", \"rowspacing\", \"rowspan\", \"rspace\", \"rquote\", \"scriptlevel\", \"scriptminsize\", \"scriptsizemultiplier\", \"selection\", \"separator\", \"separators\", \"stretchy\", \"subscriptshift\", \"supscriptshift\", \"symmetric\", \"voffset\", \"width\", \"xmlns\"]);\nvar xml = freeze([\"xlink:href\", \"xml:id\", \"xlink:title\", \"xml:space\", \"xmlns:xlink\"]);\nvar MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm);\nvar ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nvar TMPLIT_EXPR = seal(/\\${[\\w\\W]*}/gm);\nvar DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/);\nvar ARIA_ATTR = seal(/^aria-[\\-\\w]+$/);\nvar IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i);\nvar IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nvar ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g);\nvar DOCTYPE_NAME = seal(/^html$/i);\nvar getGlobal = function getGlobal2() {\n return typeof window === \"undefined\" ? null : window;\n};\nvar _createTrustedTypesPolicy = function _createTrustedTypesPolicy2(trustedTypes, document) {\n if (_typeof(trustedTypes) !== \"object\" || typeof trustedTypes.createPolicy !== \"function\") {\n return null;\n }\n var suffix = null;\n var ATTR_NAME = \"data-tt-policy-suffix\";\n if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {\n suffix = document.currentScript.getAttribute(ATTR_NAME);\n }\n var policyName = \"dompurify\" + (suffix ? \"#\" + suffix : \"\");\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML: function createHTML(html2) {\n return html2;\n },\n createScriptURL: function createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n console.warn(\"TrustedTypes policy \" + policyName + \" could not be created.\");\n return null;\n }\n};\nfunction createDOMPurify() {\n var window2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getGlobal();\n var DOMPurify = function DOMPurify2(root) {\n return createDOMPurify(root);\n };\n DOMPurify.version = \"3.0.1\";\n DOMPurify.removed = [];\n if (!window2 || !window2.document || window2.document.nodeType !== 9) {\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n var originalDocument = window2.document;\n var document = window2.document;\n var DocumentFragment = window2.DocumentFragment, HTMLTemplateElement = window2.HTMLTemplateElement, Node = window2.Node, Element = window2.Element, NodeFilter = window2.NodeFilter, _window$NamedNodeMap = window2.NamedNodeMap, NamedNodeMap = _window$NamedNodeMap === void 0 ? window2.NamedNodeMap || window2.MozNamedAttrMap : _window$NamedNodeMap, HTMLFormElement = window2.HTMLFormElement, DOMParser = window2.DOMParser, trustedTypes = window2.trustedTypes;\n var ElementPrototype = Element.prototype;\n var cloneNode = lookupGetter(ElementPrototype, \"cloneNode\");\n var getNextSibling = lookupGetter(ElementPrototype, \"nextSibling\");\n var getChildNodes = lookupGetter(ElementPrototype, \"childNodes\");\n var getParentNode = lookupGetter(ElementPrototype, \"parentNode\");\n if (typeof HTMLTemplateElement === \"function\") {\n var template = document.createElement(\"template\");\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);\n var emptyHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML(\"\") : \"\";\n var _document = document, implementation = _document.implementation, createNodeIterator = _document.createNodeIterator, createDocumentFragment = _document.createDocumentFragment, getElementsByTagName = _document.getElementsByTagName;\n var importNode = originalDocument.importNode;\n var hooks = {};\n DOMPurify.isSupported = typeof entries === \"function\" && typeof getParentNode === \"function\" && implementation && typeof implementation.createHTMLDocument !== \"undefined\";\n var MUSTACHE_EXPR$1 = MUSTACHE_EXPR, ERB_EXPR$1 = ERB_EXPR, TMPLIT_EXPR$1 = TMPLIT_EXPR, DATA_ATTR$1 = DATA_ATTR, ARIA_ATTR$1 = ARIA_ATTR, IS_SCRIPT_OR_DATA$1 = IS_SCRIPT_OR_DATA, ATTR_WHITESPACE$1 = ATTR_WHITESPACE;\n var IS_ALLOWED_URI$1 = IS_ALLOWED_URI;\n var ALLOWED_TAGS = null;\n var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray(html$1), _toConsumableArray(svg$1), _toConsumableArray(svgFilters), _toConsumableArray(mathMl$1), _toConsumableArray(text)));\n var ALLOWED_ATTR = null;\n var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray(html), _toConsumableArray(svg), _toConsumableArray(mathMl), _toConsumableArray(xml)));\n var CUSTOM_ELEMENT_HANDLING = Object.seal(Object.create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n var FORBID_TAGS = null;\n var FORBID_ATTR = null;\n var ALLOW_ARIA_ATTR = true;\n var ALLOW_DATA_ATTR = true;\n var ALLOW_UNKNOWN_PROTOCOLS = false;\n var ALLOW_SELF_CLOSE_IN_ATTR = true;\n var SAFE_FOR_TEMPLATES = false;\n var WHOLE_DOCUMENT = false;\n var SET_CONFIG = false;\n var FORCE_BODY = false;\n var RETURN_DOM = false;\n var RETURN_DOM_FRAGMENT = false;\n var RETURN_TRUSTED_TYPE = false;\n var SANITIZE_DOM = true;\n var SANITIZE_NAMED_PROPS = false;\n var SANITIZE_NAMED_PROPS_PREFIX = \"user-content-\";\n var KEEP_CONTENT = true;\n var IN_PLACE = false;\n var USE_PROFILES = {};\n var FORBID_CONTENTS = null;\n var DEFAULT_FORBID_CONTENTS = addToSet({}, [\"annotation-xml\", \"audio\", \"colgroup\", \"desc\", \"foreignobject\", \"head\", \"iframe\", \"math\", \"mi\", \"mn\", \"mo\", \"ms\", \"mtext\", \"noembed\", \"noframes\", \"noscript\", \"plaintext\", \"script\", \"style\", \"svg\", \"template\", \"thead\", \"title\", \"video\", \"xmp\"]);\n var DATA_URI_TAGS = null;\n var DEFAULT_DATA_URI_TAGS = addToSet({}, [\"audio\", \"video\", \"img\", \"source\", \"image\", \"track\"]);\n var URI_SAFE_ATTRIBUTES = null;\n var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [\"alt\", \"class\", \"for\", \"id\", \"label\", \"name\", \"pattern\", \"placeholder\", \"role\", \"summary\", \"title\", \"value\", \"style\", \"xmlns\"]);\n var MATHML_NAMESPACE = \"http://www.w3.org/1998/Math/MathML\";\n var SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\n var HTML_NAMESPACE = \"http://www.w3.org/1999/xhtml\";\n var NAMESPACE = HTML_NAMESPACE;\n var IS_EMPTY_INPUT = false;\n var ALLOWED_NAMESPACES = null;\n var DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n var PARSER_MEDIA_TYPE;\n var SUPPORTED_PARSER_MEDIA_TYPES = [\"application/xhtml+xml\", \"text/html\"];\n var DEFAULT_PARSER_MEDIA_TYPE = \"text/html\";\n var transformCaseFunc;\n var CONFIG = null;\n var formElement = document.createElement(\"form\");\n var isRegexOrFunction = function isRegexOrFunction2(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n var _parseConfig = function _parseConfig2(cfg) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n if (!cfg || _typeof(cfg) !== \"object\") {\n cfg = {};\n }\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE = SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE;\n transformCaseFunc = PARSER_MEDIA_TYPE === \"application/xhtml+xml\" ? stringToString : stringToLowerCase;\n ALLOWED_TAGS = \"ALLOWED_TAGS\" in cfg ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = \"ALLOWED_ATTR\" in cfg ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = \"ALLOWED_NAMESPACES\" in cfg ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = \"ADD_URI_SAFE_ATTR\" in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = \"ADD_DATA_URI_TAGS\" in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = \"FORBID_CONTENTS\" in cfg ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = \"FORBID_TAGS\" in cfg ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};\n FORBID_ATTR = \"FORBID_ATTR\" in cfg ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};\n USE_PROFILES = \"USE_PROFILES\" in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false;\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false;\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false;\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false;\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false;\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false;\n RETURN_DOM = cfg.RETURN_DOM || false;\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false;\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false;\n FORCE_BODY = cfg.FORCE_BODY || false;\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false;\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false;\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false;\n IN_PLACE = cfg.IN_PLACE || false;\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$1;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === \"boolean\") {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, _toConsumableArray(text));\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n if (KEEP_CONTENT) {\n ALLOWED_TAGS[\"#text\"] = true;\n }\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, [\"html\", \"head\", \"body\"]);\n }\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, [\"tbody\"]);\n delete FORBID_TAGS.tbody;\n }\n if (freeze) {\n freeze(cfg);\n }\n CONFIG = cfg;\n };\n var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, [\"mi\", \"mo\", \"mn\", \"ms\", \"mtext\"]);\n var HTML_INTEGRATION_POINTS = addToSet({}, [\"foreignobject\", \"desc\", \"title\", \"annotation-xml\"]);\n var COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [\"title\", \"style\", \"font\", \"a\", \"script\"]);\n var ALL_SVG_TAGS = addToSet({}, svg$1);\n addToSet(ALL_SVG_TAGS, svgFilters);\n addToSet(ALL_SVG_TAGS, svgDisallowed);\n var ALL_MATHML_TAGS = addToSet({}, mathMl$1);\n addToSet(ALL_MATHML_TAGS, mathMlDisallowed);\n var _checkValidNamespace = function _checkValidNamespace2(element) {\n var parent = getParentNode(element);\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: \"template\"\n };\n }\n var tagName = stringToLowerCase(element.tagName);\n var parentTagName = stringToLowerCase(parent.tagName);\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n if (element.namespaceURI === SVG_NAMESPACE) {\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === \"svg\";\n }\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === \"svg\" && (parentTagName === \"annotation-xml\" || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n if (element.namespaceURI === MATHML_NAMESPACE) {\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === \"math\";\n }\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === \"math\" && HTML_INTEGRATION_POINTS[parentTagName];\n }\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n if (element.namespaceURI === HTML_NAMESPACE) {\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n if (PARSER_MEDIA_TYPE === \"application/xhtml+xml\" && ALLOWED_NAMESPACES[element.namespaceURI]) {\n return true;\n }\n return false;\n };\n var _forceRemove = function _forceRemove2(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n try {\n node.parentNode.removeChild(node);\n } catch (_) {\n node.remove();\n }\n };\n var _removeAttribute = function _removeAttribute2(name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node\n });\n }\n node.removeAttribute(name);\n if (name === \"is\" && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {\n }\n } else {\n try {\n node.setAttribute(name, \"\");\n } catch (_) {\n }\n }\n }\n };\n var _initDocument = function _initDocument2(dirty) {\n var doc;\n var leadingWhitespace;\n if (FORCE_BODY) {\n dirty = \"<remove></remove>\" + dirty;\n } else {\n var matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n if (PARSER_MEDIA_TYPE === \"application/xhtml+xml\" && NAMESPACE === HTML_NAMESPACE) {\n dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + \"</body></html>\";\n }\n var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {\n }\n }\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, \"template\", null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n } catch (_) {\n }\n }\n var body = doc.body || doc.documentElement;\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? \"html\" : \"body\")[0];\n }\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n var _createIterator = function _createIterator2(root) {\n return createNodeIterator.call(root.ownerDocument || root, root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null, false);\n };\n var _isClobbered = function _isClobbered2(elm) {\n return elm instanceof HTMLFormElement && (typeof elm.nodeName !== \"string\" || typeof elm.textContent !== \"string\" || typeof elm.removeChild !== \"function\" || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== \"function\" || typeof elm.setAttribute !== \"function\" || typeof elm.namespaceURI !== \"string\" || typeof elm.insertBefore !== \"function\" || typeof elm.hasChildNodes !== \"function\");\n };\n var _isNode = function _isNode2(object) {\n return _typeof(Node) === \"object\" ? object instanceof Node : object && _typeof(object) === \"object\" && typeof object.nodeType === \"number\" && typeof object.nodeName === \"string\";\n };\n var _executeHook = function _executeHook2(entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n arrayForEach(hooks[entryPoint], function(hook) {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n var _sanitizeElements = function _sanitizeElements2(currentNode) {\n var content;\n _executeHook(\"beforeSanitizeElements\", currentNode, null);\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n var tagName = transformCaseFunc(currentNode.nodeName);\n _executeHook(\"uponSanitizeElement\", currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS\n });\n if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n if (!FORBID_TAGS[tagName] && _basicCustomElementTest(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName))\n return false;\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName))\n return false;\n }\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n var parentNode = getParentNode(currentNode) || currentNode.parentNode;\n var childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n if (childNodes && parentNode) {\n var childCount = childNodes.length;\n for (var i = childCount - 1; i >= 0; --i) {\n parentNode.insertBefore(cloneNode(childNodes[i], true), getNextSibling(currentNode));\n }\n }\n }\n _forceRemove(currentNode);\n return true;\n }\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n if ((tagName === \"noscript\" || tagName === \"noembed\") && regExpTest(/<\\/no(script|embed)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n content = currentNode.textContent;\n content = stringReplace(content, MUSTACHE_EXPR$1, \" \");\n content = stringReplace(content, ERB_EXPR$1, \" \");\n content = stringReplace(content, TMPLIT_EXPR$1, \" \");\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n _executeHook(\"afterSanitizeElements\", currentNode, null);\n return false;\n };\n var _isValidAttribute = function _isValidAttribute2(lcTag, lcName, value) {\n if (SANITIZE_DOM && (lcName === \"id\" || lcName === \"name\") && (value in document || value in formElement)) {\n return false;\n }\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR$1, lcName))\n ;\n else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$1, lcName))\n ;\n else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (_basicCustomElementTest(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) || lcName === \"is\" && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value)))\n ;\n else {\n return false;\n }\n } else if (URI_SAFE_ATTRIBUTES[lcName])\n ;\n else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE$1, \"\")))\n ;\n else if ((lcName === \"src\" || lcName === \"xlink:href\" || lcName === \"href\") && lcTag !== \"script\" && stringIndexOf(value, \"data:\") === 0 && DATA_URI_TAGS[lcTag])\n ;\n else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$1, stringReplace(value, ATTR_WHITESPACE$1, \"\")))\n ;\n else if (!value)\n ;\n else {\n return false;\n }\n return true;\n };\n var _basicCustomElementTest = function _basicCustomElementTest2(tagName) {\n return tagName.indexOf(\"-\") > 0;\n };\n var _sanitizeAttributes = function _sanitizeAttributes2(currentNode) {\n var attr;\n var value;\n var lcName;\n var l;\n _executeHook(\"beforeSanitizeAttributes\", currentNode, null);\n var attributes = currentNode.attributes;\n if (!attributes) {\n return;\n }\n var hookEvent = {\n attrName: \"\",\n attrValue: \"\",\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR\n };\n l = attributes.length;\n while (l--) {\n attr = attributes[l];\n var _attr = attr, name = _attr.name, namespaceURI = _attr.namespaceURI;\n value = name === \"value\" ? attr.value : stringTrim(attr.value);\n lcName = transformCaseFunc(name);\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = void 0;\n _executeHook(\"uponSanitizeAttribute\", currentNode, hookEvent);\n value = hookEvent.attrValue;\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n _removeAttribute(name, currentNode);\n if (!hookEvent.keepAttr) {\n continue;\n }\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n if (SAFE_FOR_TEMPLATES) {\n value = stringReplace(value, MUSTACHE_EXPR$1, \" \");\n value = stringReplace(value, ERB_EXPR$1, \" \");\n value = stringReplace(value, TMPLIT_EXPR$1, \" \");\n }\n var lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n continue;\n }\n if (SANITIZE_NAMED_PROPS && (lcName === \"id\" || lcName === \"name\")) {\n _removeAttribute(name, currentNode);\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n if (trustedTypesPolicy && _typeof(trustedTypes) === \"object\" && typeof trustedTypes.getAttributeType === \"function\") {\n if (namespaceURI)\n ;\n else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case \"TrustedHTML\":\n value = trustedTypesPolicy.createHTML(value);\n break;\n case \"TrustedScriptURL\":\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n }\n }\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n currentNode.setAttribute(name, value);\n }\n arrayPop(DOMPurify.removed);\n } catch (_) {\n }\n }\n _executeHook(\"afterSanitizeAttributes\", currentNode, null);\n };\n var _sanitizeShadowDOM = function _sanitizeShadowDOM2(fragment) {\n var shadowNode;\n var shadowIterator = _createIterator(fragment);\n _executeHook(\"beforeSanitizeShadowDOM\", fragment, null);\n while (shadowNode = shadowIterator.nextNode()) {\n _executeHook(\"uponSanitizeShadowNode\", shadowNode, null);\n if (_sanitizeElements(shadowNode)) {\n continue;\n }\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM2(shadowNode.content);\n }\n _sanitizeAttributes(shadowNode);\n }\n _executeHook(\"afterSanitizeShadowDOM\", fragment, null);\n };\n DOMPurify.sanitize = function(dirty) {\n var cfg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var body;\n var importedNode;\n var currentNode;\n var returnNode;\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = \"<!-->\";\n }\n if (typeof dirty !== \"string\" && !_isNode(dirty)) {\n if (typeof dirty.toString !== \"function\") {\n throw typeErrorCreate(\"toString is not a function\");\n } else {\n dirty = dirty.toString();\n if (typeof dirty !== \"string\") {\n throw typeErrorCreate(\"dirty is not a string, aborting\");\n }\n }\n }\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n DOMPurify.removed = [];\n if (typeof dirty === \"string\") {\n IN_PLACE = false;\n }\n if (IN_PLACE) {\n if (dirty.nodeName) {\n var tagName = transformCaseFunc(dirty.nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate(\"root node is forbidden and cannot be sanitized in-place\");\n }\n }\n } else if (dirty instanceof Node) {\n body = _initDocument(\"<!---->\");\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === 1 && importedNode.nodeName === \"BODY\") {\n body = importedNode;\n } else if (importedNode.nodeName === \"HTML\") {\n body = importedNode;\n } else {\n body.appendChild(importedNode);\n }\n } else {\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && dirty.indexOf(\"<\") === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n body = _initDocument(dirty);\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : \"\";\n }\n }\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n var nodeIterator = _createIterator(IN_PLACE ? dirty : body);\n while (currentNode = nodeIterator.nextNode()) {\n if (_sanitizeElements(currentNode)) {\n continue;\n }\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n _sanitizeAttributes(currentNode);\n }\n if (IN_PLACE) {\n return dirty;\n }\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n while (body.firstChild) {\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmod) {\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n return returnNode;\n }\n var serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n if (WHOLE_DOCUMENT && ALLOWED_TAGS[\"!doctype\"] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = \"<!DOCTYPE \" + body.ownerDocument.doctype.name + \">\\n\" + serializedHTML;\n }\n if (SAFE_FOR_TEMPLATES) {\n serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR$1, \" \");\n serializedHTML = stringReplace(serializedHTML, ERB_EXPR$1, \" \");\n serializedHTML = stringReplace(serializedHTML, TMPLIT_EXPR$1, \" \");\n }\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n DOMPurify.setConfig = function(cfg) {\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n DOMPurify.clearConfig = function() {\n CONFIG = null;\n SET_CONFIG = false;\n };\n DOMPurify.isValidAttribute = function(tag, attr, value) {\n if (!CONFIG) {\n _parseConfig({});\n }\n var lcTag = transformCaseFunc(tag);\n var lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n DOMPurify.addHook = function(entryPoint, hookFunction) {\n if (typeof hookFunction !== \"function\") {\n return;\n }\n hooks[entryPoint] = hooks[entryPoint] || [];\n arrayPush(hooks[entryPoint], hookFunction);\n };\n DOMPurify.removeHook = function(entryPoint) {\n if (hooks[entryPoint]) {\n return arrayPop(hooks[entryPoint]);\n }\n };\n DOMPurify.removeHooks = function(entryPoint) {\n if (hooks[entryPoint]) {\n hooks[entryPoint] = [];\n }\n };\n DOMPurify.removeAllHooks = function() {\n hooks = {};\n };\n return DOMPurify;\n}\nvar purify = createDOMPurify();\nexport default purify;\n", "import DomPurify from '../../../static/js/dompurify.js'\n\nexport const sanitizeHtml = (html) => {\n return DomPurify.sanitize(html)\n}\n", "import * as SanitizeHtml from './SanitizeHtml.js'\n\nexport const name = 'SanitizeHtml'\n\nexport const Commands = {\n sanitizeHtml: SanitizeHtml.sanitizeHtml,\n}\n", "import * as WorkerType from '../WorkerType/WorkerType.js'\n\nconst supportsServiceWorker = () => {\n return 'serviceWorker' in navigator\n}\n\nconst handleUpdateFound = () => {\n // console.info('[service-worker] update found')\n}\n\nconst handleControllerChange = () => {\n // console.info('[service-worker] controller changed - reloading page')\n location.reload()\n}\n\nexport const register = async (url) => {\n if (!supportsServiceWorker()) {\n return\n }\n const registration = await navigator.serviceWorker.register(url, {\n scope: '/',\n type: WorkerType.Module,\n })\n registration.onupdatefound = handleUpdateFound\n navigator.serviceWorker.oncontrollerchange = handleControllerChange\n}\n\nconst uninstallRegistration = async (registration) => {\n await registration.unregister()\n}\n\nexport const uninstall = async () => {\n if (!supportsServiceWorker()) {\n return\n }\n const registrations = await navigator.serviceWorker.getRegistrations()\n await Promise.all(registrations.map(uninstallRegistration))\n}\n", "import * as ServiceWorker from './ServiceWorker.js'\n\nexport const name = 'ServiceWorker'\n\nexport const Commands = {\n register: ServiceWorker.register,\n uninstall: ServiceWorker.uninstall,\n}\n", "export const htmlElements = [\n 'a',\n 'abbr',\n 'address',\n 'area',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'base',\n 'bdo',\n 'body',\n 'br',\n 'button',\n 'canvas',\n 'caption',\n 'center',\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'command',\n 'datalist',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'dialog',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'embed',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'hr',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'link',\n 'map',\n 'mark',\n 'menu',\n 'meta',\n 'meter',\n 'nav',\n 'noscript',\n 'object',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'param',\n 'pre',\n 'progress',\n 'q',\n 'rp',\n 'rt',\n 's',\n 'samp',\n 'script',\n 'section',\n 'select',\n 'small',\n 'source',\n 'span',\n 'strong',\n 'sub',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'title',\n 'tr',\n 'track',\n 'u',\n 'ul',\n 'var',\n 'video',\n 'wbr',\n]\n", "import { htmlElements } from './HtmlElements.js'\n\nconst querySelectorByText = (root, text) => {\n let node\n const elements = []\n const walk = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, null)\n while ((node = walk.nextNode())) {\n // @ts-ignore\n if (node.nodeValue === text) {\n elements.push(node.parentNode)\n }\n }\n return elements\n}\n\nconst querySelectorByCss = (selector) => {\n return Array.from(document.querySelectorAll(selector))\n}\n\nconst isElement = (selector) => {\n return htmlElements.includes(selector)\n}\n\nexport const querySelector = (selector) => {\n if (typeof selector !== 'string') {\n throw new TypeError('selector must be of type string')\n }\n if (selector.startsWith('text=')) {\n return querySelectorByText(document.body, selector.slice('text='.length))\n }\n if (selector.includes('text=')) {\n const index = selector.indexOf('text=')\n const elements = querySelectorByCss(selector.slice(0, index))\n const text = selector.slice(index + 'text='.length)\n return elements.flatMap((element) => {\n return querySelectorByText(element, text)\n })\n // for(const element of elements)\n }\n if (selector.startsWith('.')) {\n return querySelectorByCss(selector)\n }\n if (selector.startsWith('#')) {\n return querySelectorByCss(selector)\n }\n if (selector.startsWith('[data') || selector.startsWith('[title')) {\n return querySelectorByCss(selector)\n }\n if (isElement(selector)) {\n return querySelectorByCss(selector)\n }\n throw new Error(`unsupported selector: ${selector}`)\n}\n\nconst toButtonNumber = (buttonType) => {\n switch (buttonType) {\n case 'left':\n return 0\n case 'middle':\n return 1\n case 'right':\n return 2\n default:\n throw new Error(`unsupported button type: ${buttonType}`)\n }\n}\n\nexport const querySelectorWithOptions = (\n selector,\n { nth = -1, hasText = '' } = {}\n) => {\n let elements = querySelector(selector)\n if (hasText) {\n elements = elements.filter((element) => element.textContent === hasText)\n }\n if (elements.length === 0) {\n return undefined\n }\n if (elements.length === 1) {\n const element = elements[0]\n return element\n }\n if (nth === -1) {\n throw new Error(\n `too many matching elements for ${selector}, matching ${elements.length}`\n )\n }\n const element = elements[nth]\n if (!element) {\n throw new Error(`selector not found: ${selector}`)\n }\n return element\n}\n", "import * as QuerySelector from './QuerySelector.js'\n\nexport const toBeVisible = (locator) => {\n return `expected selector to be visible ${locator._selector}`\n}\n\nexport const toHaveValue = (locator, { value }) => {\n return `expected selector ${locator._selector} to have value ${value}`\n}\n\nconst printLocator = (locator) => {\n if (locator._nth !== -1) {\n return `${locator._selector}:nth(${locator._nth})`\n }\n if (locator._hasText) {\n return `${locator._selector} \"${locator._hasText}\"`\n }\n return `${locator._selector}`\n}\n\nexport const toHaveText = (locator, { text }) => {\n const element = QuerySelector.querySelectorWithOptions(locator._selector, {\n nth: locator._nth,\n hasText: locator._hasText,\n })\n const locatorString = printLocator(locator)\n if (!element) {\n return `expected selector ${locatorString} to have text \"${text}\" element was not found`\n }\n return `expected selector ${locatorString} to have text \"${text}\" but was \"${element.textContent}\"`\n}\n\nexport const toHaveAttribute = (locator, { key, value }) => {\n const element = QuerySelector.querySelectorWithOptions(locator._selector, {\n nth: locator._nth,\n hasText: locator._hasText,\n })\n const locatorString = printLocator(locator)\n if (!element) {\n return `expected ${locatorString} to have attribute ${key} ${value} but element was not found`\n }\n const actual = element.getAttribute(key)\n return `expected ${locatorString} to have attribute ${key} ${value} but was ${actual}`\n}\n\nexport const toHaveCount = (locator, { count }) => {\n const locatorString = printLocator(locator)\n const elements = QuerySelector.querySelector(locator._selector)\n const actualCount = elements.length\n return `expected ${locatorString} to have count ${count} but was ${actualCount}`\n}\n\nconst stringifyElement = (element) => {\n if (element.id) {\n return `#${element.id}`\n }\n if (element.className) {\n return `.${element.className}`\n }\n if (element === document.body) {\n return 'document.body'\n }\n return element.tagName\n}\n\nexport const toBeFocused = (locator) => {\n const locatorString = printLocator(locator)\n const activeElement = document.activeElement\n const stringifiedActiveElement = stringifyElement(activeElement)\n return `expected ${locatorString} to be focused but active element is ${stringifiedActiveElement}`\n}\n\nexport const toHaveClass = (locator, { className }) => {\n const [element] = QuerySelector.querySelector(locator._selector)\n const locatorString = printLocator(locator)\n if (!element) {\n return `expected ${locatorString} to have class ${className} but element was not found`\n }\n return `expected ${locatorString} to have class ${className}`\n}\n\nexport const toHaveId = (locator, { id }) => {\n const [element] = QuerySelector.querySelector(locator._selector)\n const locatorString = printLocator(locator)\n if (!element) {\n return `expected ${locatorString} to have id ${id} but element was not found`\n }\n return `expected ${locatorString} to have id ${id} but was ${element.id}`\n}\n\nexport const toBeHidden = (locator) => {\n const locatorString = printLocator(locator)\n return `expected ${locatorString} to be hidden`\n}\n\nexport const toHaveCss = (locator, { key, value }) => {\n const [element] = QuerySelector.querySelector(locator._selector)\n const locatorString = printLocator(locator)\n if (!element) {\n return `expected ${locatorString} to have css ${key} ${value} but element was not found`\n }\n const style = getComputedStyle(element)\n const actual = style[key]\n return `expected ${locatorString} to have css ${key} ${value} but was ${actual}`\n}\n", "import * as ConditionErrors from './ConditionErrors.js'\n\nexport const getFunction = (fnName) => {\n switch (fnName) {\n case 'toBeVisible':\n return ConditionErrors.toBeVisible\n case 'toHaveValue':\n return ConditionErrors.toHaveValue\n case 'toHaveText':\n return ConditionErrors.toHaveText\n case 'toHaveAttribute':\n return ConditionErrors.toHaveAttribute\n case 'toHaveCount':\n return ConditionErrors.toHaveCount\n case 'toBeFocused':\n return ConditionErrors.toBeFocused\n case 'toHaveId':\n return ConditionErrors.toHaveId\n case 'toBeHidden':\n return ConditionErrors.toBeHidden\n case 'toHaveCss':\n return ConditionErrors.toHaveCss\n case 'toHaveClass':\n return ConditionErrors.toHaveClass\n default:\n throw new Error(`unexpected function name ${fnName}`)\n }\n}\n", "import * as DomEventType from '../DomEventType/DomEventType.js'\n\nexport const mouseEvent = (element, eventType, options) => {\n const event = new MouseEvent(eventType, options)\n element.dispatchEvent(event)\n}\n\nexport const mouseDown = (element, options) => {\n mouseEvent(element, DomEventType.MouseDown, options)\n}\n\nexport const mouseUp = (element, options) => {\n mouseEvent(element, DomEventType.MouseUp, options)\n}\n\nexport const contextMenu = (element, options) => {\n mouseEvent(element, DomEventType.ContextMenu, options)\n}\n\nexport const click = (element, options) => {\n mouseDown(element, options)\n mouseEvent(element, DomEventType.Click, options)\n mouseUp(element, options)\n if (options.button === 2 /* right */) {\n contextMenu(element, options)\n }\n}\n\nexport const hover = (element, options) => {\n mouseEvent(element, DomEventType.MouseEnter, options)\n}\n\nexport const type = (element, options) => {\n element.value = options.text\n}\n\nexport const keyboardEvent = (element, eventType, options) => {\n const event = new KeyboardEvent(eventType, options)\n element.dispatchEvent(event)\n}\n\nexport const keyDown = (element, options) => {\n keyboardEvent(element, DomEventType.KeyDown, options)\n}\n\nexport const keyUp = (element, options) => {\n keyboardEvent(element, DomEventType.KeyUp, options)\n}\n\nconst getEventClass = (eventType) => {\n switch (eventType) {\n case DomEventType.Wheel:\n return WheelEvent\n case DomEventType.PointerDown:\n case DomEventType.PointerUp:\n case DomEventType.PointerMove:\n return PointerEvent\n default:\n return Event\n }\n}\n\nexport const dispatchEvent = (element, options) => {\n const EventClass = getEventClass(options.type)\n const event = new EventClass(options.type, options.init)\n element.dispatchEvent(event)\n}\n", "import * as ElementActions from './ElementActions.js'\n\nexport const press = (options) => {\n const element = document.activeElement\n\n ElementActions.keyDown(element, options)\n ElementActions.keyUp(element, options)\n}\n", "export const toHaveCount = (elements, { count }) => {\n return elements.length === count\n}\n\nexport const toBeHidden = (elements) => {\n return elements.length === 0\n}\n", "export const toBeVisible = (element) => {\n if (typeof element.isVisible === 'function') {\n return element.isVisible()\n }\n return element.isConnected\n}\n\nexport const toHaveValue = (element, { value }) => {\n return element.value === value\n}\n\nexport const toHaveText = (element, { text }) => {\n return element.textContent === text\n}\n\nexport const toHaveAttribute = (element, { key, value }) => {\n const attribute = element.getAttribute(key)\n return attribute === value\n}\n\nexport const toBeFocused = (element) => {\n return element === document.activeElement\n}\n\nexport const toHaveClass = (element, { className }) => {\n return element.classList.contains(className)\n}\n\nexport const toHaveId = (element, { id }) => {\n return element.id === id\n}\n\nexport const toHaveCss = (element, { key, value }) => {\n const style = getComputedStyle(element)\n const actualValue = style[key]\n if (value instanceof RegExp) {\n return value.test(actualValue)\n }\n return actualValue === value\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\nimport * as ConditionErrorMap from './ConditionErrorMap.js'\nimport * as ElementActions from './ElementActions.js'\nimport * as KeyBoardActions from './KeyBoardActions.js'\nimport * as MultiElementConditions from './MultiElementConditions.js'\nimport * as QuerySelector from './QuerySelector.js'\nimport * as SingleElementConditions from './SingleElementConditions.js'\n\nconst create$Overlay = () => {\n const $TestOverlay = document.createElement('div')\n $TestOverlay.id = 'TestOverlay'\n $TestOverlay.style.position = 'fixed'\n $TestOverlay.style.bottom = '0px'\n $TestOverlay.style.left = '0px'\n $TestOverlay.style.right = '0px'\n SetBounds.setHeight($TestOverlay, 20)\n $TestOverlay.style.whiteSpace = 'nowrap'\n $TestOverlay.style.contain = 'strict'\n $TestOverlay.style.userSelect = 'text'\n $TestOverlay.style.color = 'black'\n return $TestOverlay\n}\n\nexport const showOverlay = (state, background, text) => {\n const $TestOverlay = create$Overlay()\n $TestOverlay.dataset.state = state\n $TestOverlay.style.background = background\n $TestOverlay.textContent = text\n document.body.append($TestOverlay)\n}\n\nconst Time = {\n getTimeStamp() {\n return performance.now()\n },\n}\n\nconst maxTimeout = 2000\n\nconst Timeout = {\n async short() {\n await new Promise((resolve) => setTimeout(resolve, 1000))\n },\n async waitForMutation(maxDelay) {\n const disposables = []\n await Promise.race([\n new Promise((resolve) => {\n const timeout = setTimeout(resolve, maxDelay)\n disposables.push(() => {\n clearTimeout(timeout)\n })\n }),\n new Promise((resolve) => {\n const callback = (mutations) => {\n resolve(undefined)\n }\n const observer = new MutationObserver(callback)\n observer.observe(document.body, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true,\n attributeOldValue: true,\n characterDataOldValue: true,\n })\n disposables.push(() => {\n observer.disconnect()\n })\n }),\n ])\n for (const disposable of disposables) {\n disposable()\n }\n },\n}\n\nexport const performAction = async (locator, fnName, options) => {\n Assert.object(locator)\n Assert.string(fnName)\n Assert.object(options)\n const startTime = Time.getTimeStamp()\n const endTime = startTime + maxTimeout\n let currentTime = startTime\n const fn = ElementActions[fnName]\n while (currentTime < endTime) {\n const element = QuerySelector.querySelectorWithOptions(locator._selector, {\n hasText: locator._hasText,\n nth: locator._nth,\n })\n if (element) {\n fn(element, options)\n return\n }\n await Timeout.waitForMutation(100)\n currentTime = Time.getTimeStamp()\n }\n}\n\nexport const performKeyBoardAction = (fnName, options) => {\n const fn = KeyBoardActions[fnName]\n fn(options)\n}\n\nclass AssertionError extends Error {\n constructor(message) {\n super(message)\n this.name = 'AssertionError'\n }\n}\n\nexport const checkSingleElementCondition = async (locator, fnName, options) => {\n const startTime = Time.getTimeStamp()\n const endTime = startTime + maxTimeout\n let currentTime = startTime\n const fn = SingleElementConditions[fnName]\n while (currentTime < endTime) {\n const element = QuerySelector.querySelectorWithOptions(locator._selector, {\n hasText: locator._hasText,\n nth: locator._nth,\n })\n if (element) {\n const successful = fn(element, options)\n if (successful) {\n return\n }\n }\n await Timeout.waitForMutation(100)\n currentTime = Time.getTimeStamp()\n }\n const errorMessageFn = ConditionErrorMap.getFunction(fnName)\n const message = errorMessageFn(locator, options)\n throw new AssertionError(message)\n}\n\nexport const checkMultiElementCondition = async (locator, fnName, options) => {\n const startTime = Time.getTimeStamp()\n const endTime = startTime + maxTimeout\n let currentTime = startTime\n const fn = MultiElementConditions[fnName]\n while (currentTime < endTime) {\n const elements = QuerySelector.querySelector(locator._selector)\n const successful = fn(elements, options)\n if (successful) {\n return\n }\n await Timeout.waitForMutation(100)\n currentTime = Time.getTimeStamp()\n }\n const errorMessageFn = ConditionErrorMap.getFunction(fnName)\n const message = errorMessageFn(locator, options)\n throw new AssertionError(message)\n}\n", "import * as TestFrameWork from './TestFrameWork.js'\n\nexport const name = 'TestFrameWork'\n\n// prettier-ignore\nexport const Commands = {\n checkMultiElementCondition: TestFrameWork.checkMultiElementCondition,\n checkSingleElementCondition: TestFrameWork.checkSingleElementCondition,\n performAction: TestFrameWork.performAction,\n performKeyBoardAction: TestFrameWork.performKeyBoardAction,\n showOverlay: TestFrameWork.showOverlay,\n}\n", "export const state = {\n objects: Object.create(null),\n}\n\nexport const transfer = (objectId, transferable) => {\n state.objects[objectId] = transferable\n}\n\nexport const get = (objectId) => {\n const object = state.objects[objectId]\n if (!object) {\n throw new Error(`object not found ${objectId}`)\n }\n return object\n}\n", "import * as Transferrable from './Transferrable.js'\n\nexport const name = 'Transferrable'\n\nexport const Commands = {\n transfer: Transferrable.transfer,\n}\n", "export const ActivityBar = 'ActivityBar'\n\nexport const Audio = 'Audio'\n\nexport const Clock = 'Clock'\n\nexport const ColorPicker = 'ColorPicker'\n\nexport const DebugConsole = 'Debug Console'\n\nexport const Dialog = 'Dialog'\n\nexport const DiffEditor = 'DiffEditor'\n\nexport const EditorCompletion = 'EditorCompletion'\n\nexport const EditorImage = 'EditorImage'\n\nexport const EditorPlainText = 'EditorPlainText'\n\nexport const EditorText = 'EditorText'\n\nexport const Empty = 'Empty'\n\nexport const Error = 'Error'\n\nexport const Explorer = 'Explorer'\n\nexport const ExtensionDetail = 'ExtensionDetail'\n\nexport const Extensions = 'Extensions'\n\nexport const FindWidget = 'FindWidget'\n\nexport const ImagePreview = 'ImagePreview'\n\nexport const Implementations = 'Implementations'\n\nexport const KeyBindings = 'KeyBindings'\n\nexport const Layout = 'Layout'\n\nexport const Main = 'Main'\n\nexport const MainTabs = 'MainTabs'\n\nexport const Output = 'Output'\n\nexport const Panel = 'Panel'\n\nexport const Pdf = 'Pdf'\n\nexport const Problems = 'Problems'\n\nexport const QuickPick = 'QuickPick'\n\nexport const References = 'References'\n\nexport const RunAndDebug = 'Run And Debug'\n\nexport const Search = 'Search'\n\nexport const SideBar = 'SideBar'\n\nexport const SimpleBrowser = 'SimpleBrowser'\n\nexport const SourceControl = 'Source Control'\n\nexport const StatusBar = 'StatusBar'\n\nexport const Terminal = 'Terminal'\n\nexport const TitleBar = 'TitleBar'\n\nexport const TitleBarButtons = 'TitleBarButtons'\n\nexport const TitleBarIcon = 'TitleBarIcon'\n\nexport const TitleBarMenuBar = 'TitleBarMenuBar'\n\nexport const Video = 'Video'\n", "export const Tab = 1\n\nexport const Button = 2\n", "export const Vertical = 'vertical'\n", "export const setMaskImage = ($Element, icon) => {\n $Element.style.maskImage = `url('${icon}')`\n $Element.style.webkitMaskImage = `url('${icon}')`\n}\n\nexport const transfer = ($From, $To) => {\n $To.style.maskImage = $From.style.maskImage\n $To.style.webkitMaskImage = $From.style.webkitMaskImage\n $From.style.maskImage = ''\n $From.style.webkitMaskImage = ''\n}\n", "import * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as MaskImage from '../MaskImage/MaskImage.js'\n\nexport const create = (icon) => {\n const $Icon = document.createElement('div')\n $Icon.className = 'MaskIcon'\n MaskImage.setMaskImage($Icon, icon)\n $Icon.role = AriaRoles.None\n return $Icon\n}\n", "export const Keyboard = -1\n\nexport const LeftClick = 0\n\nexport const MiddleClick = 1\n\nexport const RightClick = 2\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\n/**\n *\n * @param {number} index\n * @param {number} x\n * @param {number} y\n */\nexport const handleClick = (index, x, y) => {\n RendererWorker.send('ActivityBar.handleClick', index, x, y)\n}\n\nexport const handleBlur = () => {\n RendererWorker.send('ActivityBar.handleBlur')\n}\n\nexport const handleFocus = () => {\n RendererWorker.send('ActivityBar.focus')\n}\n\nexport const handleContextMenu = (button, x, y) => {\n RendererWorker.send('ActivityBar.handleContextMenu', button, x, y)\n}\n", "import * as Event from '../Event/Event.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as MouseEventTypes from '../MouseEventType/MouseEventType.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as ViewletActivityBarFunctions from './ViewletActivityBarFunctions.js'\n\nconst get$ItemFromEvent = (event) => {\n const $Target = event.target\n if ($Target.classList.contains('ActivityBarItem')) {\n return $Target\n }\n if ($Target.classList.contains('ActivityBarItemIcon')) {\n return $Target.parentNode\n }\n return undefined\n}\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nexport const handleMousedown = (event) => {\n const { button, clientX, clientY } = event\n if (button !== MouseEventTypes.LeftClick) {\n return\n }\n const $Item = get$ItemFromEvent(event)\n if (!$Item) {\n return\n }\n Event.preventDefault(event)\n Event.stopPropagation(event)\n const index = getNodeIndex($Item)\n ViewletActivityBarFunctions.handleClick(index, clientX, clientY)\n}\n\nexport const handleContextMenu = (event) => {\n const { button, clientX, clientY } = event\n Event.preventDefault(event)\n ViewletActivityBarFunctions.handleContextMenu(button, clientX, clientY)\n}\n\nexport const handleBlur = () => {\n RendererWorker.send('ActivityBar.handleBlur')\n ViewletActivityBarFunctions.handleBlur()\n}\n\nexport const handleFocus = (event) => {\n Focus.setFocus('activityBar')\n ViewletActivityBarFunctions.handleFocus()\n}\n", "export const Extension = 'Extension'\nexport const Editor = 'editor'\nexport const ActivityBar = 'Activity Bar'\nexport const QuickInput = 'Quick Input'\nexport const SideBar = 'Side Bar'\nexport const StatusBar = 'Status Bar'\n", "import * as ActivityBarItemFlags from '../ActivityBarItemFlags/ActivityBarItemFlags.js'\nimport * as AriaBoolean from '../AriaBoolean/AriaBoolean.js'\nimport * as AriaOrientationType from '../AriaOrientationType/AriaOrientationType.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as DomAttributeType from '../DomAttributeType/DomAttributeType.js'\nimport * as Logger from '../Logger/Logger.js'\nimport * as MaskIcon from '../MaskIcon/MaskIcon.js'\nimport * as MaskImage from '../MaskImage/MaskImage.js'\nimport * as ViewletActivityBarEvents from './ViewletActivityBarEvents.js'\nimport * as AriaRoleDescriptionType from '../AriaRoleDescriptionType/AriaRoleDescriptionType.js'\n\nconst activeId = 'ActivityBarItemActive'\nconst selectedClassName = 'ActivityBarItemSelected'\n\n// TODO set aria-selected false when sidebar is collapsed\n\nconst create$ActivityBarItemIcon = (icon) => {\n return MaskIcon.create(icon)\n}\n\n// TODO assetDir might not work with non-builtin extension icons\nconst create$ActivityBarItem = (item) => {\n // const $ActivityBarItemIcon = create$ActivityBarItemIcon(`${item.icon}`)\n const $ActivityBarItem = document.createElement('div')\n $ActivityBarItem.className = 'ActivityBarItem'\n $ActivityBarItem.ariaLabel = '' // aria-label is determined by content TODO is empty aria-label necessary or can it be left off?\n $ActivityBarItem.title = item.title\n MaskImage.setMaskImage($ActivityBarItem, item.icon)\n if (item.keyShortcuts) {\n $ActivityBarItem.ariaKeyShortcuts = item.keyShortcuts\n }\n switch (item.flags) {\n case ActivityBarItemFlags.Tab:\n $ActivityBarItem.role = AriaRoles.Tab\n $ActivityBarItem.ariaSelected = AriaBoolean.False\n break\n case ActivityBarItemFlags.Button:\n $ActivityBarItem.role = AriaRoles.Button\n $ActivityBarItem.ariaHasPopup = AriaBoolean.True\n break\n default:\n Logger.warn(`unknown activity bar item flags ${item.flags}`)\n break\n }\n // $ActivityBarItem.append($ActivityBarItemIcon)\n return $ActivityBarItem\n}\n\nexport const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.id = 'ActivityBar'\n $Viewlet.className = 'Viewlet ActivityBar'\n // @ts-ignore\n $Viewlet.role = AriaRoles.ToolBar\n $Viewlet.ariaRoleDescription = AriaRoleDescriptionType.ActivityBar\n $Viewlet.ariaOrientation = AriaOrientationType.Vertical\n $Viewlet.tabIndex = 0\n return {\n $ActivityBar: $Viewlet,\n $Viewlet,\n }\n}\n\nexport const attachEvents = (state) => {\n const { $Viewlet } = state\n $Viewlet.onmousedown = ViewletActivityBarEvents.handleMousedown\n $Viewlet.oncontextmenu = ViewletActivityBarEvents.handleContextMenu\n $Viewlet.onfocus = ViewletActivityBarEvents.handleFocus\n $Viewlet.onblur = ViewletActivityBarEvents.handleBlur\n}\n\nexport const dispose = (state) => {}\n\nexport const setItems = (state, activityBarItems) => {\n Assert.object(state)\n Assert.array(activityBarItems)\n const $ActivityBar = state.$ActivityBar\n $ActivityBar.replaceChildren(...activityBarItems.map(create$ActivityBarItem))\n}\n\nexport const setSelectedIndex = (state, oldIndex, newIndex) => {\n const { $ActivityBar } = state\n if (oldIndex !== -1) {\n const $OldItem = $ActivityBar.children[oldIndex]\n $OldItem.ariaSelected = AriaBoolean.False\n if ($OldItem.firstChild) {\n MaskImage.transfer($OldItem.firstChild, $OldItem)\n $OldItem.firstChild.remove()\n }\n $OldItem.classList.remove(selectedClassName)\n }\n if (newIndex !== -1) {\n const $NewItem = $ActivityBar.children[newIndex]\n $NewItem.ariaSelected = AriaBoolean.True\n const $Icon = create$ActivityBarItemIcon('')\n MaskImage.transfer($NewItem, $Icon)\n $NewItem.append($Icon)\n $NewItem.classList.add(selectedClassName)\n }\n}\n\nexport const setFocusedIndex = (state, oldIndex, newIndex, focused) => {\n const { $ActivityBar } = state\n if (oldIndex !== -1) {\n const $OldItem = $ActivityBar.children[oldIndex]\n $OldItem.removeAttribute('id')\n $OldItem.classList.remove('FocusOutline')\n }\n if (newIndex !== -1) {\n const $NewItem = $ActivityBar.children[newIndex]\n $NewItem.id = activeId\n $ActivityBar.setAttribute(DomAttributeType.AriaActiveDescendant, activeId)\n\n if (focused) {\n $NewItem.classList.add('FocusOutline')\n }\n }\n}\n\nexport const setBadgeCount = (state, index, count) => {\n const { $ActivityBar } = state\n const $Item = $ActivityBar.children[index]\n const $Badge = document.createElement('div')\n $Badge.className = 'ActivityBarItemBadge'\n $Badge.textContent = `${count}`\n // @ts-ignore\n $Item.append($Badge)\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleAudioError = (code, message) => {\n RendererWorker.send('Audio.handleAudioError', code, message)\n}\n", "import * as ViewletAudioFunctions from './ViewletAudioFunctions.js'\n\nexport const handleAudioError = (event) => {\n const { target } = event\n const { error } = target\n const { code, message } = error\n ViewletAudioFunctions.handleAudioError(code, message)\n}\n", "// based on the audio editor by vscode\nimport * as ViewletAudioEvents from './ViewletAudioEvents.js'\n\nexport const create = () => {\n const $Audio = document.createElement('audio')\n $Audio.controls = true\n\n const $Content = document.createElement('div')\n $Content.className = 'AudioContent'\n $Content.append($Audio)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet Audio'\n $Viewlet.append($Content)\n return {\n $Viewlet,\n $Audio,\n $Content,\n $AudioErrorMessage: undefined,\n }\n}\n\nexport const attachEvents = (state) => {\n const { $Audio } = state\n $Audio.onerror = ViewletAudioEvents.handleAudioError\n}\n\nexport const setSrc = (state, src) => {\n const { $Audio } = state\n $Audio.src = src\n}\n\nexport const setAudioErrorMessage = (state, audioErrorMessage) => {\n if (!state.$AudioErrorMessage) {\n state.$AudioErrorMessage = document.createElement('div')\n state.$AudioErrorMessage.className = 'AudioErrorMessage'\n state.$Content.append(state.$AudioErrorMessage)\n }\n const { $AudioErrorMessage } = state\n $AudioErrorMessage.textContent = audioErrorMessage\n}\n", "import * as Assert from '../Assert/Assert.js'\n\nexport const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet Clock'\n return {\n $Viewlet,\n }\n}\n\nexport const dispose = (state) => {}\n\nexport const refresh = () => {}\n\nexport const setTime = (state, time) => {\n Assert.object(state)\n Assert.string(time)\n state.$Viewlet.textContent = time\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\n/**\n * @param {number} x\n * @param {number} y\n */\nexport const handleSliderPointerMove = (x, y) => {\n RendererWorker.send('ColorPicker.handleSliderPointerMove', x, y)\n}\n\n/**\n *\n * @param {number} x\n * @param {number} y\n */\nexport const handleSliderPointerDown = (x, y) => {\n RendererWorker.send('ColorPicker.handleSliderPointerDown', x, y)\n}\n", "import * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as ViewletColorPickerFunctions from './ViewletColorPickerFunctions.js'\n\nexport const handleSliderPointerCaptureLost = (event) => {\n const { target } = event\n target.removeEventListener(DomEventType.PointerMove, handleSliderPointerMove)\n target.removeEventListener(DomEventType.LostPointerCapture, handleSliderPointerCaptureLost)\n}\n\nexport const handleSliderPointerMove = (event) => {\n const { clientX, clientY } = event\n ViewletColorPickerFunctions.handleSliderPointerMove(clientX, clientY)\n}\n\nexport const handleSliderPointerDown = (event) => {\n const { clientX, clientY, target, pointerId } = event\n target.setPointerCapture(pointerId)\n target.addEventListener(DomEventType.PointerMove, handleSliderPointerMove)\n target.addEventListener(DomEventType.LostPointerCapture, handleSliderPointerCaptureLost)\n ViewletColorPickerFunctions.handleSliderPointerDown(clientX, clientY)\n}\n", "import * as ViewletColorPickerEvents from './ViewletColorPickerEvents.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\n\nexport const create = () => {\n const $BackgroundColor = document.createElement('div')\n $BackgroundColor.className = 'ColorPickerBackgroundColor'\n\n const $Light = document.createElement('div')\n $Light.className = 'ColorPickerLight'\n\n const $Dark = document.createElement('div')\n $Dark.className = 'ColorPickerDark'\n\n const $ColorPickerRectangle = document.createElement('div')\n $ColorPickerRectangle.className = 'ColorPickerRectangle'\n $ColorPickerRectangle.append($BackgroundColor, $Light, $Dark)\n\n const $ColorPickerSliderThumb = document.createElement('div')\n $ColorPickerSliderThumb.className = 'ColorPickerSliderThumb'\n\n const $ColorPickerSlider = document.createElement('div')\n $ColorPickerSlider.className = 'ColorPickerSlider'\n $ColorPickerSlider.append($ColorPickerSliderThumb)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet ColorPicker'\n $Viewlet.append($ColorPickerRectangle, $ColorPickerSlider, $ColorPickerSliderThumb)\n return {\n $Viewlet,\n $BackgroundColor,\n $ColorPickerSlider,\n $ColorPickerSliderThumb,\n }\n}\n\nexport const attachEvents = (state) => {\n const { $ColorPickerSliderThumb, $ColorPickerSlider } = state\n $ColorPickerSliderThumb.onpointerdown = ViewletColorPickerEvents.handleSliderPointerDown\n $ColorPickerSlider.onpointerdown = ViewletColorPickerEvents.handleSliderPointerDown\n}\n\nexport const setColor = (state, color) => {\n const { $Viewlet } = state\n $Viewlet.style.setProperty('--ColorPickerColor', color)\n}\n\nexport const setOffsetX = (state, offsetX) => {\n const { $ColorPickerSliderThumb } = state\n SetBounds.setXAndYTransform($ColorPickerSliderThumb, offsetX, 0)\n}\n", "import * as InputBox from '../InputBox/InputBox.js'\n\nexport const create = () => {\n const $DebugConsoleTop = document.createElement('div')\n $DebugConsoleTop.className = 'DebugConsoleTop'\n $DebugConsoleTop.textContent = 'Debug Console (not implemented)'\n\n const $Input = InputBox.create()\n\n const $DebugConsoleBottom = document.createElement('div')\n $DebugConsoleBottom.className = 'DebugConsoleBottom'\n $DebugConsoleBottom.append($Input)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet DebugConsole'\n $Viewlet.append($DebugConsoleTop, $DebugConsoleBottom)\n return {\n $Viewlet,\n $Input,\n }\n}\n\nexport const refresh = (state, context) => {\n const { $Viewlet } = state\n $Viewlet.textContent = 'Debug Console - Not implemented'\n}\n\nexport const focus = (state) => {\n const { $Input } = state\n $Input.focus()\n}\n\nexport const dispose = (state) => {}\n", "import * as Platform from '../Platform/Platform.js'\n\nconst assetDir = Platform.getAssetDir()\n\nexport const ArrowDown = `${assetDir}/icons/arrow-down.svg`\nexport const ArrowLeft = `${assetDir}/icons/arrow-left.svg`\nexport const ArrowRight = `${assetDir}/icons/arrow-right.svg`\nexport const ArrowUp = `${assetDir}/icons/arrow-up.svg`\nexport const CaseSensitive = `${assetDir}/icons/case-sensitive.svg`\nexport const ChevronDown = `${assetDir}/icons/chevron-down.svg`\nexport const ChevronUp = `${assetDir}/icons/chevron-up.svg`\nexport const Close = `${assetDir}/icons/close.svg`\nexport const DebugContinue = `${assetDir}/icons/debug-continue.svg`\nexport const DebugPause = `${assetDir}/icons/debug-pause.svg`\nexport const DebugStepInto = `${assetDir}/icons/debug-step-into.svg`\nexport const DebugStepOut = `${assetDir}/icons/debug-step-out.svg`\nexport const DebugStepOver = `${assetDir}/icons/debug-step-over.svg`\nexport const ExtensionDefaultIcon = `${assetDir}/icons/extensionDefaultIcon.png`\nexport const LinkExternal = `${assetDir}/icons/link-external.svg`\nexport const NextMatch = `${assetDir}/icons/arrow-down.svg`\nexport const PreviousMatch = `${assetDir}/icons/arrow-up.svg`\nexport const Refresh = `${assetDir}/icons/refresh.svg`\nexport const Regex = `${assetDir}/icons/regex.svg`\nexport const ReplaceAll = `${assetDir}/icons/replace-all.svg`\nexport const TriangleDown = `${assetDir}/icons/triangle-down.svg`\nexport const TriangleRight = `${assetDir}/icons/triangle-right.svg`\nexport const WholeWord = `${assetDir}/icons/whole-word.svg`\nexport const ZoomIn = `${assetDir}/icons/zoom-in.svg`\nexport const ZoomOut = `${assetDir}/icons/zoom-out.svg`\n", "import * as MaskIcon from '../MaskIcon/MaskIcon.js'\n\nexport const create$Button = (label, icon) => {\n // TODO icon div might not be needed (unnecessary html element)\n const $Icon = MaskIcon.create(icon)\n\n const $Button = document.createElement('button')\n $Button.className = 'IconButton'\n $Button.title = label\n $Button.ariaLabel = label\n $Button.append($Icon)\n return $Button\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleClick = (index) => {\n RendererWorker.send(/* Dialog.handleClick */ 'Dialog.handleClick', /* index */ index)\n}\n", "import * as ViewletDialogFunctions from './ViewletDialogFunctions.js'\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nexport const handleClick = (event) => {\n const { target } = event\n const index = getNodeIndex(target)\n ViewletDialogFunctions.handleClick(index)\n}\n", "import * as DomAttributeType from '../DomAttributeType/DomAttributeType.js'\nimport * as Icon from '../Icon/Icon.js'\nimport * as IconButton from '../IconButton/IconButton.js'\nimport * as ViewletDialogEvents from './ViewletDialogEvents.js'\n\nexport const create = () => {\n const $DialogTitle = document.createElement('h2')\n $DialogTitle.id = 'DialogTitle'\n\n const $DialogCloseButton = IconButton.create$Button('Close', Icon.Close)\n\n const $DialogHeader = document.createElement('div')\n $DialogHeader.className = 'DialogHeader'\n $DialogHeader.append($DialogTitle, $DialogCloseButton)\n\n const $DialogBodyErrorMessage = document.createElement('p')\n $DialogBodyErrorMessage.id = 'DialogBodyErrorMessage'\n\n const $DialogBodyErrorCodeFrame = document.createElement('code')\n $DialogBodyErrorCodeFrame.id = 'DialogBodyErrorCodeFrame'\n $DialogBodyErrorCodeFrame.ariaLabel = 'Code Frame'\n\n const $DialogBodyErrorStack = document.createElement('div')\n $DialogBodyErrorStack.id = 'DialogBodyErrorStack'\n\n const $DialogBodyOptions = document.createElement('div')\n $DialogBodyOptions.id = 'DialogBodyOptions'\n\n const $DialogBody = document.createElement('div')\n $DialogBody.id = 'DialogBody'\n $DialogBody.append($DialogBodyErrorMessage, $DialogBodyErrorCodeFrame, $DialogBodyErrorStack, $DialogBodyOptions)\n // TODO screen reader switches to browse mode for dialog and\n // reads dialog title and error message multiple times\n const $Dialog = document.createElement('dialog')\n $Dialog.className = 'Viewlet Dialog'\n $Dialog.id = 'Dialog'\n $Dialog.setAttribute(DomAttributeType.AriaLabelledBy, 'DialogTitle')\n $Dialog.setAttribute(DomAttributeType.AriaDescribedBy, 'DialogBodyErrorMessage')\n $Dialog.append($DialogHeader, $DialogBody)\n $Dialog.onclick = ViewletDialogEvents.handleClick\n\n return {\n $Viewlet: $Dialog,\n $DialogTitle,\n $DialogBodyErrorCodeFrame,\n $DialogBodyErrorMessage,\n $DialogBodyOptions,\n $DialogBodyErrorStack,\n }\n}\n\nexport const postAppend = (state) => {\n const { $Viewlet } = state\n $Viewlet.showModal()\n}\n\nexport const setHeader = (state, header) => {\n const { $DialogTitle } = state\n $DialogTitle.textContent = header\n}\n\nexport const setButtons = (state, buttons) => {\n const { $DialogBodyOptions } = state\n for (const button of buttons) {\n const $DialogOption = document.createElement('button')\n $DialogOption.className = 'DialogOption'\n $DialogOption.textContent = button\n $DialogBodyOptions.append($DialogOption)\n }\n}\n\nexport const setErrorMessage = (state, errorMessage) => {\n const { $DialogBodyErrorMessage } = state\n $DialogBodyErrorMessage.textContent = errorMessage\n}\n\nexport const setCodeFrame = (state, errorMessage) => {\n const { $DialogBodyErrorCodeFrame } = state\n $DialogBodyErrorCodeFrame.textContent = errorMessage\n}\n\nexport const setErrorStack = (state, errorStack) => {\n const { $DialogBodyErrorStack } = state\n $DialogBodyErrorStack.textContent = errorStack\n}\n", "export const create = () => {\n // TODO use aria role splitter once supported https://github.com/w3c/aria/issues/1348\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Sash SashVertical'\n return $Viewlet\n}\n", "export const DomDeltaLine = WheelEvent.DOM_DELTA_LINE\n\nexport const DomDeltaPixel = WheelEvent.DOM_DELTA_PIXEL\n\nexport const DomDeltaPage = WheelEvent.DOM_DELTA_PAGE\n", "export const handleWheel = (deltaY) => {\n RendererWorker.send(/* DiffEditor.handleWheel */ 'DiffEditor.handleWheel', /* value */ deltaY)\n}\n", "import * as WheelEventType from '../WheelEventType/WheelEventType.js'\nimport * as ViewletDiffEditorFunctions from './ViewletDiffEditorFunctions.js'\n\n/**\n * @param {WheelEvent} event\n */\nexport const handleWheel = (event) => {\n const { deltaMode, deltaY } = event\n // event.preventDefault()\n // const state = EditorHelper.getStateFromEvent(event)\n // TODO send editor id\n switch (deltaMode) {\n case WheelEventType.DomDeltaLine:\n ViewletDiffEditorFunctions.handleWheel(deltaY)\n break\n default:\n break\n }\n}\n\nexport const handleScrollBarPointerDown = (event) => {\n // TODO\n}\n", "export const Passive = {\n passive: true,\n}\n\nexport const Active = {\n passive: false,\n}\n\nexport const Capture = {\n capture: true,\n}\n", "import * as SetBounds from '../SetBounds/SetBounds.js'\n\nexport const setScrollBar = (state, scrollBarY, scrollBarHeight) => {\n const { $ScrollBarThumb } = state\n SetBounds.setYAndHeight($ScrollBarThumb, scrollBarY, scrollBarHeight)\n}\n", "import * as ViewletSash from '../ViewletSash/ViewletSash.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as ViewletDiffEditorEvents from './ViewletDiffEditorEvents.js'\nimport * as DomEventOptions from '../DomEventOptions/DomEventOptions.js'\n\nexport const create = () => {\n const $ContentLeft = document.createElement('div')\n $ContentLeft.className = 'DiffEditorContentLeft'\n const $ContentRight = document.createElement('div')\n $ContentRight.className = 'DiffEditorContentRight'\n\n const $Sash = ViewletSash.create()\n\n const $ScrollBarThumb = document.createElement('div')\n $ScrollBarThumb.className = 'ScrollBarThumb'\n\n const $ScrollBar = document.createElement('div')\n $ScrollBar.className = 'ScrollBar'\n $ScrollBar.onpointerdown = ViewletDiffEditorEvents.handleScrollBarPointerDown\n $ScrollBar.append($ScrollBarThumb)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet DiffEditor'\n $Viewlet.append($ContentLeft, $Sash, $ContentRight, $ScrollBar)\n $Viewlet.addEventListener(DomEventType.Wheel, ViewletDiffEditorEvents.handleWheel, DomEventOptions.Passive)\n\n return {\n $Viewlet,\n $ContentLeft,\n $ContentRight,\n $ScrollBar,\n $ScrollBarThumb,\n }\n}\n\nconst create$Line = (line) => {\n const $Line = document.createElement('div')\n $Line.className = 'EditorRow'\n $Line.textContent = line\n return $Line\n}\n\nconst setContent = ($Content, lines) => {\n $Content.replaceChildren(...lines.map(create$Line))\n}\n\nexport const setContentLeft = (state, lines) => {\n const { $ContentLeft } = state\n setContent($ContentLeft, lines)\n}\n\nexport const setContentRight = (state, lines) => {\n const { $ContentRight } = state\n setContent($ContentRight, lines)\n}\n\nexport const setChanges = (state, changes) => {\n const { $ContentLeft, $ContentRight } = state\n const { changesLeft, changesRight } = changes\n for (const change of changesLeft) {\n if (change.type === 'delete') {\n const $Row = $ContentLeft.children[change.index]\n if ($Row) {\n $Row.classList.add('Deletion')\n }\n }\n }\n for (const change of changesRight) {\n if (change.type === 'insert') {\n const $Row = $ContentRight.children[change.index]\n if ($Row) {\n $Row.classList.add('Insertion')\n }\n }\n }\n}\n\nexport * from '../ViewletScrollable/ViewletScrollable.js'\n", "export const create = (text) => {\n const $LabelText = document.createTextNode(text)\n const $Label = document.createElement('div')\n $Label.className = 'Label'\n $Label.append($LabelText)\n return $Label\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const selectIndex = (index) => {\n RendererWorker.send('EditorCompletion.selectIndex', index)\n}\n\nexport const handleClickAt = (x, y) => {\n RendererWorker.send('EditorCompletion.handleClickAt', x, y)\n}\n\nexport const handleWheel = (deltaMode, deltaY) => {\n RendererWorker.send('EditorCompletion.handleWheel', deltaMode, deltaY)\n}\n\n/**\n * @param {number} y\n */\nexport const handleScrollBarClick = (y) => {\n RendererWorker.send('EditorCompletion.handleScrollBarClick', y)\n}\n\nexport const handleScrollBarThumbPointerMove = (y) => {\n RendererWorker.send('EditorCompletion.handleScrollBarMove', y)\n}\n", "import * as DomEventOptions from '../DomEventOptions/DomEventOptions.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as Event from '../Event/Event.js'\nimport * as ViewletEditorCompletionFunctions from './ViewletEditorCompletionFunctions.js'\n\nexport const handleMousedown = (event) => {\n Event.preventDefault(event)\n const { clientX, clientY } = event\n ViewletEditorCompletionFunctions.handleClickAt(clientX, clientY)\n}\n\nexport const handleWheel = (event) => {\n const { deltaY, deltaMode } = event\n ViewletEditorCompletionFunctions.handleWheel(deltaMode, deltaY)\n}\n\nexport const handleScrollBarThumbPointerMove = (event) => {\n const { clientY } = event\n ViewletEditorCompletionFunctions.handleScrollBarThumbPointerMove(clientY)\n}\n\nconst handlePointerCaptureLost = (event) => {\n const { target } = event\n target.removeEventListener(DomEventType.PointerMove, handleScrollBarThumbPointerMove)\n}\n\nexport const handleScrollBarPointerDown = (event) => {\n Event.preventDefault(event)\n const { target, pointerId, clientY } = event\n target.setPointerCapture(pointerId)\n target.addEventListener(DomEventType.PointerMove, handleScrollBarThumbPointerMove, DomEventOptions.Active)\n target.addEventListener(DomEventType.LostPointerCapture, handlePointerCaptureLost)\n ViewletEditorCompletionFunctions.handleScrollBarClick(clientY)\n}\n", "export const Small = 1\n\nexport const Normal = 2\n\nexport const Large = 3\n", "export const None = ''\nexport const Small = 'Small'\nexport const Normal = 'Normal'\nexport const Large = 'Large'\n", "import * as ViewletSize from '../ViewletSize/ViewletSize.js'\nimport * as ViewletSizeClassName from '../ViewletSizeClassName/ViewletSizeClassName.js'\n\nexport const getClassName = (size) => {\n switch (size) {\n case ViewletSize.Small:\n return ViewletSizeClassName.Small\n case ViewletSize.Normal:\n return ViewletSizeClassName.Normal\n case ViewletSize.Large:\n return ViewletSizeClassName.Large\n default:\n return ViewletSizeClassName.None\n }\n}\n", "import * as ViewletSizeMap from '../ViewletSizeMap/ViewletSizeMap.js'\n\nexport const setSize = (state, oldSize, newSize) => {\n const { $Viewlet } = state\n const oldClassName = ViewletSizeMap.getClassName(oldSize)\n if (oldClassName) {\n $Viewlet.classList.remove(oldClassName)\n }\n const newClassName = ViewletSizeMap.getClassName(newSize)\n $Viewlet.classList.add(newClassName)\n}\n", "import * as SetBounds from '../SetBounds/SetBounds.js'\n\nexport const setContentHeight = (state, height) => {\n const { $ListItems } = state\n SetBounds.setHeight($ListItems, height)\n}\n\nexport const setNegativeMargin = (state, negativeMargin) => {\n const { $ListItems } = state\n SetBounds.setTop($ListItems, negativeMargin)\n}\n\nexport * from '../ViewletScrollable/ViewletScrollable.js'\nexport * from '../ViewletSizable/ViewletSizable.js'\n", "import * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as DomEventOptions from '../DomEventOptions/DomEventOptions.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as Label from '../Label/Label.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\nimport * as Widget from '../Widget/Widget.js'\nimport * as ViewletEditorCompletionEvents from './ViewletEditorCompletionEvents.js'\n\nconst create$CompletionItem = () => {\n const $CompletionItemText = Label.create('')\n\n const $Icon = document.createElement('div')\n\n const $CompletionItem = document.createElement('div')\n $CompletionItem.role = AriaRoles.Option\n $CompletionItem.className = 'EditorCompletionItem'\n $CompletionItem.append($Icon, $CompletionItemText)\n return $CompletionItem\n}\n\nconst render$CompletionItem = ($Item, item) => {\n SetBounds.setTop($Item, item.top)\n const $Icon = $Item.children[0]\n const $Label = $Item.children[1]\n $Icon.className = `ColoredMaskIcon ${item.symbolName}`\n\n if (item.highlights.length === 0) {\n $Label.textContent = item.label\n return\n }\n // TODO recycle text nodes and highlight nodes\n $Label.textContent = ''\n const highlights = item.highlights\n const label = item.label\n let position = 0\n for (let i = 0; i < highlights.length; i += 2) {\n const highlightStart = highlights[i]\n const highlightEnd = highlights[i + 1]\n if (position < highlightStart) {\n const beforeText = label.slice(position, highlightStart)\n const $BeforeText = document.createTextNode(beforeText)\n $Label.append($BeforeText)\n }\n const highlightText = label.slice(highlightStart, highlightEnd)\n const $Highlight = document.createElement('span')\n $Highlight.className = 'CompletionHighlight'\n $Highlight.textContent = highlightText\n $Label.append($Highlight)\n position = highlightEnd\n }\n // TODO support multiple highlights\n if (position < label.length) {\n const afterText = item.label.slice(position)\n const $AfterText = document.createTextNode(afterText)\n $Label.append($AfterText)\n }\n}\n\nexport const create = () => {\n const $ListItems = document.createElement('div')\n $ListItems.className = 'ListItems'\n $ListItems.role = AriaRoles.ListBox\n $ListItems.ariaLabel = 'Suggest'\n\n const $ScrollBarThumb = document.createElement('div')\n $ScrollBarThumb.className = 'ScrollBarThumb'\n\n const $ScrollBar = document.createElement('div')\n $ScrollBar.className = 'ScrollBarSmall'\n $ScrollBar.append($ScrollBarThumb)\n\n // TODO only create scrollbar when necessary\n // TODO recycle nodes\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet EditorCompletion'\n $Viewlet.id = 'Completions'\n $Viewlet.append($ListItems, $ScrollBar)\n return {\n $Viewlet,\n $ListItems,\n $ScrollBar,\n $ScrollBarThumb,\n }\n}\n\nexport const attachEvents = (state) => {\n const { $Viewlet, $ListItems, $ScrollBar } = state\n $Viewlet.addEventListener(DomEventType.Wheel, ViewletEditorCompletionEvents.handleWheel, DomEventOptions.Passive)\n\n $ListItems.onmousedown = ViewletEditorCompletionEvents.handleMousedown\n\n $ScrollBar.onpointerdown = ViewletEditorCompletionEvents.handleScrollBarPointerDown\n}\n// TODO show should be passed active cursor position\n// this would make this function easier to test as it would avoid dependency on globals of other files\n\nconst render$ExtensionsLess = ($ListItems, items) => {\n for (let i = 0; i < $ListItems.children.length; i++) {\n render$CompletionItem($ListItems.children[i], items[i])\n }\n const fragment = document.createDocumentFragment()\n for (let i = $ListItems.children.length; i < items.length; i++) {\n const $Extension = create$CompletionItem()\n render$CompletionItem($Extension, items[i])\n fragment.append($Extension)\n }\n $ListItems.append(fragment)\n}\n\nconst render$ExtensionsEqual = ($ListItems, items) => {\n for (let i = 0; i < items.length; i++) {\n render$CompletionItem($ListItems.children[i], items[i])\n }\n}\n\nconst render$ExtensionsMore = ($ListItems, items) => {\n for (let i = 0; i < items.length; i++) {\n render$CompletionItem($ListItems.children[i], items[i])\n }\n const diff = $ListItems.children.length - items.length\n for (let i = 0; i < diff; i++) {\n $ListItems.lastChild.remove()\n }\n}\n\nconst render$Items = ($ListItems, items) => {\n if ($ListItems.children.length < items.length) {\n render$ExtensionsLess($ListItems, items)\n } else if ($ListItems.children.length === items.length) {\n render$ExtensionsEqual($ListItems, items)\n } else {\n render$ExtensionsMore($ListItems, items)\n }\n}\n\nexport const setItems = (state, items, reason, focusedIndex) => {\n const { $Viewlet, $ListItems } = state\n Focus.setAdditionalFocus('editorCompletions')\n if (items.length === 0) {\n if (reason === /* automatically */ 0) {\n return\n }\n $Viewlet.textContent = 'No Results'\n Widget.append($Viewlet)\n return\n }\n render$Items($ListItems, items)\n // TODO recycle nodes\n // $ListItems.replaceChildren(...items.map(create$CompletionItem))\n // TODO\n Widget.append($Viewlet)\n // TODO set right aria attributes on $EditorInput\n}\n\nexport const dispose = (state) => {\n Widget.remove(state.$Viewlet)\n // state.$EditorInput.removeAttribute('aria-activedescendant')\n Focus.removeAdditionalFocus('editorCompletions')\n}\n\nexport const setFocusedIndex = (state, oldIndex, newIndex) => {\n if (oldIndex === newIndex) {\n debugger\n }\n const { $ListItems } = state\n if (oldIndex >= 0) {\n const $OldItem = $ListItems.children[oldIndex]\n $OldItem.classList.remove('Focused')\n }\n if (newIndex >= 0) {\n const $NewItem = $ListItems.children[newIndex]\n $NewItem.classList.add('Focused')\n }\n Focus.setAdditionalFocus('editorCompletions')\n // state.$EditorInput.setAttribute('aria-activedescendant', $NewItem.id) // TODO use idl once supported\n}\n\nexport const showLoading = (state, x, y) => {\n const { $Viewlet } = state\n SetBounds.setXAndYTransform($Viewlet, x, y)\n const $Loading = document.createElement('div')\n $Loading.textContent = 'Loading'\n $Viewlet.append($Loading)\n Widget.append($Viewlet)\n Focus.setAdditionalFocus('editorCompletions')\n}\n\nexport const handleError = (state, error) => {\n const { $Viewlet } = state\n $Viewlet.textContent = `${error}`\n}\n\nexport const setBounds = (state, x, y, width, height) => {\n Assert.number(x)\n Assert.number(y)\n Assert.number(width)\n Assert.number(height)\n const { $Viewlet } = state\n SetBounds.setBounds($Viewlet, x, y, width, height)\n}\n\nexport * from '../ViewletList/ViewletList.js'\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handlePointerMove = (pointerId, x, y) => {\n RendererWorker.send('EditorImage.handlePointerMove', pointerId, x, y)\n}\n\nexport const handlePointerUp = (pointerId, x, y) => {\n RendererWorker.send('EditorImage.handlePointerUp', pointerId, x, y)\n}\n\nexport const handlePointerDown = (pointerId, x, y) => {\n RendererWorker.send('EditorImage.handlePointerDown', pointerId, x, y)\n}\n\nexport const handleWheel = (clientX, clientY, deltaX, deltaY) => {\n RendererWorker.send('EditorImage.handleWheel', clientX, clientY, deltaX, deltaY)\n}\n\nexport const handleImageError = () => {\n RendererWorker.send('EditorImage.handleImageError')\n}\n\nexport const handleContextMenu = (button, x, y) => {\n RendererWorker.send('EditorImage.handleContextMenu', button, x, y)\n}\n", "import * as DomEventOptions from '../DomEventOptions/DomEventOptions.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as MouseEventType from '../MouseEventType/MouseEventType.js'\nimport * as ViewletEditorImageFunctions from './ViewletEditorImageFunctions.js'\nimport * as Event from '../Event/Event.js'\n\n/**\n * @param {PointerEvent} event\n */\nexport const handlePointerMove = (event) => {\n const { pointerId, clientX, clientY } = event\n ViewletEditorImageFunctions.handlePointerMove(pointerId, clientX, clientY)\n}\n\n/**\n * @param {PointerEvent} event\n */\nexport const handlePointerUp = (event) => {\n const { pointerId, clientX, clientY, target, button } = event\n if (button !== MouseEventType.LeftClick) {\n return\n }\n ViewletEditorImageFunctions.handlePointerUp(pointerId, clientX, clientY)\n}\n\nexport const handlePointerCaptureLost = (event) => {\n const { target } = event\n // @ts-ignore\n target.removeEventListener(DomEventType.PointerMove, handlePointerMove)\n // @ts-ignore\n target.removeEventListener(DomEventType.PointerUp, handlePointerUp)\n}\n\n/**\n * @param {PointerEvent} event\n */\nexport const handlePointerDown = (event) => {\n const { pointerId, clientX, clientY, target, button } = event\n if (button !== MouseEventType.LeftClick) {\n return\n }\n // @ts-ignore\n target.setPointerCapture(pointerId)\n // @ts-ignore\n target.addEventListener(DomEventType.PointerMove, handlePointerMove, DomEventOptions.Active)\n // @ts-ignore\n target.addEventListener(DomEventType.PointerUp, handlePointerUp)\n target.addEventListener(DomEventType.LostPointerCapture, handlePointerCaptureLost)\n ViewletEditorImageFunctions.handlePointerDown(pointerId, clientX, clientY)\n}\n\n/**\n * @param {WheelEvent} event\n */\nexport const handleWheel = (event) => {\n const { clientX, clientY, deltaX, deltaY } = event\n ViewletEditorImageFunctions.handleWheel(clientX, clientY, deltaX, deltaY)\n}\n\n/**\n *\n * @param {MouseEvent} event\n */\nexport const handleContextMenu = (event) => {\n Event.preventDefault(event)\n const { button, clientX, clientY } = event\n ViewletEditorImageFunctions.handleContextMenu(button, clientX, clientY)\n}\n\nexport const handleError = (event) => {\n ViewletEditorImageFunctions.handleImageError()\n}\n\nexport const handleFocus = () => {\n Focus.setFocus('EditorImage')\n}\n", "import * as DomEventOptions from '../DomEventOptions/DomEventOptions.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as ViewletEditorImageEvents from './ViewletEditorImageEvents.js'\n\nexport const create = () => {\n const $Image = document.createElement('img')\n $Image.className = 'ViewletImage'\n $Image.draggable = false\n\n const $ImageWrapper = document.createElement('div')\n $ImageWrapper.className = 'ImageWrapper'\n $ImageWrapper.tabIndex = 0\n $ImageWrapper.append($Image)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet EditorImage'\n $Viewlet.append($ImageWrapper)\n\n return {\n $Viewlet,\n $Image,\n $ImageWrapper,\n }\n}\n\nexport const attachEvents = (state) => {\n const { $Image, $ImageWrapper, $Viewlet } = state\n $Image.onerror = ViewletEditorImageEvents.handleError\n\n $ImageWrapper.onfocus = ViewletEditorImageEvents.handleFocus\n\n $Viewlet.onpointerdown = ViewletEditorImageEvents.handlePointerDown\n $Viewlet.onpointerup = ViewletEditorImageEvents.handlePointerUp\n $Viewlet.oncontextmenu = ViewletEditorImageEvents.handleContextMenu\n $Viewlet.addEventListener(DomEventType.Wheel, ViewletEditorImageEvents.handleWheel, DomEventOptions.Passive)\n}\n\nexport const setTransform = (state, transform) => {\n const { $ImageWrapper } = state\n $ImageWrapper.style.transform = transform\n}\n\nexport const setSrc = (state, src) => {\n const { $Image } = state\n $Image.src = src\n}\n\nexport const setDragging = (state, isDragging) => {\n const { $Viewlet } = state\n $Viewlet.classList.toggle('Dragging', isDragging)\n}\n\nexport const dispose = (state) => {}\n\nexport const setError = (state, message) => {\n const { $Viewlet } = state\n const $Error = document.createElement('div')\n $Error.className = 'ViewletError'\n $Error.textContent = message\n $Viewlet.replaceChildren($Error)\n}\n", "import * as Assert from '../Assert/Assert.js'\n\nexport const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet EditorText'\n $Viewlet.textContent = 'loading...'\n return {\n $Viewlet,\n }\n}\n\nexport const dispose = (state) => {}\n\nexport const refresh = (state, context) => {\n Assert.object(state)\n Assert.string(context.content)\n state.$Viewlet.textContent = context.content\n}\n", "export const List = 'list'\n", "export const Text = 'text'\n", "import * as ClipBoardDataType from '../ClipBoardDataType/ClipBoardDataType.js'\n\nexport const getText = (clipBoardData) => {\n return clipBoardData.getData(ClipBoardDataType.Text)\n}\n", "export const None = 0\nexport const Ctrl = 1\nexport const Alt = 2\n", "import * as ModifierKey from '../ModifierKey/ModifierKey.js'\n\nexport const getModifierKey = (event) => {\n if (event.ctrlKey) {\n return ModifierKey.Ctrl\n }\n if (event.altKey) {\n return ModifierKey.Alt\n }\n return ModifierKey.None\n}\n", "export const InsertText = 'insertText'\n", "const toSimpleTouch = (touch) => {\n return {\n x: touch.clientX,\n y: touch.clientY,\n }\n}\n\nexport const toSimpleTouchEvent = (event) => {\n const touches = Array.from(event.touches).map(toSimpleTouch)\n const changedTouches = Array.from(event.changedTouches).map(toSimpleTouch)\n return {\n touches,\n changedTouches,\n }\n}\n", "// TODO this enum should only be present in renderer worker\nexport const ActivityBar = 1\n\nexport const Edit = 2\n\nexport const Editor = 3\n\nexport const Explorer = 4\nexport const File = 5\n\nexport const Go = 6\n\nexport const Help = 7\n\nexport const ManageExtension = 8\n\nexport const OpenRecent = 9\n\nexport const Run = 10\n\nexport const Selection = 11\n\nexport const Settings = 12\n\nexport const Tab = 13\n\nexport const Terminal = 14\n\nexport const TitleBar = 15\n\nexport const View = 16\n\nexport const ActivityBarAdditionalViews = 17\n\nexport const Search = 18\n", "import * as MenuEntryId from '../MenuEntryId/MenuEntryId.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleContextMenu = (button, x, y) => {\n RendererWorker.send('Editor.handleContextMenu', button, x, y, MenuEntryId.Editor)\n}\n\nexport const handleBlur = () => {\n RendererWorker.send('Editor.blur')\n}\n\nexport const type = (text) => {\n RendererWorker.send('Editor.type', text)\n}\n\nexport const typeWithAutoClosing = (text) => {\n RendererWorker.send('Editor.typeWithAutoClosing', text)\n}\n\nexport const compositionStart = (data) => {\n RendererWorker.send('Editor.compositionStart', data)\n}\n\nexport const compositionUpdate = (data) => {\n RendererWorker.send('Editor.compositionUpdate', data)\n}\n\nexport const compositionEnd = (data) => {\n RendererWorker.send('Editor.compositionEnd', data)\n}\n\nexport const cut = () => {\n RendererWorker.send('Editor.cut')\n}\n\nexport const moveRectangleSelectionPx = (x, y) => {\n RendererWorker.send('Editor.moveRectangleSelectionPx', x, y)\n}\n\nexport const moveSelectionPx = (x, y) => {\n RendererWorker.send('Editor.moveSelectionPx', x, y)\n}\n\nexport const handlePointerCaptureLost = () => {\n RendererWorker.send('Editor.handlePointerCaptureLost')\n}\n\nexport const handleMouseDown = (modifier, x, y, detail) => {\n RendererWorker.send('Editor.handleMouseDown', modifier, x, y, detail)\n}\n\nexport const setDelta = (deltaMode, deltaX, deltaY) => {\n RendererWorker.send('Editor.setDelta', deltaMode, deltaX, deltaY)\n}\n\nexport const paste = (text) => {\n RendererWorker.send('Editor.paste', text)\n}\n\nexport const handleScrollBarVerticalMove = (y) => {\n RendererWorker.send('Editor.handleScrollBarMove', y)\n}\n\nexport const handleScrollBarVerticalPointerDown = (y) => {\n RendererWorker.send('Editor.handleScrollBarPointerDown', y)\n}\n\nexport const handleScrollBarHorizontalMove = (x) => {\n RendererWorker.send('Editor.handleScrollBarHorizontalMove', x)\n}\n\nexport const handleScrollBarHorizontalPointerDown = (x) => {\n RendererWorker.send('Editor.handleScrollBarHorizontalPointerDown', x)\n}\n\nexport const handleTouchStart = (touchEvent) => {\n RendererWorker.send('Editor.handleTouchStart', touchEvent)\n}\n\nexport const handleTouchMove = (touchEvent) => {\n RendererWorker.send('Editor.handleTouchMove', touchEvent)\n}\n\nexport const handleTouchEnd = (touchEvent) => {\n RendererWorker.send('Editor.handleTouchEnd', touchEvent)\n}\n\nexport const handleBeforeInputFromContentEditable = (data, range) => {\n RendererWorker.send('Editor.handleBeforeInputFromContentEditable', data, range)\n}\n", "// TODO so many things in this file\n\nimport * as ClipBoardData from '../ClipBoardData/ClipBoardData.js'\nimport * as DomEventOptions from '../DomEventOptions/DomEventOptions.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as Event from '../Event/Event.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as GetModifierKey from '../GetModifierKey/GetModifierKey.js'\nimport * as InputEventType from '../InputEventType/InputEventType.js'\nimport * as MouseEventType from '../MouseEventType/MouseEventType.js'\nimport * as TouchEvent from '../TouchEvent/TouchEvent.js'\nimport * as WheelEventType from '../WheelEventType/WheelEventType.js'\nimport * as EditorFunctions from './EditorFunctions.js'\n\n// TODO go back to edit mode after pressing escape so screenreaders can navigate https://stackoverflow.com/questions/53909477/how-to-handle-tabbing-for-accessibility-with-a-textarea-that-uses-the-tab-button\n\n// TODO tree shake out mobile support when targeting electron -> less code -> less event listeners -> less memory -> less cpu\n\nexport const handleContextMenu = (event) => {\n Event.preventDefault(event)\n const { button, clientX, clientY } = event\n EditorFunctions.handleContextMenu(button, clientX, clientY)\n}\n\nexport const handleFocus = (event) => {\n Focus.setFocus('EditorText')\n}\n\nexport const handleBlur = (event) => {\n // needed for save on blur\n // also needed to close completions on blur\n EditorFunctions.handleBlur()\n}\n\n/**\n *\n * @param {InputEvent} event\n */\nexport const handleBeforeInput = (event) => {\n Event.preventDefault(event)\n const { inputType, data } = event\n switch (inputType) {\n case InputEventType.InsertText:\n EditorFunctions.typeWithAutoClosing(data)\n break\n default:\n break\n }\n // if (!event.data) {\n // return\n // }\n}\n\n// TODO composition should be better supported,\n// for example\n// - gedit draws a line below the composed text\n// - codemirror 6 also draws that line\n// - codemirror 5 also draws that line\n// - vscode does not draw a line, but displays characters during composition\n\nexport const handleCompositionStart = (event) => {\n const { data } = event\n EditorFunctions.compositionStart(data)\n}\n\nexport const handleCompositionUpdate = (event) => {\n const { data } = event\n EditorFunctions.compositionUpdate(data)\n}\n\nexport const handleCompositionEnd = (event) => {\n const { data } = event\n EditorFunctions.compositionEnd(data)\n}\n\nexport const handleCut = (event) => {\n Event.preventDefault(event)\n EditorFunctions.cut()\n}\n\nconst isRightClick = (event) => {\n return event.button === MouseEventType.RightClick\n}\n\nexport const handleEditorPointerMove = (event) => {\n const { clientX, clientY, altKey } = event\n // TODO if/else should be in renderer worker\n if (altKey) {\n EditorFunctions.moveRectangleSelectionPx(clientX, clientY)\n } else {\n EditorFunctions.moveSelectionPx(clientX, clientY)\n }\n}\n\nexport const handleEditorLostPointerCapture = (event) => {\n const { target } = event\n target.removeEventListener(DomEventType.PointerMove, handleEditorPointerMove)\n target.removeEventListener(DomEventType.LostPointerCapture, handleEditorLostPointerCapture)\n EditorFunctions.handlePointerCaptureLost()\n}\n\nexport const handleEditorGotPointerCapture = () => {}\n\n/**\n *\n * @param {PointerEvent} event\n */\nexport const handleEditorPointerDown = (event) => {\n const { target, pointerId } = event\n // @ts-ignore\n target.setPointerCapture(pointerId)\n // @ts-ignore\n target.addEventListener(DomEventType.PointerMove, handleEditorPointerMove, DomEventOptions.Active)\n // @ts-ignore\n target.addEventListener(DomEventType.LostPointerCapture, handleEditorLostPointerCapture)\n}\n\nexport const handleMouseDown = (event) => {\n if (isRightClick(event)) {\n return\n }\n Event.preventDefault(event)\n const { clientX, clientY, detail } = event\n const modifier = GetModifierKey.getModifierKey(event)\n EditorFunctions.handleMouseDown(modifier, clientX, clientY, detail)\n}\n\n// TODO figure out whether it is possible to register hover provider without mousemove\n// mousemove handler is called very often and could slow down editor / drain battery\n\n/**\n *\n * @param {WheelEvent} event\n */\nexport const handleWheel = (event) => {\n const { deltaMode, deltaX, deltaY } = event\n // event.preventDefault()\n // const state = EditorHelper.getStateFromEvent(event)\n // TODO send editor id\n EditorFunctions.setDelta(deltaMode, deltaX, deltaY)\n}\n\nexport const handlePaste = (event) => {\n Event.preventDefault(event)\n const { clipboardData } = event\n const text = ClipBoardData.getText(clipboardData)\n EditorFunctions.paste(text)\n}\n\n/**\n *\n * @param {PointerEvent} event\n */\nexport const handleScrollBarThumbVerticalPointerMove = (event) => {\n const { clientY } = event\n EditorFunctions.handleScrollBarVerticalMove(clientY)\n}\n\n/**\n *\n * @param {PointerEvent} event\n */\nexport const handleScrollBarVerticalPointerUp = (event) => {\n const { target, pointerId } = event\n // @ts-ignore\n target.releasePointerCapture(pointerId)\n // @ts-ignore\n target.removeEventListener(DomEventType.PointerMove, handleScrollBarThumbVerticalPointerMove)\n // @ts-ignore\n target.removeEventListener(DomEventType.PointerUp, handleScrollBarVerticalPointerUp)\n}\n\n/**\n *\n * @param {PointerEvent} event\n */\nexport const handleScrollBarVerticalPointerDown = (event) => {\n const { target, pointerId, clientY } = event\n // @ts-ignore\n target.setPointerCapture(pointerId)\n // @ts-ignore\n target.addEventListener(DomEventType.PointerMove, handleScrollBarThumbVerticalPointerMove, DomEventOptions.Active)\n // TODO use pointerlost event instead\n // @ts-ignore\n target.addEventListener(DomEventType.PointerUp, handleScrollBarVerticalPointerUp)\n EditorFunctions.handleScrollBarVerticalPointerDown(clientY)\n}\n\n/**\n *\n * @param {PointerEvent} event\n */\nexport const handleScrollBarThumbHorizontalPointerMove = (event) => {\n const { clientX } = event\n EditorFunctions.handleScrollBarHorizontalMove(clientX)\n}\n\n/**\n *\n * @param {PointerEvent} event\n */\nexport const handleScrollBarHorizontalPointerUp = (event) => {\n const { target, pointerId } = event\n // @ts-ignore\n target.releasePointerCapture(pointerId)\n // @ts-ignore\n target.removeEventListener(DomEventType.PointerMove, handleScrollBarThumbHorizontalPointerMove)\n // @ts-ignore\n target.removeEventListener(DomEventType.PointerUp, handleScrollBarHorizontalPointerUp)\n}\n\n/**\n *\n * @param {PointerEvent} event\n */\nexport const handleScrollBarHorizontalPointerDown = (event) => {\n const { target, pointerId, clientX } = event\n // @ts-ignore\n target.setPointerCapture(pointerId)\n // @ts-ignore\n target.addEventListener(DomEventType.PointerMove, handleScrollBarThumbHorizontalPointerMove, DomEventOptions.Active)\n // TODO use pointerlost event instead\n // @ts-ignore\n target.addEventListener(DomEventType.PointerUp, handleScrollBarHorizontalPointerUp)\n EditorFunctions.handleScrollBarHorizontalPointerDown(clientX)\n}\n\nexport const handleScrollBarContextMenu = (event) => {\n Event.preventDefault(event)\n Event.stopPropagation(event)\n}\n\n// TODO add touch cancel handler\n\n// TODO use touch events for scrolling\n\nexport const handleTouchStart = (event) => {\n const touchEvent = TouchEvent.toSimpleTouchEvent(event)\n EditorFunctions.handleTouchStart(touchEvent)\n}\n\nexport const handleTouchMove = (event) => {\n const touchEvent = TouchEvent.toSimpleTouchEvent(event)\n EditorFunctions.handleTouchMove(touchEvent)\n}\n\nexport const handleTouchEnd = (event) => {\n if (event.cancelable) {\n Event.preventDefault(event)\n }\n const touchEvent = TouchEvent.toSimpleTouchEvent(event)\n EditorFunctions.handleTouchEnd(touchEvent)\n}\n\nconst getRangeFromSelection = (selection) => {\n if (!selection.anchorNode) {\n return undefined\n }\n const $StartToken = selection.anchorNode.parentNode\n const $EndToken = selection.focusNode.parentNode\n const $StartRow = $StartToken.parentNode\n const $EndRow = $EndToken.parentNode\n const $Rows = $StartRow.parentNode\n let startRowIndex = 0\n for (let i = 0; i < $Rows.children.length; i++) {\n if ($Rows.children[i] === $StartRow) {\n startRowIndex = i\n break\n }\n }\n let startColumnIndex = 0\n for (let i = 0; i < $StartRow.children.length; i++) {\n if ($StartRow.children[i] === $StartToken) {\n break\n }\n startColumnIndex += $StartRow.children[i].textContent.length\n }\n startColumnIndex += selection.anchorOffset\n let endRowIndex = 0\n for (let i = 0; i < $Rows.children.length; i++) {\n if ($Rows.children[i] === $EndRow) {\n endRowIndex = i\n break\n }\n }\n let endColumnIndex = 0\n for (let i = 0; i < $EndRow.children.length; i++) {\n if ($EndRow.children[i] === $EndToken) {\n break\n }\n endColumnIndex += $EndRow.children[i].textContent.length\n }\n endColumnIndex += selection.focusOffset\n return {\n startRowIndex,\n startColumnIndex,\n endRowIndex,\n endColumnIndex,\n }\n}\n\nexport const handleContentEditableBeforeInput = (event) => {\n const selection = document.getSelection()\n const range = getRangeFromSelection(selection)\n if (!range) {\n console.error('[Editor] cannot handle input event without selection')\n return\n }\n EditorFunctions.handleBeforeInputFromContentEditable(event.data || '', range)\n}\n\nexport const handleNativeSelectionChange = (event) => {\n // if (state.shouldIgnoreSelectionChange) {\n // state.shouldIgnoreSelectionChange = false\n // return\n // }\n // const selection = document.getSelection()\n // const range = getRangeFromSelection(selection)\n // if (!range) {\n // return\n // }\n // RendererWorker.send(\n // /* EditorHandleNativeSelectionChange.editorHandleNativeSelectionChange */ 'Editor.handleNativeSelectionChange',\n // /* range */ range\n // )\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Logger from '../Logger/Logger.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\n\nconst create$Cursor = () => {\n const $Cursor = document.createElement('div')\n $Cursor.className = 'EditorCursor'\n return $Cursor\n}\n\nconst render$Cursor = ($Cursor, cursors, i) => {\n const x = cursors[i]\n const y = cursors[i + 1]\n SetBounds.setXAndYTransform($Cursor, x, y)\n}\n\nconst render$CursorsLess = ($Cursors, childCount, cursors, cursorCount) => {\n for (let i = 0, j = 0; i < childCount; i++, j += 2) {\n render$Cursor($Cursors.children[i], cursors, j)\n }\n const fragment = document.createDocumentFragment()\n for (let i = childCount; i < cursorCount; i++) {\n const $Cursor = create$Cursor()\n render$Cursor($Cursor, cursors, i)\n fragment.append($Cursor)\n }\n $Cursors.append(fragment)\n}\n\nconst render$CursorsEqual = ($Cursors, childCount, cursors, cursorCount) => {\n for (let i = 0; i < cursorCount; i++) {\n render$Cursor($Cursors.children[i], cursors, i)\n }\n}\n\nconst render$CursorsMore = ($Cursors, childCount, cursors, cursorCount) => {\n for (let i = 0; i < cursorCount; i++) {\n render$Cursor($Cursors.children[i], cursors, i)\n }\n const diff = childCount - cursorCount\n for (let i = 0; i < diff; i++) {\n $Cursors.lastChild.remove()\n }\n}\n\nconst render$Cursors = ($Cursors, cursors) => {\n const cursorCount = cursors.length / 2\n const childCount = $Cursors.children.length\n if (childCount < cursorCount) {\n render$CursorsLess($Cursors, childCount, cursors, cursorCount)\n } else if (childCount === cursorCount) {\n render$CursorsEqual($Cursors, childCount, cursors, cursorCount)\n } else {\n render$CursorsMore($Cursors, childCount, cursors, cursorCount)\n }\n}\n\nconst renderCursorsNative = (state, cursors) => {\n if (cursors.length > 1) {\n Logger.warn('[editor] cannot render more than one native cursor')\n return\n }\n if (cursors.length === 0) {\n return\n }\n const cursor = cursors[0]\n const $Rows = state.$LayerText\n const $StartRow = $Rows.children[cursor.rowIndex]\n let startOffset = 0\n let $Anchor\n for (let i = 0; i < $StartRow.children.length; i++) {\n if (startOffset >= cursor.columnIndex) {\n $Anchor = $StartRow.children[i - 1].firstChild\n startOffset -= $Anchor.textContent.length\n startOffset = cursor.columnIndex - startOffset\n break\n }\n startOffset += $StartRow.children[i].textContent.length\n }\n if (!$Anchor) {\n $Anchor = $StartRow.children[$StartRow.children.length - 1].firstChild\n startOffset -= $Anchor.textContent.length\n startOffset = cursor.columnIndex - startOffset\n }\n const selection = document.getSelection()\n if (\n selection.anchorNode === $Anchor &&\n selection.focusNode === $Anchor &&\n selection.anchorOffset === startOffset &&\n selection.focusOffset === startOffset\n ) {\n return\n }\n state.shouldIgnoreSelectionChange = true\n const documentRange = document.createRange()\n documentRange.setStart($Anchor, startOffset)\n documentRange.setEnd($Anchor, startOffset)\n selection.removeAllRanges()\n selection.addRange(documentRange)\n}\n\nexport const setCursors = (state, cursors) => {\n Assert.float32Array(cursors)\n render$Cursors(state.$LayerCursor, cursors)\n}\n", "import * as SetBounds from '../SetBounds/SetBounds.js'\n\nconst create$Diagnostic = () => {\n const $Diagnostic = document.createElement('div')\n $Diagnostic.className = 'EditorDiagnostic'\n return $Diagnostic\n}\n\nconst render$Diagnostic = ($Diagnostic, diagnostic) => {\n SetBounds.setBounds($Diagnostic, diagnostic.left, diagnostic.top, diagnostic.width, diagnostic.height)\n}\n\nconst render$DiagnosticsLess = ($Diagnostics, diagnostics) => {\n for (let i = 0; i < $Diagnostics.children.length; i++) {\n render$Diagnostic($Diagnostics.children[i], diagnostics[i])\n }\n const fragment = document.createDocumentFragment()\n for (let i = $Diagnostics.children.length; i < diagnostics.length; i++) {\n const $Diagnostic = create$Diagnostic()\n render$Diagnostic($Diagnostic, diagnostics[i])\n fragment.append($Diagnostic)\n }\n $Diagnostics.append(fragment)\n}\n\nconst render$DiagnosticsEqual = ($Diagnostics, diagnostics) => {\n for (let i = 0; i < diagnostics.length; i++) {\n render$Diagnostic($Diagnostics.children[i], diagnostics[i])\n }\n}\n\nconst render$DiagnosticsMore = ($Diagnostics, diagnostics) => {\n for (let i = 0; i < diagnostics.length; i++) {\n render$Diagnostic($Diagnostics.children[i], diagnostics[i])\n }\n const diff = $Diagnostics.children.length - diagnostics.length\n for (let i = 0; i < diff; i++) {\n $Diagnostics.lastChild.remove()\n }\n}\n\nconst render$Diagnostics = ($Diagnostics, diagnostics) => {\n if ($Diagnostics.children.length < diagnostics.length) {\n render$DiagnosticsLess($Diagnostics, diagnostics)\n } else if ($Diagnostics.children.length === diagnostics.length) {\n render$DiagnosticsEqual($Diagnostics, diagnostics)\n } else {\n render$DiagnosticsMore($Diagnostics, diagnostics)\n }\n}\n\nexport const setDiagnostics = (state, diagnostics) => {\n render$Diagnostics(state.$LayerDiagnostics, diagnostics)\n}\n", "import * as SetBounds from '../SetBounds/SetBounds.js'\n\nexport const setPosition = (state, scrollBarY, scrollBarHeight) => {\n const { $ScrollBarThumbVertical } = state\n SetBounds.setYAndHeight($ScrollBarThumbVertical, scrollBarY, scrollBarHeight)\n}\n\nexport const setScrollBarHorizontal = (state, scrollBarX, scrollBarWidth, deltaX) => {\n const { $ScrollBarThumbHorizontal, $EditorLayers } = state\n SetBounds.setXAndWidth($ScrollBarThumbHorizontal, scrollBarX, scrollBarWidth)\n // SetBounds.setX($EditorLayers, -deltaX)\n}\n\n// TODO scrollbar decorations should be own layer maybe\nconst create$ScrollBarDiagnostic = () => {\n const $ScrollBarDiagnostic = document.createElement('div')\n $ScrollBarDiagnostic.className = 'ScrollBarDiagnostic'\n return $ScrollBarDiagnostic\n}\n\nconst render$ScrollBarDiagnostic = ($ScrollBarDiagnostic, scrollBarDiagnostic) => {\n SetBounds.setTop($ScrollBarDiagnostic, scrollBarDiagnostic.top)\n}\n\nconst render$ScrollBarDiagnosticsLess = ($ScrollBarDiagnostics, scrollBarDiagnostics) => {\n for (let i = 0; i < $ScrollBarDiagnostics.children.length; i++) {\n render$ScrollBarDiagnostic($ScrollBarDiagnostics.children[i], scrollBarDiagnostics[i])\n }\n const fragment = document.createDocumentFragment()\n for (let i = $ScrollBarDiagnostics.children.length; i < scrollBarDiagnostics.length; i++) {\n const $ScrollBarDiagnostic = create$ScrollBarDiagnostic()\n render$ScrollBarDiagnostic($ScrollBarDiagnostic, scrollBarDiagnostics[i])\n fragment.append($ScrollBarDiagnostic)\n }\n $ScrollBarDiagnostics.append(fragment)\n}\n\nconst render$ScrollBarDiagnosticsEqual = ($ScrollBarDiagnostics, scrollBarDiagnostics) => {\n for (let i = 0; i < scrollBarDiagnostics.length; i++) {\n render$ScrollBarDiagnostic($ScrollBarDiagnostics.children[i], scrollBarDiagnostics[i])\n }\n}\n\nconst render$ScrollBarDiagnosticsMore = ($ScrollBarDiagnostics, scrollBarDiagnostics) => {\n for (let i = 0; i < scrollBarDiagnostics.length; i++) {\n render$ScrollBarDiagnostic($ScrollBarDiagnostics.children[i], scrollBarDiagnostics[i])\n }\n const diff = $ScrollBarDiagnostics.children.length - scrollBarDiagnostics.length\n for (let i = 0; i < diff; i++) {\n $ScrollBarDiagnostics.lastChild.remove()\n }\n}\n\nconst render$ScrollBarDiagnostics = ($ScrollBarDiagnostics, scrollBarDiagnostics) => {\n if ($ScrollBarDiagnostics.children.length < scrollBarDiagnostics.length) {\n render$ScrollBarDiagnosticsLess($ScrollBarDiagnostics, scrollBarDiagnostics)\n } else if ($ScrollBarDiagnostics.children.length === scrollBarDiagnostics.length) {\n render$ScrollBarDiagnosticsEqual($ScrollBarDiagnostics, scrollBarDiagnostics)\n } else {\n render$ScrollBarDiagnosticsMore($ScrollBarDiagnostics, scrollBarDiagnostics)\n }\n}\n\nexport const setDiagnostics = (editor, scrollBarDiagnostics) => {\n render$ScrollBarDiagnostics(editor.$ScrollBarDiagnostics, scrollBarDiagnostics)\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Logger from '../Logger/Logger.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\n\nconst create$Selection = () => {\n const $Selection = document.createElement('div')\n $Selection.className = 'EditorSelection'\n return $Selection\n}\n\nconst render$Selection = ($Selection, selections, i) => {\n Assert.object($Selection)\n Assert.number(i)\n\n const x = selections[i * 4]\n const y = selections[i * 4 + 1]\n const width = selections[i * 4 + 2]\n const height = selections[i * 4 + 3]\n // TODO have many decorations per row\n // no absolute positioning\n SetBounds.setBounds($Selection, x, y, width, height)\n}\n\nconst render$SelectionsLess = ($Selections, childCount, selections, selectionCount) => {\n for (let i = 0, j = 0; i < childCount; i++, j += 4) {\n render$Selection($Selections.children[i], selections, i)\n }\n const fragment = document.createDocumentFragment()\n for (let i = childCount; i < selectionCount; i++) {\n const $Selection = create$Selection()\n render$Selection($Selection, selections, i)\n fragment.append($Selection)\n }\n $Selections.append(fragment)\n}\n\nconst render$SelectionsEqual = ($Selections, childCount, selections, selectionCount) => {\n for (let i = 0; i < selectionCount; i++) {\n render$Selection($Selections.children[i], selections, i)\n }\n}\n\nconst render$SelectionsMore = ($Selections, childCount, selections, selectionCount) => {\n for (let i = 0; i < selectionCount; i++) {\n render$Selection($Selections.children[i], selections, i)\n }\n const diff = childCount - selectionCount\n for (let i = 0; i < diff; i++) {\n $Selections.lastChild.remove()\n }\n}\n\nconst render$Selections = ($Selections, selections) => {\n const selectionsCount = selections.length / 4\n const childCount = $Selections.children.length\n if (childCount < selectionsCount) {\n render$SelectionsLess($Selections, childCount, selections, selectionsCount)\n } else if (childCount === selectionsCount) {\n render$SelectionsEqual($Selections, childCount, selections, selectionsCount)\n } else {\n render$SelectionsMore($Selections, childCount, selections, selectionsCount)\n }\n}\n\nconst renderSelectionsNative = (state, selections) => {\n if (selections.length > 1) {\n Logger.warn('[editor] cannot render more than one native selection')\n }\n}\n\nexport const setSelections = (state, selections) => {\n render$Selections(state.$LayerSelections, selections)\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\n\nconst create$Row = () => {\n const $Row = document.createElement('div')\n $Row.className = 'EditorRow'\n return $Row\n}\n\nconst create$Token = () => {\n const $Token = document.createElement('span')\n $Token.className = 'Token'\n return $Token\n}\n\n// TODO maybe use createTextNode (codeMirror uses that)\n// This function seems to be a hot spot\nconst render$Token = ($Token, text, className) => {\n $Token.className = className\n if ($Token.firstChild) {\n // recycle text node\n $Token.firstChild.nodeValue = text\n } else {\n $Token.textContent = text\n }\n}\n\nconst render$LineLess = ($Line, lineInfo) => {\n let i = 0\n while (i < $Line.children.length * 2) {\n const text = lineInfo[i++]\n const className = lineInfo[i++]\n render$Token($Line.children[i / 2 - 1], text, className)\n }\n const fragment = document.createDocumentFragment()\n while (i < lineInfo.length) {\n const text = lineInfo[i++]\n const className = lineInfo[i++]\n const $Token = create$Token()\n render$Token($Token, text, className)\n fragment.append($Token)\n }\n $Line.append(fragment)\n}\n\nconst render$LineEqual = ($Line, lineInfo) => {\n let i = 0\n while (i < lineInfo.length) {\n const text = lineInfo[i++]\n const className = lineInfo[i++]\n render$Token($Line.children[i / 2 - 1], text, className)\n }\n}\n\nconst render$LineMore = ($Line, lineInfo) => {\n let i = 0\n while (i < lineInfo.length) {\n const text = lineInfo[i++]\n const className = lineInfo[i++]\n render$Token($Line.children[i / 2 - 1], text, className)\n }\n const diff = $Line.children.length - lineInfo.length / 2\n for (let i = lineInfo.length; i < lineInfo.length + diff; i++) {\n $Line.lastChild.remove()\n }\n}\n\nconst render$Line = ($Line, lineInfo, difference) => {\n if ($Line.children.length < lineInfo.length / 2) {\n render$LineLess($Line, lineInfo)\n } else if ($Line.children.length === lineInfo.length / 2) {\n render$LineEqual($Line, lineInfo)\n } else {\n render$LineMore($Line, lineInfo)\n }\n SetBounds.setX($Line, difference)\n}\n\nconst render$LinesLess = ($Lines, lineInfos, differences) => {\n for (let i = 0; i < $Lines.children.length; i++) {\n render$Line($Lines.children[i], lineInfos[i], differences[i])\n }\n const fragment = document.createDocumentFragment()\n for (let i = $Lines.children.length; i < lineInfos.length; i++) {\n const $Line = create$Row()\n render$Line($Line, lineInfos[i], differences[i])\n fragment.append($Line)\n }\n $Lines.append(fragment)\n}\n\nconst render$LinesEqual = ($Lines, lineInfos, differences) => {\n for (let i = 0; i < lineInfos.length; i++) {\n render$Line($Lines.children[i], lineInfos[i], differences[i])\n }\n}\n\nconst render$LinesMore = ($Lines, lineInfos, differences) => {\n for (let i = 0; i < lineInfos.length; i++) {\n render$Line($Lines.children[i], lineInfos[i], differences[i])\n }\n const diff = $Lines.children.length - lineInfos.length\n for (let i = lineInfos.length; i < lineInfos.length + diff; i++) {\n $Lines.lastChild.remove()\n }\n}\n\nconst render$Lines = ($Lines, lineInfos, differences) => {\n Assert.object($Lines)\n Assert.array(lineInfos)\n if ($Lines.children.length < lineInfos.length) {\n render$LinesLess($Lines, lineInfos, differences)\n } else if ($Lines.children.length === lineInfos.length) {\n render$LinesEqual($Lines, lineInfos, differences)\n } else {\n render$LinesMore($Lines, lineInfos, differences)\n }\n}\n\nexport const setLineInfos = (state, lineInfos, differences) => {\n Assert.object(state)\n Assert.array(lineInfos)\n Assert.array(differences)\n render$Lines(state.$LayerText, lineInfos, differences)\n}\n", "// TODO so many things in this file\n\nimport * as AriaAutoCompleteType from '../AriaAutoCompleteType/AriaAutoCompleteType.js'\nimport * as AriaBoolean from '../AriaBoolean/AriaBoolean.js'\nimport * as AriaRoleDescriptionType from '../AriaRoleDescriptionType/AriaRoleDescriptionType.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as DomEventOptions from '../DomEventOptions/DomEventOptions.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as Logger from '../Logger/Logger.js'\nimport * as EditorEvents from './EditorEvents.js'\nimport * as LayerCursor from './LayerCursor.js'\nimport * as LayerDiagnostics from './LayerDiagnostics.js'\nimport * as LayerScrollBar from './LayerScrollBar.js'\nimport * as LayerSelections from './LayerSelections.js'\nimport * as LayerText3 from './LayerText.js'\n\n// TODO go back to edit mode after pressing escape so screenreaders can navigate https://stackoverflow.com/questions/53909477/how-to-handle-tabbing-for-accessibility-with-a-textarea-that-uses-the-tab-button\n\n// TODO tree shake out mobile support when targeting electron -> less code -> less event listeners -> less memory -> less cpu\n\n// TODO all create functions should have no arguments\n// and be split into two parts\n// 1. create -> only create dom elements\n// 2. render -> fill elements with attributes and data\n// that way all dom nodes can be recycled\nexport const create = () => {\n const $EditorInput = document.createElement('textarea')\n $EditorInput.className = 'EditorInput'\n $EditorInput.ariaAutoComplete = AriaAutoCompleteType.List\n $EditorInput.ariaRoleDescription = AriaRoleDescriptionType.Editor\n $EditorInput.ariaMultiLine = AriaBoolean.True\n $EditorInput.setAttribute('autocomplete', 'off')\n $EditorInput.setAttribute('autocapitalize', 'off')\n $EditorInput.setAttribute('autocorrect', 'off')\n $EditorInput.setAttribute('wrap', 'off')\n $EditorInput.setAttribute('spellcheck', AriaBoolean.False)\n $EditorInput.role = AriaRoles.TextBox\n $EditorInput.onpaste = EditorEvents.handlePaste\n // TODO where to best put listeners (side effects)\n $EditorInput.addEventListener(DomEventType.BeforeInput, EditorEvents.handleBeforeInput)\n $EditorInput.addEventListener(DomEventType.CompositionStart, EditorEvents.handleCompositionStart)\n $EditorInput.addEventListener(DomEventType.CompositionUpdate, EditorEvents.handleCompositionUpdate)\n $EditorInput.addEventListener(DomEventType.CompositionEnd, EditorEvents.handleCompositionEnd)\n $EditorInput.onfocus = EditorEvents.handleFocus\n $EditorInput.onblur = EditorEvents.handleBlur\n $EditorInput.oncut = EditorEvents.handleCut\n\n const $LayerCursor = document.createElement('div')\n $LayerCursor.className = 'LayerCursor'\n\n const $LayerText = document.createElement('div')\n $LayerText.className = 'EditorRows'\n\n $LayerText.addEventListener(DomEventType.MouseDown, EditorEvents.handleMouseDown)\n $LayerText.addEventListener(DomEventType.PointerDown, EditorEvents.handleEditorPointerDown)\n\n const $ScrollBarThumbVertical = document.createElement('div')\n $ScrollBarThumbVertical.className = 'ScrollBarThumbVertical'\n\n // TODO only create $ScrollBarDiagnostics lazily when there are actually diagnostics\n const $ScrollBarDiagnostics = document.createElement('div')\n $ScrollBarDiagnostics.className = 'EditorScrollBarDiagnostics'\n\n const $ScrollBarVertical = document.createElement('div')\n $ScrollBarVertical.className = 'ScrollBarVertical'\n $ScrollBarVertical.onpointerdown = EditorEvents.handleScrollBarVerticalPointerDown\n $ScrollBarVertical.oncontextmenu = EditorEvents.handleScrollBarContextMenu\n $ScrollBarVertical.append($ScrollBarThumbVertical)\n\n const $ScrollBarThumbHorizontal = document.createElement('div')\n $ScrollBarThumbHorizontal.className = 'ScrollBarThumbHorizontal'\n\n const $ScrollBarHorizontal = document.createElement('div')\n $ScrollBarHorizontal.className = 'ScrollBarHorizontal'\n $ScrollBarHorizontal.append($ScrollBarThumbHorizontal)\n $ScrollBarHorizontal.onpointerdown = EditorEvents.handleScrollBarHorizontalPointerDown\n\n // $EditorRows.addEventListener('mousemove', handleMouseMove, { passive: true })\n\n // TODO function should be hoisted (maybe -> one listener for all editors (definitely))\n // only problem is $EditorInput closure\n\n // TODO when mousedown on completions -> this shouldn't be called\n\n const $LayerSelections = document.createElement('div')\n $LayerSelections.className = 'Selections'\n\n // TODO maybe use css grid to position layers on top of each other\n // TODO maybe merge layerDiagnostics with LayerSelections\n // TODO maybe this should be more generic, e.g. LayerDecorations\n // where decoration = {top,left, width, height, type/className}\n const $LayerDiagnostics = document.createElement('div')\n $LayerDiagnostics.className = 'LayerDiagnostics'\n\n const $EditorLayers = document.createElement('div')\n $EditorLayers.className = 'EditorLayers'\n $EditorLayers.append($LayerSelections, $LayerText, $LayerCursor, $LayerDiagnostics)\n\n const $Editor = document.createElement('div')\n $Editor.className = 'Viewlet Editor'\n $Editor.role = AriaRoles.Code\n $Editor.append($EditorInput, $EditorLayers, $ScrollBarDiagnostics, $ScrollBarVertical, $ScrollBarHorizontal)\n $Editor.addEventListener(DomEventType.ContextMenu, EditorEvents.handleContextMenu)\n $Editor.addEventListener(DomEventType.Wheel, EditorEvents.handleWheel, DomEventOptions.Passive)\n $Editor.addEventListener(DomEventType.MouseMove, EditorEvents.handlePointerMove, DomEventOptions.Passive)\n return {\n $LayerCursor,\n $LayerSelections,\n $LayerText,\n $EditorLayers,\n $Editor,\n $EditorInput,\n $ScrollBarThumbVertical,\n $ScrollBarThumbHorizontal,\n $LayerDiagnostics,\n $ScrollBarDiagnostics,\n shouldIgnoreSelectionChange: false,\n $Viewlet: $Editor,\n }\n}\n\nexport const setText = (state, textInfos, differences) => {\n LayerText3.setLineInfos(state, textInfos, differences)\n}\n\nexport const setSettings = (state, fontSize, lineHeight, letterSpacing) => {\n // TODO many properties on <html> element in chrome devtools looks ugly\n // maybe put styles into a stylesheet instead of using inline styles?\n const root = document.documentElement\n root.style.setProperty('--EditorFontSize', `${fontSize}px`)\n root.style.setProperty('--EditorLineHeight', `${lineHeight}px`)\n root.style.setProperty('--EditorLetterSpacing', `${letterSpacing}px`)\n}\n\nexport const setScrollBar = (state, scrollBarY, scrollBarHeight) => {\n LayerScrollBar.setPosition(state, scrollBarY, scrollBarHeight)\n}\n\nexport const setScrollBarHorizontal = LayerScrollBar.setScrollBarHorizontal\n\nexport const renderCursors = (state, cursorInfos) => {\n LayerCursor.setCursors(state, cursorInfos)\n}\n\nexport const renderSelections = (state, selectionInfos) => {\n LayerSelections.setSelections(state, selectionInfos)\n}\n\nexport const renderTextAndCursors = (state, textInfos, cursorInfos) => {\n LayerText3.setLineInfos(state, textInfos)\n LayerCursor.setCursors(state, cursorInfos)\n}\n\nexport const setSelections = (state, cursorInfos, selectionInfos) => {\n Assert.float32Array(cursorInfos)\n Assert.float32Array(selectionInfos)\n LayerCursor.setCursors(state, cursorInfos)\n LayerSelections.setSelections(state, selectionInfos)\n}\n\nexport const renderTextAndCursorsAndSelections = (state, scrollBarY, scrollBarHeight, textInfos, cursorInfos, selectionInfos) => {\n Assert.object(state)\n Assert.number(scrollBarY)\n Assert.number(scrollBarHeight)\n Assert.array(textInfos)\n Assert.array(cursorInfos)\n Assert.array(selectionInfos)\n LayerScrollBar.setPosition(state, scrollBarY, scrollBarHeight)\n LayerText3.setLineInfos(state, textInfos)\n LayerCursor.setCursors(state, cursorInfos)\n LayerSelections.setSelections(state, selectionInfos)\n}\n\nexport const mount = (state, $Parent) => {\n $Parent.append(state.$Editor)\n}\n\nexport const dispose = (state) => {}\n\nexport const focus = (state) => {\n const { $EditorInput } = state\n if (!$EditorInput.isConnected) {\n Logger.warn('unmounted editor cannot be focused')\n }\n $EditorInput.focus()\n}\n\nexport const setLanguageId = async (state, languageId) => {\n // state.languageId = languageId\n // state.$Editor.dataset.languageId = languageId\n // loadTokenizer(languageId)\n}\n\nexport const renderDiagnostics = (state, diagnostics, scrollBarDiagnostics) => {\n LayerDiagnostics.setDiagnostics(state, diagnostics)\n LayerScrollBar.setDiagnostics(state, scrollBarDiagnostics)\n}\n", "import * as Editor from '../Editor/Editor.js'\nimport * as Logger from '../Logger/Logger.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\nimport * as Widget from '../Widget/Widget.js'\n\nexport const create = Editor.create\n\nexport const setText = Editor.setText\n\nexport const setSelections = Editor.setSelections\n\nexport const handleError = (state, error) => {\n state.$Viewlet.textContent = error\n}\n\nexport const setScrollBar = Editor.setScrollBar\n\nexport const setScrollBarHorizontal = Editor.setScrollBarHorizontal\n\nexport const highlightAsLink = (state, relativeY, tokenIndex) => {\n const $Row = state.$LayerText.children[relativeY]\n if (!$Row) {\n Logger.info('no row found')\n return\n }\n const $Token = $Row.children[tokenIndex + 1]\n $Token.classList.add('EditorGoToDefinitionLink')\n}\n\nexport const showOverlayMessage = (state, x, y, content) => {\n const $OverLayMessage = document.createElement('div')\n $OverLayMessage.className = 'EditorOverlayMessage'\n $OverLayMessage.style.position = 'fixed'\n $OverLayMessage.textContent = content\n SetBounds.setXAndY($OverLayMessage, x, y)\n Widget.append($OverLayMessage)\n}\n\nexport const hideOverlayMessage = (state) => {\n // TODO pass id of the overlay message and remove widget by id\n for (const $Widget of Widget.state.widgetSet) {\n if ($Widget.className === 'EditorOverlayMessage') {\n Widget.remove($Widget)\n }\n }\n}\n\nexport const focus = Editor.focus\n", "export const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.dataset.viewlet = 'Empty'\n $Viewlet.className = 'Viewlet'\n return {\n $Viewlet,\n }\n}\n\nexport const refresh = (state, context) => {}\n\nexport const focus = (state) => {}\n\nexport const dispose = (state) => {}\n", "export const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet Error'\n return {\n $Viewlet,\n }\n}\n\nexport const setMessage = (state, message) => {\n const { $Viewlet } = state\n $Viewlet.textContent = message\n}\n", "export const BlockDevice = 1\nexport const CharacterDevice = 2\nexport const Directory = 3\nexport const DirectoryExpanded = 4\nexport const DirectoryExpanding = 5\nexport const File = 6\nexport const Socket = 7\nexport const Symlink = 8\nexport const SymLinkFile = 9\nexport const SymLinkFolder = 10\nexport const Unknown = 11\n", "export const CopyMove = 'copyMove'\n", "export const TextPlain = 'text/plain'\nexport const TextUrl = 'text/url'\nexport const TextUriList = 'text/uri-list'\nexport const TextHtml = 'text/html'\nexport const Text = 'text'\nexport const ResourceUrls = 'resourceurls'\n", "import * as Platform from '../Platform/Platform.js'\nimport * as DataTransferType from '../DataTransferType/DataTransferType.js'\n\nexport const setEffectAllowed = (dataTransfer, effectAllowed) => {\n dataTransfer.effectAllowed = effectAllowed\n}\n\nexport const setDropEffect = (dataTransfer, dropEffect) => {\n dataTransfer.dropEffect = dropEffect\n}\n\nexport const setData = (dataTransfer, key, value) => {\n dataTransfer.setData(key, value)\n}\n\nexport const getData = (dataTransfer, key) => {\n return dataTransfer.getData(key)\n}\n\nexport const setFilePath = (dataTransfer, filePath, fileName) => {\n dataTransfer.setData(DataTransferType.ResourceUrls, JSON.stringify([filePath]))\n dataTransfer.setData(DataTransferType.Text, filePath)\n const dragImage = document.createElement('div')\n dragImage.className = 'DragImage'\n if (Platform.getBrowser() !== 'chromium') {\n // chrome doesn't support border radius\n dragImage.style.borderRadius = '100px'\n }\n dragImage.textContent = fileName\n document.body.append(dragImage)\n dataTransfer.setDragImage(dragImage, -10, -10)\n const handleTimeOut = () => {\n dragImage.remove()\n }\n setTimeout(handleTimeOut, 0)\n}\n\nexport const getFilePaths = (dataTransfer) => {\n const data = dataTransfer.getData(DataTransferType.ResourceUrls)\n if (data) {\n const parsed = JSON.parse(data)\n if (Array.isArray(parsed) && data.length > 0) {\n return parsed\n }\n }\n return []\n}\n\nexport const getFilePath = (dataTransfer) => {\n const filePaths = getFilePath(dataTransfer)\n if (filePaths.length === 0) {\n return ''\n }\n return filePaths[0]\n}\n", "export const Copy = 'copy'\n", "import * as Platform from '../Platform/Platform.js'\n\nexport const isFileSystemAccessNotSupportedOnFireFoxError = (error) => {\n return error instanceof TypeError && error.message === 'item.getAsFileSystemHandle is not a function' && Platform.getBrowser() === 'firefox'\n}\n", "import * as IsFileSystemAccessNotSupportedOnFireFoxError from '../IsFileSystemAccessNotSupportedOnFireFoxError/IsFileSystemAccessNotSupportedOnFirefoxError.js'\n\nconst getHandle = async (item) => {\n const entry = await item.getAsFileSystemHandle()\n return entry\n}\n\nexport const getFileHandles = async (items) => {\n try {\n const itemsArray = [...items]\n const handles = await Promise.all(itemsArray.map(getHandle))\n return handles\n } catch (error) {\n if (IsFileSystemAccessNotSupportedOnFireFoxError.isFileSystemAccessNotSupportedOnFireFoxError(error)) {\n throw new Error(`The File System Access Api is not supported on Firefox`)\n }\n throw error\n }\n}\n", "/**\n *\n * @param {EventTarget} object\n * @returns {object is HTMLElement}\n */\nexport const isHtmlElement = (object) => {\n return object instanceof HTMLElement\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const focus = () => {\n RendererWorker.send('Explorer.focus')\n}\n\nexport const handleBlur = () => {\n RendererWorker.send('Explorer.handleBlur')\n}\n\nexport const handleDragOver = (x, y) => {\n RendererWorker.send('Explorer.handleDragOver', x, y)\n}\n\nexport const handleDrop = (x, y, files) => {\n RendererWorker.send('Explorer.handleDrop', x, y, files)\n}\n\nexport const handleContextMenu = (button, x, y) => {\n RendererWorker.send('Explorer.handleContextMenu', button, x, y)\n}\n\nexport const handleClickAt = (x, y) => {\n RendererWorker.send('Explorer.handleClickAt', x, y)\n}\n\nexport const handleWheel = (deltaY) => {\n RendererWorker.send('Explorer.handleWheel', deltaY)\n}\n\nexport const updateEditingValue = (value) => {\n RendererWorker.send('Explorer.updateEditingValue', value)\n}\n\nexport const handlePointerDown = (button, x, y) => {\n RendererWorker.send('Explorer.handlePointerDown', button, x, y)\n}\n", "import * as AllowedDragEffectType from '../AllowedDragEffectType/AllowedDragEffectType.js'\nimport * as DataTransfer from '../DataTransfer/DataTransfer.js'\nimport * as DropEffectType from '../DropEffectType/DropEffectType.js'\nimport * as Event from '../Event/Event.js'\nimport * as Focus from '../Focus/Focus.js' // TODO focus is never needed at start -> use command.execute which lazy-loads focus module\nimport * as GetFileHandlesFromDataTransferItems from '../GetFileHandlesFromDataTransferItems/GetFileHandlesFromDataTransferItems.js'\nimport * as IsHtmlElement from '../IsHtmlElement/IsHtmlElement.js'\nimport * as MouseEventType from '../MouseEventType/MouseEventType.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as WheelEventType from '../WheelEventType/WheelEventType.js'\nimport * as ViewletExplorerFunctions from './ViewletExplorerFunctions.js'\n\n// TODO put drop into separate module and use executeCommand to call it\n\n// TODO drag and drop should be loaded on demand\nconst getAllEntries = async (dataTransfer) => {\n const topLevelEntries = Array.from(dataTransfer.items).map((item) => item.webkitGetAsEntry())\n const allEntries = await new Promise((resolve, reject) => {\n const result = []\n let finished = 0\n let total = 0\n\n const fileCallback = (file) => {\n finished++\n result.push({\n type: 1,\n // path: entry.fullPath,\n file,\n })\n if (finished === total) {\n resolve(result)\n }\n }\n\n const handleEntryFile = (entry) => {\n entry.file(fileCallback)\n }\n\n const entriesCallback = (childEntries) => {\n handleEntries(childEntries)\n finished++\n if (finished === total) {\n resolve(result)\n }\n }\n\n const handleEntryDirectory = (entry) => {\n result.push({\n type: 2,\n path: entry.fullPath,\n })\n const dirReader = entry.createReader()\n dirReader.readEntries(entriesCallback)\n }\n\n const handleEntries = (entries) => {\n total += entries.length\n for (const entry of entries) {\n if (entry.isFile) {\n handleEntryFile(entry)\n } else if (entry.isDirectory) {\n handleEntryDirectory(entry)\n } else {\n }\n }\n }\n\n handleEntries(topLevelEntries)\n })\n return allEntries\n}\n\nexport const handleFocus = (event) => {\n const { target, isTrusted } = event\n Focus.setFocus('Explorer')\n if (!isTrusted || target.className === 'InputBox') {\n return\n }\n ViewletExplorerFunctions.focus()\n}\n\nexport const handleBlur = (event) => {\n ViewletExplorerFunctions.handleBlur()\n}\n\n/**\n *\n * @param {DragEvent} event\n */\nexport const handleDragOver = (event) => {\n Event.preventDefault(event)\n const { dataTransfer, clientX, clientY } = event\n DataTransfer.setEffectAllowed(dataTransfer, AllowedDragEffectType.CopyMove)\n DataTransfer.setDropEffect(dataTransfer, DropEffectType.Copy)\n ViewletExplorerFunctions.handleDragOver(clientX, clientY)\n}\n\n/**\n * @param {DragEvent} event\n */\nexport const handleDragStart = (event) => {\n const { target, dataTransfer } = event\n if (!IsHtmlElement.isHtmlElement(target)) {\n return\n }\n const filePath = target.title\n const fileName = target.textContent\n DataTransfer.setEffectAllowed(dataTransfer, AllowedDragEffectType.CopyMove)\n DataTransfer.setFilePath(dataTransfer, filePath, fileName)\n}\n\nconst getPath = (file) => {\n return file.path\n}\n\nconst getFilePaths = (dataTransfer) => {\n const { files } = dataTransfer\n if (Platform.isElectron()) {\n return files.map(getPath)\n }\n const filePaths = DataTransfer.getFilePaths(dataTransfer)\n return filePaths\n}\n\n/**\n *\n * @param {DragEvent} event\n */\nexport const handleDrop = async (event) => {\n Event.preventDefault(event)\n Event.stopPropagation(event)\n const { clientX, clientY, dataTransfer } = event\n const { items } = dataTransfer\n const filePaths = getFilePaths(dataTransfer)\n if (filePaths.length > 0) {\n ViewletExplorerFunctions.handleDrop(clientX, clientY, filePaths)\n return\n }\n // unfortunately, DataTransferItem cannot be transferred to web worker\n // therefore the file system handles are sent to the web worker\n const handles = await GetFileHandlesFromDataTransferItems.getFileHandles(items)\n ViewletExplorerFunctions.handleDrop(clientX, clientY, handles)\n}\n\n// TODO maybe use aria active descendant instead\nconst getFocusedIndexFromFocusOutline = ($Viewlet) => {\n for (let i = 0; i < $Viewlet.children.length; i++) {\n const $Child = $Viewlet.children[i]\n if ($Child.classList.contains('FocusOutline')) {\n return i\n }\n }\n return -1\n}\n\nexport const handleContextMenu = (event) => {\n Event.preventDefault(event)\n const { button, clientX, clientY } = event\n ViewletExplorerFunctions.handleContextMenu(button, clientX, clientY)\n}\n\nexport const handleClick = (event) => {\n Event.preventDefault(event)\n const { button, clientX, clientY } = event\n if (button !== MouseEventType.LeftClick) {\n return\n }\n ViewletExplorerFunctions.handleClickAt(clientX, clientY)\n}\n\nexport const handleWheel = (event) => {\n const { deltaMode, deltaY } = event\n switch (deltaMode) {\n case WheelEventType.DomDeltaLine:\n case WheelEventType.DomDeltaPixel:\n ViewletExplorerFunctions.handleWheel(deltaY)\n break\n default:\n break\n }\n}\n\nexport const handlePointerDown = (event) => {\n const { button, clientX, clientY } = event\n ViewletExplorerFunctions.handlePointerDown(button, clientX, clientY)\n}\n\nexport const handleMouseEnter = (event) => {\n // const $Target = event.target\n // const index = findIndex($Target)\n // if (index === -1) {\n // return\n // }\n // RendererWorker.send(\n // /* Explorer.handleMouseEnter */ 'Explorer.handleMouseEnter',\n // /* index */ index\n // )\n}\n\nexport const handleMouseLeave = (event) => {\n // const $Target = event.target\n // const index = findIndex($Target)\n // if (index === -1) {\n // return\n // }\n // RendererWorker.send(\n // /* Explorer.handleMouseLeave */ 'Explorer.handleMouseLeave',\n // /* index */ index\n // )\n}\n\nexport const handleEditingInput = (event) => {\n const { target } = event\n const { value } = target\n ViewletExplorerFunctions.updateEditingValue(value)\n}\n", "import * as AriaBoolean from '../AriaBoolean/AriaBoolean.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as DirentType from '../DirentType/DirentType.js'\nimport * as DomAttributeType from '../DomAttributeType/DomAttributeType.js'\nimport * as DomEventOptions from '../DomEventOptions/DomEventOptions.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as Focus from '../Focus/Focus.js' // TODO focus is never needed at start -> use command.execute which lazy-loads focus module\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as Label from '../Label/Label.js'\nimport * as ViewletExplorerEvents from './ViewletExplorerEvents.js'\n\nconst activeId = 'TreeItemActive'\nconst focusClassName = 'FocusOutline'\nconst defaultIndent = 1\n\nexport const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet Explorer'\n $Viewlet.tabIndex = 0\n $Viewlet.role = AriaRoles.Tree\n $Viewlet.ariaLabel = 'Files Explorer'\n return {\n $Viewlet,\n }\n}\n\nexport const attachEvents = (state) => {\n const { $Viewlet } = state\n $Viewlet.onclick = ViewletExplorerEvents.handleClick\n $Viewlet.oncontextmenu = ViewletExplorerEvents.handleContextMenu\n // TODO use the other mouse events that capture automatically\n $Viewlet.addEventListener(DomEventType.MouseEnter, ViewletExplorerEvents.handleMouseEnter, DomEventOptions.Capture)\n $Viewlet.addEventListener(DomEventType.MouseLeave, ViewletExplorerEvents.handleMouseLeave, DomEventOptions.Capture)\n $Viewlet.addEventListener(DomEventType.Wheel, ViewletExplorerEvents.handleWheel, DomEventOptions.Passive)\n $Viewlet.onblur = ViewletExplorerEvents.handleBlur\n $Viewlet.ondragover = ViewletExplorerEvents.handleDragOver\n $Viewlet.ondragstart = ViewletExplorerEvents.handleDragStart\n $Viewlet.ondrop = ViewletExplorerEvents.handleDrop\n $Viewlet.onfocus = ViewletExplorerEvents.handleFocus\n $Viewlet.onpointerdown = ViewletExplorerEvents.handlePointerDown\n}\n\nconst create$Row = () => {\n const $Row = document.createElement('div')\n $Row.role = AriaRoles.TreeItem\n $Row.className = 'TreeItem'\n $Row.draggable = true\n const $Label = Label.create('')\n const $Icon = document.createElement('i')\n $Row.append($Icon, $Label)\n return $Row\n}\n\n// TODO rename to renderDirent\nconst render$Row = ($Row, rowInfo) => {\n const $Icon = $Row.childNodes[0]\n const $LabelText = $Row.childNodes[1].childNodes[0]\n $Icon.className = `FileIcon${rowInfo.icon}`\n $LabelText.data = rowInfo.name\n $Row.title = rowInfo.path\n $Row.ariaSetSize = `${rowInfo.setSize}`\n // TODO bug with windows narrator\n // windows narrator reads heading level 1\n $Row.ariaLevel = `${rowInfo.depth}`\n $Row.ariaPosInSet = `${rowInfo.posInSet}`\n $Row.style.paddingLeft = `${rowInfo.depth * defaultIndent}rem`\n $Row.ariaLabel = rowInfo.name\n $Row.ariaDescription = ''\n switch (rowInfo.type) {\n // TODO decide on directory vs folder\n case DirentType.Directory:\n $Row.ariaExpanded = AriaBoolean.False\n break\n case DirentType.DirectoryExpanding:\n $Row.ariaExpanded = AriaBoolean.True // TODO tree should be aria-busy then\n break\n case DirentType.DirectoryExpanded:\n $Row.ariaExpanded = AriaBoolean.True\n break\n case DirentType.File:\n $Row.ariaExpanded = undefined\n break\n default:\n break\n }\n}\n\nconst render$RowsLess = ($Rows, rowInfos) => {\n for (let i = 0; i < $Rows.children.length; i++) {\n render$Row($Rows.children[i], rowInfos[i])\n }\n const fragment = document.createDocumentFragment()\n for (let i = $Rows.children.length; i < rowInfos.length; i++) {\n const $Row = create$Row()\n render$Row($Row, rowInfos[i])\n fragment.append($Row)\n }\n $Rows.append(fragment)\n}\n\nconst render$RowsEqual = ($Rows, rowInfos) => {\n for (let i = 0; i < rowInfos.length; i++) {\n render$Row($Rows.children[i], rowInfos[i])\n }\n}\n\nconst render$RowsMore = ($Rows, rowInfos) => {\n for (let i = 0; i < rowInfos.length; i++) {\n render$Row($Rows.children[i], rowInfos[i])\n }\n const diff = $Rows.children.length - rowInfos.length\n for (let i = 0; i < diff; i++) {\n $Rows.lastChild.remove()\n }\n}\n\nconst render$Rows = ($Rows, rowInfos) => {\n if ($Rows.children.length < rowInfos.length) {\n render$RowsLess($Rows, rowInfos)\n } else if ($Rows.children.length === rowInfos.length) {\n render$RowsEqual($Rows, rowInfos)\n } else {\n render$RowsMore($Rows, rowInfos)\n }\n}\n\nexport const handleError = (state, message) => {\n Assert.object(state)\n Assert.string(message)\n const { $Viewlet } = state\n $Viewlet.textContent = message\n}\n\nexport const updateDirents = (state, dirents) => {\n Assert.object(state)\n Assert.array(dirents)\n const { $Viewlet } = state\n render$Rows($Viewlet, dirents)\n}\n\nexport const setFocusedIndex = (state, oldIndex, newIndex, focused) => {\n Assert.object(state)\n Assert.number(oldIndex)\n Assert.number(newIndex)\n const { $Viewlet } = state\n switch (oldIndex) {\n case -2:\n break\n case -1:\n $Viewlet.classList.remove(focusClassName)\n break\n default:\n const $Dirent = $Viewlet.children[oldIndex]\n if ($Dirent) {\n $Dirent.classList.remove(focusClassName)\n $Dirent.removeAttribute('id')\n }\n break\n }\n switch (newIndex) {\n case -2:\n $Viewlet.classList.remove(focusClassName)\n $Viewlet.removeAttribute(DomAttributeType.AriaActiveDescendant)\n break\n case -1:\n if (focused) {\n $Viewlet.classList.add(focusClassName)\n $Viewlet.removeAttribute(DomAttributeType.AriaActiveDescendant)\n }\n break\n default:\n if (newIndex >= 0) {\n const $Dirent = $Viewlet.children[newIndex]\n if (!$Dirent) {\n break\n }\n $Dirent.id = activeId\n $Viewlet.setAttribute(DomAttributeType.AriaActiveDescendant, activeId)\n if (focused) {\n $Dirent.classList.add(focusClassName)\n }\n }\n break\n }\n if (focused) {\n $Viewlet.focus()\n Focus.setFocus('Explorer')\n }\n}\n\nexport const dispose = (state) => {}\n\nexport const hoverIndex = (state, oldIndex, newIndex) => {\n Assert.object(state)\n Assert.number(oldIndex)\n Assert.number(newIndex)\n if (oldIndex !== -1) {\n const $OldItem = state.$Viewlet.children[oldIndex]\n $OldItem.classList.remove('Hover')\n }\n const $NewItem = state.$Viewlet.children[newIndex]\n $NewItem.classList.add('Hover')\n}\n\nexport const replaceWithEditBox = (state, index, value) => {\n const { $Viewlet } = state\n const $InputBox = InputBox.create()\n $InputBox.value = value\n $InputBox.oninput = ViewletExplorerEvents.handleEditingInput\n const $Dirent = $Viewlet.children[index]\n if ($Dirent) {\n const $Label = $Dirent.children[1]\n $Label.replaceWith($InputBox)\n } else {\n const $Dirent = document.createElement('div')\n $Dirent.className = 'ExplorerItem'\n $Dirent.append($InputBox)\n $Viewlet.append($Dirent)\n }\n $InputBox.select()\n $InputBox.setSelectionRange(0, value.length)\n $InputBox.focus()\n Focus.setFocus('ExplorerEditBox')\n}\n\nexport const insertEditBox = (state, index, value) => {\n const { $Viewlet } = state\n const $InputBox = InputBox.create()\n $InputBox.value = value\n $InputBox.oninput = ViewletExplorerEvents.handleEditingInput\n if (index === -1) {\n $Viewlet.append($InputBox)\n } else {\n const $Dirent = $Viewlet.children[index]\n // TODO this should never happen\n if (!$Dirent) {\n throw new Error(`dirent at index ${index} should be defined`)\n }\n $Dirent.before($InputBox)\n }\n $InputBox.select()\n $InputBox.setSelectionRange(0, value.length)\n $InputBox.focus()\n Focus.setFocus('ExplorerEditBox')\n}\n\nexport const hideEditBox = (state, index) => {\n Assert.object(state)\n Assert.number(index)\n const { $Viewlet } = state\n if (index === -1) {\n const $InputBox = $Viewlet.lastChild\n $InputBox.remove()\n return $InputBox.value\n }\n const $InputBox = $Viewlet.children[index]\n $InputBox.remove()\n}\n\nexport const replaceEditBox = (state, index, dirent) => {\n Assert.object(state)\n Assert.number(index)\n const { $Viewlet } = state\n const $OldRow = $Viewlet.children[index]\n const $Dirent = create$Row()\n $Dirent.id = activeId\n render$Row($Dirent, dirent)\n $OldRow.replaceWith($Dirent)\n $Viewlet.focus()\n Focus.setFocus('Explorer')\n}\n\nexport const setDropTargets = (state, oldDropTargets, newDropTargets) => {\n const { $Viewlet } = state\n for (const oldIndex of oldDropTargets) {\n if (oldIndex === -1) {\n $Viewlet.classList.remove('DropTarget')\n } else {\n $Viewlet.children[oldIndex].classList.remove('DropTarget')\n }\n }\n for (const newIndex of newDropTargets) {\n if (newIndex === -1) {\n $Viewlet.classList.add('DropTarget')\n } else {\n $Viewlet.children[newIndex].classList.add('DropTarget')\n }\n }\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleReadmeContextMenu = (x, y, props) => {\n RendererWorker.send('ExtensionDetail.handleReadmeContextMenu', x, y, props)\n}\n\nexport const handleIconError = () => {\n RendererWorker.send('ExtensionDetail.handleIconError')\n}\n", "import * as Event from '../Event/Event.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as ViewletExtensionDetailFunctions from './ViewletExtensionDetailFunctions.js'\n\nexport const handleIconError = (event) => {\n ViewletExtensionDetailFunctions.handleIconError()\n}\n\nconst isLink = ($Element) => {\n return $Element.nodeName === 'A'\n}\n\nconst isImage = ($Element) => {\n return $Element.nodeName === 'IMG'\n}\n\nexport const handleReadmeContextMenu = (event) => {\n Event.preventDefault(event)\n const { clientX, clientY, target } = event\n const props = Object.create(null)\n if (isLink(target)) {\n props.isLink = true\n props.url = target.href\n } else if (isImage(target)) {\n props.isImage = true\n props.url = target.src\n }\n ViewletExtensionDetailFunctions.handleReadmeContextMenu(clientX, clientY, props)\n}\n", "import * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as ViewletExtensionDetailEvents from './ViewletExtensionDetailEvents.js'\n\nexport const create = () => {\n const $NameText = document.createTextNode('')\n\n const $ReadmeHtml = document.createElement('div')\n $ReadmeHtml.className = 'Markdown'\n $ReadmeHtml.role = AriaRoles.Document\n\n const $ExtensionDetailIcon = document.createElement('img')\n $ExtensionDetailIcon.className = 'ExtensionDetailIcon'\n $ExtensionDetailIcon.alt = ''\n $ExtensionDetailIcon.draggable = false\n $ExtensionDetailIcon.width = 150\n $ExtensionDetailIcon.height = 150\n\n const $Name = document.createElement('h3')\n $Name.className = 'ExtensionDetailName'\n $Name.append($NameText)\n\n const $Description = document.createElement('div')\n $Description.className = 'ExtensionDetailDescription'\n\n const $ExtensionDetailHeaderDetails = document.createElement('div')\n $ExtensionDetailHeaderDetails.className = 'ExtensionDetailHeaderDetails'\n $ExtensionDetailHeaderDetails.append($Name, $Description)\n\n const $ExtensionDetailHeader = document.createElement('div')\n $ExtensionDetailHeader.className = 'ExtensionDetailHeader'\n $ExtensionDetailHeader.append($ExtensionDetailIcon, $ExtensionDetailHeaderDetails)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet ExtensionDetail'\n $Viewlet.append($ExtensionDetailHeader, $ReadmeHtml)\n return {\n $Viewlet,\n $Name,\n $NameText,\n $ReadmeHtml,\n $ExtensionDetailIcon,\n $Description,\n }\n}\n\nexport const attachEvents = (state) => {\n const { $ReadmeHtml, $ExtensionDetailIcon } = state\n $ReadmeHtml.oncontextmenu = ViewletExtensionDetailEvents.handleReadmeContextMenu\n $ExtensionDetailIcon.onerror = ViewletExtensionDetailEvents.handleIconError\n}\n\nexport const setName = (state, name) => {\n const { $NameText } = state\n $NameText.nodeValue = name\n}\n\nexport const setReadmeHtml = (state, sanitizedHtml) => {\n const { $ReadmeHtml } = state\n $ReadmeHtml.innerHTML = sanitizedHtml\n}\n\nexport const setIconSrc = (state, src) => {\n const { $ExtensionDetailIcon } = state\n // TODO handle error and load fallback icon\n $ExtensionDetailIcon.src = src\n}\n\nexport const setDescription = (state, description) => {\n const { $Description } = state\n $Description.textContent = description\n}\n\nexport * from '../ViewletSizable/ViewletSizable.js'\n", "export const Polite = 'polite'\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\n/**\n * @param {number} y\n */\nexport const handleScrollBarClick = (y) => {\n RendererWorker.send('Extensions.handleScrollBarClick', y)\n}\n\n/**\n * @param {number} index\n */\nexport const handleClick = (index) => {\n RendererWorker.send('Extensions.handleClick', index)\n}\n\n/**\n *\n * @param {number} deltaY\n */\nexport const handleWheel = (deltaMode, deltaY) => {\n RendererWorker.send('Extensions.handleWheel', deltaMode, deltaY)\n}\n\n/**\n * @param {string} value\n */\nexport const handleInput = (value) => {\n RendererWorker.send('Extensions.handleInput', value)\n}\n\n/**\n *\n * @param {number} timeStamp\n * @param {*} changedTouchesArray\n */\nexport const handleTouchMove = (timeStamp, changedTouchesArray) => {\n RendererWorker.send('Extensions.handleTouchMove', timeStamp, changedTouchesArray)\n}\n\n/**\n *\n * @param {number} timeStamp\n * @param {*} changedTouchesArray\n */\nexport const handleTouchStart = (timeStamp, changedTouchesArray) => {\n RendererWorker.send('Extensions.handleTouchStart', timeStamp, changedTouchesArray)\n}\n\n/**\n *\n */\nexport const handleTouchEnd = (changedTouchesArray) => {\n RendererWorker.send('Extensions.handleTouchEnd', changedTouchesArray)\n}\n\n/**\n *\n */\nexport const handleContextMenu = (button, clientX, clientY) => {\n RendererWorker.send('Extensions.handleContextMenu', button, clientX, clientY)\n}\n\nexport const handleScrollBarThumbPointerMove = (y) => {\n RendererWorker.send('Extensions.handleScrollBarMove', y)\n}\n", "import * as DomEventOptions from '../DomEventOptions/DomEventOptions.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as Event from '../Event/Event.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as Icon from '../Icon/Icon.js'\nimport * as MouseEventType from '../MouseEventType/MouseEventType.js'\nimport * as ViewletExtensionsFunctions from './ViewletExtensionsFunctions.js'\n\nexport const handleScrollBarThumbPointerMove = (event) => {\n const { clientY } = event\n ViewletExtensionsFunctions.handleScrollBarThumbPointerMove(clientY)\n}\n\nconst handleScrollBarPointerCaptureLost = (event) => {\n const { target } = event\n target.removeEventListener(DomEventType.PointerMove, handleScrollBarThumbPointerMove)\n}\n\nexport const handleScrollBarPointerDown = (event) => {\n const { target, pointerId, clientY } = event\n target.setPointerCapture(pointerId)\n target.addEventListener(DomEventType.PointerMove, handleScrollBarThumbPointerMove, DomEventOptions.Active)\n target.addEventListener(DomEventType.LostPointerCapture, handleScrollBarPointerCaptureLost)\n ViewletExtensionsFunctions.handleScrollBarClick(clientY)\n}\n\nexport const handleFocus = (event) => {\n Focus.setFocus('Extensions')\n}\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst handlePointerDownExtension = ($Target) => {\n const index = getNodeIndex($Target)\n ViewletExtensionsFunctions.handleClick(index)\n}\n\nconst handlePointerDownExtensionDetail = ($Target) => {\n const index = getNodeIndex($Target.parentNode.parentNode)\n ViewletExtensionsFunctions.handleClick(index)\n}\n\nconst handlePointerDownExtensionAuthorName = ($Target) => {\n const index = getNodeIndex($Target.parentNode.parentNode.parentNode)\n ViewletExtensionsFunctions.handleClick(index)\n}\n\nexport const handlePointerDown = (event) => {\n const { target, button } = event\n if (button !== MouseEventType.LeftClick) {\n return\n }\n switch (target.className) {\n case 'ExtensionListItem':\n handlePointerDownExtension(target)\n break\n case 'ExtensionListItemName':\n case 'ExtensionListItemDescription':\n case 'ExtensionListItemFooter':\n handlePointerDownExtensionDetail(target)\n break\n case 'ExtensionListItemAuthorName':\n handlePointerDownExtensionAuthorName(target)\n break\n default:\n break\n }\n}\n\nexport const handleContextMenu = (event) => {\n Event.preventDefault(event)\n const { button, clientX, clientY } = event\n ViewletExtensionsFunctions.handleContextMenu(button, clientX, clientY)\n}\n\nexport const handleWheel = (event) => {\n const { deltaMode, deltaY } = event\n ViewletExtensionsFunctions.handleWheel(deltaMode, deltaY)\n}\n\nexport const handleInput = (event) => {\n const $Target = event.target\n const value = $Target.value\n ViewletExtensionsFunctions.handleInput(value)\n // TODO\n // TODO use beforeinput event to set value and extension list items at the same time\n // state.$Viewlet.ariaBusy = 'true'\n}\n\nexport const handleIconError = (event) => {\n const $Target = event.target\n if ($Target.src.endsWith(Icon.ExtensionDefaultIcon)) {\n return\n }\n $Target.src = Icon.ExtensionDefaultIcon\n}\n\nexport const handleScroll = (event) => {}\n\n/**\n *\n * @param {TouchList} touchList\n */\nconst toArray = (touchList) => {\n const touchArray = []\n // @ts-ignore\n for (const item of touchList) {\n touchArray.push({\n clientX: item.clientX,\n clientY: item.clientY,\n identifier: item.identifier,\n })\n }\n return touchArray\n}\n\n/**\n * @param {TouchEvent} event\n */\nexport const handleTouchMove = (event) => {\n const { changedTouches, timeStamp } = event\n const changedTouchesArray = toArray(changedTouches)\n ViewletExtensionsFunctions.handleTouchMove(timeStamp, changedTouchesArray)\n}\n\n/**\n * @param {TouchEvent} event\n */\nexport const handleTouchStart = (event) => {\n const { changedTouches, timeStamp } = event\n const changedTouchesArray = toArray(changedTouches)\n ViewletExtensionsFunctions.handleTouchStart(timeStamp, changedTouchesArray)\n}\n\n/**\n * @param {TouchEvent} event\n */\nexport const handleTouchEnd = (event) => {\n const { changedTouches } = event\n const changedTouchesArray = toArray(changedTouches)\n ViewletExtensionsFunctions.handleTouchEnd(changedTouchesArray)\n}\n", "// based on https://github.com/microsoft/vscode/blob/main/src/vs/workbench/contrib/extensions/browser/extensionsList.ts (License MIT)\n\nimport * as FindIndex from '../../shared/findIndex.js'\nimport * as AriaBoolean from '../AriaBoolean/AriaBoolean.js'\nimport * as AriaLiveType from '../AriaLiveType/AriaLiveType.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as DomAttributeType from '../DomAttributeType/DomAttributeType.js'\nimport * as DomEventOptions from '../DomEventOptions/DomEventOptions.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\nimport * as ViewletExtensionsEvents from './ViewletExtensionsEvents.js'\nimport * as AriaRoleDescriptionType from '../AriaRoleDescriptionType/AriaRoleDescriptionType.js'\n\nconst activeId = 'ExtensionActive'\n\n// TODO vscode uninstall behaviour is better -> more subtle uninstall -> no cta for uninstalling\n\nconst create$ExtensionSuggestions = () => {\n const $ExtensionSuggestions = document.createElement('div')\n $ExtensionSuggestions.className = 'ExtensionSuggestions'\n return $ExtensionSuggestions\n}\n\nconst create$ExtensionSuggestion = (item) => {}\n\nconst findIndex = ($Target) => {\n if ($Target.className.includes('ExtensionListItem')) {\n return FindIndex.findIndex($Target.parentNode, $Target)\n }\n if ($Target.classList.contains('Viewlet')) {\n return -1\n }\n return findIndex($Target.parentNode)\n // return -2\n}\n\nexport const create = () => {\n const $InputBox = InputBox.create()\n $InputBox.type = 'search'\n $InputBox.placeholder = 'Search Extensions in Marketplace'\n\n const $ExtensionHeader = document.createElement('div')\n $ExtensionHeader.className = 'ExtensionHeader'\n $ExtensionHeader.append($InputBox)\n\n // TODO handle error\n const $ListItems = document.createElement('div')\n $ListItems.className = 'ListItems'\n $ListItems.tabIndex = 0\n $ListItems.ariaLabel = 'Extensions'\n $ListItems.role = AriaRoles.List\n\n const $ScrollBarThumb = document.createElement('div')\n $ScrollBarThumb.className = 'ScrollBarThumb'\n\n const $ScrollBar = document.createElement('div')\n $ScrollBar.className = 'ScrollBarSmall'\n $ScrollBar.append($ScrollBarThumb)\n\n const $List = document.createElement('div')\n $List.className = 'Viewlet List'\n $List.append($ListItems, $ScrollBar)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet Extensions'\n $Viewlet.ariaLive = AriaLiveType.Polite\n $Viewlet.ariaBusy = AriaBoolean.True\n $Viewlet.role = AriaRoles.None\n $Viewlet.append($ExtensionHeader, $List)\n\n return {\n $Viewlet,\n $List,\n $ListItems,\n $InputBox,\n $ExtensionSuggestions: undefined,\n $ScrollBarThumb,\n $ScrollBar,\n $Message: undefined,\n }\n}\n\nexport const attachEvents = (state) => {\n const { $InputBox, $ListItems, $ScrollBar } = state\n $InputBox.oninput = ViewletExtensionsEvents.handleInput\n\n $ListItems.oncontextmenu = ViewletExtensionsEvents.handleContextMenu\n if (Platform.isMobile) {\n $ListItems.onclick = ViewletExtensionsEvents.handlePointerDown\n } else {\n $ListItems.onpointerdown = ViewletExtensionsEvents.handlePointerDown\n }\n $ListItems.onfocus = ViewletExtensionsEvents.handleFocus\n $ListItems.onscroll = ViewletExtensionsEvents.handleScroll\n $ListItems.addEventListener(DomEventType.TouchStart, ViewletExtensionsEvents.handleTouchStart, DomEventOptions.Passive)\n $ListItems.addEventListener(DomEventType.TouchMove, ViewletExtensionsEvents.handleTouchMove, DomEventOptions.Passive)\n $ListItems.addEventListener(DomEventType.TouchEnd, ViewletExtensionsEvents.handleTouchEnd, DomEventOptions.Passive)\n $ListItems.addEventListener(DomEventType.Wheel, ViewletExtensionsEvents.handleWheel, DomEventOptions.Passive)\n\n $ScrollBar.onpointerdown = ViewletExtensionsEvents.handleScrollBarPointerDown\n}\n\n// TODO possibly use aria active descendant instead\nexport const setFocusedIndex = (state, oldFocusedIndex, newFocusedIndex, focused) => {\n Assert.object(state)\n Assert.number(oldFocusedIndex)\n Assert.number(newFocusedIndex)\n const { $ListItems } = state\n const { length } = $ListItems.children\n if (oldFocusedIndex === -1) {\n $ListItems.classList.remove('FocusOutline')\n } else if (oldFocusedIndex >= 0 && oldFocusedIndex < length) {\n $ListItems.children[oldFocusedIndex].removeAttribute('id')\n }\n if (newFocusedIndex === -1) {\n if (focused) {\n $ListItems.removeAttribute(DomAttributeType.AriaActiveDescendant)\n $ListItems.classList.add('FocusOutline')\n }\n } else if (newFocusedIndex >= 0 && newFocusedIndex < length) {\n $ListItems.children[newFocusedIndex].id = activeId\n $ListItems.setAttribute(DomAttributeType.AriaActiveDescendant, activeId)\n }\n if (focused) {\n $ListItems.focus()\n Focus.setFocus('Extensions')\n }\n}\n\nexport const focus = (state) => {\n Assert.object(state)\n state.$InputBox.focus()\n}\n\nexport const setExtensionState = (state, id, extensionState) => {\n // const index = state.extensions.findIndex((extension) => extension.id === id)\n // if (index === -1) {\n // return\n // }\n // state.extensions[index].state = extensionState\n // render(state)\n}\n\nexport const setMessage = (state, message) => {\n Assert.object(state)\n Assert.string(message)\n const { $List, $ListItems, $ScrollBar } = state\n if (!message) {\n $List.replaceChildren($ListItems, $ScrollBar)\n state.$Message = undefined\n return\n }\n const $Message = document.createElement('div')\n $Message.className = 'ViewletExtensionMessage'\n $Message.textContent = message\n $List.replaceChildren($Message)\n state.$Message = $Message\n}\n\nconst render$Extension = ($Extension, extension) => {\n const $ExtensionDetailName = $Extension.children[1].children[0]\n const $ExtensionDetailDescription = $Extension.children[1].children[1]\n const $ExtensionAuthorName = $Extension.children[1].children[2].children[0]\n const $ExtensionIcon = $Extension.children[0]\n\n $Extension.ariaPosInSet = extension.posInSet\n $Extension.ariaSetSize = extension.setSize\n $Extension.dataset.state = extension.state\n $Extension.dataset.id = extension.id\n SetBounds.setTop($Extension, extension.top)\n\n $ExtensionDetailName.firstChild.nodeValue = extension.name\n $ExtensionDetailDescription.firstChild.nodeValue = extension.description\n $ExtensionAuthorName.firstChild.nodeValue = extension.publisher\n $ExtensionIcon.src = extension.icon\n}\n\n// TODO test that rendering and recycling text nodes works\nconst create$Extension = () => {\n const $ExtensionDetailName = document.createElement('div')\n $ExtensionDetailName.className = 'ExtensionListItemName'\n $ExtensionDetailName.append(document.createTextNode(''))\n const $ExtensionDetailDescription = document.createElement('div')\n $ExtensionDetailDescription.className = 'ExtensionListItemDescription'\n $ExtensionDetailDescription.append(document.createTextNode(''))\n const $ExtensionActions = document.createElement('div')\n $ExtensionActions.className = 'ExtensionActions'\n const $ExtensionActionInstall = document.createElement('div')\n $ExtensionActionInstall.className = 'ExtensionActionInstall'\n $ExtensionActionInstall.textContent = 'Install'\n const $ExtensionActionManage = document.createElement('button')\n $ExtensionActionManage.className = 'ExtensionListItemActionManage'\n $ExtensionActionManage.title = 'Manage'\n $ExtensionActionManage.ariaHasPopup = 'menu' // TODO also set this for global settings icon in activity bar\n const $ExtensionAuthorName = document.createElement('div')\n $ExtensionAuthorName.className = 'ExtensionListItemAuthorName'\n $ExtensionAuthorName.append(document.createTextNode(''))\n\n const icon = document.createElement('img')\n icon.width = 42\n icon.height = 42\n icon.className = 'ExtensionListItemIcon'\n icon.onerror = ViewletExtensionsEvents.handleIconError\n const buttonManage = document.createElement('button')\n buttonManage.className = 'ExtensionManage'\n // switch (extension.state) {\n // case 'uninstalled':\n // $ExtensionActionManage.remove()\n // $ExtensionActions.append($ExtensionActionInstall)\n // break\n // case 'uninstalling':\n // buttonManage.textContent = 'uninstalling'\n // break\n // case 'installing':\n // buttonManage.textContent = 'installing'\n // break\n // case 'installed':\n // $ExtensionActions.append($ExtensionActionManage)\n // break\n // case 'disabled':\n // $ExtensionActions.append($ExtensionActionManage)\n // break\n // default:\n // break\n // }\n const $ExtensionFooter = document.createElement('div')\n $ExtensionFooter.className = 'ExtensionListItemFooter'\n $ExtensionFooter.append($ExtensionAuthorName, $ExtensionActions)\n const $ExtensionDetail = document.createElement('div')\n $ExtensionDetail.className = 'ExtensionListItemDetail'\n $ExtensionDetail.append($ExtensionDetailName, $ExtensionDetailDescription, $ExtensionFooter)\n const $ExtensionListItem = document.createElement('div')\n $ExtensionListItem.role = AriaRoles.Article\n $ExtensionListItem.ariaRoleDescription = AriaRoleDescriptionType.Extension\n $ExtensionListItem.className = 'ExtensionListItem'\n $ExtensionListItem.role = AriaRoles.ListItem\n $ExtensionListItem.append(icon, $ExtensionDetail)\n return $ExtensionListItem\n}\n\nconst render$ExtensionsLess = ($ExtensionList, extensions) => {\n for (let i = 0; i < $ExtensionList.children.length; i++) {\n render$Extension($ExtensionList.children[i], extensions[i])\n }\n const fragment = document.createDocumentFragment()\n for (let i = $ExtensionList.children.length; i < extensions.length; i++) {\n const $Extension = create$Extension()\n render$Extension($Extension, extensions[i])\n fragment.append($Extension)\n }\n $ExtensionList.append(fragment)\n}\n\nconst render$ExtensionsEqual = ($ExtensionList, extensions) => {\n for (let i = 0; i < extensions.length; i++) {\n render$Extension($ExtensionList.children[i], extensions[i])\n }\n}\n\nconst render$ExtensionsMore = ($ExtensionList, extensions) => {\n for (let i = 0; i < extensions.length; i++) {\n render$Extension($ExtensionList.children[i], extensions[i])\n }\n const diff = $ExtensionList.children.length - extensions.length\n for (let i = 0; i < diff; i++) {\n $ExtensionList.lastChild.remove()\n }\n}\n\nconst render$Extensions = ($ExtensionList, extensions) => {\n if ($ExtensionList.children.length < extensions.length) {\n render$ExtensionsLess($ExtensionList, extensions)\n } else if ($ExtensionList.children.length === extensions.length) {\n render$ExtensionsEqual($ExtensionList, extensions)\n } else {\n render$ExtensionsMore($ExtensionList, extensions)\n }\n}\n\n// TODO a more efficient approach would be\nexport const setExtensions = (state, extensions) => {\n Assert.object(state)\n Assert.array(extensions)\n const { $Viewlet, $ListItems } = state\n $Viewlet.removeAttribute(DomAttributeType.AriaBusy)\n render$Extensions($ListItems, extensions)\n}\n\nexport const dispose = (state) => {}\n\nexport const openSuggest = (state) => {\n // TODO maybe cache getBoundingClientRect (though it is not a bottleneck right now)\n // TODO getBoundingClientRect should not be needed, all positions should be known already in renderer worker\n const rect = state.$InputBox.getBoundingClientRect()\n const x = rect.left\n const y = rect.top\n // const x = state.$InputBox.offsetLeft\n // const y = state.$InputBox.offsetTop\n state.$ExtensionSuggestions ||= create$ExtensionSuggestions()\n SetBounds.setBounds(state.$ExtensionSuggestions, x, y, 100, 100)\n state.$ExtensionSuggestions.style.position = 'fixed'\n state.$ExtensionSuggestions.style.background = 'lime'\n // TODO check if already mounted\n // TODO don't append to body, have separate container for widgets (https://news.ycombinator.com/item?id=28230977)\n document.body.append(state.$ExtensionSuggestions)\n}\n\nexport const closeSuggest = (state) => {\n state.$ExtensionSuggestions.remove()\n}\n\nexport const handleError = (state, message) => {\n Assert.object(state)\n Assert.string(message)\n const { $ListItems } = state\n $ListItems.textContent = message\n}\n\nexport const setSearchValue = (state, oldValue, newValue) => {\n const { $InputBox } = state\n $InputBox.value = newValue\n}\n\nexport * from '../ViewletList/ViewletList.js'\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleInput = (value) => {\n RendererWorker.send('FindWidget.handleInput', value)\n}\n\nexport const close = () => {\n RendererWorker.send('Viewlet.closeWidget', 'FindWidget')\n}\n\nexport const focusPrevious = () => {\n RendererWorker.send('FindWidget.focusPrevious')\n}\n\nexport const focusNext = () => {\n RendererWorker.send('FindWidget.focusNext')\n}\n", "import * as Event from '../Event/Event.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as ViewletFindWidgetFunctions from './ViewletFindWidgetFunctions.js'\n\nexport const handleInput = (event) => {\n const { target } = event\n const { value } = target\n ViewletFindWidgetFunctions.handleInput(value)\n}\n\nconst handleClickClose = (event) => {\n Event.preventDefault(event)\n ViewletFindWidgetFunctions.close()\n}\n\nconst handleClickPreviousMatch = (event) => {\n event.preventDefault()\n ViewletFindWidgetFunctions.focusPrevious()\n}\n\nconst handleClickNextMatch = (event) => {\n event.preventDefault()\n ViewletFindWidgetFunctions.focusNext()\n}\n\nexport const handleClick = (event) => {\n const { target } = event\n const { title } = target\n switch (title) {\n case 'Close':\n handleClickClose(event)\n break\n case 'Previous Match':\n handleClickPreviousMatch(event)\n break\n case 'Next Match':\n handleClickNextMatch(event)\n break\n default:\n break\n }\n}\n\nexport const handleInputBlur = (event) => {\n Focus.setFocus('')\n}\n\nexport const handleFocus = (event) => {\n Focus.setFocus('FindWidget')\n}\n", "import * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as Icon from '../Icon/Icon.js'\nimport * as IconButton from '../IconButton/IconButton.js'\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as ViewletFindWidgetEvents from './ViewletFindWidgetEvents.js'\n\n/**\n * @enum {string}\n */\nconst UiStrings = {\n Close: 'Close',\n PreviousMatch: 'Previous Match',\n NextMatch: 'Next Match',\n Find: 'Find',\n}\n\nexport const create = () => {\n // TODO recycle nodes\n const $InputBox = InputBox.create()\n $InputBox.ariaLabel = UiStrings.Find\n\n const $MatchCountText = document.createTextNode('')\n const $MatchCount = document.createElement('div')\n $MatchCount.className = 'FindWidgetMatchCount'\n $MatchCount.append($MatchCountText)\n\n const $ButtonFocusNext = IconButton.create$Button(UiStrings.NextMatch, Icon.NextMatch)\n const $ButtonFocusPrevious = IconButton.create$Button(UiStrings.PreviousMatch, Icon.PreviousMatch)\n const $ButtonClose = IconButton.create$Button(UiStrings.Close, Icon.Close)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet FindWidget'\n $Viewlet.role = AriaRoles.Group\n $Viewlet.append($InputBox, $MatchCount, $ButtonFocusPrevious, $ButtonFocusNext, $ButtonClose)\n return {\n $Viewlet,\n $InputBox,\n $MatchCount,\n $MatchCountText,\n $ButtonClose,\n $ButtonFocusNext,\n $ButtonFocusPrevious,\n }\n}\n\nexport const attachEvents = (state) => {\n const { $InputBox, $Viewlet } = state\n $InputBox.oninput = ViewletFindWidgetEvents.handleInput\n $InputBox.onblur = ViewletFindWidgetEvents.handleInputBlur\n $InputBox.onfocus = ViewletFindWidgetEvents.handleFocus\n\n $Viewlet.onclick = ViewletFindWidgetEvents.handleClick\n}\n\nexport const focus = (state) => {\n const { $InputBox } = state\n $InputBox.focus()\n}\n\nexport const setValue = (state, value) => {\n const { $InputBox } = state\n $InputBox.value = value\n}\n\nexport const setMatchCountText = (state, value) => {\n const { $MatchCountText } = state\n $MatchCountText.nodeValue = value\n}\n\nexport const setButtonsEnabled = (state, enabled) => {\n const { $ButtonFocusNext, $ButtonFocusPrevious } = state\n $ButtonFocusNext.disabled = !enabled\n $ButtonFocusPrevious.disabled = !enabled\n}\n\nexport const dispose = () => {}\n", "import * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as MouseEventType from '../MouseEventType/MouseEventType.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as DomAttributeType from '../DomAttributeType/DomAttributeType.js'\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst handleLocationsMouseDown = (event) => {\n if (event.button !== MouseEventType.LeftClick) {\n return\n }\n const $Target = event.target\n if ($Target.classList.contains('TreeItem')) {\n const index = getNodeIndex($Target)\n RendererWorker.send(/* ViewletLocations.selectIndex */ 'Locations.selectIndex', /* index */ index)\n } else if ($Target.classList.contains('LocationList')) {\n RendererWorker.send(/* ViewletLocations.focusIndex */ 'Locations.focusIndex', /* index */ -1)\n }\n}\n\nexport const create = () => {\n const $Message = document.createElement('div')\n $Message.className = 'LocationsMessage'\n $Message.id = 'LocationsMessage'\n $Message.role = AriaRoles.Status\n const $Locations = document.createElement('div')\n $Locations.className = 'LocationList'\n $Locations.role = AriaRoles.Tree\n $Locations.ariaLabel = 'Locations'\n $Locations.tabIndex = 0\n $Locations.onmousedown = handleLocationsMouseDown\n $Locations.setAttribute(DomAttributeType.AriaDescribedBy, 'LocationsMessage')\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet Locations'\n $Viewlet.append($Message, $Locations)\n return {\n $Viewlet,\n $Message,\n $Locations,\n }\n}\n\nconst create$Location = () => {\n // TODO reuse logic from tree view\n const $Location = document.createElement('div')\n $Location.className = 'TreeItem'\n $Location.role = AriaRoles.TreeItem\n return $Location\n}\n\nconst render$Location = ($Location, location) => {\n switch (location.type) {\n case 'leaf':\n $Location.className = 'TreeItem'\n $Location.textContent = location.lineText || '(empty line)'\n $Location.ariaExpanded = undefined\n $Location.id = `Reference-${location.index}`\n break\n case 'collapsed':\n $Location.className = `TreeItem Icon${location.icon}`\n $Location.textContent = location.name\n $Location.ariaExpanded = false\n $Location.id = `Reference-${location.index}`\n case 'expanded':\n $Location.className = `TreeItem Icon${location.icon}`\n $Location.ariaExpanded = true\n $Location.textContent = location.name\n $Location.id = `Reference-${location.index}`\n default:\n break\n }\n\n // TODO\n}\n\nconst render$Locations = ($Locations, locations) => {\n $Locations.textContent = ''\n const fragment = document.createDocumentFragment()\n for (const location of locations) {\n const $Location = create$Location()\n render$Location($Location, location)\n fragment.append($Location)\n }\n $Locations.append(fragment)\n}\n\nexport const setLocations = (state, locations) => {\n const { $Locations } = state\n render$Locations($Locations, locations)\n}\n\nexport const setMessage = (state, message) => {\n const { $Message } = state\n $Message.textContent = message\n}\n\nexport const setFocusedIndex = (state, oldFocusedIndex, newFocusedIndex) => {\n const { $Locations } = state\n if (oldFocusedIndex === -1) {\n $Locations.classList.remove('FocusOutline')\n } else {\n $Locations.children[oldFocusedIndex].classList.remove('Focused')\n }\n if (newFocusedIndex === -1) {\n $Locations.classList.add('FocusOutline')\n } else {\n $Locations.setAttribute(DomAttributeType.AriaActiveDescendant, `Reference-${newFocusedIndex}`)\n $Locations.children[newFocusedIndex].classList.add('Focused')\n }\n}\n\nexport const handleError = (state, message) => {\n const { $Message } = state\n $Message.textContent = message\n}\n\nexport const focus = (state) => {\n const { $Locations } = state\n $Locations.classList.add('FocusOutline')\n $Locations.focus()\n Focus.setFocus('locationList')\n}\n", "export * from '../ViewletLocations/ViewletLocations.js'\n", "export const Button = 'button'\nexport const Col = 'col'\nexport const ColGroup = 'colgroup'\nexport const Div = 'div'\nexport const H1 = 'h1'\nexport const Input = 'input'\nexport const Kbd = 'kbd'\nexport const Span = 'span'\nexport const Table = 'table'\nexport const TBody = 'tbody'\nexport const Td = 'td'\nexport const Th = 'th'\nexport const THead = 'thead'\nexport const Tr = 'tr'\n", "export const Button = 1\nexport const Col = 2\nexport const ColGroup = 3\nexport const Div = 4\nexport const H1 = 5\nexport const Input = 6\nexport const Kbd = 7\nexport const Span = 8\nexport const Table = 9\nexport const TBody = 10\nexport const Td = 11\nexport const Text = 12\nexport const Th = 13\nexport const THead = 14\nexport const Tr = 15\n", "import * as ElementTag from '../ElementTags/ElementTags.js'\nimport * as VirtualDomElements from '../VirtualDomElements/VirtualDomElements.js'\n\nexport const getElementTag = (type) => {\n switch (type) {\n case VirtualDomElements.H1:\n return ElementTag.H1\n case VirtualDomElements.Div:\n return ElementTag.Div\n case VirtualDomElements.Kbd:\n return ElementTag.Kbd\n case VirtualDomElements.Table:\n return ElementTag.Table\n case VirtualDomElements.TBody:\n return ElementTag.TBody\n case VirtualDomElements.Th:\n return ElementTag.Th\n case VirtualDomElements.Td:\n return ElementTag.Td\n case VirtualDomElements.THead:\n return ElementTag.THead\n case VirtualDomElements.Tr:\n return ElementTag.Tr\n case VirtualDomElements.Input:\n return ElementTag.Input\n case VirtualDomElements.ColGroup:\n return ElementTag.ColGroup\n case VirtualDomElements.Col:\n return ElementTag.Col\n case VirtualDomElements.Button:\n return ElementTag.Button\n case VirtualDomElements.Span:\n return ElementTag.Span\n default:\n throw new Error(`element tag not found ${type}`)\n }\n}\n", "export const setProp = ($Element, key, value) => {\n switch (key) {\n case 'maskImage':\n $Element.style.maskImage = `url('${value}')`\n $Element.style.webkitMaskImage = `url('${value}')`\n break\n case 'paddingLeft':\n $Element.style.paddingLeft = `${value}px`\n break\n case 'width':\n $Element.style.width = `${value}px`\n break\n case 'style':\n throw new Error('style property is not supported')\n default:\n $Element[key] = value\n }\n}\n\nexport const setProps = ($Element, props) => {\n for (const key in props) {\n setProp($Element, key, props[key])\n }\n}\n", "import * as ElementTagMap from '../ElementTagMap/ElementTagMap.js'\nimport * as VirtualDomElementProps from '../VirtualDomElementProps/VirtualDomElementProps.js'\nimport * as VirtualDomElements from '../VirtualDomElements/VirtualDomElements.js'\n\nconst renderDomTextNode = (element) => {\n return document.createTextNode(element.props.text)\n}\n\nconst renderDomElement = (element) => {\n const { type, props } = element\n const tag = ElementTagMap.getElementTag(type)\n const $Element = document.createElement(tag)\n VirtualDomElementProps.setProps($Element, props)\n return $Element\n}\n\nexport const render = (element) => {\n switch (element.type) {\n case VirtualDomElements.Text:\n return renderDomTextNode(element)\n default:\n return renderDomElement(element)\n }\n}\n", "import * as VirtualDomElement from '../VirtualDomElement/VirtualDomElement.js'\nimport * as VirtualDomElements from '../VirtualDomElements/VirtualDomElements.js'\n\n/**\n *\n * @param {any[]} elements\n * @returns\n */\nexport const renderInternal = ($Parent, elements) => {\n const max = elements.length - 1\n let stack = []\n for (let i = max; i >= 0; i--) {\n const element = elements[i]\n const $Element = VirtualDomElement.render(element)\n if (element.childCount > 0) {\n // @ts-ignore\n $Element.append(...stack.slice(0, element.childCount))\n stack = stack.slice(element.childCount)\n }\n stack.unshift($Element)\n }\n $Parent.append(...stack)\n}\n\nconst isEqualNodeName = ($Node, node) => {\n if ($Node.nodeName === 'BUTTON' && node.type === VirtualDomElements.Button) {\n return true\n }\n\n return false\n}\n\nexport const renderInto = ($Parent, dom) => {\n $Parent.textContent = ''\n renderInternal($Parent, dom)\n}\n\nexport const renderIncremental = ($Parent, dom) => {\n if ($Parent.textContent === '') {\n renderInternal($Parent, dom)\n return\n }\n // TODO\n console.log({ dom })\n const oldCount = $Parent.children.length\n let $Node = $Parent\n for (let i = 0; i < dom.length; i++) {\n const node = dom[i]\n if (!$Node) {\n $Parent.append\n }\n console.log({ $Node, node })\n console.log($Node.nodeValue, node.text)\n\n if ($Node.nodeValue !== node.props.text && node.props.text) {\n $Node.nodeValue = node.props.text\n }\n if ($Node.title !== node.props.title && node.props.title) {\n $Node.title = node.props.title\n }\n }\n // const newCount = dom\n // const $Root = render(dom)\n // $Parent.replaceChildren(...$Root.children)\n}\n\n/**\n *\n * @param {any[]} elements\n * @returns\n */\nexport const render = (elements) => {\n const $Root = document.createElement('div')\n renderInternal($Root, elements)\n return $Root\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleInput = (value) => {\n RendererWorker.send('KeyBindings.handleInput', value)\n}\n\nexport const handleClick = (index) => {\n RendererWorker.send('KeyBindings.handleClick', index)\n}\n\nexport const handleWheel = (deltaY) => {\n RendererWorker.send('KeyBindings.handleWheel', deltaY)\n}\n\nexport const handleResizerMove = (x) => {\n RendererWorker.send('KeyBindings.handleResizerMove', x)\n}\n\nexport const handlResizerClick = (id, x) => {\n RendererWorker.send('KeyBindings.handleResizerClick', id, x)\n}\n", "import * as DomEventOptions from '../DomEventOptions/DomEventOptions.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as WheelEventType from '../WheelEventType/WheelEventType.js'\nimport * as ViewletKeyBindingsFunctions from './ViewletKeyBindingsFunctions.js'\n\nexport const handleInput = (event) => {\n const { target } = event\n const { value } = target\n ViewletKeyBindingsFunctions.handleInput(value)\n}\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst getTableRowIndex = ($Target) => {\n const { className } = $Target\n switch (className) {\n case 'KeyBindingsTableCell':\n return getNodeIndex($Target.parentNode)\n default:\n return -1\n }\n}\n\nexport const handleTableClick = (event) => {\n const { target } = event\n const index = getTableRowIndex(target)\n if (index === -1) {\n return\n }\n ViewletKeyBindingsFunctions.handleClick(index)\n}\n\nexport const handleWheel = (event) => {\n const { deltaMode, deltaY } = event\n switch (deltaMode) {\n case WheelEventType.DomDeltaLine:\n case WheelEventType.DomDeltaPixel:\n return ViewletKeyBindingsFunctions.handleWheel(deltaY)\n default:\n break\n }\n}\n\nexport const handleResizerPointerMove = (event) => {\n const { clientX } = event\n ViewletKeyBindingsFunctions.handleResizerMove(clientX)\n}\n\n// TODO use lostpointercapture event instead\nexport const handleResizerPointerUp = (event) => {\n const { target, pointerId } = event\n target.releasePointerCapture(pointerId)\n target.removeEventListener(DomEventType.PointerMove, handleResizerPointerMove)\n target.removeEventListener(DomEventType.PointerUp, handleResizerPointerUp)\n}\n\nexport const handleResizerPointerDown = (event) => {\n const { target, pointerId, clientX } = event\n console.log({ target })\n target.setPointerCapture(pointerId)\n target.addEventListener(DomEventType.PointerMove, handleResizerPointerMove, DomEventOptions.Active)\n target.addEventListener(DomEventType.PointerUp, handleResizerPointerUp)\n const id = target.nextSibling ? 1 : 2\n ViewletKeyBindingsFunctions.handlResizerClick(id, clientX)\n}\n\nconst getPointerDownFunction = (event) => {\n const { target } = event\n switch (target.className) {\n case 'Resizer':\n return handleResizerPointerDown\n case 'KeyBindingsTableWrapper':\n return handleTableClick\n default:\n return undefined\n }\n}\n\nexport const handlePointerDown = (event) => {\n const pointerDownFunction = getPointerDownFunction(event)\n if (!pointerDownFunction) {\n return\n }\n pointerDownFunction(event)\n}\n", "export const Url = 'url'\nexport const Text = 'text'\nexport const Search = 'search'\nexport const Number = 'number'\n", "import * as DomEventOptions from '../DomEventOptions/DomEventOptions.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as VirtualDom from '../VirtualDom/VirtualDom.js'\nimport * as ViewletkeyBindingsEvents from './ViewletKeyBindingsEvents.js'\nimport * as InputType from '../InputType/InputType.js'\n\n/**\n * @enum {string}\n */\nconst UiStrings = {\n SearchKeyBindings: 'Search Key Bindings', // TODO placeholder string should come from renderer worker\n ResultsWillUpdateAsYouType: 'Results will update as you type',\n}\n\nexport const create = () => {\n const $InputBox = InputBox.create()\n $InputBox.type = InputType.Search\n $InputBox.placeholder = UiStrings.SearchKeyBindings\n // @ts-ignore\n $InputBox.ariaDescription = UiStrings.ResultsWillUpdateAsYouType\n\n const $KeyBindingsHeader = document.createElement('div')\n $KeyBindingsHeader.className = 'KeyBindingsHeader'\n $KeyBindingsHeader.append($InputBox)\n\n const $KeyBindingsTableWrapper = document.createElement('div')\n $KeyBindingsTableWrapper.className = 'KeyBindingsTableWrapper'\n\n const $ScrollBarThumb = document.createElement('div')\n $ScrollBarThumb.className = 'ScrollBarThumb'\n\n const $ScrollBar = document.createElement('div')\n $ScrollBar.className = 'ScrollBar'\n $ScrollBar.append($ScrollBarThumb)\n\n const $Resizer1 = document.createElement('div')\n $Resizer1.className = 'Resizer'\n\n const $Resizer2 = document.createElement('div')\n $Resizer2.className = 'Resizer'\n\n $KeyBindingsTableWrapper.append($Resizer1, $Resizer2)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet KeyBindings'\n $Viewlet.append($KeyBindingsHeader, $KeyBindingsTableWrapper, $ScrollBar)\n $Viewlet.onpointerdown = ViewletkeyBindingsEvents.handlePointerDown\n $Viewlet.addEventListener(DomEventType.Input, ViewletkeyBindingsEvents.handleInput, { capture: true })\n $Viewlet.addEventListener(DomEventType.Wheel, ViewletkeyBindingsEvents.handleWheel, DomEventOptions.Passive)\n\n return {\n $Viewlet,\n $InputBox,\n $KeyBindingsHeader,\n $KeyBindingsTableWrapper,\n $ScrollBarThumb,\n $ScrollBar,\n $Resizer1,\n $Resizer2,\n }\n}\n\nexport const setTableDom = (state, dom) => {\n const { $KeyBindingsTableWrapper } = state\n const $Root = VirtualDom.render(dom)\n const $Child = $KeyBindingsTableWrapper.children[0]\n if ($Child.tagName === 'TABLE') {\n $Child.replaceWith($Root.firstChild)\n } else {\n $KeyBindingsTableWrapper.prepend($Root.firstChild)\n }\n}\n\nexport const setValue = (state, value) => {\n const { $InputBox } = state\n $InputBox.value = value\n}\n\nexport const setColumnWidths = (state, columnWidth1, columnWidth2, columnWidth3) => {\n const paddingLeft = 15\n const { $Resizer1, $Resizer2 } = state\n $Resizer1.style.left = `${paddingLeft + columnWidth1}px`\n $Resizer2.style.left = `${paddingLeft + columnWidth1 + columnWidth2}px`\n}\n\nexport * from '../ViewletScrollable/ViewletScrollable.js'\nexport * from '../ViewletSizable/ViewletSizable.js'\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleSashPointerMove = (x, y) => {\n RendererWorker.send('Layout.handleSashPointerMove', x, y)\n}\n\nexport const handleSashPointerDown = (id) => {\n RendererWorker.send('Layout.handleSashPointerDown', id)\n}\n\nexport const handleSashDoubleClick = (id) => {\n RendererWorker.send('Layout.handleSashDoubleClick', id)\n}\n\nexport const handleResize = (width, height) => {\n RendererWorker.send('Layout.handleResize', width, height)\n}\n\nexport const handleFocus = () => {\n RendererWorker.send('Layout.handleFocus')\n}\n\nexport const handleBlur = () => {\n RendererWorker.send('Layout.handleBlur')\n}\n", "import * as Context from '../Context/Context.js'\nimport * as Event from '../Event/Event.js'\nimport * as KeyBindingsState from '../KeyBindingsState/KeyBindingsState.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nconst normalizeKey = (key) => {\n if (key === ' ') {\n return 'Space'\n }\n if (key.length === 1) {\n return key.toLowerCase()\n }\n return key\n}\n\nconst getIdentifier = (event) => {\n let identifier = ''\n if (event.ctrlKey) {\n identifier += 'ctrl+'\n }\n if (event.shiftKey) {\n identifier += 'shift+'\n }\n if (event.altKey) {\n identifier += 'alt+'\n }\n const key = normalizeKey(event.key)\n identifier += key\n return identifier\n}\n\n// TODO store keybindings as json somewhere\n\n// TODO sort keybindings by `when` priority -> focus.editorCompletions: 10, focus.editor:9 etc.\n\n// TODO does it make sense to have all of these configurable?\n// could remove some context logic and have less user configuration when these are default\n// e.g. arrow down focuses next, arrow up always focuses previous item (like in aria spec)\n\n// TODO ui should only have keys -> commands get resolved inside renderer worker\n// TODO should toggle terminal, not only open\n\nconst matchesContext = (keybinding) => {\n if (!keybinding.when) {\n return true\n }\n return Context.get(keybinding.when)\n}\n\nconst getMatchingKeyBinding = (identifier) => {\n // TODO this could be more efficient in O(N) instead of O(2N)\n const matchesIdentifier = (keyBinding) => {\n return keyBinding.key === identifier\n }\n const keyBindings = KeyBindingsState.getKeyBindings()\n const matchingKeyBindings = keyBindings.filter(matchesIdentifier)\n const matchingKeyBinding = matchingKeyBindings.find(matchesContext)\n return matchingKeyBinding\n}\n\nconst getModifier = (event) => {\n switch (event.key) {\n case 'Control':\n return 'ctrl'\n case 'Shift':\n return 'shift'\n case 'Alt':\n return 'alt'\n }\n return ''\n}\n\nconst clearModifier = () => {\n if (!KeyBindingsState.hasModifier()) {\n return\n }\n if (KeyBindingsState.getModifierTimeout() !== -1) {\n clearTimeout(KeyBindingsState.getModifierTimeout())\n KeyBindingsState.setModifier('')\n KeyBindingsState.setModifierTimeout(-1)\n }\n}\n\nconst handleMatchingKeyBinding = (matchingKeyBinding) => {\n // TODO execute command directly or -> executeCommand -> keybindings -> executeCommand\n // better directly\n // TODO always should be number\n // when launching keybindings -> map string command to number\n // TODO should args always be defined? (probably yes -> monomorphism & simpler code since all objects are the same)\n\n // TODO matchingKeyBinding.command should always be number\n RendererWorker.send(/* KeyBindings.handleKeyBinding */ 'KeyBindings.handleKeyBinding', /* keyBinding */ matchingKeyBinding)\n}\n\nexport const handleKeyDown = (event) => {\n const identifier = getIdentifier(event)\n const matchingKeyBinding = getMatchingKeyBinding(identifier)\n if (!matchingKeyBinding) {\n return\n }\n Event.preventDefault(event)\n handleMatchingKeyBinding(matchingKeyBinding)\n}\n\nexport const handleKeyUp = (event) => {\n const modifier = getModifier(event)\n if (!modifier) {\n clearModifier()\n return\n }\n if (KeyBindingsState.isModifier(modifier)) {\n clearModifier()\n const identifier = `${modifier} ${modifier}`\n const matchingKeyBinding = getMatchingKeyBinding(identifier)\n if (matchingKeyBinding) {\n handleMatchingKeyBinding(matchingKeyBinding)\n }\n return\n }\n KeyBindingsState.setModifier(modifier)\n KeyBindingsState.setModifierTimeout(setTimeout(clearModifier, 300))\n}\n", "import * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as ViewletLayoutFunctions from './ViewletLayoutFunctions.js'\nimport * as KeyBindingsEvents from '../KeyBindingsEvents/KeyBindingsEvents.js'\n\nconst getSashId = ($Target) => {\n if ($Target.id === 'SashPanel') {\n return 'Panel'\n }\n if ($Target.id === 'SashSideBar') {\n return 'SideBar'\n }\n return ''\n}\n\nexport const handleSashPointerMove = (event) => {\n const { clientX, clientY } = event\n ViewletLayoutFunctions.handleSashPointerMove(clientX, clientY)\n}\n\nexport const handlePointerCaptureLost = (event) => {\n const { target } = event\n target.removeEventListener(DomEventType.PointerMove, handleSashPointerMove)\n target.removeEventListener(DomEventType.LostPointerCapture, handlePointerCaptureLost)\n}\n\nexport const handleSashPointerDown = (event) => {\n const { target, pointerId } = event\n target.setPointerCapture(pointerId)\n target.addEventListener(DomEventType.PointerMove, handleSashPointerMove)\n target.addEventListener(DomEventType.LostPointerCapture, handlePointerCaptureLost)\n const id = getSashId(target)\n ViewletLayoutFunctions.handleSashPointerDown(id)\n}\n\nexport const handleSashDoubleClick = (event) => {\n const { target } = event\n const id = getSashId(target)\n ViewletLayoutFunctions.handleSashDoubleClick(id)\n}\n\nexport const handleResize = () => {\n const { innerWidth, innerHeight } = window\n ViewletLayoutFunctions.handleResize(innerWidth, innerHeight)\n}\n\nexport const handleFocus = () => {\n ViewletLayoutFunctions.handleFocus()\n}\n\nexport const handleBlur = () => {\n ViewletLayoutFunctions.handleBlur()\n}\n\nexport const handleKeyDown = KeyBindingsEvents.handleKeyDown\n\nexport const handleKeyUp = KeyBindingsEvents.handleKeyUp\n", "import * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\nimport * as ViewletLayoutEvents from './ViewletLayoutEvents.js'\n\nexport const create = () => {\n // TODO use aria role splitter once supported https://github.com/w3c/aria/issues/1348\n const $SashSideBar = document.createElement('div')\n $SashSideBar.className = 'Viewlet SashVertical'\n $SashSideBar.id = 'SashSideBar'\n\n // TODO use aria role splitter once supported https://github.com/w3c/aria/issues/1348\n const $SashPanel = document.createElement('div')\n $SashPanel.className = 'Viewlet SashHorizontal'\n $SashPanel.id = 'SashPanel'\n\n const $Viewlet = document.createElement('div')\n $Viewlet.id = 'Workbench'\n $Viewlet.className = 'Viewlet Layout'\n $Viewlet.role = AriaRoles.Application\n $Viewlet.append($SashSideBar, $SashPanel)\n\n return {\n $Viewlet,\n $SashSideBar,\n $SashPanel,\n }\n}\n\nexport const attachEvents = (state) => {\n const { $SashSideBar, $SashPanel } = state\n $SashSideBar.onpointerdown = ViewletLayoutEvents.handleSashPointerDown\n $SashSideBar.ondblclick = ViewletLayoutEvents.handleSashDoubleClick\n\n $SashPanel.onpointerdown = ViewletLayoutEvents.handleSashPointerDown\n $SashPanel.ondblclick = ViewletLayoutEvents.handleSashDoubleClick\n\n window.addEventListener(DomEventType.Resize, ViewletLayoutEvents.handleResize)\n window.addEventListener(DomEventType.Focus, ViewletLayoutEvents.handleFocus)\n window.addEventListener(DomEventType.Blur, ViewletLayoutEvents.handleBlur)\n window.addEventListener(DomEventType.KeyDown, ViewletLayoutEvents.handleKeyDown)\n window.addEventListener(DomEventType.KeyUp, ViewletLayoutEvents.handleKeyUp)\n}\n\nexport const setSashes = (state, sashSideBar, sashPanel) => {\n const { $SashSideBar, $SashPanel } = state\n SetBounds.setBounds($SashSideBar, sashSideBar.x, sashSideBar.y, sashSideBar.width, sashSideBar.height)\n SetBounds.setBounds($SashPanel, sashPanel.x, sashPanel.y, sashPanel.width, sashPanel.height)\n}\n", "import * as AriaBoolean from '../AriaBoolean/AriaBoolean.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as Label from '../Label/Label.js'\n\nexport const create = (label, title, background) => {\n const $TabLabel = Label.create(label)\n\n const $TabCloseButton = document.createElement('button')\n $TabCloseButton.className = 'EditorTabCloseButton'\n $TabCloseButton.ariaLabel = 'Close'\n $TabCloseButton.title = ''\n\n const $Tab = document.createElement('div')\n $Tab.title = title\n $Tab.draggable = true\n if (!background) {\n $Tab.ariaSelected = AriaBoolean.True\n }\n $Tab.role = AriaRoles.Tab\n $Tab.className = 'MainTab'\n $Tab.append($TabLabel, $TabCloseButton)\n return $Tab\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleDragOver = (x, y) => {\n RendererWorker.send('Main.handleDragOver', x, y)\n}\n\nexport const handleDropFiles = (files) => {\n RendererWorker.send('Main.handleDrop', files)\n}\n\nexport const handleDropFilePath = (filePath) => {\n RendererWorker.send('Main.handleDropFilePath', filePath)\n}\n\nexport const handleDragEnd = (x, y) => {\n RendererWorker.send('Main.handleDragEnd', x, y)\n}\n\nexport const closeEditor = (index) => {\n RendererWorker.send('Main.closeEditor', index)\n}\n\nexport const handleTabClick = (index) => {\n RendererWorker.send('Main.handleTabClick', index)\n}\n\nexport const handleTabContextMenu = (index, x, y) => {\n RendererWorker.send('Main.handleTabContextMenu', index, x, y)\n}\n", "import * as AllowedDragEffectType from '../AllowedDragEffectType/AllowedDragEffectType.js'\nimport * as DataTransfer from '../DataTransfer/DataTransfer.js'\nimport * as Event from '../Event/Event.js'\nimport * as MouseEventType from '../MouseEventType/MouseEventType.js'\nimport * as ViewletMainFunctions from './ViewletMainFunctions.js'\n\nconst ClassNames = {\n Label: 'Label',\n EditorTabCloseButton: 'EditorTabCloseButton',\n MainTab: 'MainTab',\n}\n\nexport const handleDragStart = (event) => {\n event.dataTransfer.effectAllowed = AllowedDragEffectType.CopyMove\n}\n\nexport const handleDragOver = (event) => {\n Event.preventDefault(event)\n const { clientX, clientY } = event\n ViewletMainFunctions.handleDragOver(clientX, clientY)\n}\n\nexport const handleDragEnd = (event) => {\n const { clientX, clientY } = event\n ViewletMainFunctions.handleDragEnd(clientX, clientY)\n}\n\n/**\n *\n * @param {DragEvent} event\n */\nexport const handleDrop = (event) => {\n Event.preventDefault(event)\n const { dataTransfer } = event\n const { files } = dataTransfer\n console.log(dataTransfer.items.length)\n const item = dataTransfer.items[0]\n console.log({ item, kind: item.kind, type: item.type })\n if (files.length > 0) {\n ViewletMainFunctions.handleDropFiles(files)\n return\n }\n const filePath = DataTransfer.getFilePath(dataTransfer)\n if (filePath) {\n ViewletMainFunctions.handleDropFilePath(filePath)\n return\n }\n}\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst getIndex = ($Target) => {\n switch ($Target.className) {\n case ClassNames.EditorTabCloseButton:\n case ClassNames.Label:\n return getNodeIndex($Target.parentNode)\n case ClassNames.MainTab:\n return getNodeIndex($Target)\n default:\n return -1\n }\n}\n\nexport const handleTabCloseButtonMouseDown = (event, index) => {\n ViewletMainFunctions.closeEditor(index)\n}\n\nexport const handleTabMouseDown = (event, index) => {\n const { button } = event\n switch (button) {\n case MouseEventType.LeftClick:\n ViewletMainFunctions.handleTabClick(index)\n break\n case MouseEventType.MiddleClick:\n ViewletMainFunctions.closeEditor(index)\n break\n case MouseEventType.RightClick:\n break\n default:\n break\n }\n}\n\nexport const handleTabsMouseDown = (event) => {\n const { target } = event\n const index = getIndex(target)\n if (index === -1) {\n return\n }\n switch (target.className) {\n case ClassNames.EditorTabCloseButton:\n handleTabCloseButtonMouseDown(event, index)\n break\n case ClassNames.MainTab:\n case ClassNames.Label:\n handleTabMouseDown(event, index)\n break\n default:\n break\n }\n}\n\nexport const handleTabsContextMenu = (event) => {\n const { clientX, clientY, target } = event\n const index = getIndex(target)\n if (index === -1) {\n return\n }\n Event.preventDefault(event)\n ViewletMainFunctions.handleTabContextMenu(index, clientX, clientY)\n}\n", "import * as AriaBoolean from '../AriaBoolean/AriaBoolean.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\nimport * as Tab from '../Tab/Tab.js'\nimport * as ViewletMainEvents from './ViewletMainEvents.js'\n\nconst create$MainTabs = () => {\n const $MainTabs = document.createElement('div')\n $MainTabs.className = 'MainTabs'\n $MainTabs.role = AriaRoles.TabList\n $MainTabs.onmousedown = ViewletMainEvents.handleTabsMouseDown\n $MainTabs.oncontextmenu = ViewletMainEvents.handleTabsContextMenu\n $MainTabs.ondragstart = ViewletMainEvents.handleDragStart\n // TODO race condition: what if tab has already been closed?\n return $MainTabs\n}\n\n// TODO Main should not be bound to Editor -> Lazy load Editor\nexport const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.id = 'Main'\n $Viewlet.className = 'Viewlet Main'\n $Viewlet.ondrop = ViewletMainEvents.handleDrop\n $Viewlet.ondragover = ViewletMainEvents.handleDragOver\n $Viewlet.ondragend = ViewletMainEvents.handleDragEnd\n $Viewlet.role = AriaRoles.Main\n\n // const $MainContent = document.createElement('div')\n // $MainContent.id = 'MainContent'\n\n // const $MainTabs = document.createElement('div')\n // $MainTabs.className = 'MainTabs'\n // $MainTabs.onmousedown = handleTabsMouseDown\n // $MainTabs.oncontextmenu = handleTabsContextMenu\n // // TODO race condition: what if tab has already been closed?\n // $Main.append($MainTabs, $MainContent)\n\n return {\n $Viewlet,\n $Main: $Viewlet,\n $MainContent: undefined,\n $MainTabs: undefined,\n $DragOverlay: undefined,\n }\n}\n\nexport const dispose = (state) => {\n state.$MainContent.remove()\n state.$MainContent = undefined\n state.$MainTabs.remove()\n state.$MainTabs = undefined\n}\n\nexport const replaceEditor = (state, id, uri, languageId) => {}\n\nexport const addEditor = (state, id, uri, languageId) => {}\n\n// TODO there are 3 cases\n// 1. no editor group and no editor\n// 2. editor group exists and new editor should be added\n// 3. editor group exists and editor should be replaced\nexport const openEditor = async (state, id, uri, languageId) => {}\n\nexport const closeAllViewlets = (state) => {\n const { $Main } = state\n while ($Main.firstChild) {\n $Main.firstChild.remove()\n }\n state.$MainContent = undefined\n state.$MainTabs = undefined\n}\n\nexport const closeViewletAndTab = (state, index) => {\n state.$MainContent.remove()\n state.$MainContent = undefined\n state.$MainTabs.remove()\n state.$MainTabs = undefined\n}\n\nexport const focus = () => {}\n\nexport const openViewlet = (state, tabLabel, tabTitle, oldActiveIndex, background = false) => {\n const $Tab = Tab.create(tabLabel, tabTitle, background)\n\n if (oldActiveIndex !== -1 && state.$MainTabs) {\n const $OldTab = state.$MainTabs.children[oldActiveIndex]\n if ($OldTab) {\n $OldTab.ariaSelected = AriaBoolean.False\n }\n }\n\n if (!state.$MainTabs) {\n state.$MainTabs = create$MainTabs()\n state.$Main.append(state.$MainTabs)\n }\n\n const { $MainTabs } = state\n $MainTabs.append($Tab)\n\n // await Viewlet.load(id)\n // const instance = Viewlet.state.instances[id]\n // // TODO race condition: what if tab has already been closed?\n // Viewlet.mount(state.$MainContent, instance.state)\n // Viewlet.focus(id)\n // Layout.state.$Main.append(state.$MainTabs, state.$MainContent)\n}\n\nconst create$MainContent = () => {\n const $MainContent = document.createElement('div')\n $MainContent.id = 'MainContent'\n return $MainContent\n}\n\nexport const appendViewlet = (state, childName, $Child) => {\n if (!state.$MainContent) {\n state.$MainContent = create$MainContent()\n state.$Main.append(state.$MainContent)\n }\n const { $MainContent } = state\n // TODO should bring back old optimization of reusing existing editor dom nodes if possible\n while ($MainContent.firstChild) {\n $MainContent.firstChild.remove()\n }\n $MainContent.append($Child)\n\n // await Viewlet.load(id)\n // const instance = Viewlet.state.instances[id]\n // // TODO race condition: what if tab has already been closed?\n // Viewlet.mount(state.$MainContent, instance.state)\n // Viewlet.focus(id)\n // Layout.state.$Main.append(state.$MainTabs, state.$MainContent)\n}\n\n// TODO when there is not enough space available, only show tab close button\n// for focused tab (that's how chrome and firefox do it)\nexport const openAnotherTab = async (state, tabLabel, tabTitle, unFocusIndex) => {\n const $Tab = Tab.create(tabLabel, tabTitle, false)\n const { $MainTabs } = state\n $MainTabs.children[unFocusIndex].ariaSelected = AriaBoolean.False\n $MainTabs.append($Tab)\n}\n\nexport const closeOneTab = (state, closeIndex, focusIndex) => {\n const { $MainTabs } = state\n $MainTabs.children[closeIndex].remove()\n $MainTabs.children[focusIndex].ariaSelected = AriaBoolean.True\n}\n\nexport const closeOneTabOnly = (state, closeIndex) => {\n const { $MainTabs } = state\n $MainTabs.children[closeIndex].remove()\n}\n\nexport const focusAnotherTab = (state, unFocusIndex, focusIndex) => {\n const { $MainTabs } = state\n $MainTabs.children[unFocusIndex].ariaSelected = AriaBoolean.False\n $MainTabs.children[focusIndex].ariaSelected = AriaBoolean.True\n}\n\nexport const closeOthers = (state, keepIndex, focusIndex) => {\n for (let i = state.$MainTabs.children.length - 1; i >= 0; i--) {\n const $Tab = state.$MainTabs.children[i]\n if (i === keepIndex) {\n $Tab.ariaSelected = AriaBoolean.True\n $Tab.tabIndex = 0\n } else {\n $Tab.remove()\n }\n }\n}\n\nexport const closeTabsRight = (state, index) => {\n for (let i = state.$MainTabs.children.length - 1; i > index; i--) {\n const $Tab = state.$MainTabs.children[i]\n $Tab.remove()\n }\n const $Tab = state.$MainTabs.children[index]\n $Tab.ariaSelected = AriaBoolean.True\n $Tab.tabIndex = 0\n}\n\nexport const closeTabsLeft = (state, index) => {\n for (let i = index - 1; i >= 0; i--) {\n const $Tab = state.$MainTabs.children[i]\n $Tab.remove()\n }\n const $Tab = state.$MainTabs.children[0]\n $Tab.ariaSelected = AriaBoolean.True\n $Tab.tabIndex = 0\n}\n\nexport const updateTab = (state, index, text) => {\n const { $MainTabs } = state\n const $Tab = $MainTabs.children[index]\n const $TabLabel = $Tab.firstChild\n $Tab.title = text\n $TabLabel.textContent = text\n}\n\nexport const highlightDragOver = (state) => {\n const { $MainTabs } = state\n $MainTabs.classList.add('DragOver')\n}\n\nexport const stopHighlightDragOver = (state) => {\n const { $MainTabs } = state\n $MainTabs.classList.remove('DragOver')\n}\n\nconst create$DragOverlay = () => {\n const $Overlay = document.createElement('div')\n $Overlay.className = 'DragOverlay'\n return $Overlay\n}\n\nexport const showDragOverlay = (state, x, y, width, height) => {\n const hasOverlay = state.$DragOverlay\n if (!hasOverlay) {\n state.$DragOverlay = create$DragOverlay()\n }\n const { $DragOverlay } = state\n SetBounds.setBounds($DragOverlay, x, y, width, height)\n if (!hasOverlay) {\n document.body.append($DragOverlay)\n }\n}\n\nexport const hideDragOverlay = (state) => {\n if (!state.$DragOverlay) {\n return\n }\n state.$DragOverlay.remove()\n state.$DragOverlay = undefined\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const closeEditor = (index) => {\n RendererWorker.send('Main.closeEditor', index)\n}\n\nexport const handleTabClick = (index) => {\n RendererWorker.send('Main.handleTabClick', index)\n}\n\nexport const handleTabContextMenu = (index, x, y) => {\n RendererWorker.send('Main.handleTabContextMenu', index, x, y)\n}\n", "import * as AllowedDragEffectType from '../AllowedDragEffectType/AllowedDragEffectType.js'\nimport * as Event from '../Event/Event.js'\nimport * as MouseEventType from '../MouseEventType/MouseEventType.js'\nimport * as ViewletMainTabsFunctions from './ViewletMainTabsFunctions.js'\n\nconst ClassNames = {\n Label: 'Label',\n EditorTabCloseButton: 'EditorTabCloseButton',\n MainTab: 'MainTab',\n}\n\nexport const handleDragStart = (event) => {\n event.dataTransfer.effectAllowed = AllowedDragEffectType.CopyMove\n}\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst getIndex = ($Target) => {\n switch ($Target.className) {\n case ClassNames.EditorTabCloseButton:\n case ClassNames.Label:\n return getNodeIndex($Target.parentNode)\n case ClassNames.MainTab:\n return getNodeIndex($Target)\n default:\n return -1\n }\n}\n\nexport const handleTabCloseButtonMouseDown = (event, index) => {\n ViewletMainTabsFunctions.closeEditor(index)\n}\n\nexport const handleTabMouseDown = (event, index) => {\n const { button } = event\n switch (button) {\n case MouseEventType.LeftClick:\n ViewletMainTabsFunctions.handleTabClick(index)\n break\n case MouseEventType.MiddleClick:\n ViewletMainTabsFunctions.closeEditor(index)\n break\n case MouseEventType.RightClick:\n break\n default:\n break\n }\n}\n\nexport const handleTabsMouseDown = (event) => {\n const { target } = event\n const index = getIndex(target)\n if (index === -1) {\n return\n }\n switch (target.className) {\n case ClassNames.EditorTabCloseButton:\n handleTabCloseButtonMouseDown(event, index)\n break\n case ClassNames.MainTab:\n case ClassNames.Label:\n handleTabMouseDown(event, index)\n break\n default:\n break\n }\n}\n\nexport const handleTabsContextMenu = (event) => {\n const { clientX, clientY, target } = event\n const index = getIndex(target)\n if (index === -1) {\n return\n }\n Event.preventDefault(event)\n ViewletMainTabsFunctions.handleTabContextMenu(index, clientX, clientY)\n}\n", "import * as ViewletMainTabEvents from './ViewletMainTabEvents.js'\nimport * as Tab from '../Tab/Tab.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\n\nexport const create = () => {\n const $MainTabs = document.createElement('div')\n $MainTabs.className = 'Viewlet MainTabs'\n $MainTabs.role = AriaRoles.TabList\n $MainTabs.onmousedown = ViewletMainTabEvents.handleTabsMouseDown\n $MainTabs.oncontextmenu = ViewletMainTabEvents.handleTabsContextMenu\n $MainTabs.ondragstart = ViewletMainTabEvents.handleDragStart\n // TODO race condition: what if tab has already been closed?\n return {\n $Viewlet: $MainTabs,\n }\n}\n\nexport const setTabs = (state, tabs) => {\n const { $Viewlet } = state\n for (const tab of tabs) {\n const $Tab = Tab.create(tab.label, tab.title, false)\n $Viewlet.append($Tab)\n }\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const setOutputChannel = (value) => {\n RendererWorker.send('Output', 'setOutputChannel', value)\n}\n", "import * as ViewletOutputFunctions from './ViewletOutputFunctions.js'\n\nexport const handleChange = (event) => {\n const $Target = event.target\n const value = $Target.value\n ViewletOutputFunctions.setOutputChannel(value)\n}\n", "import * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as ViewletOutputEvents from './ViewletOutputEvents.js'\n\nconst create$Option = (option) => {\n const $Option = document.createElement('option')\n $Option.value = option.file\n $Option.textContent = option.name\n return $Option\n}\n\nexport const create = () => {\n const $ViewletOutputSelect = document.createElement('select')\n $ViewletOutputSelect.className = 'ViewletOutputSelect'\n $ViewletOutputSelect.onchange = ViewletOutputEvents.handleChange\n $ViewletOutputSelect.ariaLabel = 'Select a log'\n const $ViewletOutputContent = document.createElement('div')\n $ViewletOutputContent.className = 'OutputContent'\n $ViewletOutputContent.role = AriaRoles.Log\n $ViewletOutputContent.tabIndex = 0\n const $ViewletOutputWidgets = document.createElement('div')\n $ViewletOutputWidgets.className = 'OutputWidgets'\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet Output'\n $Viewlet.tabIndex = 0\n $Viewlet.append($ViewletOutputSelect, $ViewletOutputContent, $ViewletOutputWidgets)\n return {\n $Viewlet,\n select: $ViewletOutputSelect,\n $Select: $ViewletOutputSelect,\n content: $ViewletOutputContent,\n $Content: $ViewletOutputContent,\n $ViewletOutputContent,\n }\n}\n\nexport const setOptions = (state, options) => {\n state.$Select.append(...options.map(create$Option))\n}\n\nexport const append = (state, text) => {\n Assert.object(state)\n Assert.string(text)\n const $Line = document.createElement('div')\n $Line.textContent = text\n state.content.append($Line)\n}\n\nexport const clear = (state) => {\n Assert.object(state)\n state.content.textContent = ''\n}\n\nexport const handleError = (state, error) => {\n Assert.object(state)\n Assert.string(error)\n state.content.textContent = error\n}\n\nexport const focus = (state) => {\n Assert.object(state)\n Focus.focus(state.$ViewletOutputContent, 'output')\n}\n\n// TODO handle case when output is opened -> find widget is opened -> output is disposed before find widget is ready\nexport const openFindWidget = (state) => {\n // Command.execute(findWidget.create)\n}\n\nexport const disposeFindWidget = (state) => {\n if (!state.findWidget) {\n return\n }\n\n // Command.execute(FindWidget.dispose, state.findWidget)\n state.findWidget\n}\n\nexport const dispose = (state) => {}\n", "import * as IconButton from '../IconButton/IconButton.js'\nimport * as Assert from '../Assert/Assert.js'\n\nexport const create = (action) => {\n const { id, icon } = action\n Assert.string(id)\n Assert.string(icon)\n const $Button = IconButton.create$Button(id, icon)\n $Button.dataset.command = action.command || ''\n return $Button\n}\n", "export const create = () => {\n const $Element = document.createElement('div')\n $Element.textContent = '<unknown action type>'\n return $Element\n}\n", "import * as InputBox from '../InputBox/InputBox.js'\n\nexport const create = (action) => {\n const { id } = action\n const $Input = InputBox.create()\n $Input.placeholder = 'Filter'\n return $Input\n}\n", "export const create = () => {\n const $Select = document.createElement('select')\n return $Select\n}\n", "export const Button = 1\nexport const Select = 2\nexport const Filter = 3\n", "import * as ActionButton from '../ActionButton/ActionButton.js'\nimport * as ActionDefault from '../ActionDefault/ActionDefault.js'\nimport * as ActionFilter from '../ActionFilter/ActionFilter.js'\nimport * as ActionSelect from '../ActionSelect/ActionSelect.js'\nimport * as ActionType from '../ActionType/ActionType.js'\nimport * as Logger from '../Logger/Logger.js'\n\nconst getActionFunction = (type) => {\n switch (type) {\n case ActionType.Button:\n return ActionButton.create\n case ActionType.Filter:\n return ActionFilter.create\n case ActionType.Select:\n return ActionSelect.create\n default:\n Logger.warn(`action type not implemented: ${type}`)\n return ActionDefault.create\n }\n}\n\nexport const create = (action) => {\n const fn = getActionFunction(action.type)\n const $Element = fn(action)\n return $Element\n}\n", "import * as Action from '../Action/Action.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nconst handleClick = (event) => {\n const { target } = event\n const command = target.dataset.command\n if (!command) {\n return\n }\n RendererWorker.send([command])\n}\n\nexport const create = (actions) => {\n const $Actions = document.createElement('div')\n $Actions.className = 'Actions'\n $Actions.append(...actions.map(Action.create))\n $Actions.onclick = handleClick\n return $Actions\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const hidePanel = () => {\n RendererWorker.send('Layout.hidePanel')\n}\n", "import * as ViewletPanelFunctions from './ViewletPanelFunctions.js'\n\nexport const handleClickClose = (event) => {\n ViewletPanelFunctions.hidePanel()\n}\n", "import * as Actions from '../Actions/Actions.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as DomAttributeType from '../DomAttributeType/DomAttributeType.js'\nimport * as Icon from '../Icon/Icon.js'\nimport * as IconButton from '../IconButton/IconButton.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as ViewletPanelEvents from './ViewletPanelEvents.js'\n/**\n * @enum {string}\n */\nconst UiStrings = {\n Close: 'Close',\n}\n\nconst create$PanelTab = (label, index) => {\n const $PanelTab = document.createElement('div')\n $PanelTab.className = 'PanelTab'\n $PanelTab.role = AriaRoles.Tab\n $PanelTab.textContent = label\n $PanelTab.id = `PanelTab-${index + 1}`\n return $PanelTab\n}\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst panelTabsHandleClick = (event) => {\n const $Target = event.target\n switch ($Target.className) {\n case 'PanelTab': {\n const index = getNodeIndex($Target)\n RendererWorker.send(/* Panel.selectIndex */ 'Panel.selectIndex', /* index */ index)\n break\n }\n default:\n break\n }\n}\n\nexport const create = () => {\n const $PanelTabs = document.createElement('div')\n $PanelTabs.className = 'PanelTabs'\n $PanelTabs.role = AriaRoles.TabList\n $PanelTabs.onmousedown = panelTabsHandleClick\n $PanelTabs.tabIndex = -1\n\n const $ButtonClose = IconButton.create$Button(UiStrings.Close, Icon.Close)\n $ButtonClose.onclick = ViewletPanelEvents.handleClickClose\n\n const $PanelToolBar = document.createElement('div')\n $PanelToolBar.className = 'PanelToolBar'\n $PanelToolBar.role = AriaRoles.ToolBar\n $PanelToolBar.append($ButtonClose)\n\n const $PanelHeader = document.createElement('div')\n $PanelHeader.className = 'PanelHeader'\n $PanelHeader.append($PanelTabs, $PanelToolBar)\n // const $PanelContent = document.createElement('div')\n // $PanelContent.id = 'PanelContent'\n const $Viewlet = document.createElement('div')\n $Viewlet.id = 'Panel'\n $Viewlet.className = 'Viewlet Panel'\n $Viewlet.append($PanelHeader)\n $Viewlet.ariaLabel = 'Panel'\n return {\n $Panel: $Viewlet,\n $Viewlet,\n $PanelTabs,\n $PanelHeader,\n $PanelContent: undefined,\n }\n // await openViewlet('Terminal')\n}\n\nexport const setTabs = (state, tabs) => {\n const { $PanelTabs } = state\n $PanelTabs.append(...tabs.map(create$PanelTab))\n}\n\nexport const appendViewlet = (state, name, $Viewlet) => {\n Assert.object(state)\n Assert.string(name)\n Assert.object($Viewlet)\n // TODO is it a problem that the id is duplicated for a short amount of time here?\n $Viewlet.id = 'PanelContent'\n if (state.$PanelContent) {\n state.$PanelContent.replaceWith($Viewlet)\n } else {\n state.$Panel.append($Viewlet)\n }\n state.$PanelContent = $Viewlet\n}\n\n// TODO add test for focus method\nexport const focus = (state) => {\n Assert.object(state)\n if (!state.currentViewlet) {\n return\n }\n state.currentViewlet.factory.focus(state.currentViewlet.state)\n}\n\nexport const dispose = (state) => {\n if (state.$PanelContent) {\n state.$PanelContent.remove()\n state.$PanelContent = undefined\n }\n if (state.$PanelTabs) {\n state.$PanelTabs.remove()\n state.$PanelTabs = undefined\n }\n if (state.$PanelHeader) {\n state.$PanelHeader.remove()\n state.$PanelHeader = undefined\n }\n}\n\nexport const setSelectedIndex = (state, oldIndex, newIndex) => {\n const { $PanelTabs } = state\n if (oldIndex !== -1) {\n const $PanelTab = $PanelTabs.children[oldIndex]\n $PanelTab.removeAttribute(DomAttributeType.AriaSelected)\n }\n if (newIndex !== -1) {\n const $PanelTab = $PanelTabs.children[newIndex]\n $PanelTab.ariaSelected = true\n $PanelTabs.setAttribute(DomAttributeType.AriaActiveDescendant, $PanelTab.id)\n }\n}\n\nexport const setActions = (state, actions) => {\n const { $PanelTabs, $Actions } = state\n const $NewActions = Actions.create(actions)\n if ($Actions) {\n $Actions.replaceWith($NewActions)\n } else {\n $PanelTabs.after($NewActions)\n }\n state.$Actions = $NewActions\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleClickPrevious = () => {\n RendererWorker.send('Pdf.previous')\n}\n\nexport const handleClickNext = () => {\n RendererWorker.send('Pdf.next')\n}\n\nexport const handleClickZoomIn = () => {\n RendererWorker.send('Pdf.zoomIn')\n}\n\nexport const handleClickZoomOut = () => {\n RendererWorker.send('Pdf.zoomOut')\n}\n\nexport const handleClickPrint = () => {\n RendererWorker.send('Pdf.print')\n}\n", "import * as Icon from '../Icon/Icon.js'\nimport * as IconButton from '../IconButton/IconButton.js'\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as InputType from '../InputType/InputType.js'\nimport * as OffscreenCanvas from '../OffscreenCanvas/OffscreenCanvas.js'\nimport * as ViewletPdfEvents from './ViewletPdfEvents.js'\n\n/**\n * @enum {string}\n */\nconst UiStrings = {\n Next: 'Next',\n Previous: 'Previous',\n ZoomIn: 'Zoom in',\n ZoomOut: 'Zoom out',\n Print: 'Print',\n}\n\nexport const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet Pdf'\n\n const $ButtonPreviousPage = IconButton.create$Button(UiStrings.Previous, Icon.ChevronUp)\n $ButtonPreviousPage.onclick = ViewletPdfEvents.handleClickPrevious\n\n const $ButtonNextPage = IconButton.create$Button(UiStrings.Next, Icon.ChevronDown)\n $ButtonNextPage.onclick = ViewletPdfEvents.handleClickNext\n\n const $PageNumber = InputBox.create()\n $PageNumber.type = InputType.Number\n $PageNumber.classList.add('PdfPageNumber')\n $PageNumber.min = '1'\n $PageNumber.autocomplete = 'off'\n\n const $NumberOfPages = document.createElement('div')\n $NumberOfPages.textContent = 'of 10'\n $NumberOfPages.className = 'PdfNumberOfPages'\n\n const $ButtonZoomIn = IconButton.create$Button(UiStrings.ZoomIn, Icon.ZoomIn)\n $ButtonZoomIn.onclick = ViewletPdfEvents.handleClickZoomIn\n\n const $ButtonZoomOut = IconButton.create$Button(UiStrings.ZoomOut, Icon.ZoomOut)\n $ButtonZoomOut.onclick = ViewletPdfEvents.handleClickZoomOut\n\n const $ButtonPrint = document.createElement('button')\n $ButtonPrint.textContent = UiStrings.Print\n $ButtonPrint.onclick = ViewletPdfEvents.handleClickPrint\n\n const $PdfToolBar = document.createElement('div')\n $PdfToolBar.className = 'PdfToolBar'\n $PdfToolBar.append($ButtonPreviousPage, $ButtonNextPage, $PageNumber, $NumberOfPages, $ButtonZoomIn, $ButtonZoomOut, $ButtonPrint)\n\n const $PdfContent = document.createElement('div')\n $PdfContent.className = 'PdfContent'\n\n $Viewlet.append($PdfToolBar, $PdfContent)\n\n return {\n $Viewlet,\n $ButtonPreviousPage,\n $ButtonNextPage,\n $ButtonZoomIn,\n $ButtonZoomOut,\n $ButtonPrint,\n $Canvas: undefined,\n $PdfContent,\n $NumberOfPages,\n $PageNumber,\n }\n}\n\nexport const setCanvas = (state, id) => {\n const { $PdfContent } = state\n const $Canvas = OffscreenCanvas.get(id)\n $PdfContent.append($Canvas)\n state.$Canvas = $Canvas\n}\n\nexport const setNumberOfPages = (state, numberOfPages) => {\n const { $NumberOfPages, $PageNumber } = state\n $NumberOfPages.textContent = `of ${numberOfPages}`\n $PageNumber.max = `${numberOfPages}`\n}\n\nexport const setPageNumber = (state, pageNumber) => {\n const { $PageNumber } = state\n $PageNumber.value = `${pageNumber + 1}`\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const focusIndex = (index) => {\n RendererWorker.send('Problems.focusIndex', -1)\n}\n", "import * as Event from '../Event/Event.js'\nimport * as ViewletProblemsFunctions from './ViewletProblemsFunctions.js'\n\nexport const handlePointerDown = (event) => {\n Event.preventDefault(event)\n ViewletProblemsFunctions.focusIndex(-1)\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as ViewletProblemsEvents from './ViewletProblemsEvents.js'\n\nexport const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet Problems'\n $Viewlet.tabIndex = 0\n return {\n $Viewlet,\n }\n}\n\nexport const attachEvents = (state) => {\n const { $Viewlet } = state\n $Viewlet.onpointerdown = ViewletProblemsEvents.handlePointerDown\n}\n\nexport const setFocusedIndex = (state, focusedIndex) => {\n const { $Viewlet } = state\n if (focusedIndex === -1) {\n $Viewlet.classList.add('FocusOutline')\n $Viewlet.focus()\n }\n}\n\nexport const setProblems = (state, problems) => {\n Assert.object(state)\n Assert.array(problems)\n // TODO\n}\n\nexport const setMessage = (state, message) => {\n const { $Viewlet } = state\n $Viewlet.textContent = message\n}\n\nexport const focus = (state) => {\n const { $Viewlet } = state\n $Viewlet.focus()\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleWheel = (deltaY) => {\n RendererWorker.send('QuickPick.handleWheel', deltaY)\n}\n\nexport const handleClickAt = (x, y) => {\n RendererWorker.send('QuickPick.handleClickAt', x, y)\n}\n\nexport const handleInput = (value) => {\n RendererWorker.send('QuickPick.handleInput', value)\n}\n\nexport const handleBlur = () => {\n RendererWorker.send('QuickPick.handleBlur')\n}\n\nexport const handleBeforeInput = (inputType, data, selectionStart, selectionEnd) => {\n RendererWorker.send('QuickPick.handleBeforeInput', inputType, data, selectionStart, selectionEnd)\n}\n", "/* Tries to implement the pattern for combobox with listbox popup https://www.w3.org/TR/wai-aria-1.2/#combobox */\n\nimport * as Event from '../Event/Event.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as WheelEventType from '../WheelEventType/WheelEventType.js'\nimport * as ViewletQuickPickFunctions from './ViewletQuickPickFunctions.js'\n\n// TODO use another virtual list that just appends elements and\n// is optimized for fast show/hide, scrolling performance should\n// be good as well but is not as important as fast show/hide\n\n// TODO screenreader makes pause after reading colon, maybe there is a setting for screenreaders so they speak normally\n\n// TODO state\n\n// TODO when quickpick is shown recalculate style and layout is really slow (>10ms every time)\n\n// TODO accessibility issues with nvda: when pressing escape, it goes into different mode\n// but should just close quick-pick like vscode does\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst getTargetIndex = ($Target) => {\n switch ($Target.className) {\n case 'QuickPickItem':\n case 'QuickPickItem Focused':\n return getNodeIndex($Target)\n case 'QuickPickItemLabel':\n return getNodeIndex($Target.parentNode)\n default:\n return -1\n }\n}\n\nexport const handleWheel = (event) => {\n const { deltaMode, deltaY } = event\n switch (deltaMode) {\n case WheelEventType.DomDeltaLine:\n case WheelEventType.DomDeltaPixel:\n ViewletQuickPickFunctions.handleWheel(deltaY)\n break\n default:\n break\n }\n}\n\nexport const handlePointerDown = (event) => {\n if (Platform.isMobile) {\n // workaround to disable virtual keyboard automatically opening on android\n // see https://stackoverflow.com/questions/48635501/how-to-hide-soft-keyboard-and-keep-input-on-focus#answer-53104238\n const $Input = document.querySelector('#QuickPickHeader .InputBox')\n // @ts-ignore\n $Input.readOnly = true\n }\n Event.preventDefault(event)\n const { clientX, clientY } = event\n ViewletQuickPickFunctions.handleClickAt(clientX, clientY)\n}\n\n// TODO beforeinput event should prevent input event maybe\n// const handleBeforeInput = (event) => {\n// if (!event.data) {\n// return\n// }\n// const value = event.target.value + event.data\n// RendererWorker.send(\n// /* quickPickHandleInput */ 'QuickPick.handleInput',\n// /* value */ value,\n// )\n// }\n\nexport const handleInput = (event) => {\n const $Target = event.target\n const { value } = $Target\n ViewletQuickPickFunctions.handleInput(value)\n}\n\nexport const handleBlur = (event) => {\n ViewletQuickPickFunctions.handleBlur()\n}\n\n// TODO\n// - for windows narrator, ariaLabel works well\n// - for nvda ariaRoleDescription works better\n\nexport const handleBeforeInput = (event) => {\n Event.preventDefault(event)\n const { target, inputType, data } = event\n const { selectionStart, selectionEnd } = target\n ViewletQuickPickFunctions.handleBeforeInput(inputType, data, selectionStart, selectionEnd)\n}\n", "/* Tries to implement the pattern for combobox with listbox popup https://www.w3.org/TR/wai-aria-1.2/#combobox */\n\nimport * as AriaAlert from '../AriaAlert/AriaAlert.js'\nimport * as AriaAutoCompleteType from '../AriaAutoCompleteType/AriaAutoCompleteType.js'\nimport * as AriaBoolean from '../AriaBoolean/AriaBoolean.js'\nimport * as AriaRoleDescriptionType from '../AriaRoleDescriptionType/AriaRoleDescriptionType.js'\nimport * as DomAttributeType from '../DomAttributeType/DomAttributeType.js'\nimport * as DomEventOptions from '../DomEventOptions/DomEventOptions.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\nimport * as ViewletQuickPickEvents from './ViewletQuickPickEvents.js'\n\n// TODO use another virtual list that just appends elements and\n// is optimized for fast show/hide, scrolling performance should\n// be good as well but is not as important as fast show/hide\n\n// TODO screenreader makes pause after reading colon, maybe there is a setting for screenreaders so they speak normally\n\n// TODO state\n\n// TODO when quickpick is shown recalculate style and layout is really slow (>10ms every time)\n\n// TODO accessibility issues with nvda: when pressing escape, it goes into different mode\n// but should just close quick-pick like vscode does\n\nconst activeId = 'QuickPickItemActive'\n\n// TODO forbidden:\n// 1. methods\n// 2. functions inside functions\n\n/**\n * @enum {string}\n */\nconst ClassNames = {\n Label: 'Label',\n QuickPickItem: 'QuickPickItem',\n Icon: 'Icon',\n QuickPickItemDescription: 'QuickPickItemDescription',\n QuickPickStatus: 'QuickPickStatus',\n}\n\n/**\n * @enum {string}\n */\nconst Ids = {\n QuickPickHeader: 'QuickPickHeader',\n QuickPickItems: 'QuickPickItems',\n QuickPick: 'QuickPick',\n}\n\n/**\n * @enum {string}\n */\nconst Roles = {\n ListBox: 'listbox',\n ComboBox: 'combobox',\n Option: 'option',\n}\n\nconst create$QuickPickItem = () => {\n // TODO many quickPick items may not have description -> avoid creating description dom nodes if there is no description\n const $QuickPickItemLabelText = document.createTextNode('')\n\n const $QuickPickItemLabel = document.createElement('div')\n $QuickPickItemLabel.className = ClassNames.Label\n $QuickPickItemLabel.append($QuickPickItemLabelText)\n\n const $QuickPickItemIcon = document.createElement('i')\n $QuickPickItemIcon.className = ClassNames.Icon\n const $QuickPickItem = document.createElement('div') // TODO ul/li would be better for structure but might be slower\n $QuickPickItem.className = ClassNames.QuickPickItem\n $QuickPickItem.role = Roles.Option\n $QuickPickItem.append($QuickPickItemIcon, $QuickPickItemLabel)\n return $QuickPickItem\n}\n\n// TODO add test with show and slicedItems length is 0\n\nconst create$QuickPickDescription = () => {\n const $QuickPickItemDescription = document.createElement('div')\n $QuickPickItemDescription.className = ClassNames.QuickPickItemDescription\n return $QuickPickItemDescription\n}\n\nconst render$QuickPickItemLess = ($QuickPickItem, quickPickItem) => {\n render$QuickPickItemLabel($QuickPickItem.firstChild, quickPickItem)\n const $QuickPickItemDescription = create$QuickPickDescription()\n // render$QuickPickItemDescription($QuickPickItemDescription, quickPickItem)\n\n $QuickPickItem.append($QuickPickItemDescription)\n}\n\nconst render$QuickPickItemLabel = ($QuickPickItem, quickPickItem) => {\n $QuickPickItem.children[1].firstChild.nodeValue = quickPickItem.label\n}\n\nconst render$QuickPickItemIcon = ($QuickPickItem, quickPickItem) => {\n $QuickPickItem.children[0].className = `FileIcon${quickPickItem.icon}`\n}\n\nconst render$QuickPickItemEqual = ($QuickPickItem, quickPickItem) => {\n render$QuickPickItemLabel($QuickPickItem, quickPickItem)\n render$QuickPickItemIcon($QuickPickItem, quickPickItem)\n}\n\nconst render$QuickPickItemMore = ($QuickPickItem, quickPickItem) => {\n render$QuickPickItemLabel($QuickPickItem.firstChild, quickPickItem)\n $QuickPickItem.lastChild.remove()\n}\n\nconst render$QuickPickItem = ($QuickPickItem, quickPickItem) => {\n $QuickPickItem.ariaPosInSet = `${quickPickItem.posInSet}` // TODO pass correct number as prop\n $QuickPickItem.ariaSetSize = `${quickPickItem.setSize}`\n $QuickPickItem.quickPickItem = quickPickItem\n render$QuickPickItemEqual($QuickPickItem, quickPickItem)\n}\n\nconst render$QuickPickItemsLess = ($QuickPickItems, quickPickItems) => {\n for (let i = 0; i < $QuickPickItems.children.length; i++) {\n render$QuickPickItem($QuickPickItems.children[i], quickPickItems[i])\n }\n const fragment = document.createDocumentFragment()\n for (let i = $QuickPickItems.children.length; i < quickPickItems.length; i++) {\n const $QuickPickItem = create$QuickPickItem()\n render$QuickPickItem($QuickPickItem, quickPickItems[i])\n fragment.append($QuickPickItem)\n }\n $QuickPickItems.append(fragment)\n}\n\nconst render$QuickPickItemsEqual = ($QuickPickItems, quickPickItems) => {\n for (let i = 0; i < quickPickItems.length; i++) {\n render$QuickPickItem($QuickPickItems.children[i], quickPickItems[i])\n }\n}\n\nconst render$QuickPickItemsMore = ($QuickPickItems, quickPickItems) => {\n for (let i = 0; i < quickPickItems.length; i++) {\n render$QuickPickItem($QuickPickItems.children[i], quickPickItems[i])\n }\n const diff = $QuickPickItems.children.length - quickPickItems.length\n for (let i = 0; i < diff; i++) {\n $QuickPickItems.lastChild.remove()\n }\n}\n\nconst render$QuickPickItems = ($QuickPickItems, quickPickItems) => {\n if ($QuickPickItems.children.length < quickPickItems.length) {\n render$QuickPickItemsLess($QuickPickItems, quickPickItems)\n } else if ($QuickPickItems.children.length === quickPickItems.length) {\n render$QuickPickItemsEqual($QuickPickItems, quickPickItems)\n } else {\n render$QuickPickItemsMore($QuickPickItems, quickPickItems)\n }\n}\n\nexport const setVisiblePicks = (state, visiblePicks) => {\n if (state.$QuickPickStatus) {\n hideStatus(state)\n }\n render$QuickPickItems(state.$QuickPickItems, visiblePicks)\n}\n\nexport const setFocusedIndex = (state, oldFocusedIndex, newFocusedIndex) => {\n const { $QuickPickItems, $QuickPickInput } = state\n if (oldFocusedIndex >= 0) {\n const $OldItem = $QuickPickItems.children[oldFocusedIndex]\n if ($OldItem) {\n $OldItem.removeAttribute('id')\n }\n }\n if (newFocusedIndex >= 0) {\n const $NewItem = $QuickPickItems.children[newFocusedIndex]\n if ($NewItem) {\n $NewItem.id = activeId\n $QuickPickInput.setAttribute(DomAttributeType.AriaActiveDescendant, activeId)\n }\n }\n}\n\nconst focusElement = ($Element) => {\n if (Platform.isMobile) {\n // workaround to disable virtual keyboard automatically opening on android\n // see https://stackoverflow.com/questions/48635501/how-to-hide-soft-keyboard-and-keep-input-on-focus#answer-53104238\n $Element.readOnly = true\n $Element.focus()\n const handleTimeout = () => {\n $Element.readOnly = false\n }\n setTimeout(handleTimeout, 0)\n } else {\n $Element.focus()\n }\n}\n\nexport const focus = (state) => {\n const { $QuickPickInput } = state\n focusElement($QuickPickInput)\n Focus.setFocus('quickPickInput')\n}\n\n// TODO\n// - for windows narrator, ariaLabel works well\n// - for nvda ariaRoleDescription works better\n\nexport const create = () => {\n const $QuickPickInput = InputBox.create()\n $QuickPickInput.setAttribute(DomAttributeType.AriaControls, Ids.QuickPickItems) // TODO use idl once supported\n $QuickPickInput.role = Roles.ComboBox\n $QuickPickInput.ariaLabel = 'Type the name of a command to run.'\n $QuickPickInput.ariaAutoComplete = AriaAutoCompleteType.List\n $QuickPickInput.onblur = ViewletQuickPickEvents.handleBlur\n $QuickPickInput.addEventListener(DomEventType.BeforeInput, ViewletQuickPickEvents.handleBeforeInput)\n $QuickPickInput.ariaExpanded = AriaBoolean.True\n\n const $QuickPickHeader = document.createElement('div')\n $QuickPickHeader.id = Ids.QuickPickHeader\n $QuickPickHeader.append($QuickPickInput)\n\n const $QuickPickItems = document.createElement('div')\n $QuickPickItems.id = Ids.QuickPickItems\n $QuickPickItems.role = Roles.ListBox\n $QuickPickItems.onpointerdown = ViewletQuickPickEvents.handlePointerDown\n $QuickPickItems.addEventListener(DomEventType.Wheel, ViewletQuickPickEvents.handleWheel, DomEventOptions.Passive)\n\n // TODO this works well with nvda but not with windows narrator\n // probably a bug with windows narrator that doesn't support ariaRoleDescription\n $QuickPickItems.ariaRoleDescription = AriaRoleDescriptionType.QuickInput\n\n const $QuickPick = document.createElement('div')\n $QuickPick.id = Ids.QuickPick\n // $QuickPick.role= 'dialog'\n $QuickPick.append($QuickPickHeader, $QuickPickItems)\n // $QuickPick.setAttribute('aria-modal', 'false') // TODO why is this\n $QuickPick.ariaLabel = 'Quick open'\n\n return {\n $Viewlet: $QuickPick,\n $QuickPick,\n $QuickPickInput,\n $QuickPickItems,\n $QuickPickStatus: undefined,\n }\n}\n\nexport const setPicks = (state, visiblePicks) => {\n render$QuickPickItems(state.$QuickPickItems, visiblePicks)\n}\n\nconst create$QuickPickStatus = () => {\n const $QuickPickStatus = document.createElement('div')\n $QuickPickStatus.className = 'QuickPickStatus'\n // const te.$QuickPickStatus.role = AriaRoles.Status\n // $QuickPickStatus.ariaLive = 'polite'\n // $QuickPickStatus.id = 'QuickPickStatus'\n return $QuickPickStatus\n}\n\nexport const hideStatus = (state) => {\n state.$QuickPickStatus.remove()\n state.$QuickPickStatus = undefined\n}\n\nexport const showNoResults = (state, noResults, unfocusIndex) => {\n setPicks(state, [])\n if (!state.$QuickPickStatus) {\n state.$QuickPickStatus = create$QuickPickStatus()\n state.$QuickPick.append(state.$QuickPickStatus)\n }\n state.$QuickPickStatus.textContent = 'No Results'\n\n // announce to screenreaders that there are no results\n AriaAlert.alert('No results')\n}\n\n// TODO QuickPick module is always loaded lazily -> can create $QuickPick eagerly (no state / less state laying around)\n\n// TODO remove from dom vs display none which should be used?\n\n// TODO have common widgets container for all widgets (this, notifications, context menu)\nexport const dispose = (state) => {\n state.$QuickPickInput.onblur = null\n}\n\nexport const setValue = (state, value) => {\n const { $QuickPickInput } = state\n $QuickPickInput.value = value\n}\n\nexport const setCursorOffset = (state, cursorOffset) => {\n const { $QuickPickInput } = state\n $QuickPickInput.selectionStart = cursorOffset\n $QuickPickInput.selectionEnd = cursorOffset\n}\n\nexport const setItemsHeight = (state, itemsHeight) => {\n const { $QuickPickItems } = state\n SetBounds.setHeight($QuickPickItems, itemsHeight)\n}\n\nexport const noop = (state) => {}\n", "export * from '../ViewletLocations/ViewletLocations.js'\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleContinue = () => {\n RendererWorker.send('Run And Debug.continue')\n}\n\nexport const pause = () => {\n RendererWorker.send('Run And Debug.pause')\n}\n\nexport const stepOver = () => {\n RendererWorker.send('Run And Debug.stepOver')\n}\n\nexport const stepInto = () => {\n RendererWorker.send('Run And Debug.stepInto')\n}\n\nexport const stepOut = () => {\n RendererWorker.send('Run And Debug.stepOut')\n}\n\nexport const handleClickSectionWatch = () => {\n RendererWorker.send('Run And Debug.handleClickSectionWatch')\n}\n\nexport const handleClickSectionBreakpoints = () => {\n RendererWorker.send('Run And Debug.handleClickSectionBreakPoints')\n}\n\nexport const handleClickSectionScope = () => {\n RendererWorker.send('Run And Debug.handleClickSectionScope')\n}\n\nexport const handleClickSectionCallstack = () => {\n RendererWorker.send('Run And Debug.handleClickSectionCallstack')\n}\n\n/**\n *\n * @param {string} value\n */\nexport const handleDebugInput = (value) => {\n RendererWorker.send('Run And Debug.handleDebugInput', value)\n}\n", "import * as Event from '../Event/Event.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as ViewletRunAndDebugFunctions from './ViewletRunAndDebugFunctions.js'\n\n// TODO rename to resume\nconst handleClickContinue = () => {\n ViewletRunAndDebugFunctions.handleContinue()\n}\n\nconst handleClickPause = (event) => {\n ViewletRunAndDebugFunctions.pause()\n}\n\nconst handleClickStepOver = (event) => {\n ViewletRunAndDebugFunctions.stepOver()\n}\n\nconst handleClickStepInto = (event) => {\n ViewletRunAndDebugFunctions.stepInto()\n}\n\nconst handleClickStepOut = (event) => {\n ViewletRunAndDebugFunctions.stepOut()\n}\n\nconst handleClickDebugButton = (event, target) => {\n Event.preventDefault(event)\n switch (target.title) {\n case 'Pause':\n handleClickPause()\n break\n case 'Resume':\n handleClickContinue()\n break\n case 'Step over':\n handleClickStepOver()\n break\n case 'Step into':\n handleClickStepInto()\n break\n case 'Step out':\n handleClickStepOut()\n break\n default:\n console.log(target)\n break\n }\n}\n\nconst handleClickSectionWatch = () => {\n ViewletRunAndDebugFunctions.handleClickSectionWatch()\n}\n\nconst handleClickSectionBreakpoints = () => {\n ViewletRunAndDebugFunctions.handleClickSectionBreakpoints()\n}\n\nconst handleClickSectionScope = () => {\n ViewletRunAndDebugFunctions.handleClickSectionScope()\n}\n\nconst handleClickSectionCallstack = () => {\n ViewletRunAndDebugFunctions.handleClickSectionCallstack()\n}\n\nconst handleClickDebugSectionHeader = (event, target) => {\n Event.preventDefault(event)\n switch (target.textContent) {\n case 'Watch':\n handleClickSectionWatch()\n break\n case 'BreakPoints':\n handleClickSectionBreakpoints()\n break\n case 'Scope':\n handleClickSectionScope()\n break\n case 'Call Stack':\n handleClickSectionCallstack()\n break\n default:\n break\n }\n}\n\nexport const handlePointerDown = (event) => {\n const { target } = event\n switch (target.className) {\n case 'IconButton DebugButton':\n handleClickDebugButton(event, target)\n break\n case 'DebugSectionHeader':\n handleClickDebugSectionHeader(event, target)\n break\n default:\n break\n }\n}\n\nexport const handleDebugInputFocus = () => {\n Focus.setFocus('DebugInput')\n}\n\nexport const handleDebugInput = (event) => {\n const { target } = event\n const { value } = target\n ViewletRunAndDebugFunctions.handleDebugInput(value)\n}\n", "import * as VirtualDom from '../VirtualDom/VirtualDom.js'\nimport * as ViewletDebugEvents from './ViewletRunAndDebugEvents.js'\nimport * as VirtualDomElementProps from '../VirtualDomElementProps/VirtualDomElementProps.js'\n\nexport const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet RunAndDebug'\n $Viewlet.tabIndex = 0\n $Viewlet.onpointerdown = ViewletDebugEvents.handlePointerDown\n\n return {\n $Viewlet,\n }\n}\n\nexport const setDom = (state, dom) => {\n const { $Viewlet } = state\n VirtualDom.renderInto($Viewlet, dom)\n}\n\nexport const setPatches = (state, diff) => {\n const { $Viewlet } = state\n const iter = document.createNodeIterator($Viewlet, NodeFilter.SHOW_ALL)\n let i = 0\n let node = iter.nextNode()\n for (let diffIndex = 0; diffIndex < diff.length; diffIndex++) {\n const diffItem = diff[diffIndex]\n while (i <= diffItem.index) {\n node = iter.nextNode()\n i++\n }\n switch (diffItem.type) {\n case 'updateProp':\n VirtualDomElementProps.setProp(node, diffItem.key, diffItem.value)\n break\n default:\n break\n }\n }\n}\n", "export const Search = 'search'\nexport const Go = 'go'\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\n/**\n *\n * @param {string} value\n */\nexport const handleInput = (value) => {\n RendererWorker.send('Search.handleInput', value)\n}\n\n/**\n *\n * @param {number} index\n */\nexport const handleClick = (index) => {\n RendererWorker.send('Search.handleClick', index)\n}\n\nexport const handleContextMenu = (button, x, y) => {\n RendererWorker.send('Search.handleContextMenu', button, x, y)\n}\n\nexport const handleScrollBarMove = (y) => {\n RendererWorker.send('Search.handleScrollBarMove', y)\n}\n\nexport const handleScrollBarClick = (y) => {\n RendererWorker.send('Search.handleScrollBarClick', y)\n}\n\nexport const handleWheel = (deltaMode, deltaY) => {\n RendererWorker.send('Search.handleWheel', deltaMode, deltaY)\n}\n\nexport const toggleReplace = () => {\n RendererWorker.send('Search.handleToggleButtonClick')\n}\n\nexport const toggleMatchCase = () => {\n RendererWorker.send('Search.toggleMatchCase')\n}\n\nexport const toggleMatchWholeWord = () => {\n RendererWorker.send('Search.toggleMatchWholeWord')\n}\n\nexport const replaceAll = () => {\n RendererWorker.send('Search.replaceAll')\n}\n\nexport const toggleUseRegularExpression = () => {\n RendererWorker.send('Search.toggleUseRegularExpression')\n}\n\nexport const handleReplaceInput = (value) => {\n RendererWorker.send('Search.handleReplaceInput', value)\n}\n\nexport const handleListFocus = () => {\n RendererWorker.send('Search.handleListFocus')\n}\n\nexport const handleListBlur = () => {\n RendererWorker.send('Search.handleListBlur')\n}\n", "import * as DomEventOptions from '../DomEventOptions/DomEventOptions.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as Event from '../Event/Event.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as MouseEventType from '../MouseEventType/MouseEventType.js'\nimport * as WheelEventType from '../WheelEventType/WheelEventType.js'\nimport * as ViewletSearchFunctions from './ViewletSearchFunctions.js'\n\nexport const handleInput = (event) => {\n const { target } = event\n const { value } = target\n ViewletSearchFunctions.handleInput(value)\n}\n\nexport const handleFocus = (event) => {\n Focus.setFocus('SearchInput')\n}\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst getIndexTreeItem = ($Target) => {\n return getNodeIndex($Target)\n}\n\nconst getIndexLabel = ($Target) => {\n return getNodeIndex($Target.parentNode)\n}\n\nconst getIndex = ($Target) => {\n switch ($Target.className) {\n case 'TreeItem':\n return getIndexTreeItem($Target)\n case 'Label':\n return getIndexLabel($Target)\n default:\n return -1\n }\n}\n\nexport const handleClick = (event) => {\n const { target, button } = event\n if (button === MouseEventType.RightClick) {\n return\n }\n const index = getIndex(target)\n ViewletSearchFunctions.handleClick(index)\n}\n\nexport const handleContextMenu = (event) => {\n Event.preventDefault(event)\n const { button, clientX, clientY } = event\n ViewletSearchFunctions.handleContextMenu(button, clientX, clientY)\n}\n\nexport const handleScrollBarThumbPointerMove = (event) => {\n const { clientY } = event\n ViewletSearchFunctions.handleScrollBarMove(clientY)\n}\n\nexport const handleScrollBarPointerUp = (event) => {\n const { target, pointerId } = event\n target.releasePointerCapture(pointerId)\n target.removeEventListener(DomEventType.PointerMove, handleScrollBarThumbPointerMove)\n target.removeEventListener(DomEventType.PointerUp, handleScrollBarPointerUp)\n}\n\nexport const handleScrollBarPointerDown = (event) => {\n const { target, pointerId, clientY } = event\n target.setPointerCapture(pointerId)\n target.addEventListener(DomEventType.PointerMove, handleScrollBarThumbPointerMove, DomEventOptions.Active)\n target.addEventListener(DomEventType.PointerUp, handleScrollBarPointerUp)\n ViewletSearchFunctions.handleScrollBarClick(clientY)\n}\n\nexport const handleToggleButtonClick = (event) => {\n ViewletSearchFunctions.toggleReplace()\n}\n\nexport const handleHeaderClick = (event) => {\n const { target } = event\n const { title } = target\n switch (title) {\n case 'Toggle Replace':\n ViewletSearchFunctions.toggleReplace()\n break\n case 'Match Case':\n ViewletSearchFunctions.toggleMatchCase()\n break\n case 'Use Regular Expression':\n ViewletSearchFunctions.toggleUseRegularExpression()\n break\n case 'Replace All':\n ViewletSearchFunctions.replaceAll()\n break\n case 'Match Whole Word':\n ViewletSearchFunctions.toggleMatchWholeWord()\n break\n default:\n break\n }\n // TODO better way to determine which button was clicked\n}\n\nexport const handleWheel = (event) => {\n const { deltaMode, deltaY } = event\n ViewletSearchFunctions.handleWheel(deltaMode, deltaY)\n}\n\nexport const handleReplaceInput = (event) => {\n const { target } = event\n const { value } = target\n ViewletSearchFunctions.handleReplaceInput(value)\n}\n\nexport const handleListFocus = (event) => {\n ViewletSearchFunctions.handleListFocus()\n}\n\nexport const handleListBlur = (event) => {\n ViewletSearchFunctions.handleListBlur()\n}\n", "import * as AriaBoolean from '../AriaBoolean/AriaBoolean.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as DirentType from '../DirentType/DirentType.js'\nimport * as DomAttributeType from '../DomAttributeType/DomAttributeType.js'\nimport * as DomEventOptions from '../DomEventOptions/DomEventOptions.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as EnterKeyHintType from '../EnterKeyHintType/EnterKeyHintType.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as Icon from '../Icon/Icon.js'\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as InputType from '../InputType/InputType.js'\nimport * as Label from '../Label/Label.js'\nimport * as MaskIcon from '../MaskIcon/MaskIcon.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\nimport * as ViewletSearchEvents from './ViewletSearchEvents.js'\n\nconst activeId = 'TreeItemActive'\nconst focusClassName = 'FocusOutline'\n\n/**\n * @enum {string}\n */\nconst UiStrings = {\n MatchCase: 'Match Case',\n MatchWholeWord: 'Match Whole Word',\n UseRegularExpression: 'Use Regular Expression',\n ToggleReplace: 'Toggle Replace',\n PreserveCase: 'Preserve Case',\n ReplaceAll: 'Replace All',\n}\n\nconst create$SearchFieldButton = (title, icon) => {\n const $Icon = MaskIcon.create(icon)\n const $Button = document.createElement('div')\n $Button.role = AriaRoles.CheckBox\n $Button.className = 'SearchFieldButton'\n $Button.title = title\n $Button.append($Icon)\n return $Button\n}\n\nexport const create = () => {\n // TODO vscode uses a textarea instead of an input\n // which is better because it supports multiline input\n // but it is difficult to implement because the vscode\n // textarea has a flexible max height.\n // The implementation uses a mirror dom element,\n // on text area input the text copied to the\n // mirror dom element, then the mirror dom element height\n // is measured and in turn applied to the text area.\n // This way the text area always has the smallest\n // necessary height value.\n const $ViewletSearchInput = InputBox.create()\n $ViewletSearchInput.classList.add('SearchFieldInput')\n $ViewletSearchInput.placeholder = 'Search'\n $ViewletSearchInput.type = InputType.Search\n $ViewletSearchInput.enterKeyHint = EnterKeyHintType.Search\n\n const $ButtonMatchCase = create$SearchFieldButton(UiStrings.MatchCase, Icon.CaseSensitive)\n const $ButtonMatchWholeWord = create$SearchFieldButton(UiStrings.MatchWholeWord, Icon.WholeWord)\n const $ButtonUseRegularExpression = create$SearchFieldButton(UiStrings.UseRegularExpression, Icon.Regex)\n\n const $SearchField = document.createElement('div')\n $SearchField.className = 'SearchField'\n $SearchField.append($ViewletSearchInput, $ButtonMatchCase, $ButtonMatchWholeWord, $ButtonUseRegularExpression)\n\n const $ToggleButton = document.createElement('button')\n $ToggleButton.className = 'SearchToggleButton'\n $ToggleButton.textContent = 'T'\n $ToggleButton.title = UiStrings.ToggleReplace\n\n const $SearchStatus = document.createElement('div')\n // @ts-ignore\n $SearchStatus.role = AriaRoles.Status\n $SearchStatus.className = 'ViewletSearchMessage'\n\n const $SearchHeader = document.createElement('div')\n $SearchHeader.className = 'SearchHeader'\n $SearchHeader.append($ToggleButton, $SearchField, $SearchStatus)\n\n const $ListItems = document.createElement('div')\n $ListItems.className = 'ListItems'\n $ListItems.role = AriaRoles.None\n // TODO onclick vs onmousedown, should be consistent in whole application\n\n const $ScrollBarThumb = document.createElement('div')\n $ScrollBarThumb.className = 'ScrollBarThumb'\n\n const $ScrollBar = document.createElement('div')\n $ScrollBar.className = 'ScrollBarSmall'\n $ScrollBar.append($ScrollBarThumb)\n\n const $List = document.createElement('div')\n $List.className = 'Viewlet List'\n $List.role = AriaRoles.Tree\n $List.tabIndex = 0\n $List.append($ListItems, $ScrollBar)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet Search'\n $Viewlet.append($SearchHeader, $List)\n\n return {\n $Viewlet,\n $ViewletSearchInput,\n $ListItems,\n $List,\n $SearchStatus,\n $ScrollBar,\n $ScrollBarThumb,\n $ToggleButton,\n $SearchHeader,\n $ViewletSearchReplaceInput: undefined,\n $SearchField,\n $ButtonMatchCase,\n $ButtonMatchWholeWord,\n $ButtonUseRegularExpression,\n }\n}\n\nexport const attachEvents = (state) => {\n const { $ViewletSearchInput, $ScrollBar, $SearchHeader, $List } = state\n $ViewletSearchInput.oninput = ViewletSearchEvents.handleInput\n $ViewletSearchInput.onfocus = ViewletSearchEvents.handleFocus\n\n $ScrollBar.onpointerdown = ViewletSearchEvents.handleScrollBarPointerDown\n\n $SearchHeader.onclick = ViewletSearchEvents.handleHeaderClick\n\n $List.onfocus = ViewletSearchEvents.handleListFocus\n $List.onblur = ViewletSearchEvents.handleListBlur\n $List.onmousedown = ViewletSearchEvents.handleClick\n $List.oncontextmenu = ViewletSearchEvents.handleContextMenu\n $List.addEventListener(DomEventType.Wheel, ViewletSearchEvents.handleWheel, DomEventOptions.Passive)\n}\n\nexport const refresh = (state, context) => {\n Assert.object(state)\n}\n\nexport const focus = (state) => {\n Assert.object(state)\n state.$ViewletSearchInput.focus()\n}\n\nconst create$Row = () => {\n const $Row = document.createElement('div')\n $Row.role = AriaRoles.TreeItem\n $Row.className = 'TreeItem'\n const $Label = Label.create('')\n const $Icon = document.createElement('i')\n $Row.append($Icon, $Label)\n return $Row\n}\n\n// TODO much duplication with explorer\nconst render$Row = ($Row, rowInfo, replacement) => {\n const { top, type, matchStart, matchLength, text, title, icon, setSize, posInSet, depth } = rowInfo\n const $Icon = $Row.childNodes[0]\n const $Label = $Row.childNodes[1]\n $Icon.className = `FileIcon${icon}`\n if (matchLength) {\n const before = text.slice(0, matchStart)\n const highlight = text.slice(matchStart, matchStart + matchLength)\n const after = text.slice(matchStart + matchLength)\n const $Before = document.createTextNode(before)\n const $Highlight = document.createElement('span')\n $Highlight.textContent = highlight\n const $After = document.createTextNode(after)\n if (replacement) {\n $Highlight.className = 'HighlightDeleted'\n const $Replacement = document.createElement('ins')\n $Replacement.className = 'HighlightInserted'\n $Replacement.textContent = replacement\n $Label.replaceChildren($Before, $Highlight, $Replacement, $After)\n } else {\n $Highlight.className = 'Highlight'\n $Label.replaceChildren($Before, $Highlight, $After)\n }\n } else {\n $Label.textContent = text\n }\n $Row.title = title\n $Row.ariaSetSize = `${setSize}`\n $Row.ariaLevel = `${depth}`\n $Row.ariaPosInSet = `${posInSet}`\n $Row.ariaLabel = rowInfo.name\n $Row.ariaDescription = ''\n SetBounds.setTop($Row, top)\n switch (type) {\n // TODO type should be a number for efficiency\n case DirentType.Directory:\n $Row.ariaExpanded = AriaBoolean.False\n break\n case DirentType.DirectoryExpanded:\n $Row.ariaExpanded = AriaBoolean.True\n break\n case DirentType.File:\n $Row.ariaExpanded = undefined\n break\n default:\n break\n }\n}\n\nconst render$RowsLess = ($Rows, rowInfos, replacement) => {\n for (let i = 0; i < $Rows.children.length; i++) {\n render$Row($Rows.children[i], rowInfos[i])\n }\n const fragment = document.createDocumentFragment()\n for (let i = $Rows.children.length; i < rowInfos.length; i++) {\n const $Row = create$Row()\n render$Row($Row, rowInfos[i], replacement)\n fragment.append($Row)\n }\n $Rows.append(fragment)\n}\n\nconst render$RowsEqual = ($Rows, rowInfos, replacement) => {\n for (let i = 0; i < rowInfos.length; i++) {\n render$Row($Rows.children[i], rowInfos[i], replacement)\n }\n}\n\nconst render$RowsMore = ($Rows, rowInfos, replacement) => {\n for (let i = 0; i < rowInfos.length; i++) {\n render$Row($Rows.children[i], rowInfos[i], replacement)\n }\n const diff = $Rows.children.length - rowInfos.length\n for (let i = 0; i < diff; i++) {\n $Rows.lastChild.remove()\n }\n}\n\nconst render$Rows = ($Rows, rowInfos, replacment) => {\n if ($Rows.children.length < rowInfos.length) {\n render$RowsLess($Rows, rowInfos, replacment)\n } else if ($Rows.children.length === rowInfos.length) {\n render$RowsEqual($Rows, rowInfos, replacment)\n } else {\n render$RowsMore($Rows, rowInfos, replacment)\n }\n}\n\nexport const setResults = (state, results, replacement) => {\n Assert.object(state)\n Assert.array(results)\n const { $ListItems } = state\n // TODO should recycle nodes when rendering only search results\n // maybe could also recycle node from noResults and vice versa\n render$Rows($ListItems, results, replacement)\n}\n\nexport const setMessage = (state, message) => {\n const { $SearchStatus } = state\n // TODO recycle text node\n $SearchStatus.textContent = message\n}\n\nexport const setValue = (state, value) => {\n const { $ViewletSearchInput } = state\n $ViewletSearchInput.value = value\n}\n\nexport const dispose = () => {}\n\n// TODO duplicate code with extensions list\n\nexport const setContentHeight = (state, height) => {\n const { $ListItems } = state\n SetBounds.setHeight($ListItems, height)\n}\n\nexport const setNegativeMargin = (state, negativeMargin) => {\n const { $ListItems } = state\n SetBounds.setTop($ListItems, negativeMargin)\n}\n\nconst create$ReplaceField = () => {\n const $Row = document.createElement('div')\n $Row.className = 'SearchField'\n const $ButtonReplaceAllIcon = MaskIcon.create(Icon.ReplaceAll)\n const $ButtonReplaceAll = document.createElement('button')\n $ButtonReplaceAll.title = UiStrings.ReplaceAll\n $ButtonReplaceAll.className = 'SearchFieldButton'\n $ButtonReplaceAll.append($ButtonReplaceAllIcon)\n\n const $ViewletSearchReplaceInput = InputBox.create()\n $ViewletSearchReplaceInput.placeholder = 'Replace'\n $ViewletSearchReplaceInput.type = 'text'\n $ViewletSearchReplaceInput.oninput = ViewletSearchEvents.handleReplaceInput\n\n const $ButtonPreserveCase = document.createElement('button')\n $ButtonPreserveCase.title = UiStrings.PreserveCase\n const $IconPreserveCase = MaskIcon.create(Icon.ArrowDown)\n $ButtonPreserveCase.append($IconPreserveCase)\n\n $Row.append($ViewletSearchReplaceInput, $ButtonReplaceAll)\n return $Row\n}\n\nexport const setReplaceExpanded = (state, replaceExpanded) => {\n console.log('set expanded', replaceExpanded)\n const { $ViewletSearchReplaceInput, $ToggleButton, $SearchField, $ViewletSearchInput } = state\n if (replaceExpanded) {\n $ToggleButton.ariaExpanded = true\n const $ViewletSearchReplaceInput = create$ReplaceField()\n $SearchField.after($ViewletSearchReplaceInput)\n state.$ViewletSearchReplaceInput = $ViewletSearchReplaceInput\n // TODO add it\n } else {\n $ToggleButton.ariaExpanded = false\n $ViewletSearchReplaceInput.remove()\n state.$ViewletSearchReplaceInput = undefined\n // TODO remove it\n }\n}\n\nexport const setButtonsChecked = (state, matchWholeWord, useRegularExpression, matchCase) => {\n console.log({ matchWholeWord, useRegularExpression, matchCase })\n const { $ButtonMatchWholeWord, $ButtonUseRegularExpression, $ButtonMatchCase } = state\n $ButtonMatchWholeWord.ariaChecked = matchWholeWord\n $ButtonUseRegularExpression.ariaChecked = useRegularExpression\n $ButtonMatchCase.ariaChecked = matchCase\n}\n\nexport const setFocusedIndex = (state, oldIndex, newIndex, focused) => {\n const { $List, $ListItems } = state\n switch (oldIndex) {\n case -2:\n break\n case -1:\n $List.classList.remove(focusClassName)\n break\n default:\n const $Dirent = $ListItems.children[oldIndex]\n if ($Dirent) {\n $Dirent.classList.remove(focusClassName)\n $Dirent.removeAttribute('id')\n }\n break\n }\n switch (newIndex) {\n case -2:\n $List.classList.remove(focusClassName)\n $List.removeAttribute(DomAttributeType.AriaActiveDescendant)\n break\n case -1:\n if (focused) {\n $List.classList.add(focusClassName)\n $List.removeAttribute(DomAttributeType.AriaActiveDescendant)\n }\n break\n default:\n if (newIndex >= 0) {\n const $Dirent = $ListItems.children[newIndex]\n if (!$Dirent) {\n break\n }\n $Dirent.id = activeId\n $List.setAttribute(DomAttributeType.AriaActiveDescendant, activeId)\n if (focused) {\n $Dirent.classList.add(focusClassName)\n }\n }\n break\n }\n if (focused) {\n $List.focus()\n Focus.setFocus('SearchResults')\n }\n}\n\nexport * from '../ViewletScrollable/ViewletScrollable.js'\n", "import * as Actions from '../Actions/Actions.js'\nimport * as AriaRoleDescriptionType from '../AriaRoleDescriptionType/AriaRoleDescriptionType.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as Assert from '../Assert/Assert.js'\n\nexport const create = () => {\n const $SideBarTitleAreaTitle = document.createElement('h2')\n $SideBarTitleAreaTitle.id = 'SideBarTitleAreaTitle'\n\n const $SideBarTitleAreaButtons = document.createElement('div')\n $SideBarTitleAreaButtons.id = 'SideBarTitleAreaButtons'\n\n const $SideBarTitleArea = document.createElement('div')\n $SideBarTitleArea.id = 'SideBarTitleArea'\n $SideBarTitleArea.append($SideBarTitleAreaTitle, $SideBarTitleAreaButtons)\n\n // const $SideBarContent = document.createElement('div')\n // $SideBarContent.id = 'SideBarContent'\n\n const $Viewlet = document.createElement('div')\n $Viewlet.id = 'SideBar'\n $Viewlet.className = 'Viewlet SideBar'\n $Viewlet.role = AriaRoles.Complementary\n $Viewlet.ariaRoleDescription = AriaRoleDescriptionType.SideBar\n $Viewlet.append($SideBarTitleArea)\n\n return {\n $Viewlet,\n $SideBar: $Viewlet,\n $SideBarTitleArea,\n $SideBarTitleAreaButtons,\n $SideBarContent: undefined,\n $SideBarTitleAreaTitle,\n $Actions: undefined,\n }\n}\n\nexport const dispose = (state) => {\n Assert.object(state)\n state.$SideBar.replaceChildren()\n}\n\nexport const appendViewlet = (state, name, $Viewlet) => {\n Assert.object(state)\n Assert.string(name)\n const $SideBarTitleAreaTitle = state.$SideBarTitleAreaTitle\n $SideBarTitleAreaTitle.title = name\n $SideBarTitleAreaTitle.textContent = name\n // TODO is it a problem that the id is duplicated for a short amount of time here?\n $Viewlet.id = 'SideBarContent'\n if (state.$SideBarContent) {\n state.$SideBarContent.replaceWith($Viewlet)\n } else {\n state.$SideBar.append($Viewlet)\n }\n state.$SideBarContent = $Viewlet\n}\n\nexport const setTitle = (state, name) => {\n const { $SideBarTitleAreaTitle } = state\n $SideBarTitleAreaTitle.title = name\n $SideBarTitleAreaTitle.textContent = name\n}\n\nexport const setActions = (state, actions) => {\n const { $SideBarTitleArea, $Actions } = state\n const $NewActions = Actions.create(actions)\n if ($Actions) {\n $Actions.replaceWith($NewActions)\n } else {\n $SideBarTitleArea.append($NewActions)\n }\n state.$Actions = $NewActions\n}\n\nexport const focus = async () => {\n // await\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleInput = (value) => {\n RendererWorker.send('SimpleBrowser.handleInput', value)\n}\n\nexport const forward = () => {\n RendererWorker.send('SimpleBrowser.forward')\n}\n\nexport const backward = () => {\n RendererWorker.send('SimpleBrowser.backward')\n}\n\nexport const reload = () => {\n RendererWorker.send('SimpleBrowser.reload')\n}\n\nexport const cancelNavigation = () => {\n RendererWorker.send('SimpleBrowser.cancelNavigation')\n}\n\nexport const openExternal = () => {\n RendererWorker.send('SimpleBrowser.openExternal')\n}\n", "import * as Focus from '../Focus/Focus.js'\nimport * as ViewletSimpleBrowserFunctions from './ViewletSimpleBrowserFunctions.js'\n\nexport const handleInput = (event) => {\n const { target } = event\n const { value } = target\n ViewletSimpleBrowserFunctions.handleInput(value)\n}\n\nexport const handleFocus = (event) => {\n const { target } = event\n Focus.setFocus('SimpleBrowserInput')\n setTimeout(() => {\n target.select()\n })\n}\n\nexport const handleBlur = (event) => {\n const { target } = event\n target.setSelectionRange(0, 0)\n}\n\nexport const handleClickForward = () => {\n ViewletSimpleBrowserFunctions.forward()\n}\n\nexport const handleClickBackward = () => {\n ViewletSimpleBrowserFunctions.backward()\n}\n\nexport const handleClickReload = (event) => {\n const { target } = event\n // TODO maybe set data attribute to check if it is a cancel button\n if (target.title === 'Cancel') {\n ViewletSimpleBrowserFunctions.cancelNavigation()\n } else {\n ViewletSimpleBrowserFunctions.reload()\n }\n}\n\nexport const handleClickOpenExternal = () => {\n ViewletSimpleBrowserFunctions.openExternal()\n}\n", "import * as EnterKeyHintType from '../EnterKeyHintType/EnterKeyHintType.js'\nimport * as Icon from '../Icon/Icon.js'\nimport * as IconButton from '../IconButton/IconButton.js'\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as InputType from '../InputType/InputType.js'\nimport * as MaskImage from '../MaskImage/MaskImage.js'\nimport * as ViewletSimpleBrowserEvents from './ViewletSimpleBrowserEvents.js'\n\n/**\n * @enum {string}\n */\nconst UiStrings = {\n Back: 'Back',\n Forward: 'Forward',\n Reload: 'Reload',\n OpenExternal: 'Open External',\n Cancel: 'Cancel',\n}\n\nexport const create = () => {\n const $ButtonBack = IconButton.create$Button(UiStrings.Back, Icon.ArrowLeft)\n $ButtonBack.onclick = ViewletSimpleBrowserEvents.handleClickBackward\n\n const $ButtonForward = IconButton.create$Button(UiStrings.Forward, Icon.ArrowRight)\n $ButtonForward.onclick = ViewletSimpleBrowserEvents.handleClickForward\n\n const $ButtonReload = IconButton.create$Button(UiStrings.Reload, Icon.Refresh)\n $ButtonReload.onclick = ViewletSimpleBrowserEvents.handleClickReload\n\n const $InputBox = InputBox.create()\n $InputBox.type = InputType.Url\n $InputBox.enterKeyHint = EnterKeyHintType.Go\n $InputBox.oninput = ViewletSimpleBrowserEvents.handleInput\n $InputBox.onfocus = ViewletSimpleBrowserEvents.handleFocus\n $InputBox.onblur = ViewletSimpleBrowserEvents.handleBlur\n\n const $ButtonOpenExternal = IconButton.create$Button(UiStrings.OpenExternal, Icon.LinkExternal)\n $ButtonOpenExternal.onclick = ViewletSimpleBrowserEvents.handleClickOpenExternal\n\n const $SimpleBrowserHeader = document.createElement('div')\n $SimpleBrowserHeader.className = 'SimpleBrowserHeader'\n $SimpleBrowserHeader.append($ButtonBack, $ButtonForward, $ButtonReload, $InputBox, $ButtonOpenExternal)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet SimpleBrowser'\n $Viewlet.append($SimpleBrowserHeader)\n return {\n $Viewlet,\n $InputBox,\n $ButtonBack,\n $ButtonForward,\n $ButtonReload,\n }\n}\n\nexport const setIframeSrc = (state, iframeSrc) => {\n const { $InputBox } = state\n if ($InputBox.value === iframeSrc) {\n return\n }\n $InputBox.value = iframeSrc\n}\n\nexport const setButtonsEnabled = (state, canGoBack, canGoForward) => {\n const { $ButtonForward, $ButtonBack } = state\n $ButtonBack.disabled = !canGoBack\n $ButtonForward.disabled = !canGoForward\n}\n\nexport const setLoading = (state, loading) => {\n const { $ButtonReload } = state\n const $Icon = $ButtonReload.firstChild\n if (loading) {\n $ButtonReload.title = UiStrings.Cancel\n MaskImage.setMaskImage($Icon, Icon.Close)\n } else {\n $ButtonReload.title = UiStrings.Reload\n MaskImage.setMaskImage($Icon, Icon.Refresh)\n }\n}\n\nexport const dispose = (state) => {}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\n/**\n * @param {string} value\n */\nexport const handleInput = (value) => {\n RendererWorker.send('Source Control.handleInput', value)\n}\n\n/**\n * @param {number} index\n */\nexport const handleMouseOver = (index) => {\n RendererWorker.send('Source Control.handleMouseOver', index)\n}\n\n/**\n * @param {number} index\n */\nexport const handleMouseOut = (index) => {\n RendererWorker.send('Source Control.handleMouseOut', index)\n}\n\n/**\n * @param {number} index\n */\nexport const handleClick = (index) => {\n RendererWorker.send('Source Control.handleClick', index)\n}\n\n/**\n * @param {number} index\n */\nexport const handleButtonClick = (index) => {\n RendererWorker.send('Source Control.handleButtonClick', index)\n}\n\n/**\n * @param {number} index\n */\nexport const handleClickAdd = (index) => {\n RendererWorker.send('Source Control.handleClickAdd', index)\n}\n\n/**\n * @param {number} index\n */\nexport const handleClickRestore = (index) => {\n RendererWorker.send('Source Control.handleClickRestore', index)\n}\n\n/**\n * @param {number} index\n */\nexport const handleClickOpenFile = (index) => {\n RendererWorker.send('Source Control.handleClickOpenFile', index)\n}\n\nexport const handleContextMenu = (button, x, y) => {\n RendererWorker.send('Source Control.handleContextMenu', button, x, y)\n}\n", "import { findIndex } from '../../shared/findIndex.js'\nimport * as Event from '../Event/Event.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as ViewletSourceControlFunctions from './ViewletSourceControlFunctions.js'\n\nexport const handleFocus = () => {\n Focus.setFocus('sourceControlInput')\n}\n\nconst getButtonIndex = ($Node) => {\n let index = -1\n while ($Node) {\n if ($Node.className !== 'SourceControlButton') {\n break\n }\n $Node = $Node.previousElementSibling\n index++\n }\n return index\n}\n\nexport const handleClick = (event) => {\n const { target } = event\n if (target.className === 'SourceControlButton') {\n const index = getButtonIndex(target)\n ViewletSourceControlFunctions.handleButtonClick(index)\n return\n }\n const $Parent = target.closest('.SourceControlItems')\n const index = findIndex($Parent, target)\n if (index === -1) {\n return\n }\n ViewletSourceControlFunctions.handleClick(index)\n}\n\nexport const handleMouseOver = (event) => {\n const { target } = event\n const $Parent = target.closest('.SourceControlItems')\n const index = findIndex($Parent, target)\n ViewletSourceControlFunctions.handleMouseOver(index)\n}\n\nexport const handleMouseOut = (event) => {\n const { target, relatedTarget } = event\n const $Parent = relatedTarget.closest('.SourceControlItems')\n if (!$Parent) {\n ViewletSourceControlFunctions.handleMouseOut(-1)\n return\n }\n const index = findIndex($Parent, target)\n ViewletSourceControlFunctions.handleMouseOut(index)\n}\n\nexport const handleContextMenu = (event) => {\n Event.preventDefault(event)\n const { button, clientX, clientY } = event\n ViewletSourceControlFunctions.handleContextMenu(button, clientX, clientY)\n}\n\nexport const handleInput = (event) => {\n const { target } = event\n const { value } = target\n ViewletSourceControlFunctions.handleInput(value)\n}\n", "import * as AriaBoolean from '../AriaBoolean/AriaBoolean.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as IconButton from '../IconButton/IconButton.js'\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as KeyBindings from '../KeyBindings/KeyBindings.js'\nimport * as Logger from '../Logger/Logger.js'\nimport * as MaskIcon from '../MaskIcon/MaskIcon.js'\nimport * as ViewletSourceControlEvents from './ViewletSourceControlEvents.js'\n\nconst create$ItemFile = (item) => {\n const $FileIcon = document.createElement('div')\n $FileIcon.className = `FileIcon${item.icon}`\n\n const $LabelDetail = document.createElement('span')\n $LabelDetail.className = 'LabelDetail'\n $LabelDetail.textContent = item.detail\n\n const $Label = document.createElement('div')\n $Label.className = 'Label'\n $Label.textContent = item.label\n $Label.append($LabelDetail)\n\n const $Item = document.createElement('div')\n $Item.className = 'TreeItem'\n $Item.role = AriaRoles.TreeItem\n $Item.ariaPosInSet = item.posInSet\n $Item.ariaSetSize = item.setSize\n $Item.title = item.file\n $Item.append($FileIcon, $Label)\n\n if (item.decorationIcon) {\n const $DecorationIcon = document.createElement('img')\n $DecorationIcon.className = 'DecorationIcon'\n $DecorationIcon.src = item.decorationIcon\n $DecorationIcon.title = item.decorationIconTitle\n $Item.append($DecorationIcon)\n }\n if (item.decorationStrikeThrough) {\n $Label.classList.add('StrikeThrough')\n }\n\n // TODO use same virtual list as for explorer\n return $Item\n}\n\nconst create$ItemDirectory = (item) => {\n const $Icon = document.createElement('div')\n $Icon.className = 'Chevron'\n $Icon.append(MaskIcon.create(item.icon))\n\n const $Label = document.createElement('div')\n $Label.className = 'Label'\n $Label.textContent = item.label\n\n const $Badge = document.createElement('div')\n $Badge.className = 'SourceControlBadge'\n $Badge.textContent = item.badgeCount\n\n const $Item = document.createElement('div')\n $Item.className = 'TreeItem'\n $Item.role = AriaRoles.TreeItem\n $Item.ariaExpanded = item.type === 'directory-expanded' ? AriaBoolean.True : AriaBoolean.False\n $Item.ariaPosInSet = item.posInSet\n $Item.ariaSetSize = item.setSize\n $Item.append($Icon, $Label, $Badge)\n\n return $Item\n}\n\nconst create$Item = (item) => {\n switch (item.type) {\n case 'file':\n return create$ItemFile(item)\n case 'directory':\n case 'directory-expanded':\n return create$ItemDirectory(item)\n default:\n return undefined\n }\n}\n\nconst getPlaceHolderText = () => {\n return `Message (${KeyBindings.lookupKeyBinding('scm.acceptInput')} to commit on 'master'`\n}\n\nexport const create = () => {\n const $ViewSourceControlInput = InputBox.create()\n $ViewSourceControlInput.placeholder = getPlaceHolderText()\n $ViewSourceControlInput.ariaLabel = 'Source Control Input'\n\n const $SourceControlHeader = document.createElement('div')\n $SourceControlHeader.className = 'SourceControlHeader'\n $SourceControlHeader.append($ViewSourceControlInput)\n\n const $ViewletTree = document.createElement('div')\n $ViewletTree.className = 'SourceControlItems'\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet SourceControl'\n $Viewlet.tabIndex = 0\n $Viewlet.append($SourceControlHeader, $ViewletTree)\n return {\n $Viewlet,\n $ViewletTree,\n $ViewSourceControlInput,\n }\n}\n\nexport const attachEvents = (state) => {\n const { $ViewletTree, $ViewSourceControlInput } = state\n\n $ViewSourceControlInput.onfocus = ViewletSourceControlEvents.handleFocus\n $ViewSourceControlInput.oninput = ViewletSourceControlEvents.handleInput\n\n $ViewletTree.onclick = ViewletSourceControlEvents.handleClick\n $ViewletTree.oncontextmenu = ViewletSourceControlEvents.handleContextMenu\n $ViewletTree.onmouseover = ViewletSourceControlEvents.handleMouseOver\n $ViewletTree.onmouseout = ViewletSourceControlEvents.handleMouseOut\n}\n\nexport const dispose = () => {}\n\nexport const setChangedFiles = (state, workingTree) => {\n Assert.object(state)\n Assert.array(workingTree)\n const $$Entries = workingTree.map(create$Item)\n const { $ViewletTree } = state\n $ViewletTree.replaceChildren(...$$Entries)\n}\n\nexport const setError = (state, error) => {\n Assert.object(state)\n Assert.string(error)\n const $Error = document.createElement('div')\n $Error.className = 'Error'\n $Error.textContent = error\n const { $ViewletTree } = state\n $ViewletTree.append($Error)\n}\n\nexport const setInputValue = (state, value) => {\n const { $ViewSourceControlInput } = state\n $ViewSourceControlInput.value = value\n}\n\nexport const focus = (state) => {\n const { $ViewSourceControlInput } = state\n $ViewSourceControlInput.focus()\n}\n\nconst create$Button = (button) => {\n const $Button = IconButton.create$Button(button.label, button.icon)\n $Button.className = 'SourceControlButton'\n return $Button\n}\n\nconst isLabel = ($Element) => {\n return $Element.className === 'Label'\n}\n\nconst findLabel = ($Children) => {\n for (const $Child of $Children) {\n if (isLabel($Child)) {\n return $Child\n }\n }\n return undefined\n}\n\nconst isSourceControlButton = ($Element) => {\n return $Element.className === 'SourceControlButton'\n}\n\nconst removeItemButtons = ($Label) => {\n let $Node = $Label\n while ($Node) {\n const $Next = $Node.nextElementSibling\n if (isSourceControlButton($Node)) {\n $Node.remove()\n }\n $Node = $Next\n }\n}\n\nexport const setItemButtons = (state, oldIndex, index, buttons) => {\n Assert.number(index)\n Assert.array(buttons)\n const { $ViewletTree } = state\n if (oldIndex !== -1) {\n const $OldItem = $ViewletTree.children[oldIndex]\n if ($OldItem) {\n const $OldLabel = findLabel($OldItem.children)\n removeItemButtons($OldLabel)\n }\n }\n if (index === -1) {\n return\n }\n const $Item = $ViewletTree.children[index]\n if (!$Item) {\n Logger.warn(`no source control item found at index ${index}`)\n return\n }\n const $Label = findLabel($Item.children)\n if (!$Label) {\n return\n }\n removeItemButtons($Label)\n // TODO handle icon loading error?\n $Label.after(...buttons.map(create$Button))\n}\n", "import * as AriaRoleDescriptionType from '../AriaRoleDescriptionType/AriaRoleDescriptionType.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as Logger from '../Logger/Logger.js'\nimport * as MaskImage from '../MaskImage/MaskImage.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nconst getIconClassName = (icon) => {\n switch (icon) {\n case '$(sync-spin)':\n case '$(sync~spin)':\n return 'StatusBarIcon AnimationSpin'\n case '$(sync)':\n return 'StatusBarIcon'\n case '$(source-control)':\n return 'StatusBarIcon'\n default:\n Logger.warn(`unknown icon \"${icon}\"`)\n return ''\n }\n}\n\nconst getMaskImageUrl = (icon) => {\n switch (icon) {\n case '$(sync-spin)':\n case '$(sync~spin)':\n case '$(sync)':\n return 'url(/icons/icon-sync.svg)'\n case '$(source-control)':\n return 'url(/icons/icon-source-control.svg)'\n default:\n return ''\n }\n}\n\nconst create$StatusBarItem = (item) => {\n const $StatusBarItem = document.createElement('li')\n $StatusBarItem.className = 'StatusBarItem'\n $StatusBarItem.role = AriaRoles.Button\n $StatusBarItem.dataset.name = item.name\n $StatusBarItem.tabIndex = -1\n $StatusBarItem.textContent = item.text\n $StatusBarItem.dataset.command = item.command\n if (item.tooltip) {\n $StatusBarItem.title = item.tooltip\n }\n if (item.icon) {\n const $StatusBarItemIcon = document.createElement('span')\n $StatusBarItemIcon.className = getIconClassName(item.icon)\n MaskImage.setMaskImage($StatusBarItemIcon, item.icon)\n $StatusBarItem.prepend($StatusBarItemIcon)\n }\n return $StatusBarItem\n}\n\nconst handleClick = (event) => {\n const $Target = event.target\n if ($Target.className !== 'StatusBarItem') {\n return\n }\n const command = Number.parseInt($Target.dataset.command, 10)\n RendererWorker.send(command)\n}\n\n// TODO get items from renderer worker\n// const statusBarItemsLeft = [\n// {\n// name: 'RunTests',\n// text: 'Run Tests',\n// tooltip: '',\n// command: 909021,\n// },\n// ]\n\n// const statusBarItemsRight = []\n\nexport const create = (statusBarItemsLeft, statusBarItemsRight) => {\n const $StatusBarItemsLeft = document.createElement('ul')\n $StatusBarItemsLeft.id = 'StatusBarItemsLeft'\n\n const $StatusBarItemsRight = document.createElement('ul')\n $StatusBarItemsRight.id = 'StatusBarItemsRight'\n\n const $Viewlet = document.createElement('div')\n $Viewlet.id = 'StatusBar'\n $Viewlet.className = 'Viewlet StatusBar'\n $Viewlet.onclick = handleClick\n $Viewlet.tabIndex = 0\n $Viewlet.role = AriaRoles.Status\n $Viewlet.ariaRoleDescription = AriaRoleDescriptionType.StatusBar\n $Viewlet.ariaLive = 'off' // see https://github.com/microsoft/vscode/issues/94677\n $Viewlet.append($StatusBarItemsLeft, $StatusBarItemsRight)\n\n return {\n $Viewlet,\n $StatusBar: $Viewlet,\n $StatusBarItemsLeft,\n $StatusBarItemsRight,\n }\n}\n\nconst clearNode = (node) => {\n while (node.firstChild) {\n node.firstChild.remove()\n }\n}\n\nexport const setItems = (state, statusBarItemsLeft, statusBarItemsRight) => {\n const $StatusBarItemsLeft = state.$StatusBarItemsLeft\n const $StatusBarItemsRight = state.$StatusBarItemsRight\n clearNode($StatusBarItemsLeft)\n clearNode($StatusBarItemsRight)\n $StatusBarItemsLeft.append(...statusBarItemsLeft.map(create$StatusBarItem))\n $StatusBarItemsRight.append(...statusBarItemsRight.map(create$StatusBarItem))\n}\n\nexport const focus = (state) => {\n Assert.object(state)\n state.$StatusBar.focus()\n}\n", "const BACKGROUND = \"#c00ccc\";\nconst CHAR_WIDTH = 12;\nconst CHAR_HEIGHT = 15;\nconst createDrawCursor = (canvas) => {\n const ctx = canvas.getContext(\"2d\");\n let previousX = -1;\n let previousY = -1;\n let previousCursorStyle = -1;\n const drawCursor = (x, y, cursorVisible, cursorStyle) => {\n if (cursorVisible) {\n if (previousX === x && previousY === y && previousCursorStyle === cursorStyle) {\n return;\n }\n ctx.clearRect(previousX * CHAR_WIDTH, previousY * CHAR_HEIGHT, CHAR_WIDTH, CHAR_HEIGHT);\n switch (cursorStyle) {\n case 1:\n break;\n case 2:\n ctx.fillStyle = BACKGROUND;\n ctx.fillRect(x * CHAR_WIDTH, y * CHAR_HEIGHT, CHAR_WIDTH, CHAR_HEIGHT);\n break;\n case 3:\n break;\n case 4:\n ctx.strokeStyle = BACKGROUND;\n ctx.strokeRect(x * CHAR_WIDTH, y * CHAR_HEIGHT, CHAR_WIDTH, CHAR_HEIGHT);\n break;\n }\n previousX = x;\n previousY = y;\n } else {\n ctx.clearRect(previousX * CHAR_WIDTH, previousY * CHAR_HEIGHT, CHAR_WIDTH, CHAR_HEIGHT);\n }\n };\n return drawCursor;\n};\nconst CHAR_WIDTH$1 = 12;\nconst CHAR_HEIGHT$1 = 15;\nconst BACKGROUND$1 = \"#000000\";\nconst supportsOffscreenCanvas = (() => {\n try {\n const canvas = new OffscreenCanvas(CHAR_WIDTH$1, CHAR_HEIGHT$1);\n canvas.getContext(\"2d\");\n return true;\n } catch {\n return false;\n }\n})();\nconst supportsTransferToImageBitMap = (() => {\n try {\n supportsOffscreenCanvas ? (() => {\n const canvas = new OffscreenCanvas(CHAR_WIDTH$1, CHAR_HEIGHT$1);\n canvas.getContext(\"2d\");\n canvas.transferToImageBitmap();\n })() : (() => {\n const canvas = document.createElement(\"canvas\");\n canvas.width = CHAR_WIDTH$1;\n canvas.height = CHAR_HEIGHT$1;\n canvas.transferToImageBitmap();\n })();\n return true;\n } catch {\n return false;\n }\n})();\nself.supportsTransferToImageBitMap = supportsTransferToImageBitMap;\nconst tmpCanvas = supportsOffscreenCanvas ? new OffscreenCanvas(CHAR_WIDTH$1, CHAR_HEIGHT$1) : (() => {\n const canvas = document.createElement(\"canvas\");\n canvas.width = CHAR_WIDTH$1;\n canvas.height = CHAR_HEIGHT$1;\n return canvas;\n})();\nconst tmpCtx = tmpCanvas.getContext(\"2d\", {\n alpha: false\n});\nconst bitmapCache = Object.create(null);\nconst createDrawLines = (canvas, lines, bufferLines, offsets, attributes, rows, cols) => {\n const ctx = canvas.getContext(\"2d\", {\n alpha: false\n });\n ctx.fillStyle = BACKGROUND$1;\n const drawChar = (char, x, y, background, foreground) => {\n if (char === \" \" && background === \"#000000\") {\n return;\n }\n const cacheKey = `${char}${background}${foreground}`;\n if (!(cacheKey in bitmapCache)) {\n tmpCtx.fillStyle = background;\n tmpCtx.fillRect(0, 0, CHAR_WIDTH$1, CHAR_HEIGHT$1);\n tmpCtx.font = `${CHAR_HEIGHT$1}px monospace`;\n tmpCtx.fillStyle = foreground;\n tmpCtx.fillText(char, 0, CHAR_HEIGHT$1);\n bitmapCache[cacheKey] = supportsTransferToImageBitMap ? tmpCanvas.transferToImageBitmap() : tmpCtx.getImageData(0, 0, CHAR_WIDTH$1, CHAR_HEIGHT$1);\n }\n supportsTransferToImageBitMap ? ctx.drawImage(bitmapCache[cacheKey], x * CHAR_WIDTH$1, y * CHAR_HEIGHT$1) : ctx.putImageData(bitmapCache[cacheKey], x * CHAR_WIDTH$1, y * CHAR_HEIGHT$1);\n };\n const getChars = (y) => {\n const text = new TextDecoder().decode(lines[y].subarray(0, offsets[y]));\n const chars = [...text];\n return chars;\n };\n const drawLine = (bufferY, positionY) => {\n let x = -1;\n const chars = getChars(bufferY);\n const attributesOnLine = attributes[bufferY] || {};\n let currentAttributes = {\n foreground: \"#ffffff\",\n background: \"#000000\"\n };\n while (++x < chars.length) {\n currentAttributes = attributesOnLine[x] || currentAttributes;\n const char = chars[x];\n const background = currentAttributes.background || \"#000000\";\n const foreground = currentAttributes.foreground || \"#ffffff\";\n drawChar(char, x, positionY, background, foreground);\n }\n };\n const clearLines = (x, y, width, height) => {\n ctx.fillRect(x * CHAR_WIDTH$1, y * CHAR_HEIGHT$1, width * CHAR_WIDTH$1, height * CHAR_HEIGHT$1);\n };\n const drawLines = (start, end, bufferYEnd) => {\n clearLines(0, start, cols, end - start);\n if (bufferYEnd < rows) {\n for (let i = 0; i < rows - bufferYEnd; i++) {\n drawLine(bufferLines - i - 1, rows - i);\n }\n for (let i = 0; i < bufferYEnd + 1; i++) {\n drawLine(i, rows - (bufferYEnd - i));\n }\n } else {\n for (let i = 0; i < rows; i++) {\n drawLine(bufferYEnd - i, rows - i);\n }\n }\n };\n return drawLines;\n};\nconst State = {\n TopLevelContent: 1,\n Escaped: 2,\n Csi: 3,\n AfterEscape3: 4,\n Charset: 5,\n AfterEscape3AfterSemicolon: 6,\n Osc: 8,\n Dcs: 9,\n AfterQuestionMark: 10,\n AfterQuestionMark2: 11,\n AfterExclamationMark: 12,\n AfterExclamationMark2: 13,\n AfterSpace: 14,\n AfterSpace2: 15,\n Osc2: 16,\n Osc3: 17\n};\nconst parse = (array, {\n eraseInDisplay,\n eraseToEndOfLine,\n goToHome,\n setCharAttributes,\n bell,\n cursorUp,\n cursorDown,\n cursorRight,\n cursorLeft,\n backspace,\n print,\n setGLevel,\n saveCursor,\n restoreCursor,\n index,\n tabSet,\n reverseIndex,\n keypadApplicationMode,\n keypadNumericMode,\n fullReset,\n nextLine,\n carriageReturn,\n deleteCharacters,\n setWindowTitle,\n cursorPosition,\n softTerminalReset,\n cursorNextLine,\n cursorPrecedingLine,\n cursorCharacterAbsolute,\n cursorForwardTabulation,\n cursorBackwardTabulation,\n insertLines,\n deleteLines,\n scrollUp,\n scrollDown,\n eraseCharacters,\n characterPositionAbsolute,\n characterPositionRelative,\n repeatPrecedingGraphicCharacter,\n sendDeviceAttributesPrimary,\n sendDeviceAttributesTertiary,\n linePositionAbsolute,\n eraseInLine,\n linePositionRelative,\n horizontalAndVerticalPosition,\n tabClear,\n setMode,\n resetMode,\n lineFeed,\n privateModeSet,\n privateModeReset,\n setCursorStyle,\n shiftLeftColumns,\n insertBlankCharacters,\n setTextParameters\n}) => {\n if (!(array instanceof Uint8Array)) {\n throw new Error(\"invalid data, must be of type Uint8Array\");\n }\n let state = State.TopLevelContent;\n let i = 0;\n let currentParam = 0;\n let params = [];\n let printStartIndex = -1;\n while (i < array.length) {\n switch (state) {\n case State.TopLevelContent:\n middle:\n switch (array[i]) {\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 6:\n i++;\n break;\n case 7:\n bell();\n i++;\n break;\n case 8:\n backspace();\n i++;\n break;\n case 9:\n i++;\n break;\n case 10:\n lineFeed();\n i++;\n break;\n case 11:\n case 12:\n i++;\n break;\n case 13:\n carriageReturn();\n i++;\n break;\n case 14:\n case 15:\n case 16:\n case 17:\n case 18:\n case 19:\n case 20:\n case 21:\n case 22:\n case 23:\n case 24:\n case 25:\n case 26:\n i++;\n break;\n case 27:\n state = State.Escaped;\n i++;\n break;\n case 28:\n case 29:\n case 30:\n case 31:\n i++;\n break;\n case 32:\n case 33:\n case 34:\n case 35:\n case 36:\n case 37:\n case 38:\n case 39:\n case 40:\n case 41:\n case 42:\n case 43:\n case 44:\n case 45:\n case 46:\n case 47:\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n case 58:\n case 59:\n case 60:\n case 61:\n case 62:\n case 63:\n case 64:\n case 65:\n case 66:\n case 67:\n case 68:\n case 69:\n case 70:\n case 71:\n case 72:\n case 73:\n case 74:\n case 75:\n case 76:\n case 77:\n case 78:\n case 79:\n case 80:\n case 81:\n case 82:\n case 83:\n case 84:\n case 85:\n case 86:\n case 87:\n case 88:\n case 89:\n case 90:\n case 91:\n case 92:\n case 93:\n case 94:\n case 95:\n case 96:\n case 97:\n case 98:\n case 99:\n case 100:\n case 101:\n case 102:\n case 103:\n case 104:\n case 105:\n case 106:\n case 107:\n case 108:\n case 109:\n case 110:\n case 111:\n case 112:\n case 113:\n case 114:\n case 115:\n case 116:\n case 117:\n case 118:\n case 119:\n case 120:\n case 121:\n case 122:\n case 123:\n case 124:\n case 125:\n case 126:\n case 127:\n printStartIndex = i++;\n while (i < array.length) {\n const element = array[i];\n if (element >= 32 && element < 126) {\n i++;\n continue;\n }\n switch (element) {\n case 27:\n print(array, printStartIndex, i);\n state = State.Escaped;\n i++;\n break middle;\n case 7:\n print(array, printStartIndex, i);\n bell();\n i++;\n state = State.TopLevelContent;\n break middle;\n case 8:\n print(array, printStartIndex, i);\n backspace();\n i++;\n state = State.TopLevelContent;\n break middle;\n case 13:\n print(array, printStartIndex, i);\n carriageReturn();\n i++;\n state = State.TopLevelContent;\n break middle;\n default:\n i++;\n break;\n }\n }\n print(array, printStartIndex, i);\n break;\n default:\n throw new Error(\"no\");\n }\n break;\n case State.Escaped:\n switch (array[i]) {\n case 40:\n state = State.Charset;\n break;\n case 91:\n params = [];\n state = State.Csi;\n break;\n case 93:\n state = State.Osc;\n break;\n case 80:\n state = State.Dcs;\n break;\n case 95:\n break;\n case 94:\n break;\n case 99:\n break;\n case 69:\n nextLine();\n case 68:\n index();\n break;\n case 55:\n saveCursor();\n state = State.TopLevelContent;\n break;\n case 56:\n backspace();\n state = State.TopLevelContent;\n break;\n case 72:\n tabSet();\n break;\n default:\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.Charset:\n i++;\n break;\n case State.Csi:\n switch (array[i]) {\n case 32:\n state = State.AfterSpace;\n break;\n case 33:\n state = State.AfterExclamationMark;\n break;\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n currentParam = array[i] - 48;\n state = State.AfterEscape3;\n break;\n case 63:\n state = State.AfterQuestionMark;\n break;\n case 64:\n insertBlankCharacters(params);\n state = State.TopLevelContent;\n break;\n case 65:\n cursorUp(params);\n state = State.TopLevelContent;\n break;\n case 66:\n cursorDown(params);\n state = State.TopLevelContent;\n break;\n case 67:\n cursorRight(params);\n state = State.TopLevelContent;\n break;\n case 68:\n cursorLeft(params);\n state = State.TopLevelContent;\n break;\n case 69:\n cursorNextLine(params);\n state = State.TopLevelContent;\n break;\n case 70:\n cursorPrecedingLine(params);\n state = State.TopLevelContent;\n break;\n case 71:\n cursorCharacterAbsolute(params);\n state = State.TopLevelContent;\n break;\n case 72:\n cursorPosition(params);\n state = State.TopLevelContent;\n break;\n case 73:\n cursorForwardTabulation(params);\n state = State.TopLevelContent;\n break;\n case 74:\n eraseInDisplay(params);\n state = State.TopLevelContent;\n break;\n case 75:\n eraseInLine(params);\n state = State.TopLevelContent;\n break;\n case 76:\n insertLines(params);\n state = State.TopLevelContent;\n break;\n case 77:\n deleteLines(params);\n state = State.TopLevelContent;\n break;\n case 80:\n deleteCharacters(params);\n state = State.TopLevelContent;\n break;\n case 83:\n scrollUp(params);\n state = State.TopLevelContent;\n break;\n case 84:\n scrollDown(params);\n state = State.TopLevelContent;\n break;\n case 88:\n eraseCharacters(params);\n state = State.TopLevelContent;\n break;\n case 90:\n cursorBackwardTabulation(params);\n state = State.TopLevelContent;\n break;\n case 94:\n scrollDown(params);\n state = State.TopLevelContent;\n break;\n case 96:\n characterPositionAbsolute(params);\n state = State.TopLevelContent;\n break;\n case 97:\n characterPositionRelative(params);\n state = State.TopLevelContent;\n break;\n case 98:\n repeatPrecedingGraphicCharacter(params);\n state = State.TopLevelContent;\n break;\n case 100:\n linePositionAbsolute(params);\n state = State.TopLevelContent;\n break;\n case 101:\n linePositionRelative(params);\n state = State.TopLevelContent;\n break;\n case 102:\n horizontalAndVerticalPosition(params);\n state = State.TopLevelContent;\n break;\n case 103:\n tabClear(params);\n state = State.TopLevelContent;\n break;\n case 104:\n setMode(params);\n state = State.TopLevelContent;\n break;\n case 108:\n resetMode(params);\n state = State.TopLevelContent;\n break;\n case 109:\n setCharAttributes(params);\n state = State.TopLevelContent;\n break;\n case 117:\n restoreCursor();\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.AfterEscape3:\n switch (array[i]) {\n case 32:\n params.push(currentParam);\n state = State.AfterSpace;\n break;\n case 59:\n params.push(currentParam);\n state = State.AfterEscape3AfterSemicolon;\n break;\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n currentParam = currentParam * 10 + array[i] - 48;\n break;\n case 64:\n params.push(currentParam);\n insertBlankCharacters(params);\n state = State.TopLevelContent;\n break;\n case 65:\n params.push(currentParam);\n cursorUp(params);\n state = State.TopLevelContent;\n break;\n case 66:\n params.push(currentParam);\n cursorDown(params);\n state = State.TopLevelContent;\n break;\n case 67:\n params.push(currentParam);\n cursorRight(params);\n state = State.TopLevelContent;\n break;\n case 68:\n params.push(currentParam);\n cursorLeft(params);\n state = State.TopLevelContent;\n break;\n case 69:\n params.push(currentParam);\n cursorNextLine(params);\n state = State.TopLevelContent;\n break;\n case 70:\n params.push(currentParam);\n cursorPrecedingLine(params);\n state = State.TopLevelContent;\n break;\n case 71:\n params.push(currentParam);\n cursorCharacterAbsolute(params);\n state = State.TopLevelContent;\n break;\n case 72:\n params.push(currentParam);\n cursorPosition(params);\n state = State.TopLevelContent;\n break;\n case 73:\n params.push(currentParam);\n cursorForwardTabulation(params);\n state = State.TopLevelContent;\n break;\n case 74:\n params.push(currentParam);\n eraseInDisplay(params);\n state = State.TopLevelContent;\n break;\n case 75:\n params.push(currentParam);\n eraseInLine(params);\n state = State.TopLevelContent;\n break;\n case 76:\n params.push(currentParam);\n insertLines(params);\n state = State.TopLevelContent;\n break;\n case 77:\n params.push(currentParam);\n deleteLines(params);\n state = State.TopLevelContent;\n break;\n case 80:\n params.push(currentParam);\n deleteCharacters(params);\n state = State.TopLevelContent;\n break;\n case 83:\n params.push(currentParam);\n scrollUp(params);\n state = State.TopLevelContent;\n break;\n case 84:\n params.push(currentParam);\n scrollDown(params);\n state = State.TopLevelContent;\n break;\n case 88:\n params.push(currentParam);\n eraseCharacters(params);\n state = State.TopLevelContent;\n break;\n case 90:\n params.push(currentParam);\n cursorBackwardTabulation(params);\n state = State.TopLevelContent;\n break;\n case 94:\n params.push(currentParam);\n scrollDown(params);\n state = State.TopLevelContent;\n break;\n case 96:\n params.push(currentParam);\n characterPositionAbsolute(params);\n state = State.TopLevelContent;\n break;\n case 97:\n params.push(currentParam);\n characterPositionRelative(params);\n state = State.TopLevelContent;\n break;\n case 98:\n params.push(currentParam);\n repeatPrecedingGraphicCharacter(params);\n state = State.TopLevelContent;\n break;\n case 100:\n params.push(currentParam);\n linePositionAbsolute(params);\n state = State.TopLevelContent;\n break;\n case 101:\n params.push(currentParam);\n linePositionRelative(params);\n state = State.TopLevelContent;\n break;\n case 102:\n params.push(currentParam);\n horizontalAndVerticalPosition(params);\n state = State.TopLevelContent;\n break;\n case 103:\n params.push(currentParam);\n tabClear(params);\n state = State.TopLevelContent;\n break;\n case 104:\n params.push(currentParam);\n setMode(params);\n state = State.TopLevelContent;\n break;\n case 108:\n params.push(currentParam);\n resetMode(params);\n state = State.TopLevelContent;\n break;\n case 109:\n params.push(currentParam);\n setCharAttributes(params);\n state = State.TopLevelContent;\n break;\n default:\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.AfterEscape3AfterSemicolon:\n switch (array[i]) {\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n currentParam = array[i] - 48;\n state = State.AfterEscape3;\n break;\n }\n i++;\n break;\n case State.AfterQuestionMark:\n switch (array[i]) {\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n currentParam = array[i] - 48;\n state = State.AfterQuestionMark2;\n break;\n case 74:\n eraseInDisplay(params);\n state = State.TopLevelContent;\n break;\n case 75:\n eraseInLine(params);\n state = State.TopLevelContent;\n break;\n case 104:\n privateModeSet(params);\n state = State.TopLevelContent;\n break;\n case 108:\n privateModeReset(params);\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.AfterQuestionMark2:\n switch (array[i]) {\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n currentParam = currentParam * 10 + array[i] - 48;\n break;\n case 59:\n params.push(currentParam);\n state = State.AfterQuestionMark;\n break;\n case 74:\n params.push(currentParam);\n eraseInDisplay(params);\n state = State.TopLevelContent;\n break;\n case 75:\n params.push(currentParam);\n eraseInLine(params);\n state = State.TopLevelContent;\n break;\n case 104:\n params.push(currentParam);\n privateModeSet(params);\n state = State.TopLevelContent;\n break;\n case 108:\n params.push(currentParam);\n privateModeReset(params);\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.AfterExclamationMark:\n switch (array[i]) {\n case 112:\n softTerminalReset();\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.AfterSpace:\n switch (array[i]) {\n case 64:\n shiftLeftColumns(params);\n state = State.TopLevelContent;\n break;\n case 113:\n setCursorStyle(params);\n state = State.TopLevelContent;\n break;\n case 116:\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.Osc:\n switch (array[i]) {\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n currentParam = array[i] - 48;\n state = State.Osc2;\n break;\n case 7:\n setTextParameters(params);\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.Osc2:\n switch (array[i]) {\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n currentParam = currentParam * 10 + array[i] - 48;\n break;\n case 59:\n params.push(currentParam);\n state = State.Osc3;\n break;\n }\n i++;\n break;\n case State.Osc3:\n switch (array[i]) {\n case 7:\n setTextParameters(params);\n state = State.TopLevelContent;\n break;\n default:\n params.push(array[i]);\n }\n i++;\n }\n }\n};\nconst transformKey = (event) => {\n const modifiers = (event.shiftKey ? 1 : 0) | (event.altKey ? 2 : 0) | (event.ctrlKey ? 4 : 0) | (event.metaKey ? 8 : 0);\n switch (event.key) {\n case \"A\":\n case \"B\":\n case \"C\":\n case \"D\":\n case \"E\":\n case \"F\":\n case \"G\":\n case \"H\":\n case \"I\":\n case \"J\":\n case \"K\":\n case \"L\":\n case \"M\":\n case \"N\":\n case \"O\":\n case \"P\":\n case \"Q\":\n case \"R\":\n case \"S\":\n case \"T\":\n case \"U\":\n case \"V\":\n case \"W\":\n case \"X\":\n case \"Y\":\n case \"Z\":\n if (event.ctrlKey) {\n const char = String.fromCharCode(event.key.charCodeAt() - 64);\n if (event.altKey) {\n return `\u001B${char}`;\n }\n return char;\n }\n return event.key;\n case \"a\":\n case \"b\":\n case \"c\":\n case \"d\":\n case \"e\":\n case \"f\":\n case \"g\":\n case \"h\":\n case \"i\":\n case \"j\":\n case \"k\":\n case \"l\":\n case \"m\":\n case \"n\":\n case \"o\":\n case \"p\":\n case \"q\":\n case \"r\":\n case \"s\":\n case \"t\":\n case \"u\":\n case \"v\":\n case \"w\":\n case \"x\":\n case \"y\":\n case \"z\":\n if (event.ctrlKey) {\n const char = String.fromCharCode(event.key.charCodeAt() - 96);\n if (event.altKey) {\n return `\u001B${char}`;\n }\n return char;\n }\n return event.key;\n case \"F1\":\n return \"\u001BOP\";\n case \"F2\":\n return \"\u001BOQ\";\n case \"F3\":\n return \"\u001BOR\";\n case \"F4\":\n return \"\u001BOS\";\n case \"F5\":\n return \"\u001B[15~\";\n case \"F6\":\n return \"\u001B[17~\";\n case \"F7\":\n return \"\u001B[18~\";\n case \"F8\":\n return \"\u001B[19~\";\n case \"F9\":\n return \"\u001B[20~\";\n case \"F10\":\n return \"\u001B[21~\";\n case \"F11\":\n return \"\u001B[23~\";\n case \"F12\":\n return \"\u001B[24~\";\n case \"Home\":\n if (modifiers) {\n return `\u001B[1;${modifiers + 1}H`;\n }\n return `\u001B[H`;\n case \"End\":\n if (modifiers) {\n return `\u001B[1;${modifiers + 1}F`;\n }\n return `\u001B[F`;\n case \"Insert\":\n if (event.shiftKey || event.ctrlKey) {\n return \"\";\n }\n return \"\u001B[2~\";\n case \"Delete\":\n if (modifiers) {\n return `\u001B[3;${modifiers + 1}~`;\n }\n return \"\u001B[3~\";\n case \"ArrowUp\":\n if (modifiers) {\n return `\u001B[1;${modifiers + 1}A`;\n }\n return \"\u001B[A\";\n case \"ArrowDown\":\n if (modifiers) {\n return `\u001B[1;${modifiers + 1}B`;\n }\n return \"\u001B[B\";\n case \"ArrowRight\":\n if (modifiers) {\n return `\u001B[1;${modifiers + 1}C`;\n }\n return \"\u001B[C\";\n case \"ArrowLeft\":\n if (modifiers) {\n return `\u001B[1;${modifiers + 1}D`;\n }\n return \"\u001B[D\";\n case \"UIKeyInputUpArrow\":\n return \"\u001B[A\";\n case \"UIKeyInputDownArrow\":\n return \"\u001B[B\";\n case \"UIKeyInputRightArrow\":\n return \"\u001B[C\";\n case \"UIKeyInputLeftArrow\":\n return \"\u001B[D\";\n case \"Enter\":\n if (event.altKey) {\n return \"\u001B\\r\";\n }\n return \"\\n\";\n case \"PageUp\":\n if (event.ctrlKey) {\n return `\u001B[5;5~`;\n }\n return \"\u001B[5~\";\n case \"PageDown\":\n if (event.ctrlKey) {\n return `\u001B[6;5~`;\n }\n return `\u001B[6~`;\n case \"Backspace\":\n if (event.altKey) {\n return \"\u0017\";\n }\n if (event.shiftKey) {\n return \"\\b\";\n }\n return \"\\x7F\";\n case \"Tab\":\n if (event.shiftKey) {\n return \"\u001B[Z\";\n }\n return \"\t\";\n case \"Escape\":\n if (event.altKey) {\n return \"\u001B\u001B\";\n }\n return \"\u001B\";\n case \"/\":\n return \"/\";\n case \"?\":\n if (event.ctrlKey) {\n return \"\\x7F\";\n }\n if (event.altKey) {\n return `\u001B?`;\n }\n return event.key;\n case \"|\":\n if (event.ctrlKey) {\n return \"\u001C\";\n }\n if (event.altKey) {\n return `\u001B|`;\n }\n return event.key;\n case \"{\":\n if (event.ctrlKey) {\n return \"\u001B\";\n }\n if (event.altKey) {\n return `\u001B{`;\n }\n return event.key;\n case \"}\":\n if (event.ctrlKey) {\n return \"\u001D\";\n }\n if (event.altKey) {\n return `\u001B}`;\n }\n return event.key;\n case \"_\":\n if (event.ctrlKey) {\n return \"\u001F\";\n }\n if (event.altKey) {\n return `\u001B_`;\n }\n return event.key;\n case \"^\":\n if (event.ctrlKey) {\n return \"\u001E\";\n }\n if (event.altKey) {\n return `\u001B^`;\n }\n return event.key;\n case \"@\":\n if (event.ctrlKey) {\n return \"\\0\";\n }\n if (event.altKey) {\n return `\u001B@`;\n }\n return event.key;\n case \" \":\n return ` `;\n default:\n if (event.key.length > 1) {\n return \"\";\n }\n if (event.altKey) {\n return `\u001B${event.key}`;\n }\n return event.key;\n }\n};\nconst CHAR_WIDTH$2 = 13;\nconst CHAR_HEIGHT$2 = 15;\nconst BACKGROUND$2 = \"#000000\";\nconst FOREGROUND = \"#ffffff\";\nconst COLS = 80;\nconst ROWS = 25;\nconst BUFFER_LINES = 200;\nconst noop = () => {\n};\nconst createTerminal = (root, {handleInput, bell = noop, setWindowTitle = noop}) => {\n let focused = false;\n const handleKeyDown = (event) => {\n const transformedKey = transformKey(event);\n if (transformedKey) {\n handleInput(transformedKey);\n }\n };\n const handleBeforeInput = (event) => {\n event.preventDefault();\n };\n const blur = () => {\n focused = false;\n cursorStyle = 4;\n requestAnimationFrame(render);\n };\n const focus = () => {\n if (focused) {\n return;\n }\n focused = true;\n cursorStyle = 2;\n textarea.focus();\n requestAnimationFrame(render);\n };\n const canvasText = document.createElement(\"canvas\");\n canvasText.className = \"TerminalCanvasText\";\n const canvasCursor = document.createElement(\"canvas\");\n canvasCursor.className = \"TerminalCanvasCursor\";\n const $Layers = document.createElement(\"div\");\n $Layers.className = \"Layers\";\n const textarea = document.createElement(\"textarea\");\n textarea.className = \"TerminalTextArea\";\n $Layers.append(canvasText, canvasCursor);\n root.append(textarea, $Layers);\n textarea.onkeydown = handleKeyDown;\n textarea.addEventListener(\"beforeinput\", handleBeforeInput);\n root.onmousedown = (event) => {\n event.preventDefault();\n focus();\n };\n textarea.onblur = blur;\n const WIDTH = COLS * CHAR_WIDTH$2;\n const HEIGHT = ROWS * (CHAR_HEIGHT$2 + 10);\n canvasText.width = canvasCursor.width = WIDTH;\n canvasText.height = canvasCursor.height = HEIGHT;\n let bufferYEnd = ROWS;\n let cursorYRelative = -ROWS;\n let cursorXRelative = -COLS;\n let foreground = \"#ffffff\";\n let background = \"#000000\";\n let cursorVisible = true;\n let cursorStyle = 2;\n const dirty = {\n start: 0,\n end: 0\n };\n const lines = [];\n const offsets = new Uint8Array(BUFFER_LINES);\n let attributes = {};\n for (let y = 0; y < BUFFER_LINES; y++) {\n lines.push(new Uint8Array(300));\n }\n const textDecoder = new TextDecoder();\n const dirtyMark = (y) => {\n if (y < dirty.start) {\n dirty.start = y;\n } else if (y > dirty.end) {\n dirty.end = y;\n }\n };\n const dirtyClear = () => {\n dirty.start = dirty.end = bufferYEnd + cursorYRelative;\n };\n const callbackFns = {\n eraseInLine() {\n const y = bufferYEnd + cursorYRelative;\n const x = COLS + cursorXRelative;\n offsets[y] = x;\n },\n eraseInDisplay() {\n offsets.fill(0);\n cursorYRelative = -ROWS + 1;\n cursorXRelative = -COLS;\n bufferYEnd = ROWS;\n for (const key of Object.keys(attributes)) {\n delete attributes[key];\n }\n dirtyMark(0);\n dirtyMark(ROWS);\n },\n setCharAttributes(params) {\n if (params[1] === 7) {\n [foreground, background] = [background, foreground];\n } else if (params[1] === 35) {\n foreground = \"#8000ff\";\n } else if (params[1] === 32) {\n foreground = \"#09f900\";\n } else if (params[1] === 34) {\n foreground = \"#0090ff\";\n } else {\n foreground = FOREGROUND;\n background = BACKGROUND$2;\n }\n const y = bufferYEnd + cursorYRelative;\n attributes[y] = attributes[y] || {};\n attributes[y][offsets[y]] = {\n foreground,\n background\n };\n },\n cursorUp() {\n console.log(\"cursor up\");\n },\n cursorDown() {\n },\n cursorRight() {\n cursorXRelative++;\n },\n cursorLeft() {\n console.log(\"cursor left\");\n },\n backspace() {\n cursorXRelative--;\n },\n deleteChars(numberOfChars) {\n const y = bufferYEnd + cursorYRelative;\n const x = COLS + cursorXRelative;\n offsets[y] = x;\n },\n bell,\n print(array, start, end) {\n const subArray = array.subarray(start, end);\n const y = bufferYEnd + cursorYRelative;\n const x = COLS + cursorXRelative;\n lines[y].set(subArray, x);\n cursorXRelative += end - start;\n offsets[y] = COLS + cursorXRelative;\n dirtyMark(y);\n if (x >= COLS - 1) {\n callbackFns.lineFeed();\n }\n },\n lineFeed() {\n if (cursorYRelative === 0) {\n bufferYEnd = (bufferYEnd + 1) % BUFFER_LINES;\n offsets[bufferYEnd] = 0;\n delete attributes[bufferYEnd];\n } else {\n cursorYRelative++;\n }\n foreground = FOREGROUND;\n background = BACKGROUND$2;\n },\n carriageReturn() {\n cursorXRelative = -COLS;\n },\n setWindowTitle,\n cursorPosition(params) {\n if (params.length === 2) {\n const row = params[0];\n const column = params[1];\n cursorYRelative = -ROWS + row;\n cursorXRelative = -COLS + column;\n }\n },\n cursorShow() {\n cursorVisible = true;\n },\n cursorHide() {\n cursorVisible = false;\n },\n insertLines() {\n },\n deleteLines() {\n },\n setTextParameters() {\n },\n privateModeSet() {\n },\n privateModeReset() {\n },\n eraseToEndOfLine() {\n },\n goToHome() {\n },\n setGLevel() {\n },\n saveCursor() {\n },\n restoreCursor() {\n },\n index() {\n },\n tabSet() {\n },\n reverseIndex() {\n },\n keypadApplicationMode() {\n },\n keypadNumericMode() {\n },\n fullReset() {\n },\n nextLine() {\n },\n deleteCharacters() {\n },\n softTerminalReset() {\n },\n cursorNextLine() {\n },\n cursorPrecedingLine() {\n },\n cursorCharacterAbsolute() {\n },\n cursorForwardTabulation() {\n },\n cursorBackwardTabulation() {\n },\n scrollUp() {\n },\n scrollDown() {\n },\n eraseCharacters() {\n },\n characterPositionAbsolute() {\n },\n characterPositionRelative() {\n },\n repeatPrecedingGraphicCharacter() {\n },\n sendDeviceAttributesPrimary() {\n },\n sendDeviceAttributesTertiary() {\n },\n linePositionAbsolute() {\n },\n linePositionRelative() {\n },\n horizontalAndVerticalPosition() {\n },\n tabClear() {\n },\n setMode() {\n },\n resetMode() {\n },\n setCursorStyle() {\n },\n shiftLeftColumns() {\n },\n insertBlankCharacters() {\n }\n };\n const drawLines = createDrawLines(canvasText, lines, BUFFER_LINES, offsets, attributes, ROWS, COLS);\n const drawCursor = createDrawCursor(canvasCursor);\n let scheduled = false;\n const render = () => {\n drawLines(dirty.start, dirty.end + 1, bufferYEnd);\n const y = ROWS + cursorYRelative;\n const x = COLS + cursorXRelative;\n drawCursor(x, y, cursorVisible, cursorStyle);\n scheduled = false;\n dirtyClear();\n };\n const write = (array) => {\n parse(array, callbackFns);\n if (!scheduled) {\n scheduled = true;\n requestAnimationFrame(render);\n }\n };\n const pasteText = (text) => {\n const fixedText = \"\\n\" + text.replaceAll(\"\\n\", \"\\r\\n\");\n const array = new TextEncoder().encode(fixedText);\n write(array);\n };\n return {\n write,\n focus,\n pasteText,\n writeText: pasteText,\n lines\n };\n};\nexport {createTerminal};\nexport default null;\n", "import { createTerminal } from '../../../static/js/termterm.js'\n\nexport const create = ({ $Element, handleInput }) => {\n const state = {\n terminal: createTerminal($Element, { handleInput }),\n }\n return state\n}\n\nexport const close = () => {}\n\n// export const\n\nexport const write = (state, text) => {\n state.terminal.write(text)\n}\n\nexport const wrapTerminalCommand = (id) => {}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleInput = (value) => {\n RendererWorker.send('Terminal.write', value)\n}\n", "import * as Focus from '../Focus/Focus.js'\nimport * as ViewletTerminalFunctions from './ViewletTerminalFunctions.js'\n\nexport const handleInput = (input) => {\n ViewletTerminalFunctions.handleInput(input)\n}\n\nexport const handleFocus = () => {\n Focus.setFocus('terminal')\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Terminal from '../Terminal/Terminal.js'\nimport * as ViewletTerminalEvents from './ViewletTerminalEvents.js'\n\nexport const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet Terminal'\n const terminal = Terminal.create({\n $Element: $Viewlet,\n handleInput: ViewletTerminalEvents.handleInput,\n })\n\n $Viewlet.addEventListener('focusin', ViewletTerminalEvents.handleFocus)\n\n return {\n $Viewlet,\n terminal,\n }\n}\n\nexport const refresh = (state, context) => {\n // state.element.textContent = context.text\n}\n\nexport const dispose = (state) => {\n // TODO unregister callback\n // SharedProcess.unregisterChannel(channel )\n\n window.removeEventListener('resize', state.handleUpdate)\n}\n\nexport const focus = (state) => {\n Assert.object(state)\n const { terminal } = state\n terminal.focus()\n}\n\nexport const reduceFocus = (state, action) => {}\n\n// TODO what is this\nexport const reduceWrite = (state, action) => {\n const { terminal } = state\n Terminal.write(terminal, state)\n}\n\nexport const reduce = (state, action) => {\n switch (action.type) {\n case 'write':\n return reduceWrite(state, action)\n case 'focus':\n return reduceFocus(state, action)\n default:\n break\n }\n}\n\nexport const write = (state, data) => {\n const { terminal } = state\n Terminal.write(terminal, data)\n}\n\nexport const Commands = {\n 9922: write,\n}\n", "import * as Event from '../Event/Event.js'\n\nexport const handleContextMenu = (event) => {\n Event.preventDefault(event)\n}\n", "import * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as ViewletTitleBarEvents from './ViewletTitleBarEvents.js'\n\nexport const create = () => {\n // TODO set aria label for title bar menu\n // TODO add tests for aria properties\n const $Viewlet = document.createElement('div')\n $Viewlet.id = 'TitleBar'\n $Viewlet.className = 'Viewlet TitleBar'\n $Viewlet.ariaLabel = 'Title Bar'\n $Viewlet.role = AriaRoles.ContentInfo\n return {\n $TitleBar: $Viewlet,\n $Viewlet,\n }\n}\n\nexport const attachEvents = (state) => {\n const { $Viewlet } = state\n $Viewlet.oncontextmenu = ViewletTitleBarEvents.handleContextMenu\n}\n\nconst activeClassName = 'TitleBarActive'\n\nexport const setFocused = (state, isFocused) => {\n const { $Viewlet } = state\n if (isFocused) {\n $Viewlet.classList.add(activeClassName)\n } else {\n $Viewlet.classList.remove(activeClassName)\n }\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleClickMinmize = () => {\n RendererWorker.send('TitleBarButtons.handleClickMinimize')\n}\n\nexport const handleClickToggleMaximize = () => {\n RendererWorker.send('TitleBarButtons.handleClickToggleMaximize')\n}\n\nexport const handleClickClose = () => {\n RendererWorker.send('TitleBarButtons.handleClickClose')\n}\n", "import * as ViewletTitleBarButtonsFunctions from './ViewletTitleBarButtonsFunctions.js'\n\n/**\n *\n * @param {MouseEvent} event\n */\nexport const handleTitleBarButtonsClick = (event) => {\n const { target } = event\n // @ts-ignore\n const { id } = target\n switch (id) {\n case 'TitleBarButtonMinimize':\n ViewletTitleBarButtonsFunctions.handleClickMinmize()\n break\n case 'TitleBarButtonToggleMaximize':\n ViewletTitleBarButtonsFunctions.handleClickToggleMaximize()\n break\n case 'TitleBarButtonClose':\n ViewletTitleBarButtonsFunctions.handleClickClose()\n break\n default:\n break\n }\n}\n", "import * as ViewletTitleBarButtonEvents from './ViewletTitleBarButtonsEvents.js'\n\nconst create$TitleBarButton = (id, icon, label) => {\n const $Icon = document.createElement('i')\n $Icon.className = `MaskIcon ${icon}`\n\n const $TitleBarButton = document.createElement('button')\n $TitleBarButton.className = 'TitleBarButton'\n $TitleBarButton.id = `TitleBarButton${id}`\n $TitleBarButton.ariaLabel = label\n $TitleBarButton.append($Icon)\n return $TitleBarButton\n}\n\nexport const create = () => {\n const $ButtonMinimize = create$TitleBarButton(\n 'Minimize',\n 'Minimize',\n 'Minimize'\n )\n const $ButtonToggleMaximize = create$TitleBarButton(\n 'ToggleMaximize',\n 'ToggleMaximize',\n 'Toggle Maximize'\n )\n const $ButtonClose = create$TitleBarButton('Close', 'Close', 'Close')\n\n const $TitleBarButtons = document.createElement('div')\n $TitleBarButtons.id = 'TitleBarButtons'\n $TitleBarButtons.onmousedown =\n ViewletTitleBarButtonEvents.handleTitleBarButtonsClick\n $TitleBarButtons.append($ButtonMinimize, $ButtonToggleMaximize, $ButtonClose)\n return {\n $TitleBarButtons,\n $Viewlet: $TitleBarButtons,\n }\n}\n\nexport const dispose = (state) => {}\n\nexport const setButtons = (state, buttons) => {\n const { $TitleBarButtons } = state\n for (const button of buttons) {\n const $Icon = document.createElement('i')\n $Icon.className = `MaskIcon ${button.icon}`\n const $TitleBarButton = document.createElement('button')\n $TitleBarButton.className = 'TitleBarButton'\n $TitleBarButton.id = `TitleBarButton${button.id}`\n $TitleBarButton.ariaLabel = button.label\n $TitleBarButton.append($Icon)\n $TitleBarButtons.append($TitleBarButton)\n }\n}\n", "export const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet TitleBarIcon'\n return {\n $Viewlet,\n }\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const closeMenu = () => {\n RendererWorker.send('TitleBarMenuBar.closeMenu', false)\n}\n\nexport const handlePointerOver = (index) => {\n RendererWorker.send('TitleBarMenuBar.handleMouseOver', index)\n}\n\nexport const handleMouseOut = (index) => {\n RendererWorker.send('TitleBarMenuBar.handleMouseOut', index)\n}\n\nexport const handleClick = (button, index) => {\n RendererWorker.send('TitleBarMenuBar.handleClick', button, index)\n}\n\nexport const handleMouseOver = (index) => {\n RendererWorker.send('TitleBarMenuBar.handleMouseOver', index)\n}\n\nexport const handleMenuMouseOver = (level, index) => {\n RendererWorker.send('TitleBarMenuBar.handleMenuMouseOver', level, index)\n}\n\nexport const handleMenuMouseDown = (level, index) => {\n RendererWorker.send('TitleBarMenuBar.handleMenuMouseDown', level, index)\n}\n", "import * as FindIndex from '../../shared/findIndex.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as ViewletTitleBarMenuBarFunctions from './ViewletTitleBarMenuBarFunctions.js'\n\nconst isInsideTitleBarMenu = ($Element) => {\n return $Element.classList.contains('MenuItem') || $Element.classList.contains('Menu') || $Element.classList.contains('TitleBarTopLevelEntry')\n}\n\nexport const handleFocusOut = (event) => {\n const $ActiveElement = event.relatedTarget\n if ($ActiveElement && isInsideTitleBarMenu($ActiveElement)) {\n return\n }\n ViewletTitleBarMenuBarFunctions.closeMenu()\n}\n\nexport const handlePointerOver = (event) => {\n const { target } = event\n const index = getIndex(target)\n ViewletTitleBarMenuBarFunctions.handleMouseOver(index)\n}\n\nexport const handlePointerOut = (event) => {\n const { target } = event\n const index = getIndex(target)\n ViewletTitleBarMenuBarFunctions.handleMouseOut(index)\n}\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst getIndex = ($Target) => {\n switch ($Target.className) {\n case 'TitleBarTopLevelEntry':\n return getNodeIndex($Target)\n default:\n return -1\n }\n}\n\nexport const handleClick = (event) => {\n const { button, target } = event\n const index = getIndex(target)\n ViewletTitleBarMenuBarFunctions.handleClick(button, index)\n}\n\nconst getLevelAndIndex = (event) => {\n const { target } = event\n const $Menu = target.closest('.Menu')\n const index = FindIndex.findIndex($Menu, target)\n const { id } = $Menu\n const level = Number.parseInt(id.slice(5))\n return {\n level,\n index,\n }\n}\n\nexport const handleMenuMouseOver = (event) => {\n // TODO just send pixel coordinates instead\n const { level, index } = getLevelAndIndex(event)\n ViewletTitleBarMenuBarFunctions.handleMenuMouseOver(level, index)\n}\n\nexport const handleMenuMouseDown = (event) => {\n const { level, index } = getLevelAndIndex(event)\n ViewletTitleBarMenuBarFunctions.handleMenuMouseDown(level, index)\n}\n\nexport const handleFocus = () => {\n Focus.setFocus('TitleBarMenuBar')\n}\n", "import * as AriaBoolean from '../AriaBoolean/AriaBoolean.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as DomAttributeType from '../DomAttributeType/DomAttributeType.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as MenuItem from '../MenuItem/MenuItem.js'\nimport * as Menu from '../OldMenu/Menu.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\nimport * as Widget from '../Widget/Widget.js'\nimport * as ViewletTitleBarMenuBarEvents from './ViewletTitleBarMenuBarEvents.js'\n\nconst activeId = 'TitleBarEntryActive'\n\nexport const create = () => {\n const $TitleBarMenuBar = document.createElement('div')\n $TitleBarMenuBar.id = 'TitleBarMenuBar'\n $TitleBarMenuBar.role = AriaRoles.MenuBar\n $TitleBarMenuBar.tabIndex = 0\n return {\n $Viewlet: $TitleBarMenuBar,\n $TitleBarMenuBar,\n $$Menus: [],\n }\n}\n\nexport const attachEvents = (state) => {\n const { $TitleBarMenuBar } = state\n $TitleBarMenuBar.onmousedown = ViewletTitleBarMenuBarEvents.handleClick\n $TitleBarMenuBar.addEventListener(DomEventType.FocusOut, ViewletTitleBarMenuBarEvents.handleFocusOut)\n $TitleBarMenuBar.addEventListener(DomEventType.FocusIn, ViewletTitleBarMenuBarEvents.handleFocus)\n $TitleBarMenuBar.onpointerover = ViewletTitleBarMenuBarEvents.handlePointerOver\n $TitleBarMenuBar.onpointerout = ViewletTitleBarMenuBarEvents.handlePointerOut\n}\n\nexport const dispose = (state) => {}\n\nexport const focus = (state) => {\n const { $TitleBarMenuBar } = state\n $TitleBarMenuBar.firstChild.focus()\n}\n\n// TODO set proper tabIndex 0 to focused item https://www.w3.org/TR/wai-aria-practices/examples/menubar/menubar-1/menubar-1.html\n\n// TODO screenreader doesn't read top level label\n// when menu is open,\n// first item is selected,\n// right is clicked it just reads\n// \"Expanded\" instead of \"Selection Expanded\"\n\n// TODO sometimes screenreader reads too much (e.g. \"File, expanded, opens menu, expanded\")\n\n// TODO don't focus on separators\n\n// TODO don't focus on hover\n// only focus on hover when it has already focus or the menu has focus\n\n// TODO title bar menu bar is very inefficient:\n\n// before: 5 times recalculate style\n// 1.37ms Recalculate style\n// 83us Update Layer tree\n// 0.34ms paint\n// 0.79ms composite layer\n// 0.23ms Hit test\n// 1.42ms Recalculate style\n// 1.44ms Recalculate style\n// 2.08ms Recalculate style\n// 0.44ms Recalculate style\n// 0.52ms Layout\n// 0.16ms Update Layer Tree\n// 48us hit test\n// 16us Update Layer Tree\n// 0.36ms paint\n// 0.33ms composite layer\n\n// now: 2 recalculate styles\n// 0.43ms recalculate style\n// 0.53ms recalculate style\n// 0.19ms layout\n// 0.16ms update layer tree\n// 30us hit test\n// 17us update layer tree\n// 0.17ms paint\n// 0.19ms composite layers\n\nconst create$TopLevelEntry = (item) => {\n // const $Label = document.createElement('div')\n // $Label.className = 'TitleBarTopLevelEntryLabel'\n // $Label.textContent = item.label\n\n const $TitleBarTopLevelEntry = document.createElement('div')\n $TitleBarTopLevelEntry.className = 'TitleBarTopLevelEntry'\n $TitleBarTopLevelEntry.ariaHasPopup = AriaBoolean.True\n $TitleBarTopLevelEntry.ariaExpanded = AriaBoolean.False\n $TitleBarTopLevelEntry.role = AriaRoles.MenuItem\n if (item.keyboardShortCut) {\n $TitleBarTopLevelEntry.ariaKeyShortcuts = item.keyboardShortCut\n }\n $TitleBarTopLevelEntry.textContent = item.label\n return $TitleBarTopLevelEntry\n}\n\nexport const setFocusedIndex = (state, unFocusIndex, focusIndex, oldIsMenuOpen, newIsMenuOpen) => {\n Assert.object(state)\n Assert.number(unFocusIndex)\n Assert.number(focusIndex)\n const { $TitleBarMenuBar } = state\n if (unFocusIndex !== -1) {\n const $Child = $TitleBarMenuBar.children[unFocusIndex]\n $Child.ariaExpanded = AriaBoolean.False\n $Child.removeAttribute(DomAttributeType.AriaOwns)\n $Child.removeAttribute('id')\n $Child.textContent = $Child.textContent\n }\n if (focusIndex !== -1) {\n const $Child = $TitleBarMenuBar.children[focusIndex]\n $Child.id = activeId\n const $Label = document.createElement('div')\n $Label.className = 'TitleBarTopLevelEntryLabel'\n $Label.textContent = $Child.textContent\n $Child.replaceChildren($Label)\n\n $TitleBarMenuBar.focus()\n $TitleBarMenuBar.setAttribute(DomAttributeType.AriaActiveDescendant, activeId)\n if (newIsMenuOpen) {\n $Child.setAttribute(DomAttributeType.AriaOwns, 'Menu-0')\n $Child.ariaExpanded = AriaBoolean.True\n }\n }\n}\n\n// TODO the focus variable is confusing: false means keep focus in menubar, true means focus the menu\nexport const openMenu = (state, unFocusIndex, index, level, menuItems, menuFocusedIndex, focus, x, y, width, height) => {\n Assert.object(state)\n Assert.number(unFocusIndex)\n Assert.number(index)\n Assert.number(level)\n Assert.array(menuItems)\n Assert.number(menuFocusedIndex)\n Assert.boolean(focus)\n Assert.number(x)\n Assert.number(y)\n Assert.number(width)\n Assert.number(height)\n const { $TitleBarMenuBar } = state\n // TODO this code is very unclean\n $TitleBarMenuBar.addEventListener('mouseenter', ViewletTitleBarMenuBarEvents.handlePointerOver, {\n capture: true,\n })\n if (unFocusIndex !== -1) {\n $TitleBarMenuBar.children[unFocusIndex].ariaExpanded = AriaBoolean.False\n $TitleBarMenuBar.children[unFocusIndex].removeAttribute(DomAttributeType.AriaOwns)\n }\n $TitleBarMenuBar.children[index].ariaExpanded = AriaBoolean.True\n const $$Menus = Menu.state.$$Menus\n Menu.state.$$Menus = []\n Menu.showControlled({\n x,\n y,\n width,\n height,\n items: menuItems,\n handleFocusOut: ViewletTitleBarMenuBarEvents.handleFocusOut,\n $Parent: $TitleBarMenuBar.children[index],\n level,\n })\n if (menuFocusedIndex !== -1) {\n Menu.focusIndex(0, -1, menuFocusedIndex)\n }\n for (const $Menu of $$Menus) {\n Widget.remove($Menu)\n }\n}\n\n// TODO there need to be two variants of closeMenu: one just closes menu, another close menu and focuses top level entry\nexport const closeMenu = (state, unFocusIndex, index) => {\n const { $TitleBarMenuBar } = state\n if (unFocusIndex !== -1) {\n $TitleBarMenuBar.children[unFocusIndex].ariaExpanded = AriaBoolean.False\n $TitleBarMenuBar.children[unFocusIndex].removeAttribute(DomAttributeType.AriaOwns)\n }\n if (index !== -1) {\n $TitleBarMenuBar.children[index].focus()\n }\n Menu.hide(/* restoreFocus */ false)\n $TitleBarMenuBar.removeEventListener('mouseenter', ViewletTitleBarMenuBarEvents.handlePointerOver, {\n capture: true,\n })\n}\n\nexport const setEntries = (state, titleBarEntries) => {\n const { $TitleBarMenuBar } = state\n $TitleBarMenuBar.append(...titleBarEntries.map(create$TopLevelEntry))\n}\n\nconst create$Menu = () => {\n const $Menu = document.createElement('div')\n $Menu.className = 'Menu'\n $Menu.role = AriaRoles.Menu\n $Menu.tabIndex = -1\n // $ContextMenu.onmousedown = contextMenuHandleMouseDown\n // TODO mousedown vs click? (click is usually better but mousedown is faster, why wait 100ms?)\n // $Menu.addEventListener('mousedown', handleMouseDown)\n // $Menu.addEventListener('mouseenter', handleMouseEnter, {\n // capture: true,\n // })\n // $Menu.addEventListener('mouseleave', handleMouseLeave, {\n // capture: true,\n // })\n // $Menu.addEventListener('mousemove', handleMouseMove, {\n // passive: true,\n // })\n // $Menu.onkeydown = handleKeyDown\n // $Menu.addEventListener('focusout', handleFocusOut)\n // $Menu.oncontextmenu = handleContextMenu\n // $ContextMenu.onfocus = handleFocus\n // $ContextMenu.onblur = handleBlur\n return $Menu\n}\n\n// TODO recycle menus\nexport const setMenus = (state, changes) => {\n const { $$Menus } = state\n for (const change of changes) {\n const type = change[0]\n switch (type) {\n case 'addMenu': {\n const menu = change[1]\n const $Menu = create$Menu()\n $Menu.onmouseover = ViewletTitleBarMenuBarEvents.handleMenuMouseOver\n $Menu.onmousedown = ViewletTitleBarMenuBarEvents.handleMenuMouseDown\n const { x, y, width, height, level, focusedIndex } = menu\n SetBounds.setBounds($Menu, x, y, width, height)\n $Menu.append(...menu.items.map(MenuItem.create$MenuItem))\n $Menu.id = `Menu-${level}`\n Widget.append($Menu)\n if (focusedIndex !== -1) {\n const $Child = $Menu.children[focusedIndex]\n $Child.classList.add('Focused')\n // @ts-ignore\n $Child.focus()\n }\n $$Menus.push($Menu)\n\n break\n }\n case 'updateMenu': {\n const menu = change[1]\n const newLength = change[2]\n const replaceItems = change[3]\n const { level, x, y, width, height, focusedIndex, items, expanded } = menu\n const $Menu = $$Menus[level]\n SetBounds.setBounds($Menu, x, y, width, height)\n // TODO recycle menu item nodes\n const $$Children = items.map(MenuItem.create$MenuItem)\n if (focusedIndex !== -1) {\n const $Child = $$Children[focusedIndex]\n $Child.classList.add('Focused')\n if (expanded) {\n $Child.ariaExpanded = true\n $Child.setAttribute(DomAttributeType.AriaOwns, `Menu-${level + 1}`)\n }\n }\n $Menu.replaceChildren(...$$Children)\n if (level === newLength - 1) {\n if (focusedIndex === -1) {\n $Menu.focus()\n } else {\n const $Child = $Menu.children[focusedIndex]\n $Child.focus()\n }\n }\n\n break\n }\n case 'closeMenus': {\n const keepCount = change[1]\n const $$ToDispose = $$Menus.slice(keepCount)\n for (const $ToDispose of $$ToDispose) {\n Widget.remove($ToDispose)\n }\n $$Menus.length = keepCount\n\n break\n }\n // No default\n }\n }\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleVideoError = (code, message) => {\n RendererWorker.send('Video.handleVideoError', code, message)\n}\n", "import * as ViewletVideoFunctions from './ViewletVideoFunctions.js'\n\nexport const handleVideoError = (event) => {\n const { target } = event\n const { error } = target\n const { code, message } = error\n ViewletVideoFunctions.handleVideoError(code, message)\n}\n", "// based on the video editor by vscode\n\nimport * as ViewletVideoEvents from './ViewletVideoEvents.js'\n\nexport const create = () => {\n const $Video = document.createElement('video')\n $Video.className = 'VideoVideo'\n $Video.controls = true\n\n const $Content = document.createElement('div')\n $Content.className = 'VideoContent'\n $Content.append($Video)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet Video'\n $Viewlet.append($Content)\n return {\n $Viewlet,\n $Video,\n $Content,\n $VideoErrorMessage: undefined,\n }\n}\n\nexport const attachEvents = (state) => {\n const { $Video } = state\n $Video.onerror = ViewletVideoEvents.handleVideoError\n}\n\nexport const setSrc = (state, src) => {\n const { $Video } = state\n $Video.src = src\n}\n\nexport const setVideoErrorMessage = (state, videoErrorMessage) => {\n if (!state.$VideoErrorMessage) {\n state.$VideoErrorMessage = document.createElement('div')\n state.$VideoErrorMessage.className = 'VideoErrorMessage'\n state.$Content.append(state.$VideoErrorMessage)\n }\n const { $VideoErrorMessage } = state\n $VideoErrorMessage.textContent = videoErrorMessage\n}\n", "import * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\n\nexport const load = (moduleId) => {\n switch (moduleId) {\n case ViewletModuleId.ImagePreview:\n return import('../ImagePreview/ImagePreview.js')\n case ViewletModuleId.ActivityBar:\n return import('../ViewletActivityBar/ViewletActivityBar.js')\n case ViewletModuleId.Audio:\n return import('../ViewletAudio/ViewletAudio.js')\n case ViewletModuleId.Clock:\n return import('../ViewletClock/ViewletClock.js')\n case ViewletModuleId.ColorPicker:\n return import('../ViewletColorPicker/ViewletColorPicker.js')\n case ViewletModuleId.DebugConsole:\n return import('../ViewletDebugConsole/ViewletDebugConsole.js')\n case ViewletModuleId.Dialog:\n return import('../ViewletDialog/ViewletDialog.js')\n case ViewletModuleId.DiffEditor:\n return import('../ViewletDiffEditor/ViewletDiffEditor.js')\n case ViewletModuleId.EditorCompletion:\n return import('../ViewletEditorCompletion/ViewletEditorCompletion.js')\n case ViewletModuleId.EditorImage:\n return import('../ViewletEditorImage/ViewletEditorImage.js')\n case ViewletModuleId.EditorPlainText:\n return import('../ViewletEditorPlainText/ViewletEditorPlainText.js')\n case ViewletModuleId.EditorText:\n return import('../ViewletEditorText/ViewletEditorText.js')\n case ViewletModuleId.Empty:\n return import('../ViewletEmpty/ViewletEmpty.js')\n case ViewletModuleId.Error:\n return import('../ViewletError/ViewletError.js')\n case ViewletModuleId.Explorer:\n return import('../ViewletExplorer/ViewletExplorer.js')\n case ViewletModuleId.ExtensionDetail:\n return import('../ViewletExtensionDetail/ViewletExtensionDetail.js')\n case ViewletModuleId.Extensions:\n return import('../ViewletExtensions/ViewletExtensions.js')\n case ViewletModuleId.FindWidget:\n return import('../ViewletFindWidget/ViewletFindWidget.js')\n case ViewletModuleId.Implementations:\n return import('../ViewletImplementations/ViewletImplementations.js')\n case ViewletModuleId.KeyBindings:\n return import('../ViewletKeyBindings/ViewletKeyBindings.js')\n case ViewletModuleId.Layout:\n return import('../ViewletLayout/ViewletLayout.js')\n case ViewletModuleId.Main:\n return import('../ViewletMain/ViewletMain.js')\n case ViewletModuleId.MainTabs:\n return import('../ViewletMainTabs/ViewletMainTabs.js')\n case ViewletModuleId.Output:\n return import('../ViewletOutput/ViewletOutput.js')\n case ViewletModuleId.Panel:\n return import('../ViewletPanel/ViewletPanel.js')\n case ViewletModuleId.Pdf:\n return import('../ViewletPdf/ViewletPdf.js')\n case ViewletModuleId.Problems:\n return import('../ViewletProblems/ViewletProblems.js')\n case ViewletModuleId.QuickPick:\n return import('../ViewletQuickPick/ViewletQuickPick.js')\n case ViewletModuleId.References:\n return import('../ViewletReferences/ViewletReferences.js')\n case ViewletModuleId.RunAndDebug:\n return import('../ViewletRunAndDebug/ViewletRunAndDebug.js')\n case ViewletModuleId.Search:\n return import('../ViewletSearch/ViewletSearch.js')\n case ViewletModuleId.SideBar:\n return import('../ViewletSideBar/ViewletSideBar.js')\n case ViewletModuleId.SimpleBrowser:\n return import('../ViewletSimpleBrowser/ViewletSimpleBrowser.js')\n case ViewletModuleId.SourceControl:\n return import('../ViewletSourceControl/ViewletSourceControl.js')\n case ViewletModuleId.StatusBar:\n return import('../ViewletStatusBar/ViewletStatusBar.js')\n case ViewletModuleId.Terminal:\n return import('../ViewletTerminal/ViewletTerminal.js')\n case ViewletModuleId.TitleBar:\n return import('../ViewletTitleBar/ViewletTitleBar.js')\n case ViewletModuleId.TitleBarButtons:\n return import('../ViewletTitleBarButtons/ViewletTitleBarButtons.js')\n case ViewletModuleId.TitleBarIcon:\n return import('../ViewletTitleBarIcon/ViewletTitleBarIcon.js')\n case ViewletModuleId.TitleBarMenuBar:\n return import('../ViewletTitleBarMenuBar/ViewletTitleBarMenuBar.js')\n case ViewletModuleId.Video:\n return import('../ViewletVideo/ViewletVideo.js')\n default:\n throw new Error(`unknown module ${moduleId}`)\n }\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Logger from '../Logger/Logger.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\nimport * as ViewletModule from '../ViewletModule/ViewletModule.js'\nimport * as KeyBindings from '../KeyBindings/KeyBindings.js'\n\nexport const state = {\n instances: Object.create(null),\n currentSideBarView: undefined,\n currentPanelView: undefined,\n modules: Object.create(null),\n}\n\nexport const mount = ($Parent, state) => {\n $Parent.replaceChildren(state.$Viewlet)\n}\n\nexport const create = (id) => {\n const module = state.modules[id]\n if (!module) {\n throw new Error(`module not found: ${id}`)\n }\n if (state.instances[id] && state.instances[id].state.$Viewlet.isConnected) {\n state.instances[id].state.$Viewlet.remove()\n }\n const instanceState = module.create()\n if (module.attachEvents) {\n module.attachEvents(instanceState)\n }\n state.instances[id] = {\n state: instanceState,\n factory: module,\n }\n}\n\nexport const addKeyBindings = (id, keyBindings) => {\n KeyBindings.addKeyBindings(id, keyBindings)\n}\n\nexport const removeKeyBindings = (id) => {\n KeyBindings.removeKeyBindings(id)\n}\n\nexport const loadModule = async (id) => {\n const module = await ViewletModule.load(id)\n state.modules[id] = module\n}\n\nexport const invoke = (viewletId, method, ...args) => {\n const instance = state.instances[viewletId]\n if (!instance || !instance.factory) {\n Logger.warn(`viewlet instance ${viewletId} not found`)\n return\n }\n if (typeof instance.factory[method] !== 'function') {\n Logger.warn(`method ${method} in ${viewletId} not implemented`)\n return\n }\n return instance.factory[method](instance.state, ...args)\n}\n\nexport const focus = (viewletId) => {\n const instance = state.instances[viewletId]\n if (instance && instance.factory && instance.factory.focus) {\n instance.factory.focus(instance.state)\n } else {\n // TODO push focusContext\n }\n}\n\n/**\n * @deprecated\n */\nexport const refresh = (viewletId, viewletContext) => {\n const instance = state.instances[viewletId]\n if (instance) {\n instance.factory.refresh(instance.state, viewletContext)\n } else {\n state.refreshContext[viewletId] = viewletContext\n }\n}\n\n// TODO handle error when viewlet creation fails\n\n// TODO remove send -> use invoke instead\nexport const send = (viewletId, method, ...args) => {\n const instance = state.instances[viewletId]\n if (instance) {\n instance.factory[method](...args)\n } else {\n // TODO\n Logger.warn('instance not present')\n }\n}\n\nconst specialIds = new Set(['TitleBar', 'SideBar', 'Main', 'ActivityBar', 'StatusBar', 'Panel'])\n\nconst isSpecial = (id) => {\n return specialIds.has(id)\n}\n\nconst createPlaceholder = (viewletId, parentId, top, left, width, height) => {\n const $PlaceHolder = document.createElement('div')\n $PlaceHolder.className = `Viewlet ${viewletId}`\n SetBounds.setBounds($PlaceHolder, left, top, width, height)\n if (isSpecial(viewletId)) {\n $PlaceHolder.id = viewletId\n }\n const parentInstance = state.instances[parentId]\n const $Parent = parentInstance.state.$Viewlet\n $Parent.append($PlaceHolder)\n state.instances[viewletId] = {\n state: {\n $Viewlet: $PlaceHolder,\n },\n }\n}\n\n// TODO this code is bad\nexport const sendMultiple = (commands) => {\n for (const command of commands) {\n const [_, viewletId, method, ...args] = command\n switch (_) {\n case 'Viewlet.ariaAnnounce': {\n ariaAnnounce(viewletId)\n\n break\n }\n case 'Viewlet.setBounds': {\n setBounds(viewletId, method, ...args)\n\n break\n }\n case 'Viewlet.create': {\n create(viewletId)\n\n break\n }\n case 'Viewlet.append': {\n append(viewletId, method, ...args)\n\n break\n }\n case 'Viewlet.dispose': {\n dispose(viewletId)\n\n break\n }\n case 'Viewlet.createPlaceholder': {\n createPlaceholder(viewletId, method, ...args)\n\n break\n }\n case 'Viewlet.handleError': {\n handleError(viewletId, method, ...args)\n\n break\n }\n case 'Viewlet.focus': {\n focus(viewletId)\n\n break\n }\n case 'Viewlet.appendViewlet': {\n appendViewlet(viewletId, method, ...args)\n\n break\n }\n case 'Viewlet.addKeyBindings':\n addKeyBindings(viewletId, method)\n break\n case 'Viewlet.removeKeyBindings':\n removeKeyBindings(viewletId)\n break\n default: {\n invoke(viewletId, method, ...args)\n }\n }\n }\n}\n\nexport const dispose = (id) => {\n try {\n Assert.string(id)\n const { instances } = state\n const instance = instances[id]\n if (!instance) {\n Logger.warn(`viewlet instance ${id} not found and cannot be disposed`)\n return\n }\n if (instance.factory.dispose) {\n instance.factory.dispose(instance.state)\n }\n if (instance.state.$Viewlet && instance.state.$Viewlet.isConnected) {\n instance.state.$Viewlet.remove()\n }\n delete instances[id]\n } catch {\n throw new Error(`Failed to dispose ${id}`)\n }\n}\n\n/**\n * @deprecated\n */\nexport const replace = () => {\n // TODO maybe check if viewlet can be recycled\n}\n\nexport const handleError = (id, parentId, message) => {\n Logger.info(`[viewlet-error] ${id}: ${message}`)\n const instance = state.instances[id]\n if (instance && instance.state.$Viewlet.isConnected) {\n instance.state.$Viewlet.remove()\n }\n if (instance && instance.factory && instance.factory.handleError) {\n instance.factory.handleError(instance.state, message)\n return\n }\n if (instance && instance.state.$Viewlet) {\n instance.state.$Viewlet.textContent = `${message}`\n }\n // TODO error should bubble up to until highest possible component\n const parentInstance = state.instances[parentId]\n if (parentInstance && parentInstance.factory && parentInstance.factory.handleError) {\n parentInstance.factory.handleError(instance.state, message)\n }\n}\n\n/**\n * @deprecated\n */\nexport const appendViewlet = (parentId, childId, focus) => {\n if (parentId === 'Widget') {\n // TODO\n return\n }\n const parentInstanceState = state.instances[parentId] // TODO must ensure that parent is already created\n const parentModule = parentInstanceState.factory\n const childInstance = state.instances[childId]\n if (!childInstance) {\n throw new Error(`child instance ${childId} must be defined to be appended to parent ${parentId}`)\n }\n parentModule.appendViewlet(parentInstanceState.state, childInstance.factory.name, childInstance.state.$Viewlet)\n if (focus && childInstance.factory.focus) {\n childInstance.factory.focus(childInstance.state)\n }\n}\n\nconst ariaAnnounce = async (message) => {\n const AriaAlert = await import('../AriaAlert/AriaAlert.js')\n AriaAlert.alert(message)\n}\n\nconst append = (parentId, childId, referenceNodes) => {\n const parentInstance = state.instances[parentId]\n const $Parent = parentInstance.state.$Viewlet\n const childInstance = state.instances[childId]\n const $Child = childInstance.state.$Viewlet\n if (referenceNodes) {\n // TODO this might be too inefficient\n if (childId === referenceNodes[0]) {\n $Parent.prepend($Child)\n return\n }\n for (let i = 0; i < referenceNodes.length; i++) {\n const id = referenceNodes[i]\n if (id === childId) {\n for (let j = i - 1; j >= 0; j--) {\n const beforeId = referenceNodes[j]\n if (state.instances[beforeId]) {\n const $ReferenceNode = state.instances[beforeId].state.$Viewlet\n $ReferenceNode.after($Child)\n return\n }\n }\n for (let j = i + 1; j < referenceNodes.length; j++) {\n const afterId = referenceNodes[j]\n if (state.instances[afterId]) {\n const $ReferenceNode = state.instances[afterId].state.$Viewlet\n $ReferenceNode.before($Child)\n return\n }\n }\n }\n }\n $Parent.append($Child)\n } else {\n $Parent.append($Child)\n }\n if (childInstance.factory.postAppend) {\n childInstance.factory.postAppend(childInstance.state)\n }\n}\n\nconst appendToBody = (childId) => {\n const $Parent = document.body\n const childInstance = state.instances[childId]\n const $Child = childInstance.state.$Viewlet\n $Parent.append($Child)\n}\n\nconst getFn = (command) => {\n switch (command) {\n case 'Viewlet.create':\n return create\n case 'Viewlet.send':\n return invoke\n case 'Viewlet.show':\n return show\n case 'Viewlet.dispose':\n return dispose\n case 'Viewlet.setBounds':\n return setBounds\n case 'Viewlet.ariaAnnounce':\n return ariaAnnounce\n case 'Viewlet.append':\n return append\n case 'Viewlet.appendToBody':\n return appendToBody\n case 'Viewlet.createPlaceholder':\n return createPlaceholder\n case 'Viewlet.focus':\n return focus\n case 'Viewlet.appendViewlet':\n return appendViewlet\n case 'Viewlet.addKeyBindings':\n return addKeyBindings\n default:\n throw new Error(`unknown command ${command}`)\n }\n}\n\nexport const executeCommands = (commands) => {\n for (const [command, ...args] of commands) {\n const fn = getFn(command)\n fn(...args)\n }\n}\n\nexport const show = (id) => {\n const instance = state.instances[id]\n const $Viewlet = instance.state.$Viewlet\n const $Workbench = document.getElementById('Workbench')\n $Workbench.append($Viewlet)\n if (instance.factory.focus) {\n instance.factory.focus(instance.state)\n }\n}\n\nexport const setBounds = (id, left, top, width, height) => {\n const instance = state.instances[id]\n if (!instance) {\n return\n }\n const $Viewlet = instance.state.$Viewlet\n SetBounds.setBounds($Viewlet, left, top, width, height)\n}\n", "import * as Viewlet from '../Viewlet/Viewlet.js'\n\nexport const name = 'Viewlet'\n\nexport const Commands = {\n appendViewlet: Viewlet.appendViewlet,\n dispose: Viewlet.dispose,\n executeCommands: Viewlet.executeCommands,\n focus: Viewlet.focus,\n handleError: Viewlet.handleError,\n invoke: Viewlet.invoke,\n loadModule: Viewlet.loadModule,\n refresh: Viewlet.refresh,\n send: Viewlet.invoke,\n sendMultiple: Viewlet.sendMultiple,\n setBounds: Viewlet.setBounds,\n show: Viewlet.show,\n addKeyBindings: Viewlet.addKeyBindings,\n removeKeyBindings: Viewlet.removeKeyBindings,\n}\n", "export const LocalStorage = 1\n\nexport const SessionStorage = 2\n", "import * as WebStorageType from '../WebStorageType/WebStorageType.js'\n\nconst getStorage = (storageType) => {\n switch (storageType) {\n case WebStorageType.LocalStorage:\n return localStorage\n case WebStorageType.SessionStorage:\n return sessionStorage\n default:\n throw new Error(`unsupported storage type ${storageType}`)\n }\n}\n\nexport const getItem = (storageType, key) => {\n const storage = getStorage(storageType)\n return storage.getItem(key) || undefined\n}\n\nexport const setItem = (storageType, key, value) => {\n const storage = getStorage(storageType)\n storage.setItem(key, value)\n}\n\nexport const setJsonObjects = (storageType, objects) => {\n const storage = getStorage(storageType)\n for (const [key, value] of Object.entries(objects)) {\n storage.setItem(key, value)\n }\n}\n\nexport const clear = (storageType) => {\n const storage = getStorage(storageType)\n storage.clear()\n}\n", "import * as WebStorage from './WebStorage.js'\n\nexport const name = 'WebStorage'\n\nexport const Commands = {\n clear: WebStorage.clear,\n getItem: WebStorage.getItem,\n setItem: WebStorage.setItem,\n setJsonObjects: WebStorage.setJsonObjects,\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const reload = () => {\n location.reload()\n}\n\nexport const minimize = () => {}\n\nexport const maximize = () => {}\n\nexport const unmaximize = () => {}\n\nexport const close = () => {\n // window.close()\n}\n\nexport const setTitle = (title) => {\n document.title = title\n}\n\nconst sendVisibilityChangeHint = () => {\n RendererWorker.send(\n /* SaveState.handleVisibilityChange */ 'SaveState.handleVisibilityChange',\n /* visibilityState */ 'hidden'\n )\n}\n\nconst handleBeforeUnload = () => {\n sendVisibilityChangeHint()\n}\nconst handlePointerLeave = () => {\n sendVisibilityChangeHint()\n}\n\n// cannot use visibilty change event because worker cannot process events when page closes\n// https://stackoverflow.com/questions/20084348/what-happens-to-a-web-worker-if-i-close-the-page-that-created-this-web-worker/20105455#20105455\n// beforeunload event has the same problem, pointerleave event sometimes works\nexport const onVisibilityChange = () => {\n window.addEventListener('beforeunload', handleBeforeUnload)\n document.addEventListener('pointerleave', handlePointerLeave)\n}\n", "import * as Window from './Window.js'\n\nexport const name = 'Window'\n\nexport const Commands = {\n close: Window.close,\n maximize: Window.maximize,\n minimize: Window.minimize,\n onVisibilityChange: Window.onVisibilityChange,\n reload: Window.reload,\n setTitle: Window.setTitle,\n unmaximize: Window.unmaximize,\n}\n", "import * as Command from './parts/Command/Command.js'\nimport * as ErrorHandling from './parts/ErrorHandling/ErrorHandling.js'\nimport * as Module from './parts/Module/Module.js'\nimport * as Platform from './parts/Platform/Platform.js'\nimport * as PlatformType from './parts/PlatformType/PlatformType.js'\nimport * as RendererWorker from './parts/RendererWorker/RendererWorker.js'\nimport * as Event from './parts/Event/Event.js'\n\nconst handleBeforeInstallPrompt = (event) => {\n Event.preventDefault(event)\n}\n\nconst main = async () => {\n onerror = ErrorHandling.handleError\n onunhandledrejection = ErrorHandling.handleUnhandledRejection\n Command.setLoad(Module.load)\n if (Platform.platform === PlatformType.Web) {\n // disable prompt to download app as pwa\n // @ts-ignore\n window.onbeforeinstallprompt = handleBeforeInstallPrompt\n }\n // TODO this is discovered very late\n await RendererWorker.hydrate()\n}\n\nmain()\n\nexport const send = RendererWorker.send\n", "export const isChromeExtensionError = (error) => {\n return `${error}` === 'Script error.'\n}\n", "import * as IsChromeExtensionError from '../IsChromeExtensionError/IsChromeExtensionError.js'\nimport * as IsFirefoxWorkerError from '../IsFirefoxWorkerError/IsFirefoxWorkerError.js'\nimport * as Logger from '../Logger/Logger.js'\n\nexport const handleError = (error) => {\n if (IsChromeExtensionError.isChromeExtensionError(error)) {\n // ignore errors from chrome extensions\n return\n }\n if (IsFirefoxWorkerError.isFirefoxWorkerError(error)) {\n // ignore firefox worker errors\n return\n }\n Logger.info(`[renderer-process] Unhandled Error: ${error}`)\n alert(error)\n}\n\nexport const handleUnhandledRejection = (event) => {\n Logger.info(`[renderer-process] Unhandled Rejection: ${event.reason}`)\n alert(event.reason)\n}\n", "import * as ModuleId from '../ModuleId/ModuleId.js'\n\nexport const load = (moduleId) => {\n switch (moduleId) {\n case ModuleId.Audio:\n return import('../Audio/Audio.ipc.js')\n case ModuleId.ClipBoard:\n return import('../ClipBoard/ClipBoard.ipc.js')\n case ModuleId.ConfirmPrompt:\n return import('../ConfirmPrompt/ConfirmPrompt.ipc.js')\n case ModuleId.Css:\n return import('../Css/Css.ipc.js')\n case ModuleId.Developer:\n return import('../Developer/Developer.ipc.js')\n case ModuleId.Download:\n return import('../Download/Download.ipc.js')\n case ModuleId.EditorError:\n return import('../EditorError/EditorError.ipc.js')\n case ModuleId.EditorHover:\n return import('../EditorHover/EditorHover.ipc.js')\n case ModuleId.EditorRename:\n return import('../EditorRename/EditorRename.ipc.js')\n case ModuleId.Eval:\n return import('../Eval/Eval.ipc.js')\n case ModuleId.FilePicker:\n return import('../FilePicker/FilePicker.ipc.js')\n case ModuleId.FileSystemHandle:\n return import('../FileSystemHandle/FileSystemHandle.ipc.js')\n case ModuleId.ImagePreview:\n return import('../ImagePreview/ImagePreview.ipc.js')\n case ModuleId.InitData:\n return import('../InitData/InitData.ipc.js')\n case ModuleId.KeyBindings:\n return import('../KeyBindings/KeyBindings.ipc.js')\n case ModuleId.Layout:\n return import('../Layout/Layout.ipc.js')\n case ModuleId.Location:\n return import('../Location/Location.ipc.js')\n case ModuleId.Meta:\n return import('../Meta/Meta.ipc.js')\n case ModuleId.Notification:\n return import('../Notification/Notification.ipc.js')\n case ModuleId.OffscreenCanvas:\n return import('../OffscreenCanvas/OffscreenCanvas.ipc.js')\n case ModuleId.Menu:\n return import('../OldMenu/Menu.ipc.js')\n case ModuleId.Open:\n return import('../Open/Open.ipc.js')\n case ModuleId.Performance:\n return import('../Performance/Performance.ipc.js')\n case ModuleId.SanitizeHtml:\n return import('../SanitizeHtml/SanitizeHtml.ipc.js')\n case ModuleId.ServiceWorker:\n return import('../ServiceWorker/ServiceWorker.ipc.js')\n case ModuleId.TestFrameWork:\n return import('../TestFrameWork/TestFrameWork.ipc.js')\n case ModuleId.Transferrable:\n return import('../Transferrable/Transferrable.ipc.js')\n case ModuleId.Viewlet:\n return import('../Viewlet/Viewlet.ipc.js')\n case ModuleId.WebStorage:\n return import('../WebStorage/WebStorage.ipc.js')\n case ModuleId.Window:\n return import('../Window/Window.ipc.js')\n default:\n throw new Error(`module ${moduleId} not found`)\n }\n}\n"],
|
|
4
|
+
"sourcesContent": ["export const Audio = 1\nexport const ClipBoard = 2\nexport const Css = 3\nexport const Developer = 4\nexport const Download = 5\nexport const EditorController = 6\nexport const EditorError = 7\nexport const EditorHover = 8\nexport const EditorRename = 9\nexport const ImagePreview = 10\nexport const InitData = 11\nexport const KeyBindings = 12\nexport const Layout = 13\nexport const Location = 14\nexport const Main = 15\nexport const Menu = 16\nexport const Meta = 17\nexport const Notification = 18\nexport const Open = 19\nexport const Panel = 20\nexport const ServiceWorker = 21\nexport const Test = 22\nexport const TestFrameWork = 23\nexport const Viewlet = 24\nexport const ViewService = 25\nexport const WebStorage = 26\nexport const Window = 27\nexport const Workbench = 28\nexport const Performance = 29\nexport const Eval = 30\nexport const FilePicker = 31\nexport const FileSystemHandle = 32\nexport const SanitizeHtml = 33\nexport const OffscreenCanvas = 34\nexport const Transferrable = 35\nexport const ConfirmPrompt = 36\n", "import * as ModuleId from '../ModuleId/ModuleId.js'\n\nexport const getModuleId = (commandId) => {\n switch (commandId) {\n case 'Audio.play':\n return ModuleId.Audio\n case 'ClipBoard.execCopy':\n case 'ClipBoard.readText':\n case 'ClipBoard.writeImage':\n case 'ClipBoard.writeText':\n return ModuleId.ClipBoard\n case 'ConfirmPrompt.prompt':\n return ModuleId.ConfirmPrompt\n case 'Css.addCssStyleSheet':\n case 'Css.setInlineStyle':\n return ModuleId.Css\n case 'Developer.getMemoryUsage':\n case 'Developer.showState':\n return ModuleId.Developer\n case 'Download.downloadFile':\n return ModuleId.Download\n case 764:\n case 765:\n case 766:\n case 767:\n case 768:\n case 769:\n case 770:\n case 771:\n case 772:\n case 773:\n case 774:\n case 775:\n case 776:\n case 777:\n return ModuleId.EditorController\n case 'EditorError.create':\n return ModuleId.EditorError\n case 'EditorHover.create':\n return ModuleId.EditorHover\n case 'EditorRename.create':\n case 'EditorRename.dispose':\n case 'EditorRename.finish':\n return ModuleId.EditorRename\n case 'Eval.evalCode':\n return ModuleId.Eval\n case 'FilePicker.showDirectoryPicker':\n case 'FilePicker.showFilePicker':\n case 'FilePicker.showSaveFilePicker':\n return ModuleId.FilePicker\n case 'FileSystemHandle.requestPermission':\n return ModuleId.FileSystemHandle\n case 'ImagePreview.create':\n case 'ImagePreview.dispose':\n case 'ImagePreview.showError':\n case 'ImagePreview.update':\n return ModuleId.ImagePreview\n case 'InitData.getInitData':\n return ModuleId.InitData\n case 'KeyBindings.hydrate':\n return ModuleId.KeyBindings\n case 'Layout.getBounds':\n case 'Layout.hide':\n case 'Layout.hydrate':\n case 'Layout.show':\n case 'Layout.update':\n return ModuleId.Layout\n case 'Location.getHref':\n case 'Location.getPathName':\n case 'Location.hydrate':\n case 'Location.setPathName':\n return ModuleId.Location\n case 'Menu.focusIndex':\n case 'Menu.hide':\n case 'Menu.hideSubMenu':\n case 'Menu.show':\n case 'Menu.showContextMenu':\n case 'Menu.showControlled':\n case 'Menu.showMenu':\n case 'Menu.showSubMenu':\n return ModuleId.Menu\n case 'Meta.setThemeColor':\n return ModuleId.Meta\n case 'Notification.create':\n case 'Notification.createWithOptions':\n case 'Notification.dispose':\n return ModuleId.Notification\n case 'OffscreenCanvas.create':\n return ModuleId.OffscreenCanvas\n case 'Open.openUrl':\n return ModuleId.Open\n case 6661:\n case 6662:\n case 6663:\n case 6664:\n return ModuleId.Panel\n case 'Performance.getMemory':\n case 'Performance.measureUserAgentSpecificMemory':\n return ModuleId.Performance\n case 'SanitizeHtml.sanitizeHtml':\n return ModuleId.SanitizeHtml\n case 'ServiceWorker.register':\n case 'ServiceWorker.uninstall':\n return ModuleId.ServiceWorker\n case 'TestFrameWork.checkMultiElementCondition':\n case 'TestFrameWork.checkSingleElementCondition':\n case 'TestFrameWork.performAction':\n case 'TestFrameWork.performKeyBoardAction':\n case 'TestFrameWork.showOverlay':\n return ModuleId.TestFrameWork\n case 'Transferrable.transfer':\n return ModuleId.Transferrable\n case 'Viewlet.appendViewlet':\n case 'Viewlet.dispose':\n case 'Viewlet.focus':\n case 'Viewlet.focusBody':\n case 'Viewlet.handleError':\n case 'Viewlet.invoke':\n case 'Viewlet.load':\n case 'Viewlet.loadModule':\n case 'Viewlet.refresh':\n case 'Viewlet.send':\n case 'Viewlet.sendMultiple':\n case 'Viewlet.setBounds':\n return ModuleId.Viewlet\n case 549:\n case 550:\n case 551:\n return ModuleId.ViewService\n case 'WebStorage.clear':\n case 'WebStorage.getItem':\n case 'WebStorage.setItem':\n return ModuleId.WebStorage\n case 'Window.close':\n case 'Window.maximize':\n case 'Window.minimize':\n case 'Window.onVisibilityChange':\n case 'Window.reload':\n case 'Window.setTitle':\n case 'Window.unmaximize':\n return ModuleId.Window\n case 33111:\n return ModuleId.Workbench\n default:\n throw new Error(`command ${commandId} not found`)\n }\n}\n", "const getCombinedMessage = (error, message) => {\n if (message) {\n return `${message}: ${error}`\n }\n return `${error}`\n}\n\nconst mergeStacks = (parent, child) => {\n if (!child) {\n return parent\n }\n const parentNewLineIndex = parent.indexOf('\\n')\n const childNewLineIndex = child.indexOf('\\n')\n const parentFirstLine = parent.slice(0, parentNewLineIndex)\n const childRest = child.slice(childNewLineIndex)\n const childFirstLine = child.slice(0, childNewLineIndex)\n if (parentFirstLine.includes(childFirstLine)) {\n return parentFirstLine + childRest\n }\n return child\n}\n\nconst getErrorStack = (error) => {\n if (error && error.stack) {\n return error.stack\n }\n if (error && error.lineNumber && error.columnNumber && error.fileName) {\n const normalStackLooksLike = new Error().stack\n if (/^[$\\w]+@.*/.test(normalStackLooksLike)) {\n // firefox stack trace\n return `${error}\\nunknown@${error.fileName}:${error.lineNumber}:${error.columnNumber}`\n }\n // chrome stack trace\n return `${error.message}\\n at ${error.fileName}:${error.lineNumber}:${error.columnNumber}`\n }\n return ''\n}\n\nexport class VError extends Error {\n constructor(error, message) {\n const combinedMessage = getCombinedMessage(error, message)\n super(combinedMessage)\n this.name = 'VError'\n if (error instanceof Error) {\n const errorStack = getErrorStack(error)\n this.stack = mergeStacks(this.stack, errorStack)\n }\n if (error.codeFrame) {\n this.codeFrame = error.codeFrame\n }\n this.cause = error\n }\n}\n", "import * as ModuleMap from '../ModuleMap/ModuleMap.js'\nimport { VError } from '../VError/VError.js'\n\nexport const state = {\n commands: Object.create(null),\n pendingModules: Object.create(null),\n async load(moduleId) {},\n}\n\nconst initializeModule = (module) => {\n if (module.Commands) {\n for (const [key, value] of Object.entries(module.Commands)) {\n if (module.name) {\n const actualKey = `${module.name}.${key}`\n register(actualKey, value)\n } else {\n register(key, value)\n }\n }\n return\n }\n throw new Error(\n `module ${module.name} is missing an initialize function and commands`\n )\n}\n\nconst loadModule = async (moduleId) => {\n try {\n const module = await state.load(moduleId)\n initializeModule(module)\n } catch (error) {\n if (\n error &&\n error instanceof SyntaxError &&\n error.stack === `SyntaxError: ${error.message}`\n ) {\n Error.captureStackTrace(error, loadModule)\n }\n throw new VError(error, `failed to load module ${moduleId}`)\n }\n}\n\nconst getOrLoadModule = (moduleId) => {\n if (!state.pendingModules[moduleId]) {\n state.pendingModules[moduleId] = loadModule(moduleId)\n }\n return state.pendingModules[moduleId]\n}\n\nconst loadCommand = async (command) => {\n await getOrLoadModule(ModuleMap.getModuleId(command))\n}\n\nexport const register = (commandId, listener) => {\n state.commands[commandId] = listener\n}\n\nconst hasThrown = new Set()\n\nconst executeCommandAsync = async (command, ...args) => {\n try {\n await loadCommand(command)\n } catch (error) {\n throw new VError(error, `Failed to load command ${command}`)\n }\n if (!(command in state.commands)) {\n if (hasThrown.has(command)) {\n return\n }\n hasThrown.add(command)\n throw new Error(`Command did not register \"${command}\"`)\n }\n return execute(command, ...args)\n}\n\nexport const execute = (command, ...args) => {\n if (command in state.commands) {\n return state.commands[command](...args)\n }\n return executeCommandAsync(command, ...args)\n}\n\nexport const setLoad = (load) => {\n state.load = load\n}\n", "export const isFirefoxWorkerError = (message) => {\n return [\n 'SyntaxError: import declarations may only appear at top level of a module',\n 'SyntaxError: export declarations may only appear at top level of a module',\n ].includes(message)\n}\n", "export const warn = (...args) => {\n console.warn(...args)\n}\n\nexport const error = (...args) => {\n console.error(...args)\n}\n\nexport const info = (...args) => {\n console.info(...args)\n}\n", "export const play = async (src) => {\n const audio = new Audio(src)\n await audio.play()\n}\n", "import * as Audio from './Audio.js'\n\nexport const name = 'Audio'\n\nexport const Commands = {\n play: Audio.play,\n}\n", "export class AssertionError extends Error {\n constructor(message) {\n super(message)\n this.name = 'AssertionError'\n }\n}\n", "// TODO treeshake out this whole module in production\n\nimport { AssertionError } from '../AssertionError/AssertionError.js'\n\nconst getType = (value) => {\n switch (typeof value) {\n case 'number':\n return 'number'\n case 'function':\n return 'function'\n case 'string':\n return 'string'\n case 'object':\n if (value === null) {\n return 'null'\n }\n if (Array.isArray(value)) {\n return 'array'\n }\n return 'object'\n case 'boolean':\n return 'boolean'\n default:\n return 'unknown'\n }\n}\n\nexport const object = (value) => {\n const type = getType(value)\n if (type !== 'object') {\n throw new AssertionError('expected value to be of type object')\n }\n}\n\nexport const number = (value) => {\n const type = getType(value)\n if (type !== 'number') {\n throw new AssertionError('expected value to be of type number')\n }\n}\n\nexport const array = (value) => {\n const type = getType(value)\n if (type !== 'array') {\n throw new AssertionError('expected value to be of type array')\n }\n}\n\nexport const float32Array = (value) => {\n if (!(value instanceof Float32Array)) {\n throw new Error('expected value to be of float32Array')\n }\n}\n\nexport const string = (value) => {\n const type = getType(value)\n if (type !== 'string') {\n throw new AssertionError('expected value to be of type string')\n }\n}\n\nexport const null_ = (value) => {\n const type = getType(value)\n if (type !== 'null') {\n throw new AssertionError('expected value to be of type null')\n }\n}\n\nexport const boolean = (value) => {\n const type = getType(value)\n if (type !== 'boolean') {\n throw new AssertionError('expected value to be of type boolean')\n }\n}\n", "import * as Assert from '../Assert/Assert.js'\n\nexport const readText = async () => {\n return navigator.clipboard.readText()\n}\n\nexport const writeText = async (text) => {\n Assert.string(text)\n await navigator.clipboard.writeText(text)\n}\n\nexport const writeImage = async (blob) => {\n await navigator.clipboard.write([new ClipboardItem({ [blob.type]: blob })])\n}\n\nexport const execCopy = async () => {\n const text = getSelection().toString()\n await writeText(text)\n}\n", "import * as ClipBoard from './ClipBoard.js'\n\nexport const name = 'ClipBoard'\n\nexport const Commands = {\n execCopy: ClipBoard.execCopy,\n readText: ClipBoard.readText,\n writeImage: ClipBoard.writeImage,\n writeText: ClipBoard.writeText,\n}\n", "export const prompt = (message) => {\n return confirm(message)\n}\n", "import * as ConfirmPrompt from './ConfirmPrompt.js'\n\nexport const name = 'ConfirmPrompt'\n\nexport const Commands = {\n prompt: ConfirmPrompt.prompt,\n}\n", "export const setInlineStyle = (id, css) => {\n const $ExistingStyle = document.getElementById(id)\n if ($ExistingStyle) {\n $ExistingStyle.textContent = css\n } else {\n const $Style = document.createElement('style')\n $Style.id = id\n $Style.textContent = css\n document.head.append($Style)\n }\n}\n\nexport const addCssStyleSheet = async (text) => {\n const sheet = new CSSStyleSheet({})\n await sheet.replace(text)\n document.adoptedStyleSheets.push(sheet)\n}\n", "import * as Css from './Css.js'\n\nexport const name = 'Css'\n\nexport const Commands = {\n addCssStyleSheet: Css.addCssStyleSheet,\n setInlineStyle: Css.setInlineStyle,\n}\n", "import * as Logger from '../Logger/Logger.js'\n\nconst modules = [\n 'ActivityBar',\n 'Ajax',\n 'Allocator',\n 'Callback',\n 'Command',\n 'Context',\n 'ContextMenu',\n 'Delay',\n 'Developer',\n 'DomPool',\n 'Editor',\n 'Exec',\n 'ExtensionHost',\n 'FileSystem',\n 'KeyBindings',\n 'Layout',\n 'Main',\n 'Notification',\n 'Panel',\n 'Parts',\n 'QuickPick',\n 'Renderer',\n 'RendererWorker',\n 'Search',\n 'SharedProcess',\n 'SideBar',\n 'StatusBar',\n 'TitleBar',\n 'Viewlet',\n 'ViewletController',\n 'ViewService',\n 'Vscode',\n 'Window',\n 'Workbench',\n 'Worker',\n 'Workspace',\n]\n\n// TODO send to renderer worker -> renderer worker has all state\nexport const showState = async () => {\n const state = Object.create(null)\n for (const module of modules) {\n let imported\n try {\n imported = await import(`../${module}/${module}.js`)\n } catch {}\n if (imported && imported.state) {\n state[module] = imported.state\n }\n }\n Logger.info(state)\n}\n", "import * as Developer from './Developer.js'\n\nexport const name = 'Developer'\n\nexport const Commands = {\n showState: Developer.showState,\n}\n", "export const downloadFile = (fileName, url) => {\n const a = document.createElement('a')\n a.href = url\n a.download = fileName\n a.click()\n}\n", "import * as Download from './Download.js'\n\nexport const name = 'Download'\n\nexport const Commands = {\n downloadFile: Download.downloadFile,\n}\n", "// based on https://github.com/microsoft/vscode/blob/5f87632829dc3ac80203e2377727935184399431/src/vs/base/browser/ui/aria/aria.ts (License MIT)\n\nexport const state = {\n $AriaAlert1: undefined,\n $AriaAlert2: undefined,\n $AriaMessages: undefined,\n}\n\nexport const getAriaAlert1 = () => {\n return state.$AriaAlert1\n}\n\nexport const getAriaAlert2 = () => {\n return state.$AriaAlert2\n}\n\nexport const setElements = ($AriaMessages, $AriaAlert1, $AriaAlert2) => {\n state.$AriaMessages = $AriaMessages\n state.$AriaAlert1 = $AriaAlert1\n state.$AriaAlert2 = $AriaAlert2\n}\n\nexport const hasElements = () => {\n return state.$AriaMessages\n}\n", "export const True = 'true'\n\nexport const False = 'false'\n", "export const Alert = 'alert'\nexport const Application = 'application'\nexport const Article = 'article'\nexport const Button = 'button'\nexport const CheckBox = 'checkbox'\nexport const Code = 'code'\nexport const Complementary = 'complementary'\nexport const ContentInfo = 'contentinfo'\nexport const Document = 'document'\nexport const Group = 'group'\nexport const List = 'list'\nexport const ListBox = 'listbox'\nexport const ListItem = 'listitem'\nexport const Log = 'log'\nexport const Main = 'main'\nexport const Menu = 'menu'\nexport const MenuBar = 'menubar'\nexport const MenuItem = 'menuitem'\nexport const MenuItemCheckBox = 'menuitemcheckbox'\nexport const None = 'none'\nexport const Option = 'option'\nexport const Separator = 'separator'\nexport const Status = 'status'\nexport const Tab = 'tab'\nexport const TabList = 'tablist'\nexport const TextBox = 'textbox'\nexport const ToolBar = 'toolbar'\nexport const Tree = 'tree'\nexport const TreeItem = 'treeitem'\n", "export const AriaOwns = 'aria-owns'\nexport const AriaLabelledBy = 'aria-labelledby'\nexport const AriaDescribedBy = 'aria-describedby'\nexport const AriaDescription = 'aria-description'\nexport const AriaLevel = 'aria-level'\nexport const AriaExpanded = 'aria-expanded'\nexport const AriaMultiSelectable = 'aria-multiselectable'\nexport const AriaActiveDescendant = 'aria-activedescendant'\nexport const AriaBusy = 'aria-busy'\nexport const AriaSelected = 'aria-selected'\nexport const AriaControls = 'aria-controls'\nexport const AriaHidden = 'aria-hidden'\n", "// based on https://github.com/microsoft/vscode/blob/5f87632829dc3ac80203e2377727935184399431/src/vs/base/browser/ui/aria/aria.ts (License MIT)\nimport * as AriaAlertState from '../AriaAlertState/AriaAlertState.js'\nimport * as AriaBoolean from '../AriaBoolean/AriaBoolean.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as DomAttributeType from '../DomAttributeType/DomAttributeType.js'\n\nconst create$AriaAlert = () => {\n const $AriaAlert = document.createElement('div')\n $AriaAlert.className = 'AriaAlert'\n $AriaAlert.role = AriaRoles.Alert\n $AriaAlert.ariaAtomic = AriaBoolean.True\n return $AriaAlert\n}\n\nconst setMessage = ($Old, $New, message) => {\n $Old.textContent = String(Math.random())\n $Old.ariaHidden = AriaBoolean.True\n $New.removeAttribute(DomAttributeType.AriaHidden)\n $New.textContent = message\n}\n\nexport const alert = (message) => {\n if (!message) {\n return\n }\n if (!AriaAlertState.hasElements()) {\n const $AriaAlert1 = create$AriaAlert()\n const $AriaAlert2 = create$AriaAlert()\n // TODO find better name, for example AriaMessages, AriaOutlet, AriaContainer, ScreenReaderMessages\n const $AriaMessages = document.createElement('div')\n $AriaMessages.className = 'AriaContainer'\n $AriaMessages.append($AriaAlert1, $AriaAlert2)\n document.body.append($AriaMessages)\n AriaAlertState.setElements($AriaMessages, $AriaAlert1, $AriaAlert2)\n }\n const $AriaAlert1 = AriaAlertState.getAriaAlert1()\n const $AriaAlert2 = AriaAlertState.getAriaAlert2()\n if ($AriaAlert1.textContent === message) {\n setMessage($AriaAlert1, $AriaAlert2, message)\n } else {\n setMessage($AriaAlert2, $AriaAlert1, message)\n }\n}\n", "// TODO this file is not needed when all elements are position fixed\nexport const state = {\n isInDom: false,\n $PreviousFocusElement: undefined,\n widgetSet: new Set(),\n $Widgets: undefined,\n}\n\nconst create$Widgets = () => {\n const $Widgets = document.createElement('div')\n $Widgets.id = 'Widgets'\n return $Widgets\n}\n\nexport const append = ($Element) => {\n // TODO should not call append in the first place if it is already in dom\n if (state.widgetSet.has($Element)) {\n return\n }\n state.widgetSet.add($Element)\n if (state.$Widgets) {\n state.$Widgets.append($Element)\n } else {\n state.$Widgets = create$Widgets()\n state.$Widgets.append($Element)\n document.body.append(state.$Widgets)\n }\n}\n\nexport const find = (id) => {\n for (const $Widget of state.widgetSet) {\n if ($Widget.dataset.id === id) {\n return $Widget\n }\n }\n return undefined\n}\n\nexport const remove = ($Element) => {\n if (!$Element) {\n // TODO $Element should always be defined\n return\n }\n state.widgetSet.delete($Element)\n $Element.remove()\n // TODO state.$Widgets should always be defined at this point\n if (state.widgetSet.size === 0 && state.$Widgets) {\n state.$Widgets.remove()\n state.$Widgets = undefined\n }\n}\n", "import * as AriaAlert from '../AriaAlert/AriaAlert.js'\nimport * as Widget from '../Widget/Widget.js'\n\n// TODO not sure whether created dom node\n// should stay in state or be removed\n// one option would result in less memory usage\n// the other option would result in less garbage collection\n\n// probably should optimize for less memory usage by default\n// unless the element is very likely to be used again soon (<30s)\n// but that's difficult to know\n\n// TODO hide widget after timeout or mousemove\nexport const create = (message, x, y) => {\n const $EditorError = document.createElement('div')\n $EditorError.className = 'EditorWidgetError'\n $EditorError.textContent = message\n $EditorError.style.left = `${x}px`\n $EditorError.style.top = `${y}px`\n AriaAlert.alert(message)\n Widget.append($EditorError)\n\n return {\n $EditorError,\n }\n}\n\nexport const dispose = (state) => {}\n", "import * as EditorError from './EditorError.js'\n\nexport const name = 'EditorError'\n\nexport const Commands = {\n create: EditorError.create,\n}\n", "export const setBounds = ($Element, x, y, width, height) => {\n $Element.style.top = `${y}px`\n $Element.style.left = `${x}px`\n $Element.style.width = `${width}px`\n $Element.style.height = `${height}px`\n}\n\nexport const setX = ($Element, x) => {\n $Element.style.translate = `${x}px 0`\n}\n\nexport const setYAndHeight = ($Element, y, height) => {\n $Element.style.translate = `0 ${y}px`\n $Element.style.height = `${height}px`\n}\n\nexport const setXAndWidth = ($Element, x, width) => {\n $Element.style.translate = `${x}px 0`\n $Element.style.width = `${width}px`\n}\n\nexport const setWidth = ($Element, width) => {\n $Element.style.width = `${width}px`\n}\n\nexport const setTop = ($Element, top) => {\n $Element.style.top = `${top}px`\n}\n\nexport const setXAndY = ($Element, x, y) => {\n $Element.style.left = `${x}px`\n $Element.style.top = `${y}px`\n}\n\n/**\n *\n * @param {HTMLElement} $Element\n * @param {number} x\n * @param {number} y\n */\nexport const setXAndYTransform = ($Element, x, y) => {\n $Element.style.translate = `${x}px ${y}px`\n}\n\nexport const setHeight = ($Element, height) => {\n $Element.style.height = `${height}px`\n}\n", "import * as Widget from '../Widget/Widget.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\n\nexport const create = (x, y, hover) => {\n const $Hover = document.createElement('div')\n $Hover.id = 'EditorHover'\n $Hover.textContent = hover.label\n SetBounds.setXAndY($Hover, x, y)\n Widget.append($Hover)\n return {\n $Hover,\n }\n}\n\nexport const update = (state, x, y, hover) => {\n const $Hover = state.$Hover\n $Hover.textContent = hover.label\n SetBounds.setXAndY($Hover, x, y)\n}\n\nexport const dispose = (state) => {}\n", "import * as EditorHover from './EditorHover.js'\n\nexport const name = 'EditorHover'\n\nexport const Commands = {\n create: EditorHover.create,\n}\n", "export const create = () => {\n const $InputBox = document.createElement('input')\n $InputBox.className = 'InputBox'\n $InputBox.spellcheck = false\n $InputBox.autocapitalize = 'off'\n // $InputBox.autocomplete = 'off' // TODO needed?\n $InputBox.type = 'text'\n $InputBox.setAttribute('autocorrect', 'off') // for ios\n return $InputBox\n}\n", "export const state = {\n // contexts: Object.create(null),\n contexts: {},\n}\n\n// TODO all context keys should be numeric\n// comparing numbers is faster and more efficient than comparing strings every time\n// e.g. map 'focus.editor' -> 1\n// e.g. map 'focus.explorer' -> 2\n// Context.get(1), Context.get(2)\n\nexport const get = (key) => {\n return state.contexts[key]\n}\n\nexport const getAll = () => {\n return state.contexts\n}\n\nexport const set = (key, value) => {\n state.contexts[key] = value\n}\n\nexport const remove = (key) => {\n delete state.contexts[key]\n}\n", "import * as Context from '../Context/Context.js'\n\n// TODO not sure if its worth to have a separate module for this or keep it inside Context.js\n// export const setFocus = (item) => {\n// if (Context.state.currentFocus) {\n// Context.remove(Context.state.currentFocus)\n// }\n// Context.set(`focus.${item}`, true)\n// }\n\nexport const state = {\n $PreviousFocusElement: undefined,\n currentFocus: '',\n}\n\nexport const setFocus = (key) => {\n if (state.currentFocus) {\n Context.remove(state.currentFocus)\n }\n // TODO could make focus key numeric enum which would be more efficient\n state.currentFocus = `focus.${key}`\n Context.set(state.currentFocus, true)\n}\n\nexport const setAdditionalFocus = (key) => {\n // TODO key should be numeric\n Context.set(`focus.${key}`, true)\n}\n\nexport const removeAdditionalFocus = (key) => {\n Context.remove(`focus.${key}`)\n}\n\nexport const focus = ($Element, key) => {\n if ($Element === document.activeElement) {\n return\n }\n state.$PreviousFocusElement = document.activeElement\n $Element.focus({ preventScroll: true })\n setFocus(key)\n}\n\nexport const focusPrevious = () => {\n if (state.$PreviousFocusElement) {\n state.$PreviousFocusElement.focus()\n }\n}\n", "export const state = {\n id: 0,\n}\n\nexport const create = () => {\n return ++state.id\n}\n", "import * as Logger from '../Logger/Logger.js'\nimport * as Id from '../Id/Id.js'\n\nconst callbacks = Object.create(null)\n\n/**\n * @deprecated use registerPromise instead\n */\nexport const register = (resolve, reject) => {\n const id = Id.create()\n callbacks[id] = { resolve, reject }\n return id\n}\n\nexport const registerPromise = () => {\n const id = Id.create()\n const promise = new Promise((resolve, reject) => {\n callbacks[id] = { resolve, reject }\n })\n return { id, promise }\n}\n\nexport const unregister = (id) => {\n delete callbacks[id]\n}\n\nexport const resolve = (id, result) => {\n if (!(id in callbacks)) {\n Logger.warn(`callback ${id} may already be disposed`)\n return\n }\n callbacks[id].resolve(result)\n}\n\nexport const reject = (id, error) => {\n if (!(id in callbacks)) {\n Logger.warn(`callback ${id} may already be disposed`)\n return\n }\n callbacks[id].reject(error)\n}\n", "export class JsonRpcError extends Error {\n constructor(message) {\n super(message)\n this.name = 'JsonRpcError'\n }\n}\n", "export const Two = '2.0'\n", "import * as Command from '../Command/Command.js'\nimport * as JsonRpcVersion from '../JsonRpcVersion/JsonRpcVersion.js'\n\nclass NonError extends Error {\n name = 'NonError'\n\n constructor(message) {\n super(message)\n }\n}\n\n// ensureError based on https://github.com/sindresorhus/ensure-error/blob/main/index.js (License MIT)\nconst ensureError = (input) => {\n if (!(input instanceof Error)) {\n return new NonError(input)\n }\n return input\n}\n\nconst serializeError = (error) => {\n error = ensureError(error)\n return {\n stack: error.stack,\n message: error.message,\n name: error.name,\n type: error.constructor.name,\n }\n}\n\nexport const getResponse = async (message) => {\n try {\n const result = await Command.execute(message.method, ...message.params)\n return {\n jsonrpc: JsonRpcVersion.Two,\n id: message.id,\n result,\n }\n } catch (error) {\n const serializedError = serializeError(error)\n return {\n jsonrpc: JsonRpcVersion.Two,\n id: message.id,\n error: {\n message: serializedError.message,\n stack: serializedError.stack,\n name: serializedError.name,\n type: serializedError.type,\n },\n }\n }\n}\n", "export const MessagePort = 1\nexport const ModuleWorker = 2\nexport const ReferencePort = 3\nexport const ModuleWorkerWithMessagePort = 4\nexport const Electron = 5\n\nexport const Auto = ModuleWorker\n", "export const Message = 'message'\n\nexport const Error = 'error'\n", "import * as FirstWorkerEventType from '../FirstWorkerEventType/FirstWorkerEventType.js'\n\nexport const getFirstWorkerEvent = async (worker) => {\n const { type, event } = await new Promise((resolve, reject) => {\n const cleanup = () => {\n worker.onmessage = null\n worker.onerror = null\n }\n const handleFirstMessage = (event) => {\n cleanup()\n resolve({ type: FirstWorkerEventType.Message, event })\n }\n const handleFirstError = (event) => {\n cleanup()\n resolve({ type: FirstWorkerEventType.Error, event })\n }\n worker.onmessage = handleFirstMessage\n worker.onerror = handleFirstError\n })\n return { type, event }\n}\n", "export class ModuleWorkersAreNotSupportedInFirefoxError extends Error {\n constructor() {\n super('module workers are not supported in firefox')\n }\n}\n", "export const Module = 'module'\n", "/**\n * @param {Event} event\n */\nexport const preventDefault = (event) => {\n event.preventDefault()\n}\n\n/**\n * @param {Event} event\n */\nexport const stopPropagation = (event) => {\n event.stopPropagation()\n}\n", "export const getWorkerDisplayName = (name) => {\n if (!name) {\n return '<unknown> worker'\n }\n if (name.endsWith('Worker')) {\n return name.toLowerCase()\n }\n return `${name} worker`\n}\n", "export const NotFound = 404\n", "import * as GetWorkerDisplayName from '../GetWorkerDisplayName/GetWorkerDisplayName.js'\nimport * as HttpStatusCode from '../HttpStatusCode/HttpStatusCode.js'\n\nexport const tryToGetActualErrorMessage = async ({ url, name }) => {\n const displayName = GetWorkerDisplayName.getWorkerDisplayName(name)\n try {\n globalThis.DONT_EXECUTE = 1\n await import(url)\n return `Failed to start ${displayName}: Unknown Error`\n } catch (error) {\n if (error && error instanceof Error && error.message.startsWith('Failed to fetch dynamically imported module')) {\n try {\n const response = await fetch(url)\n switch (response.status) {\n case HttpStatusCode.NotFound:\n return `Failed to start ${displayName}: Not found (404)`\n default:\n return `Failed to start ${displayName}: Unknown Network Error`\n }\n } catch {\n return `Failed to start ${displayName}: Unknown Network Error`\n }\n }\n return `Failed to start ${displayName}: ${error}`\n }\n}\n", "import * as Assert from '../Assert/Assert.js'\n\nexport const create = async ({ url }) => {\n Assert.string(url)\n const port = await new Promise((resolve) => {\n globalThis.acceptPort = resolve\n import(url)\n })\n delete globalThis.acceptPort\n return port\n}\n", "import * as FirstWorkerEventType from '../FirstWorkerEventType/FirstWorkerEventType.js'\nimport * as GetFirstWorkerEvent from '../GetFirstWorkerEvent/GetFirstWorkerEvent.js'\nimport { ModuleWorkersAreNotSupportedInFirefoxError } from '../ModuleWorkersAreNotSupportedInFirefoxError/ModuleWorkersAreNotSupportedInFirefoxError.js'\nimport * as WorkerType from '../WorkerType/WorkerType.js'\nimport * as Event from '../Event/Event.js'\n\nexport const create = async ({ url, name }) => {\n try {\n const worker = new Worker(url, {\n type: WorkerType.Module,\n name,\n })\n const { type, event } = await GetFirstWorkerEvent.getFirstWorkerEvent(worker)\n switch (type) {\n case FirstWorkerEventType.Message:\n if (event.data !== 'ready') {\n throw new Error('unexpected first message from worker')\n }\n break\n case FirstWorkerEventType.Error:\n const IsFirefoxWorkerError = await import('../IsFirefoxWorkerError/IsFirefoxWorkerError.js')\n if (IsFirefoxWorkerError.isFirefoxWorkerError(event.message)) {\n Event.preventDefault(event)\n throw new ModuleWorkersAreNotSupportedInFirefoxError()\n }\n const TryToGetActualWorkerErrorMessage = await import('../TryToGetActualWorkerErrorMessage/TryToGetActualWorkerErrorMessage.js')\n const actualErrorMessage = await TryToGetActualWorkerErrorMessage.tryToGetActualErrorMessage({\n url,\n name,\n })\n throw new Error(actualErrorMessage)\n default:\n break\n }\n return worker\n } catch (error) {\n if (error && error instanceof ModuleWorkersAreNotSupportedInFirefoxError) {\n const IpcParentWithMessagePort = await import('../IpcParentWithMessagePort/IpcParentWithMessagePort.js')\n return IpcParentWithMessagePort.create({ url })\n }\n throw error\n }\n}\n\nexport const wrap = (worker) => {\n let handleMessage\n return {\n get onmessage() {\n return handleMessage\n },\n set onmessage(listener) {\n if (listener) {\n handleMessage = (event) => {\n // TODO why are some events not instance of message event?\n if (event instanceof MessageEvent) {\n const message = event.data\n listener(message, event)\n } else {\n listener(event)\n }\n }\n } else {\n handleMessage = null\n }\n worker.onmessage = handleMessage\n },\n send(message) {\n worker.postMessage(message)\n },\n sendAndTransfer(message, transfer) {\n worker.postMessage(message, transfer)\n },\n }\n}\n", "export const create = async (url) => {\n const referencePort = await new Promise((resolve) => {\n globalThis.acceptReferencePort = resolve\n import(url)\n })\n delete globalThis.acceptReferencePort\n return referencePort\n}\n", "import * as IpcParentWithModuleWorker from '../IpcParentWithModuleWorker/IpcParentWithModuleWorker.js'\nimport * as JsonRpcVersion from '../JsonRpcVersion/JsonRpcVersion.js'\n\nexport const create = async ({ url, name }) => {\n const worker = await IpcParentWithModuleWorker.create({\n url,\n name,\n })\n if (worker instanceof Worker) {\n const channel = new MessageChannel()\n const { port1, port2 } = channel\n worker.postMessage(\n {\n jsonrpc: JsonRpcVersion.Two,\n method: 'initialize',\n params: ['message-port', port1],\n },\n [port1]\n )\n return port2\n }\n return worker\n}\n", "export const create = ({ type }) => {\n return new Promise((resolve, reject) => {\n const handleMessageFromWindow = (event) => {\n const port = event.ports[0]\n resolve(port)\n }\n\n // @ts-ignore\n window.addEventListener('message', handleMessageFromWindow, {\n once: true,\n })\n // @ts-ignore\n if (typeof window.myApi === 'undefined') {\n reject(new Error('Electron api was requested but is not available'))\n }\n // @ts-ignore\n window.myApi.ipcConnect(type)\n })\n}\n", "import * as IpcParentType from '../IpcParentType/IpcParentType.js'\n\nexport const getModule = (method) => {\n switch (method) {\n case IpcParentType.ModuleWorker:\n return import('../IpcParentWithModuleWorker/IpcParentWithModuleWorker.js')\n case IpcParentType.MessagePort:\n return import('../IpcParentWithMessagePort/IpcParentWithMessagePort.js')\n case IpcParentType.ReferencePort:\n return import('../IpcParentWithReferencePort/IpcParentWithReferencePort.js')\n case IpcParentType.ModuleWorkerWithMessagePort:\n return import('../IpcParentWithModuleWorkerWithMessagePort/IpcParentWithModuleWorkerWithMessagePort.js')\n case IpcParentType.Electron:\n return import('../IpcParentWithElectron/IpcParentWithElectron.js')\n default:\n throw new Error('unexpected ipc type')\n }\n}\n", "import * as IpcParentModule from '../IpcParentModule/IpcParentModule.js'\n\nexport const create = async ({ method, ...options }) => {\n const module = await IpcParentModule.getModule(method)\n // @ts-ignore\n return module.create(options)\n}\n", "export const Web = 'web'\n\nexport const Electron = 'electron'\n\nexport const Remote = 'remote'\n", "import * as PlatformType from '../PlatformType/PlatformType.js'\n/* istanbul ignore file */\n\n// TODO this should always be completely tree shaken out during build\n\n/**\n * @returns {'electron'|'remote'|'web'}\n */\nconst getPlatform = () => {\n // @ts-ignore\n if (typeof 'remote' !== 'undefined') {\n // @ts-ignore\n return 'remote'\n }\n if (typeof process !== 'undefined' && process.env.NODE_ENV === 'test') {\n return PlatformType.Remote\n }\n // @ts-ignore\n if (typeof myApi !== 'undefined') {\n return PlatformType.Electron\n }\n return PlatformType.Remote\n}\n\nexport const platform = getPlatform()\n\n// TODO treeshake this function out when targeting electron\n\nexport const state = {\n getAssetDir() {\n // @ts-ignore\n if (typeof '/a615e33' !== 'undefined') {\n // @ts-ignore\n return '/a615e33'\n }\n if (platform === 'electron') {\n return '../../../../..'\n }\n return ''\n },\n supportsHtml5Dialog() {\n const $Dialog = document.createElement('dialog')\n // @ts-ignore\n return typeof $Dialog.showModal === 'function'\n },\n isElectron() {\n return (\n // @ts-ignore\n window.myApi &&\n // @ts-ignore\n window.myApi.ipcConnect &&\n // @ts-ignore\n typeof window.myApi.ipcConnect === 'function'\n )\n },\n}\n\n// TODO if necessary support more browser detection\nexport const getBrowser = () => {\n if (platform === 'electron') {\n return 'electron'\n }\n // @ts-ignore\n const userAgentData = navigator.userAgentData\n if (userAgentData) {\n for (const brand of userAgentData.brands) {\n const actualBrand = brand.brand.toLowerCase()\n switch (actualBrand) {\n case 'firefox':\n return 'firefox'\n case 'chromium':\n return 'chromium'\n default:\n break\n }\n }\n }\n const userAgent = navigator.userAgent.toLowerCase()\n if (userAgent.includes('firefox')) {\n return 'firefox'\n }\n if (userAgent.includes('Electron')) {\n return 'electron'\n }\n return 'chromium'\n}\n\nexport const getAssetDir = () => {\n return state.getAssetDir()\n}\n\nexport const supportsHtml5Dialog = () => {\n return state.supportsHtml5Dialog()\n}\n\nexport const isElectron = () => {\n return state.isElectron()\n}\n\nexport const getRendererWorkerUrl = () => {\n const assetDir = getAssetDir()\n const urlRendererWorker = `${assetDir}/packages/renderer-worker/dist/rendererWorkerMain.js`\n return urlRendererWorker\n}\n\nconst getIsMobile = () => {\n if (typeof process !== 'undefined' && process.env.NODE_ENV === 'test') {\n return false\n }\n // @ts-ignore\n const userAgentData = navigator.userAgentData\n if (userAgentData && 'mobile' in userAgentData) {\n return userAgentData.mobile\n }\n if (navigator.userAgent.includes('Android')) {\n return true\n }\n return false\n}\n\nexport const isMobile = getIsMobile()\n", "import * as Callback from '../Callback/Callback.js'\nimport { JsonRpcError } from '../Errors/JsonRpcError.js'\nimport * as GetResponse from '../GetResponse/GetResponse.js'\nimport * as IpcParent from '../IpcParent/IpcParent.js'\nimport * as IpcParentType from '../IpcParentType/IpcParentType.js'\nimport * as JsonRpcVersion from '../JsonRpcVersion/JsonRpcVersion.js'\nimport * as Platform from '../Platform/Platform.js'\n\nexport const state = {\n /**\n * @type {any}\n */\n ipc: undefined,\n}\n\nconst handleMessageFromRendererWorker = async (event) => {\n const message = event.data\n if ('id' in message) {\n if ('method' in message) {\n const response = await GetResponse.getResponse(message)\n state.ipc.send(response)\n return\n }\n Callback.resolve(message.id, message)\n return\n }\n if (message.method === 'get-port') {\n const port = await getPort(...message.params)\n state.ipc.sendAndTransfer(\n {\n jsonrpc: JsonRpcVersion.Two,\n id: message._id,\n result: port,\n },\n [port]\n )\n return\n }\n throw new JsonRpcError('unexpected message from renderer worker')\n}\n\nconst getIpc = async () => {\n const isElectron = Platform.isElectron()\n const name = isElectron ? 'Renderer Worker (Electron)' : 'Renderer Worker'\n const rendererWorker = await IpcParent.create({\n method: IpcParentType.Auto,\n url: Platform.getRendererWorkerUrl(),\n name,\n })\n return {\n send(message) {\n rendererWorker.postMessage(message)\n },\n sendAndTransfer(message, transferables) {\n rendererWorker.postMessage(message, transferables)\n },\n get onmessage() {\n return rendererWorker.onmessage\n },\n set onmessage(listener) {\n rendererWorker.onmessage = listener\n },\n }\n}\n\nconst getPort = (options) => {\n return IpcParent.create(options)\n}\n\nexport const hydrate = async (config) => {\n const ipc = await getIpc()\n ipc.onmessage = handleMessageFromRendererWorker\n state.ipc = ipc\n}\n\n// TODO needed?\nexport const dispose = () => {\n if (state.rendererWorker) {\n state.rendererWorker.terminate()\n }\n}\n\nexport const send = (method, ...params) => {\n state.ipc.send({\n jsonrpc: JsonRpcVersion.Two,\n method,\n params,\n })\n}\n\nconst deserializeError = (serializedError) => {\n const error = new Error()\n if (serializedError && serializedError.message) {\n error.message = serializedError.message\n }\n if (serializedError && serializedError.stack) {\n error.stack = serializedError.stack\n }\n return error\n}\n\nconst combineStacks = (upperStack, lowerStack) => {\n const indexNewLine = lowerStack.indexOf('\\n')\n return upperStack + lowerStack.slice(indexNewLine)\n}\n\nclass RendererWorkerError extends Error {\n constructor(serializedError) {\n const deserializedError = deserializeError(serializedError)\n super(deserializedError.message)\n if (this.stack) {\n this.stack = combineStacks(deserializedError.stack, this.stack)\n }\n }\n}\n\nexport const invoke = async (method, ...params) => {\n const { id, promise } = Callback.registerPromise()\n state.ipc.send({\n jsonrpc: JsonRpcVersion.Two,\n method,\n params,\n id,\n })\n const responseMessage = await promise\n if ('error' in responseMessage) {\n throw new RendererWorkerError(responseMessage.error)\n }\n if ('result' in responseMessage) {\n return responseMessage.result\n }\n\n throw new JsonRpcError('unexpected message from renderer worker')\n}\n\nexport const sendAndTransfer = (message, transfer) => {\n state.ipc.sendAndTransfer(message, transfer)\n}\n", "import * as Widget from '../Widget/Widget.js'\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\n\nconst handleBlur = () => {\n RendererWorker.send(/* EditorRename.abort */ 'EditorRename.abort')\n}\n\nexport const create = (x, y) => {\n const $RenameWidgetInputBox = InputBox.create()\n $RenameWidgetInputBox.className = 'RenameWidgetInputBox'\n $RenameWidgetInputBox.onblur = handleBlur\n const $RenameWidget = document.createElement('div')\n $RenameWidget.className = 'RenameWidget'\n $RenameWidget.append($RenameWidgetInputBox)\n SetBounds.setXAndY($RenameWidget, x, y)\n Widget.append($RenameWidget)\n Focus.focus($RenameWidgetInputBox, 'editorRename')\n return {\n $RenameWidget,\n $RenameWidgetInputBox,\n }\n}\n\nexport const dispose = (state) => {\n // TODO focus editor\n Widget.remove(state.$RenameWidget)\n}\n\n// TODO could also be event based\n// finish -> finish -> finishWithValue\n\nexport const finish = (state) => {\n const value = state.$RenameWidgetInputBox.value\n // TODO don't like side effect here\n return value\n}\n", "import * as EditorRename from './EditorRename.js'\n\nexport const name = 'EditorRename'\n\nexport const Commands = {\n create: EditorRename.create,\n dispose: EditorRename.dispose,\n finish: EditorRename.finish,\n}\n", "/*\n * should only be used for testing\n */\nexport const evalCode = (code) => {\n window.eval(code)\n}\n", "import * as Eval from './Eval.js'\n\nexport const name = 'Eval'\n\nexport const Commands = {\n evalCode: Eval.evalCode,\n}\n", "export const showDirectoryPicker = (options) => {\n // @ts-ignore\n return window.showDirectoryPicker(options)\n}\n\nexport const showFilePicker = (options) => {\n // @ts-ignore\n return window.showFilePicker(options)\n}\n\nexport const showSaveFilePicker = (options) => {\n // @ts-ignore\n return window.showSaveFilePicker(options)\n}\n", "import * as FilePicker from './FilePicker.js'\n\nexport const name = 'FilePicker'\n\nexport const Commands = {\n showDirectoryPicker: FilePicker.showDirectoryPicker,\n showFilePicker: FilePicker.showFilePicker,\n showSaveFilePicker: FilePicker.showSaveFilePicker,\n}\n", "export const requestPermission = (handle, options) => {\n return handle.requestPermission(options)\n}\n", "import * as FileSystemHandle from './FileSystemHandle.js'\n\nexport const name = 'FileSystemHandle'\n\nexport const Commands = {\n requestPermission: FileSystemHandle.requestPermission,\n}\n", "import * as Widget from '../Widget/Widget.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\n\nconst handleImageLoad = (event) => {\n const $ImagePreviewImage = event.target\n const $ImagePreviewCaption = $ImagePreviewImage.nextSibling\n const width = $ImagePreviewImage.naturalWidth\n const height = $ImagePreviewImage.naturalHeight\n $ImagePreviewCaption.textContent = `${width} \u00D7 ${height}`\n}\n\nconst handleImageError = (event) => {\n const $ImagePreviewImage = event.target\n const $ImagePreviewCaption = $ImagePreviewImage.nextSibling\n $ImagePreviewCaption.textContent = 'Image could not be loaded'\n}\n\n// TODO duplicate code with below\n\nexport const showError = (message, y, x) => {\n const $ImagePreviewImage = document.createElement('img')\n $ImagePreviewImage.className = 'ImagePreviewImage'\n $ImagePreviewImage.alt = ''\n const $ImagePreviewCaption = document.createElement('figcaption')\n $ImagePreviewCaption.className = 'ImagePreviewCaption'\n $ImagePreviewCaption.textContent = message\n const $ImagePreview = document.createElement('figure')\n $ImagePreview.className = 'ImagePreview'\n $ImagePreview.append($ImagePreviewImage, $ImagePreviewCaption)\n SetBounds.setXAndY($ImagePreview, x, y)\n $ImagePreview.style.display = 'none'\n Widget.append($ImagePreview)\n return {\n $ImagePreview,\n $ImagePreviewCaption,\n $ImagePreviewImage,\n }\n}\n\nexport const create = (uri, top, left) => {\n const $ImagePreviewImage = document.createElement('img')\n $ImagePreviewImage.className = 'ImagePreviewImage'\n $ImagePreviewImage.src = uri\n $ImagePreviewImage.alt = ''\n const $ImagePreviewCaption = document.createElement('figcaption')\n $ImagePreviewCaption.className = 'ImagePreviewCaption'\n const $ImagePreview = document.createElement('figure')\n $ImagePreview.className = 'ImagePreview'\n $ImagePreview.append($ImagePreviewImage, $ImagePreviewCaption)\n $ImagePreviewImage.onload = handleImageLoad\n $ImagePreviewImage.onerror = handleImageError\n $ImagePreview.style.top = `${top}px`\n $ImagePreview.style.left = `${left}px`\n $ImagePreview.style.display = 'none'\n Widget.append($ImagePreview)\n return {\n $ImagePreview,\n $ImagePreviewCaption,\n $ImagePreviewImage,\n }\n}\n\nexport const update = (state, uri) => {\n state.$ImagePreviewImage.uri = uri\n}\n\nexport const dispose = (state) => {\n Widget.remove(state.$ImagePreview)\n}\n", "import * as ImagePreview from './ImagePreview.js'\n\nexport const name = 'ImagePreview'\n\nexport const Commands = {\n create: ImagePreview.create,\n dispose: ImagePreview.dispose,\n showError: ImagePreview.showError,\n update: ImagePreview.update,\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const getPathName = () => {\n return location.pathname\n}\n\nexport const getHref = () => {\n return location.href\n}\n\n// TODO should do nothing if it is already at this path\nexport const setPathName = (pathName) => {\n const currentPathName = getPathName()\n if (currentPathName === pathName) {\n return\n }\n history.pushState(null, null, pathName)\n}\n\nconst handlePopState = (event) => {\n // RendererWorker.send(/* Workspace.hydrate */ 'Workspace.hydrate')\n}\n\nexport const hydrate = () => {\n // addEventListener('popstate', handlePopState)\n}\n", "const getTitleBarHeight = () => {\n if (\n // @ts-ignore\n navigator.windowControlsOverlay &&\n // @ts-ignore\n navigator.windowControlsOverlay.getTitlebarAreaRect\n ) {\n // @ts-ignore\n const titleBarRect = navigator.windowControlsOverlay.getTitlebarAreaRect()\n return titleBarRect.height\n }\n return 0\n}\n\nexport const getBounds = () => {\n return {\n windowWidth: window.innerWidth,\n windowHeight: window.innerHeight,\n titleBarHeight: getTitleBarHeight(),\n }\n}\n", "import * as Location from '../Location/Location.js'\nimport * as Layout from '../Layout/Layout.js'\n\nexport const getInitData = () => {\n const initData = {\n Location: {\n href: Location.getHref(),\n },\n Layout: {\n bounds: Layout.getBounds(),\n },\n }\n return initData\n}\n", "import * as InitData from './InitData.js'\n\nexport const name = 'InitData'\n\nexport const Commands = {\n getInitData: InitData.getInitData,\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Logger from '../Logger/Logger.js'\n\nexport const state = {\n keyBindings: [],\n modifier: '',\n modifierTimeout: -1,\n keyBindingSets: Object.create(null),\n}\n\nexport const addKeyBindings = (id, keyBindings) => {\n Assert.string(id)\n Assert.array(keyBindings)\n if (id in state.keyBindingSets) {\n Logger.warn(`cannot add keybindings multiple times: ${id}`)\n return\n }\n state.keyBindingSets[id] = keyBindings\n state.keyBindings.unshift(...keyBindings)\n}\n\nexport const removeKeyBindings = (id) => {\n Assert.string(id)\n const { keyBindingSets } = state\n if (!(id in keyBindingSets)) {\n Logger.warn(`cannot remove keybindings that are not registered: ${id}`)\n return\n }\n delete keyBindingSets[id]\n state.keyBindings = Object.values(keyBindingSets).flat(1)\n}\n\nexport const getKeyBindings = () => {\n return state.keyBindings\n}\n\nexport const isModifier = (modifier) => {\n return state.modifier === modifier\n}\n\nexport const setModifier = (modifier) => {\n state.modifier = modifier\n}\n\nexport const setModifierTimeout = (timeout) => {\n state.modifierTimeout = timeout\n}\n\nexport const hasModifier = () => {\n return state.modifier\n}\n\nexport const getModifierTimeout = () => {\n return state.modifierTimeout\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Context from '../Context/Context.js'\nimport * as KeyBindingsState from '../KeyBindingsState/KeyBindingsState.js'\nimport * as Platform from '../Platform/Platform.js'\n\n// TODO store keybindings as json somewhere\n\n// TODO sort keybindings by `when` priority -> focus.editorCompletions: 10, focus.editor:9 etc.\n\n// TODO does it make sense to have all of these configurable?\n// could remove some context logic and have less user configuration when these are default\n// e.g. arrow down focuses next, arrow up always focuses previous item (like in aria spec)\n\n// TODO ui should only have keys -> commands get resolved inside renderer worker\n// TODO should toggle terminal, not only open\n\nexport const addKeyBindings = (id, keyBindings) => {\n Assert.string(id)\n Assert.array(keyBindings)\n KeyBindingsState.addKeyBindings(id, keyBindings)\n}\n\nexport const removeKeyBindings = (id) => {\n KeyBindingsState.removeKeyBindings(id)\n}\n\nexport const hydrate = (keyBindings) => {\n // TODO is this the right place for browser context ?\n // maybe in env file / env service\n const browser = Platform.getBrowser()\n Context.set(`browser.${browser}`, true)\n addKeyBindings('initial', keyBindings)\n}\n\n// TODO should be in renderer worker\nexport const lookupKeyBinding = (commandId) => {\n switch (commandId) {\n case 'scm.acceptInput':\n return 'Ctrl+Enter'\n default:\n return ''\n }\n}\n", "import * as KeyBindings from './KeyBindings.js'\n\nexport const name = 'KeyBindings'\n\nexport const Commands = {\n // Command.register(756, KeyBindings.setKeyBindings)\n hydrate: KeyBindings.hydrate,\n}\n", "import * as Layout from './Layout.js'\n\nexport const name = 'Layout'\n\nexport const Commands = {\n getBounds: Layout.getBounds,\n}\n", "import * as Location from './Location.js'\n\nexport const name = 'Location'\n\nexport const Commands = {\n getHref: Location.getHref,\n getPathName: Location.getPathName,\n hydrate: Location.hydrate,\n setPathName: Location.setPathName,\n}\n", "export const setThemeColor = (color) => {\n const meta = document.querySelector('meta[name=\"theme-color\"]')\n if (!meta) {\n return\n }\n // @ts-ignore\n meta.content = color\n}\n", "import * as Meta from './Meta.js'\n\nexport const name = 'Meta'\n\nexport const Commands = {\n setThemeColor: Meta.setThemeColor,\n}\n", "import * as Widget from '../Widget/Widget.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const state = {\n $Notifications: undefined,\n}\n\nconst create$Notifications = () => {\n const $Notifications = document.createElement('div')\n $Notifications.id = 'Notifications'\n return $Notifications\n}\n\nconst create$Notification = (message) => {\n const $Notification = document.createElement('div')\n $Notification.className = 'Notification'\n $Notification.textContent = message\n return $Notification\n}\n\nexport const create = (type, message) => {\n // TODO this pattern might be also useful for activitybar, sidebar etc., creating elements as late as possible, only when actually needed\n const $Notification = create$Notification(message)\n Widget.append($Notification)\n}\n\nconst findIndex = ($Child) => {\n const $Parent = $Child.parentNode\n for (let i = 0; i < $Parent.children.length; i++) {\n if ($Parent.children[i] === $Child) {\n return i\n }\n }\n return -1\n}\n\nconst handleNotificationClick = (event) => {\n const $Target = event.target\n switch ($Target.className) {\n case 'NotificationOption':\n const index = findIndex($Target)\n RendererWorker.send(\n /* Notification.handleClick */ 'Notification.handleClick',\n /* index */ index\n )\n break\n default:\n break\n }\n}\n\nconst create$NotificationWithOptions = (message, options) => {\n const $NotificationMessage = document.createElement('p')\n $NotificationMessage.className = 'NotificationMessage'\n $NotificationMessage.textContent = message\n const $NotificationOptions = document.createElement('div')\n $NotificationOptions.className = 'NotificationOptions'\n for (const option of options) {\n const $NotificationOption = document.createElement('button')\n $NotificationOption.className = 'NotificationOption'\n $NotificationOption.textContent = option\n $NotificationOptions.append($NotificationOption)\n }\n const $Notification = document.createElement('div')\n $Notification.className = 'Notification'\n $Notification.append($NotificationMessage, $NotificationOptions)\n $Notification.onclick = handleNotificationClick\n return $Notification\n}\n\nexport const createWithOptions = (type, message, options) => {\n const $Notification = create$NotificationWithOptions(message, options)\n Widget.append($Notification)\n}\n\nexport const dispose = (id) => {\n // const $Notification = state.$Notifications\n}\n", "import * as Notification from './Notification.js'\n\nexport const name = 'Notification'\n\n// prettier-ignore\nexport const Commands = {\n create: Notification.create,\n createWithOptions: Notification.createWithOptions,\n dispose: Notification.dispose,\n}\n", "import * as JsonRpcVersion from '../JsonRpcVersion/JsonRpcVersion.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const state = {\n canvasObjects: Object.create(null),\n}\n\nexport const get = (id) => {\n return state.canvasObjects[id]\n}\n\nexport const create = (canvasId, callbackId) => {\n const canvas = document.createElement('canvas')\n // @ts-ignore\n const offscreenCanvas = canvas.transferControlToOffscreen()\n state.canvasObjects[canvasId] = canvas\n RendererWorker.sendAndTransfer(\n {\n jsonrpc: JsonRpcVersion.Two,\n id: callbackId,\n params: [offscreenCanvas],\n },\n [offscreenCanvas]\n )\n}\n", "import * as OffscreenCanvas from './OffscreenCanvas.js'\n\nexport const name = 'OffscreenCanvas'\n\n// prettier-ignore\nexport const Commands = {\n create: OffscreenCanvas.create,\n}\n", "// TODO this module should be called dom or dom utils\n\n// TODO this module makes for weird code splitting chunks,\n// maybe duplicate the code per file for better chunks\n\nexport const findIndex = ($Container, $Target) => {\n while ($Target && $Target.parentNode !== $Container) {\n $Target = $Target.parentNode\n }\n if (!$Target) {\n return -1\n }\n for (let i = 0; i < $Container.children.length; i++) {\n if ($Container.children[i] === $Target) {\n return i\n }\n }\n return -1\n}\n", "export const create$BackDrop = () => {\n const $BackDrop = document.createElement('div')\n $BackDrop.id = 'BackDrop'\n return $BackDrop\n}\n", "export const Separator = 1\n\nexport const None = 0\n\nexport const SubMenu = 4\n\nexport const Checked = 2\n\nexport const Unchecked = 3\n\nexport const Disabled = 5\n\nexport const RestoreFocus = 6\n\nexport const Ignore = 7\n", "import * as AriaBoolean from '../AriaBoolean/AriaBoolean.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as MenuItemFlags from '../MenuItemFlags/MenuItemFlags.js'\nimport * as Logger from '../Logger/Logger.js'\n\nconst getLabel = (item) => {\n if (!item || !item.label) {\n Logger.warn('menu item has missing label', item)\n return 'n/a'\n }\n return item.label\n}\n\nexport const create$MenuItem = (item) => {\n const $MenuItem = document.createElement('div')\n switch (item.flags) {\n case MenuItemFlags.None:\n case MenuItemFlags.RestoreFocus:\n case MenuItemFlags.Ignore:\n $MenuItem.className = 'MenuItem'\n $MenuItem.role = AriaRoles.MenuItem\n $MenuItem.textContent = getLabel(item)\n $MenuItem.tabIndex = -1\n break\n case MenuItemFlags.Separator:\n $MenuItem.className = 'MenuItemSeparator'\n $MenuItem.role = AriaRoles.Separator\n break\n case MenuItemFlags.Checked:\n $MenuItem.className = 'MenuItem'\n $MenuItem.role = AriaRoles.MenuItemCheckBox\n $MenuItem.ariaChecked = AriaBoolean.True\n $MenuItem.textContent = getLabel(item)\n $MenuItem.tabIndex = -1\n break\n case MenuItemFlags.Unchecked:\n $MenuItem.className = 'MenuItem'\n $MenuItem.role = AriaRoles.MenuItemCheckBox\n $MenuItem.ariaChecked = AriaBoolean.False\n $MenuItem.textContent = getLabel(item)\n $MenuItem.tabIndex = -1\n break\n case MenuItemFlags.SubMenu:\n $MenuItem.className = 'MenuItem'\n $MenuItem.role = AriaRoles.MenuItem\n $MenuItem.textContent = getLabel(item)\n $MenuItem.tabIndex = -1\n $MenuItem.ariaHasPopup = AriaBoolean.True\n $MenuItem.ariaExpanded = AriaBoolean.False\n break\n case MenuItemFlags.Disabled:\n $MenuItem.className = 'MenuItem'\n $MenuItem.role = AriaRoles.MenuItem\n $MenuItem.textContent = getLabel(item)\n $MenuItem.tabIndex = -1\n $MenuItem.setAttribute('disabled', AriaBoolean.True)\n break\n default:\n $MenuItem.className = 'MenuItem'\n $MenuItem.role = AriaRoles.MenuItem\n $MenuItem.textContent = getLabel(item)\n $MenuItem.tabIndex = -1\n Logger.warn('invalid menu item flags:', item)\n break\n }\n return $MenuItem\n}\n", "export const BeforeInput = 'beforeinput'\nexport const Blur = 'blur'\nexport const Click = 'click'\nexport const CompositionEnd = 'compositionend'\nexport const CompositionStart = 'compositionstart'\nexport const CompositionUpdate = 'compositionupdate'\nexport const ContextMenu = 'contextmenu'\nexport const Focus = 'focus'\nexport const FocusIn = 'focusin'\nexport const FocusOut = 'focusout'\nexport const Input = 'input'\nexport const KeyDown = 'keydown'\nexport const KeyUp = 'keyup'\nexport const LostPointerCapture = 'lostpointercapture'\nexport const MouseDown = 'mousedown'\nexport const MouseEnter = 'mouseenter'\nexport const MouseLeave = 'mouseleave'\nexport const MouseMove = 'mousemove'\nexport const MouseUp = 'mouseup'\nexport const PointerDown = 'pointerdown'\nexport const PointerMove = 'pointermove'\nexport const PointerUp = 'pointerup'\nexport const Resize = 'resize'\nexport const TouchEnd = 'touchend'\nexport const TouchMove = 'touchmove'\nexport const TouchStart = 'touchstart'\nexport const Wheel = 'wheel'\n", "import * as FindIndex from '../../shared/findIndex.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as BackDrop from '../BackDrop/BackDrop.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as MenuItem from '../MenuItem/MenuItem.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as Widget from '../Widget/Widget.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\nimport * as DomAttributeType from '../DomAttributeType/DomAttributeType.js'\nimport * as AriaBoolean from '../AriaBoolean/AriaBoolean.js'\nimport * as Event from '../Event/Event.js'\n// TODO when pressing tab -> focus next element in tab order and close menu\n\n// TODO menu and contextmenu should have own keybinding logic\n// seems not possible to do with just one keybinding listener\n\n// TODO similar to context menu, show sub menu entries\n// there can be multiple instances (parent -> child -> child) submenus\n\n// TODO using .style.top, .style.left causes chrome devtools to show many layout shift -> maybe use transform instead\n\n// TODO when cycling through items, recalculate style is much slower\n// than in vscode (1.49ms vs 0.33ms)\n// paint is also faster in vscode (0.32ms vs 0.14ms)\n\n// TODO focus on menu is not announced to screenreader\n\n// TODO recalculate style and paint is slow when cycling through items:\n// 0.59ms recalculate style\n// 36us update layer tree\n// 0.35ms paint\n// 0.20ms composite layer\n\n// const contextMenuWidth = 150\n// const contextMenuHeight = 150 + /* padding */ 8 * 4\n\n// TODO keyboard handling\n\nexport const state = {\n handleKeyDown(event) {},\n handleFocusOut(event) {},\n $$Menus: [],\n anchorX: 0,\n anchorY: 0,\n anchorTime: -1,\n $BackDrop: undefined,\n}\n\nconst getLevel = ($Menu) => {\n return state.$$Menus.indexOf($Menu)\n}\n\nconst handleMouseDown = (event) => {\n const $Target = event.target\n const $Menu = $Target.closest('.Menu')\n const index = FindIndex.findIndex($Menu, $Target)\n if (index === -1) {\n return\n }\n Event.preventDefault(event)\n const level = getLevel($Menu)\n RendererWorker.send(/* Menu.handleClick */ 'Menu.selectIndex', /* level */ level, /* index */ index)\n}\n\n// const handleKeyDown = (event) => {\n// switch (event.key) {\n// case 'ArrowUp':\n// RendererWorker.send( /* Menu.focusPrevious */ 7405)\n// break\n// case 'ArrowLeft':\n// // TODO collapse menu maybe\n// break\n// case 'ArrowDown':\n// RendererWorker.send( /* Menu.focusNext */ 7404)\n// break\n// case 'ArrowRight':\n// // TODO expand sub menu maybe\n// break\n// case 'Home':\n// RendererWorker.send( /* Menu.focusFirst */ 7406)\n// break\n// case 'End':\n// RendererWorker.send( /* Menu.focusLast */ 7407)\n// break\n// default:\n// break\n// }\n// }\n\nconst MOUSE_LOCS_TRACKED = 3\n\n/**\n *\n * @param {MouseEvent} event\n */\nconst handleMouseEnter = (event) => {\n const { target, clientX, clientY, timeStamp } = event\n // @ts-ignore\n const $Menu = target.closest('.Menu')\n const index = FindIndex.findIndex($Menu, target)\n if (index === -1) {\n return\n }\n const level = getLevel($Menu)\n RendererWorker.send(\n /* Menu.handleMouseEnter */ 'Menu.handleMouseEnter',\n /* level */ level,\n /* index */ index,\n /* x */ clientX,\n /* y */ clientY,\n /* timeStamp */ timeStamp\n )\n}\n\nconst handleMouseMove = (event) => {\n // const x = event.clientX\n // const y = event.clientY\n}\n\nconst handleMouseLeave = (event) => {\n const $RelatedTarget = event.relatedTarget\n if ($RelatedTarget.classList.contains('MenuItem')) {\n }\n // RendererWorker.send(/* Menu.handleMouseLeave */ 'Menu.handleMouseLeave')\n}\n\n// const handleBlur = (event) => {}\nconst handleKeyDown = (event) => {\n state.handleKeyDown(event)\n}\n\nconst handleFocusOut = (event) => {\n state.handleFocusOut(event)\n}\n\nconst create$Menu = () => {\n // TODO set aria label on menu (e.g. File, Edit, Selection)\n const $Menu = document.createElement('ul')\n $Menu.className = 'Menu'\n $Menu.role = AriaRoles.Menu\n $Menu.tabIndex = -1\n // $ContextMenu.onmousedown = contextMenuHandleMouseDown\n // TODO mousedown vs click? (click is usually better but mousedown is faster, why wait 100ms?)\n $Menu.addEventListener(DomEventType.MouseDown, handleMouseDown)\n $Menu.addEventListener(DomEventType.MouseEnter, handleMouseEnter, {\n capture: true,\n })\n $Menu.addEventListener(DomEventType.MouseLeave, handleMouseLeave, {\n capture: true,\n })\n // $Menu.addEventListener('mousemove', handleMouseMove, {\n // passive: true,\n // })\n $Menu.onkeydown = handleKeyDown\n $Menu.addEventListener(DomEventType.FocusOut, handleFocusOut)\n $Menu.oncontextmenu = handleContextMenu\n // $ContextMenu.onfocus = handleFocus\n // $ContextMenu.onblur = handleBlur\n return $Menu\n}\n\nexport const focusIndex = (level, oldFocusedIndex, newFocusedIndex) => {\n const $Menu = state.$$Menus[level]\n if (oldFocusedIndex !== -1) {\n $Menu.children[oldFocusedIndex].classList.remove('Focused')\n }\n if (newFocusedIndex !== -1) {\n $Menu.children[newFocusedIndex].classList.add('Focused')\n $Menu.children[newFocusedIndex].focus()\n }\n}\n\n// TODO replace function that recycles menu dom nodes\n\nconst handleBackDropMouseDown = (event) => {\n Event.preventDefault(event)\n Event.stopPropagation(event)\n RendererWorker.send(/* Menu.hide */ 'Menu.hide')\n}\n\nconst handleContextMenu = (event) => {\n Event.preventDefault(event)\n}\n\nexport const showMenu = (x, y, width, height, items, level, parentIndex = -1, mouseBlocking = false) => {\n if (mouseBlocking) {\n const $BackDrop = BackDrop.create$BackDrop()\n $BackDrop.onmousedown = handleBackDropMouseDown\n $BackDrop.oncontextmenu = handleContextMenu\n state.$BackDrop = $BackDrop\n Widget.append($BackDrop)\n }\n\n const $Menu = create$Menu()\n $Menu.append(...items.map(MenuItem.create$MenuItem))\n SetBounds.setXAndY($Menu, x, y)\n $Menu.id = `Menu-${level}`\n\n if (parentIndex !== -1) {\n const $ParentMenu = state.$$Menus[level - 1]\n const $ParentMenuItem = $ParentMenu.children[parentIndex]\n $ParentMenuItem.ariaExpanded = AriaBoolean.True\n $ParentMenuItem.setAttribute(DomAttributeType.AriaOwns, $Menu.id)\n }\n\n state.$$Menus.push($Menu)\n Widget.append($Menu)\n\n if (level === 0) {\n Focus.focus($Menu, 'menu')\n }\n}\n\nexport const showContextMenu = (x, y, width, height, level, items) => {\n for (const $Menu of state.$$Menus) {\n Widget.remove($Menu)\n }\n state.$$Menus = []\n while (state.$$Menus.length > 0) {\n state.$$Menus[0].remove()\n }\n const $Menu = create$Menu()\n $Menu.append(...items.map(MenuItem.create$MenuItem))\n SetBounds.setXAndY($Menu, x, y)\n $Menu.id = `Menu-${level}`\n Widget.append($Menu)\n state.$$Menus.push($Menu)\n // TODO create backdrop\n}\n\nexport const closeSubMenu = () => {\n const $SubMenu = state.$$Menus.pop()\n const $ParentMenu = state.$$Menus.at(-1)\n Widget.remove($SubMenu)\n}\n\nexport const hideSubMenu = (level) => {\n const $$ChildMenus = state.$$Menus.slice(level)\n for (const $ChildMenu of $$ChildMenus) {\n Widget.remove($ChildMenu)\n }\n}\n\n// export const showSubMenu = (level, items, parentIndex) => {\n// const $$ChildMenus = state.$$Menus.slice(level)\n// for (const $ChildMenu of $$ChildMenus) {\n// Widget.remove($ChildMenu)\n// }\n// state.$$Menus = state.$$Menus.slice(0, level)\n// const $ParentMenu = state.$$Menus[level - 1]\n// const $ParentMenuItem = $ParentMenu.children[parentIndex]\n// const rect = $ParentMenuItem.getBoundingClientRect()\n// const x = rect.right\n// const y = rect.top\n// showMenu(x, y, items, level)\n// // TODO remove aria-owns when sub-menu is closed\n// $ParentMenuItem.setAttribute('aria-owns', 'Menu')\n// }\n\n// TODO implement focusIndex like this\n// const focusIndex2=(id, index)=>{\n// const $Menu = state.menus[id]\n// $Menu.children[index].focus()\n// }\n\n// TODO support nested menus / submenus\nexport const showControlled = ({ x, y, items, handleKeyDown, handleFocusOut, $Parent, level, width, height }) => {\n showMenu(x, y, width, height, items, level)\n // TODO menu should not necessarily know about parent (titleBarMenuBar)\n // it should be the other way around\n state.$Parent = $Parent\n state.handleFocusOut = handleFocusOut\n state.handleKeyDown = handleKeyDown\n if ($Parent) {\n // state.$Menu.ariaLabel=''\n // state.$Menu.ariaLabelledBy =$Parent.id\n $Parent.setAttribute(DomAttributeType.AriaOwns, 'Menu')\n } else {\n // state.$Menu.removeAttribute('aria-labelledby')\n }\n // Context.setFocus('menu') // TODO overlapping focus: titleBarMenuBar has focus (kinda) but also menu at the same time\n}\n\n// TODO have function to show submenu\n\nexport const hide = (restoreFocus = true) => {\n for (const $Menu of state.$$Menus) {\n Widget.remove($Menu)\n }\n state.$$Menus = []\n if (state.$BackDrop) {\n Widget.remove(state.$BackDrop)\n state.$BackDrop = undefined\n }\n // TODO focus previous item\n if (restoreFocus) {\n Focus.focusPrevious()\n }\n}\n\nexport const contains = ($Element) => {\n for (const $Menu of state.$$Menus) {\n if ($Menu.contains($Element)) {\n return true\n }\n }\n return false\n}\n", "import * as Menu from './Menu.js'\n\nexport const name = 'Menu'\n\nexport const Commands = {\n focusIndex: Menu.focusIndex,\n hide: Menu.hide,\n hideSubMenu: Menu.hideSubMenu,\n showContextMenu: Menu.showContextMenu,\n showControlled: Menu.showControlled,\n showMenu: Menu.showMenu,\n}\n", "export const openUrl = (url) => {\n open(url)\n}\n", "import * as Open from './Open.js'\n\nexport const name = 'Open'\n\nexport const Commands = {\n openUrl: Open.openUrl,\n}\n", "export const measureUserAgentSpecificMemory = async () => {\n // @ts-ignore\n if (performance && performance.measureUserAgentSpecificMemory) {\n // @ts-ignore\n const memory = await performance.measureUserAgentSpecificMemory()\n return memory\n }\n return undefined\n}\n\nexport const getMemory = () => {\n // @ts-ignore\n const memory = performance.memory\n if (!memory) {\n return undefined\n }\n return {\n jsHeapSizeLimit: memory.jsHeapSizeLimit,\n totalJSHeapSize: memory.totalJSHeapSize,\n usedJSHeapSize: memory.usedJSHeapSize,\n }\n}\n", "import * as Performance from './Performance.js'\n\nexport const name = 'Performance'\n\n// prettier-ignore\nexport const Commands = {\n getMemory: Performance.getMemory,\n measureUserAgentSpecificMemory: Performance.measureUserAgentSpecificMemory,\n}\n", "/*! @license DOMPurify 3.0.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.1/LICENSE */\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n return _typeof = typeof Symbol == \"function\" && typeof Symbol.iterator == \"symbol\" ? function(obj2) {\n return typeof obj2;\n } : function(obj2) {\n return obj2 && typeof Symbol == \"function\" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? \"symbol\" : typeof obj2;\n }, _typeof(obj);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o2, p2) {\n o2.__proto__ = p2;\n return o2;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct)\n return false;\n if (Reflect.construct.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct2(Parent2, args2, Class2) {\n var a = [null];\n a.push.apply(a, args2);\n var Constructor = Function.bind.apply(Parent2, a);\n var instance = new Constructor();\n if (Class2)\n _setPrototypeOf(instance, Class2.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr))\n return _arrayLikeToArray(arr);\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr))\n return arr;\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null)\n return Array.from(iter);\n}\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null)\n return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i)\n break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null)\n _i[\"return\"]();\n } finally {\n if (_d)\n throw _e;\n }\n }\n return _arr;\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o)\n return;\n if (typeof o === \"string\")\n return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor)\n n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\")\n return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))\n return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length)\n len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++)\n arr2[i] = arr[i];\n return arr2;\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it)\n o = it;\n var i = 0;\n var F = function() {\n };\n return {\n s: F,\n n: function() {\n if (i >= o.length)\n return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function(e) {\n throw e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true, didErr = false, err;\n return {\n s: function() {\n it = it.call(o);\n },\n n: function() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function(e) {\n didErr = true;\n err = e;\n },\n f: function() {\n try {\n if (!normalCompletion && it.return != null)\n it.return();\n } finally {\n if (didErr)\n throw err;\n }\n }\n };\n}\nvar entries = Object.entries, setPrototypeOf = Object.setPrototypeOf, isFrozen = Object.isFrozen, getPrototypeOf = Object.getPrototypeOf, getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar freeze = Object.freeze, seal = Object.seal, create = Object.create;\nvar _ref = typeof Reflect !== \"undefined\" && Reflect, apply = _ref.apply, construct = _ref.construct;\nif (!apply) {\n apply = function apply2(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n}\nif (!freeze) {\n freeze = function freeze2(x) {\n return x;\n };\n}\nif (!seal) {\n seal = function seal2(x) {\n return x;\n };\n}\nif (!construct) {\n construct = function construct2(Func, args) {\n return _construct(Func, _toConsumableArray(args));\n };\n}\nvar arrayForEach = unapply(Array.prototype.forEach);\nvar arrayPop = unapply(Array.prototype.pop);\nvar arrayPush = unapply(Array.prototype.push);\nvar stringToLowerCase = unapply(String.prototype.toLowerCase);\nvar stringToString = unapply(String.prototype.toString);\nvar stringMatch = unapply(String.prototype.match);\nvar stringReplace = unapply(String.prototype.replace);\nvar stringIndexOf = unapply(String.prototype.indexOf);\nvar stringTrim = unapply(String.prototype.trim);\nvar regExpTest = unapply(RegExp.prototype.test);\nvar typeErrorCreate = unconstruct(TypeError);\nfunction unapply(func) {\n return function(thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n return apply(func, thisArg, args);\n };\n}\nfunction unconstruct(func) {\n return function() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return construct(func, args);\n };\n}\nfunction addToSet(set, array, transformCaseFunc) {\n transformCaseFunc = transformCaseFunc ? transformCaseFunc : stringToLowerCase;\n if (setPrototypeOf) {\n setPrototypeOf(set, null);\n }\n var l = array.length;\n while (l--) {\n var element = array[l];\n if (typeof element === \"string\") {\n var lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n element = lcElement;\n }\n }\n set[element] = true;\n }\n return set;\n}\nfunction clone(object) {\n var newObject = create(null);\n var _iterator = _createForOfIteratorHelper(entries(object)), _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done; ) {\n var _step$value = _slicedToArray(_step.value, 2), property = _step$value[0], value = _step$value[1];\n newObject[property] = value;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return newObject;\n}\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n var desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n if (typeof desc.value === \"function\") {\n return unapply(desc.value);\n }\n }\n object = getPrototypeOf(object);\n }\n function fallbackValue(element) {\n console.warn(\"fallback value for\", element);\n return null;\n }\n return fallbackValue;\n}\nvar html$1 = freeze([\"a\", \"abbr\", \"acronym\", \"address\", \"area\", \"article\", \"aside\", \"audio\", \"b\", \"bdi\", \"bdo\", \"big\", \"blink\", \"blockquote\", \"body\", \"br\", \"button\", \"canvas\", \"caption\", \"center\", \"cite\", \"code\", \"col\", \"colgroup\", \"content\", \"data\", \"datalist\", \"dd\", \"decorator\", \"del\", \"details\", \"dfn\", \"dialog\", \"dir\", \"div\", \"dl\", \"dt\", \"element\", \"em\", \"fieldset\", \"figcaption\", \"figure\", \"font\", \"footer\", \"form\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"head\", \"header\", \"hgroup\", \"hr\", \"html\", \"i\", \"img\", \"input\", \"ins\", \"kbd\", \"label\", \"legend\", \"li\", \"main\", \"map\", \"mark\", \"marquee\", \"menu\", \"menuitem\", \"meter\", \"nav\", \"nobr\", \"ol\", \"optgroup\", \"option\", \"output\", \"p\", \"picture\", \"pre\", \"progress\", \"q\", \"rp\", \"rt\", \"ruby\", \"s\", \"samp\", \"section\", \"select\", \"shadow\", \"small\", \"source\", \"spacer\", \"span\", \"strike\", \"strong\", \"style\", \"sub\", \"summary\", \"sup\", \"table\", \"tbody\", \"td\", \"template\", \"textarea\", \"tfoot\", \"th\", \"thead\", \"time\", \"tr\", \"track\", \"tt\", \"u\", \"ul\", \"var\", \"video\", \"wbr\"]);\nvar svg$1 = freeze([\"svg\", \"a\", \"altglyph\", \"altglyphdef\", \"altglyphitem\", \"animatecolor\", \"animatemotion\", \"animatetransform\", \"circle\", \"clippath\", \"defs\", \"desc\", \"ellipse\", \"filter\", \"font\", \"g\", \"glyph\", \"glyphref\", \"hkern\", \"image\", \"line\", \"lineargradient\", \"marker\", \"mask\", \"metadata\", \"mpath\", \"path\", \"pattern\", \"polygon\", \"polyline\", \"radialgradient\", \"rect\", \"stop\", \"style\", \"switch\", \"symbol\", \"text\", \"textpath\", \"title\", \"tref\", \"tspan\", \"view\", \"vkern\"]);\nvar svgFilters = freeze([\"feBlend\", \"feColorMatrix\", \"feComponentTransfer\", \"feComposite\", \"feConvolveMatrix\", \"feDiffuseLighting\", \"feDisplacementMap\", \"feDistantLight\", \"feFlood\", \"feFuncA\", \"feFuncB\", \"feFuncG\", \"feFuncR\", \"feGaussianBlur\", \"feImage\", \"feMerge\", \"feMergeNode\", \"feMorphology\", \"feOffset\", \"fePointLight\", \"feSpecularLighting\", \"feSpotLight\", \"feTile\", \"feTurbulence\"]);\nvar svgDisallowed = freeze([\"animate\", \"color-profile\", \"cursor\", \"discard\", \"fedropshadow\", \"font-face\", \"font-face-format\", \"font-face-name\", \"font-face-src\", \"font-face-uri\", \"foreignobject\", \"hatch\", \"hatchpath\", \"mesh\", \"meshgradient\", \"meshpatch\", \"meshrow\", \"missing-glyph\", \"script\", \"set\", \"solidcolor\", \"unknown\", \"use\"]);\nvar mathMl$1 = freeze([\"math\", \"menclose\", \"merror\", \"mfenced\", \"mfrac\", \"mglyph\", \"mi\", \"mlabeledtr\", \"mmultiscripts\", \"mn\", \"mo\", \"mover\", \"mpadded\", \"mphantom\", \"mroot\", \"mrow\", \"ms\", \"mspace\", \"msqrt\", \"mstyle\", \"msub\", \"msup\", \"msubsup\", \"mtable\", \"mtd\", \"mtext\", \"mtr\", \"munder\", \"munderover\"]);\nvar mathMlDisallowed = freeze([\"maction\", \"maligngroup\", \"malignmark\", \"mlongdiv\", \"mscarries\", \"mscarry\", \"msgroup\", \"mstack\", \"msline\", \"msrow\", \"semantics\", \"annotation\", \"annotation-xml\", \"mprescripts\", \"none\"]);\nvar text = freeze([\"#text\"]);\nvar html = freeze([\"accept\", \"action\", \"align\", \"alt\", \"autocapitalize\", \"autocomplete\", \"autopictureinpicture\", \"autoplay\", \"background\", \"bgcolor\", \"border\", \"capture\", \"cellpadding\", \"cellspacing\", \"checked\", \"cite\", \"class\", \"clear\", \"color\", \"cols\", \"colspan\", \"controls\", \"controlslist\", \"coords\", \"crossorigin\", \"datetime\", \"decoding\", \"default\", \"dir\", \"disabled\", \"disablepictureinpicture\", \"disableremoteplayback\", \"download\", \"draggable\", \"enctype\", \"enterkeyhint\", \"face\", \"for\", \"headers\", \"height\", \"hidden\", \"high\", \"href\", \"hreflang\", \"id\", \"inputmode\", \"integrity\", \"ismap\", \"kind\", \"label\", \"lang\", \"list\", \"loading\", \"loop\", \"low\", \"max\", \"maxlength\", \"media\", \"method\", \"min\", \"minlength\", \"multiple\", \"muted\", \"name\", \"nonce\", \"noshade\", \"novalidate\", \"nowrap\", \"open\", \"optimum\", \"pattern\", \"placeholder\", \"playsinline\", \"poster\", \"preload\", \"pubdate\", \"radiogroup\", \"readonly\", \"rel\", \"required\", \"rev\", \"reversed\", \"role\", \"rows\", \"rowspan\", \"spellcheck\", \"scope\", \"selected\", \"shape\", \"size\", \"sizes\", \"span\", \"srclang\", \"start\", \"src\", \"srcset\", \"step\", \"style\", \"summary\", \"tabindex\", \"title\", \"translate\", \"type\", \"usemap\", \"valign\", \"value\", \"width\", \"xmlns\", \"slot\"]);\nvar svg = freeze([\"accent-height\", \"accumulate\", \"additive\", \"alignment-baseline\", \"ascent\", \"attributename\", \"attributetype\", \"azimuth\", \"basefrequency\", \"baseline-shift\", \"begin\", \"bias\", \"by\", \"class\", \"clip\", \"clippathunits\", \"clip-path\", \"clip-rule\", \"color\", \"color-interpolation\", \"color-interpolation-filters\", \"color-profile\", \"color-rendering\", \"cx\", \"cy\", \"d\", \"dx\", \"dy\", \"diffuseconstant\", \"direction\", \"display\", \"divisor\", \"dur\", \"edgemode\", \"elevation\", \"end\", \"fill\", \"fill-opacity\", \"fill-rule\", \"filter\", \"filterunits\", \"flood-color\", \"flood-opacity\", \"font-family\", \"font-size\", \"font-size-adjust\", \"font-stretch\", \"font-style\", \"font-variant\", \"font-weight\", \"fx\", \"fy\", \"g1\", \"g2\", \"glyph-name\", \"glyphref\", \"gradientunits\", \"gradienttransform\", \"height\", \"href\", \"id\", \"image-rendering\", \"in\", \"in2\", \"k\", \"k1\", \"k2\", \"k3\", \"k4\", \"kerning\", \"keypoints\", \"keysplines\", \"keytimes\", \"lang\", \"lengthadjust\", \"letter-spacing\", \"kernelmatrix\", \"kernelunitlength\", \"lighting-color\", \"local\", \"marker-end\", \"marker-mid\", \"marker-start\", \"markerheight\", \"markerunits\", \"markerwidth\", \"maskcontentunits\", \"maskunits\", \"max\", \"mask\", \"media\", \"method\", \"mode\", \"min\", \"name\", \"numoctaves\", \"offset\", \"operator\", \"opacity\", \"order\", \"orient\", \"orientation\", \"origin\", \"overflow\", \"paint-order\", \"path\", \"pathlength\", \"patterncontentunits\", \"patterntransform\", \"patternunits\", \"points\", \"preservealpha\", \"preserveaspectratio\", \"primitiveunits\", \"r\", \"rx\", \"ry\", \"radius\", \"refx\", \"refy\", \"repeatcount\", \"repeatdur\", \"restart\", \"result\", \"rotate\", \"scale\", \"seed\", \"shape-rendering\", \"specularconstant\", \"specularexponent\", \"spreadmethod\", \"startoffset\", \"stddeviation\", \"stitchtiles\", \"stop-color\", \"stop-opacity\", \"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-linecap\", \"stroke-linejoin\", \"stroke-miterlimit\", \"stroke-opacity\", \"stroke\", \"stroke-width\", \"style\", \"surfacescale\", \"systemlanguage\", \"tabindex\", \"targetx\", \"targety\", \"transform\", \"transform-origin\", \"text-anchor\", \"text-decoration\", \"text-rendering\", \"textlength\", \"type\", \"u1\", \"u2\", \"unicode\", \"values\", \"viewbox\", \"visibility\", \"version\", \"vert-adv-y\", \"vert-origin-x\", \"vert-origin-y\", \"width\", \"word-spacing\", \"wrap\", \"writing-mode\", \"xchannelselector\", \"ychannelselector\", \"x\", \"x1\", \"x2\", \"xmlns\", \"y\", \"y1\", \"y2\", \"z\", \"zoomandpan\"]);\nvar mathMl = freeze([\"accent\", \"accentunder\", \"align\", \"bevelled\", \"close\", \"columnsalign\", \"columnlines\", \"columnspan\", \"denomalign\", \"depth\", \"dir\", \"display\", \"displaystyle\", \"encoding\", \"fence\", \"frame\", \"height\", \"href\", \"id\", \"largeop\", \"length\", \"linethickness\", \"lspace\", \"lquote\", \"mathbackground\", \"mathcolor\", \"mathsize\", \"mathvariant\", \"maxsize\", \"minsize\", \"movablelimits\", \"notation\", \"numalign\", \"open\", \"rowalign\", \"rowlines\", \"rowspacing\", \"rowspan\", \"rspace\", \"rquote\", \"scriptlevel\", \"scriptminsize\", \"scriptsizemultiplier\", \"selection\", \"separator\", \"separators\", \"stretchy\", \"subscriptshift\", \"supscriptshift\", \"symmetric\", \"voffset\", \"width\", \"xmlns\"]);\nvar xml = freeze([\"xlink:href\", \"xml:id\", \"xlink:title\", \"xml:space\", \"xmlns:xlink\"]);\nvar MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm);\nvar ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nvar TMPLIT_EXPR = seal(/\\${[\\w\\W]*}/gm);\nvar DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/);\nvar ARIA_ATTR = seal(/^aria-[\\-\\w]+$/);\nvar IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i);\nvar IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nvar ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g);\nvar DOCTYPE_NAME = seal(/^html$/i);\nvar getGlobal = function getGlobal2() {\n return typeof window === \"undefined\" ? null : window;\n};\nvar _createTrustedTypesPolicy = function _createTrustedTypesPolicy2(trustedTypes, document) {\n if (_typeof(trustedTypes) !== \"object\" || typeof trustedTypes.createPolicy !== \"function\") {\n return null;\n }\n var suffix = null;\n var ATTR_NAME = \"data-tt-policy-suffix\";\n if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {\n suffix = document.currentScript.getAttribute(ATTR_NAME);\n }\n var policyName = \"dompurify\" + (suffix ? \"#\" + suffix : \"\");\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML: function createHTML(html2) {\n return html2;\n },\n createScriptURL: function createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n console.warn(\"TrustedTypes policy \" + policyName + \" could not be created.\");\n return null;\n }\n};\nfunction createDOMPurify() {\n var window2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getGlobal();\n var DOMPurify = function DOMPurify2(root) {\n return createDOMPurify(root);\n };\n DOMPurify.version = \"3.0.1\";\n DOMPurify.removed = [];\n if (!window2 || !window2.document || window2.document.nodeType !== 9) {\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n var originalDocument = window2.document;\n var document = window2.document;\n var DocumentFragment = window2.DocumentFragment, HTMLTemplateElement = window2.HTMLTemplateElement, Node = window2.Node, Element = window2.Element, NodeFilter = window2.NodeFilter, _window$NamedNodeMap = window2.NamedNodeMap, NamedNodeMap = _window$NamedNodeMap === void 0 ? window2.NamedNodeMap || window2.MozNamedAttrMap : _window$NamedNodeMap, HTMLFormElement = window2.HTMLFormElement, DOMParser = window2.DOMParser, trustedTypes = window2.trustedTypes;\n var ElementPrototype = Element.prototype;\n var cloneNode = lookupGetter(ElementPrototype, \"cloneNode\");\n var getNextSibling = lookupGetter(ElementPrototype, \"nextSibling\");\n var getChildNodes = lookupGetter(ElementPrototype, \"childNodes\");\n var getParentNode = lookupGetter(ElementPrototype, \"parentNode\");\n if (typeof HTMLTemplateElement === \"function\") {\n var template = document.createElement(\"template\");\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);\n var emptyHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML(\"\") : \"\";\n var _document = document, implementation = _document.implementation, createNodeIterator = _document.createNodeIterator, createDocumentFragment = _document.createDocumentFragment, getElementsByTagName = _document.getElementsByTagName;\n var importNode = originalDocument.importNode;\n var hooks = {};\n DOMPurify.isSupported = typeof entries === \"function\" && typeof getParentNode === \"function\" && implementation && typeof implementation.createHTMLDocument !== \"undefined\";\n var MUSTACHE_EXPR$1 = MUSTACHE_EXPR, ERB_EXPR$1 = ERB_EXPR, TMPLIT_EXPR$1 = TMPLIT_EXPR, DATA_ATTR$1 = DATA_ATTR, ARIA_ATTR$1 = ARIA_ATTR, IS_SCRIPT_OR_DATA$1 = IS_SCRIPT_OR_DATA, ATTR_WHITESPACE$1 = ATTR_WHITESPACE;\n var IS_ALLOWED_URI$1 = IS_ALLOWED_URI;\n var ALLOWED_TAGS = null;\n var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray(html$1), _toConsumableArray(svg$1), _toConsumableArray(svgFilters), _toConsumableArray(mathMl$1), _toConsumableArray(text)));\n var ALLOWED_ATTR = null;\n var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray(html), _toConsumableArray(svg), _toConsumableArray(mathMl), _toConsumableArray(xml)));\n var CUSTOM_ELEMENT_HANDLING = Object.seal(Object.create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n var FORBID_TAGS = null;\n var FORBID_ATTR = null;\n var ALLOW_ARIA_ATTR = true;\n var ALLOW_DATA_ATTR = true;\n var ALLOW_UNKNOWN_PROTOCOLS = false;\n var ALLOW_SELF_CLOSE_IN_ATTR = true;\n var SAFE_FOR_TEMPLATES = false;\n var WHOLE_DOCUMENT = false;\n var SET_CONFIG = false;\n var FORCE_BODY = false;\n var RETURN_DOM = false;\n var RETURN_DOM_FRAGMENT = false;\n var RETURN_TRUSTED_TYPE = false;\n var SANITIZE_DOM = true;\n var SANITIZE_NAMED_PROPS = false;\n var SANITIZE_NAMED_PROPS_PREFIX = \"user-content-\";\n var KEEP_CONTENT = true;\n var IN_PLACE = false;\n var USE_PROFILES = {};\n var FORBID_CONTENTS = null;\n var DEFAULT_FORBID_CONTENTS = addToSet({}, [\"annotation-xml\", \"audio\", \"colgroup\", \"desc\", \"foreignobject\", \"head\", \"iframe\", \"math\", \"mi\", \"mn\", \"mo\", \"ms\", \"mtext\", \"noembed\", \"noframes\", \"noscript\", \"plaintext\", \"script\", \"style\", \"svg\", \"template\", \"thead\", \"title\", \"video\", \"xmp\"]);\n var DATA_URI_TAGS = null;\n var DEFAULT_DATA_URI_TAGS = addToSet({}, [\"audio\", \"video\", \"img\", \"source\", \"image\", \"track\"]);\n var URI_SAFE_ATTRIBUTES = null;\n var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [\"alt\", \"class\", \"for\", \"id\", \"label\", \"name\", \"pattern\", \"placeholder\", \"role\", \"summary\", \"title\", \"value\", \"style\", \"xmlns\"]);\n var MATHML_NAMESPACE = \"http://www.w3.org/1998/Math/MathML\";\n var SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\n var HTML_NAMESPACE = \"http://www.w3.org/1999/xhtml\";\n var NAMESPACE = HTML_NAMESPACE;\n var IS_EMPTY_INPUT = false;\n var ALLOWED_NAMESPACES = null;\n var DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n var PARSER_MEDIA_TYPE;\n var SUPPORTED_PARSER_MEDIA_TYPES = [\"application/xhtml+xml\", \"text/html\"];\n var DEFAULT_PARSER_MEDIA_TYPE = \"text/html\";\n var transformCaseFunc;\n var CONFIG = null;\n var formElement = document.createElement(\"form\");\n var isRegexOrFunction = function isRegexOrFunction2(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n var _parseConfig = function _parseConfig2(cfg) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n if (!cfg || _typeof(cfg) !== \"object\") {\n cfg = {};\n }\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE = SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE;\n transformCaseFunc = PARSER_MEDIA_TYPE === \"application/xhtml+xml\" ? stringToString : stringToLowerCase;\n ALLOWED_TAGS = \"ALLOWED_TAGS\" in cfg ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = \"ALLOWED_ATTR\" in cfg ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = \"ALLOWED_NAMESPACES\" in cfg ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = \"ADD_URI_SAFE_ATTR\" in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = \"ADD_DATA_URI_TAGS\" in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = \"FORBID_CONTENTS\" in cfg ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = \"FORBID_TAGS\" in cfg ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};\n FORBID_ATTR = \"FORBID_ATTR\" in cfg ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};\n USE_PROFILES = \"USE_PROFILES\" in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false;\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false;\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false;\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false;\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false;\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false;\n RETURN_DOM = cfg.RETURN_DOM || false;\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false;\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false;\n FORCE_BODY = cfg.FORCE_BODY || false;\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false;\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false;\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false;\n IN_PLACE = cfg.IN_PLACE || false;\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$1;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === \"boolean\") {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, _toConsumableArray(text));\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n if (KEEP_CONTENT) {\n ALLOWED_TAGS[\"#text\"] = true;\n }\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, [\"html\", \"head\", \"body\"]);\n }\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, [\"tbody\"]);\n delete FORBID_TAGS.tbody;\n }\n if (freeze) {\n freeze(cfg);\n }\n CONFIG = cfg;\n };\n var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, [\"mi\", \"mo\", \"mn\", \"ms\", \"mtext\"]);\n var HTML_INTEGRATION_POINTS = addToSet({}, [\"foreignobject\", \"desc\", \"title\", \"annotation-xml\"]);\n var COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [\"title\", \"style\", \"font\", \"a\", \"script\"]);\n var ALL_SVG_TAGS = addToSet({}, svg$1);\n addToSet(ALL_SVG_TAGS, svgFilters);\n addToSet(ALL_SVG_TAGS, svgDisallowed);\n var ALL_MATHML_TAGS = addToSet({}, mathMl$1);\n addToSet(ALL_MATHML_TAGS, mathMlDisallowed);\n var _checkValidNamespace = function _checkValidNamespace2(element) {\n var parent = getParentNode(element);\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: \"template\"\n };\n }\n var tagName = stringToLowerCase(element.tagName);\n var parentTagName = stringToLowerCase(parent.tagName);\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n if (element.namespaceURI === SVG_NAMESPACE) {\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === \"svg\";\n }\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === \"svg\" && (parentTagName === \"annotation-xml\" || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n if (element.namespaceURI === MATHML_NAMESPACE) {\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === \"math\";\n }\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === \"math\" && HTML_INTEGRATION_POINTS[parentTagName];\n }\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n if (element.namespaceURI === HTML_NAMESPACE) {\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n if (PARSER_MEDIA_TYPE === \"application/xhtml+xml\" && ALLOWED_NAMESPACES[element.namespaceURI]) {\n return true;\n }\n return false;\n };\n var _forceRemove = function _forceRemove2(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n try {\n node.parentNode.removeChild(node);\n } catch (_) {\n node.remove();\n }\n };\n var _removeAttribute = function _removeAttribute2(name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node\n });\n }\n node.removeAttribute(name);\n if (name === \"is\" && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {\n }\n } else {\n try {\n node.setAttribute(name, \"\");\n } catch (_) {\n }\n }\n }\n };\n var _initDocument = function _initDocument2(dirty) {\n var doc;\n var leadingWhitespace;\n if (FORCE_BODY) {\n dirty = \"<remove></remove>\" + dirty;\n } else {\n var matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n if (PARSER_MEDIA_TYPE === \"application/xhtml+xml\" && NAMESPACE === HTML_NAMESPACE) {\n dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + \"</body></html>\";\n }\n var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {\n }\n }\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, \"template\", null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n } catch (_) {\n }\n }\n var body = doc.body || doc.documentElement;\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? \"html\" : \"body\")[0];\n }\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n var _createIterator = function _createIterator2(root) {\n return createNodeIterator.call(root.ownerDocument || root, root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null, false);\n };\n var _isClobbered = function _isClobbered2(elm) {\n return elm instanceof HTMLFormElement && (typeof elm.nodeName !== \"string\" || typeof elm.textContent !== \"string\" || typeof elm.removeChild !== \"function\" || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== \"function\" || typeof elm.setAttribute !== \"function\" || typeof elm.namespaceURI !== \"string\" || typeof elm.insertBefore !== \"function\" || typeof elm.hasChildNodes !== \"function\");\n };\n var _isNode = function _isNode2(object) {\n return _typeof(Node) === \"object\" ? object instanceof Node : object && _typeof(object) === \"object\" && typeof object.nodeType === \"number\" && typeof object.nodeName === \"string\";\n };\n var _executeHook = function _executeHook2(entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n arrayForEach(hooks[entryPoint], function(hook) {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n var _sanitizeElements = function _sanitizeElements2(currentNode) {\n var content;\n _executeHook(\"beforeSanitizeElements\", currentNode, null);\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n var tagName = transformCaseFunc(currentNode.nodeName);\n _executeHook(\"uponSanitizeElement\", currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS\n });\n if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n if (!FORBID_TAGS[tagName] && _basicCustomElementTest(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName))\n return false;\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName))\n return false;\n }\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n var parentNode = getParentNode(currentNode) || currentNode.parentNode;\n var childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n if (childNodes && parentNode) {\n var childCount = childNodes.length;\n for (var i = childCount - 1; i >= 0; --i) {\n parentNode.insertBefore(cloneNode(childNodes[i], true), getNextSibling(currentNode));\n }\n }\n }\n _forceRemove(currentNode);\n return true;\n }\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n if ((tagName === \"noscript\" || tagName === \"noembed\") && regExpTest(/<\\/no(script|embed)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n content = currentNode.textContent;\n content = stringReplace(content, MUSTACHE_EXPR$1, \" \");\n content = stringReplace(content, ERB_EXPR$1, \" \");\n content = stringReplace(content, TMPLIT_EXPR$1, \" \");\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n _executeHook(\"afterSanitizeElements\", currentNode, null);\n return false;\n };\n var _isValidAttribute = function _isValidAttribute2(lcTag, lcName, value) {\n if (SANITIZE_DOM && (lcName === \"id\" || lcName === \"name\") && (value in document || value in formElement)) {\n return false;\n }\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR$1, lcName))\n ;\n else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$1, lcName))\n ;\n else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (_basicCustomElementTest(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) || lcName === \"is\" && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value)))\n ;\n else {\n return false;\n }\n } else if (URI_SAFE_ATTRIBUTES[lcName])\n ;\n else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE$1, \"\")))\n ;\n else if ((lcName === \"src\" || lcName === \"xlink:href\" || lcName === \"href\") && lcTag !== \"script\" && stringIndexOf(value, \"data:\") === 0 && DATA_URI_TAGS[lcTag])\n ;\n else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$1, stringReplace(value, ATTR_WHITESPACE$1, \"\")))\n ;\n else if (!value)\n ;\n else {\n return false;\n }\n return true;\n };\n var _basicCustomElementTest = function _basicCustomElementTest2(tagName) {\n return tagName.indexOf(\"-\") > 0;\n };\n var _sanitizeAttributes = function _sanitizeAttributes2(currentNode) {\n var attr;\n var value;\n var lcName;\n var l;\n _executeHook(\"beforeSanitizeAttributes\", currentNode, null);\n var attributes = currentNode.attributes;\n if (!attributes) {\n return;\n }\n var hookEvent = {\n attrName: \"\",\n attrValue: \"\",\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR\n };\n l = attributes.length;\n while (l--) {\n attr = attributes[l];\n var _attr = attr, name = _attr.name, namespaceURI = _attr.namespaceURI;\n value = name === \"value\" ? attr.value : stringTrim(attr.value);\n lcName = transformCaseFunc(name);\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = void 0;\n _executeHook(\"uponSanitizeAttribute\", currentNode, hookEvent);\n value = hookEvent.attrValue;\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n _removeAttribute(name, currentNode);\n if (!hookEvent.keepAttr) {\n continue;\n }\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n if (SAFE_FOR_TEMPLATES) {\n value = stringReplace(value, MUSTACHE_EXPR$1, \" \");\n value = stringReplace(value, ERB_EXPR$1, \" \");\n value = stringReplace(value, TMPLIT_EXPR$1, \" \");\n }\n var lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n continue;\n }\n if (SANITIZE_NAMED_PROPS && (lcName === \"id\" || lcName === \"name\")) {\n _removeAttribute(name, currentNode);\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n if (trustedTypesPolicy && _typeof(trustedTypes) === \"object\" && typeof trustedTypes.getAttributeType === \"function\") {\n if (namespaceURI)\n ;\n else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case \"TrustedHTML\":\n value = trustedTypesPolicy.createHTML(value);\n break;\n case \"TrustedScriptURL\":\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n }\n }\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n currentNode.setAttribute(name, value);\n }\n arrayPop(DOMPurify.removed);\n } catch (_) {\n }\n }\n _executeHook(\"afterSanitizeAttributes\", currentNode, null);\n };\n var _sanitizeShadowDOM = function _sanitizeShadowDOM2(fragment) {\n var shadowNode;\n var shadowIterator = _createIterator(fragment);\n _executeHook(\"beforeSanitizeShadowDOM\", fragment, null);\n while (shadowNode = shadowIterator.nextNode()) {\n _executeHook(\"uponSanitizeShadowNode\", shadowNode, null);\n if (_sanitizeElements(shadowNode)) {\n continue;\n }\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM2(shadowNode.content);\n }\n _sanitizeAttributes(shadowNode);\n }\n _executeHook(\"afterSanitizeShadowDOM\", fragment, null);\n };\n DOMPurify.sanitize = function(dirty) {\n var cfg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var body;\n var importedNode;\n var currentNode;\n var returnNode;\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = \"<!-->\";\n }\n if (typeof dirty !== \"string\" && !_isNode(dirty)) {\n if (typeof dirty.toString !== \"function\") {\n throw typeErrorCreate(\"toString is not a function\");\n } else {\n dirty = dirty.toString();\n if (typeof dirty !== \"string\") {\n throw typeErrorCreate(\"dirty is not a string, aborting\");\n }\n }\n }\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n DOMPurify.removed = [];\n if (typeof dirty === \"string\") {\n IN_PLACE = false;\n }\n if (IN_PLACE) {\n if (dirty.nodeName) {\n var tagName = transformCaseFunc(dirty.nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate(\"root node is forbidden and cannot be sanitized in-place\");\n }\n }\n } else if (dirty instanceof Node) {\n body = _initDocument(\"<!---->\");\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === 1 && importedNode.nodeName === \"BODY\") {\n body = importedNode;\n } else if (importedNode.nodeName === \"HTML\") {\n body = importedNode;\n } else {\n body.appendChild(importedNode);\n }\n } else {\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && dirty.indexOf(\"<\") === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n body = _initDocument(dirty);\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : \"\";\n }\n }\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n var nodeIterator = _createIterator(IN_PLACE ? dirty : body);\n while (currentNode = nodeIterator.nextNode()) {\n if (_sanitizeElements(currentNode)) {\n continue;\n }\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n _sanitizeAttributes(currentNode);\n }\n if (IN_PLACE) {\n return dirty;\n }\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n while (body.firstChild) {\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmod) {\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n return returnNode;\n }\n var serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n if (WHOLE_DOCUMENT && ALLOWED_TAGS[\"!doctype\"] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = \"<!DOCTYPE \" + body.ownerDocument.doctype.name + \">\\n\" + serializedHTML;\n }\n if (SAFE_FOR_TEMPLATES) {\n serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR$1, \" \");\n serializedHTML = stringReplace(serializedHTML, ERB_EXPR$1, \" \");\n serializedHTML = stringReplace(serializedHTML, TMPLIT_EXPR$1, \" \");\n }\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n DOMPurify.setConfig = function(cfg) {\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n DOMPurify.clearConfig = function() {\n CONFIG = null;\n SET_CONFIG = false;\n };\n DOMPurify.isValidAttribute = function(tag, attr, value) {\n if (!CONFIG) {\n _parseConfig({});\n }\n var lcTag = transformCaseFunc(tag);\n var lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n DOMPurify.addHook = function(entryPoint, hookFunction) {\n if (typeof hookFunction !== \"function\") {\n return;\n }\n hooks[entryPoint] = hooks[entryPoint] || [];\n arrayPush(hooks[entryPoint], hookFunction);\n };\n DOMPurify.removeHook = function(entryPoint) {\n if (hooks[entryPoint]) {\n return arrayPop(hooks[entryPoint]);\n }\n };\n DOMPurify.removeHooks = function(entryPoint) {\n if (hooks[entryPoint]) {\n hooks[entryPoint] = [];\n }\n };\n DOMPurify.removeAllHooks = function() {\n hooks = {};\n };\n return DOMPurify;\n}\nvar purify = createDOMPurify();\nexport default purify;\n", "import DomPurify from '../../../static/js/dompurify.js'\n\nexport const sanitizeHtml = (html) => {\n return DomPurify.sanitize(html)\n}\n", "import * as SanitizeHtml from './SanitizeHtml.js'\n\nexport const name = 'SanitizeHtml'\n\nexport const Commands = {\n sanitizeHtml: SanitizeHtml.sanitizeHtml,\n}\n", "import * as WorkerType from '../WorkerType/WorkerType.js'\n\nconst supportsServiceWorker = () => {\n return 'serviceWorker' in navigator\n}\n\nconst handleUpdateFound = () => {\n // console.info('[service-worker] update found')\n}\n\nconst handleControllerChange = () => {\n // console.info('[service-worker] controller changed - reloading page')\n location.reload()\n}\n\nexport const register = async (url) => {\n if (!supportsServiceWorker()) {\n return\n }\n const registration = await navigator.serviceWorker.register(url, {\n scope: '/',\n type: WorkerType.Module,\n })\n registration.onupdatefound = handleUpdateFound\n navigator.serviceWorker.oncontrollerchange = handleControllerChange\n}\n\nconst uninstallRegistration = async (registration) => {\n await registration.unregister()\n}\n\nexport const uninstall = async () => {\n if (!supportsServiceWorker()) {\n return\n }\n const registrations = await navigator.serviceWorker.getRegistrations()\n await Promise.all(registrations.map(uninstallRegistration))\n}\n", "import * as ServiceWorker from './ServiceWorker.js'\n\nexport const name = 'ServiceWorker'\n\nexport const Commands = {\n register: ServiceWorker.register,\n uninstall: ServiceWorker.uninstall,\n}\n", "export const htmlElements = [\n 'a',\n 'abbr',\n 'address',\n 'area',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'base',\n 'bdo',\n 'body',\n 'br',\n 'button',\n 'canvas',\n 'caption',\n 'center',\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'command',\n 'datalist',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'dialog',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'embed',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'hr',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'link',\n 'map',\n 'mark',\n 'menu',\n 'meta',\n 'meter',\n 'nav',\n 'noscript',\n 'object',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'param',\n 'pre',\n 'progress',\n 'q',\n 'rp',\n 'rt',\n 's',\n 'samp',\n 'script',\n 'section',\n 'select',\n 'small',\n 'source',\n 'span',\n 'strong',\n 'sub',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'title',\n 'tr',\n 'track',\n 'u',\n 'ul',\n 'var',\n 'video',\n 'wbr',\n]\n", "import { htmlElements } from './HtmlElements.js'\n\nconst querySelectorByText = (root, text) => {\n let node\n const elements = []\n const walk = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, null)\n while ((node = walk.nextNode())) {\n // @ts-ignore\n if (node.nodeValue === text) {\n elements.push(node.parentNode)\n }\n }\n return elements\n}\n\nconst querySelectorByCss = (selector) => {\n return Array.from(document.querySelectorAll(selector))\n}\n\nconst isElement = (selector) => {\n return htmlElements.includes(selector)\n}\n\nexport const querySelector = (selector) => {\n if (typeof selector !== 'string') {\n throw new TypeError('selector must be of type string')\n }\n if (selector.startsWith('text=')) {\n return querySelectorByText(document.body, selector.slice('text='.length))\n }\n if (selector.includes('text=')) {\n const index = selector.indexOf('text=')\n const elements = querySelectorByCss(selector.slice(0, index))\n const text = selector.slice(index + 'text='.length)\n return elements.flatMap((element) => {\n return querySelectorByText(element, text)\n })\n // for(const element of elements)\n }\n if (selector.startsWith('.')) {\n return querySelectorByCss(selector)\n }\n if (selector.startsWith('#')) {\n return querySelectorByCss(selector)\n }\n if (selector.startsWith('[data') || selector.startsWith('[title')) {\n return querySelectorByCss(selector)\n }\n if (isElement(selector)) {\n return querySelectorByCss(selector)\n }\n throw new Error(`unsupported selector: ${selector}`)\n}\n\nconst toButtonNumber = (buttonType) => {\n switch (buttonType) {\n case 'left':\n return 0\n case 'middle':\n return 1\n case 'right':\n return 2\n default:\n throw new Error(`unsupported button type: ${buttonType}`)\n }\n}\n\nexport const querySelectorWithOptions = (\n selector,\n { nth = -1, hasText = '' } = {}\n) => {\n let elements = querySelector(selector)\n if (hasText) {\n elements = elements.filter((element) => element.textContent === hasText)\n }\n if (elements.length === 0) {\n return undefined\n }\n if (elements.length === 1) {\n const element = elements[0]\n return element\n }\n if (nth === -1) {\n throw new Error(\n `too many matching elements for ${selector}, matching ${elements.length}`\n )\n }\n const element = elements[nth]\n if (!element) {\n throw new Error(`selector not found: ${selector}`)\n }\n return element\n}\n", "import * as QuerySelector from './QuerySelector.js'\n\nexport const toBeVisible = (locator) => {\n return `expected selector to be visible ${locator._selector}`\n}\n\nexport const toHaveValue = (locator, { value }) => {\n return `expected selector ${locator._selector} to have value ${value}`\n}\n\nconst printLocator = (locator) => {\n if (locator._nth !== -1) {\n return `${locator._selector}:nth(${locator._nth})`\n }\n if (locator._hasText) {\n return `${locator._selector} \"${locator._hasText}\"`\n }\n return `${locator._selector}`\n}\n\nexport const toHaveText = (locator, { text }) => {\n const element = QuerySelector.querySelectorWithOptions(locator._selector, {\n nth: locator._nth,\n hasText: locator._hasText,\n })\n const locatorString = printLocator(locator)\n if (!element) {\n return `expected selector ${locatorString} to have text \"${text}\" element was not found`\n }\n return `expected selector ${locatorString} to have text \"${text}\" but was \"${element.textContent}\"`\n}\n\nexport const toHaveAttribute = (locator, { key, value }) => {\n const element = QuerySelector.querySelectorWithOptions(locator._selector, {\n nth: locator._nth,\n hasText: locator._hasText,\n })\n const locatorString = printLocator(locator)\n if (!element) {\n return `expected ${locatorString} to have attribute ${key} ${value} but element was not found`\n }\n const actual = element.getAttribute(key)\n return `expected ${locatorString} to have attribute ${key} ${value} but was ${actual}`\n}\n\nexport const toHaveCount = (locator, { count }) => {\n const locatorString = printLocator(locator)\n const elements = QuerySelector.querySelector(locator._selector)\n const actualCount = elements.length\n return `expected ${locatorString} to have count ${count} but was ${actualCount}`\n}\n\nconst stringifyElement = (element) => {\n if (element.id) {\n return `#${element.id}`\n }\n if (element.className) {\n return `.${element.className}`\n }\n if (element === document.body) {\n return 'document.body'\n }\n return element.tagName\n}\n\nexport const toBeFocused = (locator) => {\n const locatorString = printLocator(locator)\n const activeElement = document.activeElement\n const stringifiedActiveElement = stringifyElement(activeElement)\n return `expected ${locatorString} to be focused but active element is ${stringifiedActiveElement}`\n}\n\nexport const toHaveClass = (locator, { className }) => {\n const [element] = QuerySelector.querySelector(locator._selector)\n const locatorString = printLocator(locator)\n if (!element) {\n return `expected ${locatorString} to have class ${className} but element was not found`\n }\n return `expected ${locatorString} to have class ${className}`\n}\n\nexport const toHaveId = (locator, { id }) => {\n const [element] = QuerySelector.querySelector(locator._selector)\n const locatorString = printLocator(locator)\n if (!element) {\n return `expected ${locatorString} to have id ${id} but element was not found`\n }\n return `expected ${locatorString} to have id ${id} but was ${element.id}`\n}\n\nexport const toBeHidden = (locator) => {\n const locatorString = printLocator(locator)\n return `expected ${locatorString} to be hidden`\n}\n\nexport const toHaveCss = (locator, { key, value }) => {\n const [element] = QuerySelector.querySelector(locator._selector)\n const locatorString = printLocator(locator)\n if (!element) {\n return `expected ${locatorString} to have css ${key} ${value} but element was not found`\n }\n const style = getComputedStyle(element)\n const actual = style[key]\n return `expected ${locatorString} to have css ${key} ${value} but was ${actual}`\n}\n", "import * as ConditionErrors from './ConditionErrors.js'\n\nexport const getFunction = (fnName) => {\n switch (fnName) {\n case 'toBeVisible':\n return ConditionErrors.toBeVisible\n case 'toHaveValue':\n return ConditionErrors.toHaveValue\n case 'toHaveText':\n return ConditionErrors.toHaveText\n case 'toHaveAttribute':\n return ConditionErrors.toHaveAttribute\n case 'toHaveCount':\n return ConditionErrors.toHaveCount\n case 'toBeFocused':\n return ConditionErrors.toBeFocused\n case 'toHaveId':\n return ConditionErrors.toHaveId\n case 'toBeHidden':\n return ConditionErrors.toBeHidden\n case 'toHaveCss':\n return ConditionErrors.toHaveCss\n case 'toHaveClass':\n return ConditionErrors.toHaveClass\n default:\n throw new Error(`unexpected function name ${fnName}`)\n }\n}\n", "import * as DomEventType from '../DomEventType/DomEventType.js'\n\nexport const mouseEvent = (element, eventType, options) => {\n const event = new MouseEvent(eventType, options)\n element.dispatchEvent(event)\n}\n\nexport const mouseDown = (element, options) => {\n mouseEvent(element, DomEventType.MouseDown, options)\n}\n\nexport const mouseUp = (element, options) => {\n mouseEvent(element, DomEventType.MouseUp, options)\n}\n\nexport const contextMenu = (element, options) => {\n mouseEvent(element, DomEventType.ContextMenu, options)\n}\n\nexport const click = (element, options) => {\n mouseDown(element, options)\n mouseEvent(element, DomEventType.Click, options)\n mouseUp(element, options)\n if (options.button === 2 /* right */) {\n contextMenu(element, options)\n }\n}\n\nexport const hover = (element, options) => {\n mouseEvent(element, DomEventType.MouseEnter, options)\n}\n\nexport const type = (element, options) => {\n element.value = options.text\n}\n\nexport const keyboardEvent = (element, eventType, options) => {\n const event = new KeyboardEvent(eventType, options)\n element.dispatchEvent(event)\n}\n\nexport const keyDown = (element, options) => {\n keyboardEvent(element, DomEventType.KeyDown, options)\n}\n\nexport const keyUp = (element, options) => {\n keyboardEvent(element, DomEventType.KeyUp, options)\n}\n\nconst getEventClass = (eventType) => {\n switch (eventType) {\n case DomEventType.Wheel:\n return WheelEvent\n case DomEventType.PointerDown:\n case DomEventType.PointerUp:\n case DomEventType.PointerMove:\n return PointerEvent\n default:\n return Event\n }\n}\n\nexport const dispatchEvent = (element, options) => {\n const EventClass = getEventClass(options.type)\n const event = new EventClass(options.type, options.init)\n element.dispatchEvent(event)\n}\n", "import * as ElementActions from './ElementActions.js'\n\nexport const press = (options) => {\n const element = document.activeElement\n\n ElementActions.keyDown(element, options)\n ElementActions.keyUp(element, options)\n}\n", "export const toHaveCount = (elements, { count }) => {\n return elements.length === count\n}\n\nexport const toBeHidden = (elements) => {\n return elements.length === 0\n}\n", "export const toBeVisible = (element) => {\n if (typeof element.isVisible === 'function') {\n return element.isVisible()\n }\n return element.isConnected\n}\n\nexport const toHaveValue = (element, { value }) => {\n return element.value === value\n}\n\nexport const toHaveText = (element, { text }) => {\n return element.textContent === text\n}\n\nexport const toHaveAttribute = (element, { key, value }) => {\n const attribute = element.getAttribute(key)\n return attribute === value\n}\n\nexport const toBeFocused = (element) => {\n return element === document.activeElement\n}\n\nexport const toHaveClass = (element, { className }) => {\n return element.classList.contains(className)\n}\n\nexport const toHaveId = (element, { id }) => {\n return element.id === id\n}\n\nexport const toHaveCss = (element, { key, value }) => {\n const style = getComputedStyle(element)\n const actualValue = style[key]\n if (value instanceof RegExp) {\n return value.test(actualValue)\n }\n return actualValue === value\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\nimport * as ConditionErrorMap from './ConditionErrorMap.js'\nimport * as ElementActions from './ElementActions.js'\nimport * as KeyBoardActions from './KeyBoardActions.js'\nimport * as MultiElementConditions from './MultiElementConditions.js'\nimport * as QuerySelector from './QuerySelector.js'\nimport * as SingleElementConditions from './SingleElementConditions.js'\n\nconst create$Overlay = () => {\n const $TestOverlay = document.createElement('div')\n $TestOverlay.id = 'TestOverlay'\n $TestOverlay.style.position = 'fixed'\n $TestOverlay.style.bottom = '0px'\n $TestOverlay.style.left = '0px'\n $TestOverlay.style.right = '0px'\n SetBounds.setHeight($TestOverlay, 20)\n $TestOverlay.style.whiteSpace = 'nowrap'\n $TestOverlay.style.contain = 'strict'\n $TestOverlay.style.userSelect = 'text'\n $TestOverlay.style.color = 'black'\n return $TestOverlay\n}\n\nexport const showOverlay = (state, background, text) => {\n const $TestOverlay = create$Overlay()\n $TestOverlay.dataset.state = state\n $TestOverlay.style.background = background\n $TestOverlay.textContent = text\n document.body.append($TestOverlay)\n}\n\nconst Time = {\n getTimeStamp() {\n return performance.now()\n },\n}\n\nconst maxTimeout = 2000\n\nconst Timeout = {\n async short() {\n await new Promise((resolve) => setTimeout(resolve, 1000))\n },\n async waitForMutation(maxDelay) {\n const disposables = []\n await Promise.race([\n new Promise((resolve) => {\n const timeout = setTimeout(resolve, maxDelay)\n disposables.push(() => {\n clearTimeout(timeout)\n })\n }),\n new Promise((resolve) => {\n const callback = (mutations) => {\n resolve(undefined)\n }\n const observer = new MutationObserver(callback)\n observer.observe(document.body, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true,\n attributeOldValue: true,\n characterDataOldValue: true,\n })\n disposables.push(() => {\n observer.disconnect()\n })\n }),\n ])\n for (const disposable of disposables) {\n disposable()\n }\n },\n}\n\nexport const performAction = async (locator, fnName, options) => {\n Assert.object(locator)\n Assert.string(fnName)\n Assert.object(options)\n const startTime = Time.getTimeStamp()\n const endTime = startTime + maxTimeout\n let currentTime = startTime\n const fn = ElementActions[fnName]\n while (currentTime < endTime) {\n const element = QuerySelector.querySelectorWithOptions(locator._selector, {\n hasText: locator._hasText,\n nth: locator._nth,\n })\n if (element) {\n fn(element, options)\n return\n }\n await Timeout.waitForMutation(100)\n currentTime = Time.getTimeStamp()\n }\n}\n\nexport const performKeyBoardAction = (fnName, options) => {\n const fn = KeyBoardActions[fnName]\n fn(options)\n}\n\nclass AssertionError extends Error {\n constructor(message) {\n super(message)\n this.name = 'AssertionError'\n }\n}\n\nexport const checkSingleElementCondition = async (locator, fnName, options) => {\n const startTime = Time.getTimeStamp()\n const endTime = startTime + maxTimeout\n let currentTime = startTime\n const fn = SingleElementConditions[fnName]\n while (currentTime < endTime) {\n const element = QuerySelector.querySelectorWithOptions(locator._selector, {\n hasText: locator._hasText,\n nth: locator._nth,\n })\n if (element) {\n const successful = fn(element, options)\n if (successful) {\n return\n }\n }\n await Timeout.waitForMutation(100)\n currentTime = Time.getTimeStamp()\n }\n const errorMessageFn = ConditionErrorMap.getFunction(fnName)\n const message = errorMessageFn(locator, options)\n throw new AssertionError(message)\n}\n\nexport const checkMultiElementCondition = async (locator, fnName, options) => {\n const startTime = Time.getTimeStamp()\n const endTime = startTime + maxTimeout\n let currentTime = startTime\n const fn = MultiElementConditions[fnName]\n while (currentTime < endTime) {\n const elements = QuerySelector.querySelector(locator._selector)\n const successful = fn(elements, options)\n if (successful) {\n return\n }\n await Timeout.waitForMutation(100)\n currentTime = Time.getTimeStamp()\n }\n const errorMessageFn = ConditionErrorMap.getFunction(fnName)\n const message = errorMessageFn(locator, options)\n throw new AssertionError(message)\n}\n", "import * as TestFrameWork from './TestFrameWork.js'\n\nexport const name = 'TestFrameWork'\n\n// prettier-ignore\nexport const Commands = {\n checkMultiElementCondition: TestFrameWork.checkMultiElementCondition,\n checkSingleElementCondition: TestFrameWork.checkSingleElementCondition,\n performAction: TestFrameWork.performAction,\n performKeyBoardAction: TestFrameWork.performKeyBoardAction,\n showOverlay: TestFrameWork.showOverlay,\n}\n", "export const state = {\n objects: Object.create(null),\n}\n\nexport const transfer = (objectId, transferable) => {\n state.objects[objectId] = transferable\n}\n\nexport const get = (objectId) => {\n const object = state.objects[objectId]\n if (!object) {\n throw new Error(`object not found ${objectId}`)\n }\n return object\n}\n", "import * as Transferrable from './Transferrable.js'\n\nexport const name = 'Transferrable'\n\nexport const Commands = {\n transfer: Transferrable.transfer,\n}\n", "export const ActivityBar = 'ActivityBar'\n\nexport const Audio = 'Audio'\n\nexport const Clock = 'Clock'\n\nexport const ColorPicker = 'ColorPicker'\n\nexport const DebugConsole = 'Debug Console'\n\nexport const Dialog = 'Dialog'\n\nexport const DiffEditor = 'DiffEditor'\n\nexport const EditorCompletion = 'EditorCompletion'\n\nexport const EditorImage = 'EditorImage'\n\nexport const EditorPlainText = 'EditorPlainText'\n\nexport const EditorText = 'EditorText'\n\nexport const Empty = 'Empty'\n\nexport const Error = 'Error'\n\nexport const Explorer = 'Explorer'\n\nexport const ExtensionDetail = 'ExtensionDetail'\n\nexport const Extensions = 'Extensions'\n\nexport const FindWidget = 'FindWidget'\n\nexport const ImagePreview = 'ImagePreview'\n\nexport const Implementations = 'Implementations'\n\nexport const KeyBindings = 'KeyBindings'\n\nexport const Layout = 'Layout'\n\nexport const Main = 'Main'\n\nexport const MainTabs = 'MainTabs'\n\nexport const Output = 'Output'\n\nexport const Panel = 'Panel'\n\nexport const Pdf = 'Pdf'\n\nexport const Problems = 'Problems'\n\nexport const QuickPick = 'QuickPick'\n\nexport const References = 'References'\n\nexport const RunAndDebug = 'Run And Debug'\n\nexport const Search = 'Search'\n\nexport const SideBar = 'SideBar'\n\nexport const SimpleBrowser = 'SimpleBrowser'\n\nexport const SourceControl = 'Source Control'\n\nexport const StatusBar = 'StatusBar'\n\nexport const Terminal = 'Terminal'\n\nexport const TitleBar = 'TitleBar'\n\nexport const TitleBarButtons = 'TitleBarButtons'\n\nexport const TitleBarIcon = 'TitleBarIcon'\n\nexport const TitleBarMenuBar = 'TitleBarMenuBar'\n\nexport const Video = 'Video'\n", "export const Tab = 1\n\nexport const Button = 2\n", "export const Vertical = 'vertical'\n", "export const setMaskImage = ($Element, icon) => {\n $Element.style.maskImage = `url('${icon}')`\n $Element.style.webkitMaskImage = `url('${icon}')`\n}\n\nexport const transfer = ($From, $To) => {\n $To.style.maskImage = $From.style.maskImage\n $To.style.webkitMaskImage = $From.style.webkitMaskImage\n $From.style.maskImage = ''\n $From.style.webkitMaskImage = ''\n}\n", "import * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as MaskImage from '../MaskImage/MaskImage.js'\n\nexport const create = (icon) => {\n const $Icon = document.createElement('div')\n $Icon.className = 'MaskIcon'\n MaskImage.setMaskImage($Icon, icon)\n $Icon.role = AriaRoles.None\n return $Icon\n}\n", "export const Keyboard = -1\n\nexport const LeftClick = 0\n\nexport const MiddleClick = 1\n\nexport const RightClick = 2\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\n/**\n *\n * @param {number} index\n * @param {number} x\n * @param {number} y\n */\nexport const handleClick = (index, x, y) => {\n RendererWorker.send('ActivityBar.handleClick', index, x, y)\n}\n\nexport const handleBlur = () => {\n RendererWorker.send('ActivityBar.handleBlur')\n}\n\nexport const handleFocus = () => {\n RendererWorker.send('ActivityBar.focus')\n}\n\nexport const handleContextMenu = (button, x, y) => {\n RendererWorker.send('ActivityBar.handleContextMenu', button, x, y)\n}\n", "import * as Event from '../Event/Event.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as MouseEventTypes from '../MouseEventType/MouseEventType.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as ViewletActivityBarFunctions from './ViewletActivityBarFunctions.js'\n\nconst get$ItemFromEvent = (event) => {\n const $Target = event.target\n if ($Target.classList.contains('ActivityBarItem')) {\n return $Target\n }\n if ($Target.classList.contains('ActivityBarItemIcon')) {\n return $Target.parentNode\n }\n return undefined\n}\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nexport const handleMousedown = (event) => {\n const { button, clientX, clientY } = event\n if (button !== MouseEventTypes.LeftClick) {\n return\n }\n const $Item = get$ItemFromEvent(event)\n if (!$Item) {\n return\n }\n Event.preventDefault(event)\n Event.stopPropagation(event)\n const index = getNodeIndex($Item)\n ViewletActivityBarFunctions.handleClick(index, clientX, clientY)\n}\n\nexport const handleContextMenu = (event) => {\n const { button, clientX, clientY } = event\n Event.preventDefault(event)\n ViewletActivityBarFunctions.handleContextMenu(button, clientX, clientY)\n}\n\nexport const handleBlur = () => {\n RendererWorker.send('ActivityBar.handleBlur')\n ViewletActivityBarFunctions.handleBlur()\n}\n\nexport const handleFocus = (event) => {\n Focus.setFocus('activityBar')\n ViewletActivityBarFunctions.handleFocus()\n}\n", "export const Extension = 'Extension'\nexport const Editor = 'editor'\nexport const ActivityBar = 'Activity Bar'\nexport const QuickInput = 'Quick Input'\nexport const SideBar = 'Side Bar'\nexport const StatusBar = 'Status Bar'\n", "import * as ActivityBarItemFlags from '../ActivityBarItemFlags/ActivityBarItemFlags.js'\nimport * as AriaBoolean from '../AriaBoolean/AriaBoolean.js'\nimport * as AriaOrientationType from '../AriaOrientationType/AriaOrientationType.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as DomAttributeType from '../DomAttributeType/DomAttributeType.js'\nimport * as Logger from '../Logger/Logger.js'\nimport * as MaskIcon from '../MaskIcon/MaskIcon.js'\nimport * as MaskImage from '../MaskImage/MaskImage.js'\nimport * as ViewletActivityBarEvents from './ViewletActivityBarEvents.js'\nimport * as AriaRoleDescriptionType from '../AriaRoleDescriptionType/AriaRoleDescriptionType.js'\n\nconst activeId = 'ActivityBarItemActive'\nconst selectedClassName = 'ActivityBarItemSelected'\n\n// TODO set aria-selected false when sidebar is collapsed\n\nconst create$ActivityBarItemIcon = (icon) => {\n return MaskIcon.create(icon)\n}\n\n// TODO assetDir might not work with non-builtin extension icons\nconst create$ActivityBarItem = (item) => {\n // const $ActivityBarItemIcon = create$ActivityBarItemIcon(`${item.icon}`)\n const $ActivityBarItem = document.createElement('div')\n $ActivityBarItem.className = 'ActivityBarItem'\n $ActivityBarItem.ariaLabel = '' // aria-label is determined by content TODO is empty aria-label necessary or can it be left off?\n $ActivityBarItem.title = item.title\n MaskImage.setMaskImage($ActivityBarItem, item.icon)\n if (item.keyShortcuts) {\n $ActivityBarItem.ariaKeyShortcuts = item.keyShortcuts\n }\n switch (item.flags) {\n case ActivityBarItemFlags.Tab:\n $ActivityBarItem.role = AriaRoles.Tab\n $ActivityBarItem.ariaSelected = AriaBoolean.False\n break\n case ActivityBarItemFlags.Button:\n $ActivityBarItem.role = AriaRoles.Button\n $ActivityBarItem.ariaHasPopup = AriaBoolean.True\n break\n default:\n Logger.warn(`unknown activity bar item flags ${item.flags}`)\n break\n }\n // $ActivityBarItem.append($ActivityBarItemIcon)\n return $ActivityBarItem\n}\n\nexport const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.id = 'ActivityBar'\n $Viewlet.className = 'Viewlet ActivityBar'\n // @ts-ignore\n $Viewlet.role = AriaRoles.ToolBar\n $Viewlet.ariaRoleDescription = AriaRoleDescriptionType.ActivityBar\n $Viewlet.ariaOrientation = AriaOrientationType.Vertical\n $Viewlet.tabIndex = 0\n return {\n $ActivityBar: $Viewlet,\n $Viewlet,\n }\n}\n\nexport const attachEvents = (state) => {\n const { $Viewlet } = state\n $Viewlet.onmousedown = ViewletActivityBarEvents.handleMousedown\n $Viewlet.oncontextmenu = ViewletActivityBarEvents.handleContextMenu\n $Viewlet.onfocus = ViewletActivityBarEvents.handleFocus\n $Viewlet.onblur = ViewletActivityBarEvents.handleBlur\n}\n\nexport const dispose = (state) => {}\n\nexport const setItems = (state, activityBarItems) => {\n Assert.object(state)\n Assert.array(activityBarItems)\n const $ActivityBar = state.$ActivityBar\n $ActivityBar.replaceChildren(...activityBarItems.map(create$ActivityBarItem))\n}\n\nexport const setSelectedIndex = (state, oldIndex, newIndex) => {\n const { $ActivityBar } = state\n if (oldIndex !== -1) {\n const $OldItem = $ActivityBar.children[oldIndex]\n $OldItem.ariaSelected = AriaBoolean.False\n if ($OldItem.firstChild) {\n MaskImage.transfer($OldItem.firstChild, $OldItem)\n $OldItem.firstChild.remove()\n }\n $OldItem.classList.remove(selectedClassName)\n }\n if (newIndex !== -1) {\n const $NewItem = $ActivityBar.children[newIndex]\n $NewItem.ariaSelected = AriaBoolean.True\n const $Icon = create$ActivityBarItemIcon('')\n MaskImage.transfer($NewItem, $Icon)\n $NewItem.append($Icon)\n $NewItem.classList.add(selectedClassName)\n }\n}\n\nexport const setFocusedIndex = (state, oldIndex, newIndex, focused) => {\n const { $ActivityBar } = state\n if (oldIndex !== -1) {\n const $OldItem = $ActivityBar.children[oldIndex]\n $OldItem.removeAttribute('id')\n $OldItem.classList.remove('FocusOutline')\n }\n if (newIndex !== -1) {\n const $NewItem = $ActivityBar.children[newIndex]\n $NewItem.id = activeId\n $ActivityBar.setAttribute(DomAttributeType.AriaActiveDescendant, activeId)\n\n if (focused) {\n $NewItem.classList.add('FocusOutline')\n }\n }\n}\n\nexport const setBadgeCount = (state, index, count) => {\n const { $ActivityBar } = state\n const $Item = $ActivityBar.children[index]\n const $Badge = document.createElement('div')\n $Badge.className = 'ActivityBarItemBadge'\n $Badge.textContent = `${count}`\n // @ts-ignore\n $Item.append($Badge)\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleAudioError = (code, message) => {\n RendererWorker.send('Audio.handleAudioError', code, message)\n}\n", "import * as ViewletAudioFunctions from './ViewletAudioFunctions.js'\n\nexport const handleAudioError = (event) => {\n const { target } = event\n const { error } = target\n const { code, message } = error\n ViewletAudioFunctions.handleAudioError(code, message)\n}\n", "// based on the audio editor by vscode\nimport * as ViewletAudioEvents from './ViewletAudioEvents.js'\n\nexport const create = () => {\n const $Audio = document.createElement('audio')\n $Audio.controls = true\n\n const $Content = document.createElement('div')\n $Content.className = 'AudioContent'\n $Content.append($Audio)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet Audio'\n $Viewlet.append($Content)\n return {\n $Viewlet,\n $Audio,\n $Content,\n $AudioErrorMessage: undefined,\n }\n}\n\nexport const attachEvents = (state) => {\n const { $Audio } = state\n $Audio.onerror = ViewletAudioEvents.handleAudioError\n}\n\nexport const setSrc = (state, src) => {\n const { $Audio } = state\n $Audio.src = src\n}\n\nexport const setAudioErrorMessage = (state, audioErrorMessage) => {\n if (!state.$AudioErrorMessage) {\n state.$AudioErrorMessage = document.createElement('div')\n state.$AudioErrorMessage.className = 'AudioErrorMessage'\n state.$Content.append(state.$AudioErrorMessage)\n }\n const { $AudioErrorMessage } = state\n $AudioErrorMessage.textContent = audioErrorMessage\n}\n", "import * as Assert from '../Assert/Assert.js'\n\nexport const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet Clock'\n return {\n $Viewlet,\n }\n}\n\nexport const dispose = (state) => {}\n\nexport const refresh = () => {}\n\nexport const setTime = (state, time) => {\n Assert.object(state)\n Assert.string(time)\n state.$Viewlet.textContent = time\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\n/**\n * @param {number} x\n * @param {number} y\n */\nexport const handleSliderPointerMove = (x, y) => {\n RendererWorker.send('ColorPicker.handleSliderPointerMove', x, y)\n}\n\n/**\n *\n * @param {number} x\n * @param {number} y\n */\nexport const handleSliderPointerDown = (x, y) => {\n RendererWorker.send('ColorPicker.handleSliderPointerDown', x, y)\n}\n", "import * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as ViewletColorPickerFunctions from './ViewletColorPickerFunctions.js'\n\nexport const handleSliderPointerCaptureLost = (event) => {\n const { target } = event\n target.removeEventListener(DomEventType.PointerMove, handleSliderPointerMove)\n target.removeEventListener(DomEventType.LostPointerCapture, handleSliderPointerCaptureLost)\n}\n\nexport const handleSliderPointerMove = (event) => {\n const { clientX, clientY } = event\n ViewletColorPickerFunctions.handleSliderPointerMove(clientX, clientY)\n}\n\nexport const handleSliderPointerDown = (event) => {\n const { clientX, clientY, target, pointerId } = event\n target.setPointerCapture(pointerId)\n target.addEventListener(DomEventType.PointerMove, handleSliderPointerMove)\n target.addEventListener(DomEventType.LostPointerCapture, handleSliderPointerCaptureLost)\n ViewletColorPickerFunctions.handleSliderPointerDown(clientX, clientY)\n}\n", "import * as ViewletColorPickerEvents from './ViewletColorPickerEvents.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\n\nexport const create = () => {\n const $BackgroundColor = document.createElement('div')\n $BackgroundColor.className = 'ColorPickerBackgroundColor'\n\n const $Light = document.createElement('div')\n $Light.className = 'ColorPickerLight'\n\n const $Dark = document.createElement('div')\n $Dark.className = 'ColorPickerDark'\n\n const $ColorPickerRectangle = document.createElement('div')\n $ColorPickerRectangle.className = 'ColorPickerRectangle'\n $ColorPickerRectangle.append($BackgroundColor, $Light, $Dark)\n\n const $ColorPickerSliderThumb = document.createElement('div')\n $ColorPickerSliderThumb.className = 'ColorPickerSliderThumb'\n\n const $ColorPickerSlider = document.createElement('div')\n $ColorPickerSlider.className = 'ColorPickerSlider'\n $ColorPickerSlider.append($ColorPickerSliderThumb)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet ColorPicker'\n $Viewlet.append($ColorPickerRectangle, $ColorPickerSlider, $ColorPickerSliderThumb)\n return {\n $Viewlet,\n $BackgroundColor,\n $ColorPickerSlider,\n $ColorPickerSliderThumb,\n }\n}\n\nexport const attachEvents = (state) => {\n const { $ColorPickerSliderThumb, $ColorPickerSlider } = state\n $ColorPickerSliderThumb.onpointerdown = ViewletColorPickerEvents.handleSliderPointerDown\n $ColorPickerSlider.onpointerdown = ViewletColorPickerEvents.handleSliderPointerDown\n}\n\nexport const setColor = (state, color) => {\n const { $Viewlet } = state\n $Viewlet.style.setProperty('--ColorPickerColor', color)\n}\n\nexport const setOffsetX = (state, offsetX) => {\n const { $ColorPickerSliderThumb } = state\n SetBounds.setXAndYTransform($ColorPickerSliderThumb, offsetX, 0)\n}\n", "import * as InputBox from '../InputBox/InputBox.js'\n\nexport const create = () => {\n const $DebugConsoleTop = document.createElement('div')\n $DebugConsoleTop.className = 'DebugConsoleTop'\n $DebugConsoleTop.textContent = 'Debug Console (not implemented)'\n\n const $Input = InputBox.create()\n\n const $DebugConsoleBottom = document.createElement('div')\n $DebugConsoleBottom.className = 'DebugConsoleBottom'\n $DebugConsoleBottom.append($Input)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet DebugConsole'\n $Viewlet.append($DebugConsoleTop, $DebugConsoleBottom)\n return {\n $Viewlet,\n $Input,\n }\n}\n\nexport const refresh = (state, context) => {\n const { $Viewlet } = state\n $Viewlet.textContent = 'Debug Console - Not implemented'\n}\n\nexport const focus = (state) => {\n const { $Input } = state\n $Input.focus()\n}\n\nexport const dispose = (state) => {}\n", "import * as Platform from '../Platform/Platform.js'\n\nconst assetDir = Platform.getAssetDir()\n\nexport const ArrowDown = `${assetDir}/icons/arrow-down.svg`\nexport const ArrowLeft = `${assetDir}/icons/arrow-left.svg`\nexport const ArrowRight = `${assetDir}/icons/arrow-right.svg`\nexport const ArrowUp = `${assetDir}/icons/arrow-up.svg`\nexport const CaseSensitive = `${assetDir}/icons/case-sensitive.svg`\nexport const ChevronDown = `${assetDir}/icons/chevron-down.svg`\nexport const ChevronUp = `${assetDir}/icons/chevron-up.svg`\nexport const Close = `${assetDir}/icons/close.svg`\nexport const DebugContinue = `${assetDir}/icons/debug-continue.svg`\nexport const DebugPause = `${assetDir}/icons/debug-pause.svg`\nexport const DebugStepInto = `${assetDir}/icons/debug-step-into.svg`\nexport const DebugStepOut = `${assetDir}/icons/debug-step-out.svg`\nexport const DebugStepOver = `${assetDir}/icons/debug-step-over.svg`\nexport const ExtensionDefaultIcon = `${assetDir}/icons/extensionDefaultIcon.png`\nexport const LinkExternal = `${assetDir}/icons/link-external.svg`\nexport const NextMatch = `${assetDir}/icons/arrow-down.svg`\nexport const PreviousMatch = `${assetDir}/icons/arrow-up.svg`\nexport const Refresh = `${assetDir}/icons/refresh.svg`\nexport const Regex = `${assetDir}/icons/regex.svg`\nexport const ReplaceAll = `${assetDir}/icons/replace-all.svg`\nexport const TriangleDown = `${assetDir}/icons/triangle-down.svg`\nexport const TriangleRight = `${assetDir}/icons/triangle-right.svg`\nexport const WholeWord = `${assetDir}/icons/whole-word.svg`\nexport const ZoomIn = `${assetDir}/icons/zoom-in.svg`\nexport const ZoomOut = `${assetDir}/icons/zoom-out.svg`\n", "import * as MaskIcon from '../MaskIcon/MaskIcon.js'\n\nexport const create$Button = (label, icon) => {\n // TODO icon div might not be needed (unnecessary html element)\n const $Icon = MaskIcon.create(icon)\n\n const $Button = document.createElement('button')\n $Button.className = 'IconButton'\n $Button.title = label\n $Button.ariaLabel = label\n $Button.append($Icon)\n return $Button\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleClick = (index) => {\n RendererWorker.send(/* Dialog.handleClick */ 'Dialog.handleClick', /* index */ index)\n}\n", "import * as ViewletDialogFunctions from './ViewletDialogFunctions.js'\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nexport const handleClick = (event) => {\n const { target } = event\n const index = getNodeIndex(target)\n ViewletDialogFunctions.handleClick(index)\n}\n", "import * as DomAttributeType from '../DomAttributeType/DomAttributeType.js'\nimport * as Icon from '../Icon/Icon.js'\nimport * as IconButton from '../IconButton/IconButton.js'\nimport * as ViewletDialogEvents from './ViewletDialogEvents.js'\n\nexport const create = () => {\n const $DialogTitle = document.createElement('h2')\n $DialogTitle.id = 'DialogTitle'\n\n const $DialogCloseButton = IconButton.create$Button('Close', Icon.Close)\n\n const $DialogHeader = document.createElement('div')\n $DialogHeader.className = 'DialogHeader'\n $DialogHeader.append($DialogTitle, $DialogCloseButton)\n\n const $DialogBodyErrorMessage = document.createElement('p')\n $DialogBodyErrorMessage.id = 'DialogBodyErrorMessage'\n\n const $DialogBodyErrorCodeFrame = document.createElement('code')\n $DialogBodyErrorCodeFrame.id = 'DialogBodyErrorCodeFrame'\n $DialogBodyErrorCodeFrame.ariaLabel = 'Code Frame'\n\n const $DialogBodyErrorStack = document.createElement('div')\n $DialogBodyErrorStack.id = 'DialogBodyErrorStack'\n\n const $DialogBodyOptions = document.createElement('div')\n $DialogBodyOptions.id = 'DialogBodyOptions'\n\n const $DialogBody = document.createElement('div')\n $DialogBody.id = 'DialogBody'\n $DialogBody.append($DialogBodyErrorMessage, $DialogBodyErrorCodeFrame, $DialogBodyErrorStack, $DialogBodyOptions)\n // TODO screen reader switches to browse mode for dialog and\n // reads dialog title and error message multiple times\n const $Dialog = document.createElement('dialog')\n $Dialog.className = 'Viewlet Dialog'\n $Dialog.id = 'Dialog'\n $Dialog.setAttribute(DomAttributeType.AriaLabelledBy, 'DialogTitle')\n $Dialog.setAttribute(DomAttributeType.AriaDescribedBy, 'DialogBodyErrorMessage')\n $Dialog.append($DialogHeader, $DialogBody)\n $Dialog.onclick = ViewletDialogEvents.handleClick\n\n return {\n $Viewlet: $Dialog,\n $DialogTitle,\n $DialogBodyErrorCodeFrame,\n $DialogBodyErrorMessage,\n $DialogBodyOptions,\n $DialogBodyErrorStack,\n }\n}\n\nexport const postAppend = (state) => {\n const { $Viewlet } = state\n $Viewlet.showModal()\n}\n\nexport const setHeader = (state, header) => {\n const { $DialogTitle } = state\n $DialogTitle.textContent = header\n}\n\nexport const setButtons = (state, buttons) => {\n const { $DialogBodyOptions } = state\n for (const button of buttons) {\n const $DialogOption = document.createElement('button')\n $DialogOption.className = 'DialogOption'\n $DialogOption.textContent = button\n $DialogBodyOptions.append($DialogOption)\n }\n}\n\nexport const setErrorMessage = (state, errorMessage) => {\n const { $DialogBodyErrorMessage } = state\n $DialogBodyErrorMessage.textContent = errorMessage\n}\n\nexport const setCodeFrame = (state, errorMessage) => {\n const { $DialogBodyErrorCodeFrame } = state\n $DialogBodyErrorCodeFrame.textContent = errorMessage\n}\n\nexport const setErrorStack = (state, errorStack) => {\n const { $DialogBodyErrorStack } = state\n $DialogBodyErrorStack.textContent = errorStack\n}\n", "export const create = () => {\n // TODO use aria role splitter once supported https://github.com/w3c/aria/issues/1348\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Sash SashVertical'\n return $Viewlet\n}\n", "export const DomDeltaLine = WheelEvent.DOM_DELTA_LINE\n\nexport const DomDeltaPixel = WheelEvent.DOM_DELTA_PIXEL\n\nexport const DomDeltaPage = WheelEvent.DOM_DELTA_PAGE\n", "export const handleWheel = (deltaY) => {\n RendererWorker.send(/* DiffEditor.handleWheel */ 'DiffEditor.handleWheel', /* value */ deltaY)\n}\n", "import * as WheelEventType from '../WheelEventType/WheelEventType.js'\nimport * as ViewletDiffEditorFunctions from './ViewletDiffEditorFunctions.js'\n\n/**\n * @param {WheelEvent} event\n */\nexport const handleWheel = (event) => {\n const { deltaMode, deltaY } = event\n // event.preventDefault()\n // const state = EditorHelper.getStateFromEvent(event)\n // TODO send editor id\n switch (deltaMode) {\n case WheelEventType.DomDeltaLine:\n ViewletDiffEditorFunctions.handleWheel(deltaY)\n break\n default:\n break\n }\n}\n\nexport const handleScrollBarPointerDown = (event) => {\n // TODO\n}\n", "export const Passive = {\n passive: true,\n}\n\nexport const Active = {\n passive: false,\n}\n\nexport const Capture = {\n capture: true,\n}\n", "import * as SetBounds from '../SetBounds/SetBounds.js'\n\nexport const setScrollBar = (state, scrollBarY, scrollBarHeight) => {\n const { $ScrollBarThumb } = state\n SetBounds.setYAndHeight($ScrollBarThumb, scrollBarY, scrollBarHeight)\n}\n", "import * as ViewletSash from '../ViewletSash/ViewletSash.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as ViewletDiffEditorEvents from './ViewletDiffEditorEvents.js'\nimport * as DomEventOptions from '../DomEventOptions/DomEventOptions.js'\n\nexport const create = () => {\n const $ContentLeft = document.createElement('div')\n $ContentLeft.className = 'DiffEditorContentLeft'\n const $ContentRight = document.createElement('div')\n $ContentRight.className = 'DiffEditorContentRight'\n\n const $Sash = ViewletSash.create()\n\n const $ScrollBarThumb = document.createElement('div')\n $ScrollBarThumb.className = 'ScrollBarThumb'\n\n const $ScrollBar = document.createElement('div')\n $ScrollBar.className = 'ScrollBar'\n $ScrollBar.onpointerdown = ViewletDiffEditorEvents.handleScrollBarPointerDown\n $ScrollBar.append($ScrollBarThumb)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet DiffEditor'\n $Viewlet.append($ContentLeft, $Sash, $ContentRight, $ScrollBar)\n $Viewlet.addEventListener(DomEventType.Wheel, ViewletDiffEditorEvents.handleWheel, DomEventOptions.Passive)\n\n return {\n $Viewlet,\n $ContentLeft,\n $ContentRight,\n $ScrollBar,\n $ScrollBarThumb,\n }\n}\n\nconst create$Line = (line) => {\n const $Line = document.createElement('div')\n $Line.className = 'EditorRow'\n $Line.textContent = line\n return $Line\n}\n\nconst setContent = ($Content, lines) => {\n $Content.replaceChildren(...lines.map(create$Line))\n}\n\nexport const setContentLeft = (state, lines) => {\n const { $ContentLeft } = state\n setContent($ContentLeft, lines)\n}\n\nexport const setContentRight = (state, lines) => {\n const { $ContentRight } = state\n setContent($ContentRight, lines)\n}\n\nexport const setChanges = (state, changes) => {\n const { $ContentLeft, $ContentRight } = state\n const { changesLeft, changesRight } = changes\n for (const change of changesLeft) {\n if (change.type === 'delete') {\n const $Row = $ContentLeft.children[change.index]\n if ($Row) {\n $Row.classList.add('Deletion')\n }\n }\n }\n for (const change of changesRight) {\n if (change.type === 'insert') {\n const $Row = $ContentRight.children[change.index]\n if ($Row) {\n $Row.classList.add('Insertion')\n }\n }\n }\n}\n\nexport * from '../ViewletScrollable/ViewletScrollable.js'\n", "export const create = (text) => {\n const $LabelText = document.createTextNode(text)\n const $Label = document.createElement('div')\n $Label.className = 'Label'\n $Label.append($LabelText)\n return $Label\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const selectIndex = (index) => {\n RendererWorker.send('EditorCompletion.selectIndex', index)\n}\n\nexport const handleClickAt = (x, y) => {\n RendererWorker.send('EditorCompletion.handleClickAt', x, y)\n}\n\nexport const handleWheel = (deltaMode, deltaY) => {\n RendererWorker.send('EditorCompletion.handleWheel', deltaMode, deltaY)\n}\n\n/**\n * @param {number} y\n */\nexport const handleScrollBarClick = (y) => {\n RendererWorker.send('EditorCompletion.handleScrollBarClick', y)\n}\n\nexport const handleScrollBarThumbPointerMove = (y) => {\n RendererWorker.send('EditorCompletion.handleScrollBarMove', y)\n}\n", "import * as DomEventOptions from '../DomEventOptions/DomEventOptions.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as Event from '../Event/Event.js'\nimport * as ViewletEditorCompletionFunctions from './ViewletEditorCompletionFunctions.js'\n\nexport const handleMousedown = (event) => {\n Event.preventDefault(event)\n const { clientX, clientY } = event\n ViewletEditorCompletionFunctions.handleClickAt(clientX, clientY)\n}\n\nexport const handleWheel = (event) => {\n const { deltaY, deltaMode } = event\n ViewletEditorCompletionFunctions.handleWheel(deltaMode, deltaY)\n}\n\nexport const handleScrollBarThumbPointerMove = (event) => {\n const { clientY } = event\n ViewletEditorCompletionFunctions.handleScrollBarThumbPointerMove(clientY)\n}\n\nconst handlePointerCaptureLost = (event) => {\n const { target } = event\n target.removeEventListener(DomEventType.PointerMove, handleScrollBarThumbPointerMove)\n}\n\nexport const handleScrollBarPointerDown = (event) => {\n Event.preventDefault(event)\n const { target, pointerId, clientY } = event\n target.setPointerCapture(pointerId)\n target.addEventListener(DomEventType.PointerMove, handleScrollBarThumbPointerMove, DomEventOptions.Active)\n target.addEventListener(DomEventType.LostPointerCapture, handlePointerCaptureLost)\n ViewletEditorCompletionFunctions.handleScrollBarClick(clientY)\n}\n", "export const Small = 1\n\nexport const Normal = 2\n\nexport const Large = 3\n", "export const None = ''\nexport const Small = 'Small'\nexport const Normal = 'Normal'\nexport const Large = 'Large'\n", "import * as ViewletSize from '../ViewletSize/ViewletSize.js'\nimport * as ViewletSizeClassName from '../ViewletSizeClassName/ViewletSizeClassName.js'\n\nexport const getClassName = (size) => {\n switch (size) {\n case ViewletSize.Small:\n return ViewletSizeClassName.Small\n case ViewletSize.Normal:\n return ViewletSizeClassName.Normal\n case ViewletSize.Large:\n return ViewletSizeClassName.Large\n default:\n return ViewletSizeClassName.None\n }\n}\n", "import * as ViewletSizeMap from '../ViewletSizeMap/ViewletSizeMap.js'\n\nexport const setSize = (state, oldSize, newSize) => {\n const { $Viewlet } = state\n const oldClassName = ViewletSizeMap.getClassName(oldSize)\n if (oldClassName) {\n $Viewlet.classList.remove(oldClassName)\n }\n const newClassName = ViewletSizeMap.getClassName(newSize)\n $Viewlet.classList.add(newClassName)\n}\n", "import * as SetBounds from '../SetBounds/SetBounds.js'\n\nexport const setContentHeight = (state, height) => {\n const { $ListItems } = state\n SetBounds.setHeight($ListItems, height)\n}\n\nexport const setNegativeMargin = (state, negativeMargin) => {\n const { $ListItems } = state\n SetBounds.setTop($ListItems, negativeMargin)\n}\n\nexport * from '../ViewletScrollable/ViewletScrollable.js'\nexport * from '../ViewletSizable/ViewletSizable.js'\n", "import * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as DomEventOptions from '../DomEventOptions/DomEventOptions.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as Label from '../Label/Label.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\nimport * as Widget from '../Widget/Widget.js'\nimport * as ViewletEditorCompletionEvents from './ViewletEditorCompletionEvents.js'\n\nconst create$CompletionItem = () => {\n const $CompletionItemText = Label.create('')\n\n const $Icon = document.createElement('div')\n\n const $CompletionItem = document.createElement('div')\n $CompletionItem.role = AriaRoles.Option\n $CompletionItem.className = 'EditorCompletionItem'\n $CompletionItem.append($Icon, $CompletionItemText)\n return $CompletionItem\n}\n\nconst render$CompletionItem = ($Item, item) => {\n SetBounds.setTop($Item, item.top)\n const $Icon = $Item.children[0]\n const $Label = $Item.children[1]\n $Icon.className = `ColoredMaskIcon ${item.symbolName}`\n\n if (item.highlights.length === 0) {\n $Label.textContent = item.label\n return\n }\n // TODO recycle text nodes and highlight nodes\n $Label.textContent = ''\n const highlights = item.highlights\n const label = item.label\n let position = 0\n for (let i = 0; i < highlights.length; i += 2) {\n const highlightStart = highlights[i]\n const highlightEnd = highlights[i + 1]\n if (position < highlightStart) {\n const beforeText = label.slice(position, highlightStart)\n const $BeforeText = document.createTextNode(beforeText)\n $Label.append($BeforeText)\n }\n const highlightText = label.slice(highlightStart, highlightEnd)\n const $Highlight = document.createElement('span')\n $Highlight.className = 'CompletionHighlight'\n $Highlight.textContent = highlightText\n $Label.append($Highlight)\n position = highlightEnd\n }\n // TODO support multiple highlights\n if (position < label.length) {\n const afterText = item.label.slice(position)\n const $AfterText = document.createTextNode(afterText)\n $Label.append($AfterText)\n }\n}\n\nexport const create = () => {\n const $ListItems = document.createElement('div')\n $ListItems.className = 'ListItems'\n $ListItems.role = AriaRoles.ListBox\n $ListItems.ariaLabel = 'Suggest'\n\n const $ScrollBarThumb = document.createElement('div')\n $ScrollBarThumb.className = 'ScrollBarThumb'\n\n const $ScrollBar = document.createElement('div')\n $ScrollBar.className = 'ScrollBarSmall'\n $ScrollBar.append($ScrollBarThumb)\n\n // TODO only create scrollbar when necessary\n // TODO recycle nodes\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet EditorCompletion'\n $Viewlet.id = 'Completions'\n $Viewlet.append($ListItems, $ScrollBar)\n return {\n $Viewlet,\n $ListItems,\n $ScrollBar,\n $ScrollBarThumb,\n }\n}\n\nexport const attachEvents = (state) => {\n const { $Viewlet, $ListItems, $ScrollBar } = state\n $Viewlet.addEventListener(DomEventType.Wheel, ViewletEditorCompletionEvents.handleWheel, DomEventOptions.Passive)\n\n $ListItems.onmousedown = ViewletEditorCompletionEvents.handleMousedown\n\n $ScrollBar.onpointerdown = ViewletEditorCompletionEvents.handleScrollBarPointerDown\n}\n// TODO show should be passed active cursor position\n// this would make this function easier to test as it would avoid dependency on globals of other files\n\nconst render$ExtensionsLess = ($ListItems, items) => {\n for (let i = 0; i < $ListItems.children.length; i++) {\n render$CompletionItem($ListItems.children[i], items[i])\n }\n const fragment = document.createDocumentFragment()\n for (let i = $ListItems.children.length; i < items.length; i++) {\n const $Extension = create$CompletionItem()\n render$CompletionItem($Extension, items[i])\n fragment.append($Extension)\n }\n $ListItems.append(fragment)\n}\n\nconst render$ExtensionsEqual = ($ListItems, items) => {\n for (let i = 0; i < items.length; i++) {\n render$CompletionItem($ListItems.children[i], items[i])\n }\n}\n\nconst render$ExtensionsMore = ($ListItems, items) => {\n for (let i = 0; i < items.length; i++) {\n render$CompletionItem($ListItems.children[i], items[i])\n }\n const diff = $ListItems.children.length - items.length\n for (let i = 0; i < diff; i++) {\n $ListItems.lastChild.remove()\n }\n}\n\nconst render$Items = ($ListItems, items) => {\n if ($ListItems.children.length < items.length) {\n render$ExtensionsLess($ListItems, items)\n } else if ($ListItems.children.length === items.length) {\n render$ExtensionsEqual($ListItems, items)\n } else {\n render$ExtensionsMore($ListItems, items)\n }\n}\n\nexport const setItems = (state, items, reason, focusedIndex) => {\n const { $Viewlet, $ListItems } = state\n Focus.setAdditionalFocus('editorCompletions')\n if (items.length === 0) {\n if (reason === /* automatically */ 0) {\n return\n }\n $Viewlet.textContent = 'No Results'\n Widget.append($Viewlet)\n return\n }\n render$Items($ListItems, items)\n // TODO recycle nodes\n // $ListItems.replaceChildren(...items.map(create$CompletionItem))\n // TODO\n Widget.append($Viewlet)\n // TODO set right aria attributes on $EditorInput\n}\n\nexport const dispose = (state) => {\n Widget.remove(state.$Viewlet)\n // state.$EditorInput.removeAttribute('aria-activedescendant')\n Focus.removeAdditionalFocus('editorCompletions')\n}\n\nexport const setFocusedIndex = (state, oldIndex, newIndex) => {\n if (oldIndex === newIndex) {\n debugger\n }\n const { $ListItems } = state\n if (oldIndex >= 0) {\n const $OldItem = $ListItems.children[oldIndex]\n $OldItem.classList.remove('Focused')\n }\n if (newIndex >= 0) {\n const $NewItem = $ListItems.children[newIndex]\n $NewItem.classList.add('Focused')\n }\n Focus.setAdditionalFocus('editorCompletions')\n // state.$EditorInput.setAttribute('aria-activedescendant', $NewItem.id) // TODO use idl once supported\n}\n\nexport const showLoading = (state, x, y) => {\n const { $Viewlet } = state\n SetBounds.setXAndYTransform($Viewlet, x, y)\n const $Loading = document.createElement('div')\n $Loading.textContent = 'Loading'\n $Viewlet.append($Loading)\n Widget.append($Viewlet)\n Focus.setAdditionalFocus('editorCompletions')\n}\n\nexport const handleError = (state, error) => {\n const { $Viewlet } = state\n $Viewlet.textContent = `${error}`\n}\n\nexport const setBounds = (state, x, y, width, height) => {\n Assert.number(x)\n Assert.number(y)\n Assert.number(width)\n Assert.number(height)\n const { $Viewlet } = state\n SetBounds.setBounds($Viewlet, x, y, width, height)\n}\n\nexport * from '../ViewletList/ViewletList.js'\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handlePointerMove = (pointerId, x, y) => {\n RendererWorker.send('EditorImage.handlePointerMove', pointerId, x, y)\n}\n\nexport const handlePointerUp = (pointerId, x, y) => {\n RendererWorker.send('EditorImage.handlePointerUp', pointerId, x, y)\n}\n\nexport const handlePointerDown = (pointerId, x, y) => {\n RendererWorker.send('EditorImage.handlePointerDown', pointerId, x, y)\n}\n\nexport const handleWheel = (clientX, clientY, deltaX, deltaY) => {\n RendererWorker.send('EditorImage.handleWheel', clientX, clientY, deltaX, deltaY)\n}\n\nexport const handleImageError = () => {\n RendererWorker.send('EditorImage.handleImageError')\n}\n\nexport const handleContextMenu = (button, x, y) => {\n RendererWorker.send('EditorImage.handleContextMenu', button, x, y)\n}\n", "import * as DomEventOptions from '../DomEventOptions/DomEventOptions.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as MouseEventType from '../MouseEventType/MouseEventType.js'\nimport * as ViewletEditorImageFunctions from './ViewletEditorImageFunctions.js'\nimport * as Event from '../Event/Event.js'\n\n/**\n * @param {PointerEvent} event\n */\nexport const handlePointerMove = (event) => {\n const { pointerId, clientX, clientY } = event\n ViewletEditorImageFunctions.handlePointerMove(pointerId, clientX, clientY)\n}\n\n/**\n * @param {PointerEvent} event\n */\nexport const handlePointerUp = (event) => {\n const { pointerId, clientX, clientY, target, button } = event\n if (button !== MouseEventType.LeftClick) {\n return\n }\n ViewletEditorImageFunctions.handlePointerUp(pointerId, clientX, clientY)\n}\n\nexport const handlePointerCaptureLost = (event) => {\n const { target } = event\n // @ts-ignore\n target.removeEventListener(DomEventType.PointerMove, handlePointerMove)\n // @ts-ignore\n target.removeEventListener(DomEventType.PointerUp, handlePointerUp)\n}\n\n/**\n * @param {PointerEvent} event\n */\nexport const handlePointerDown = (event) => {\n const { pointerId, clientX, clientY, target, button } = event\n if (button !== MouseEventType.LeftClick) {\n return\n }\n // @ts-ignore\n target.setPointerCapture(pointerId)\n // @ts-ignore\n target.addEventListener(DomEventType.PointerMove, handlePointerMove, DomEventOptions.Active)\n // @ts-ignore\n target.addEventListener(DomEventType.PointerUp, handlePointerUp)\n target.addEventListener(DomEventType.LostPointerCapture, handlePointerCaptureLost)\n ViewletEditorImageFunctions.handlePointerDown(pointerId, clientX, clientY)\n}\n\n/**\n * @param {WheelEvent} event\n */\nexport const handleWheel = (event) => {\n const { clientX, clientY, deltaX, deltaY } = event\n ViewletEditorImageFunctions.handleWheel(clientX, clientY, deltaX, deltaY)\n}\n\n/**\n *\n * @param {MouseEvent} event\n */\nexport const handleContextMenu = (event) => {\n Event.preventDefault(event)\n const { button, clientX, clientY } = event\n ViewletEditorImageFunctions.handleContextMenu(button, clientX, clientY)\n}\n\nexport const handleError = (event) => {\n ViewletEditorImageFunctions.handleImageError()\n}\n\nexport const handleFocus = () => {\n Focus.setFocus('EditorImage')\n}\n", "import * as DomEventOptions from '../DomEventOptions/DomEventOptions.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as ViewletEditorImageEvents from './ViewletEditorImageEvents.js'\n\nexport const create = () => {\n const $Image = document.createElement('img')\n $Image.className = 'ViewletImage'\n $Image.draggable = false\n\n const $ImageWrapper = document.createElement('div')\n $ImageWrapper.className = 'ImageWrapper'\n $ImageWrapper.tabIndex = 0\n $ImageWrapper.append($Image)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet EditorImage'\n $Viewlet.append($ImageWrapper)\n\n return {\n $Viewlet,\n $Image,\n $ImageWrapper,\n }\n}\n\nexport const attachEvents = (state) => {\n const { $Image, $ImageWrapper, $Viewlet } = state\n $Image.onerror = ViewletEditorImageEvents.handleError\n\n $ImageWrapper.onfocus = ViewletEditorImageEvents.handleFocus\n\n $Viewlet.onpointerdown = ViewletEditorImageEvents.handlePointerDown\n $Viewlet.onpointerup = ViewletEditorImageEvents.handlePointerUp\n $Viewlet.oncontextmenu = ViewletEditorImageEvents.handleContextMenu\n $Viewlet.addEventListener(DomEventType.Wheel, ViewletEditorImageEvents.handleWheel, DomEventOptions.Passive)\n}\n\nexport const setTransform = (state, transform) => {\n const { $ImageWrapper } = state\n $ImageWrapper.style.transform = transform\n}\n\nexport const setSrc = (state, src) => {\n const { $Image } = state\n $Image.src = src\n}\n\nexport const setDragging = (state, isDragging) => {\n const { $Viewlet } = state\n $Viewlet.classList.toggle('Dragging', isDragging)\n}\n\nexport const dispose = (state) => {}\n\nexport const setError = (state, message) => {\n const { $Viewlet } = state\n const $Error = document.createElement('div')\n $Error.className = 'ViewletError'\n $Error.textContent = message\n $Viewlet.replaceChildren($Error)\n}\n", "import * as Assert from '../Assert/Assert.js'\n\nexport const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet EditorText'\n $Viewlet.textContent = 'loading...'\n return {\n $Viewlet,\n }\n}\n\nexport const dispose = (state) => {}\n\nexport const refresh = (state, context) => {\n Assert.object(state)\n Assert.string(context.content)\n state.$Viewlet.textContent = context.content\n}\n", "export const List = 'list'\n", "export const Text = 'text'\n", "import * as ClipBoardDataType from '../ClipBoardDataType/ClipBoardDataType.js'\n\nexport const getText = (clipBoardData) => {\n return clipBoardData.getData(ClipBoardDataType.Text)\n}\n", "export const None = 0\nexport const Ctrl = 1\nexport const Alt = 2\n", "import * as ModifierKey from '../ModifierKey/ModifierKey.js'\n\nexport const getModifierKey = (event) => {\n if (event.ctrlKey) {\n return ModifierKey.Ctrl\n }\n if (event.altKey) {\n return ModifierKey.Alt\n }\n return ModifierKey.None\n}\n", "export const InsertText = 'insertText'\n", "const toSimpleTouch = (touch) => {\n return {\n x: touch.clientX,\n y: touch.clientY,\n }\n}\n\nexport const toSimpleTouchEvent = (event) => {\n const touches = Array.from(event.touches).map(toSimpleTouch)\n const changedTouches = Array.from(event.changedTouches).map(toSimpleTouch)\n return {\n touches,\n changedTouches,\n }\n}\n", "// TODO this enum should only be present in renderer worker\nexport const ActivityBar = 1\n\nexport const Edit = 2\n\nexport const Editor = 3\n\nexport const Explorer = 4\nexport const File = 5\n\nexport const Go = 6\n\nexport const Help = 7\n\nexport const ManageExtension = 8\n\nexport const OpenRecent = 9\n\nexport const Run = 10\n\nexport const Selection = 11\n\nexport const Settings = 12\n\nexport const Tab = 13\n\nexport const Terminal = 14\n\nexport const TitleBar = 15\n\nexport const View = 16\n\nexport const ActivityBarAdditionalViews = 17\n\nexport const Search = 18\n", "import * as MenuEntryId from '../MenuEntryId/MenuEntryId.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleContextMenu = (button, x, y) => {\n RendererWorker.send('Editor.handleContextMenu', button, x, y, MenuEntryId.Editor)\n}\n\nexport const handleBlur = () => {\n RendererWorker.send('Editor.blur')\n}\n\nexport const type = (text) => {\n RendererWorker.send('Editor.type', text)\n}\n\nexport const typeWithAutoClosing = (text) => {\n RendererWorker.send('Editor.typeWithAutoClosing', text)\n}\n\nexport const compositionStart = (data) => {\n RendererWorker.send('Editor.compositionStart', data)\n}\n\nexport const compositionUpdate = (data) => {\n RendererWorker.send('Editor.compositionUpdate', data)\n}\n\nexport const compositionEnd = (data) => {\n RendererWorker.send('Editor.compositionEnd', data)\n}\n\nexport const cut = () => {\n RendererWorker.send('Editor.cut')\n}\n\nexport const moveRectangleSelectionPx = (x, y) => {\n RendererWorker.send('Editor.moveRectangleSelectionPx', x, y)\n}\n\nexport const moveSelectionPx = (x, y) => {\n RendererWorker.send('Editor.moveSelectionPx', x, y)\n}\n\nexport const handlePointerCaptureLost = () => {\n RendererWorker.send('Editor.handlePointerCaptureLost')\n}\n\nexport const handleMouseDown = (modifier, x, y, detail) => {\n RendererWorker.send('Editor.handleMouseDown', modifier, x, y, detail)\n}\n\nexport const setDelta = (deltaMode, deltaX, deltaY) => {\n RendererWorker.send('Editor.setDelta', deltaMode, deltaX, deltaY)\n}\n\nexport const paste = (text) => {\n RendererWorker.send('Editor.paste', text)\n}\n\nexport const handleScrollBarVerticalMove = (y) => {\n RendererWorker.send('Editor.handleScrollBarMove', y)\n}\n\nexport const handleScrollBarVerticalPointerDown = (y) => {\n RendererWorker.send('Editor.handleScrollBarPointerDown', y)\n}\n\nexport const handleScrollBarHorizontalMove = (x) => {\n RendererWorker.send('Editor.handleScrollBarHorizontalMove', x)\n}\n\nexport const handleScrollBarHorizontalPointerDown = (x) => {\n RendererWorker.send('Editor.handleScrollBarHorizontalPointerDown', x)\n}\n\nexport const handleTouchStart = (touchEvent) => {\n RendererWorker.send('Editor.handleTouchStart', touchEvent)\n}\n\nexport const handleTouchMove = (touchEvent) => {\n RendererWorker.send('Editor.handleTouchMove', touchEvent)\n}\n\nexport const handleTouchEnd = (touchEvent) => {\n RendererWorker.send('Editor.handleTouchEnd', touchEvent)\n}\n\nexport const handleBeforeInputFromContentEditable = (data, range) => {\n RendererWorker.send('Editor.handleBeforeInputFromContentEditable', data, range)\n}\n", "// TODO so many things in this file\n\nimport * as ClipBoardData from '../ClipBoardData/ClipBoardData.js'\nimport * as DomEventOptions from '../DomEventOptions/DomEventOptions.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as Event from '../Event/Event.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as GetModifierKey from '../GetModifierKey/GetModifierKey.js'\nimport * as InputEventType from '../InputEventType/InputEventType.js'\nimport * as MouseEventType from '../MouseEventType/MouseEventType.js'\nimport * as TouchEvent from '../TouchEvent/TouchEvent.js'\nimport * as WheelEventType from '../WheelEventType/WheelEventType.js'\nimport * as EditorFunctions from './EditorFunctions.js'\n\n// TODO go back to edit mode after pressing escape so screenreaders can navigate https://stackoverflow.com/questions/53909477/how-to-handle-tabbing-for-accessibility-with-a-textarea-that-uses-the-tab-button\n\n// TODO tree shake out mobile support when targeting electron -> less code -> less event listeners -> less memory -> less cpu\n\nexport const handleContextMenu = (event) => {\n Event.preventDefault(event)\n const { button, clientX, clientY } = event\n EditorFunctions.handleContextMenu(button, clientX, clientY)\n}\n\nexport const handleFocus = (event) => {\n Focus.setFocus('EditorText')\n}\n\nexport const handleBlur = (event) => {\n // needed for save on blur\n // also needed to close completions on blur\n EditorFunctions.handleBlur()\n}\n\n/**\n *\n * @param {InputEvent} event\n */\nexport const handleBeforeInput = (event) => {\n Event.preventDefault(event)\n const { inputType, data } = event\n switch (inputType) {\n case InputEventType.InsertText:\n EditorFunctions.typeWithAutoClosing(data)\n break\n default:\n break\n }\n // if (!event.data) {\n // return\n // }\n}\n\n// TODO composition should be better supported,\n// for example\n// - gedit draws a line below the composed text\n// - codemirror 6 also draws that line\n// - codemirror 5 also draws that line\n// - vscode does not draw a line, but displays characters during composition\n\nexport const handleCompositionStart = (event) => {\n const { data } = event\n EditorFunctions.compositionStart(data)\n}\n\nexport const handleCompositionUpdate = (event) => {\n const { data } = event\n EditorFunctions.compositionUpdate(data)\n}\n\nexport const handleCompositionEnd = (event) => {\n const { data } = event\n EditorFunctions.compositionEnd(data)\n}\n\nexport const handleCut = (event) => {\n Event.preventDefault(event)\n EditorFunctions.cut()\n}\n\nconst isRightClick = (event) => {\n return event.button === MouseEventType.RightClick\n}\n\nexport const handleEditorPointerMove = (event) => {\n const { clientX, clientY, altKey } = event\n // TODO if/else should be in renderer worker\n if (altKey) {\n EditorFunctions.moveRectangleSelectionPx(clientX, clientY)\n } else {\n EditorFunctions.moveSelectionPx(clientX, clientY)\n }\n}\n\nexport const handleEditorLostPointerCapture = (event) => {\n const { target } = event\n target.removeEventListener(DomEventType.PointerMove, handleEditorPointerMove)\n target.removeEventListener(DomEventType.LostPointerCapture, handleEditorLostPointerCapture)\n EditorFunctions.handlePointerCaptureLost()\n}\n\nexport const handleEditorGotPointerCapture = () => {}\n\n/**\n *\n * @param {PointerEvent} event\n */\nexport const handleEditorPointerDown = (event) => {\n const { target, pointerId } = event\n // @ts-ignore\n target.setPointerCapture(pointerId)\n // @ts-ignore\n target.addEventListener(DomEventType.PointerMove, handleEditorPointerMove, DomEventOptions.Active)\n // @ts-ignore\n target.addEventListener(DomEventType.LostPointerCapture, handleEditorLostPointerCapture)\n}\n\nexport const handleMouseDown = (event) => {\n if (isRightClick(event)) {\n return\n }\n Event.preventDefault(event)\n const { clientX, clientY, detail } = event\n const modifier = GetModifierKey.getModifierKey(event)\n EditorFunctions.handleMouseDown(modifier, clientX, clientY, detail)\n}\n\n// TODO figure out whether it is possible to register hover provider without mousemove\n// mousemove handler is called very often and could slow down editor / drain battery\n\n/**\n *\n * @param {WheelEvent} event\n */\nexport const handleWheel = (event) => {\n const { deltaMode, deltaX, deltaY } = event\n // event.preventDefault()\n // const state = EditorHelper.getStateFromEvent(event)\n // TODO send editor id\n EditorFunctions.setDelta(deltaMode, deltaX, deltaY)\n}\n\nexport const handlePaste = (event) => {\n Event.preventDefault(event)\n const { clipboardData } = event\n const text = ClipBoardData.getText(clipboardData)\n EditorFunctions.paste(text)\n}\n\n/**\n *\n * @param {PointerEvent} event\n */\nexport const handleScrollBarThumbVerticalPointerMove = (event) => {\n const { clientY } = event\n EditorFunctions.handleScrollBarVerticalMove(clientY)\n}\n\n/**\n *\n * @param {PointerEvent} event\n */\nexport const handleScrollBarVerticalPointerUp = (event) => {\n const { target, pointerId } = event\n // @ts-ignore\n target.releasePointerCapture(pointerId)\n // @ts-ignore\n target.removeEventListener(DomEventType.PointerMove, handleScrollBarThumbVerticalPointerMove)\n // @ts-ignore\n target.removeEventListener(DomEventType.PointerUp, handleScrollBarVerticalPointerUp)\n}\n\n/**\n *\n * @param {PointerEvent} event\n */\nexport const handleScrollBarVerticalPointerDown = (event) => {\n const { target, pointerId, clientY } = event\n // @ts-ignore\n target.setPointerCapture(pointerId)\n // @ts-ignore\n target.addEventListener(DomEventType.PointerMove, handleScrollBarThumbVerticalPointerMove, DomEventOptions.Active)\n // TODO use pointerlost event instead\n // @ts-ignore\n target.addEventListener(DomEventType.PointerUp, handleScrollBarVerticalPointerUp)\n EditorFunctions.handleScrollBarVerticalPointerDown(clientY)\n}\n\n/**\n *\n * @param {PointerEvent} event\n */\nexport const handleScrollBarThumbHorizontalPointerMove = (event) => {\n const { clientX } = event\n EditorFunctions.handleScrollBarHorizontalMove(clientX)\n}\n\n/**\n *\n * @param {PointerEvent} event\n */\nexport const handleScrollBarHorizontalPointerUp = (event) => {\n const { target, pointerId } = event\n // @ts-ignore\n target.releasePointerCapture(pointerId)\n // @ts-ignore\n target.removeEventListener(DomEventType.PointerMove, handleScrollBarThumbHorizontalPointerMove)\n // @ts-ignore\n target.removeEventListener(DomEventType.PointerUp, handleScrollBarHorizontalPointerUp)\n}\n\n/**\n *\n * @param {PointerEvent} event\n */\nexport const handleScrollBarHorizontalPointerDown = (event) => {\n const { target, pointerId, clientX } = event\n // @ts-ignore\n target.setPointerCapture(pointerId)\n // @ts-ignore\n target.addEventListener(DomEventType.PointerMove, handleScrollBarThumbHorizontalPointerMove, DomEventOptions.Active)\n // TODO use pointerlost event instead\n // @ts-ignore\n target.addEventListener(DomEventType.PointerUp, handleScrollBarHorizontalPointerUp)\n EditorFunctions.handleScrollBarHorizontalPointerDown(clientX)\n}\n\nexport const handleScrollBarContextMenu = (event) => {\n Event.preventDefault(event)\n Event.stopPropagation(event)\n}\n\n// TODO add touch cancel handler\n\n// TODO use touch events for scrolling\n\nexport const handleTouchStart = (event) => {\n const touchEvent = TouchEvent.toSimpleTouchEvent(event)\n EditorFunctions.handleTouchStart(touchEvent)\n}\n\nexport const handleTouchMove = (event) => {\n const touchEvent = TouchEvent.toSimpleTouchEvent(event)\n EditorFunctions.handleTouchMove(touchEvent)\n}\n\nexport const handleTouchEnd = (event) => {\n if (event.cancelable) {\n Event.preventDefault(event)\n }\n const touchEvent = TouchEvent.toSimpleTouchEvent(event)\n EditorFunctions.handleTouchEnd(touchEvent)\n}\n\nconst getRangeFromSelection = (selection) => {\n if (!selection.anchorNode) {\n return undefined\n }\n const $StartToken = selection.anchorNode.parentNode\n const $EndToken = selection.focusNode.parentNode\n const $StartRow = $StartToken.parentNode\n const $EndRow = $EndToken.parentNode\n const $Rows = $StartRow.parentNode\n let startRowIndex = 0\n for (let i = 0; i < $Rows.children.length; i++) {\n if ($Rows.children[i] === $StartRow) {\n startRowIndex = i\n break\n }\n }\n let startColumnIndex = 0\n for (let i = 0; i < $StartRow.children.length; i++) {\n if ($StartRow.children[i] === $StartToken) {\n break\n }\n startColumnIndex += $StartRow.children[i].textContent.length\n }\n startColumnIndex += selection.anchorOffset\n let endRowIndex = 0\n for (let i = 0; i < $Rows.children.length; i++) {\n if ($Rows.children[i] === $EndRow) {\n endRowIndex = i\n break\n }\n }\n let endColumnIndex = 0\n for (let i = 0; i < $EndRow.children.length; i++) {\n if ($EndRow.children[i] === $EndToken) {\n break\n }\n endColumnIndex += $EndRow.children[i].textContent.length\n }\n endColumnIndex += selection.focusOffset\n return {\n startRowIndex,\n startColumnIndex,\n endRowIndex,\n endColumnIndex,\n }\n}\n\nexport const handleContentEditableBeforeInput = (event) => {\n const selection = document.getSelection()\n const range = getRangeFromSelection(selection)\n if (!range) {\n console.error('[Editor] cannot handle input event without selection')\n return\n }\n EditorFunctions.handleBeforeInputFromContentEditable(event.data || '', range)\n}\n\nexport const handleNativeSelectionChange = (event) => {\n // if (state.shouldIgnoreSelectionChange) {\n // state.shouldIgnoreSelectionChange = false\n // return\n // }\n // const selection = document.getSelection()\n // const range = getRangeFromSelection(selection)\n // if (!range) {\n // return\n // }\n // RendererWorker.send(\n // /* EditorHandleNativeSelectionChange.editorHandleNativeSelectionChange */ 'Editor.handleNativeSelectionChange',\n // /* range */ range\n // )\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Logger from '../Logger/Logger.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\n\nconst create$Cursor = () => {\n const $Cursor = document.createElement('div')\n $Cursor.className = 'EditorCursor'\n return $Cursor\n}\n\nconst render$Cursor = ($Cursor, cursors, i) => {\n const x = cursors[i]\n const y = cursors[i + 1]\n SetBounds.setXAndYTransform($Cursor, x, y)\n}\n\nconst render$CursorsLess = ($Cursors, childCount, cursors, cursorCount) => {\n for (let i = 0, j = 0; i < childCount; i++, j += 2) {\n render$Cursor($Cursors.children[i], cursors, j)\n }\n const fragment = document.createDocumentFragment()\n for (let i = childCount; i < cursorCount; i++) {\n const $Cursor = create$Cursor()\n render$Cursor($Cursor, cursors, i)\n fragment.append($Cursor)\n }\n $Cursors.append(fragment)\n}\n\nconst render$CursorsEqual = ($Cursors, childCount, cursors, cursorCount) => {\n for (let i = 0; i < cursorCount; i++) {\n render$Cursor($Cursors.children[i], cursors, i)\n }\n}\n\nconst render$CursorsMore = ($Cursors, childCount, cursors, cursorCount) => {\n for (let i = 0; i < cursorCount; i++) {\n render$Cursor($Cursors.children[i], cursors, i)\n }\n const diff = childCount - cursorCount\n for (let i = 0; i < diff; i++) {\n $Cursors.lastChild.remove()\n }\n}\n\nconst render$Cursors = ($Cursors, cursors) => {\n const cursorCount = cursors.length / 2\n const childCount = $Cursors.children.length\n if (childCount < cursorCount) {\n render$CursorsLess($Cursors, childCount, cursors, cursorCount)\n } else if (childCount === cursorCount) {\n render$CursorsEqual($Cursors, childCount, cursors, cursorCount)\n } else {\n render$CursorsMore($Cursors, childCount, cursors, cursorCount)\n }\n}\n\nconst renderCursorsNative = (state, cursors) => {\n if (cursors.length > 1) {\n Logger.warn('[editor] cannot render more than one native cursor')\n return\n }\n if (cursors.length === 0) {\n return\n }\n const cursor = cursors[0]\n const $Rows = state.$LayerText\n const $StartRow = $Rows.children[cursor.rowIndex]\n let startOffset = 0\n let $Anchor\n for (let i = 0; i < $StartRow.children.length; i++) {\n if (startOffset >= cursor.columnIndex) {\n $Anchor = $StartRow.children[i - 1].firstChild\n startOffset -= $Anchor.textContent.length\n startOffset = cursor.columnIndex - startOffset\n break\n }\n startOffset += $StartRow.children[i].textContent.length\n }\n if (!$Anchor) {\n $Anchor = $StartRow.children[$StartRow.children.length - 1].firstChild\n startOffset -= $Anchor.textContent.length\n startOffset = cursor.columnIndex - startOffset\n }\n const selection = document.getSelection()\n if (\n selection.anchorNode === $Anchor &&\n selection.focusNode === $Anchor &&\n selection.anchorOffset === startOffset &&\n selection.focusOffset === startOffset\n ) {\n return\n }\n state.shouldIgnoreSelectionChange = true\n const documentRange = document.createRange()\n documentRange.setStart($Anchor, startOffset)\n documentRange.setEnd($Anchor, startOffset)\n selection.removeAllRanges()\n selection.addRange(documentRange)\n}\n\nexport const setCursors = (state, cursors) => {\n Assert.float32Array(cursors)\n render$Cursors(state.$LayerCursor, cursors)\n}\n", "import * as SetBounds from '../SetBounds/SetBounds.js'\n\nconst create$Diagnostic = () => {\n const $Diagnostic = document.createElement('div')\n $Diagnostic.className = 'EditorDiagnostic'\n return $Diagnostic\n}\n\nconst render$Diagnostic = ($Diagnostic, diagnostic) => {\n SetBounds.setBounds($Diagnostic, diagnostic.left, diagnostic.top, diagnostic.width, diagnostic.height)\n}\n\nconst render$DiagnosticsLess = ($Diagnostics, diagnostics) => {\n for (let i = 0; i < $Diagnostics.children.length; i++) {\n render$Diagnostic($Diagnostics.children[i], diagnostics[i])\n }\n const fragment = document.createDocumentFragment()\n for (let i = $Diagnostics.children.length; i < diagnostics.length; i++) {\n const $Diagnostic = create$Diagnostic()\n render$Diagnostic($Diagnostic, diagnostics[i])\n fragment.append($Diagnostic)\n }\n $Diagnostics.append(fragment)\n}\n\nconst render$DiagnosticsEqual = ($Diagnostics, diagnostics) => {\n for (let i = 0; i < diagnostics.length; i++) {\n render$Diagnostic($Diagnostics.children[i], diagnostics[i])\n }\n}\n\nconst render$DiagnosticsMore = ($Diagnostics, diagnostics) => {\n for (let i = 0; i < diagnostics.length; i++) {\n render$Diagnostic($Diagnostics.children[i], diagnostics[i])\n }\n const diff = $Diagnostics.children.length - diagnostics.length\n for (let i = 0; i < diff; i++) {\n $Diagnostics.lastChild.remove()\n }\n}\n\nconst render$Diagnostics = ($Diagnostics, diagnostics) => {\n if ($Diagnostics.children.length < diagnostics.length) {\n render$DiagnosticsLess($Diagnostics, diagnostics)\n } else if ($Diagnostics.children.length === diagnostics.length) {\n render$DiagnosticsEqual($Diagnostics, diagnostics)\n } else {\n render$DiagnosticsMore($Diagnostics, diagnostics)\n }\n}\n\nexport const setDiagnostics = (state, diagnostics) => {\n render$Diagnostics(state.$LayerDiagnostics, diagnostics)\n}\n", "import * as SetBounds from '../SetBounds/SetBounds.js'\n\nexport const setPosition = (state, scrollBarY, scrollBarHeight) => {\n const { $ScrollBarThumbVertical } = state\n SetBounds.setYAndHeight($ScrollBarThumbVertical, scrollBarY, scrollBarHeight)\n}\n\nexport const setScrollBarHorizontal = (state, scrollBarX, scrollBarWidth, deltaX) => {\n const { $ScrollBarThumbHorizontal, $EditorLayers } = state\n SetBounds.setXAndWidth($ScrollBarThumbHorizontal, scrollBarX, scrollBarWidth)\n // SetBounds.setX($EditorLayers, -deltaX)\n}\n\n// TODO scrollbar decorations should be own layer maybe\nconst create$ScrollBarDiagnostic = () => {\n const $ScrollBarDiagnostic = document.createElement('div')\n $ScrollBarDiagnostic.className = 'ScrollBarDiagnostic'\n return $ScrollBarDiagnostic\n}\n\nconst render$ScrollBarDiagnostic = ($ScrollBarDiagnostic, scrollBarDiagnostic) => {\n SetBounds.setTop($ScrollBarDiagnostic, scrollBarDiagnostic.top)\n}\n\nconst render$ScrollBarDiagnosticsLess = ($ScrollBarDiagnostics, scrollBarDiagnostics) => {\n for (let i = 0; i < $ScrollBarDiagnostics.children.length; i++) {\n render$ScrollBarDiagnostic($ScrollBarDiagnostics.children[i], scrollBarDiagnostics[i])\n }\n const fragment = document.createDocumentFragment()\n for (let i = $ScrollBarDiagnostics.children.length; i < scrollBarDiagnostics.length; i++) {\n const $ScrollBarDiagnostic = create$ScrollBarDiagnostic()\n render$ScrollBarDiagnostic($ScrollBarDiagnostic, scrollBarDiagnostics[i])\n fragment.append($ScrollBarDiagnostic)\n }\n $ScrollBarDiagnostics.append(fragment)\n}\n\nconst render$ScrollBarDiagnosticsEqual = ($ScrollBarDiagnostics, scrollBarDiagnostics) => {\n for (let i = 0; i < scrollBarDiagnostics.length; i++) {\n render$ScrollBarDiagnostic($ScrollBarDiagnostics.children[i], scrollBarDiagnostics[i])\n }\n}\n\nconst render$ScrollBarDiagnosticsMore = ($ScrollBarDiagnostics, scrollBarDiagnostics) => {\n for (let i = 0; i < scrollBarDiagnostics.length; i++) {\n render$ScrollBarDiagnostic($ScrollBarDiagnostics.children[i], scrollBarDiagnostics[i])\n }\n const diff = $ScrollBarDiagnostics.children.length - scrollBarDiagnostics.length\n for (let i = 0; i < diff; i++) {\n $ScrollBarDiagnostics.lastChild.remove()\n }\n}\n\nconst render$ScrollBarDiagnostics = ($ScrollBarDiagnostics, scrollBarDiagnostics) => {\n if ($ScrollBarDiagnostics.children.length < scrollBarDiagnostics.length) {\n render$ScrollBarDiagnosticsLess($ScrollBarDiagnostics, scrollBarDiagnostics)\n } else if ($ScrollBarDiagnostics.children.length === scrollBarDiagnostics.length) {\n render$ScrollBarDiagnosticsEqual($ScrollBarDiagnostics, scrollBarDiagnostics)\n } else {\n render$ScrollBarDiagnosticsMore($ScrollBarDiagnostics, scrollBarDiagnostics)\n }\n}\n\nexport const setDiagnostics = (editor, scrollBarDiagnostics) => {\n render$ScrollBarDiagnostics(editor.$ScrollBarDiagnostics, scrollBarDiagnostics)\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Logger from '../Logger/Logger.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\n\nconst create$Selection = () => {\n const $Selection = document.createElement('div')\n $Selection.className = 'EditorSelection'\n return $Selection\n}\n\nconst render$Selection = ($Selection, selections, i) => {\n Assert.object($Selection)\n Assert.number(i)\n\n const x = selections[i * 4]\n const y = selections[i * 4 + 1]\n const width = selections[i * 4 + 2]\n const height = selections[i * 4 + 3]\n // TODO have many decorations per row\n // no absolute positioning\n SetBounds.setBounds($Selection, x, y, width, height)\n}\n\nconst render$SelectionsLess = ($Selections, childCount, selections, selectionCount) => {\n for (let i = 0, j = 0; i < childCount; i++, j += 4) {\n render$Selection($Selections.children[i], selections, i)\n }\n const fragment = document.createDocumentFragment()\n for (let i = childCount; i < selectionCount; i++) {\n const $Selection = create$Selection()\n render$Selection($Selection, selections, i)\n fragment.append($Selection)\n }\n $Selections.append(fragment)\n}\n\nconst render$SelectionsEqual = ($Selections, childCount, selections, selectionCount) => {\n for (let i = 0; i < selectionCount; i++) {\n render$Selection($Selections.children[i], selections, i)\n }\n}\n\nconst render$SelectionsMore = ($Selections, childCount, selections, selectionCount) => {\n for (let i = 0; i < selectionCount; i++) {\n render$Selection($Selections.children[i], selections, i)\n }\n const diff = childCount - selectionCount\n for (let i = 0; i < diff; i++) {\n $Selections.lastChild.remove()\n }\n}\n\nconst render$Selections = ($Selections, selections) => {\n const selectionsCount = selections.length / 4\n const childCount = $Selections.children.length\n if (childCount < selectionsCount) {\n render$SelectionsLess($Selections, childCount, selections, selectionsCount)\n } else if (childCount === selectionsCount) {\n render$SelectionsEqual($Selections, childCount, selections, selectionsCount)\n } else {\n render$SelectionsMore($Selections, childCount, selections, selectionsCount)\n }\n}\n\nconst renderSelectionsNative = (state, selections) => {\n if (selections.length > 1) {\n Logger.warn('[editor] cannot render more than one native selection')\n }\n}\n\nexport const setSelections = (state, selections) => {\n render$Selections(state.$LayerSelections, selections)\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\n\nconst create$Row = () => {\n const $Row = document.createElement('div')\n $Row.className = 'EditorRow'\n return $Row\n}\n\nconst create$Token = () => {\n const $Token = document.createElement('span')\n $Token.className = 'Token'\n return $Token\n}\n\n// TODO maybe use createTextNode (codeMirror uses that)\n// This function seems to be a hot spot\nconst render$Token = ($Token, text, className) => {\n $Token.className = className\n if ($Token.firstChild) {\n // recycle text node\n $Token.firstChild.nodeValue = text\n } else {\n $Token.textContent = text\n }\n}\n\nconst render$LineLess = ($Line, lineInfo) => {\n let i = 0\n while (i < $Line.children.length * 2) {\n const text = lineInfo[i++]\n const className = lineInfo[i++]\n render$Token($Line.children[i / 2 - 1], text, className)\n }\n const fragment = document.createDocumentFragment()\n while (i < lineInfo.length) {\n const text = lineInfo[i++]\n const className = lineInfo[i++]\n const $Token = create$Token()\n render$Token($Token, text, className)\n fragment.append($Token)\n }\n $Line.append(fragment)\n}\n\nconst render$LineEqual = ($Line, lineInfo) => {\n let i = 0\n while (i < lineInfo.length) {\n const text = lineInfo[i++]\n const className = lineInfo[i++]\n render$Token($Line.children[i / 2 - 1], text, className)\n }\n}\n\nconst render$LineMore = ($Line, lineInfo) => {\n let i = 0\n while (i < lineInfo.length) {\n const text = lineInfo[i++]\n const className = lineInfo[i++]\n render$Token($Line.children[i / 2 - 1], text, className)\n }\n const diff = $Line.children.length - lineInfo.length / 2\n for (let i = lineInfo.length; i < lineInfo.length + diff; i++) {\n $Line.lastChild.remove()\n }\n}\n\nconst render$Line = ($Line, lineInfo, difference) => {\n if ($Line.children.length < lineInfo.length / 2) {\n render$LineLess($Line, lineInfo)\n } else if ($Line.children.length === lineInfo.length / 2) {\n render$LineEqual($Line, lineInfo)\n } else {\n render$LineMore($Line, lineInfo)\n }\n SetBounds.setX($Line, difference)\n}\n\nconst render$LinesLess = ($Lines, lineInfos, differences) => {\n for (let i = 0; i < $Lines.children.length; i++) {\n render$Line($Lines.children[i], lineInfos[i], differences[i])\n }\n const fragment = document.createDocumentFragment()\n for (let i = $Lines.children.length; i < lineInfos.length; i++) {\n const $Line = create$Row()\n render$Line($Line, lineInfos[i], differences[i])\n fragment.append($Line)\n }\n $Lines.append(fragment)\n}\n\nconst render$LinesEqual = ($Lines, lineInfos, differences) => {\n for (let i = 0; i < lineInfos.length; i++) {\n render$Line($Lines.children[i], lineInfos[i], differences[i])\n }\n}\n\nconst render$LinesMore = ($Lines, lineInfos, differences) => {\n for (let i = 0; i < lineInfos.length; i++) {\n render$Line($Lines.children[i], lineInfos[i], differences[i])\n }\n const diff = $Lines.children.length - lineInfos.length\n for (let i = lineInfos.length; i < lineInfos.length + diff; i++) {\n $Lines.lastChild.remove()\n }\n}\n\nconst render$Lines = ($Lines, lineInfos, differences) => {\n Assert.object($Lines)\n Assert.array(lineInfos)\n if ($Lines.children.length < lineInfos.length) {\n render$LinesLess($Lines, lineInfos, differences)\n } else if ($Lines.children.length === lineInfos.length) {\n render$LinesEqual($Lines, lineInfos, differences)\n } else {\n render$LinesMore($Lines, lineInfos, differences)\n }\n}\n\nexport const setLineInfos = (state, lineInfos, differences) => {\n Assert.object(state)\n Assert.array(lineInfos)\n Assert.array(differences)\n render$Lines(state.$LayerText, lineInfos, differences)\n}\n", "// TODO so many things in this file\n\nimport * as AriaAutoCompleteType from '../AriaAutoCompleteType/AriaAutoCompleteType.js'\nimport * as AriaBoolean from '../AriaBoolean/AriaBoolean.js'\nimport * as AriaRoleDescriptionType from '../AriaRoleDescriptionType/AriaRoleDescriptionType.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as DomEventOptions from '../DomEventOptions/DomEventOptions.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as Logger from '../Logger/Logger.js'\nimport * as EditorEvents from './EditorEvents.js'\nimport * as LayerCursor from './LayerCursor.js'\nimport * as LayerDiagnostics from './LayerDiagnostics.js'\nimport * as LayerScrollBar from './LayerScrollBar.js'\nimport * as LayerSelections from './LayerSelections.js'\nimport * as LayerText3 from './LayerText.js'\n\n// TODO go back to edit mode after pressing escape so screenreaders can navigate https://stackoverflow.com/questions/53909477/how-to-handle-tabbing-for-accessibility-with-a-textarea-that-uses-the-tab-button\n\n// TODO tree shake out mobile support when targeting electron -> less code -> less event listeners -> less memory -> less cpu\n\n// TODO all create functions should have no arguments\n// and be split into two parts\n// 1. create -> only create dom elements\n// 2. render -> fill elements with attributes and data\n// that way all dom nodes can be recycled\nexport const create = () => {\n const $EditorInput = document.createElement('textarea')\n $EditorInput.className = 'EditorInput'\n $EditorInput.ariaAutoComplete = AriaAutoCompleteType.List\n $EditorInput.ariaRoleDescription = AriaRoleDescriptionType.Editor\n $EditorInput.ariaMultiLine = AriaBoolean.True\n $EditorInput.setAttribute('autocomplete', 'off')\n $EditorInput.setAttribute('autocapitalize', 'off')\n $EditorInput.setAttribute('autocorrect', 'off')\n $EditorInput.setAttribute('wrap', 'off')\n $EditorInput.setAttribute('spellcheck', AriaBoolean.False)\n $EditorInput.role = AriaRoles.TextBox\n $EditorInput.onpaste = EditorEvents.handlePaste\n // TODO where to best put listeners (side effects)\n $EditorInput.addEventListener(DomEventType.BeforeInput, EditorEvents.handleBeforeInput)\n $EditorInput.addEventListener(DomEventType.CompositionStart, EditorEvents.handleCompositionStart)\n $EditorInput.addEventListener(DomEventType.CompositionUpdate, EditorEvents.handleCompositionUpdate)\n $EditorInput.addEventListener(DomEventType.CompositionEnd, EditorEvents.handleCompositionEnd)\n $EditorInput.onfocus = EditorEvents.handleFocus\n $EditorInput.onblur = EditorEvents.handleBlur\n $EditorInput.oncut = EditorEvents.handleCut\n\n const $LayerCursor = document.createElement('div')\n $LayerCursor.className = 'LayerCursor'\n\n const $LayerText = document.createElement('div')\n $LayerText.className = 'EditorRows'\n\n $LayerText.addEventListener(DomEventType.MouseDown, EditorEvents.handleMouseDown)\n $LayerText.addEventListener(DomEventType.PointerDown, EditorEvents.handleEditorPointerDown)\n\n const $ScrollBarThumbVertical = document.createElement('div')\n $ScrollBarThumbVertical.className = 'ScrollBarThumbVertical'\n\n // TODO only create $ScrollBarDiagnostics lazily when there are actually diagnostics\n const $ScrollBarDiagnostics = document.createElement('div')\n $ScrollBarDiagnostics.className = 'EditorScrollBarDiagnostics'\n\n const $ScrollBarVertical = document.createElement('div')\n $ScrollBarVertical.className = 'ScrollBarVertical'\n $ScrollBarVertical.onpointerdown = EditorEvents.handleScrollBarVerticalPointerDown\n $ScrollBarVertical.oncontextmenu = EditorEvents.handleScrollBarContextMenu\n $ScrollBarVertical.append($ScrollBarThumbVertical)\n\n const $ScrollBarThumbHorizontal = document.createElement('div')\n $ScrollBarThumbHorizontal.className = 'ScrollBarThumbHorizontal'\n\n const $ScrollBarHorizontal = document.createElement('div')\n $ScrollBarHorizontal.className = 'ScrollBarHorizontal'\n $ScrollBarHorizontal.append($ScrollBarThumbHorizontal)\n $ScrollBarHorizontal.onpointerdown = EditorEvents.handleScrollBarHorizontalPointerDown\n\n // $EditorRows.addEventListener('mousemove', handleMouseMove, { passive: true })\n\n // TODO function should be hoisted (maybe -> one listener for all editors (definitely))\n // only problem is $EditorInput closure\n\n // TODO when mousedown on completions -> this shouldn't be called\n\n const $LayerSelections = document.createElement('div')\n $LayerSelections.className = 'Selections'\n\n // TODO maybe use css grid to position layers on top of each other\n // TODO maybe merge layerDiagnostics with LayerSelections\n // TODO maybe this should be more generic, e.g. LayerDecorations\n // where decoration = {top,left, width, height, type/className}\n const $LayerDiagnostics = document.createElement('div')\n $LayerDiagnostics.className = 'LayerDiagnostics'\n\n const $EditorLayers = document.createElement('div')\n $EditorLayers.className = 'EditorLayers'\n $EditorLayers.append($LayerSelections, $LayerText, $LayerCursor, $LayerDiagnostics)\n\n const $Editor = document.createElement('div')\n $Editor.className = 'Viewlet Editor'\n $Editor.role = AriaRoles.Code\n $Editor.append($EditorInput, $EditorLayers, $ScrollBarDiagnostics, $ScrollBarVertical, $ScrollBarHorizontal)\n $Editor.addEventListener(DomEventType.ContextMenu, EditorEvents.handleContextMenu)\n $Editor.addEventListener(DomEventType.Wheel, EditorEvents.handleWheel, DomEventOptions.Passive)\n $Editor.addEventListener(DomEventType.MouseMove, EditorEvents.handlePointerMove, DomEventOptions.Passive)\n return {\n $LayerCursor,\n $LayerSelections,\n $LayerText,\n $EditorLayers,\n $Editor,\n $EditorInput,\n $ScrollBarThumbVertical,\n $ScrollBarThumbHorizontal,\n $LayerDiagnostics,\n $ScrollBarDiagnostics,\n shouldIgnoreSelectionChange: false,\n $Viewlet: $Editor,\n }\n}\n\nexport const setText = (state, textInfos, differences) => {\n LayerText3.setLineInfos(state, textInfos, differences)\n}\n\nexport const setSettings = (state, fontSize, lineHeight, letterSpacing) => {\n // TODO many properties on <html> element in chrome devtools looks ugly\n // maybe put styles into a stylesheet instead of using inline styles?\n const root = document.documentElement\n root.style.setProperty('--EditorFontSize', `${fontSize}px`)\n root.style.setProperty('--EditorLineHeight', `${lineHeight}px`)\n root.style.setProperty('--EditorLetterSpacing', `${letterSpacing}px`)\n}\n\nexport const setScrollBar = (state, scrollBarY, scrollBarHeight) => {\n LayerScrollBar.setPosition(state, scrollBarY, scrollBarHeight)\n}\n\nexport const setScrollBarHorizontal = LayerScrollBar.setScrollBarHorizontal\n\nexport const renderCursors = (state, cursorInfos) => {\n LayerCursor.setCursors(state, cursorInfos)\n}\n\nexport const renderSelections = (state, selectionInfos) => {\n LayerSelections.setSelections(state, selectionInfos)\n}\n\nexport const renderTextAndCursors = (state, textInfos, cursorInfos) => {\n LayerText3.setLineInfos(state, textInfos)\n LayerCursor.setCursors(state, cursorInfos)\n}\n\nexport const setSelections = (state, cursorInfos, selectionInfos) => {\n Assert.float32Array(cursorInfos)\n Assert.float32Array(selectionInfos)\n LayerCursor.setCursors(state, cursorInfos)\n LayerSelections.setSelections(state, selectionInfos)\n}\n\nexport const renderTextAndCursorsAndSelections = (state, scrollBarY, scrollBarHeight, textInfos, cursorInfos, selectionInfos) => {\n Assert.object(state)\n Assert.number(scrollBarY)\n Assert.number(scrollBarHeight)\n Assert.array(textInfos)\n Assert.array(cursorInfos)\n Assert.array(selectionInfos)\n LayerScrollBar.setPosition(state, scrollBarY, scrollBarHeight)\n LayerText3.setLineInfos(state, textInfos)\n LayerCursor.setCursors(state, cursorInfos)\n LayerSelections.setSelections(state, selectionInfos)\n}\n\nexport const mount = (state, $Parent) => {\n $Parent.append(state.$Editor)\n}\n\nexport const dispose = (state) => {}\n\nexport const focus = (state) => {\n const { $EditorInput } = state\n if (!$EditorInput.isConnected) {\n Logger.warn('unmounted editor cannot be focused')\n }\n $EditorInput.focus()\n}\n\nexport const setLanguageId = async (state, languageId) => {\n // state.languageId = languageId\n // state.$Editor.dataset.languageId = languageId\n // loadTokenizer(languageId)\n}\n\nexport const renderDiagnostics = (state, diagnostics, scrollBarDiagnostics) => {\n LayerDiagnostics.setDiagnostics(state, diagnostics)\n LayerScrollBar.setDiagnostics(state, scrollBarDiagnostics)\n}\n", "import * as Editor from '../Editor/Editor.js'\nimport * as Logger from '../Logger/Logger.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\nimport * as Widget from '../Widget/Widget.js'\n\nexport const create = Editor.create\n\nexport const setText = Editor.setText\n\nexport const setSelections = Editor.setSelections\n\nexport const handleError = (state, error) => {\n state.$Viewlet.textContent = error\n}\n\nexport const setScrollBar = Editor.setScrollBar\n\nexport const setScrollBarHorizontal = Editor.setScrollBarHorizontal\n\nexport const highlightAsLink = (state, relativeY, tokenIndex) => {\n const $Row = state.$LayerText.children[relativeY]\n if (!$Row) {\n Logger.info('no row found')\n return\n }\n const $Token = $Row.children[tokenIndex + 1]\n $Token.classList.add('EditorGoToDefinitionLink')\n}\n\nexport const showOverlayMessage = (state, x, y, content) => {\n const $OverLayMessage = document.createElement('div')\n $OverLayMessage.className = 'EditorOverlayMessage'\n $OverLayMessage.style.position = 'fixed'\n $OverLayMessage.textContent = content\n SetBounds.setXAndY($OverLayMessage, x, y)\n Widget.append($OverLayMessage)\n}\n\nexport const hideOverlayMessage = (state) => {\n // TODO pass id of the overlay message and remove widget by id\n for (const $Widget of Widget.state.widgetSet) {\n if ($Widget.className === 'EditorOverlayMessage') {\n Widget.remove($Widget)\n }\n }\n}\n\nexport const focus = Editor.focus\n", "export const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.dataset.viewlet = 'Empty'\n $Viewlet.className = 'Viewlet'\n return {\n $Viewlet,\n }\n}\n\nexport const refresh = (state, context) => {}\n\nexport const focus = (state) => {}\n\nexport const dispose = (state) => {}\n", "export const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet Error'\n return {\n $Viewlet,\n }\n}\n\nexport const setMessage = (state, message) => {\n const { $Viewlet } = state\n $Viewlet.textContent = message\n}\n", "export const BlockDevice = 1\nexport const CharacterDevice = 2\nexport const Directory = 3\nexport const DirectoryExpanded = 4\nexport const DirectoryExpanding = 5\nexport const File = 6\nexport const Socket = 7\nexport const Symlink = 8\nexport const SymLinkFile = 9\nexport const SymLinkFolder = 10\nexport const Unknown = 11\n", "export const CopyMove = 'copyMove'\n", "export const TextPlain = 'text/plain'\nexport const TextUrl = 'text/url'\nexport const TextUriList = 'text/uri-list'\nexport const TextHtml = 'text/html'\nexport const Text = 'text'\nexport const ResourceUrls = 'resourceurls'\n", "import * as Platform from '../Platform/Platform.js'\nimport * as DataTransferType from '../DataTransferType/DataTransferType.js'\n\nexport const setEffectAllowed = (dataTransfer, effectAllowed) => {\n dataTransfer.effectAllowed = effectAllowed\n}\n\nexport const setDropEffect = (dataTransfer, dropEffect) => {\n dataTransfer.dropEffect = dropEffect\n}\n\nexport const setData = (dataTransfer, key, value) => {\n dataTransfer.setData(key, value)\n}\n\nexport const getData = (dataTransfer, key) => {\n return dataTransfer.getData(key)\n}\n\nexport const setFilePath = (dataTransfer, filePath, fileName) => {\n dataTransfer.setData(DataTransferType.ResourceUrls, JSON.stringify([filePath]))\n dataTransfer.setData(DataTransferType.Text, filePath)\n const dragImage = document.createElement('div')\n dragImage.className = 'DragImage'\n if (Platform.getBrowser() !== 'chromium') {\n // chrome doesn't support border radius\n dragImage.style.borderRadius = '100px'\n }\n dragImage.textContent = fileName\n document.body.append(dragImage)\n dataTransfer.setDragImage(dragImage, -10, -10)\n const handleTimeOut = () => {\n dragImage.remove()\n }\n setTimeout(handleTimeOut, 0)\n}\n\nexport const getFilePaths = (dataTransfer) => {\n const data = dataTransfer.getData(DataTransferType.ResourceUrls)\n if (data) {\n const parsed = JSON.parse(data)\n if (Array.isArray(parsed) && data.length > 0) {\n return parsed\n }\n }\n return []\n}\n\nexport const getFilePath = (dataTransfer) => {\n const filePaths = getFilePath(dataTransfer)\n if (filePaths.length === 0) {\n return ''\n }\n return filePaths[0]\n}\n", "export const Copy = 'copy'\n", "import * as Platform from '../Platform/Platform.js'\n\nexport const isFileSystemAccessNotSupportedOnFireFoxError = (error) => {\n return error instanceof TypeError && error.message === 'item.getAsFileSystemHandle is not a function' && Platform.getBrowser() === 'firefox'\n}\n", "import * as IsFileSystemAccessNotSupportedOnFireFoxError from '../IsFileSystemAccessNotSupportedOnFireFoxError/IsFileSystemAccessNotSupportedOnFirefoxError.js'\n\nconst getHandle = async (item) => {\n const entry = await item.getAsFileSystemHandle()\n return entry\n}\n\nexport const getFileHandles = async (items) => {\n try {\n const itemsArray = [...items]\n const handles = await Promise.all(itemsArray.map(getHandle))\n return handles\n } catch (error) {\n if (IsFileSystemAccessNotSupportedOnFireFoxError.isFileSystemAccessNotSupportedOnFireFoxError(error)) {\n throw new Error(`The File System Access Api is not supported on Firefox`)\n }\n throw error\n }\n}\n", "/**\n *\n * @param {EventTarget} object\n * @returns {object is HTMLElement}\n */\nexport const isHtmlElement = (object) => {\n return object instanceof HTMLElement\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const focus = () => {\n RendererWorker.send('Explorer.focus')\n}\n\nexport const handleBlur = () => {\n RendererWorker.send('Explorer.handleBlur')\n}\n\nexport const handleDragOver = (x, y) => {\n RendererWorker.send('Explorer.handleDragOver', x, y)\n}\n\nexport const handleDrop = (x, y, files) => {\n RendererWorker.send('Explorer.handleDrop', x, y, files)\n}\n\nexport const handleContextMenu = (button, x, y) => {\n RendererWorker.send('Explorer.handleContextMenu', button, x, y)\n}\n\nexport const handleClickAt = (x, y) => {\n RendererWorker.send('Explorer.handleClickAt', x, y)\n}\n\nexport const handleWheel = (deltaY) => {\n RendererWorker.send('Explorer.handleWheel', deltaY)\n}\n\nexport const updateEditingValue = (value) => {\n RendererWorker.send('Explorer.updateEditingValue', value)\n}\n\nexport const handlePointerDown = (button, x, y) => {\n RendererWorker.send('Explorer.handlePointerDown', button, x, y)\n}\n", "import * as AllowedDragEffectType from '../AllowedDragEffectType/AllowedDragEffectType.js'\nimport * as DataTransfer from '../DataTransfer/DataTransfer.js'\nimport * as DropEffectType from '../DropEffectType/DropEffectType.js'\nimport * as Event from '../Event/Event.js'\nimport * as Focus from '../Focus/Focus.js' // TODO focus is never needed at start -> use command.execute which lazy-loads focus module\nimport * as GetFileHandlesFromDataTransferItems from '../GetFileHandlesFromDataTransferItems/GetFileHandlesFromDataTransferItems.js'\nimport * as IsHtmlElement from '../IsHtmlElement/IsHtmlElement.js'\nimport * as MouseEventType from '../MouseEventType/MouseEventType.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as WheelEventType from '../WheelEventType/WheelEventType.js'\nimport * as ViewletExplorerFunctions from './ViewletExplorerFunctions.js'\n\n// TODO put drop into separate module and use executeCommand to call it\n\n// TODO drag and drop should be loaded on demand\nconst getAllEntries = async (dataTransfer) => {\n const topLevelEntries = Array.from(dataTransfer.items).map((item) => item.webkitGetAsEntry())\n const allEntries = await new Promise((resolve, reject) => {\n const result = []\n let finished = 0\n let total = 0\n\n const fileCallback = (file) => {\n finished++\n result.push({\n type: 1,\n // path: entry.fullPath,\n file,\n })\n if (finished === total) {\n resolve(result)\n }\n }\n\n const handleEntryFile = (entry) => {\n entry.file(fileCallback)\n }\n\n const entriesCallback = (childEntries) => {\n handleEntries(childEntries)\n finished++\n if (finished === total) {\n resolve(result)\n }\n }\n\n const handleEntryDirectory = (entry) => {\n result.push({\n type: 2,\n path: entry.fullPath,\n })\n const dirReader = entry.createReader()\n dirReader.readEntries(entriesCallback)\n }\n\n const handleEntries = (entries) => {\n total += entries.length\n for (const entry of entries) {\n if (entry.isFile) {\n handleEntryFile(entry)\n } else if (entry.isDirectory) {\n handleEntryDirectory(entry)\n } else {\n }\n }\n }\n\n handleEntries(topLevelEntries)\n })\n return allEntries\n}\n\nexport const handleFocus = (event) => {\n const { target, isTrusted } = event\n Focus.setFocus('Explorer')\n if (!isTrusted || target.className === 'InputBox') {\n return\n }\n ViewletExplorerFunctions.focus()\n}\n\nexport const handleBlur = (event) => {\n ViewletExplorerFunctions.handleBlur()\n}\n\n/**\n *\n * @param {DragEvent} event\n */\nexport const handleDragOver = (event) => {\n Event.preventDefault(event)\n const { dataTransfer, clientX, clientY } = event\n DataTransfer.setEffectAllowed(dataTransfer, AllowedDragEffectType.CopyMove)\n DataTransfer.setDropEffect(dataTransfer, DropEffectType.Copy)\n ViewletExplorerFunctions.handleDragOver(clientX, clientY)\n}\n\n/**\n * @param {DragEvent} event\n */\nexport const handleDragStart = (event) => {\n const { target, dataTransfer } = event\n if (!IsHtmlElement.isHtmlElement(target)) {\n return\n }\n const filePath = target.title\n const fileName = target.textContent\n DataTransfer.setEffectAllowed(dataTransfer, AllowedDragEffectType.CopyMove)\n DataTransfer.setFilePath(dataTransfer, filePath, fileName)\n}\n\nconst getPath = (file) => {\n return file.path\n}\n\nconst getFilePaths = (dataTransfer) => {\n const { files } = dataTransfer\n if (Platform.isElectron()) {\n return files.map(getPath)\n }\n const filePaths = DataTransfer.getFilePaths(dataTransfer)\n return filePaths\n}\n\n/**\n *\n * @param {DragEvent} event\n */\nexport const handleDrop = async (event) => {\n Event.preventDefault(event)\n Event.stopPropagation(event)\n const { clientX, clientY, dataTransfer } = event\n const { items } = dataTransfer\n const filePaths = getFilePaths(dataTransfer)\n if (filePaths.length > 0) {\n ViewletExplorerFunctions.handleDrop(clientX, clientY, filePaths)\n return\n }\n // unfortunately, DataTransferItem cannot be transferred to web worker\n // therefore the file system handles are sent to the web worker\n const handles = await GetFileHandlesFromDataTransferItems.getFileHandles(items)\n ViewletExplorerFunctions.handleDrop(clientX, clientY, handles)\n}\n\n// TODO maybe use aria active descendant instead\nconst getFocusedIndexFromFocusOutline = ($Viewlet) => {\n for (let i = 0; i < $Viewlet.children.length; i++) {\n const $Child = $Viewlet.children[i]\n if ($Child.classList.contains('FocusOutline')) {\n return i\n }\n }\n return -1\n}\n\nexport const handleContextMenu = (event) => {\n Event.preventDefault(event)\n const { button, clientX, clientY } = event\n ViewletExplorerFunctions.handleContextMenu(button, clientX, clientY)\n}\n\nexport const handleClick = (event) => {\n Event.preventDefault(event)\n const { button, clientX, clientY } = event\n if (button !== MouseEventType.LeftClick) {\n return\n }\n ViewletExplorerFunctions.handleClickAt(clientX, clientY)\n}\n\nexport const handleWheel = (event) => {\n const { deltaMode, deltaY } = event\n switch (deltaMode) {\n case WheelEventType.DomDeltaLine:\n case WheelEventType.DomDeltaPixel:\n ViewletExplorerFunctions.handleWheel(deltaY)\n break\n default:\n break\n }\n}\n\nexport const handlePointerDown = (event) => {\n const { button, clientX, clientY } = event\n ViewletExplorerFunctions.handlePointerDown(button, clientX, clientY)\n}\n\nexport const handleMouseEnter = (event) => {\n // const $Target = event.target\n // const index = findIndex($Target)\n // if (index === -1) {\n // return\n // }\n // RendererWorker.send(\n // /* Explorer.handleMouseEnter */ 'Explorer.handleMouseEnter',\n // /* index */ index\n // )\n}\n\nexport const handleMouseLeave = (event) => {\n // const $Target = event.target\n // const index = findIndex($Target)\n // if (index === -1) {\n // return\n // }\n // RendererWorker.send(\n // /* Explorer.handleMouseLeave */ 'Explorer.handleMouseLeave',\n // /* index */ index\n // )\n}\n\nexport const handleEditingInput = (event) => {\n const { target } = event\n const { value } = target\n ViewletExplorerFunctions.updateEditingValue(value)\n}\n", "import * as AriaBoolean from '../AriaBoolean/AriaBoolean.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as DirentType from '../DirentType/DirentType.js'\nimport * as DomAttributeType from '../DomAttributeType/DomAttributeType.js'\nimport * as DomEventOptions from '../DomEventOptions/DomEventOptions.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as Focus from '../Focus/Focus.js' // TODO focus is never needed at start -> use command.execute which lazy-loads focus module\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as Label from '../Label/Label.js'\nimport * as ViewletExplorerEvents from './ViewletExplorerEvents.js'\n\nconst activeId = 'TreeItemActive'\nconst focusClassName = 'FocusOutline'\nconst defaultIndent = 1\n\nexport const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet Explorer'\n $Viewlet.tabIndex = 0\n $Viewlet.role = AriaRoles.Tree\n $Viewlet.ariaLabel = 'Files Explorer'\n return {\n $Viewlet,\n }\n}\n\nexport const attachEvents = (state) => {\n const { $Viewlet } = state\n $Viewlet.onclick = ViewletExplorerEvents.handleClick\n $Viewlet.oncontextmenu = ViewletExplorerEvents.handleContextMenu\n // TODO use the other mouse events that capture automatically\n $Viewlet.addEventListener(DomEventType.MouseEnter, ViewletExplorerEvents.handleMouseEnter, DomEventOptions.Capture)\n $Viewlet.addEventListener(DomEventType.MouseLeave, ViewletExplorerEvents.handleMouseLeave, DomEventOptions.Capture)\n $Viewlet.addEventListener(DomEventType.Wheel, ViewletExplorerEvents.handleWheel, DomEventOptions.Passive)\n $Viewlet.onblur = ViewletExplorerEvents.handleBlur\n $Viewlet.ondragover = ViewletExplorerEvents.handleDragOver\n $Viewlet.ondragstart = ViewletExplorerEvents.handleDragStart\n $Viewlet.ondrop = ViewletExplorerEvents.handleDrop\n $Viewlet.onfocus = ViewletExplorerEvents.handleFocus\n $Viewlet.onpointerdown = ViewletExplorerEvents.handlePointerDown\n}\n\nconst create$Row = () => {\n const $Row = document.createElement('div')\n $Row.role = AriaRoles.TreeItem\n $Row.className = 'TreeItem'\n $Row.draggable = true\n const $Label = Label.create('')\n const $Icon = document.createElement('i')\n $Row.append($Icon, $Label)\n return $Row\n}\n\n// TODO rename to renderDirent\nconst render$Row = ($Row, rowInfo) => {\n const $Icon = $Row.childNodes[0]\n const $LabelText = $Row.childNodes[1].childNodes[0]\n $Icon.className = `FileIcon${rowInfo.icon}`\n $LabelText.data = rowInfo.name\n $Row.title = rowInfo.path\n $Row.ariaSetSize = `${rowInfo.setSize}`\n // TODO bug with windows narrator\n // windows narrator reads heading level 1\n $Row.ariaLevel = `${rowInfo.depth}`\n $Row.ariaPosInSet = `${rowInfo.posInSet}`\n $Row.style.paddingLeft = `${rowInfo.depth * defaultIndent}rem`\n $Row.ariaLabel = rowInfo.name\n $Row.ariaDescription = ''\n switch (rowInfo.type) {\n // TODO decide on directory vs folder\n case DirentType.Directory:\n $Row.ariaExpanded = AriaBoolean.False\n break\n case DirentType.DirectoryExpanding:\n $Row.ariaExpanded = AriaBoolean.True // TODO tree should be aria-busy then\n break\n case DirentType.DirectoryExpanded:\n $Row.ariaExpanded = AriaBoolean.True\n break\n case DirentType.File:\n $Row.ariaExpanded = undefined\n break\n default:\n break\n }\n}\n\nconst render$RowsLess = ($Rows, rowInfos) => {\n for (let i = 0; i < $Rows.children.length; i++) {\n render$Row($Rows.children[i], rowInfos[i])\n }\n const fragment = document.createDocumentFragment()\n for (let i = $Rows.children.length; i < rowInfos.length; i++) {\n const $Row = create$Row()\n render$Row($Row, rowInfos[i])\n fragment.append($Row)\n }\n $Rows.append(fragment)\n}\n\nconst render$RowsEqual = ($Rows, rowInfos) => {\n for (let i = 0; i < rowInfos.length; i++) {\n render$Row($Rows.children[i], rowInfos[i])\n }\n}\n\nconst render$RowsMore = ($Rows, rowInfos) => {\n for (let i = 0; i < rowInfos.length; i++) {\n render$Row($Rows.children[i], rowInfos[i])\n }\n const diff = $Rows.children.length - rowInfos.length\n for (let i = 0; i < diff; i++) {\n $Rows.lastChild.remove()\n }\n}\n\nconst render$Rows = ($Rows, rowInfos) => {\n if ($Rows.children.length < rowInfos.length) {\n render$RowsLess($Rows, rowInfos)\n } else if ($Rows.children.length === rowInfos.length) {\n render$RowsEqual($Rows, rowInfos)\n } else {\n render$RowsMore($Rows, rowInfos)\n }\n}\n\nexport const handleError = (state, message) => {\n Assert.object(state)\n Assert.string(message)\n const { $Viewlet } = state\n $Viewlet.textContent = message\n}\n\nexport const updateDirents = (state, dirents) => {\n Assert.object(state)\n Assert.array(dirents)\n const { $Viewlet } = state\n render$Rows($Viewlet, dirents)\n}\n\nexport const setFocusedIndex = (state, oldIndex, newIndex, focused) => {\n Assert.object(state)\n Assert.number(oldIndex)\n Assert.number(newIndex)\n const { $Viewlet } = state\n switch (oldIndex) {\n case -2:\n break\n case -1:\n $Viewlet.classList.remove(focusClassName)\n break\n default:\n const $Dirent = $Viewlet.children[oldIndex]\n if ($Dirent) {\n $Dirent.classList.remove(focusClassName)\n $Dirent.removeAttribute('id')\n }\n break\n }\n switch (newIndex) {\n case -2:\n $Viewlet.classList.remove(focusClassName)\n $Viewlet.removeAttribute(DomAttributeType.AriaActiveDescendant)\n break\n case -1:\n if (focused) {\n $Viewlet.classList.add(focusClassName)\n $Viewlet.removeAttribute(DomAttributeType.AriaActiveDescendant)\n }\n break\n default:\n if (newIndex >= 0) {\n const $Dirent = $Viewlet.children[newIndex]\n if (!$Dirent) {\n break\n }\n $Dirent.id = activeId\n $Viewlet.setAttribute(DomAttributeType.AriaActiveDescendant, activeId)\n if (focused) {\n $Dirent.classList.add(focusClassName)\n }\n }\n break\n }\n if (focused) {\n $Viewlet.focus()\n Focus.setFocus('Explorer')\n }\n}\n\nexport const dispose = (state) => {}\n\nexport const hoverIndex = (state, oldIndex, newIndex) => {\n Assert.object(state)\n Assert.number(oldIndex)\n Assert.number(newIndex)\n if (oldIndex !== -1) {\n const $OldItem = state.$Viewlet.children[oldIndex]\n $OldItem.classList.remove('Hover')\n }\n const $NewItem = state.$Viewlet.children[newIndex]\n $NewItem.classList.add('Hover')\n}\n\nexport const replaceWithEditBox = (state, index, value) => {\n const { $Viewlet } = state\n const $InputBox = InputBox.create()\n $InputBox.value = value\n $InputBox.oninput = ViewletExplorerEvents.handleEditingInput\n const $Dirent = $Viewlet.children[index]\n if ($Dirent) {\n const $Label = $Dirent.children[1]\n $Label.replaceWith($InputBox)\n } else {\n const $Dirent = document.createElement('div')\n $Dirent.className = 'ExplorerItem'\n $Dirent.append($InputBox)\n $Viewlet.append($Dirent)\n }\n $InputBox.select()\n $InputBox.setSelectionRange(0, value.length)\n $InputBox.focus()\n Focus.setFocus('ExplorerEditBox')\n}\n\nexport const insertEditBox = (state, index, value) => {\n const { $Viewlet } = state\n const $InputBox = InputBox.create()\n $InputBox.value = value\n $InputBox.oninput = ViewletExplorerEvents.handleEditingInput\n if (index === -1) {\n $Viewlet.append($InputBox)\n } else {\n const $Dirent = $Viewlet.children[index]\n // TODO this should never happen\n if (!$Dirent) {\n throw new Error(`dirent at index ${index} should be defined`)\n }\n $Dirent.before($InputBox)\n }\n $InputBox.select()\n $InputBox.setSelectionRange(0, value.length)\n $InputBox.focus()\n Focus.setFocus('ExplorerEditBox')\n}\n\nexport const hideEditBox = (state, index) => {\n Assert.object(state)\n Assert.number(index)\n const { $Viewlet } = state\n if (index === -1) {\n const $InputBox = $Viewlet.lastChild\n $InputBox.remove()\n return $InputBox.value\n }\n const $InputBox = $Viewlet.children[index]\n $InputBox.remove()\n}\n\nexport const replaceEditBox = (state, index, dirent) => {\n Assert.object(state)\n Assert.number(index)\n const { $Viewlet } = state\n const $OldRow = $Viewlet.children[index]\n const $Dirent = create$Row()\n $Dirent.id = activeId\n render$Row($Dirent, dirent)\n $OldRow.replaceWith($Dirent)\n $Viewlet.focus()\n Focus.setFocus('Explorer')\n}\n\nexport const setDropTargets = (state, oldDropTargets, newDropTargets) => {\n const { $Viewlet } = state\n for (const oldIndex of oldDropTargets) {\n if (oldIndex === -1) {\n $Viewlet.classList.remove('DropTarget')\n } else {\n $Viewlet.children[oldIndex].classList.remove('DropTarget')\n }\n }\n for (const newIndex of newDropTargets) {\n if (newIndex === -1) {\n $Viewlet.classList.add('DropTarget')\n } else {\n $Viewlet.children[newIndex].classList.add('DropTarget')\n }\n }\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleReadmeContextMenu = (x, y, props) => {\n RendererWorker.send('ExtensionDetail.handleReadmeContextMenu', x, y, props)\n}\n\nexport const handleIconError = () => {\n RendererWorker.send('ExtensionDetail.handleIconError')\n}\n", "import * as Event from '../Event/Event.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as ViewletExtensionDetailFunctions from './ViewletExtensionDetailFunctions.js'\n\nexport const handleIconError = (event) => {\n ViewletExtensionDetailFunctions.handleIconError()\n}\n\nconst isLink = ($Element) => {\n return $Element.nodeName === 'A'\n}\n\nconst isImage = ($Element) => {\n return $Element.nodeName === 'IMG'\n}\n\nexport const handleReadmeContextMenu = (event) => {\n Event.preventDefault(event)\n const { clientX, clientY, target } = event\n const props = Object.create(null)\n if (isLink(target)) {\n props.isLink = true\n props.url = target.href\n } else if (isImage(target)) {\n props.isImage = true\n props.url = target.src\n }\n ViewletExtensionDetailFunctions.handleReadmeContextMenu(clientX, clientY, props)\n}\n", "import * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as ViewletExtensionDetailEvents from './ViewletExtensionDetailEvents.js'\n\nexport const create = () => {\n const $NameText = document.createTextNode('')\n\n const $ReadmeHtml = document.createElement('div')\n $ReadmeHtml.className = 'Markdown'\n $ReadmeHtml.role = AriaRoles.Document\n\n const $ExtensionDetailIcon = document.createElement('img')\n $ExtensionDetailIcon.className = 'ExtensionDetailIcon'\n $ExtensionDetailIcon.alt = ''\n $ExtensionDetailIcon.draggable = false\n $ExtensionDetailIcon.width = 150\n $ExtensionDetailIcon.height = 150\n\n const $Name = document.createElement('h3')\n $Name.className = 'ExtensionDetailName'\n $Name.append($NameText)\n\n const $Description = document.createElement('div')\n $Description.className = 'ExtensionDetailDescription'\n\n const $ExtensionDetailHeaderDetails = document.createElement('div')\n $ExtensionDetailHeaderDetails.className = 'ExtensionDetailHeaderDetails'\n $ExtensionDetailHeaderDetails.append($Name, $Description)\n\n const $ExtensionDetailHeader = document.createElement('div')\n $ExtensionDetailHeader.className = 'ExtensionDetailHeader'\n $ExtensionDetailHeader.append($ExtensionDetailIcon, $ExtensionDetailHeaderDetails)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet ExtensionDetail'\n $Viewlet.append($ExtensionDetailHeader, $ReadmeHtml)\n return {\n $Viewlet,\n $Name,\n $NameText,\n $ReadmeHtml,\n $ExtensionDetailIcon,\n $Description,\n }\n}\n\nexport const attachEvents = (state) => {\n const { $ReadmeHtml, $ExtensionDetailIcon } = state\n $ReadmeHtml.oncontextmenu = ViewletExtensionDetailEvents.handleReadmeContextMenu\n $ExtensionDetailIcon.onerror = ViewletExtensionDetailEvents.handleIconError\n}\n\nexport const setName = (state, name) => {\n const { $NameText } = state\n $NameText.nodeValue = name\n}\n\nexport const setReadmeHtml = (state, sanitizedHtml) => {\n const { $ReadmeHtml } = state\n $ReadmeHtml.innerHTML = sanitizedHtml\n}\n\nexport const setIconSrc = (state, src) => {\n const { $ExtensionDetailIcon } = state\n // TODO handle error and load fallback icon\n $ExtensionDetailIcon.src = src\n}\n\nexport const setDescription = (state, description) => {\n const { $Description } = state\n $Description.textContent = description\n}\n\nexport * from '../ViewletSizable/ViewletSizable.js'\n", "export const Polite = 'polite'\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\n/**\n * @param {number} y\n */\nexport const handleScrollBarClick = (y) => {\n RendererWorker.send('Extensions.handleScrollBarClick', y)\n}\n\n/**\n * @param {number} index\n */\nexport const handleClick = (index) => {\n RendererWorker.send('Extensions.handleClick', index)\n}\n\n/**\n *\n * @param {number} deltaY\n */\nexport const handleWheel = (deltaMode, deltaY) => {\n RendererWorker.send('Extensions.handleWheel', deltaMode, deltaY)\n}\n\n/**\n * @param {string} value\n */\nexport const handleInput = (value) => {\n RendererWorker.send('Extensions.handleInput', value)\n}\n\n/**\n *\n * @param {number} timeStamp\n * @param {*} changedTouchesArray\n */\nexport const handleTouchMove = (timeStamp, changedTouchesArray) => {\n RendererWorker.send('Extensions.handleTouchMove', timeStamp, changedTouchesArray)\n}\n\n/**\n *\n * @param {number} timeStamp\n * @param {*} changedTouchesArray\n */\nexport const handleTouchStart = (timeStamp, changedTouchesArray) => {\n RendererWorker.send('Extensions.handleTouchStart', timeStamp, changedTouchesArray)\n}\n\n/**\n *\n */\nexport const handleTouchEnd = (changedTouchesArray) => {\n RendererWorker.send('Extensions.handleTouchEnd', changedTouchesArray)\n}\n\n/**\n *\n */\nexport const handleContextMenu = (button, clientX, clientY) => {\n RendererWorker.send('Extensions.handleContextMenu', button, clientX, clientY)\n}\n\nexport const handleScrollBarThumbPointerMove = (y) => {\n RendererWorker.send('Extensions.handleScrollBarMove', y)\n}\n", "import * as DomEventOptions from '../DomEventOptions/DomEventOptions.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as Event from '../Event/Event.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as Icon from '../Icon/Icon.js'\nimport * as MouseEventType from '../MouseEventType/MouseEventType.js'\nimport * as ViewletExtensionsFunctions from './ViewletExtensionsFunctions.js'\n\nexport const handleScrollBarThumbPointerMove = (event) => {\n const { clientY } = event\n ViewletExtensionsFunctions.handleScrollBarThumbPointerMove(clientY)\n}\n\nconst handleScrollBarPointerCaptureLost = (event) => {\n const { target } = event\n target.removeEventListener(DomEventType.PointerMove, handleScrollBarThumbPointerMove)\n}\n\nexport const handleScrollBarPointerDown = (event) => {\n const { target, pointerId, clientY } = event\n target.setPointerCapture(pointerId)\n target.addEventListener(DomEventType.PointerMove, handleScrollBarThumbPointerMove, DomEventOptions.Active)\n target.addEventListener(DomEventType.LostPointerCapture, handleScrollBarPointerCaptureLost)\n ViewletExtensionsFunctions.handleScrollBarClick(clientY)\n}\n\nexport const handleFocus = (event) => {\n Focus.setFocus('Extensions')\n}\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst handlePointerDownExtension = ($Target) => {\n const index = getNodeIndex($Target)\n ViewletExtensionsFunctions.handleClick(index)\n}\n\nconst handlePointerDownExtensionDetail = ($Target) => {\n const index = getNodeIndex($Target.parentNode.parentNode)\n ViewletExtensionsFunctions.handleClick(index)\n}\n\nconst handlePointerDownExtensionAuthorName = ($Target) => {\n const index = getNodeIndex($Target.parentNode.parentNode.parentNode)\n ViewletExtensionsFunctions.handleClick(index)\n}\n\nexport const handlePointerDown = (event) => {\n const { target, button } = event\n if (button !== MouseEventType.LeftClick) {\n return\n }\n switch (target.className) {\n case 'ExtensionListItem':\n handlePointerDownExtension(target)\n break\n case 'ExtensionListItemName':\n case 'ExtensionListItemDescription':\n case 'ExtensionListItemFooter':\n handlePointerDownExtensionDetail(target)\n break\n case 'ExtensionListItemAuthorName':\n handlePointerDownExtensionAuthorName(target)\n break\n default:\n break\n }\n}\n\nexport const handleContextMenu = (event) => {\n Event.preventDefault(event)\n const { button, clientX, clientY } = event\n ViewletExtensionsFunctions.handleContextMenu(button, clientX, clientY)\n}\n\nexport const handleWheel = (event) => {\n const { deltaMode, deltaY } = event\n ViewletExtensionsFunctions.handleWheel(deltaMode, deltaY)\n}\n\nexport const handleInput = (event) => {\n const $Target = event.target\n const value = $Target.value\n ViewletExtensionsFunctions.handleInput(value)\n // TODO\n // TODO use beforeinput event to set value and extension list items at the same time\n // state.$Viewlet.ariaBusy = 'true'\n}\n\nexport const handleIconError = (event) => {\n const $Target = event.target\n if ($Target.src.endsWith(Icon.ExtensionDefaultIcon)) {\n return\n }\n $Target.src = Icon.ExtensionDefaultIcon\n}\n\nexport const handleScroll = (event) => {}\n\n/**\n *\n * @param {TouchList} touchList\n */\nconst toArray = (touchList) => {\n const touchArray = []\n // @ts-ignore\n for (const item of touchList) {\n touchArray.push({\n clientX: item.clientX,\n clientY: item.clientY,\n identifier: item.identifier,\n })\n }\n return touchArray\n}\n\n/**\n * @param {TouchEvent} event\n */\nexport const handleTouchMove = (event) => {\n const { changedTouches, timeStamp } = event\n const changedTouchesArray = toArray(changedTouches)\n ViewletExtensionsFunctions.handleTouchMove(timeStamp, changedTouchesArray)\n}\n\n/**\n * @param {TouchEvent} event\n */\nexport const handleTouchStart = (event) => {\n const { changedTouches, timeStamp } = event\n const changedTouchesArray = toArray(changedTouches)\n ViewletExtensionsFunctions.handleTouchStart(timeStamp, changedTouchesArray)\n}\n\n/**\n * @param {TouchEvent} event\n */\nexport const handleTouchEnd = (event) => {\n const { changedTouches } = event\n const changedTouchesArray = toArray(changedTouches)\n ViewletExtensionsFunctions.handleTouchEnd(changedTouchesArray)\n}\n", "// based on https://github.com/microsoft/vscode/blob/main/src/vs/workbench/contrib/extensions/browser/extensionsList.ts (License MIT)\n\nimport * as FindIndex from '../../shared/findIndex.js'\nimport * as AriaBoolean from '../AriaBoolean/AriaBoolean.js'\nimport * as AriaLiveType from '../AriaLiveType/AriaLiveType.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as DomAttributeType from '../DomAttributeType/DomAttributeType.js'\nimport * as DomEventOptions from '../DomEventOptions/DomEventOptions.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\nimport * as ViewletExtensionsEvents from './ViewletExtensionsEvents.js'\nimport * as AriaRoleDescriptionType from '../AriaRoleDescriptionType/AriaRoleDescriptionType.js'\n\nconst activeId = 'ExtensionActive'\n\n// TODO vscode uninstall behaviour is better -> more subtle uninstall -> no cta for uninstalling\n\nconst create$ExtensionSuggestions = () => {\n const $ExtensionSuggestions = document.createElement('div')\n $ExtensionSuggestions.className = 'ExtensionSuggestions'\n return $ExtensionSuggestions\n}\n\nconst create$ExtensionSuggestion = (item) => {}\n\nconst findIndex = ($Target) => {\n if ($Target.className.includes('ExtensionListItem')) {\n return FindIndex.findIndex($Target.parentNode, $Target)\n }\n if ($Target.classList.contains('Viewlet')) {\n return -1\n }\n return findIndex($Target.parentNode)\n // return -2\n}\n\nexport const create = () => {\n const $InputBox = InputBox.create()\n $InputBox.type = 'search'\n $InputBox.placeholder = 'Search Extensions in Marketplace'\n\n const $ExtensionHeader = document.createElement('div')\n $ExtensionHeader.className = 'ExtensionHeader'\n $ExtensionHeader.append($InputBox)\n\n // TODO handle error\n const $ListItems = document.createElement('div')\n $ListItems.className = 'ListItems'\n $ListItems.tabIndex = 0\n $ListItems.ariaLabel = 'Extensions'\n $ListItems.role = AriaRoles.List\n\n const $ScrollBarThumb = document.createElement('div')\n $ScrollBarThumb.className = 'ScrollBarThumb'\n\n const $ScrollBar = document.createElement('div')\n $ScrollBar.className = 'ScrollBarSmall'\n $ScrollBar.append($ScrollBarThumb)\n\n const $List = document.createElement('div')\n $List.className = 'Viewlet List'\n $List.append($ListItems, $ScrollBar)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet Extensions'\n $Viewlet.ariaLive = AriaLiveType.Polite\n $Viewlet.ariaBusy = AriaBoolean.True\n $Viewlet.role = AriaRoles.None\n $Viewlet.append($ExtensionHeader, $List)\n\n return {\n $Viewlet,\n $List,\n $ListItems,\n $InputBox,\n $ExtensionSuggestions: undefined,\n $ScrollBarThumb,\n $ScrollBar,\n $Message: undefined,\n }\n}\n\nexport const attachEvents = (state) => {\n const { $InputBox, $ListItems, $ScrollBar } = state\n $InputBox.oninput = ViewletExtensionsEvents.handleInput\n\n $ListItems.oncontextmenu = ViewletExtensionsEvents.handleContextMenu\n if (Platform.isMobile) {\n $ListItems.onclick = ViewletExtensionsEvents.handlePointerDown\n } else {\n $ListItems.onpointerdown = ViewletExtensionsEvents.handlePointerDown\n }\n $ListItems.onfocus = ViewletExtensionsEvents.handleFocus\n $ListItems.onscroll = ViewletExtensionsEvents.handleScroll\n $ListItems.addEventListener(DomEventType.TouchStart, ViewletExtensionsEvents.handleTouchStart, DomEventOptions.Passive)\n $ListItems.addEventListener(DomEventType.TouchMove, ViewletExtensionsEvents.handleTouchMove, DomEventOptions.Passive)\n $ListItems.addEventListener(DomEventType.TouchEnd, ViewletExtensionsEvents.handleTouchEnd, DomEventOptions.Passive)\n $ListItems.addEventListener(DomEventType.Wheel, ViewletExtensionsEvents.handleWheel, DomEventOptions.Passive)\n\n $ScrollBar.onpointerdown = ViewletExtensionsEvents.handleScrollBarPointerDown\n}\n\n// TODO possibly use aria active descendant instead\nexport const setFocusedIndex = (state, oldFocusedIndex, newFocusedIndex, focused) => {\n Assert.object(state)\n Assert.number(oldFocusedIndex)\n Assert.number(newFocusedIndex)\n const { $ListItems } = state\n const { length } = $ListItems.children\n if (oldFocusedIndex === -1) {\n $ListItems.classList.remove('FocusOutline')\n } else if (oldFocusedIndex >= 0 && oldFocusedIndex < length) {\n $ListItems.children[oldFocusedIndex].removeAttribute('id')\n }\n if (newFocusedIndex === -1) {\n if (focused) {\n $ListItems.removeAttribute(DomAttributeType.AriaActiveDescendant)\n $ListItems.classList.add('FocusOutline')\n }\n } else if (newFocusedIndex >= 0 && newFocusedIndex < length) {\n $ListItems.children[newFocusedIndex].id = activeId\n $ListItems.setAttribute(DomAttributeType.AriaActiveDescendant, activeId)\n }\n if (focused) {\n $ListItems.focus()\n Focus.setFocus('Extensions')\n }\n}\n\nexport const focus = (state) => {\n Assert.object(state)\n state.$InputBox.focus()\n}\n\nexport const setExtensionState = (state, id, extensionState) => {\n // const index = state.extensions.findIndex((extension) => extension.id === id)\n // if (index === -1) {\n // return\n // }\n // state.extensions[index].state = extensionState\n // render(state)\n}\n\nexport const setMessage = (state, message) => {\n Assert.object(state)\n Assert.string(message)\n const { $List, $ListItems, $ScrollBar } = state\n if (!message) {\n $List.replaceChildren($ListItems, $ScrollBar)\n state.$Message = undefined\n return\n }\n const $Message = document.createElement('div')\n $Message.className = 'ViewletExtensionMessage'\n $Message.textContent = message\n $List.replaceChildren($Message)\n state.$Message = $Message\n}\n\nconst render$Extension = ($Extension, extension) => {\n const $ExtensionDetailName = $Extension.children[1].children[0]\n const $ExtensionDetailDescription = $Extension.children[1].children[1]\n const $ExtensionAuthorName = $Extension.children[1].children[2].children[0]\n const $ExtensionIcon = $Extension.children[0]\n\n $Extension.ariaPosInSet = extension.posInSet\n $Extension.ariaSetSize = extension.setSize\n $Extension.dataset.state = extension.state\n $Extension.dataset.id = extension.id\n SetBounds.setTop($Extension, extension.top)\n\n $ExtensionDetailName.firstChild.nodeValue = extension.name\n $ExtensionDetailDescription.firstChild.nodeValue = extension.description\n $ExtensionAuthorName.firstChild.nodeValue = extension.publisher\n $ExtensionIcon.src = extension.icon\n}\n\n// TODO test that rendering and recycling text nodes works\nconst create$Extension = () => {\n const $ExtensionDetailName = document.createElement('div')\n $ExtensionDetailName.className = 'ExtensionListItemName'\n $ExtensionDetailName.append(document.createTextNode(''))\n const $ExtensionDetailDescription = document.createElement('div')\n $ExtensionDetailDescription.className = 'ExtensionListItemDescription'\n $ExtensionDetailDescription.append(document.createTextNode(''))\n const $ExtensionActions = document.createElement('div')\n $ExtensionActions.className = 'ExtensionActions'\n const $ExtensionActionInstall = document.createElement('div')\n $ExtensionActionInstall.className = 'ExtensionActionInstall'\n $ExtensionActionInstall.textContent = 'Install'\n const $ExtensionActionManage = document.createElement('button')\n $ExtensionActionManage.className = 'ExtensionListItemActionManage'\n $ExtensionActionManage.title = 'Manage'\n $ExtensionActionManage.ariaHasPopup = 'menu' // TODO also set this for global settings icon in activity bar\n const $ExtensionAuthorName = document.createElement('div')\n $ExtensionAuthorName.className = 'ExtensionListItemAuthorName'\n $ExtensionAuthorName.append(document.createTextNode(''))\n\n const icon = document.createElement('img')\n icon.width = 42\n icon.height = 42\n icon.className = 'ExtensionListItemIcon'\n icon.onerror = ViewletExtensionsEvents.handleIconError\n const buttonManage = document.createElement('button')\n buttonManage.className = 'ExtensionManage'\n // switch (extension.state) {\n // case 'uninstalled':\n // $ExtensionActionManage.remove()\n // $ExtensionActions.append($ExtensionActionInstall)\n // break\n // case 'uninstalling':\n // buttonManage.textContent = 'uninstalling'\n // break\n // case 'installing':\n // buttonManage.textContent = 'installing'\n // break\n // case 'installed':\n // $ExtensionActions.append($ExtensionActionManage)\n // break\n // case 'disabled':\n // $ExtensionActions.append($ExtensionActionManage)\n // break\n // default:\n // break\n // }\n const $ExtensionFooter = document.createElement('div')\n $ExtensionFooter.className = 'ExtensionListItemFooter'\n $ExtensionFooter.append($ExtensionAuthorName, $ExtensionActions)\n const $ExtensionDetail = document.createElement('div')\n $ExtensionDetail.className = 'ExtensionListItemDetail'\n $ExtensionDetail.append($ExtensionDetailName, $ExtensionDetailDescription, $ExtensionFooter)\n const $ExtensionListItem = document.createElement('div')\n $ExtensionListItem.role = AriaRoles.Article\n $ExtensionListItem.ariaRoleDescription = AriaRoleDescriptionType.Extension\n $ExtensionListItem.className = 'ExtensionListItem'\n $ExtensionListItem.role = AriaRoles.ListItem\n $ExtensionListItem.append(icon, $ExtensionDetail)\n return $ExtensionListItem\n}\n\nconst render$ExtensionsLess = ($ExtensionList, extensions) => {\n for (let i = 0; i < $ExtensionList.children.length; i++) {\n render$Extension($ExtensionList.children[i], extensions[i])\n }\n const fragment = document.createDocumentFragment()\n for (let i = $ExtensionList.children.length; i < extensions.length; i++) {\n const $Extension = create$Extension()\n render$Extension($Extension, extensions[i])\n fragment.append($Extension)\n }\n $ExtensionList.append(fragment)\n}\n\nconst render$ExtensionsEqual = ($ExtensionList, extensions) => {\n for (let i = 0; i < extensions.length; i++) {\n render$Extension($ExtensionList.children[i], extensions[i])\n }\n}\n\nconst render$ExtensionsMore = ($ExtensionList, extensions) => {\n for (let i = 0; i < extensions.length; i++) {\n render$Extension($ExtensionList.children[i], extensions[i])\n }\n const diff = $ExtensionList.children.length - extensions.length\n for (let i = 0; i < diff; i++) {\n $ExtensionList.lastChild.remove()\n }\n}\n\nconst render$Extensions = ($ExtensionList, extensions) => {\n if ($ExtensionList.children.length < extensions.length) {\n render$ExtensionsLess($ExtensionList, extensions)\n } else if ($ExtensionList.children.length === extensions.length) {\n render$ExtensionsEqual($ExtensionList, extensions)\n } else {\n render$ExtensionsMore($ExtensionList, extensions)\n }\n}\n\n// TODO a more efficient approach would be\nexport const setExtensions = (state, extensions) => {\n Assert.object(state)\n Assert.array(extensions)\n const { $Viewlet, $ListItems } = state\n $Viewlet.removeAttribute(DomAttributeType.AriaBusy)\n render$Extensions($ListItems, extensions)\n}\n\nexport const dispose = (state) => {}\n\nexport const openSuggest = (state) => {\n // TODO maybe cache getBoundingClientRect (though it is not a bottleneck right now)\n // TODO getBoundingClientRect should not be needed, all positions should be known already in renderer worker\n const rect = state.$InputBox.getBoundingClientRect()\n const x = rect.left\n const y = rect.top\n // const x = state.$InputBox.offsetLeft\n // const y = state.$InputBox.offsetTop\n state.$ExtensionSuggestions ||= create$ExtensionSuggestions()\n SetBounds.setBounds(state.$ExtensionSuggestions, x, y, 100, 100)\n state.$ExtensionSuggestions.style.position = 'fixed'\n state.$ExtensionSuggestions.style.background = 'lime'\n // TODO check if already mounted\n // TODO don't append to body, have separate container for widgets (https://news.ycombinator.com/item?id=28230977)\n document.body.append(state.$ExtensionSuggestions)\n}\n\nexport const closeSuggest = (state) => {\n state.$ExtensionSuggestions.remove()\n}\n\nexport const handleError = (state, message) => {\n Assert.object(state)\n Assert.string(message)\n const { $ListItems } = state\n $ListItems.textContent = message\n}\n\nexport const setSearchValue = (state, oldValue, newValue) => {\n const { $InputBox } = state\n $InputBox.value = newValue\n}\n\nexport * from '../ViewletList/ViewletList.js'\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleInput = (value) => {\n RendererWorker.send('FindWidget.handleInput', value)\n}\n\nexport const close = () => {\n RendererWorker.send('Viewlet.closeWidget', 'FindWidget')\n}\n\nexport const focusPrevious = () => {\n RendererWorker.send('FindWidget.focusPrevious')\n}\n\nexport const focusNext = () => {\n RendererWorker.send('FindWidget.focusNext')\n}\n", "import * as Event from '../Event/Event.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as ViewletFindWidgetFunctions from './ViewletFindWidgetFunctions.js'\n\nexport const handleInput = (event) => {\n const { target } = event\n const { value } = target\n ViewletFindWidgetFunctions.handleInput(value)\n}\n\nconst handleClickClose = (event) => {\n Event.preventDefault(event)\n ViewletFindWidgetFunctions.close()\n}\n\nconst handleClickPreviousMatch = (event) => {\n event.preventDefault()\n ViewletFindWidgetFunctions.focusPrevious()\n}\n\nconst handleClickNextMatch = (event) => {\n event.preventDefault()\n ViewletFindWidgetFunctions.focusNext()\n}\n\nexport const handleClick = (event) => {\n const { target } = event\n const { title } = target\n switch (title) {\n case 'Close':\n handleClickClose(event)\n break\n case 'Previous Match':\n handleClickPreviousMatch(event)\n break\n case 'Next Match':\n handleClickNextMatch(event)\n break\n default:\n break\n }\n}\n\nexport const handleInputBlur = (event) => {\n Focus.setFocus('')\n}\n\nexport const handleFocus = (event) => {\n Focus.setFocus('FindWidget')\n}\n", "import * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as Icon from '../Icon/Icon.js'\nimport * as IconButton from '../IconButton/IconButton.js'\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as ViewletFindWidgetEvents from './ViewletFindWidgetEvents.js'\n\n/**\n * @enum {string}\n */\nconst UiStrings = {\n Close: 'Close',\n PreviousMatch: 'Previous Match',\n NextMatch: 'Next Match',\n Find: 'Find',\n}\n\nexport const create = () => {\n // TODO recycle nodes\n const $InputBox = InputBox.create()\n $InputBox.ariaLabel = UiStrings.Find\n\n const $MatchCountText = document.createTextNode('')\n const $MatchCount = document.createElement('div')\n $MatchCount.className = 'FindWidgetMatchCount'\n $MatchCount.append($MatchCountText)\n\n const $ButtonFocusNext = IconButton.create$Button(UiStrings.NextMatch, Icon.NextMatch)\n const $ButtonFocusPrevious = IconButton.create$Button(UiStrings.PreviousMatch, Icon.PreviousMatch)\n const $ButtonClose = IconButton.create$Button(UiStrings.Close, Icon.Close)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet FindWidget'\n $Viewlet.role = AriaRoles.Group\n $Viewlet.append($InputBox, $MatchCount, $ButtonFocusPrevious, $ButtonFocusNext, $ButtonClose)\n return {\n $Viewlet,\n $InputBox,\n $MatchCount,\n $MatchCountText,\n $ButtonClose,\n $ButtonFocusNext,\n $ButtonFocusPrevious,\n }\n}\n\nexport const attachEvents = (state) => {\n const { $InputBox, $Viewlet } = state\n $InputBox.oninput = ViewletFindWidgetEvents.handleInput\n $InputBox.onblur = ViewletFindWidgetEvents.handleInputBlur\n $InputBox.onfocus = ViewletFindWidgetEvents.handleFocus\n\n $Viewlet.onclick = ViewletFindWidgetEvents.handleClick\n}\n\nexport const focus = (state) => {\n const { $InputBox } = state\n $InputBox.focus()\n}\n\nexport const setValue = (state, value) => {\n const { $InputBox } = state\n $InputBox.value = value\n}\n\nexport const setMatchCountText = (state, value) => {\n const { $MatchCountText } = state\n $MatchCountText.nodeValue = value\n}\n\nexport const setButtonsEnabled = (state, enabled) => {\n const { $ButtonFocusNext, $ButtonFocusPrevious } = state\n $ButtonFocusNext.disabled = !enabled\n $ButtonFocusPrevious.disabled = !enabled\n}\n\nexport const dispose = () => {}\n", "import * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as MouseEventType from '../MouseEventType/MouseEventType.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as DomAttributeType from '../DomAttributeType/DomAttributeType.js'\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst handleLocationsMouseDown = (event) => {\n if (event.button !== MouseEventType.LeftClick) {\n return\n }\n const $Target = event.target\n if ($Target.classList.contains('TreeItem')) {\n const index = getNodeIndex($Target)\n RendererWorker.send(/* ViewletLocations.selectIndex */ 'Locations.selectIndex', /* index */ index)\n } else if ($Target.classList.contains('LocationList')) {\n RendererWorker.send(/* ViewletLocations.focusIndex */ 'Locations.focusIndex', /* index */ -1)\n }\n}\n\nexport const create = () => {\n const $Message = document.createElement('div')\n $Message.className = 'LocationsMessage'\n $Message.id = 'LocationsMessage'\n $Message.role = AriaRoles.Status\n const $Locations = document.createElement('div')\n $Locations.className = 'LocationList'\n $Locations.role = AriaRoles.Tree\n $Locations.ariaLabel = 'Locations'\n $Locations.tabIndex = 0\n $Locations.onmousedown = handleLocationsMouseDown\n $Locations.setAttribute(DomAttributeType.AriaDescribedBy, 'LocationsMessage')\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet Locations'\n $Viewlet.append($Message, $Locations)\n return {\n $Viewlet,\n $Message,\n $Locations,\n }\n}\n\nconst create$Location = () => {\n // TODO reuse logic from tree view\n const $Location = document.createElement('div')\n $Location.className = 'TreeItem'\n $Location.role = AriaRoles.TreeItem\n return $Location\n}\n\nconst render$Location = ($Location, location) => {\n switch (location.type) {\n case 'leaf':\n $Location.className = 'TreeItem'\n $Location.textContent = location.lineText || '(empty line)'\n $Location.ariaExpanded = undefined\n $Location.id = `Reference-${location.index}`\n break\n case 'collapsed':\n $Location.className = `TreeItem Icon${location.icon}`\n $Location.textContent = location.name\n $Location.ariaExpanded = false\n $Location.id = `Reference-${location.index}`\n case 'expanded':\n $Location.className = `TreeItem Icon${location.icon}`\n $Location.ariaExpanded = true\n $Location.textContent = location.name\n $Location.id = `Reference-${location.index}`\n default:\n break\n }\n\n // TODO\n}\n\nconst render$Locations = ($Locations, locations) => {\n $Locations.textContent = ''\n const fragment = document.createDocumentFragment()\n for (const location of locations) {\n const $Location = create$Location()\n render$Location($Location, location)\n fragment.append($Location)\n }\n $Locations.append(fragment)\n}\n\nexport const setLocations = (state, locations) => {\n const { $Locations } = state\n render$Locations($Locations, locations)\n}\n\nexport const setMessage = (state, message) => {\n const { $Message } = state\n $Message.textContent = message\n}\n\nexport const setFocusedIndex = (state, oldFocusedIndex, newFocusedIndex) => {\n const { $Locations } = state\n if (oldFocusedIndex === -1) {\n $Locations.classList.remove('FocusOutline')\n } else {\n $Locations.children[oldFocusedIndex].classList.remove('Focused')\n }\n if (newFocusedIndex === -1) {\n $Locations.classList.add('FocusOutline')\n } else {\n $Locations.setAttribute(DomAttributeType.AriaActiveDescendant, `Reference-${newFocusedIndex}`)\n $Locations.children[newFocusedIndex].classList.add('Focused')\n }\n}\n\nexport const handleError = (state, message) => {\n const { $Message } = state\n $Message.textContent = message\n}\n\nexport const focus = (state) => {\n const { $Locations } = state\n $Locations.classList.add('FocusOutline')\n $Locations.focus()\n Focus.setFocus('locationList')\n}\n", "export * from '../ViewletLocations/ViewletLocations.js'\n", "export const Button = 'button'\nexport const Col = 'col'\nexport const ColGroup = 'colgroup'\nexport const Div = 'div'\nexport const H1 = 'h1'\nexport const Input = 'input'\nexport const Kbd = 'kbd'\nexport const Span = 'span'\nexport const Table = 'table'\nexport const TBody = 'tbody'\nexport const Td = 'td'\nexport const Th = 'th'\nexport const THead = 'thead'\nexport const Tr = 'tr'\n", "export const Button = 1\nexport const Col = 2\nexport const ColGroup = 3\nexport const Div = 4\nexport const H1 = 5\nexport const Input = 6\nexport const Kbd = 7\nexport const Span = 8\nexport const Table = 9\nexport const TBody = 10\nexport const Td = 11\nexport const Text = 12\nexport const Th = 13\nexport const THead = 14\nexport const Tr = 15\n", "import * as ElementTag from '../ElementTags/ElementTags.js'\nimport * as VirtualDomElements from '../VirtualDomElements/VirtualDomElements.js'\n\nexport const getElementTag = (type) => {\n switch (type) {\n case VirtualDomElements.H1:\n return ElementTag.H1\n case VirtualDomElements.Div:\n return ElementTag.Div\n case VirtualDomElements.Kbd:\n return ElementTag.Kbd\n case VirtualDomElements.Table:\n return ElementTag.Table\n case VirtualDomElements.TBody:\n return ElementTag.TBody\n case VirtualDomElements.Th:\n return ElementTag.Th\n case VirtualDomElements.Td:\n return ElementTag.Td\n case VirtualDomElements.THead:\n return ElementTag.THead\n case VirtualDomElements.Tr:\n return ElementTag.Tr\n case VirtualDomElements.Input:\n return ElementTag.Input\n case VirtualDomElements.ColGroup:\n return ElementTag.ColGroup\n case VirtualDomElements.Col:\n return ElementTag.Col\n case VirtualDomElements.Button:\n return ElementTag.Button\n case VirtualDomElements.Span:\n return ElementTag.Span\n default:\n throw new Error(`element tag not found ${type}`)\n }\n}\n", "export const setProp = ($Element, key, value) => {\n switch (key) {\n case 'maskImage':\n $Element.style.maskImage = `url('${value}')`\n $Element.style.webkitMaskImage = `url('${value}')`\n break\n case 'paddingLeft':\n $Element.style.paddingLeft = `${value}px`\n break\n case 'width':\n $Element.style.width = `${value}px`\n break\n case 'style':\n throw new Error('style property is not supported')\n default:\n $Element[key] = value\n }\n}\n\nexport const setProps = ($Element, props) => {\n for (const key in props) {\n setProp($Element, key, props[key])\n }\n}\n", "import * as ElementTagMap from '../ElementTagMap/ElementTagMap.js'\nimport * as VirtualDomElementProps from '../VirtualDomElementProps/VirtualDomElementProps.js'\nimport * as VirtualDomElements from '../VirtualDomElements/VirtualDomElements.js'\n\nconst renderDomTextNode = (element) => {\n return document.createTextNode(element.props.text)\n}\n\nconst renderDomElement = (element) => {\n const { type, props } = element\n const tag = ElementTagMap.getElementTag(type)\n const $Element = document.createElement(tag)\n VirtualDomElementProps.setProps($Element, props)\n return $Element\n}\n\nexport const render = (element) => {\n switch (element.type) {\n case VirtualDomElements.Text:\n return renderDomTextNode(element)\n default:\n return renderDomElement(element)\n }\n}\n", "import * as VirtualDomElement from '../VirtualDomElement/VirtualDomElement.js'\nimport * as VirtualDomElements from '../VirtualDomElements/VirtualDomElements.js'\n\n/**\n *\n * @param {any[]} elements\n * @returns\n */\nexport const renderInternal = ($Parent, elements) => {\n const max = elements.length - 1\n let stack = []\n for (let i = max; i >= 0; i--) {\n const element = elements[i]\n const $Element = VirtualDomElement.render(element)\n if (element.childCount > 0) {\n // @ts-ignore\n $Element.append(...stack.slice(0, element.childCount))\n stack = stack.slice(element.childCount)\n }\n stack.unshift($Element)\n }\n $Parent.append(...stack)\n}\n\nconst isEqualNodeName = ($Node, node) => {\n if ($Node.nodeName === 'BUTTON' && node.type === VirtualDomElements.Button) {\n return true\n }\n\n return false\n}\n\nexport const renderInto = ($Parent, dom) => {\n $Parent.textContent = ''\n renderInternal($Parent, dom)\n}\n\nexport const renderIncremental = ($Parent, dom) => {\n if ($Parent.textContent === '') {\n renderInternal($Parent, dom)\n return\n }\n // TODO\n console.log({ dom })\n const oldCount = $Parent.children.length\n let $Node = $Parent\n for (let i = 0; i < dom.length; i++) {\n const node = dom[i]\n if (!$Node) {\n $Parent.append\n }\n console.log({ $Node, node })\n console.log($Node.nodeValue, node.text)\n\n if ($Node.nodeValue !== node.props.text && node.props.text) {\n $Node.nodeValue = node.props.text\n }\n if ($Node.title !== node.props.title && node.props.title) {\n $Node.title = node.props.title\n }\n }\n // const newCount = dom\n // const $Root = render(dom)\n // $Parent.replaceChildren(...$Root.children)\n}\n\n/**\n *\n * @param {any[]} elements\n * @returns\n */\nexport const render = (elements) => {\n const $Root = document.createElement('div')\n renderInternal($Root, elements)\n return $Root\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleInput = (value) => {\n RendererWorker.send('KeyBindings.handleInput', value)\n}\n\nexport const handleClick = (index) => {\n RendererWorker.send('KeyBindings.handleClick', index)\n}\n\nexport const handleWheel = (deltaY) => {\n RendererWorker.send('KeyBindings.handleWheel', deltaY)\n}\n\nexport const handleResizerMove = (x) => {\n RendererWorker.send('KeyBindings.handleResizerMove', x)\n}\n\nexport const handlResizerClick = (id, x) => {\n RendererWorker.send('KeyBindings.handleResizerClick', id, x)\n}\n", "import * as DomEventOptions from '../DomEventOptions/DomEventOptions.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as WheelEventType from '../WheelEventType/WheelEventType.js'\nimport * as ViewletKeyBindingsFunctions from './ViewletKeyBindingsFunctions.js'\n\nexport const handleInput = (event) => {\n const { target } = event\n const { value } = target\n ViewletKeyBindingsFunctions.handleInput(value)\n}\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst getTableRowIndex = ($Target) => {\n const { className } = $Target\n switch (className) {\n case 'KeyBindingsTableCell':\n return getNodeIndex($Target.parentNode)\n default:\n return -1\n }\n}\n\nexport const handleTableClick = (event) => {\n const { target } = event\n const index = getTableRowIndex(target)\n if (index === -1) {\n return\n }\n ViewletKeyBindingsFunctions.handleClick(index)\n}\n\nexport const handleWheel = (event) => {\n const { deltaMode, deltaY } = event\n switch (deltaMode) {\n case WheelEventType.DomDeltaLine:\n case WheelEventType.DomDeltaPixel:\n return ViewletKeyBindingsFunctions.handleWheel(deltaY)\n default:\n break\n }\n}\n\nexport const handleResizerPointerMove = (event) => {\n const { clientX } = event\n ViewletKeyBindingsFunctions.handleResizerMove(clientX)\n}\n\n// TODO use lostpointercapture event instead\nexport const handleResizerPointerUp = (event) => {\n const { target, pointerId } = event\n target.releasePointerCapture(pointerId)\n target.removeEventListener(DomEventType.PointerMove, handleResizerPointerMove)\n target.removeEventListener(DomEventType.PointerUp, handleResizerPointerUp)\n}\n\nexport const handleResizerPointerDown = (event) => {\n const { target, pointerId, clientX } = event\n console.log({ target })\n target.setPointerCapture(pointerId)\n target.addEventListener(DomEventType.PointerMove, handleResizerPointerMove, DomEventOptions.Active)\n target.addEventListener(DomEventType.PointerUp, handleResizerPointerUp)\n const id = target.nextSibling ? 1 : 2\n ViewletKeyBindingsFunctions.handlResizerClick(id, clientX)\n}\n\nconst getPointerDownFunction = (event) => {\n const { target } = event\n switch (target.className) {\n case 'Resizer':\n return handleResizerPointerDown\n case 'KeyBindingsTableWrapper':\n return handleTableClick\n default:\n return undefined\n }\n}\n\nexport const handlePointerDown = (event) => {\n const pointerDownFunction = getPointerDownFunction(event)\n if (!pointerDownFunction) {\n return\n }\n pointerDownFunction(event)\n}\n", "export const Url = 'url'\nexport const Text = 'text'\nexport const Search = 'search'\nexport const Number = 'number'\n", "import * as DomEventOptions from '../DomEventOptions/DomEventOptions.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as VirtualDom from '../VirtualDom/VirtualDom.js'\nimport * as ViewletkeyBindingsEvents from './ViewletKeyBindingsEvents.js'\nimport * as InputType from '../InputType/InputType.js'\n\n/**\n * @enum {string}\n */\nconst UiStrings = {\n SearchKeyBindings: 'Search Key Bindings', // TODO placeholder string should come from renderer worker\n ResultsWillUpdateAsYouType: 'Results will update as you type',\n}\n\nexport const create = () => {\n const $InputBox = InputBox.create()\n $InputBox.type = InputType.Search\n $InputBox.placeholder = UiStrings.SearchKeyBindings\n // @ts-ignore\n $InputBox.ariaDescription = UiStrings.ResultsWillUpdateAsYouType\n\n const $KeyBindingsHeader = document.createElement('div')\n $KeyBindingsHeader.className = 'KeyBindingsHeader'\n $KeyBindingsHeader.append($InputBox)\n\n const $KeyBindingsTableWrapper = document.createElement('div')\n $KeyBindingsTableWrapper.className = 'KeyBindingsTableWrapper'\n\n const $ScrollBarThumb = document.createElement('div')\n $ScrollBarThumb.className = 'ScrollBarThumb'\n\n const $ScrollBar = document.createElement('div')\n $ScrollBar.className = 'ScrollBar'\n $ScrollBar.append($ScrollBarThumb)\n\n const $Resizer1 = document.createElement('div')\n $Resizer1.className = 'Resizer'\n\n const $Resizer2 = document.createElement('div')\n $Resizer2.className = 'Resizer'\n\n $KeyBindingsTableWrapper.append($Resizer1, $Resizer2)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet KeyBindings'\n $Viewlet.append($KeyBindingsHeader, $KeyBindingsTableWrapper, $ScrollBar)\n $Viewlet.onpointerdown = ViewletkeyBindingsEvents.handlePointerDown\n $Viewlet.addEventListener(DomEventType.Input, ViewletkeyBindingsEvents.handleInput, { capture: true })\n $Viewlet.addEventListener(DomEventType.Wheel, ViewletkeyBindingsEvents.handleWheel, DomEventOptions.Passive)\n\n return {\n $Viewlet,\n $InputBox,\n $KeyBindingsHeader,\n $KeyBindingsTableWrapper,\n $ScrollBarThumb,\n $ScrollBar,\n $Resizer1,\n $Resizer2,\n }\n}\n\nexport const setTableDom = (state, dom) => {\n const { $KeyBindingsTableWrapper } = state\n const $Root = VirtualDom.render(dom)\n const $Child = $KeyBindingsTableWrapper.children[0]\n if ($Child.tagName === 'TABLE') {\n $Child.replaceWith($Root.firstChild)\n } else {\n $KeyBindingsTableWrapper.prepend($Root.firstChild)\n }\n}\n\nexport const setValue = (state, value) => {\n const { $InputBox } = state\n $InputBox.value = value\n}\n\nexport const setColumnWidths = (state, columnWidth1, columnWidth2, columnWidth3) => {\n const paddingLeft = 15\n const { $Resizer1, $Resizer2 } = state\n $Resizer1.style.left = `${paddingLeft + columnWidth1}px`\n $Resizer2.style.left = `${paddingLeft + columnWidth1 + columnWidth2}px`\n}\n\nexport * from '../ViewletScrollable/ViewletScrollable.js'\nexport * from '../ViewletSizable/ViewletSizable.js'\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleSashPointerMove = (x, y) => {\n RendererWorker.send('Layout.handleSashPointerMove', x, y)\n}\n\nexport const handleSashPointerDown = (id) => {\n RendererWorker.send('Layout.handleSashPointerDown', id)\n}\n\nexport const handleSashDoubleClick = (id) => {\n RendererWorker.send('Layout.handleSashDoubleClick', id)\n}\n\nexport const handleResize = (width, height) => {\n RendererWorker.send('Layout.handleResize', width, height)\n}\n\nexport const handleFocus = () => {\n RendererWorker.send('Layout.handleFocus')\n}\n\nexport const handleBlur = () => {\n RendererWorker.send('Layout.handleBlur')\n}\n", "import * as Context from '../Context/Context.js'\nimport * as Event from '../Event/Event.js'\nimport * as KeyBindingsState from '../KeyBindingsState/KeyBindingsState.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nconst normalizeKey = (key) => {\n if (key === ' ') {\n return 'Space'\n }\n if (key.length === 1) {\n return key.toLowerCase()\n }\n return key\n}\n\nconst getIdentifier = (event) => {\n let identifier = ''\n if (event.ctrlKey) {\n identifier += 'ctrl+'\n }\n if (event.shiftKey) {\n identifier += 'shift+'\n }\n if (event.altKey) {\n identifier += 'alt+'\n }\n const key = normalizeKey(event.key)\n identifier += key\n return identifier\n}\n\n// TODO store keybindings as json somewhere\n\n// TODO sort keybindings by `when` priority -> focus.editorCompletions: 10, focus.editor:9 etc.\n\n// TODO does it make sense to have all of these configurable?\n// could remove some context logic and have less user configuration when these are default\n// e.g. arrow down focuses next, arrow up always focuses previous item (like in aria spec)\n\n// TODO ui should only have keys -> commands get resolved inside renderer worker\n// TODO should toggle terminal, not only open\n\nconst matchesContext = (keybinding) => {\n if (!keybinding.when) {\n return true\n }\n return Context.get(keybinding.when)\n}\n\nconst getMatchingKeyBinding = (identifier) => {\n // TODO this could be more efficient in O(N) instead of O(2N)\n const matchesIdentifier = (keyBinding) => {\n return keyBinding.key === identifier\n }\n const keyBindings = KeyBindingsState.getKeyBindings()\n const matchingKeyBindings = keyBindings.filter(matchesIdentifier)\n const matchingKeyBinding = matchingKeyBindings.find(matchesContext)\n return matchingKeyBinding\n}\n\nconst getModifier = (event) => {\n switch (event.key) {\n case 'Control':\n return 'ctrl'\n case 'Shift':\n return 'shift'\n case 'Alt':\n return 'alt'\n }\n return ''\n}\n\nconst clearModifier = () => {\n if (!KeyBindingsState.hasModifier()) {\n return\n }\n if (KeyBindingsState.getModifierTimeout() !== -1) {\n clearTimeout(KeyBindingsState.getModifierTimeout())\n KeyBindingsState.setModifier('')\n KeyBindingsState.setModifierTimeout(-1)\n }\n}\n\nconst handleMatchingKeyBinding = (matchingKeyBinding) => {\n // TODO execute command directly or -> executeCommand -> keybindings -> executeCommand\n // better directly\n // TODO always should be number\n // when launching keybindings -> map string command to number\n // TODO should args always be defined? (probably yes -> monomorphism & simpler code since all objects are the same)\n\n // TODO matchingKeyBinding.command should always be number\n RendererWorker.send(/* KeyBindings.handleKeyBinding */ 'KeyBindings.handleKeyBinding', /* keyBinding */ matchingKeyBinding)\n}\n\nexport const handleKeyDown = (event) => {\n const identifier = getIdentifier(event)\n const matchingKeyBinding = getMatchingKeyBinding(identifier)\n if (!matchingKeyBinding) {\n return\n }\n Event.preventDefault(event)\n handleMatchingKeyBinding(matchingKeyBinding)\n}\n\nexport const handleKeyUp = (event) => {\n const modifier = getModifier(event)\n if (!modifier) {\n clearModifier()\n return\n }\n if (KeyBindingsState.isModifier(modifier)) {\n clearModifier()\n const identifier = `${modifier} ${modifier}`\n const matchingKeyBinding = getMatchingKeyBinding(identifier)\n if (matchingKeyBinding) {\n handleMatchingKeyBinding(matchingKeyBinding)\n }\n return\n }\n KeyBindingsState.setModifier(modifier)\n KeyBindingsState.setModifierTimeout(setTimeout(clearModifier, 300))\n}\n", "import * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as ViewletLayoutFunctions from './ViewletLayoutFunctions.js'\nimport * as KeyBindingsEvents from '../KeyBindingsEvents/KeyBindingsEvents.js'\n\nconst getSashId = ($Target) => {\n if ($Target.id === 'SashPanel') {\n return 'Panel'\n }\n if ($Target.id === 'SashSideBar') {\n return 'SideBar'\n }\n return ''\n}\n\nexport const handleSashPointerMove = (event) => {\n const { clientX, clientY } = event\n ViewletLayoutFunctions.handleSashPointerMove(clientX, clientY)\n}\n\nexport const handlePointerCaptureLost = (event) => {\n const { target } = event\n target.removeEventListener(DomEventType.PointerMove, handleSashPointerMove)\n target.removeEventListener(DomEventType.LostPointerCapture, handlePointerCaptureLost)\n}\n\nexport const handleSashPointerDown = (event) => {\n const { target, pointerId } = event\n target.setPointerCapture(pointerId)\n target.addEventListener(DomEventType.PointerMove, handleSashPointerMove)\n target.addEventListener(DomEventType.LostPointerCapture, handlePointerCaptureLost)\n const id = getSashId(target)\n ViewletLayoutFunctions.handleSashPointerDown(id)\n}\n\nexport const handleSashDoubleClick = (event) => {\n const { target } = event\n const id = getSashId(target)\n ViewletLayoutFunctions.handleSashDoubleClick(id)\n}\n\nexport const handleResize = () => {\n const { innerWidth, innerHeight } = window\n ViewletLayoutFunctions.handleResize(innerWidth, innerHeight)\n}\n\nexport const handleFocus = () => {\n ViewletLayoutFunctions.handleFocus()\n}\n\nexport const handleBlur = () => {\n ViewletLayoutFunctions.handleBlur()\n}\n\nexport const handleKeyDown = KeyBindingsEvents.handleKeyDown\n\nexport const handleKeyUp = KeyBindingsEvents.handleKeyUp\n", "import * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\nimport * as ViewletLayoutEvents from './ViewletLayoutEvents.js'\n\nexport const create = () => {\n // TODO use aria role splitter once supported https://github.com/w3c/aria/issues/1348\n const $SashSideBar = document.createElement('div')\n $SashSideBar.className = 'Viewlet SashVertical'\n $SashSideBar.id = 'SashSideBar'\n\n // TODO use aria role splitter once supported https://github.com/w3c/aria/issues/1348\n const $SashPanel = document.createElement('div')\n $SashPanel.className = 'Viewlet SashHorizontal'\n $SashPanel.id = 'SashPanel'\n\n const $Viewlet = document.createElement('div')\n $Viewlet.id = 'Workbench'\n $Viewlet.className = 'Viewlet Layout'\n $Viewlet.role = AriaRoles.Application\n $Viewlet.append($SashSideBar, $SashPanel)\n\n return {\n $Viewlet,\n $SashSideBar,\n $SashPanel,\n }\n}\n\nexport const attachEvents = (state) => {\n const { $SashSideBar, $SashPanel } = state\n $SashSideBar.onpointerdown = ViewletLayoutEvents.handleSashPointerDown\n $SashSideBar.ondblclick = ViewletLayoutEvents.handleSashDoubleClick\n\n $SashPanel.onpointerdown = ViewletLayoutEvents.handleSashPointerDown\n $SashPanel.ondblclick = ViewletLayoutEvents.handleSashDoubleClick\n\n window.addEventListener(DomEventType.Resize, ViewletLayoutEvents.handleResize)\n window.addEventListener(DomEventType.Focus, ViewletLayoutEvents.handleFocus)\n window.addEventListener(DomEventType.Blur, ViewletLayoutEvents.handleBlur)\n window.addEventListener(DomEventType.KeyDown, ViewletLayoutEvents.handleKeyDown)\n window.addEventListener(DomEventType.KeyUp, ViewletLayoutEvents.handleKeyUp)\n}\n\nexport const setSashes = (state, sashSideBar, sashPanel) => {\n const { $SashSideBar, $SashPanel } = state\n SetBounds.setBounds($SashSideBar, sashSideBar.x, sashSideBar.y, sashSideBar.width, sashSideBar.height)\n SetBounds.setBounds($SashPanel, sashPanel.x, sashPanel.y, sashPanel.width, sashPanel.height)\n}\n", "import * as AriaBoolean from '../AriaBoolean/AriaBoolean.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as Label from '../Label/Label.js'\n\nexport const create = (label, title, background) => {\n const $TabLabel = Label.create(label)\n\n const $TabCloseButton = document.createElement('button')\n $TabCloseButton.className = 'EditorTabCloseButton'\n $TabCloseButton.ariaLabel = 'Close'\n $TabCloseButton.title = ''\n\n const $Tab = document.createElement('div')\n $Tab.title = title\n $Tab.draggable = true\n if (!background) {\n $Tab.ariaSelected = AriaBoolean.True\n }\n $Tab.role = AriaRoles.Tab\n $Tab.className = 'MainTab'\n $Tab.append($TabLabel, $TabCloseButton)\n return $Tab\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleDragOver = (x, y) => {\n RendererWorker.send('Main.handleDragOver', x, y)\n}\n\nexport const handleDropFiles = (files) => {\n RendererWorker.send('Main.handleDrop', files)\n}\n\nexport const handleDropFilePath = (filePath) => {\n RendererWorker.send('Main.handleDropFilePath', filePath)\n}\n\nexport const handleDragEnd = (x, y) => {\n RendererWorker.send('Main.handleDragEnd', x, y)\n}\n\nexport const closeEditor = (index) => {\n RendererWorker.send('Main.closeEditor', index)\n}\n\nexport const handleTabClick = (index) => {\n RendererWorker.send('Main.handleTabClick', index)\n}\n\nexport const handleTabContextMenu = (index, x, y) => {\n RendererWorker.send('Main.handleTabContextMenu', index, x, y)\n}\n", "import * as AllowedDragEffectType from '../AllowedDragEffectType/AllowedDragEffectType.js'\nimport * as DataTransfer from '../DataTransfer/DataTransfer.js'\nimport * as Event from '../Event/Event.js'\nimport * as MouseEventType from '../MouseEventType/MouseEventType.js'\nimport * as ViewletMainFunctions from './ViewletMainFunctions.js'\n\nconst ClassNames = {\n Label: 'Label',\n EditorTabCloseButton: 'EditorTabCloseButton',\n MainTab: 'MainTab',\n}\n\nexport const handleDragStart = (event) => {\n event.dataTransfer.effectAllowed = AllowedDragEffectType.CopyMove\n}\n\nexport const handleDragOver = (event) => {\n Event.preventDefault(event)\n const { clientX, clientY } = event\n ViewletMainFunctions.handleDragOver(clientX, clientY)\n}\n\nexport const handleDragEnd = (event) => {\n const { clientX, clientY } = event\n ViewletMainFunctions.handleDragEnd(clientX, clientY)\n}\n\n/**\n *\n * @param {DragEvent} event\n */\nexport const handleDrop = (event) => {\n Event.preventDefault(event)\n const { dataTransfer } = event\n const { files } = dataTransfer\n console.log(dataTransfer.items.length)\n const item = dataTransfer.items[0]\n console.log({ item, kind: item.kind, type: item.type })\n if (files.length > 0) {\n ViewletMainFunctions.handleDropFiles(files)\n return\n }\n const filePath = DataTransfer.getFilePath(dataTransfer)\n if (filePath) {\n ViewletMainFunctions.handleDropFilePath(filePath)\n return\n }\n}\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst getIndex = ($Target) => {\n switch ($Target.className) {\n case ClassNames.EditorTabCloseButton:\n case ClassNames.Label:\n return getNodeIndex($Target.parentNode)\n case ClassNames.MainTab:\n return getNodeIndex($Target)\n default:\n return -1\n }\n}\n\nexport const handleTabCloseButtonMouseDown = (event, index) => {\n ViewletMainFunctions.closeEditor(index)\n}\n\nexport const handleTabMouseDown = (event, index) => {\n const { button } = event\n switch (button) {\n case MouseEventType.LeftClick:\n ViewletMainFunctions.handleTabClick(index)\n break\n case MouseEventType.MiddleClick:\n ViewletMainFunctions.closeEditor(index)\n break\n case MouseEventType.RightClick:\n break\n default:\n break\n }\n}\n\nexport const handleTabsMouseDown = (event) => {\n const { target } = event\n const index = getIndex(target)\n if (index === -1) {\n return\n }\n switch (target.className) {\n case ClassNames.EditorTabCloseButton:\n handleTabCloseButtonMouseDown(event, index)\n break\n case ClassNames.MainTab:\n case ClassNames.Label:\n handleTabMouseDown(event, index)\n break\n default:\n break\n }\n}\n\nexport const handleTabsContextMenu = (event) => {\n const { clientX, clientY, target } = event\n const index = getIndex(target)\n if (index === -1) {\n return\n }\n Event.preventDefault(event)\n ViewletMainFunctions.handleTabContextMenu(index, clientX, clientY)\n}\n", "import * as AriaBoolean from '../AriaBoolean/AriaBoolean.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\nimport * as Tab from '../Tab/Tab.js'\nimport * as ViewletMainEvents from './ViewletMainEvents.js'\n\nconst create$MainTabs = () => {\n const $MainTabs = document.createElement('div')\n $MainTabs.className = 'MainTabs'\n $MainTabs.role = AriaRoles.TabList\n $MainTabs.onmousedown = ViewletMainEvents.handleTabsMouseDown\n $MainTabs.oncontextmenu = ViewletMainEvents.handleTabsContextMenu\n $MainTabs.ondragstart = ViewletMainEvents.handleDragStart\n // TODO race condition: what if tab has already been closed?\n return $MainTabs\n}\n\n// TODO Main should not be bound to Editor -> Lazy load Editor\nexport const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.id = 'Main'\n $Viewlet.className = 'Viewlet Main'\n $Viewlet.ondrop = ViewletMainEvents.handleDrop\n $Viewlet.ondragover = ViewletMainEvents.handleDragOver\n $Viewlet.ondragend = ViewletMainEvents.handleDragEnd\n $Viewlet.role = AriaRoles.Main\n\n // const $MainContent = document.createElement('div')\n // $MainContent.id = 'MainContent'\n\n // const $MainTabs = document.createElement('div')\n // $MainTabs.className = 'MainTabs'\n // $MainTabs.onmousedown = handleTabsMouseDown\n // $MainTabs.oncontextmenu = handleTabsContextMenu\n // // TODO race condition: what if tab has already been closed?\n // $Main.append($MainTabs, $MainContent)\n\n return {\n $Viewlet,\n $Main: $Viewlet,\n $MainContent: undefined,\n $MainTabs: undefined,\n $DragOverlay: undefined,\n }\n}\n\nexport const dispose = (state) => {\n state.$MainContent.remove()\n state.$MainContent = undefined\n state.$MainTabs.remove()\n state.$MainTabs = undefined\n}\n\nexport const replaceEditor = (state, id, uri, languageId) => {}\n\nexport const addEditor = (state, id, uri, languageId) => {}\n\n// TODO there are 3 cases\n// 1. no editor group and no editor\n// 2. editor group exists and new editor should be added\n// 3. editor group exists and editor should be replaced\nexport const openEditor = async (state, id, uri, languageId) => {}\n\nexport const closeAllViewlets = (state) => {\n const { $Main } = state\n while ($Main.firstChild) {\n $Main.firstChild.remove()\n }\n state.$MainContent = undefined\n state.$MainTabs = undefined\n}\n\nexport const closeViewletAndTab = (state, index) => {\n state.$MainContent.remove()\n state.$MainContent = undefined\n state.$MainTabs.remove()\n state.$MainTabs = undefined\n}\n\nexport const focus = () => {}\n\nexport const openViewlet = (state, tabLabel, tabTitle, oldActiveIndex, background = false) => {\n const $Tab = Tab.create(tabLabel, tabTitle, background)\n\n if (oldActiveIndex !== -1 && state.$MainTabs) {\n const $OldTab = state.$MainTabs.children[oldActiveIndex]\n if ($OldTab) {\n $OldTab.ariaSelected = AriaBoolean.False\n }\n }\n\n if (!state.$MainTabs) {\n state.$MainTabs = create$MainTabs()\n state.$Main.append(state.$MainTabs)\n }\n\n const { $MainTabs } = state\n $MainTabs.append($Tab)\n\n // await Viewlet.load(id)\n // const instance = Viewlet.state.instances[id]\n // // TODO race condition: what if tab has already been closed?\n // Viewlet.mount(state.$MainContent, instance.state)\n // Viewlet.focus(id)\n // Layout.state.$Main.append(state.$MainTabs, state.$MainContent)\n}\n\nconst create$MainContent = () => {\n const $MainContent = document.createElement('div')\n $MainContent.id = 'MainContent'\n return $MainContent\n}\n\nexport const appendViewlet = (state, childName, $Child) => {\n if (!state.$MainContent) {\n state.$MainContent = create$MainContent()\n state.$Main.append(state.$MainContent)\n }\n const { $MainContent } = state\n // TODO should bring back old optimization of reusing existing editor dom nodes if possible\n while ($MainContent.firstChild) {\n $MainContent.firstChild.remove()\n }\n $MainContent.append($Child)\n\n // await Viewlet.load(id)\n // const instance = Viewlet.state.instances[id]\n // // TODO race condition: what if tab has already been closed?\n // Viewlet.mount(state.$MainContent, instance.state)\n // Viewlet.focus(id)\n // Layout.state.$Main.append(state.$MainTabs, state.$MainContent)\n}\n\n// TODO when there is not enough space available, only show tab close button\n// for focused tab (that's how chrome and firefox do it)\nexport const openAnotherTab = async (state, tabLabel, tabTitle, unFocusIndex) => {\n const $Tab = Tab.create(tabLabel, tabTitle, false)\n const { $MainTabs } = state\n $MainTabs.children[unFocusIndex].ariaSelected = AriaBoolean.False\n $MainTabs.append($Tab)\n}\n\nexport const closeOneTab = (state, closeIndex, focusIndex) => {\n const { $MainTabs } = state\n $MainTabs.children[closeIndex].remove()\n $MainTabs.children[focusIndex].ariaSelected = AriaBoolean.True\n}\n\nexport const closeOneTabOnly = (state, closeIndex) => {\n const { $MainTabs } = state\n $MainTabs.children[closeIndex].remove()\n}\n\nexport const focusAnotherTab = (state, unFocusIndex, focusIndex) => {\n const { $MainTabs } = state\n $MainTabs.children[unFocusIndex].ariaSelected = AriaBoolean.False\n $MainTabs.children[focusIndex].ariaSelected = AriaBoolean.True\n}\n\nexport const closeOthers = (state, keepIndex, focusIndex) => {\n for (let i = state.$MainTabs.children.length - 1; i >= 0; i--) {\n const $Tab = state.$MainTabs.children[i]\n if (i === keepIndex) {\n $Tab.ariaSelected = AriaBoolean.True\n $Tab.tabIndex = 0\n } else {\n $Tab.remove()\n }\n }\n}\n\nexport const closeTabsRight = (state, index) => {\n for (let i = state.$MainTabs.children.length - 1; i > index; i--) {\n const $Tab = state.$MainTabs.children[i]\n $Tab.remove()\n }\n const $Tab = state.$MainTabs.children[index]\n $Tab.ariaSelected = AriaBoolean.True\n $Tab.tabIndex = 0\n}\n\nexport const closeTabsLeft = (state, index) => {\n for (let i = index - 1; i >= 0; i--) {\n const $Tab = state.$MainTabs.children[i]\n $Tab.remove()\n }\n const $Tab = state.$MainTabs.children[0]\n $Tab.ariaSelected = AriaBoolean.True\n $Tab.tabIndex = 0\n}\n\nexport const updateTab = (state, index, text) => {\n const { $MainTabs } = state\n const $Tab = $MainTabs.children[index]\n const $TabLabel = $Tab.firstChild\n $Tab.title = text\n $TabLabel.textContent = text\n}\n\nexport const highlightDragOver = (state) => {\n const { $MainTabs } = state\n $MainTabs.classList.add('DragOver')\n}\n\nexport const stopHighlightDragOver = (state) => {\n const { $MainTabs } = state\n $MainTabs.classList.remove('DragOver')\n}\n\nconst create$DragOverlay = () => {\n const $Overlay = document.createElement('div')\n $Overlay.className = 'DragOverlay'\n return $Overlay\n}\n\nexport const showDragOverlay = (state, x, y, width, height) => {\n const hasOverlay = state.$DragOverlay\n if (!hasOverlay) {\n state.$DragOverlay = create$DragOverlay()\n }\n const { $DragOverlay } = state\n SetBounds.setBounds($DragOverlay, x, y, width, height)\n if (!hasOverlay) {\n document.body.append($DragOverlay)\n }\n}\n\nexport const hideDragOverlay = (state) => {\n if (!state.$DragOverlay) {\n return\n }\n state.$DragOverlay.remove()\n state.$DragOverlay = undefined\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const closeEditor = (index) => {\n RendererWorker.send('Main.closeEditor', index)\n}\n\nexport const handleTabClick = (index) => {\n RendererWorker.send('Main.handleTabClick', index)\n}\n\nexport const handleTabContextMenu = (index, x, y) => {\n RendererWorker.send('Main.handleTabContextMenu', index, x, y)\n}\n", "import * as AllowedDragEffectType from '../AllowedDragEffectType/AllowedDragEffectType.js'\nimport * as Event from '../Event/Event.js'\nimport * as MouseEventType from '../MouseEventType/MouseEventType.js'\nimport * as ViewletMainTabsFunctions from './ViewletMainTabsFunctions.js'\n\nconst ClassNames = {\n Label: 'Label',\n EditorTabCloseButton: 'EditorTabCloseButton',\n MainTab: 'MainTab',\n}\n\nexport const handleDragStart = (event) => {\n event.dataTransfer.effectAllowed = AllowedDragEffectType.CopyMove\n}\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst getIndex = ($Target) => {\n switch ($Target.className) {\n case ClassNames.EditorTabCloseButton:\n case ClassNames.Label:\n return getNodeIndex($Target.parentNode)\n case ClassNames.MainTab:\n return getNodeIndex($Target)\n default:\n return -1\n }\n}\n\nexport const handleTabCloseButtonMouseDown = (event, index) => {\n ViewletMainTabsFunctions.closeEditor(index)\n}\n\nexport const handleTabMouseDown = (event, index) => {\n const { button } = event\n switch (button) {\n case MouseEventType.LeftClick:\n ViewletMainTabsFunctions.handleTabClick(index)\n break\n case MouseEventType.MiddleClick:\n ViewletMainTabsFunctions.closeEditor(index)\n break\n case MouseEventType.RightClick:\n break\n default:\n break\n }\n}\n\nexport const handleTabsMouseDown = (event) => {\n const { target } = event\n const index = getIndex(target)\n if (index === -1) {\n return\n }\n switch (target.className) {\n case ClassNames.EditorTabCloseButton:\n handleTabCloseButtonMouseDown(event, index)\n break\n case ClassNames.MainTab:\n case ClassNames.Label:\n handleTabMouseDown(event, index)\n break\n default:\n break\n }\n}\n\nexport const handleTabsContextMenu = (event) => {\n const { clientX, clientY, target } = event\n const index = getIndex(target)\n if (index === -1) {\n return\n }\n Event.preventDefault(event)\n ViewletMainTabsFunctions.handleTabContextMenu(index, clientX, clientY)\n}\n", "import * as ViewletMainTabEvents from './ViewletMainTabEvents.js'\nimport * as Tab from '../Tab/Tab.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\n\nexport const create = () => {\n const $MainTabs = document.createElement('div')\n $MainTabs.className = 'Viewlet MainTabs'\n $MainTabs.role = AriaRoles.TabList\n $MainTabs.onmousedown = ViewletMainTabEvents.handleTabsMouseDown\n $MainTabs.oncontextmenu = ViewletMainTabEvents.handleTabsContextMenu\n $MainTabs.ondragstart = ViewletMainTabEvents.handleDragStart\n // TODO race condition: what if tab has already been closed?\n return {\n $Viewlet: $MainTabs,\n }\n}\n\nexport const setTabs = (state, tabs) => {\n const { $Viewlet } = state\n for (const tab of tabs) {\n const $Tab = Tab.create(tab.label, tab.title, false)\n $Viewlet.append($Tab)\n }\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const setOutputChannel = (value) => {\n RendererWorker.send('Output', 'setOutputChannel', value)\n}\n", "import * as ViewletOutputFunctions from './ViewletOutputFunctions.js'\n\nexport const handleChange = (event) => {\n const $Target = event.target\n const value = $Target.value\n ViewletOutputFunctions.setOutputChannel(value)\n}\n", "import * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as ViewletOutputEvents from './ViewletOutputEvents.js'\n\nconst create$Option = (option) => {\n const $Option = document.createElement('option')\n $Option.value = option.file\n $Option.textContent = option.name\n return $Option\n}\n\nexport const create = () => {\n const $ViewletOutputSelect = document.createElement('select')\n $ViewletOutputSelect.className = 'ViewletOutputSelect'\n $ViewletOutputSelect.onchange = ViewletOutputEvents.handleChange\n $ViewletOutputSelect.ariaLabel = 'Select a log'\n const $ViewletOutputContent = document.createElement('div')\n $ViewletOutputContent.className = 'OutputContent'\n $ViewletOutputContent.role = AriaRoles.Log\n $ViewletOutputContent.tabIndex = 0\n const $ViewletOutputWidgets = document.createElement('div')\n $ViewletOutputWidgets.className = 'OutputWidgets'\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet Output'\n $Viewlet.tabIndex = 0\n $Viewlet.append($ViewletOutputSelect, $ViewletOutputContent, $ViewletOutputWidgets)\n return {\n $Viewlet,\n select: $ViewletOutputSelect,\n $Select: $ViewletOutputSelect,\n content: $ViewletOutputContent,\n $Content: $ViewletOutputContent,\n $ViewletOutputContent,\n }\n}\n\nexport const setOptions = (state, options) => {\n state.$Select.append(...options.map(create$Option))\n}\n\nexport const append = (state, text) => {\n Assert.object(state)\n Assert.string(text)\n const $Line = document.createElement('div')\n $Line.textContent = text\n state.content.append($Line)\n}\n\nexport const clear = (state) => {\n Assert.object(state)\n state.content.textContent = ''\n}\n\nexport const handleError = (state, error) => {\n Assert.object(state)\n Assert.string(error)\n state.content.textContent = error\n}\n\nexport const focus = (state) => {\n Assert.object(state)\n Focus.focus(state.$ViewletOutputContent, 'output')\n}\n\n// TODO handle case when output is opened -> find widget is opened -> output is disposed before find widget is ready\nexport const openFindWidget = (state) => {\n // Command.execute(findWidget.create)\n}\n\nexport const disposeFindWidget = (state) => {\n if (!state.findWidget) {\n return\n }\n\n // Command.execute(FindWidget.dispose, state.findWidget)\n state.findWidget\n}\n\nexport const dispose = (state) => {}\n", "import * as IconButton from '../IconButton/IconButton.js'\nimport * as Assert from '../Assert/Assert.js'\n\nexport const create = (action) => {\n const { id, icon } = action\n Assert.string(id)\n Assert.string(icon)\n const $Button = IconButton.create$Button(id, icon)\n $Button.dataset.command = action.command || ''\n return $Button\n}\n", "export const create = () => {\n const $Element = document.createElement('div')\n $Element.textContent = '<unknown action type>'\n return $Element\n}\n", "import * as InputBox from '../InputBox/InputBox.js'\n\nexport const create = (action) => {\n const { id } = action\n const $Input = InputBox.create()\n $Input.placeholder = 'Filter'\n return $Input\n}\n", "export const create = () => {\n const $Select = document.createElement('select')\n return $Select\n}\n", "export const Button = 1\nexport const Select = 2\nexport const Filter = 3\n", "import * as ActionButton from '../ActionButton/ActionButton.js'\nimport * as ActionDefault from '../ActionDefault/ActionDefault.js'\nimport * as ActionFilter from '../ActionFilter/ActionFilter.js'\nimport * as ActionSelect from '../ActionSelect/ActionSelect.js'\nimport * as ActionType from '../ActionType/ActionType.js'\nimport * as Logger from '../Logger/Logger.js'\n\nconst getActionFunction = (type) => {\n switch (type) {\n case ActionType.Button:\n return ActionButton.create\n case ActionType.Filter:\n return ActionFilter.create\n case ActionType.Select:\n return ActionSelect.create\n default:\n Logger.warn(`action type not implemented: ${type}`)\n return ActionDefault.create\n }\n}\n\nexport const create = (action) => {\n const fn = getActionFunction(action.type)\n const $Element = fn(action)\n return $Element\n}\n", "import * as Action from '../Action/Action.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nconst handleClick = (event) => {\n const { target } = event\n const command = target.dataset.command\n if (!command) {\n return\n }\n RendererWorker.send([command])\n}\n\nexport const create = (actions) => {\n const $Actions = document.createElement('div')\n $Actions.className = 'Actions'\n $Actions.append(...actions.map(Action.create))\n $Actions.onclick = handleClick\n return $Actions\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const hidePanel = () => {\n RendererWorker.send('Layout.hidePanel')\n}\n", "import * as ViewletPanelFunctions from './ViewletPanelFunctions.js'\n\nexport const handleClickClose = (event) => {\n ViewletPanelFunctions.hidePanel()\n}\n", "import * as Actions from '../Actions/Actions.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as DomAttributeType from '../DomAttributeType/DomAttributeType.js'\nimport * as Icon from '../Icon/Icon.js'\nimport * as IconButton from '../IconButton/IconButton.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as ViewletPanelEvents from './ViewletPanelEvents.js'\n/**\n * @enum {string}\n */\nconst UiStrings = {\n Close: 'Close',\n}\n\nconst create$PanelTab = (label, index) => {\n const $PanelTab = document.createElement('div')\n $PanelTab.className = 'PanelTab'\n $PanelTab.role = AriaRoles.Tab\n $PanelTab.textContent = label\n $PanelTab.id = `PanelTab-${index + 1}`\n return $PanelTab\n}\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst panelTabsHandleClick = (event) => {\n const $Target = event.target\n switch ($Target.className) {\n case 'PanelTab': {\n const index = getNodeIndex($Target)\n RendererWorker.send(/* Panel.selectIndex */ 'Panel.selectIndex', /* index */ index)\n break\n }\n default:\n break\n }\n}\n\nexport const create = () => {\n const $PanelTabs = document.createElement('div')\n $PanelTabs.className = 'PanelTabs'\n $PanelTabs.role = AriaRoles.TabList\n $PanelTabs.onmousedown = panelTabsHandleClick\n $PanelTabs.tabIndex = -1\n\n const $ButtonClose = IconButton.create$Button(UiStrings.Close, Icon.Close)\n $ButtonClose.onclick = ViewletPanelEvents.handleClickClose\n\n const $PanelToolBar = document.createElement('div')\n $PanelToolBar.className = 'PanelToolBar'\n $PanelToolBar.role = AriaRoles.ToolBar\n $PanelToolBar.append($ButtonClose)\n\n const $PanelHeader = document.createElement('div')\n $PanelHeader.className = 'PanelHeader'\n $PanelHeader.append($PanelTabs, $PanelToolBar)\n // const $PanelContent = document.createElement('div')\n // $PanelContent.id = 'PanelContent'\n const $Viewlet = document.createElement('div')\n $Viewlet.id = 'Panel'\n $Viewlet.className = 'Viewlet Panel'\n $Viewlet.append($PanelHeader)\n $Viewlet.ariaLabel = 'Panel'\n return {\n $Panel: $Viewlet,\n $Viewlet,\n $PanelTabs,\n $PanelHeader,\n $PanelContent: undefined,\n }\n // await openViewlet('Terminal')\n}\n\nexport const setTabs = (state, tabs) => {\n const { $PanelTabs } = state\n $PanelTabs.append(...tabs.map(create$PanelTab))\n}\n\nexport const appendViewlet = (state, name, $Viewlet) => {\n Assert.object(state)\n Assert.string(name)\n Assert.object($Viewlet)\n // TODO is it a problem that the id is duplicated for a short amount of time here?\n $Viewlet.id = 'PanelContent'\n if (state.$PanelContent) {\n state.$PanelContent.replaceWith($Viewlet)\n } else {\n state.$Panel.append($Viewlet)\n }\n state.$PanelContent = $Viewlet\n}\n\n// TODO add test for focus method\nexport const focus = (state) => {\n Assert.object(state)\n if (!state.currentViewlet) {\n return\n }\n state.currentViewlet.factory.focus(state.currentViewlet.state)\n}\n\nexport const dispose = (state) => {\n if (state.$PanelContent) {\n state.$PanelContent.remove()\n state.$PanelContent = undefined\n }\n if (state.$PanelTabs) {\n state.$PanelTabs.remove()\n state.$PanelTabs = undefined\n }\n if (state.$PanelHeader) {\n state.$PanelHeader.remove()\n state.$PanelHeader = undefined\n }\n}\n\nexport const setSelectedIndex = (state, oldIndex, newIndex) => {\n const { $PanelTabs } = state\n if (oldIndex !== -1) {\n const $PanelTab = $PanelTabs.children[oldIndex]\n $PanelTab.removeAttribute(DomAttributeType.AriaSelected)\n }\n if (newIndex !== -1) {\n const $PanelTab = $PanelTabs.children[newIndex]\n $PanelTab.ariaSelected = true\n $PanelTabs.setAttribute(DomAttributeType.AriaActiveDescendant, $PanelTab.id)\n }\n}\n\nexport const setActions = (state, actions) => {\n const { $PanelTabs, $Actions } = state\n const $NewActions = Actions.create(actions)\n if ($Actions) {\n $Actions.replaceWith($NewActions)\n } else {\n $PanelTabs.after($NewActions)\n }\n state.$Actions = $NewActions\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleClickPrevious = () => {\n RendererWorker.send('Pdf.previous')\n}\n\nexport const handleClickNext = () => {\n RendererWorker.send('Pdf.next')\n}\n\nexport const handleClickZoomIn = () => {\n RendererWorker.send('Pdf.zoomIn')\n}\n\nexport const handleClickZoomOut = () => {\n RendererWorker.send('Pdf.zoomOut')\n}\n\nexport const handleClickPrint = () => {\n RendererWorker.send('Pdf.print')\n}\n", "import * as Icon from '../Icon/Icon.js'\nimport * as IconButton from '../IconButton/IconButton.js'\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as InputType from '../InputType/InputType.js'\nimport * as OffscreenCanvas from '../OffscreenCanvas/OffscreenCanvas.js'\nimport * as ViewletPdfEvents from './ViewletPdfEvents.js'\n\n/**\n * @enum {string}\n */\nconst UiStrings = {\n Next: 'Next',\n Previous: 'Previous',\n ZoomIn: 'Zoom in',\n ZoomOut: 'Zoom out',\n Print: 'Print',\n}\n\nexport const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet Pdf'\n\n const $ButtonPreviousPage = IconButton.create$Button(UiStrings.Previous, Icon.ChevronUp)\n $ButtonPreviousPage.onclick = ViewletPdfEvents.handleClickPrevious\n\n const $ButtonNextPage = IconButton.create$Button(UiStrings.Next, Icon.ChevronDown)\n $ButtonNextPage.onclick = ViewletPdfEvents.handleClickNext\n\n const $PageNumber = InputBox.create()\n $PageNumber.type = InputType.Number\n $PageNumber.classList.add('PdfPageNumber')\n $PageNumber.min = '1'\n $PageNumber.autocomplete = 'off'\n\n const $NumberOfPages = document.createElement('div')\n $NumberOfPages.textContent = 'of 10'\n $NumberOfPages.className = 'PdfNumberOfPages'\n\n const $ButtonZoomIn = IconButton.create$Button(UiStrings.ZoomIn, Icon.ZoomIn)\n $ButtonZoomIn.onclick = ViewletPdfEvents.handleClickZoomIn\n\n const $ButtonZoomOut = IconButton.create$Button(UiStrings.ZoomOut, Icon.ZoomOut)\n $ButtonZoomOut.onclick = ViewletPdfEvents.handleClickZoomOut\n\n const $ButtonPrint = document.createElement('button')\n $ButtonPrint.textContent = UiStrings.Print\n $ButtonPrint.onclick = ViewletPdfEvents.handleClickPrint\n\n const $PdfToolBar = document.createElement('div')\n $PdfToolBar.className = 'PdfToolBar'\n $PdfToolBar.append($ButtonPreviousPage, $ButtonNextPage, $PageNumber, $NumberOfPages, $ButtonZoomIn, $ButtonZoomOut, $ButtonPrint)\n\n const $PdfContent = document.createElement('div')\n $PdfContent.className = 'PdfContent'\n\n $Viewlet.append($PdfToolBar, $PdfContent)\n\n return {\n $Viewlet,\n $ButtonPreviousPage,\n $ButtonNextPage,\n $ButtonZoomIn,\n $ButtonZoomOut,\n $ButtonPrint,\n $Canvas: undefined,\n $PdfContent,\n $NumberOfPages,\n $PageNumber,\n }\n}\n\nexport const setCanvas = (state, id) => {\n const { $PdfContent } = state\n const $Canvas = OffscreenCanvas.get(id)\n $PdfContent.append($Canvas)\n state.$Canvas = $Canvas\n}\n\nexport const setNumberOfPages = (state, numberOfPages) => {\n const { $NumberOfPages, $PageNumber } = state\n $NumberOfPages.textContent = `of ${numberOfPages}`\n $PageNumber.max = `${numberOfPages}`\n}\n\nexport const setPageNumber = (state, pageNumber) => {\n const { $PageNumber } = state\n $PageNumber.value = `${pageNumber + 1}`\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const focusIndex = (index) => {\n RendererWorker.send('Problems.focusIndex', -1)\n}\n", "import * as Event from '../Event/Event.js'\nimport * as ViewletProblemsFunctions from './ViewletProblemsFunctions.js'\n\nexport const handlePointerDown = (event) => {\n Event.preventDefault(event)\n ViewletProblemsFunctions.focusIndex(-1)\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as ViewletProblemsEvents from './ViewletProblemsEvents.js'\n\nexport const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet Problems'\n $Viewlet.tabIndex = 0\n return {\n $Viewlet,\n }\n}\n\nexport const attachEvents = (state) => {\n const { $Viewlet } = state\n $Viewlet.onpointerdown = ViewletProblemsEvents.handlePointerDown\n}\n\nexport const setFocusedIndex = (state, focusedIndex) => {\n const { $Viewlet } = state\n if (focusedIndex === -1) {\n $Viewlet.classList.add('FocusOutline')\n $Viewlet.focus()\n }\n}\n\nexport const setProblems = (state, problems) => {\n Assert.object(state)\n Assert.array(problems)\n // TODO\n}\n\nexport const setMessage = (state, message) => {\n const { $Viewlet } = state\n $Viewlet.textContent = message\n}\n\nexport const focus = (state) => {\n const { $Viewlet } = state\n $Viewlet.focus()\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleWheel = (deltaY) => {\n RendererWorker.send('QuickPick.handleWheel', deltaY)\n}\n\nexport const handleClickAt = (x, y) => {\n RendererWorker.send('QuickPick.handleClickAt', x, y)\n}\n\nexport const handleInput = (value) => {\n RendererWorker.send('QuickPick.handleInput', value)\n}\n\nexport const handleBlur = () => {\n RendererWorker.send('QuickPick.handleBlur')\n}\n\nexport const handleBeforeInput = (inputType, data, selectionStart, selectionEnd) => {\n RendererWorker.send('QuickPick.handleBeforeInput', inputType, data, selectionStart, selectionEnd)\n}\n", "/* Tries to implement the pattern for combobox with listbox popup https://www.w3.org/TR/wai-aria-1.2/#combobox */\n\nimport * as Event from '../Event/Event.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as WheelEventType from '../WheelEventType/WheelEventType.js'\nimport * as ViewletQuickPickFunctions from './ViewletQuickPickFunctions.js'\n\n// TODO use another virtual list that just appends elements and\n// is optimized for fast show/hide, scrolling performance should\n// be good as well but is not as important as fast show/hide\n\n// TODO screenreader makes pause after reading colon, maybe there is a setting for screenreaders so they speak normally\n\n// TODO state\n\n// TODO when quickpick is shown recalculate style and layout is really slow (>10ms every time)\n\n// TODO accessibility issues with nvda: when pressing escape, it goes into different mode\n// but should just close quick-pick like vscode does\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst getTargetIndex = ($Target) => {\n switch ($Target.className) {\n case 'QuickPickItem':\n case 'QuickPickItem Focused':\n return getNodeIndex($Target)\n case 'QuickPickItemLabel':\n return getNodeIndex($Target.parentNode)\n default:\n return -1\n }\n}\n\nexport const handleWheel = (event) => {\n const { deltaMode, deltaY } = event\n switch (deltaMode) {\n case WheelEventType.DomDeltaLine:\n case WheelEventType.DomDeltaPixel:\n ViewletQuickPickFunctions.handleWheel(deltaY)\n break\n default:\n break\n }\n}\n\nexport const handlePointerDown = (event) => {\n if (Platform.isMobile) {\n // workaround to disable virtual keyboard automatically opening on android\n // see https://stackoverflow.com/questions/48635501/how-to-hide-soft-keyboard-and-keep-input-on-focus#answer-53104238\n const $Input = document.querySelector('#QuickPickHeader .InputBox')\n // @ts-ignore\n $Input.readOnly = true\n }\n Event.preventDefault(event)\n const { clientX, clientY } = event\n ViewletQuickPickFunctions.handleClickAt(clientX, clientY)\n}\n\n// TODO beforeinput event should prevent input event maybe\n// const handleBeforeInput = (event) => {\n// if (!event.data) {\n// return\n// }\n// const value = event.target.value + event.data\n// RendererWorker.send(\n// /* quickPickHandleInput */ 'QuickPick.handleInput',\n// /* value */ value,\n// )\n// }\n\nexport const handleInput = (event) => {\n const $Target = event.target\n const { value } = $Target\n ViewletQuickPickFunctions.handleInput(value)\n}\n\nexport const handleBlur = (event) => {\n ViewletQuickPickFunctions.handleBlur()\n}\n\n// TODO\n// - for windows narrator, ariaLabel works well\n// - for nvda ariaRoleDescription works better\n\nexport const handleBeforeInput = (event) => {\n Event.preventDefault(event)\n const { target, inputType, data } = event\n const { selectionStart, selectionEnd } = target\n ViewletQuickPickFunctions.handleBeforeInput(inputType, data, selectionStart, selectionEnd)\n}\n", "/* Tries to implement the pattern for combobox with listbox popup https://www.w3.org/TR/wai-aria-1.2/#combobox */\n\nimport * as AriaAlert from '../AriaAlert/AriaAlert.js'\nimport * as AriaAutoCompleteType from '../AriaAutoCompleteType/AriaAutoCompleteType.js'\nimport * as AriaBoolean from '../AriaBoolean/AriaBoolean.js'\nimport * as AriaRoleDescriptionType from '../AriaRoleDescriptionType/AriaRoleDescriptionType.js'\nimport * as DomAttributeType from '../DomAttributeType/DomAttributeType.js'\nimport * as DomEventOptions from '../DomEventOptions/DomEventOptions.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\nimport * as ViewletQuickPickEvents from './ViewletQuickPickEvents.js'\n\n// TODO use another virtual list that just appends elements and\n// is optimized for fast show/hide, scrolling performance should\n// be good as well but is not as important as fast show/hide\n\n// TODO screenreader makes pause after reading colon, maybe there is a setting for screenreaders so they speak normally\n\n// TODO state\n\n// TODO when quickpick is shown recalculate style and layout is really slow (>10ms every time)\n\n// TODO accessibility issues with nvda: when pressing escape, it goes into different mode\n// but should just close quick-pick like vscode does\n\nconst activeId = 'QuickPickItemActive'\n\n// TODO forbidden:\n// 1. methods\n// 2. functions inside functions\n\n/**\n * @enum {string}\n */\nconst ClassNames = {\n Label: 'Label',\n QuickPickItem: 'QuickPickItem',\n Icon: 'Icon',\n QuickPickItemDescription: 'QuickPickItemDescription',\n QuickPickStatus: 'QuickPickStatus',\n}\n\n/**\n * @enum {string}\n */\nconst Ids = {\n QuickPickHeader: 'QuickPickHeader',\n QuickPickItems: 'QuickPickItems',\n QuickPick: 'QuickPick',\n}\n\n/**\n * @enum {string}\n */\nconst Roles = {\n ListBox: 'listbox',\n ComboBox: 'combobox',\n Option: 'option',\n}\n\nconst create$QuickPickItem = () => {\n // TODO many quickPick items may not have description -> avoid creating description dom nodes if there is no description\n const $QuickPickItemLabelText = document.createTextNode('')\n\n const $QuickPickItemLabel = document.createElement('div')\n $QuickPickItemLabel.className = ClassNames.Label\n $QuickPickItemLabel.append($QuickPickItemLabelText)\n\n const $QuickPickItemIcon = document.createElement('i')\n $QuickPickItemIcon.className = ClassNames.Icon\n const $QuickPickItem = document.createElement('div') // TODO ul/li would be better for structure but might be slower\n $QuickPickItem.className = ClassNames.QuickPickItem\n $QuickPickItem.role = Roles.Option\n $QuickPickItem.append($QuickPickItemIcon, $QuickPickItemLabel)\n return $QuickPickItem\n}\n\n// TODO add test with show and slicedItems length is 0\n\nconst create$QuickPickDescription = () => {\n const $QuickPickItemDescription = document.createElement('div')\n $QuickPickItemDescription.className = ClassNames.QuickPickItemDescription\n return $QuickPickItemDescription\n}\n\nconst render$QuickPickItemLess = ($QuickPickItem, quickPickItem) => {\n render$QuickPickItemLabel($QuickPickItem.firstChild, quickPickItem)\n const $QuickPickItemDescription = create$QuickPickDescription()\n // render$QuickPickItemDescription($QuickPickItemDescription, quickPickItem)\n\n $QuickPickItem.append($QuickPickItemDescription)\n}\n\nconst render$QuickPickItemLabel = ($QuickPickItem, quickPickItem) => {\n $QuickPickItem.children[1].firstChild.nodeValue = quickPickItem.label\n}\n\nconst render$QuickPickItemIcon = ($QuickPickItem, quickPickItem) => {\n $QuickPickItem.children[0].className = `FileIcon${quickPickItem.icon}`\n}\n\nconst render$QuickPickItemEqual = ($QuickPickItem, quickPickItem) => {\n render$QuickPickItemLabel($QuickPickItem, quickPickItem)\n render$QuickPickItemIcon($QuickPickItem, quickPickItem)\n}\n\nconst render$QuickPickItemMore = ($QuickPickItem, quickPickItem) => {\n render$QuickPickItemLabel($QuickPickItem.firstChild, quickPickItem)\n $QuickPickItem.lastChild.remove()\n}\n\nconst render$QuickPickItem = ($QuickPickItem, quickPickItem) => {\n $QuickPickItem.ariaPosInSet = `${quickPickItem.posInSet}` // TODO pass correct number as prop\n $QuickPickItem.ariaSetSize = `${quickPickItem.setSize}`\n $QuickPickItem.quickPickItem = quickPickItem\n render$QuickPickItemEqual($QuickPickItem, quickPickItem)\n}\n\nconst render$QuickPickItemsLess = ($QuickPickItems, quickPickItems) => {\n for (let i = 0; i < $QuickPickItems.children.length; i++) {\n render$QuickPickItem($QuickPickItems.children[i], quickPickItems[i])\n }\n const fragment = document.createDocumentFragment()\n for (let i = $QuickPickItems.children.length; i < quickPickItems.length; i++) {\n const $QuickPickItem = create$QuickPickItem()\n render$QuickPickItem($QuickPickItem, quickPickItems[i])\n fragment.append($QuickPickItem)\n }\n $QuickPickItems.append(fragment)\n}\n\nconst render$QuickPickItemsEqual = ($QuickPickItems, quickPickItems) => {\n for (let i = 0; i < quickPickItems.length; i++) {\n render$QuickPickItem($QuickPickItems.children[i], quickPickItems[i])\n }\n}\n\nconst render$QuickPickItemsMore = ($QuickPickItems, quickPickItems) => {\n for (let i = 0; i < quickPickItems.length; i++) {\n render$QuickPickItem($QuickPickItems.children[i], quickPickItems[i])\n }\n const diff = $QuickPickItems.children.length - quickPickItems.length\n for (let i = 0; i < diff; i++) {\n $QuickPickItems.lastChild.remove()\n }\n}\n\nconst render$QuickPickItems = ($QuickPickItems, quickPickItems) => {\n if ($QuickPickItems.children.length < quickPickItems.length) {\n render$QuickPickItemsLess($QuickPickItems, quickPickItems)\n } else if ($QuickPickItems.children.length === quickPickItems.length) {\n render$QuickPickItemsEqual($QuickPickItems, quickPickItems)\n } else {\n render$QuickPickItemsMore($QuickPickItems, quickPickItems)\n }\n}\n\nexport const setVisiblePicks = (state, visiblePicks) => {\n if (state.$QuickPickStatus) {\n hideStatus(state)\n }\n render$QuickPickItems(state.$QuickPickItems, visiblePicks)\n}\n\nexport const setFocusedIndex = (state, oldFocusedIndex, newFocusedIndex) => {\n const { $QuickPickItems, $QuickPickInput } = state\n if (oldFocusedIndex >= 0) {\n const $OldItem = $QuickPickItems.children[oldFocusedIndex]\n if ($OldItem) {\n $OldItem.removeAttribute('id')\n }\n }\n if (newFocusedIndex >= 0) {\n const $NewItem = $QuickPickItems.children[newFocusedIndex]\n if ($NewItem) {\n $NewItem.id = activeId\n $QuickPickInput.setAttribute(DomAttributeType.AriaActiveDescendant, activeId)\n }\n }\n}\n\nconst focusElement = ($Element) => {\n if (Platform.isMobile) {\n // workaround to disable virtual keyboard automatically opening on android\n // see https://stackoverflow.com/questions/48635501/how-to-hide-soft-keyboard-and-keep-input-on-focus#answer-53104238\n $Element.readOnly = true\n $Element.focus()\n const handleTimeout = () => {\n $Element.readOnly = false\n }\n setTimeout(handleTimeout, 0)\n } else {\n $Element.focus()\n }\n}\n\nexport const focus = (state) => {\n const { $QuickPickInput } = state\n focusElement($QuickPickInput)\n Focus.setFocus('quickPickInput')\n}\n\n// TODO\n// - for windows narrator, ariaLabel works well\n// - for nvda ariaRoleDescription works better\n\nexport const create = () => {\n const $QuickPickInput = InputBox.create()\n $QuickPickInput.setAttribute(DomAttributeType.AriaControls, Ids.QuickPickItems) // TODO use idl once supported\n $QuickPickInput.role = Roles.ComboBox\n $QuickPickInput.ariaLabel = 'Type the name of a command to run.'\n $QuickPickInput.ariaAutoComplete = AriaAutoCompleteType.List\n $QuickPickInput.onblur = ViewletQuickPickEvents.handleBlur\n $QuickPickInput.addEventListener(DomEventType.BeforeInput, ViewletQuickPickEvents.handleBeforeInput)\n $QuickPickInput.ariaExpanded = AriaBoolean.True\n\n const $QuickPickHeader = document.createElement('div')\n $QuickPickHeader.id = Ids.QuickPickHeader\n $QuickPickHeader.append($QuickPickInput)\n\n const $QuickPickItems = document.createElement('div')\n $QuickPickItems.id = Ids.QuickPickItems\n $QuickPickItems.role = Roles.ListBox\n $QuickPickItems.onpointerdown = ViewletQuickPickEvents.handlePointerDown\n $QuickPickItems.addEventListener(DomEventType.Wheel, ViewletQuickPickEvents.handleWheel, DomEventOptions.Passive)\n\n // TODO this works well with nvda but not with windows narrator\n // probably a bug with windows narrator that doesn't support ariaRoleDescription\n $QuickPickItems.ariaRoleDescription = AriaRoleDescriptionType.QuickInput\n\n const $QuickPick = document.createElement('div')\n $QuickPick.id = Ids.QuickPick\n // $QuickPick.role= 'dialog'\n $QuickPick.append($QuickPickHeader, $QuickPickItems)\n // $QuickPick.setAttribute('aria-modal', 'false') // TODO why is this\n $QuickPick.ariaLabel = 'Quick open'\n\n return {\n $Viewlet: $QuickPick,\n $QuickPick,\n $QuickPickInput,\n $QuickPickItems,\n $QuickPickStatus: undefined,\n }\n}\n\nexport const setPicks = (state, visiblePicks) => {\n render$QuickPickItems(state.$QuickPickItems, visiblePicks)\n}\n\nconst create$QuickPickStatus = () => {\n const $QuickPickStatus = document.createElement('div')\n $QuickPickStatus.className = 'QuickPickStatus'\n // const te.$QuickPickStatus.role = AriaRoles.Status\n // $QuickPickStatus.ariaLive = 'polite'\n // $QuickPickStatus.id = 'QuickPickStatus'\n return $QuickPickStatus\n}\n\nexport const hideStatus = (state) => {\n state.$QuickPickStatus.remove()\n state.$QuickPickStatus = undefined\n}\n\nexport const showNoResults = (state, noResults, unfocusIndex) => {\n setPicks(state, [])\n if (!state.$QuickPickStatus) {\n state.$QuickPickStatus = create$QuickPickStatus()\n state.$QuickPick.append(state.$QuickPickStatus)\n }\n state.$QuickPickStatus.textContent = 'No Results'\n\n // announce to screenreaders that there are no results\n AriaAlert.alert('No results')\n}\n\n// TODO QuickPick module is always loaded lazily -> can create $QuickPick eagerly (no state / less state laying around)\n\n// TODO remove from dom vs display none which should be used?\n\n// TODO have common widgets container for all widgets (this, notifications, context menu)\nexport const dispose = (state) => {\n state.$QuickPickInput.onblur = null\n}\n\nexport const setValue = (state, value) => {\n const { $QuickPickInput } = state\n $QuickPickInput.value = value\n}\n\nexport const setCursorOffset = (state, cursorOffset) => {\n const { $QuickPickInput } = state\n $QuickPickInput.selectionStart = cursorOffset\n $QuickPickInput.selectionEnd = cursorOffset\n}\n\nexport const setItemsHeight = (state, itemsHeight) => {\n const { $QuickPickItems } = state\n SetBounds.setHeight($QuickPickItems, itemsHeight)\n}\n\nexport const noop = (state) => {}\n", "export * from '../ViewletLocations/ViewletLocations.js'\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleContinue = () => {\n RendererWorker.send('Run And Debug.continue')\n}\n\nexport const pause = () => {\n RendererWorker.send('Run And Debug.pause')\n}\n\nexport const stepOver = () => {\n RendererWorker.send('Run And Debug.stepOver')\n}\n\nexport const stepInto = () => {\n RendererWorker.send('Run And Debug.stepInto')\n}\n\nexport const stepOut = () => {\n RendererWorker.send('Run And Debug.stepOut')\n}\n\nexport const handleClickSectionWatch = () => {\n RendererWorker.send('Run And Debug.handleClickSectionWatch')\n}\n\nexport const handleClickSectionBreakpoints = () => {\n RendererWorker.send('Run And Debug.handleClickSectionBreakPoints')\n}\n\nexport const handleClickSectionScope = () => {\n RendererWorker.send('Run And Debug.handleClickSectionScope')\n}\n\nexport const handleClickSectionCallstack = () => {\n RendererWorker.send('Run And Debug.handleClickSectionCallstack')\n}\n\n/**\n *\n * @param {string} value\n */\nexport const handleDebugInput = (value) => {\n RendererWorker.send('Run And Debug.handleDebugInput', value)\n}\n", "import * as Event from '../Event/Event.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as ViewletRunAndDebugFunctions from './ViewletRunAndDebugFunctions.js'\n\n// TODO rename to resume\nconst handleClickContinue = () => {\n ViewletRunAndDebugFunctions.handleContinue()\n}\n\nconst handleClickPause = (event) => {\n ViewletRunAndDebugFunctions.pause()\n}\n\nconst handleClickStepOver = (event) => {\n ViewletRunAndDebugFunctions.stepOver()\n}\n\nconst handleClickStepInto = (event) => {\n ViewletRunAndDebugFunctions.stepInto()\n}\n\nconst handleClickStepOut = (event) => {\n ViewletRunAndDebugFunctions.stepOut()\n}\n\nconst handleClickDebugButton = (event, target) => {\n Event.preventDefault(event)\n switch (target.title) {\n case 'Pause':\n handleClickPause()\n break\n case 'Resume':\n handleClickContinue()\n break\n case 'Step over':\n handleClickStepOver()\n break\n case 'Step into':\n handleClickStepInto()\n break\n case 'Step out':\n handleClickStepOut()\n break\n default:\n console.log(target)\n break\n }\n}\n\nconst handleClickSectionWatch = () => {\n ViewletRunAndDebugFunctions.handleClickSectionWatch()\n}\n\nconst handleClickSectionBreakpoints = () => {\n ViewletRunAndDebugFunctions.handleClickSectionBreakpoints()\n}\n\nconst handleClickSectionScope = () => {\n ViewletRunAndDebugFunctions.handleClickSectionScope()\n}\n\nconst handleClickSectionCallstack = () => {\n ViewletRunAndDebugFunctions.handleClickSectionCallstack()\n}\n\nconst handleClickDebugSectionHeader = (event, target) => {\n Event.preventDefault(event)\n switch (target.textContent) {\n case 'Watch':\n handleClickSectionWatch()\n break\n case 'BreakPoints':\n handleClickSectionBreakpoints()\n break\n case 'Scope':\n handleClickSectionScope()\n break\n case 'Call Stack':\n handleClickSectionCallstack()\n break\n default:\n break\n }\n}\n\nexport const handlePointerDown = (event) => {\n const { target } = event\n switch (target.className) {\n case 'IconButton DebugButton':\n handleClickDebugButton(event, target)\n break\n case 'DebugSectionHeader':\n handleClickDebugSectionHeader(event, target)\n break\n default:\n break\n }\n}\n\nexport const handleDebugInputFocus = () => {\n Focus.setFocus('DebugInput')\n}\n\nexport const handleDebugInput = (event) => {\n const { target } = event\n const { value } = target\n ViewletRunAndDebugFunctions.handleDebugInput(value)\n}\n", "import * as VirtualDom from '../VirtualDom/VirtualDom.js'\nimport * as ViewletDebugEvents from './ViewletRunAndDebugEvents.js'\nimport * as VirtualDomElementProps from '../VirtualDomElementProps/VirtualDomElementProps.js'\n\nexport const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet RunAndDebug'\n $Viewlet.tabIndex = 0\n $Viewlet.onpointerdown = ViewletDebugEvents.handlePointerDown\n\n return {\n $Viewlet,\n }\n}\n\nexport const setDom = (state, dom) => {\n const { $Viewlet } = state\n VirtualDom.renderInto($Viewlet, dom)\n}\n\nexport const setPatches = (state, diff) => {\n const { $Viewlet } = state\n const iter = document.createNodeIterator($Viewlet, NodeFilter.SHOW_ALL)\n let i = 0\n let node = iter.nextNode()\n for (let diffIndex = 0; diffIndex < diff.length; diffIndex++) {\n const diffItem = diff[diffIndex]\n while (i <= diffItem.index) {\n node = iter.nextNode()\n i++\n }\n switch (diffItem.type) {\n case 'updateProp':\n VirtualDomElementProps.setProp(node, diffItem.key, diffItem.value)\n break\n default:\n break\n }\n }\n}\n", "export const Search = 'search'\nexport const Go = 'go'\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\n/**\n *\n * @param {string} value\n */\nexport const handleInput = (value) => {\n RendererWorker.send('Search.handleInput', value)\n}\n\n/**\n *\n * @param {number} index\n */\nexport const handleClick = (index) => {\n RendererWorker.send('Search.handleClick', index)\n}\n\nexport const handleContextMenu = (button, x, y) => {\n RendererWorker.send('Search.handleContextMenu', button, x, y)\n}\n\nexport const handleScrollBarMove = (y) => {\n RendererWorker.send('Search.handleScrollBarMove', y)\n}\n\nexport const handleScrollBarClick = (y) => {\n RendererWorker.send('Search.handleScrollBarClick', y)\n}\n\nexport const handleWheel = (deltaMode, deltaY) => {\n RendererWorker.send('Search.handleWheel', deltaMode, deltaY)\n}\n\nexport const toggleReplace = () => {\n RendererWorker.send('Search.handleToggleButtonClick')\n}\n\nexport const toggleMatchCase = () => {\n RendererWorker.send('Search.toggleMatchCase')\n}\n\nexport const toggleMatchWholeWord = () => {\n RendererWorker.send('Search.toggleMatchWholeWord')\n}\n\nexport const replaceAll = () => {\n RendererWorker.send('Search.replaceAll')\n}\n\nexport const toggleUseRegularExpression = () => {\n RendererWorker.send('Search.toggleUseRegularExpression')\n}\n\nexport const handleReplaceInput = (value) => {\n RendererWorker.send('Search.handleReplaceInput', value)\n}\n\nexport const handleListFocus = () => {\n RendererWorker.send('Search.handleListFocus')\n}\n\nexport const handleListBlur = () => {\n RendererWorker.send('Search.handleListBlur')\n}\n", "import * as DomEventOptions from '../DomEventOptions/DomEventOptions.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as Event from '../Event/Event.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as MouseEventType from '../MouseEventType/MouseEventType.js'\nimport * as WheelEventType from '../WheelEventType/WheelEventType.js'\nimport * as ViewletSearchFunctions from './ViewletSearchFunctions.js'\n\nexport const handleInput = (event) => {\n const { target } = event\n const { value } = target\n ViewletSearchFunctions.handleInput(value)\n}\n\nexport const handleFocus = (event) => {\n Focus.setFocus('SearchInput')\n}\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst getIndexTreeItem = ($Target) => {\n return getNodeIndex($Target)\n}\n\nconst getIndexLabel = ($Target) => {\n return getNodeIndex($Target.parentNode)\n}\n\nconst getIndex = ($Target) => {\n switch ($Target.className) {\n case 'TreeItem':\n return getIndexTreeItem($Target)\n case 'Label':\n return getIndexLabel($Target)\n default:\n return -1\n }\n}\n\nexport const handleClick = (event) => {\n const { target, button } = event\n if (button === MouseEventType.RightClick) {\n return\n }\n const index = getIndex(target)\n ViewletSearchFunctions.handleClick(index)\n}\n\nexport const handleContextMenu = (event) => {\n Event.preventDefault(event)\n const { button, clientX, clientY } = event\n ViewletSearchFunctions.handleContextMenu(button, clientX, clientY)\n}\n\nexport const handleScrollBarThumbPointerMove = (event) => {\n const { clientY } = event\n ViewletSearchFunctions.handleScrollBarMove(clientY)\n}\n\nexport const handleScrollBarPointerUp = (event) => {\n const { target, pointerId } = event\n target.releasePointerCapture(pointerId)\n target.removeEventListener(DomEventType.PointerMove, handleScrollBarThumbPointerMove)\n target.removeEventListener(DomEventType.PointerUp, handleScrollBarPointerUp)\n}\n\nexport const handleScrollBarPointerDown = (event) => {\n const { target, pointerId, clientY } = event\n target.setPointerCapture(pointerId)\n target.addEventListener(DomEventType.PointerMove, handleScrollBarThumbPointerMove, DomEventOptions.Active)\n target.addEventListener(DomEventType.PointerUp, handleScrollBarPointerUp)\n ViewletSearchFunctions.handleScrollBarClick(clientY)\n}\n\nexport const handleToggleButtonClick = (event) => {\n ViewletSearchFunctions.toggleReplace()\n}\n\nexport const handleHeaderClick = (event) => {\n const { target } = event\n const { title } = target\n switch (title) {\n case 'Toggle Replace':\n ViewletSearchFunctions.toggleReplace()\n break\n case 'Match Case':\n ViewletSearchFunctions.toggleMatchCase()\n break\n case 'Use Regular Expression':\n ViewletSearchFunctions.toggleUseRegularExpression()\n break\n case 'Replace All':\n ViewletSearchFunctions.replaceAll()\n break\n case 'Match Whole Word':\n ViewletSearchFunctions.toggleMatchWholeWord()\n break\n default:\n break\n }\n // TODO better way to determine which button was clicked\n}\n\nexport const handleWheel = (event) => {\n const { deltaMode, deltaY } = event\n ViewletSearchFunctions.handleWheel(deltaMode, deltaY)\n}\n\nexport const handleReplaceInput = (event) => {\n const { target } = event\n const { value } = target\n ViewletSearchFunctions.handleReplaceInput(value)\n}\n\nexport const handleListFocus = (event) => {\n ViewletSearchFunctions.handleListFocus()\n}\n\nexport const handleListBlur = (event) => {\n ViewletSearchFunctions.handleListBlur()\n}\n", "import * as AriaBoolean from '../AriaBoolean/AriaBoolean.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as DirentType from '../DirentType/DirentType.js'\nimport * as DomAttributeType from '../DomAttributeType/DomAttributeType.js'\nimport * as DomEventOptions from '../DomEventOptions/DomEventOptions.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as EnterKeyHintType from '../EnterKeyHintType/EnterKeyHintType.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as Icon from '../Icon/Icon.js'\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as InputType from '../InputType/InputType.js'\nimport * as Label from '../Label/Label.js'\nimport * as MaskIcon from '../MaskIcon/MaskIcon.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\nimport * as ViewletSearchEvents from './ViewletSearchEvents.js'\n\nconst activeId = 'TreeItemActive'\nconst focusClassName = 'FocusOutline'\n\n/**\n * @enum {string}\n */\nconst UiStrings = {\n MatchCase: 'Match Case',\n MatchWholeWord: 'Match Whole Word',\n UseRegularExpression: 'Use Regular Expression',\n ToggleReplace: 'Toggle Replace',\n PreserveCase: 'Preserve Case',\n ReplaceAll: 'Replace All',\n}\n\nconst create$SearchFieldButton = (title, icon) => {\n const $Icon = MaskIcon.create(icon)\n const $Button = document.createElement('div')\n $Button.role = AriaRoles.CheckBox\n $Button.className = 'SearchFieldButton'\n $Button.title = title\n $Button.append($Icon)\n return $Button\n}\n\nexport const create = () => {\n // TODO vscode uses a textarea instead of an input\n // which is better because it supports multiline input\n // but it is difficult to implement because the vscode\n // textarea has a flexible max height.\n // The implementation uses a mirror dom element,\n // on text area input the text copied to the\n // mirror dom element, then the mirror dom element height\n // is measured and in turn applied to the text area.\n // This way the text area always has the smallest\n // necessary height value.\n const $ViewletSearchInput = InputBox.create()\n $ViewletSearchInput.classList.add('SearchFieldInput')\n $ViewletSearchInput.placeholder = 'Search'\n $ViewletSearchInput.type = InputType.Search\n $ViewletSearchInput.enterKeyHint = EnterKeyHintType.Search\n\n const $ButtonMatchCase = create$SearchFieldButton(UiStrings.MatchCase, Icon.CaseSensitive)\n const $ButtonMatchWholeWord = create$SearchFieldButton(UiStrings.MatchWholeWord, Icon.WholeWord)\n const $ButtonUseRegularExpression = create$SearchFieldButton(UiStrings.UseRegularExpression, Icon.Regex)\n\n const $SearchField = document.createElement('div')\n $SearchField.className = 'SearchField'\n $SearchField.append($ViewletSearchInput, $ButtonMatchCase, $ButtonMatchWholeWord, $ButtonUseRegularExpression)\n\n const $ToggleButton = document.createElement('button')\n $ToggleButton.className = 'SearchToggleButton'\n $ToggleButton.textContent = 'T'\n $ToggleButton.title = UiStrings.ToggleReplace\n\n const $SearchStatus = document.createElement('div')\n // @ts-ignore\n $SearchStatus.role = AriaRoles.Status\n $SearchStatus.className = 'ViewletSearchMessage'\n\n const $SearchHeader = document.createElement('div')\n $SearchHeader.className = 'SearchHeader'\n $SearchHeader.append($ToggleButton, $SearchField, $SearchStatus)\n\n const $ListItems = document.createElement('div')\n $ListItems.className = 'ListItems'\n $ListItems.role = AriaRoles.None\n // TODO onclick vs onmousedown, should be consistent in whole application\n\n const $ScrollBarThumb = document.createElement('div')\n $ScrollBarThumb.className = 'ScrollBarThumb'\n\n const $ScrollBar = document.createElement('div')\n $ScrollBar.className = 'ScrollBarSmall'\n $ScrollBar.append($ScrollBarThumb)\n\n const $List = document.createElement('div')\n $List.className = 'Viewlet List'\n $List.role = AriaRoles.Tree\n $List.tabIndex = 0\n $List.append($ListItems, $ScrollBar)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet Search'\n $Viewlet.append($SearchHeader, $List)\n\n return {\n $Viewlet,\n $ViewletSearchInput,\n $ListItems,\n $List,\n $SearchStatus,\n $ScrollBar,\n $ScrollBarThumb,\n $ToggleButton,\n $SearchHeader,\n $ViewletSearchReplaceInput: undefined,\n $SearchField,\n $ButtonMatchCase,\n $ButtonMatchWholeWord,\n $ButtonUseRegularExpression,\n }\n}\n\nexport const attachEvents = (state) => {\n const { $ViewletSearchInput, $ScrollBar, $SearchHeader, $List } = state\n $ViewletSearchInput.oninput = ViewletSearchEvents.handleInput\n $ViewletSearchInput.onfocus = ViewletSearchEvents.handleFocus\n\n $ScrollBar.onpointerdown = ViewletSearchEvents.handleScrollBarPointerDown\n\n $SearchHeader.onclick = ViewletSearchEvents.handleHeaderClick\n\n $List.onfocus = ViewletSearchEvents.handleListFocus\n $List.onblur = ViewletSearchEvents.handleListBlur\n $List.onmousedown = ViewletSearchEvents.handleClick\n $List.oncontextmenu = ViewletSearchEvents.handleContextMenu\n $List.addEventListener(DomEventType.Wheel, ViewletSearchEvents.handleWheel, DomEventOptions.Passive)\n}\n\nexport const refresh = (state, context) => {\n Assert.object(state)\n}\n\nexport const focus = (state) => {\n Assert.object(state)\n state.$ViewletSearchInput.focus()\n}\n\nconst create$Row = () => {\n const $Row = document.createElement('div')\n $Row.role = AriaRoles.TreeItem\n $Row.className = 'TreeItem'\n const $Label = Label.create('')\n const $Icon = document.createElement('i')\n $Row.append($Icon, $Label)\n return $Row\n}\n\n// TODO much duplication with explorer\nconst render$Row = ($Row, rowInfo, replacement) => {\n const { top, type, matchStart, matchLength, text, title, icon, setSize, posInSet, depth } = rowInfo\n const $Icon = $Row.childNodes[0]\n const $Label = $Row.childNodes[1]\n $Icon.className = `FileIcon${icon}`\n if (matchLength) {\n const before = text.slice(0, matchStart)\n const highlight = text.slice(matchStart, matchStart + matchLength)\n const after = text.slice(matchStart + matchLength)\n const $Before = document.createTextNode(before)\n const $Highlight = document.createElement('span')\n $Highlight.textContent = highlight\n const $After = document.createTextNode(after)\n if (replacement) {\n $Highlight.className = 'HighlightDeleted'\n const $Replacement = document.createElement('ins')\n $Replacement.className = 'HighlightInserted'\n $Replacement.textContent = replacement\n $Label.replaceChildren($Before, $Highlight, $Replacement, $After)\n } else {\n $Highlight.className = 'Highlight'\n $Label.replaceChildren($Before, $Highlight, $After)\n }\n } else {\n $Label.textContent = text\n }\n $Row.title = title\n $Row.ariaSetSize = `${setSize}`\n $Row.ariaLevel = `${depth}`\n $Row.ariaPosInSet = `${posInSet}`\n $Row.ariaLabel = rowInfo.name\n $Row.ariaDescription = ''\n SetBounds.setTop($Row, top)\n switch (type) {\n // TODO type should be a number for efficiency\n case DirentType.Directory:\n $Row.ariaExpanded = AriaBoolean.False\n break\n case DirentType.DirectoryExpanded:\n $Row.ariaExpanded = AriaBoolean.True\n break\n case DirentType.File:\n $Row.ariaExpanded = undefined\n break\n default:\n break\n }\n}\n\nconst render$RowsLess = ($Rows, rowInfos, replacement) => {\n for (let i = 0; i < $Rows.children.length; i++) {\n render$Row($Rows.children[i], rowInfos[i])\n }\n const fragment = document.createDocumentFragment()\n for (let i = $Rows.children.length; i < rowInfos.length; i++) {\n const $Row = create$Row()\n render$Row($Row, rowInfos[i], replacement)\n fragment.append($Row)\n }\n $Rows.append(fragment)\n}\n\nconst render$RowsEqual = ($Rows, rowInfos, replacement) => {\n for (let i = 0; i < rowInfos.length; i++) {\n render$Row($Rows.children[i], rowInfos[i], replacement)\n }\n}\n\nconst render$RowsMore = ($Rows, rowInfos, replacement) => {\n for (let i = 0; i < rowInfos.length; i++) {\n render$Row($Rows.children[i], rowInfos[i], replacement)\n }\n const diff = $Rows.children.length - rowInfos.length\n for (let i = 0; i < diff; i++) {\n $Rows.lastChild.remove()\n }\n}\n\nconst render$Rows = ($Rows, rowInfos, replacment) => {\n if ($Rows.children.length < rowInfos.length) {\n render$RowsLess($Rows, rowInfos, replacment)\n } else if ($Rows.children.length === rowInfos.length) {\n render$RowsEqual($Rows, rowInfos, replacment)\n } else {\n render$RowsMore($Rows, rowInfos, replacment)\n }\n}\n\nexport const setResults = (state, results, replacement) => {\n Assert.object(state)\n Assert.array(results)\n const { $ListItems } = state\n // TODO should recycle nodes when rendering only search results\n // maybe could also recycle node from noResults and vice versa\n render$Rows($ListItems, results, replacement)\n}\n\nexport const setMessage = (state, message) => {\n const { $SearchStatus } = state\n // TODO recycle text node\n $SearchStatus.textContent = message\n}\n\nexport const setValue = (state, value) => {\n const { $ViewletSearchInput } = state\n $ViewletSearchInput.value = value\n}\n\nexport const dispose = () => {}\n\n// TODO duplicate code with extensions list\n\nexport const setContentHeight = (state, height) => {\n const { $ListItems } = state\n SetBounds.setHeight($ListItems, height)\n}\n\nexport const setNegativeMargin = (state, negativeMargin) => {\n const { $ListItems } = state\n SetBounds.setTop($ListItems, negativeMargin)\n}\n\nconst create$ReplaceField = () => {\n const $Row = document.createElement('div')\n $Row.className = 'SearchField'\n const $ButtonReplaceAllIcon = MaskIcon.create(Icon.ReplaceAll)\n const $ButtonReplaceAll = document.createElement('button')\n $ButtonReplaceAll.title = UiStrings.ReplaceAll\n $ButtonReplaceAll.className = 'SearchFieldButton'\n $ButtonReplaceAll.append($ButtonReplaceAllIcon)\n\n const $ViewletSearchReplaceInput = InputBox.create()\n $ViewletSearchReplaceInput.placeholder = 'Replace'\n $ViewletSearchReplaceInput.type = 'text'\n $ViewletSearchReplaceInput.oninput = ViewletSearchEvents.handleReplaceInput\n\n const $ButtonPreserveCase = document.createElement('button')\n $ButtonPreserveCase.title = UiStrings.PreserveCase\n const $IconPreserveCase = MaskIcon.create(Icon.ArrowDown)\n $ButtonPreserveCase.append($IconPreserveCase)\n\n $Row.append($ViewletSearchReplaceInput, $ButtonReplaceAll)\n return $Row\n}\n\nexport const setReplaceExpanded = (state, replaceExpanded) => {\n console.log('set expanded', replaceExpanded)\n const { $ViewletSearchReplaceInput, $ToggleButton, $SearchField, $ViewletSearchInput } = state\n if (replaceExpanded) {\n $ToggleButton.ariaExpanded = true\n const $ViewletSearchReplaceInput = create$ReplaceField()\n $SearchField.after($ViewletSearchReplaceInput)\n state.$ViewletSearchReplaceInput = $ViewletSearchReplaceInput\n // TODO add it\n } else {\n $ToggleButton.ariaExpanded = false\n $ViewletSearchReplaceInput.remove()\n state.$ViewletSearchReplaceInput = undefined\n // TODO remove it\n }\n}\n\nexport const setButtonsChecked = (state, matchWholeWord, useRegularExpression, matchCase) => {\n console.log({ matchWholeWord, useRegularExpression, matchCase })\n const { $ButtonMatchWholeWord, $ButtonUseRegularExpression, $ButtonMatchCase } = state\n $ButtonMatchWholeWord.ariaChecked = matchWholeWord\n $ButtonUseRegularExpression.ariaChecked = useRegularExpression\n $ButtonMatchCase.ariaChecked = matchCase\n}\n\nexport const setFocusedIndex = (state, oldIndex, newIndex, focused) => {\n const { $List, $ListItems } = state\n switch (oldIndex) {\n case -2:\n break\n case -1:\n $List.classList.remove(focusClassName)\n break\n default:\n const $Dirent = $ListItems.children[oldIndex]\n if ($Dirent) {\n $Dirent.classList.remove(focusClassName)\n $Dirent.removeAttribute('id')\n }\n break\n }\n switch (newIndex) {\n case -2:\n $List.classList.remove(focusClassName)\n $List.removeAttribute(DomAttributeType.AriaActiveDescendant)\n break\n case -1:\n if (focused) {\n $List.classList.add(focusClassName)\n $List.removeAttribute(DomAttributeType.AriaActiveDescendant)\n }\n break\n default:\n if (newIndex >= 0) {\n const $Dirent = $ListItems.children[newIndex]\n if (!$Dirent) {\n break\n }\n $Dirent.id = activeId\n $List.setAttribute(DomAttributeType.AriaActiveDescendant, activeId)\n if (focused) {\n $Dirent.classList.add(focusClassName)\n }\n }\n break\n }\n if (focused) {\n $List.focus()\n Focus.setFocus('SearchResults')\n }\n}\n\nexport * from '../ViewletScrollable/ViewletScrollable.js'\n", "import * as Actions from '../Actions/Actions.js'\nimport * as AriaRoleDescriptionType from '../AriaRoleDescriptionType/AriaRoleDescriptionType.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as Assert from '../Assert/Assert.js'\n\nexport const create = () => {\n const $SideBarTitleAreaTitle = document.createElement('h2')\n $SideBarTitleAreaTitle.id = 'SideBarTitleAreaTitle'\n\n const $SideBarTitleAreaButtons = document.createElement('div')\n $SideBarTitleAreaButtons.id = 'SideBarTitleAreaButtons'\n\n const $SideBarTitleArea = document.createElement('div')\n $SideBarTitleArea.id = 'SideBarTitleArea'\n $SideBarTitleArea.append($SideBarTitleAreaTitle, $SideBarTitleAreaButtons)\n\n // const $SideBarContent = document.createElement('div')\n // $SideBarContent.id = 'SideBarContent'\n\n const $Viewlet = document.createElement('div')\n $Viewlet.id = 'SideBar'\n $Viewlet.className = 'Viewlet SideBar'\n $Viewlet.role = AriaRoles.Complementary\n $Viewlet.ariaRoleDescription = AriaRoleDescriptionType.SideBar\n $Viewlet.append($SideBarTitleArea)\n\n return {\n $Viewlet,\n $SideBar: $Viewlet,\n $SideBarTitleArea,\n $SideBarTitleAreaButtons,\n $SideBarContent: undefined,\n $SideBarTitleAreaTitle,\n $Actions: undefined,\n }\n}\n\nexport const dispose = (state) => {\n Assert.object(state)\n state.$SideBar.replaceChildren()\n}\n\nexport const appendViewlet = (state, name, $Viewlet) => {\n Assert.object(state)\n Assert.string(name)\n const $SideBarTitleAreaTitle = state.$SideBarTitleAreaTitle\n $SideBarTitleAreaTitle.title = name\n $SideBarTitleAreaTitle.textContent = name\n // TODO is it a problem that the id is duplicated for a short amount of time here?\n $Viewlet.id = 'SideBarContent'\n if (state.$SideBarContent) {\n state.$SideBarContent.replaceWith($Viewlet)\n } else {\n state.$SideBar.append($Viewlet)\n }\n state.$SideBarContent = $Viewlet\n}\n\nexport const setTitle = (state, name) => {\n const { $SideBarTitleAreaTitle } = state\n $SideBarTitleAreaTitle.title = name\n $SideBarTitleAreaTitle.textContent = name\n}\n\nexport const setActions = (state, actions) => {\n const { $SideBarTitleArea, $Actions } = state\n const $NewActions = Actions.create(actions)\n if ($Actions) {\n $Actions.replaceWith($NewActions)\n } else {\n $SideBarTitleArea.append($NewActions)\n }\n state.$Actions = $NewActions\n}\n\nexport const focus = async () => {\n // await\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleInput = (value) => {\n RendererWorker.send('SimpleBrowser.handleInput', value)\n}\n\nexport const forward = () => {\n RendererWorker.send('SimpleBrowser.forward')\n}\n\nexport const backward = () => {\n RendererWorker.send('SimpleBrowser.backward')\n}\n\nexport const reload = () => {\n RendererWorker.send('SimpleBrowser.reload')\n}\n\nexport const cancelNavigation = () => {\n RendererWorker.send('SimpleBrowser.cancelNavigation')\n}\n\nexport const openExternal = () => {\n RendererWorker.send('SimpleBrowser.openExternal')\n}\n", "import * as Focus from '../Focus/Focus.js'\nimport * as ViewletSimpleBrowserFunctions from './ViewletSimpleBrowserFunctions.js'\n\nexport const handleInput = (event) => {\n const { target } = event\n const { value } = target\n ViewletSimpleBrowserFunctions.handleInput(value)\n}\n\nexport const handleFocus = (event) => {\n const { target } = event\n Focus.setFocus('SimpleBrowserInput')\n setTimeout(() => {\n target.select()\n })\n}\n\nexport const handleBlur = (event) => {\n const { target } = event\n target.setSelectionRange(0, 0)\n}\n\nexport const handleClickForward = () => {\n ViewletSimpleBrowserFunctions.forward()\n}\n\nexport const handleClickBackward = () => {\n ViewletSimpleBrowserFunctions.backward()\n}\n\nexport const handleClickReload = (event) => {\n const { target } = event\n // TODO maybe set data attribute to check if it is a cancel button\n if (target.title === 'Cancel') {\n ViewletSimpleBrowserFunctions.cancelNavigation()\n } else {\n ViewletSimpleBrowserFunctions.reload()\n }\n}\n\nexport const handleClickOpenExternal = () => {\n ViewletSimpleBrowserFunctions.openExternal()\n}\n", "import * as EnterKeyHintType from '../EnterKeyHintType/EnterKeyHintType.js'\nimport * as Icon from '../Icon/Icon.js'\nimport * as IconButton from '../IconButton/IconButton.js'\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as InputType from '../InputType/InputType.js'\nimport * as MaskImage from '../MaskImage/MaskImage.js'\nimport * as ViewletSimpleBrowserEvents from './ViewletSimpleBrowserEvents.js'\n\n/**\n * @enum {string}\n */\nconst UiStrings = {\n Back: 'Back',\n Forward: 'Forward',\n Reload: 'Reload',\n OpenExternal: 'Open External',\n Cancel: 'Cancel',\n}\n\nexport const create = () => {\n const $ButtonBack = IconButton.create$Button(UiStrings.Back, Icon.ArrowLeft)\n $ButtonBack.onclick = ViewletSimpleBrowserEvents.handleClickBackward\n\n const $ButtonForward = IconButton.create$Button(UiStrings.Forward, Icon.ArrowRight)\n $ButtonForward.onclick = ViewletSimpleBrowserEvents.handleClickForward\n\n const $ButtonReload = IconButton.create$Button(UiStrings.Reload, Icon.Refresh)\n $ButtonReload.onclick = ViewletSimpleBrowserEvents.handleClickReload\n\n const $InputBox = InputBox.create()\n $InputBox.type = InputType.Url\n $InputBox.enterKeyHint = EnterKeyHintType.Go\n $InputBox.oninput = ViewletSimpleBrowserEvents.handleInput\n $InputBox.onfocus = ViewletSimpleBrowserEvents.handleFocus\n $InputBox.onblur = ViewletSimpleBrowserEvents.handleBlur\n\n const $ButtonOpenExternal = IconButton.create$Button(UiStrings.OpenExternal, Icon.LinkExternal)\n $ButtonOpenExternal.onclick = ViewletSimpleBrowserEvents.handleClickOpenExternal\n\n const $SimpleBrowserHeader = document.createElement('div')\n $SimpleBrowserHeader.className = 'SimpleBrowserHeader'\n $SimpleBrowserHeader.append($ButtonBack, $ButtonForward, $ButtonReload, $InputBox, $ButtonOpenExternal)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet SimpleBrowser'\n $Viewlet.append($SimpleBrowserHeader)\n return {\n $Viewlet,\n $InputBox,\n $ButtonBack,\n $ButtonForward,\n $ButtonReload,\n }\n}\n\nexport const setIframeSrc = (state, iframeSrc) => {\n const { $InputBox } = state\n if ($InputBox.value === iframeSrc) {\n return\n }\n $InputBox.value = iframeSrc\n}\n\nexport const setButtonsEnabled = (state, canGoBack, canGoForward) => {\n const { $ButtonForward, $ButtonBack } = state\n $ButtonBack.disabled = !canGoBack\n $ButtonForward.disabled = !canGoForward\n}\n\nexport const setLoading = (state, loading) => {\n const { $ButtonReload } = state\n const $Icon = $ButtonReload.firstChild\n if (loading) {\n $ButtonReload.title = UiStrings.Cancel\n MaskImage.setMaskImage($Icon, Icon.Close)\n } else {\n $ButtonReload.title = UiStrings.Reload\n MaskImage.setMaskImage($Icon, Icon.Refresh)\n }\n}\n\nexport const dispose = (state) => {}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\n/**\n * @param {string} value\n */\nexport const handleInput = (value) => {\n RendererWorker.send('Source Control.handleInput', value)\n}\n\n/**\n * @param {number} index\n */\nexport const handleMouseOver = (index) => {\n RendererWorker.send('Source Control.handleMouseOver', index)\n}\n\n/**\n * @param {number} index\n */\nexport const handleMouseOut = (index) => {\n RendererWorker.send('Source Control.handleMouseOut', index)\n}\n\n/**\n * @param {number} index\n */\nexport const handleClick = (index) => {\n RendererWorker.send('Source Control.handleClick', index)\n}\n\n/**\n * @param {number} index\n */\nexport const handleButtonClick = (index) => {\n RendererWorker.send('Source Control.handleButtonClick', index)\n}\n\n/**\n * @param {number} index\n */\nexport const handleClickAdd = (index) => {\n RendererWorker.send('Source Control.handleClickAdd', index)\n}\n\n/**\n * @param {number} index\n */\nexport const handleClickRestore = (index) => {\n RendererWorker.send('Source Control.handleClickRestore', index)\n}\n\n/**\n * @param {number} index\n */\nexport const handleClickOpenFile = (index) => {\n RendererWorker.send('Source Control.handleClickOpenFile', index)\n}\n\nexport const handleContextMenu = (button, x, y) => {\n RendererWorker.send('Source Control.handleContextMenu', button, x, y)\n}\n", "import { findIndex } from '../../shared/findIndex.js'\nimport * as Event from '../Event/Event.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as ViewletSourceControlFunctions from './ViewletSourceControlFunctions.js'\n\nexport const handleFocus = () => {\n Focus.setFocus('sourceControlInput')\n}\n\nconst getButtonIndex = ($Node) => {\n let index = -1\n while ($Node) {\n if ($Node.className !== 'SourceControlButton') {\n break\n }\n $Node = $Node.previousElementSibling\n index++\n }\n return index\n}\n\nexport const handleClick = (event) => {\n const { target } = event\n if (target.className === 'SourceControlButton') {\n const index = getButtonIndex(target)\n ViewletSourceControlFunctions.handleButtonClick(index)\n return\n }\n const $Parent = target.closest('.SourceControlItems')\n const index = findIndex($Parent, target)\n if (index === -1) {\n return\n }\n ViewletSourceControlFunctions.handleClick(index)\n}\n\nexport const handleMouseOver = (event) => {\n const { target } = event\n const $Parent = target.closest('.SourceControlItems')\n const index = findIndex($Parent, target)\n ViewletSourceControlFunctions.handleMouseOver(index)\n}\n\nexport const handleMouseOut = (event) => {\n const { target, relatedTarget } = event\n const $Parent = relatedTarget.closest('.SourceControlItems')\n if (!$Parent) {\n ViewletSourceControlFunctions.handleMouseOut(-1)\n return\n }\n const index = findIndex($Parent, target)\n ViewletSourceControlFunctions.handleMouseOut(index)\n}\n\nexport const handleContextMenu = (event) => {\n Event.preventDefault(event)\n const { button, clientX, clientY } = event\n ViewletSourceControlFunctions.handleContextMenu(button, clientX, clientY)\n}\n\nexport const handleInput = (event) => {\n const { target } = event\n const { value } = target\n ViewletSourceControlFunctions.handleInput(value)\n}\n", "import * as AriaBoolean from '../AriaBoolean/AriaBoolean.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as IconButton from '../IconButton/IconButton.js'\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as KeyBindings from '../KeyBindings/KeyBindings.js'\nimport * as Logger from '../Logger/Logger.js'\nimport * as MaskIcon from '../MaskIcon/MaskIcon.js'\nimport * as ViewletSourceControlEvents from './ViewletSourceControlEvents.js'\n\nconst create$ItemFile = (item) => {\n const $FileIcon = document.createElement('div')\n $FileIcon.className = `FileIcon${item.icon}`\n\n const $LabelDetail = document.createElement('span')\n $LabelDetail.className = 'LabelDetail'\n $LabelDetail.textContent = item.detail\n\n const $Label = document.createElement('div')\n $Label.className = 'Label'\n $Label.textContent = item.label\n $Label.append($LabelDetail)\n\n const $Item = document.createElement('div')\n $Item.className = 'TreeItem'\n $Item.role = AriaRoles.TreeItem\n $Item.ariaPosInSet = item.posInSet\n $Item.ariaSetSize = item.setSize\n $Item.title = item.file\n $Item.append($FileIcon, $Label)\n\n if (item.decorationIcon) {\n const $DecorationIcon = document.createElement('img')\n $DecorationIcon.className = 'DecorationIcon'\n $DecorationIcon.src = item.decorationIcon\n $DecorationIcon.title = item.decorationIconTitle\n $Item.append($DecorationIcon)\n }\n if (item.decorationStrikeThrough) {\n $Label.classList.add('StrikeThrough')\n }\n\n // TODO use same virtual list as for explorer\n return $Item\n}\n\nconst create$ItemDirectory = (item) => {\n const $Icon = document.createElement('div')\n $Icon.className = 'Chevron'\n $Icon.append(MaskIcon.create(item.icon))\n\n const $Label = document.createElement('div')\n $Label.className = 'Label'\n $Label.textContent = item.label\n\n const $Badge = document.createElement('div')\n $Badge.className = 'SourceControlBadge'\n $Badge.textContent = item.badgeCount\n\n const $Item = document.createElement('div')\n $Item.className = 'TreeItem'\n $Item.role = AriaRoles.TreeItem\n $Item.ariaExpanded = item.type === 'directory-expanded' ? AriaBoolean.True : AriaBoolean.False\n $Item.ariaPosInSet = item.posInSet\n $Item.ariaSetSize = item.setSize\n $Item.append($Icon, $Label, $Badge)\n\n return $Item\n}\n\nconst create$Item = (item) => {\n switch (item.type) {\n case 'file':\n return create$ItemFile(item)\n case 'directory':\n case 'directory-expanded':\n return create$ItemDirectory(item)\n default:\n return undefined\n }\n}\n\nconst getPlaceHolderText = () => {\n return `Message (${KeyBindings.lookupKeyBinding('scm.acceptInput')} to commit on 'master'`\n}\n\nexport const create = () => {\n const $ViewSourceControlInput = InputBox.create()\n $ViewSourceControlInput.placeholder = getPlaceHolderText()\n $ViewSourceControlInput.ariaLabel = 'Source Control Input'\n\n const $SourceControlHeader = document.createElement('div')\n $SourceControlHeader.className = 'SourceControlHeader'\n $SourceControlHeader.append($ViewSourceControlInput)\n\n const $ViewletTree = document.createElement('div')\n $ViewletTree.className = 'SourceControlItems'\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet SourceControl'\n $Viewlet.tabIndex = 0\n $Viewlet.append($SourceControlHeader, $ViewletTree)\n return {\n $Viewlet,\n $ViewletTree,\n $ViewSourceControlInput,\n }\n}\n\nexport const attachEvents = (state) => {\n const { $ViewletTree, $ViewSourceControlInput } = state\n\n $ViewSourceControlInput.onfocus = ViewletSourceControlEvents.handleFocus\n $ViewSourceControlInput.oninput = ViewletSourceControlEvents.handleInput\n\n $ViewletTree.onclick = ViewletSourceControlEvents.handleClick\n $ViewletTree.oncontextmenu = ViewletSourceControlEvents.handleContextMenu\n $ViewletTree.onmouseover = ViewletSourceControlEvents.handleMouseOver\n $ViewletTree.onmouseout = ViewletSourceControlEvents.handleMouseOut\n}\n\nexport const dispose = () => {}\n\nexport const setChangedFiles = (state, workingTree) => {\n Assert.object(state)\n Assert.array(workingTree)\n const $$Entries = workingTree.map(create$Item)\n const { $ViewletTree } = state\n $ViewletTree.replaceChildren(...$$Entries)\n}\n\nexport const setError = (state, error) => {\n Assert.object(state)\n Assert.string(error)\n const $Error = document.createElement('div')\n $Error.className = 'Error'\n $Error.textContent = error\n const { $ViewletTree } = state\n $ViewletTree.append($Error)\n}\n\nexport const setInputValue = (state, value) => {\n const { $ViewSourceControlInput } = state\n $ViewSourceControlInput.value = value\n}\n\nexport const focus = (state) => {\n const { $ViewSourceControlInput } = state\n $ViewSourceControlInput.focus()\n}\n\nconst create$Button = (button) => {\n const $Button = IconButton.create$Button(button.label, button.icon)\n $Button.className = 'SourceControlButton'\n return $Button\n}\n\nconst isLabel = ($Element) => {\n return $Element.className === 'Label'\n}\n\nconst findLabel = ($Children) => {\n for (const $Child of $Children) {\n if (isLabel($Child)) {\n return $Child\n }\n }\n return undefined\n}\n\nconst isSourceControlButton = ($Element) => {\n return $Element.className === 'SourceControlButton'\n}\n\nconst removeItemButtons = ($Label) => {\n let $Node = $Label\n while ($Node) {\n const $Next = $Node.nextElementSibling\n if (isSourceControlButton($Node)) {\n $Node.remove()\n }\n $Node = $Next\n }\n}\n\nexport const setItemButtons = (state, oldIndex, index, buttons) => {\n Assert.number(index)\n Assert.array(buttons)\n const { $ViewletTree } = state\n if (oldIndex !== -1) {\n const $OldItem = $ViewletTree.children[oldIndex]\n if ($OldItem) {\n const $OldLabel = findLabel($OldItem.children)\n removeItemButtons($OldLabel)\n }\n }\n if (index === -1) {\n return\n }\n const $Item = $ViewletTree.children[index]\n if (!$Item) {\n Logger.warn(`no source control item found at index ${index}`)\n return\n }\n const $Label = findLabel($Item.children)\n if (!$Label) {\n return\n }\n removeItemButtons($Label)\n // TODO handle icon loading error?\n $Label.after(...buttons.map(create$Button))\n}\n", "import * as AriaRoleDescriptionType from '../AriaRoleDescriptionType/AriaRoleDescriptionType.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as Logger from '../Logger/Logger.js'\nimport * as MaskImage from '../MaskImage/MaskImage.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nconst getIconClassName = (icon) => {\n switch (icon) {\n case '$(sync-spin)':\n case '$(sync~spin)':\n return 'StatusBarIcon AnimationSpin'\n case '$(sync)':\n return 'StatusBarIcon'\n case '$(source-control)':\n return 'StatusBarIcon'\n default:\n Logger.warn(`unknown icon \"${icon}\"`)\n return ''\n }\n}\n\nconst getMaskImageUrl = (icon) => {\n switch (icon) {\n case '$(sync-spin)':\n case '$(sync~spin)':\n case '$(sync)':\n return 'url(/icons/icon-sync.svg)'\n case '$(source-control)':\n return 'url(/icons/icon-source-control.svg)'\n default:\n return ''\n }\n}\n\nconst create$StatusBarItem = (item) => {\n const $StatusBarItem = document.createElement('li')\n $StatusBarItem.className = 'StatusBarItem'\n $StatusBarItem.role = AriaRoles.Button\n $StatusBarItem.dataset.name = item.name\n $StatusBarItem.tabIndex = -1\n $StatusBarItem.textContent = item.text\n $StatusBarItem.dataset.command = item.command\n if (item.tooltip) {\n $StatusBarItem.title = item.tooltip\n }\n if (item.icon) {\n const $StatusBarItemIcon = document.createElement('span')\n $StatusBarItemIcon.className = getIconClassName(item.icon)\n MaskImage.setMaskImage($StatusBarItemIcon, item.icon)\n $StatusBarItem.prepend($StatusBarItemIcon)\n }\n return $StatusBarItem\n}\n\nconst handleClick = (event) => {\n const $Target = event.target\n if ($Target.className !== 'StatusBarItem') {\n return\n }\n const command = Number.parseInt($Target.dataset.command, 10)\n RendererWorker.send(command)\n}\n\n// TODO get items from renderer worker\n// const statusBarItemsLeft = [\n// {\n// name: 'RunTests',\n// text: 'Run Tests',\n// tooltip: '',\n// command: 909021,\n// },\n// ]\n\n// const statusBarItemsRight = []\n\nexport const create = (statusBarItemsLeft, statusBarItemsRight) => {\n const $StatusBarItemsLeft = document.createElement('ul')\n $StatusBarItemsLeft.id = 'StatusBarItemsLeft'\n\n const $StatusBarItemsRight = document.createElement('ul')\n $StatusBarItemsRight.id = 'StatusBarItemsRight'\n\n const $Viewlet = document.createElement('div')\n $Viewlet.id = 'StatusBar'\n $Viewlet.className = 'Viewlet StatusBar'\n $Viewlet.onclick = handleClick\n $Viewlet.tabIndex = 0\n $Viewlet.role = AriaRoles.Status\n $Viewlet.ariaRoleDescription = AriaRoleDescriptionType.StatusBar\n $Viewlet.ariaLive = 'off' // see https://github.com/microsoft/vscode/issues/94677\n $Viewlet.append($StatusBarItemsLeft, $StatusBarItemsRight)\n\n return {\n $Viewlet,\n $StatusBar: $Viewlet,\n $StatusBarItemsLeft,\n $StatusBarItemsRight,\n }\n}\n\nconst clearNode = (node) => {\n while (node.firstChild) {\n node.firstChild.remove()\n }\n}\n\nexport const setItems = (state, statusBarItemsLeft, statusBarItemsRight) => {\n const $StatusBarItemsLeft = state.$StatusBarItemsLeft\n const $StatusBarItemsRight = state.$StatusBarItemsRight\n clearNode($StatusBarItemsLeft)\n clearNode($StatusBarItemsRight)\n $StatusBarItemsLeft.append(...statusBarItemsLeft.map(create$StatusBarItem))\n $StatusBarItemsRight.append(...statusBarItemsRight.map(create$StatusBarItem))\n}\n\nexport const focus = (state) => {\n Assert.object(state)\n state.$StatusBar.focus()\n}\n", "const BACKGROUND = \"#c00ccc\";\nconst CHAR_WIDTH = 12;\nconst CHAR_HEIGHT = 15;\nconst createDrawCursor = (canvas) => {\n const ctx = canvas.getContext(\"2d\");\n let previousX = -1;\n let previousY = -1;\n let previousCursorStyle = -1;\n const drawCursor = (x, y, cursorVisible, cursorStyle) => {\n if (cursorVisible) {\n if (previousX === x && previousY === y && previousCursorStyle === cursorStyle) {\n return;\n }\n ctx.clearRect(previousX * CHAR_WIDTH, previousY * CHAR_HEIGHT, CHAR_WIDTH, CHAR_HEIGHT);\n switch (cursorStyle) {\n case 1:\n break;\n case 2:\n ctx.fillStyle = BACKGROUND;\n ctx.fillRect(x * CHAR_WIDTH, y * CHAR_HEIGHT, CHAR_WIDTH, CHAR_HEIGHT);\n break;\n case 3:\n break;\n case 4:\n ctx.strokeStyle = BACKGROUND;\n ctx.strokeRect(x * CHAR_WIDTH, y * CHAR_HEIGHT, CHAR_WIDTH, CHAR_HEIGHT);\n break;\n }\n previousX = x;\n previousY = y;\n } else {\n ctx.clearRect(previousX * CHAR_WIDTH, previousY * CHAR_HEIGHT, CHAR_WIDTH, CHAR_HEIGHT);\n }\n };\n return drawCursor;\n};\nconst CHAR_WIDTH$1 = 12;\nconst CHAR_HEIGHT$1 = 15;\nconst BACKGROUND$1 = \"#000000\";\nconst supportsOffscreenCanvas = (() => {\n try {\n const canvas = new OffscreenCanvas(CHAR_WIDTH$1, CHAR_HEIGHT$1);\n canvas.getContext(\"2d\");\n return true;\n } catch {\n return false;\n }\n})();\nconst supportsTransferToImageBitMap = (() => {\n try {\n supportsOffscreenCanvas ? (() => {\n const canvas = new OffscreenCanvas(CHAR_WIDTH$1, CHAR_HEIGHT$1);\n canvas.getContext(\"2d\");\n canvas.transferToImageBitmap();\n })() : (() => {\n const canvas = document.createElement(\"canvas\");\n canvas.width = CHAR_WIDTH$1;\n canvas.height = CHAR_HEIGHT$1;\n canvas.transferToImageBitmap();\n })();\n return true;\n } catch {\n return false;\n }\n})();\nself.supportsTransferToImageBitMap = supportsTransferToImageBitMap;\nconst tmpCanvas = supportsOffscreenCanvas ? new OffscreenCanvas(CHAR_WIDTH$1, CHAR_HEIGHT$1) : (() => {\n const canvas = document.createElement(\"canvas\");\n canvas.width = CHAR_WIDTH$1;\n canvas.height = CHAR_HEIGHT$1;\n return canvas;\n})();\nconst tmpCtx = tmpCanvas.getContext(\"2d\", {\n alpha: false\n});\nconst bitmapCache = Object.create(null);\nconst createDrawLines = (canvas, lines, bufferLines, offsets, attributes, rows, cols) => {\n const ctx = canvas.getContext(\"2d\", {\n alpha: false\n });\n ctx.fillStyle = BACKGROUND$1;\n const drawChar = (char, x, y, background, foreground) => {\n if (char === \" \" && background === \"#000000\") {\n return;\n }\n const cacheKey = `${char}${background}${foreground}`;\n if (!(cacheKey in bitmapCache)) {\n tmpCtx.fillStyle = background;\n tmpCtx.fillRect(0, 0, CHAR_WIDTH$1, CHAR_HEIGHT$1);\n tmpCtx.font = `${CHAR_HEIGHT$1}px monospace`;\n tmpCtx.fillStyle = foreground;\n tmpCtx.fillText(char, 0, CHAR_HEIGHT$1);\n bitmapCache[cacheKey] = supportsTransferToImageBitMap ? tmpCanvas.transferToImageBitmap() : tmpCtx.getImageData(0, 0, CHAR_WIDTH$1, CHAR_HEIGHT$1);\n }\n supportsTransferToImageBitMap ? ctx.drawImage(bitmapCache[cacheKey], x * CHAR_WIDTH$1, y * CHAR_HEIGHT$1) : ctx.putImageData(bitmapCache[cacheKey], x * CHAR_WIDTH$1, y * CHAR_HEIGHT$1);\n };\n const getChars = (y) => {\n const text = new TextDecoder().decode(lines[y].subarray(0, offsets[y]));\n const chars = [...text];\n return chars;\n };\n const drawLine = (bufferY, positionY) => {\n let x = -1;\n const chars = getChars(bufferY);\n const attributesOnLine = attributes[bufferY] || {};\n let currentAttributes = {\n foreground: \"#ffffff\",\n background: \"#000000\"\n };\n while (++x < chars.length) {\n currentAttributes = attributesOnLine[x] || currentAttributes;\n const char = chars[x];\n const background = currentAttributes.background || \"#000000\";\n const foreground = currentAttributes.foreground || \"#ffffff\";\n drawChar(char, x, positionY, background, foreground);\n }\n };\n const clearLines = (x, y, width, height) => {\n ctx.fillRect(x * CHAR_WIDTH$1, y * CHAR_HEIGHT$1, width * CHAR_WIDTH$1, height * CHAR_HEIGHT$1);\n };\n const drawLines = (start, end, bufferYEnd) => {\n clearLines(0, start, cols, end - start);\n if (bufferYEnd < rows) {\n for (let i = 0; i < rows - bufferYEnd; i++) {\n drawLine(bufferLines - i - 1, rows - i);\n }\n for (let i = 0; i < bufferYEnd + 1; i++) {\n drawLine(i, rows - (bufferYEnd - i));\n }\n } else {\n for (let i = 0; i < rows; i++) {\n drawLine(bufferYEnd - i, rows - i);\n }\n }\n };\n return drawLines;\n};\nconst State = {\n TopLevelContent: 1,\n Escaped: 2,\n Csi: 3,\n AfterEscape3: 4,\n Charset: 5,\n AfterEscape3AfterSemicolon: 6,\n Osc: 8,\n Dcs: 9,\n AfterQuestionMark: 10,\n AfterQuestionMark2: 11,\n AfterExclamationMark: 12,\n AfterExclamationMark2: 13,\n AfterSpace: 14,\n AfterSpace2: 15,\n Osc2: 16,\n Osc3: 17\n};\nconst parse = (array, {\n eraseInDisplay,\n eraseToEndOfLine,\n goToHome,\n setCharAttributes,\n bell,\n cursorUp,\n cursorDown,\n cursorRight,\n cursorLeft,\n backspace,\n print,\n setGLevel,\n saveCursor,\n restoreCursor,\n index,\n tabSet,\n reverseIndex,\n keypadApplicationMode,\n keypadNumericMode,\n fullReset,\n nextLine,\n carriageReturn,\n deleteCharacters,\n setWindowTitle,\n cursorPosition,\n softTerminalReset,\n cursorNextLine,\n cursorPrecedingLine,\n cursorCharacterAbsolute,\n cursorForwardTabulation,\n cursorBackwardTabulation,\n insertLines,\n deleteLines,\n scrollUp,\n scrollDown,\n eraseCharacters,\n characterPositionAbsolute,\n characterPositionRelative,\n repeatPrecedingGraphicCharacter,\n sendDeviceAttributesPrimary,\n sendDeviceAttributesTertiary,\n linePositionAbsolute,\n eraseInLine,\n linePositionRelative,\n horizontalAndVerticalPosition,\n tabClear,\n setMode,\n resetMode,\n lineFeed,\n privateModeSet,\n privateModeReset,\n setCursorStyle,\n shiftLeftColumns,\n insertBlankCharacters,\n setTextParameters\n}) => {\n if (!(array instanceof Uint8Array)) {\n throw new Error(\"invalid data, must be of type Uint8Array\");\n }\n let state = State.TopLevelContent;\n let i = 0;\n let currentParam = 0;\n let params = [];\n let printStartIndex = -1;\n while (i < array.length) {\n switch (state) {\n case State.TopLevelContent:\n middle:\n switch (array[i]) {\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 6:\n i++;\n break;\n case 7:\n bell();\n i++;\n break;\n case 8:\n backspace();\n i++;\n break;\n case 9:\n i++;\n break;\n case 10:\n lineFeed();\n i++;\n break;\n case 11:\n case 12:\n i++;\n break;\n case 13:\n carriageReturn();\n i++;\n break;\n case 14:\n case 15:\n case 16:\n case 17:\n case 18:\n case 19:\n case 20:\n case 21:\n case 22:\n case 23:\n case 24:\n case 25:\n case 26:\n i++;\n break;\n case 27:\n state = State.Escaped;\n i++;\n break;\n case 28:\n case 29:\n case 30:\n case 31:\n i++;\n break;\n case 32:\n case 33:\n case 34:\n case 35:\n case 36:\n case 37:\n case 38:\n case 39:\n case 40:\n case 41:\n case 42:\n case 43:\n case 44:\n case 45:\n case 46:\n case 47:\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n case 58:\n case 59:\n case 60:\n case 61:\n case 62:\n case 63:\n case 64:\n case 65:\n case 66:\n case 67:\n case 68:\n case 69:\n case 70:\n case 71:\n case 72:\n case 73:\n case 74:\n case 75:\n case 76:\n case 77:\n case 78:\n case 79:\n case 80:\n case 81:\n case 82:\n case 83:\n case 84:\n case 85:\n case 86:\n case 87:\n case 88:\n case 89:\n case 90:\n case 91:\n case 92:\n case 93:\n case 94:\n case 95:\n case 96:\n case 97:\n case 98:\n case 99:\n case 100:\n case 101:\n case 102:\n case 103:\n case 104:\n case 105:\n case 106:\n case 107:\n case 108:\n case 109:\n case 110:\n case 111:\n case 112:\n case 113:\n case 114:\n case 115:\n case 116:\n case 117:\n case 118:\n case 119:\n case 120:\n case 121:\n case 122:\n case 123:\n case 124:\n case 125:\n case 126:\n case 127:\n printStartIndex = i++;\n while (i < array.length) {\n const element = array[i];\n if (element >= 32 && element < 126) {\n i++;\n continue;\n }\n switch (element) {\n case 27:\n print(array, printStartIndex, i);\n state = State.Escaped;\n i++;\n break middle;\n case 7:\n print(array, printStartIndex, i);\n bell();\n i++;\n state = State.TopLevelContent;\n break middle;\n case 8:\n print(array, printStartIndex, i);\n backspace();\n i++;\n state = State.TopLevelContent;\n break middle;\n case 13:\n print(array, printStartIndex, i);\n carriageReturn();\n i++;\n state = State.TopLevelContent;\n break middle;\n default:\n i++;\n break;\n }\n }\n print(array, printStartIndex, i);\n break;\n default:\n throw new Error(\"no\");\n }\n break;\n case State.Escaped:\n switch (array[i]) {\n case 40:\n state = State.Charset;\n break;\n case 91:\n params = [];\n state = State.Csi;\n break;\n case 93:\n state = State.Osc;\n break;\n case 80:\n state = State.Dcs;\n break;\n case 95:\n break;\n case 94:\n break;\n case 99:\n break;\n case 69:\n nextLine();\n case 68:\n index();\n break;\n case 55:\n saveCursor();\n state = State.TopLevelContent;\n break;\n case 56:\n backspace();\n state = State.TopLevelContent;\n break;\n case 72:\n tabSet();\n break;\n default:\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.Charset:\n i++;\n break;\n case State.Csi:\n switch (array[i]) {\n case 32:\n state = State.AfterSpace;\n break;\n case 33:\n state = State.AfterExclamationMark;\n break;\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n currentParam = array[i] - 48;\n state = State.AfterEscape3;\n break;\n case 63:\n state = State.AfterQuestionMark;\n break;\n case 64:\n insertBlankCharacters(params);\n state = State.TopLevelContent;\n break;\n case 65:\n cursorUp(params);\n state = State.TopLevelContent;\n break;\n case 66:\n cursorDown(params);\n state = State.TopLevelContent;\n break;\n case 67:\n cursorRight(params);\n state = State.TopLevelContent;\n break;\n case 68:\n cursorLeft(params);\n state = State.TopLevelContent;\n break;\n case 69:\n cursorNextLine(params);\n state = State.TopLevelContent;\n break;\n case 70:\n cursorPrecedingLine(params);\n state = State.TopLevelContent;\n break;\n case 71:\n cursorCharacterAbsolute(params);\n state = State.TopLevelContent;\n break;\n case 72:\n cursorPosition(params);\n state = State.TopLevelContent;\n break;\n case 73:\n cursorForwardTabulation(params);\n state = State.TopLevelContent;\n break;\n case 74:\n eraseInDisplay(params);\n state = State.TopLevelContent;\n break;\n case 75:\n eraseInLine(params);\n state = State.TopLevelContent;\n break;\n case 76:\n insertLines(params);\n state = State.TopLevelContent;\n break;\n case 77:\n deleteLines(params);\n state = State.TopLevelContent;\n break;\n case 80:\n deleteCharacters(params);\n state = State.TopLevelContent;\n break;\n case 83:\n scrollUp(params);\n state = State.TopLevelContent;\n break;\n case 84:\n scrollDown(params);\n state = State.TopLevelContent;\n break;\n case 88:\n eraseCharacters(params);\n state = State.TopLevelContent;\n break;\n case 90:\n cursorBackwardTabulation(params);\n state = State.TopLevelContent;\n break;\n case 94:\n scrollDown(params);\n state = State.TopLevelContent;\n break;\n case 96:\n characterPositionAbsolute(params);\n state = State.TopLevelContent;\n break;\n case 97:\n characterPositionRelative(params);\n state = State.TopLevelContent;\n break;\n case 98:\n repeatPrecedingGraphicCharacter(params);\n state = State.TopLevelContent;\n break;\n case 100:\n linePositionAbsolute(params);\n state = State.TopLevelContent;\n break;\n case 101:\n linePositionRelative(params);\n state = State.TopLevelContent;\n break;\n case 102:\n horizontalAndVerticalPosition(params);\n state = State.TopLevelContent;\n break;\n case 103:\n tabClear(params);\n state = State.TopLevelContent;\n break;\n case 104:\n setMode(params);\n state = State.TopLevelContent;\n break;\n case 108:\n resetMode(params);\n state = State.TopLevelContent;\n break;\n case 109:\n setCharAttributes(params);\n state = State.TopLevelContent;\n break;\n case 117:\n restoreCursor();\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.AfterEscape3:\n switch (array[i]) {\n case 32:\n params.push(currentParam);\n state = State.AfterSpace;\n break;\n case 59:\n params.push(currentParam);\n state = State.AfterEscape3AfterSemicolon;\n break;\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n currentParam = currentParam * 10 + array[i] - 48;\n break;\n case 64:\n params.push(currentParam);\n insertBlankCharacters(params);\n state = State.TopLevelContent;\n break;\n case 65:\n params.push(currentParam);\n cursorUp(params);\n state = State.TopLevelContent;\n break;\n case 66:\n params.push(currentParam);\n cursorDown(params);\n state = State.TopLevelContent;\n break;\n case 67:\n params.push(currentParam);\n cursorRight(params);\n state = State.TopLevelContent;\n break;\n case 68:\n params.push(currentParam);\n cursorLeft(params);\n state = State.TopLevelContent;\n break;\n case 69:\n params.push(currentParam);\n cursorNextLine(params);\n state = State.TopLevelContent;\n break;\n case 70:\n params.push(currentParam);\n cursorPrecedingLine(params);\n state = State.TopLevelContent;\n break;\n case 71:\n params.push(currentParam);\n cursorCharacterAbsolute(params);\n state = State.TopLevelContent;\n break;\n case 72:\n params.push(currentParam);\n cursorPosition(params);\n state = State.TopLevelContent;\n break;\n case 73:\n params.push(currentParam);\n cursorForwardTabulation(params);\n state = State.TopLevelContent;\n break;\n case 74:\n params.push(currentParam);\n eraseInDisplay(params);\n state = State.TopLevelContent;\n break;\n case 75:\n params.push(currentParam);\n eraseInLine(params);\n state = State.TopLevelContent;\n break;\n case 76:\n params.push(currentParam);\n insertLines(params);\n state = State.TopLevelContent;\n break;\n case 77:\n params.push(currentParam);\n deleteLines(params);\n state = State.TopLevelContent;\n break;\n case 80:\n params.push(currentParam);\n deleteCharacters(params);\n state = State.TopLevelContent;\n break;\n case 83:\n params.push(currentParam);\n scrollUp(params);\n state = State.TopLevelContent;\n break;\n case 84:\n params.push(currentParam);\n scrollDown(params);\n state = State.TopLevelContent;\n break;\n case 88:\n params.push(currentParam);\n eraseCharacters(params);\n state = State.TopLevelContent;\n break;\n case 90:\n params.push(currentParam);\n cursorBackwardTabulation(params);\n state = State.TopLevelContent;\n break;\n case 94:\n params.push(currentParam);\n scrollDown(params);\n state = State.TopLevelContent;\n break;\n case 96:\n params.push(currentParam);\n characterPositionAbsolute(params);\n state = State.TopLevelContent;\n break;\n case 97:\n params.push(currentParam);\n characterPositionRelative(params);\n state = State.TopLevelContent;\n break;\n case 98:\n params.push(currentParam);\n repeatPrecedingGraphicCharacter(params);\n state = State.TopLevelContent;\n break;\n case 100:\n params.push(currentParam);\n linePositionAbsolute(params);\n state = State.TopLevelContent;\n break;\n case 101:\n params.push(currentParam);\n linePositionRelative(params);\n state = State.TopLevelContent;\n break;\n case 102:\n params.push(currentParam);\n horizontalAndVerticalPosition(params);\n state = State.TopLevelContent;\n break;\n case 103:\n params.push(currentParam);\n tabClear(params);\n state = State.TopLevelContent;\n break;\n case 104:\n params.push(currentParam);\n setMode(params);\n state = State.TopLevelContent;\n break;\n case 108:\n params.push(currentParam);\n resetMode(params);\n state = State.TopLevelContent;\n break;\n case 109:\n params.push(currentParam);\n setCharAttributes(params);\n state = State.TopLevelContent;\n break;\n default:\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.AfterEscape3AfterSemicolon:\n switch (array[i]) {\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n currentParam = array[i] - 48;\n state = State.AfterEscape3;\n break;\n }\n i++;\n break;\n case State.AfterQuestionMark:\n switch (array[i]) {\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n currentParam = array[i] - 48;\n state = State.AfterQuestionMark2;\n break;\n case 74:\n eraseInDisplay(params);\n state = State.TopLevelContent;\n break;\n case 75:\n eraseInLine(params);\n state = State.TopLevelContent;\n break;\n case 104:\n privateModeSet(params);\n state = State.TopLevelContent;\n break;\n case 108:\n privateModeReset(params);\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.AfterQuestionMark2:\n switch (array[i]) {\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n currentParam = currentParam * 10 + array[i] - 48;\n break;\n case 59:\n params.push(currentParam);\n state = State.AfterQuestionMark;\n break;\n case 74:\n params.push(currentParam);\n eraseInDisplay(params);\n state = State.TopLevelContent;\n break;\n case 75:\n params.push(currentParam);\n eraseInLine(params);\n state = State.TopLevelContent;\n break;\n case 104:\n params.push(currentParam);\n privateModeSet(params);\n state = State.TopLevelContent;\n break;\n case 108:\n params.push(currentParam);\n privateModeReset(params);\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.AfterExclamationMark:\n switch (array[i]) {\n case 112:\n softTerminalReset();\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.AfterSpace:\n switch (array[i]) {\n case 64:\n shiftLeftColumns(params);\n state = State.TopLevelContent;\n break;\n case 113:\n setCursorStyle(params);\n state = State.TopLevelContent;\n break;\n case 116:\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.Osc:\n switch (array[i]) {\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n currentParam = array[i] - 48;\n state = State.Osc2;\n break;\n case 7:\n setTextParameters(params);\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.Osc2:\n switch (array[i]) {\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n currentParam = currentParam * 10 + array[i] - 48;\n break;\n case 59:\n params.push(currentParam);\n state = State.Osc3;\n break;\n }\n i++;\n break;\n case State.Osc3:\n switch (array[i]) {\n case 7:\n setTextParameters(params);\n state = State.TopLevelContent;\n break;\n default:\n params.push(array[i]);\n }\n i++;\n }\n }\n};\nconst transformKey = (event) => {\n const modifiers = (event.shiftKey ? 1 : 0) | (event.altKey ? 2 : 0) | (event.ctrlKey ? 4 : 0) | (event.metaKey ? 8 : 0);\n switch (event.key) {\n case \"A\":\n case \"B\":\n case \"C\":\n case \"D\":\n case \"E\":\n case \"F\":\n case \"G\":\n case \"H\":\n case \"I\":\n case \"J\":\n case \"K\":\n case \"L\":\n case \"M\":\n case \"N\":\n case \"O\":\n case \"P\":\n case \"Q\":\n case \"R\":\n case \"S\":\n case \"T\":\n case \"U\":\n case \"V\":\n case \"W\":\n case \"X\":\n case \"Y\":\n case \"Z\":\n if (event.ctrlKey) {\n const char = String.fromCharCode(event.key.charCodeAt() - 64);\n if (event.altKey) {\n return `\u001B${char}`;\n }\n return char;\n }\n return event.key;\n case \"a\":\n case \"b\":\n case \"c\":\n case \"d\":\n case \"e\":\n case \"f\":\n case \"g\":\n case \"h\":\n case \"i\":\n case \"j\":\n case \"k\":\n case \"l\":\n case \"m\":\n case \"n\":\n case \"o\":\n case \"p\":\n case \"q\":\n case \"r\":\n case \"s\":\n case \"t\":\n case \"u\":\n case \"v\":\n case \"w\":\n case \"x\":\n case \"y\":\n case \"z\":\n if (event.ctrlKey) {\n const char = String.fromCharCode(event.key.charCodeAt() - 96);\n if (event.altKey) {\n return `\u001B${char}`;\n }\n return char;\n }\n return event.key;\n case \"F1\":\n return \"\u001BOP\";\n case \"F2\":\n return \"\u001BOQ\";\n case \"F3\":\n return \"\u001BOR\";\n case \"F4\":\n return \"\u001BOS\";\n case \"F5\":\n return \"\u001B[15~\";\n case \"F6\":\n return \"\u001B[17~\";\n case \"F7\":\n return \"\u001B[18~\";\n case \"F8\":\n return \"\u001B[19~\";\n case \"F9\":\n return \"\u001B[20~\";\n case \"F10\":\n return \"\u001B[21~\";\n case \"F11\":\n return \"\u001B[23~\";\n case \"F12\":\n return \"\u001B[24~\";\n case \"Home\":\n if (modifiers) {\n return `\u001B[1;${modifiers + 1}H`;\n }\n return `\u001B[H`;\n case \"End\":\n if (modifiers) {\n return `\u001B[1;${modifiers + 1}F`;\n }\n return `\u001B[F`;\n case \"Insert\":\n if (event.shiftKey || event.ctrlKey) {\n return \"\";\n }\n return \"\u001B[2~\";\n case \"Delete\":\n if (modifiers) {\n return `\u001B[3;${modifiers + 1}~`;\n }\n return \"\u001B[3~\";\n case \"ArrowUp\":\n if (modifiers) {\n return `\u001B[1;${modifiers + 1}A`;\n }\n return \"\u001B[A\";\n case \"ArrowDown\":\n if (modifiers) {\n return `\u001B[1;${modifiers + 1}B`;\n }\n return \"\u001B[B\";\n case \"ArrowRight\":\n if (modifiers) {\n return `\u001B[1;${modifiers + 1}C`;\n }\n return \"\u001B[C\";\n case \"ArrowLeft\":\n if (modifiers) {\n return `\u001B[1;${modifiers + 1}D`;\n }\n return \"\u001B[D\";\n case \"UIKeyInputUpArrow\":\n return \"\u001B[A\";\n case \"UIKeyInputDownArrow\":\n return \"\u001B[B\";\n case \"UIKeyInputRightArrow\":\n return \"\u001B[C\";\n case \"UIKeyInputLeftArrow\":\n return \"\u001B[D\";\n case \"Enter\":\n if (event.altKey) {\n return \"\u001B\\r\";\n }\n return \"\\n\";\n case \"PageUp\":\n if (event.ctrlKey) {\n return `\u001B[5;5~`;\n }\n return \"\u001B[5~\";\n case \"PageDown\":\n if (event.ctrlKey) {\n return `\u001B[6;5~`;\n }\n return `\u001B[6~`;\n case \"Backspace\":\n if (event.altKey) {\n return \"\u0017\";\n }\n if (event.shiftKey) {\n return \"\\b\";\n }\n return \"\\x7F\";\n case \"Tab\":\n if (event.shiftKey) {\n return \"\u001B[Z\";\n }\n return \"\t\";\n case \"Escape\":\n if (event.altKey) {\n return \"\u001B\u001B\";\n }\n return \"\u001B\";\n case \"/\":\n return \"/\";\n case \"?\":\n if (event.ctrlKey) {\n return \"\\x7F\";\n }\n if (event.altKey) {\n return `\u001B?`;\n }\n return event.key;\n case \"|\":\n if (event.ctrlKey) {\n return \"\u001C\";\n }\n if (event.altKey) {\n return `\u001B|`;\n }\n return event.key;\n case \"{\":\n if (event.ctrlKey) {\n return \"\u001B\";\n }\n if (event.altKey) {\n return `\u001B{`;\n }\n return event.key;\n case \"}\":\n if (event.ctrlKey) {\n return \"\u001D\";\n }\n if (event.altKey) {\n return `\u001B}`;\n }\n return event.key;\n case \"_\":\n if (event.ctrlKey) {\n return \"\u001F\";\n }\n if (event.altKey) {\n return `\u001B_`;\n }\n return event.key;\n case \"^\":\n if (event.ctrlKey) {\n return \"\u001E\";\n }\n if (event.altKey) {\n return `\u001B^`;\n }\n return event.key;\n case \"@\":\n if (event.ctrlKey) {\n return \"\\0\";\n }\n if (event.altKey) {\n return `\u001B@`;\n }\n return event.key;\n case \" \":\n return ` `;\n default:\n if (event.key.length > 1) {\n return \"\";\n }\n if (event.altKey) {\n return `\u001B${event.key}`;\n }\n return event.key;\n }\n};\nconst CHAR_WIDTH$2 = 13;\nconst CHAR_HEIGHT$2 = 15;\nconst BACKGROUND$2 = \"#000000\";\nconst FOREGROUND = \"#ffffff\";\nconst COLS = 80;\nconst ROWS = 25;\nconst BUFFER_LINES = 200;\nconst noop = () => {\n};\nconst createTerminal = (root, {handleInput, bell = noop, setWindowTitle = noop}) => {\n let focused = false;\n const handleKeyDown = (event) => {\n const transformedKey = transformKey(event);\n if (transformedKey) {\n handleInput(transformedKey);\n }\n };\n const handleBeforeInput = (event) => {\n event.preventDefault();\n };\n const blur = () => {\n focused = false;\n cursorStyle = 4;\n requestAnimationFrame(render);\n };\n const focus = () => {\n if (focused) {\n return;\n }\n focused = true;\n cursorStyle = 2;\n textarea.focus();\n requestAnimationFrame(render);\n };\n const canvasText = document.createElement(\"canvas\");\n canvasText.className = \"TerminalCanvasText\";\n const canvasCursor = document.createElement(\"canvas\");\n canvasCursor.className = \"TerminalCanvasCursor\";\n const $Layers = document.createElement(\"div\");\n $Layers.className = \"Layers\";\n const textarea = document.createElement(\"textarea\");\n textarea.className = \"TerminalTextArea\";\n $Layers.append(canvasText, canvasCursor);\n root.append(textarea, $Layers);\n textarea.onkeydown = handleKeyDown;\n textarea.addEventListener(\"beforeinput\", handleBeforeInput);\n root.onmousedown = (event) => {\n event.preventDefault();\n focus();\n };\n textarea.onblur = blur;\n const WIDTH = COLS * CHAR_WIDTH$2;\n const HEIGHT = ROWS * (CHAR_HEIGHT$2 + 10);\n canvasText.width = canvasCursor.width = WIDTH;\n canvasText.height = canvasCursor.height = HEIGHT;\n let bufferYEnd = ROWS;\n let cursorYRelative = -ROWS;\n let cursorXRelative = -COLS;\n let foreground = \"#ffffff\";\n let background = \"#000000\";\n let cursorVisible = true;\n let cursorStyle = 2;\n const dirty = {\n start: 0,\n end: 0\n };\n const lines = [];\n const offsets = new Uint8Array(BUFFER_LINES);\n let attributes = {};\n for (let y = 0; y < BUFFER_LINES; y++) {\n lines.push(new Uint8Array(300));\n }\n const textDecoder = new TextDecoder();\n const dirtyMark = (y) => {\n if (y < dirty.start) {\n dirty.start = y;\n } else if (y > dirty.end) {\n dirty.end = y;\n }\n };\n const dirtyClear = () => {\n dirty.start = dirty.end = bufferYEnd + cursorYRelative;\n };\n const callbackFns = {\n eraseInLine() {\n const y = bufferYEnd + cursorYRelative;\n const x = COLS + cursorXRelative;\n offsets[y] = x;\n },\n eraseInDisplay() {\n offsets.fill(0);\n cursorYRelative = -ROWS + 1;\n cursorXRelative = -COLS;\n bufferYEnd = ROWS;\n for (const key of Object.keys(attributes)) {\n delete attributes[key];\n }\n dirtyMark(0);\n dirtyMark(ROWS);\n },\n setCharAttributes(params) {\n if (params[1] === 7) {\n [foreground, background] = [background, foreground];\n } else if (params[1] === 35) {\n foreground = \"#8000ff\";\n } else if (params[1] === 32) {\n foreground = \"#09f900\";\n } else if (params[1] === 34) {\n foreground = \"#0090ff\";\n } else {\n foreground = FOREGROUND;\n background = BACKGROUND$2;\n }\n const y = bufferYEnd + cursorYRelative;\n attributes[y] = attributes[y] || {};\n attributes[y][offsets[y]] = {\n foreground,\n background\n };\n },\n cursorUp() {\n console.log(\"cursor up\");\n },\n cursorDown() {\n },\n cursorRight() {\n cursorXRelative++;\n },\n cursorLeft() {\n console.log(\"cursor left\");\n },\n backspace() {\n cursorXRelative--;\n },\n deleteChars(numberOfChars) {\n const y = bufferYEnd + cursorYRelative;\n const x = COLS + cursorXRelative;\n offsets[y] = x;\n },\n bell,\n print(array, start, end) {\n const subArray = array.subarray(start, end);\n const y = bufferYEnd + cursorYRelative;\n const x = COLS + cursorXRelative;\n lines[y].set(subArray, x);\n cursorXRelative += end - start;\n offsets[y] = COLS + cursorXRelative;\n dirtyMark(y);\n if (x >= COLS - 1) {\n callbackFns.lineFeed();\n }\n },\n lineFeed() {\n if (cursorYRelative === 0) {\n bufferYEnd = (bufferYEnd + 1) % BUFFER_LINES;\n offsets[bufferYEnd] = 0;\n delete attributes[bufferYEnd];\n } else {\n cursorYRelative++;\n }\n foreground = FOREGROUND;\n background = BACKGROUND$2;\n },\n carriageReturn() {\n cursorXRelative = -COLS;\n },\n setWindowTitle,\n cursorPosition(params) {\n if (params.length === 2) {\n const row = params[0];\n const column = params[1];\n cursorYRelative = -ROWS + row;\n cursorXRelative = -COLS + column;\n }\n },\n cursorShow() {\n cursorVisible = true;\n },\n cursorHide() {\n cursorVisible = false;\n },\n insertLines() {\n },\n deleteLines() {\n },\n setTextParameters() {\n },\n privateModeSet() {\n },\n privateModeReset() {\n },\n eraseToEndOfLine() {\n },\n goToHome() {\n },\n setGLevel() {\n },\n saveCursor() {\n },\n restoreCursor() {\n },\n index() {\n },\n tabSet() {\n },\n reverseIndex() {\n },\n keypadApplicationMode() {\n },\n keypadNumericMode() {\n },\n fullReset() {\n },\n nextLine() {\n },\n deleteCharacters() {\n },\n softTerminalReset() {\n },\n cursorNextLine() {\n },\n cursorPrecedingLine() {\n },\n cursorCharacterAbsolute() {\n },\n cursorForwardTabulation() {\n },\n cursorBackwardTabulation() {\n },\n scrollUp() {\n },\n scrollDown() {\n },\n eraseCharacters() {\n },\n characterPositionAbsolute() {\n },\n characterPositionRelative() {\n },\n repeatPrecedingGraphicCharacter() {\n },\n sendDeviceAttributesPrimary() {\n },\n sendDeviceAttributesTertiary() {\n },\n linePositionAbsolute() {\n },\n linePositionRelative() {\n },\n horizontalAndVerticalPosition() {\n },\n tabClear() {\n },\n setMode() {\n },\n resetMode() {\n },\n setCursorStyle() {\n },\n shiftLeftColumns() {\n },\n insertBlankCharacters() {\n }\n };\n const drawLines = createDrawLines(canvasText, lines, BUFFER_LINES, offsets, attributes, ROWS, COLS);\n const drawCursor = createDrawCursor(canvasCursor);\n let scheduled = false;\n const render = () => {\n drawLines(dirty.start, dirty.end + 1, bufferYEnd);\n const y = ROWS + cursorYRelative;\n const x = COLS + cursorXRelative;\n drawCursor(x, y, cursorVisible, cursorStyle);\n scheduled = false;\n dirtyClear();\n };\n const write = (array) => {\n parse(array, callbackFns);\n if (!scheduled) {\n scheduled = true;\n requestAnimationFrame(render);\n }\n };\n const pasteText = (text) => {\n const fixedText = \"\\n\" + text.replaceAll(\"\\n\", \"\\r\\n\");\n const array = new TextEncoder().encode(fixedText);\n write(array);\n };\n return {\n write,\n focus,\n pasteText,\n writeText: pasteText,\n lines\n };\n};\nexport {createTerminal};\nexport default null;\n", "import { createTerminal } from '../../../static/js/termterm.js'\n\nexport const create = ({ $Element, handleInput }) => {\n const state = {\n terminal: createTerminal($Element, { handleInput }),\n }\n return state\n}\n\nexport const close = () => {}\n\n// export const\n\nexport const write = (state, text) => {\n state.terminal.write(text)\n}\n\nexport const wrapTerminalCommand = (id) => {}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleInput = (value) => {\n RendererWorker.send('Terminal.write', value)\n}\n", "import * as Focus from '../Focus/Focus.js'\nimport * as ViewletTerminalFunctions from './ViewletTerminalFunctions.js'\n\nexport const handleInput = (input) => {\n ViewletTerminalFunctions.handleInput(input)\n}\n\nexport const handleFocus = () => {\n Focus.setFocus('terminal')\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Terminal from '../Terminal/Terminal.js'\nimport * as ViewletTerminalEvents from './ViewletTerminalEvents.js'\n\nexport const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet Terminal'\n const terminal = Terminal.create({\n $Element: $Viewlet,\n handleInput: ViewletTerminalEvents.handleInput,\n })\n\n $Viewlet.addEventListener('focusin', ViewletTerminalEvents.handleFocus)\n\n return {\n $Viewlet,\n terminal,\n }\n}\n\nexport const refresh = (state, context) => {\n // state.element.textContent = context.text\n}\n\nexport const dispose = (state) => {\n // TODO unregister callback\n // SharedProcess.unregisterChannel(channel )\n\n window.removeEventListener('resize', state.handleUpdate)\n}\n\nexport const focus = (state) => {\n Assert.object(state)\n const { terminal } = state\n terminal.focus()\n}\n\nexport const reduceFocus = (state, action) => {}\n\n// TODO what is this\nexport const reduceWrite = (state, action) => {\n const { terminal } = state\n Terminal.write(terminal, state)\n}\n\nexport const reduce = (state, action) => {\n switch (action.type) {\n case 'write':\n return reduceWrite(state, action)\n case 'focus':\n return reduceFocus(state, action)\n default:\n break\n }\n}\n\nexport const write = (state, data) => {\n const { terminal } = state\n Terminal.write(terminal, data)\n}\n\nexport const Commands = {\n 9922: write,\n}\n", "import * as Event from '../Event/Event.js'\n\nexport const handleContextMenu = (event) => {\n Event.preventDefault(event)\n}\n", "import * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as ViewletTitleBarEvents from './ViewletTitleBarEvents.js'\n\nexport const create = () => {\n // TODO set aria label for title bar menu\n // TODO add tests for aria properties\n const $Viewlet = document.createElement('div')\n $Viewlet.id = 'TitleBar'\n $Viewlet.className = 'Viewlet TitleBar'\n $Viewlet.ariaLabel = 'Title Bar'\n $Viewlet.role = AriaRoles.ContentInfo\n return {\n $TitleBar: $Viewlet,\n $Viewlet,\n }\n}\n\nexport const attachEvents = (state) => {\n const { $Viewlet } = state\n $Viewlet.oncontextmenu = ViewletTitleBarEvents.handleContextMenu\n}\n\nconst activeClassName = 'TitleBarActive'\n\nexport const setFocused = (state, isFocused) => {\n const { $Viewlet } = state\n if (isFocused) {\n $Viewlet.classList.add(activeClassName)\n } else {\n $Viewlet.classList.remove(activeClassName)\n }\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleClickMinmize = () => {\n RendererWorker.send('TitleBarButtons.handleClickMinimize')\n}\n\nexport const handleClickToggleMaximize = () => {\n RendererWorker.send('TitleBarButtons.handleClickToggleMaximize')\n}\n\nexport const handleClickClose = () => {\n RendererWorker.send('TitleBarButtons.handleClickClose')\n}\n", "import * as ViewletTitleBarButtonsFunctions from './ViewletTitleBarButtonsFunctions.js'\n\n/**\n *\n * @param {MouseEvent} event\n */\nexport const handleTitleBarButtonsClick = (event) => {\n const { target } = event\n // @ts-ignore\n const { id } = target\n switch (id) {\n case 'TitleBarButtonMinimize':\n ViewletTitleBarButtonsFunctions.handleClickMinmize()\n break\n case 'TitleBarButtonToggleMaximize':\n ViewletTitleBarButtonsFunctions.handleClickToggleMaximize()\n break\n case 'TitleBarButtonClose':\n ViewletTitleBarButtonsFunctions.handleClickClose()\n break\n default:\n break\n }\n}\n", "import * as ViewletTitleBarButtonEvents from './ViewletTitleBarButtonsEvents.js'\n\nconst create$TitleBarButton = (id, icon, label) => {\n const $Icon = document.createElement('i')\n $Icon.className = `MaskIcon ${icon}`\n\n const $TitleBarButton = document.createElement('button')\n $TitleBarButton.className = 'TitleBarButton'\n $TitleBarButton.id = `TitleBarButton${id}`\n $TitleBarButton.ariaLabel = label\n $TitleBarButton.append($Icon)\n return $TitleBarButton\n}\n\nexport const create = () => {\n const $ButtonMinimize = create$TitleBarButton(\n 'Minimize',\n 'Minimize',\n 'Minimize'\n )\n const $ButtonToggleMaximize = create$TitleBarButton(\n 'ToggleMaximize',\n 'ToggleMaximize',\n 'Toggle Maximize'\n )\n const $ButtonClose = create$TitleBarButton('Close', 'Close', 'Close')\n\n const $TitleBarButtons = document.createElement('div')\n $TitleBarButtons.id = 'TitleBarButtons'\n $TitleBarButtons.onmousedown =\n ViewletTitleBarButtonEvents.handleTitleBarButtonsClick\n $TitleBarButtons.append($ButtonMinimize, $ButtonToggleMaximize, $ButtonClose)\n return {\n $TitleBarButtons,\n $Viewlet: $TitleBarButtons,\n }\n}\n\nexport const dispose = (state) => {}\n\nexport const setButtons = (state, buttons) => {\n const { $TitleBarButtons } = state\n for (const button of buttons) {\n const $Icon = document.createElement('i')\n $Icon.className = `MaskIcon ${button.icon}`\n const $TitleBarButton = document.createElement('button')\n $TitleBarButton.className = 'TitleBarButton'\n $TitleBarButton.id = `TitleBarButton${button.id}`\n $TitleBarButton.ariaLabel = button.label\n $TitleBarButton.append($Icon)\n $TitleBarButtons.append($TitleBarButton)\n }\n}\n", "export const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet TitleBarIcon'\n return {\n $Viewlet,\n }\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const closeMenu = () => {\n RendererWorker.send('TitleBarMenuBar.closeMenu', false)\n}\n\nexport const handlePointerOver = (index) => {\n RendererWorker.send('TitleBarMenuBar.handleMouseOver', index)\n}\n\nexport const handleMouseOut = (index) => {\n RendererWorker.send('TitleBarMenuBar.handleMouseOut', index)\n}\n\nexport const handleClick = (button, index) => {\n RendererWorker.send('TitleBarMenuBar.handleClick', button, index)\n}\n\nexport const handleMouseOver = (index) => {\n RendererWorker.send('TitleBarMenuBar.handleMouseOver', index)\n}\n\nexport const handleMenuMouseOver = (level, index) => {\n RendererWorker.send('TitleBarMenuBar.handleMenuMouseOver', level, index)\n}\n\nexport const handleMenuMouseDown = (level, index) => {\n RendererWorker.send('TitleBarMenuBar.handleMenuMouseDown', level, index)\n}\n", "import * as FindIndex from '../../shared/findIndex.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as ViewletTitleBarMenuBarFunctions from './ViewletTitleBarMenuBarFunctions.js'\n\nconst isInsideTitleBarMenu = ($Element) => {\n return $Element.classList.contains('MenuItem') || $Element.classList.contains('Menu') || $Element.classList.contains('TitleBarTopLevelEntry')\n}\n\nexport const handleFocusOut = (event) => {\n const $ActiveElement = event.relatedTarget\n if ($ActiveElement && isInsideTitleBarMenu($ActiveElement)) {\n return\n }\n ViewletTitleBarMenuBarFunctions.closeMenu()\n}\n\nexport const handlePointerOver = (event) => {\n const { target } = event\n const index = getIndex(target)\n ViewletTitleBarMenuBarFunctions.handleMouseOver(index)\n}\n\nexport const handlePointerOut = (event) => {\n const { target } = event\n const index = getIndex(target)\n ViewletTitleBarMenuBarFunctions.handleMouseOut(index)\n}\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst getIndex = ($Target) => {\n switch ($Target.className) {\n case 'TitleBarTopLevelEntry':\n return getNodeIndex($Target)\n default:\n return -1\n }\n}\n\nexport const handleClick = (event) => {\n const { button, target } = event\n const index = getIndex(target)\n ViewletTitleBarMenuBarFunctions.handleClick(button, index)\n}\n\nconst getLevelAndIndex = (event) => {\n const { target } = event\n const $Menu = target.closest('.Menu')\n const index = FindIndex.findIndex($Menu, target)\n const { id } = $Menu\n const level = Number.parseInt(id.slice(5))\n return {\n level,\n index,\n }\n}\n\nexport const handleMenuMouseOver = (event) => {\n // TODO just send pixel coordinates instead\n const { level, index } = getLevelAndIndex(event)\n ViewletTitleBarMenuBarFunctions.handleMenuMouseOver(level, index)\n}\n\nexport const handleMenuMouseDown = (event) => {\n const { level, index } = getLevelAndIndex(event)\n ViewletTitleBarMenuBarFunctions.handleMenuMouseDown(level, index)\n}\n\nexport const handleFocus = () => {\n Focus.setFocus('TitleBarMenuBar')\n}\n", "import * as AriaBoolean from '../AriaBoolean/AriaBoolean.js'\nimport * as AriaRoles from '../AriaRoles/AriaRoles.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as DomAttributeType from '../DomAttributeType/DomAttributeType.js'\nimport * as DomEventType from '../DomEventType/DomEventType.js'\nimport * as MenuItem from '../MenuItem/MenuItem.js'\nimport * as Menu from '../OldMenu/Menu.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\nimport * as Widget from '../Widget/Widget.js'\nimport * as ViewletTitleBarMenuBarEvents from './ViewletTitleBarMenuBarEvents.js'\n\nconst activeId = 'TitleBarEntryActive'\n\nexport const create = () => {\n const $TitleBarMenuBar = document.createElement('div')\n $TitleBarMenuBar.id = 'TitleBarMenuBar'\n $TitleBarMenuBar.role = AriaRoles.MenuBar\n $TitleBarMenuBar.tabIndex = 0\n return {\n $Viewlet: $TitleBarMenuBar,\n $TitleBarMenuBar,\n $$Menus: [],\n }\n}\n\nexport const attachEvents = (state) => {\n const { $TitleBarMenuBar } = state\n $TitleBarMenuBar.onmousedown = ViewletTitleBarMenuBarEvents.handleClick\n $TitleBarMenuBar.addEventListener(DomEventType.FocusOut, ViewletTitleBarMenuBarEvents.handleFocusOut)\n $TitleBarMenuBar.addEventListener(DomEventType.FocusIn, ViewletTitleBarMenuBarEvents.handleFocus)\n $TitleBarMenuBar.onpointerover = ViewletTitleBarMenuBarEvents.handlePointerOver\n $TitleBarMenuBar.onpointerout = ViewletTitleBarMenuBarEvents.handlePointerOut\n}\n\nexport const dispose = (state) => {}\n\nexport const focus = (state) => {\n const { $TitleBarMenuBar } = state\n $TitleBarMenuBar.firstChild.focus()\n}\n\n// TODO set proper tabIndex 0 to focused item https://www.w3.org/TR/wai-aria-practices/examples/menubar/menubar-1/menubar-1.html\n\n// TODO screenreader doesn't read top level label\n// when menu is open,\n// first item is selected,\n// right is clicked it just reads\n// \"Expanded\" instead of \"Selection Expanded\"\n\n// TODO sometimes screenreader reads too much (e.g. \"File, expanded, opens menu, expanded\")\n\n// TODO don't focus on separators\n\n// TODO don't focus on hover\n// only focus on hover when it has already focus or the menu has focus\n\n// TODO title bar menu bar is very inefficient:\n\n// before: 5 times recalculate style\n// 1.37ms Recalculate style\n// 83us Update Layer tree\n// 0.34ms paint\n// 0.79ms composite layer\n// 0.23ms Hit test\n// 1.42ms Recalculate style\n// 1.44ms Recalculate style\n// 2.08ms Recalculate style\n// 0.44ms Recalculate style\n// 0.52ms Layout\n// 0.16ms Update Layer Tree\n// 48us hit test\n// 16us Update Layer Tree\n// 0.36ms paint\n// 0.33ms composite layer\n\n// now: 2 recalculate styles\n// 0.43ms recalculate style\n// 0.53ms recalculate style\n// 0.19ms layout\n// 0.16ms update layer tree\n// 30us hit test\n// 17us update layer tree\n// 0.17ms paint\n// 0.19ms composite layers\n\nconst create$TopLevelEntry = (item) => {\n // const $Label = document.createElement('div')\n // $Label.className = 'TitleBarTopLevelEntryLabel'\n // $Label.textContent = item.label\n\n const $TitleBarTopLevelEntry = document.createElement('div')\n $TitleBarTopLevelEntry.className = 'TitleBarTopLevelEntry'\n $TitleBarTopLevelEntry.ariaHasPopup = AriaBoolean.True\n $TitleBarTopLevelEntry.ariaExpanded = AriaBoolean.False\n $TitleBarTopLevelEntry.role = AriaRoles.MenuItem\n if (item.keyboardShortCut) {\n $TitleBarTopLevelEntry.ariaKeyShortcuts = item.keyboardShortCut\n }\n $TitleBarTopLevelEntry.textContent = item.label\n return $TitleBarTopLevelEntry\n}\n\nexport const setFocusedIndex = (state, unFocusIndex, focusIndex, oldIsMenuOpen, newIsMenuOpen) => {\n Assert.object(state)\n Assert.number(unFocusIndex)\n Assert.number(focusIndex)\n const { $TitleBarMenuBar } = state\n if (unFocusIndex !== -1) {\n const $Child = $TitleBarMenuBar.children[unFocusIndex]\n $Child.ariaExpanded = AriaBoolean.False\n $Child.removeAttribute(DomAttributeType.AriaOwns)\n $Child.removeAttribute('id')\n $Child.textContent = $Child.textContent\n }\n if (focusIndex !== -1) {\n const $Child = $TitleBarMenuBar.children[focusIndex]\n $Child.id = activeId\n const $Label = document.createElement('div')\n $Label.className = 'TitleBarTopLevelEntryLabel'\n $Label.textContent = $Child.textContent\n $Child.replaceChildren($Label)\n\n $TitleBarMenuBar.focus()\n $TitleBarMenuBar.setAttribute(DomAttributeType.AriaActiveDescendant, activeId)\n if (newIsMenuOpen) {\n $Child.setAttribute(DomAttributeType.AriaOwns, 'Menu-0')\n $Child.ariaExpanded = AriaBoolean.True\n }\n }\n}\n\n// TODO the focus variable is confusing: false means keep focus in menubar, true means focus the menu\nexport const openMenu = (state, unFocusIndex, index, level, menuItems, menuFocusedIndex, focus, x, y, width, height) => {\n Assert.object(state)\n Assert.number(unFocusIndex)\n Assert.number(index)\n Assert.number(level)\n Assert.array(menuItems)\n Assert.number(menuFocusedIndex)\n Assert.boolean(focus)\n Assert.number(x)\n Assert.number(y)\n Assert.number(width)\n Assert.number(height)\n const { $TitleBarMenuBar } = state\n // TODO this code is very unclean\n $TitleBarMenuBar.addEventListener('mouseenter', ViewletTitleBarMenuBarEvents.handlePointerOver, {\n capture: true,\n })\n if (unFocusIndex !== -1) {\n $TitleBarMenuBar.children[unFocusIndex].ariaExpanded = AriaBoolean.False\n $TitleBarMenuBar.children[unFocusIndex].removeAttribute(DomAttributeType.AriaOwns)\n }\n $TitleBarMenuBar.children[index].ariaExpanded = AriaBoolean.True\n const $$Menus = Menu.state.$$Menus\n Menu.state.$$Menus = []\n Menu.showControlled({\n x,\n y,\n width,\n height,\n items: menuItems,\n handleFocusOut: ViewletTitleBarMenuBarEvents.handleFocusOut,\n $Parent: $TitleBarMenuBar.children[index],\n level,\n })\n if (menuFocusedIndex !== -1) {\n Menu.focusIndex(0, -1, menuFocusedIndex)\n }\n for (const $Menu of $$Menus) {\n Widget.remove($Menu)\n }\n}\n\n// TODO there need to be two variants of closeMenu: one just closes menu, another close menu and focuses top level entry\nexport const closeMenu = (state, unFocusIndex, index) => {\n const { $TitleBarMenuBar } = state\n if (unFocusIndex !== -1) {\n $TitleBarMenuBar.children[unFocusIndex].ariaExpanded = AriaBoolean.False\n $TitleBarMenuBar.children[unFocusIndex].removeAttribute(DomAttributeType.AriaOwns)\n }\n if (index !== -1) {\n $TitleBarMenuBar.children[index].focus()\n }\n Menu.hide(/* restoreFocus */ false)\n $TitleBarMenuBar.removeEventListener('mouseenter', ViewletTitleBarMenuBarEvents.handlePointerOver, {\n capture: true,\n })\n}\n\nexport const setEntries = (state, titleBarEntries) => {\n const { $TitleBarMenuBar } = state\n $TitleBarMenuBar.append(...titleBarEntries.map(create$TopLevelEntry))\n}\n\nconst create$Menu = () => {\n const $Menu = document.createElement('div')\n $Menu.className = 'Menu'\n $Menu.role = AriaRoles.Menu\n $Menu.tabIndex = -1\n // $ContextMenu.onmousedown = contextMenuHandleMouseDown\n // TODO mousedown vs click? (click is usually better but mousedown is faster, why wait 100ms?)\n // $Menu.addEventListener('mousedown', handleMouseDown)\n // $Menu.addEventListener('mouseenter', handleMouseEnter, {\n // capture: true,\n // })\n // $Menu.addEventListener('mouseleave', handleMouseLeave, {\n // capture: true,\n // })\n // $Menu.addEventListener('mousemove', handleMouseMove, {\n // passive: true,\n // })\n // $Menu.onkeydown = handleKeyDown\n // $Menu.addEventListener('focusout', handleFocusOut)\n // $Menu.oncontextmenu = handleContextMenu\n // $ContextMenu.onfocus = handleFocus\n // $ContextMenu.onblur = handleBlur\n return $Menu\n}\n\n// TODO recycle menus\nexport const setMenus = (state, changes) => {\n const { $$Menus } = state\n for (const change of changes) {\n const type = change[0]\n switch (type) {\n case 'addMenu': {\n const menu = change[1]\n const $Menu = create$Menu()\n $Menu.onmouseover = ViewletTitleBarMenuBarEvents.handleMenuMouseOver\n $Menu.onmousedown = ViewletTitleBarMenuBarEvents.handleMenuMouseDown\n const { x, y, width, height, level, focusedIndex } = menu\n SetBounds.setBounds($Menu, x, y, width, height)\n $Menu.append(...menu.items.map(MenuItem.create$MenuItem))\n $Menu.id = `Menu-${level}`\n Widget.append($Menu)\n if (focusedIndex !== -1) {\n const $Child = $Menu.children[focusedIndex]\n $Child.classList.add('Focused')\n // @ts-ignore\n $Child.focus()\n }\n $$Menus.push($Menu)\n\n break\n }\n case 'updateMenu': {\n const menu = change[1]\n const newLength = change[2]\n const replaceItems = change[3]\n const { level, x, y, width, height, focusedIndex, items, expanded } = menu\n const $Menu = $$Menus[level]\n SetBounds.setBounds($Menu, x, y, width, height)\n // TODO recycle menu item nodes\n const $$Children = items.map(MenuItem.create$MenuItem)\n if (focusedIndex !== -1) {\n const $Child = $$Children[focusedIndex]\n $Child.classList.add('Focused')\n if (expanded) {\n $Child.ariaExpanded = true\n $Child.setAttribute(DomAttributeType.AriaOwns, `Menu-${level + 1}`)\n }\n }\n $Menu.replaceChildren(...$$Children)\n if (level === newLength - 1) {\n if (focusedIndex === -1) {\n $Menu.focus()\n } else {\n const $Child = $Menu.children[focusedIndex]\n $Child.focus()\n }\n }\n\n break\n }\n case 'closeMenus': {\n const keepCount = change[1]\n const $$ToDispose = $$Menus.slice(keepCount)\n for (const $ToDispose of $$ToDispose) {\n Widget.remove($ToDispose)\n }\n $$Menus.length = keepCount\n\n break\n }\n // No default\n }\n }\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleVideoError = (code, message) => {\n RendererWorker.send('Video.handleVideoError', code, message)\n}\n", "import * as ViewletVideoFunctions from './ViewletVideoFunctions.js'\n\nexport const handleVideoError = (event) => {\n const { target } = event\n const { error } = target\n const { code, message } = error\n ViewletVideoFunctions.handleVideoError(code, message)\n}\n", "// based on the video editor by vscode\n\nimport * as ViewletVideoEvents from './ViewletVideoEvents.js'\n\nexport const create = () => {\n const $Video = document.createElement('video')\n $Video.className = 'VideoVideo'\n $Video.controls = true\n\n const $Content = document.createElement('div')\n $Content.className = 'VideoContent'\n $Content.append($Video)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet Video'\n $Viewlet.append($Content)\n return {\n $Viewlet,\n $Video,\n $Content,\n $VideoErrorMessage: undefined,\n }\n}\n\nexport const attachEvents = (state) => {\n const { $Video } = state\n $Video.onerror = ViewletVideoEvents.handleVideoError\n}\n\nexport const setSrc = (state, src) => {\n const { $Video } = state\n $Video.src = src\n}\n\nexport const setVideoErrorMessage = (state, videoErrorMessage) => {\n if (!state.$VideoErrorMessage) {\n state.$VideoErrorMessage = document.createElement('div')\n state.$VideoErrorMessage.className = 'VideoErrorMessage'\n state.$Content.append(state.$VideoErrorMessage)\n }\n const { $VideoErrorMessage } = state\n $VideoErrorMessage.textContent = videoErrorMessage\n}\n", "import * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\n\nexport const load = (moduleId) => {\n switch (moduleId) {\n case ViewletModuleId.ImagePreview:\n return import('../ImagePreview/ImagePreview.js')\n case ViewletModuleId.ActivityBar:\n return import('../ViewletActivityBar/ViewletActivityBar.js')\n case ViewletModuleId.Audio:\n return import('../ViewletAudio/ViewletAudio.js')\n case ViewletModuleId.Clock:\n return import('../ViewletClock/ViewletClock.js')\n case ViewletModuleId.ColorPicker:\n return import('../ViewletColorPicker/ViewletColorPicker.js')\n case ViewletModuleId.DebugConsole:\n return import('../ViewletDebugConsole/ViewletDebugConsole.js')\n case ViewletModuleId.Dialog:\n return import('../ViewletDialog/ViewletDialog.js')\n case ViewletModuleId.DiffEditor:\n return import('../ViewletDiffEditor/ViewletDiffEditor.js')\n case ViewletModuleId.EditorCompletion:\n return import('../ViewletEditorCompletion/ViewletEditorCompletion.js')\n case ViewletModuleId.EditorImage:\n return import('../ViewletEditorImage/ViewletEditorImage.js')\n case ViewletModuleId.EditorPlainText:\n return import('../ViewletEditorPlainText/ViewletEditorPlainText.js')\n case ViewletModuleId.EditorText:\n return import('../ViewletEditorText/ViewletEditorText.js')\n case ViewletModuleId.Empty:\n return import('../ViewletEmpty/ViewletEmpty.js')\n case ViewletModuleId.Error:\n return import('../ViewletError/ViewletError.js')\n case ViewletModuleId.Explorer:\n return import('../ViewletExplorer/ViewletExplorer.js')\n case ViewletModuleId.ExtensionDetail:\n return import('../ViewletExtensionDetail/ViewletExtensionDetail.js')\n case ViewletModuleId.Extensions:\n return import('../ViewletExtensions/ViewletExtensions.js')\n case ViewletModuleId.FindWidget:\n return import('../ViewletFindWidget/ViewletFindWidget.js')\n case ViewletModuleId.Implementations:\n return import('../ViewletImplementations/ViewletImplementations.js')\n case ViewletModuleId.KeyBindings:\n return import('../ViewletKeyBindings/ViewletKeyBindings.js')\n case ViewletModuleId.Layout:\n return import('../ViewletLayout/ViewletLayout.js')\n case ViewletModuleId.Main:\n return import('../ViewletMain/ViewletMain.js')\n case ViewletModuleId.MainTabs:\n return import('../ViewletMainTabs/ViewletMainTabs.js')\n case ViewletModuleId.Output:\n return import('../ViewletOutput/ViewletOutput.js')\n case ViewletModuleId.Panel:\n return import('../ViewletPanel/ViewletPanel.js')\n case ViewletModuleId.Pdf:\n return import('../ViewletPdf/ViewletPdf.js')\n case ViewletModuleId.Problems:\n return import('../ViewletProblems/ViewletProblems.js')\n case ViewletModuleId.QuickPick:\n return import('../ViewletQuickPick/ViewletQuickPick.js')\n case ViewletModuleId.References:\n return import('../ViewletReferences/ViewletReferences.js')\n case ViewletModuleId.RunAndDebug:\n return import('../ViewletRunAndDebug/ViewletRunAndDebug.js')\n case ViewletModuleId.Search:\n return import('../ViewletSearch/ViewletSearch.js')\n case ViewletModuleId.SideBar:\n return import('../ViewletSideBar/ViewletSideBar.js')\n case ViewletModuleId.SimpleBrowser:\n return import('../ViewletSimpleBrowser/ViewletSimpleBrowser.js')\n case ViewletModuleId.SourceControl:\n return import('../ViewletSourceControl/ViewletSourceControl.js')\n case ViewletModuleId.StatusBar:\n return import('../ViewletStatusBar/ViewletStatusBar.js')\n case ViewletModuleId.Terminal:\n return import('../ViewletTerminal/ViewletTerminal.js')\n case ViewletModuleId.TitleBar:\n return import('../ViewletTitleBar/ViewletTitleBar.js')\n case ViewletModuleId.TitleBarButtons:\n return import('../ViewletTitleBarButtons/ViewletTitleBarButtons.js')\n case ViewletModuleId.TitleBarIcon:\n return import('../ViewletTitleBarIcon/ViewletTitleBarIcon.js')\n case ViewletModuleId.TitleBarMenuBar:\n return import('../ViewletTitleBarMenuBar/ViewletTitleBarMenuBar.js')\n case ViewletModuleId.Video:\n return import('../ViewletVideo/ViewletVideo.js')\n default:\n throw new Error(`unknown module ${moduleId}`)\n }\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Logger from '../Logger/Logger.js'\nimport * as SetBounds from '../SetBounds/SetBounds.js'\nimport * as ViewletModule from '../ViewletModule/ViewletModule.js'\nimport * as KeyBindings from '../KeyBindings/KeyBindings.js'\n\nexport const state = {\n instances: Object.create(null),\n currentSideBarView: undefined,\n currentPanelView: undefined,\n modules: Object.create(null),\n}\n\nexport const mount = ($Parent, state) => {\n $Parent.replaceChildren(state.$Viewlet)\n}\n\nexport const create = (id) => {\n const module = state.modules[id]\n if (!module) {\n throw new Error(`module not found: ${id}`)\n }\n if (state.instances[id] && state.instances[id].state.$Viewlet.isConnected) {\n state.instances[id].state.$Viewlet.remove()\n }\n const instanceState = module.create()\n if (module.attachEvents) {\n module.attachEvents(instanceState)\n }\n state.instances[id] = {\n state: instanceState,\n factory: module,\n }\n}\n\nexport const addKeyBindings = (id, keyBindings) => {\n KeyBindings.addKeyBindings(id, keyBindings)\n}\n\nexport const removeKeyBindings = (id) => {\n KeyBindings.removeKeyBindings(id)\n}\n\nexport const loadModule = async (id) => {\n const module = await ViewletModule.load(id)\n state.modules[id] = module\n}\n\nexport const invoke = (viewletId, method, ...args) => {\n const instance = state.instances[viewletId]\n if (!instance || !instance.factory) {\n Logger.warn(`viewlet instance ${viewletId} not found`)\n return\n }\n if (typeof instance.factory[method] !== 'function') {\n Logger.warn(`method ${method} in ${viewletId} not implemented`)\n return\n }\n return instance.factory[method](instance.state, ...args)\n}\n\nexport const focus = (viewletId) => {\n const instance = state.instances[viewletId]\n if (instance && instance.factory && instance.factory.focus) {\n instance.factory.focus(instance.state)\n } else {\n // TODO push focusContext\n }\n}\n\n/**\n * @deprecated\n */\nexport const refresh = (viewletId, viewletContext) => {\n const instance = state.instances[viewletId]\n if (instance) {\n instance.factory.refresh(instance.state, viewletContext)\n } else {\n state.refreshContext[viewletId] = viewletContext\n }\n}\n\n// TODO handle error when viewlet creation fails\n\n// TODO remove send -> use invoke instead\nexport const send = (viewletId, method, ...args) => {\n const instance = state.instances[viewletId]\n if (instance) {\n instance.factory[method](...args)\n } else {\n // TODO\n Logger.warn('instance not present')\n }\n}\n\nconst specialIds = new Set(['TitleBar', 'SideBar', 'Main', 'ActivityBar', 'StatusBar', 'Panel'])\n\nconst isSpecial = (id) => {\n return specialIds.has(id)\n}\n\nconst createPlaceholder = (viewletId, parentId, top, left, width, height) => {\n const $PlaceHolder = document.createElement('div')\n $PlaceHolder.className = `Viewlet ${viewletId}`\n SetBounds.setBounds($PlaceHolder, left, top, width, height)\n if (isSpecial(viewletId)) {\n $PlaceHolder.id = viewletId\n }\n const parentInstance = state.instances[parentId]\n const $Parent = parentInstance.state.$Viewlet\n $Parent.append($PlaceHolder)\n state.instances[viewletId] = {\n state: {\n $Viewlet: $PlaceHolder,\n },\n }\n}\n\n// TODO this code is bad\nexport const sendMultiple = (commands) => {\n for (const command of commands) {\n const [_, viewletId, method, ...args] = command\n switch (_) {\n case 'Viewlet.ariaAnnounce': {\n ariaAnnounce(viewletId)\n\n break\n }\n case 'Viewlet.setBounds': {\n setBounds(viewletId, method, ...args)\n\n break\n }\n case 'Viewlet.create': {\n create(viewletId)\n\n break\n }\n case 'Viewlet.append': {\n append(viewletId, method, ...args)\n\n break\n }\n case 'Viewlet.dispose': {\n dispose(viewletId)\n\n break\n }\n case 'Viewlet.createPlaceholder': {\n createPlaceholder(viewletId, method, ...args)\n\n break\n }\n case 'Viewlet.handleError': {\n handleError(viewletId, method, ...args)\n\n break\n }\n case 'Viewlet.focus': {\n focus(viewletId)\n\n break\n }\n case 'Viewlet.appendViewlet': {\n appendViewlet(viewletId, method, ...args)\n\n break\n }\n case 'Viewlet.addKeyBindings':\n addKeyBindings(viewletId, method)\n break\n case 'Viewlet.removeKeyBindings':\n removeKeyBindings(viewletId)\n break\n default: {\n invoke(viewletId, method, ...args)\n }\n }\n }\n}\n\nexport const dispose = (id) => {\n try {\n Assert.string(id)\n const { instances } = state\n const instance = instances[id]\n if (!instance) {\n Logger.warn(`viewlet instance ${id} not found and cannot be disposed`)\n return\n }\n if (instance.factory.dispose) {\n instance.factory.dispose(instance.state)\n }\n if (instance.state.$Viewlet && instance.state.$Viewlet.isConnected) {\n instance.state.$Viewlet.remove()\n }\n delete instances[id]\n } catch {\n throw new Error(`Failed to dispose ${id}`)\n }\n}\n\n/**\n * @deprecated\n */\nexport const replace = () => {\n // TODO maybe check if viewlet can be recycled\n}\n\nexport const handleError = (id, parentId, message) => {\n Logger.info(`[viewlet-error] ${id}: ${message}`)\n const instance = state.instances[id]\n if (instance && instance.state.$Viewlet.isConnected) {\n instance.state.$Viewlet.remove()\n }\n if (instance && instance.factory && instance.factory.handleError) {\n instance.factory.handleError(instance.state, message)\n return\n }\n if (instance && instance.state.$Viewlet) {\n instance.state.$Viewlet.textContent = `${message}`\n }\n // TODO error should bubble up to until highest possible component\n const parentInstance = state.instances[parentId]\n if (parentInstance && parentInstance.factory && parentInstance.factory.handleError) {\n parentInstance.factory.handleError(instance.state, message)\n }\n}\n\n/**\n * @deprecated\n */\nexport const appendViewlet = (parentId, childId, focus) => {\n if (parentId === 'Widget') {\n // TODO\n return\n }\n const parentInstanceState = state.instances[parentId] // TODO must ensure that parent is already created\n const parentModule = parentInstanceState.factory\n const childInstance = state.instances[childId]\n if (!childInstance) {\n throw new Error(`child instance ${childId} must be defined to be appended to parent ${parentId}`)\n }\n parentModule.appendViewlet(parentInstanceState.state, childInstance.factory.name, childInstance.state.$Viewlet)\n if (focus && childInstance.factory.focus) {\n childInstance.factory.focus(childInstance.state)\n }\n}\n\nconst ariaAnnounce = async (message) => {\n const AriaAlert = await import('../AriaAlert/AriaAlert.js')\n AriaAlert.alert(message)\n}\n\nconst append = (parentId, childId, referenceNodes) => {\n const parentInstance = state.instances[parentId]\n const $Parent = parentInstance.state.$Viewlet\n const childInstance = state.instances[childId]\n const $Child = childInstance.state.$Viewlet\n if (referenceNodes) {\n // TODO this might be too inefficient\n if (childId === referenceNodes[0]) {\n $Parent.prepend($Child)\n return\n }\n for (let i = 0; i < referenceNodes.length; i++) {\n const id = referenceNodes[i]\n if (id === childId) {\n for (let j = i - 1; j >= 0; j--) {\n const beforeId = referenceNodes[j]\n if (state.instances[beforeId]) {\n const $ReferenceNode = state.instances[beforeId].state.$Viewlet\n $ReferenceNode.after($Child)\n return\n }\n }\n for (let j = i + 1; j < referenceNodes.length; j++) {\n const afterId = referenceNodes[j]\n if (state.instances[afterId]) {\n const $ReferenceNode = state.instances[afterId].state.$Viewlet\n $ReferenceNode.before($Child)\n return\n }\n }\n }\n }\n $Parent.append($Child)\n } else {\n $Parent.append($Child)\n }\n if (childInstance.factory.postAppend) {\n childInstance.factory.postAppend(childInstance.state)\n }\n}\n\nconst appendToBody = (childId) => {\n const $Parent = document.body\n const childInstance = state.instances[childId]\n const $Child = childInstance.state.$Viewlet\n $Parent.append($Child)\n}\n\nconst getFn = (command) => {\n switch (command) {\n case 'Viewlet.create':\n return create\n case 'Viewlet.send':\n return invoke\n case 'Viewlet.show':\n return show\n case 'Viewlet.dispose':\n return dispose\n case 'Viewlet.setBounds':\n return setBounds\n case 'Viewlet.ariaAnnounce':\n return ariaAnnounce\n case 'Viewlet.append':\n return append\n case 'Viewlet.appendToBody':\n return appendToBody\n case 'Viewlet.createPlaceholder':\n return createPlaceholder\n case 'Viewlet.focus':\n return focus\n case 'Viewlet.appendViewlet':\n return appendViewlet\n case 'Viewlet.addKeyBindings':\n return addKeyBindings\n default:\n throw new Error(`unknown command ${command}`)\n }\n}\n\nexport const executeCommands = (commands) => {\n for (const [command, ...args] of commands) {\n const fn = getFn(command)\n fn(...args)\n }\n}\n\nexport const show = (id) => {\n const instance = state.instances[id]\n const $Viewlet = instance.state.$Viewlet\n const $Workbench = document.getElementById('Workbench')\n $Workbench.append($Viewlet)\n if (instance.factory.focus) {\n instance.factory.focus(instance.state)\n }\n}\n\nexport const setBounds = (id, left, top, width, height) => {\n const instance = state.instances[id]\n if (!instance) {\n return\n }\n const $Viewlet = instance.state.$Viewlet\n SetBounds.setBounds($Viewlet, left, top, width, height)\n}\n", "import * as Viewlet from '../Viewlet/Viewlet.js'\n\nexport const name = 'Viewlet'\n\nexport const Commands = {\n appendViewlet: Viewlet.appendViewlet,\n dispose: Viewlet.dispose,\n executeCommands: Viewlet.executeCommands,\n focus: Viewlet.focus,\n handleError: Viewlet.handleError,\n invoke: Viewlet.invoke,\n loadModule: Viewlet.loadModule,\n refresh: Viewlet.refresh,\n send: Viewlet.invoke,\n sendMultiple: Viewlet.sendMultiple,\n setBounds: Viewlet.setBounds,\n show: Viewlet.show,\n addKeyBindings: Viewlet.addKeyBindings,\n removeKeyBindings: Viewlet.removeKeyBindings,\n}\n", "export const LocalStorage = 1\n\nexport const SessionStorage = 2\n", "import * as WebStorageType from '../WebStorageType/WebStorageType.js'\n\nconst getStorage = (storageType) => {\n switch (storageType) {\n case WebStorageType.LocalStorage:\n return localStorage\n case WebStorageType.SessionStorage:\n return sessionStorage\n default:\n throw new Error(`unsupported storage type ${storageType}`)\n }\n}\n\nexport const getItem = (storageType, key) => {\n const storage = getStorage(storageType)\n return storage.getItem(key) || undefined\n}\n\nexport const setItem = (storageType, key, value) => {\n const storage = getStorage(storageType)\n storage.setItem(key, value)\n}\n\nexport const setJsonObjects = (storageType, objects) => {\n const storage = getStorage(storageType)\n for (const [key, value] of Object.entries(objects)) {\n storage.setItem(key, value)\n }\n}\n\nexport const clear = (storageType) => {\n const storage = getStorage(storageType)\n storage.clear()\n}\n", "import * as WebStorage from './WebStorage.js'\n\nexport const name = 'WebStorage'\n\nexport const Commands = {\n clear: WebStorage.clear,\n getItem: WebStorage.getItem,\n setItem: WebStorage.setItem,\n setJsonObjects: WebStorage.setJsonObjects,\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const reload = () => {\n location.reload()\n}\n\nexport const minimize = () => {}\n\nexport const maximize = () => {}\n\nexport const unmaximize = () => {}\n\nexport const close = () => {\n // window.close()\n}\n\nexport const setTitle = (title) => {\n document.title = title\n}\n\nconst sendVisibilityChangeHint = () => {\n RendererWorker.send(\n /* SaveState.handleVisibilityChange */ 'SaveState.handleVisibilityChange',\n /* visibilityState */ 'hidden'\n )\n}\n\nconst handleBeforeUnload = () => {\n sendVisibilityChangeHint()\n}\nconst handlePointerLeave = () => {\n sendVisibilityChangeHint()\n}\n\n// cannot use visibilty change event because worker cannot process events when page closes\n// https://stackoverflow.com/questions/20084348/what-happens-to-a-web-worker-if-i-close-the-page-that-created-this-web-worker/20105455#20105455\n// beforeunload event has the same problem, pointerleave event sometimes works\nexport const onVisibilityChange = () => {\n window.addEventListener('beforeunload', handleBeforeUnload)\n document.addEventListener('pointerleave', handlePointerLeave)\n}\n", "import * as Window from './Window.js'\n\nexport const name = 'Window'\n\nexport const Commands = {\n close: Window.close,\n maximize: Window.maximize,\n minimize: Window.minimize,\n onVisibilityChange: Window.onVisibilityChange,\n reload: Window.reload,\n setTitle: Window.setTitle,\n unmaximize: Window.unmaximize,\n}\n", "import * as Command from './parts/Command/Command.js'\nimport * as ErrorHandling from './parts/ErrorHandling/ErrorHandling.js'\nimport * as Module from './parts/Module/Module.js'\nimport * as Platform from './parts/Platform/Platform.js'\nimport * as PlatformType from './parts/PlatformType/PlatformType.js'\nimport * as RendererWorker from './parts/RendererWorker/RendererWorker.js'\nimport * as Event from './parts/Event/Event.js'\n\nconst handleBeforeInstallPrompt = (event) => {\n Event.preventDefault(event)\n}\n\nconst main = async () => {\n onerror = ErrorHandling.handleError\n onunhandledrejection = ErrorHandling.handleUnhandledRejection\n Command.setLoad(Module.load)\n if (Platform.platform === PlatformType.Web) {\n // disable prompt to download app as pwa\n // @ts-ignore\n window.onbeforeinstallprompt = handleBeforeInstallPrompt\n }\n // TODO this is discovered very late\n await RendererWorker.hydrate()\n}\n\nmain()\n\nexport const send = RendererWorker.send\n", "export const isChromeExtensionError = (error) => {\n return `${error}` === 'Script error.'\n}\n", "import * as IsChromeExtensionError from '../IsChromeExtensionError/IsChromeExtensionError.js'\nimport * as IsFirefoxWorkerError from '../IsFirefoxWorkerError/IsFirefoxWorkerError.js'\nimport * as Logger from '../Logger/Logger.js'\n\nexport const handleError = (error) => {\n if (IsChromeExtensionError.isChromeExtensionError(error)) {\n // ignore errors from chrome extensions\n return\n }\n if (IsFirefoxWorkerError.isFirefoxWorkerError(error)) {\n // ignore firefox worker errors\n return\n }\n Logger.info(`[renderer-process] Unhandled Error: ${error}`)\n alert(error)\n}\n\nexport const handleUnhandledRejection = (event) => {\n Logger.info(`[renderer-process] Unhandled Rejection: ${event.reason}`)\n alert(event.reason)\n}\n", "import * as ModuleId from '../ModuleId/ModuleId.js'\n\nexport const load = (moduleId) => {\n switch (moduleId) {\n case ModuleId.Audio:\n return import('../Audio/Audio.ipc.js')\n case ModuleId.ClipBoard:\n return import('../ClipBoard/ClipBoard.ipc.js')\n case ModuleId.ConfirmPrompt:\n return import('../ConfirmPrompt/ConfirmPrompt.ipc.js')\n case ModuleId.Css:\n return import('../Css/Css.ipc.js')\n case ModuleId.Developer:\n return import('../Developer/Developer.ipc.js')\n case ModuleId.Download:\n return import('../Download/Download.ipc.js')\n case ModuleId.EditorError:\n return import('../EditorError/EditorError.ipc.js')\n case ModuleId.EditorHover:\n return import('../EditorHover/EditorHover.ipc.js')\n case ModuleId.EditorRename:\n return import('../EditorRename/EditorRename.ipc.js')\n case ModuleId.Eval:\n return import('../Eval/Eval.ipc.js')\n case ModuleId.FilePicker:\n return import('../FilePicker/FilePicker.ipc.js')\n case ModuleId.FileSystemHandle:\n return import('../FileSystemHandle/FileSystemHandle.ipc.js')\n case ModuleId.ImagePreview:\n return import('../ImagePreview/ImagePreview.ipc.js')\n case ModuleId.InitData:\n return import('../InitData/InitData.ipc.js')\n case ModuleId.KeyBindings:\n return import('../KeyBindings/KeyBindings.ipc.js')\n case ModuleId.Layout:\n return import('../Layout/Layout.ipc.js')\n case ModuleId.Location:\n return import('../Location/Location.ipc.js')\n case ModuleId.Meta:\n return import('../Meta/Meta.ipc.js')\n case ModuleId.Notification:\n return import('../Notification/Notification.ipc.js')\n case ModuleId.OffscreenCanvas:\n return import('../OffscreenCanvas/OffscreenCanvas.ipc.js')\n case ModuleId.Menu:\n return import('../OldMenu/Menu.ipc.js')\n case ModuleId.Open:\n return import('../Open/Open.ipc.js')\n case ModuleId.Performance:\n return import('../Performance/Performance.ipc.js')\n case ModuleId.SanitizeHtml:\n return import('../SanitizeHtml/SanitizeHtml.ipc.js')\n case ModuleId.ServiceWorker:\n return import('../ServiceWorker/ServiceWorker.ipc.js')\n case ModuleId.TestFrameWork:\n return import('../TestFrameWork/TestFrameWork.ipc.js')\n case ModuleId.Transferrable:\n return import('../Transferrable/Transferrable.ipc.js')\n case ModuleId.Viewlet:\n return import('../Viewlet/Viewlet.ipc.js')\n case ModuleId.WebStorage:\n return import('../WebStorage/WebStorage.ipc.js')\n case ModuleId.Window:\n return import('../Window/Window.ipc.js')\n default:\n throw new Error(`module ${moduleId} not found`)\n }\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;AAAA,IAAaA,QACA,WACA,KACA,WACA,UACA,kBACA,aACA,aACA,cACA,cACA,UACA,aACA,QACA,UAEA,MACA,MACA,cACA,MACA,OACA,eAEA,eACA,SACA,aACA,YACA,QACA,WACA,aACA,MACA,YACA,kBACA,cACAC,kBACA,eACA;AAnCb;AAAA;AAAA;AAAO,IAAMD,SAAQ;AACd,IAAM,YAAY;AAClB,IAAM,MAAM;AACZ,IAAM,YAAY;AAClB,IAAM,WAAW;AACjB,IAAM,mBAAmB;AACzB,IAAM,cAAc;AACpB,IAAM,cAAc;AACpB,IAAM,eAAe;AACrB,IAAM,eAAe;AACrB,IAAM,WAAW;AACjB,IAAM,cAAc;AACpB,IAAM,SAAS;AACf,IAAM,WAAW;AAEjB,IAAM,OAAO;AACb,IAAM,OAAO;AACb,IAAM,eAAe;AACrB,IAAM,OAAO;AACb,IAAM,QAAQ;AACd,IAAM,gBAAgB;AAEtB,IAAM,gBAAgB;AACtB,IAAM,UAAU;AAChB,IAAM,cAAc;AACpB,IAAM,aAAa;AACnB,IAAM,SAAS;AACf,IAAM,YAAY;AAClB,IAAM,cAAc;AACpB,IAAM,OAAO;AACb,IAAM,aAAa;AACnB,IAAM,mBAAmB;AACzB,IAAM,eAAe;AACrB,IAAMC,mBAAkB;AACxB,IAAM,gBAAgB;AACtB,IAAM,gBAAgB;AAAA;AAAA;;;ACnC7B,IAEa;AAFb;AAAA;AAAA;AAAA;AAEO,IAAM,cAAc,CAAC,cAAc;AACxC,cAAQ,WAAW;AAAA,QACjB,KAAK;AACH,iBAAgBC;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AACH,iBAAgBC;AAAA,QAClB,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AACH,i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",
|
|
6
6
|
"names": ["Audio", "OffscreenCanvas", "Audio", "OffscreenCanvas", "load", "type", "text", "Commands", "name", "Commands", "name", "text", "Commands", "name", "state", "Commands", "name", "Commands", "name", "state", "Menu", "alert", "$AriaAlert1", "$AriaAlert2", "state", "alert", "Commands", "name", "create", "hover", "Commands", "name", "create", "create", "state", "remove", "state", "remove", "Error", "type", "resolve", "event", "Error", "name", "name", "create", "resolve", "create", "name", "type", "Error", "transfer", "create", "resolve", "create", "name", "create", "type", "resolve", "create", "Electron", "state", "Electron", "assetDir", "state", "isElectron", "name", "create", "transfer", "create", "state", "Commands", "name", "create", "Commands", "name", "Commands", "name", "Commands", "name", "create", "dispose", "state", "Commands", "name", "create", "dispose", "hydrate", "Commands", "name", "state", "addKeyBindings", "removeKeyBindings", "hydrate", "Commands", "name", "hydrate", "Commands", "name", "Commands", "name", "hydrate", "Commands", "name", "create", "dispose", "type", "Commands", "name", "create", "dispose", "state", "get", "create", "Commands", "name", "create", "findIndex", "Separator", "None", "None", "Separator", "state", "findIndex", "Menu", "$Menu", "handleKeyDown", "handleFocusOut", "Commands", "name", "Commands", "name", "Commands", "name", "set", "array", "object", "create", "document", "NodeFilter", "name", "html", "Commands", "name", "register", "Commands", "name", "register", "text", "element", "text", "toBeHidden", "toHaveCount", "toBeFocused", "toBeVisible", "toHaveAttribute", "toHaveClass", "toHaveCss", "toHaveId", "toHaveText", "toHaveValue", "text", "AssertionError", "state", "text", "resolve", "Commands", "name", "state", "Commands", "name", "Audio", "Error", "ImagePreview", "KeyBindings", "Layout", "Main", "Panel", "Tab", "Button", "transfer", "create", "handleBlur", "handleContextMenu", "handleContextMenu", "handleBlur", "handleFocus", "ActivityBar", "SideBar", "StatusBar", "create", "dispose", "Tab", "Button", "ActivityBar", "state", "handleContextMenu", "handleFocus", "handleBlur", "transfer", "handleAudioError", "attachEvents", "create", "state", "handleAudioError", "create", "dispose", "state", "handleSliderPointerMove", "handleSliderPointerDown", "attachEvents", "create", "state", "handleSliderPointerDown", "create", "dispose", "focus", "refresh", "state", "create", "handleClick", "getNodeIndex", "handleClick", "create", "handleClick", "state", "create", "handleWheel", "state", "create", "handleWheel", "state", "create", "text", "handleWheel", "handleMousedown", "handleWheel", "handleScrollBarThumbPointerMove", "handleScrollBarPointerDown", "None", "Small", "Normal", "Large", "Small", "Normal", "Large", "None", "state", "state", "attachEvents", "create", "dispose", "handleError", "setBounds", "setFocusedIndex", "setItems", "state", "handleWheel", "handleMousedown", "handleScrollBarPointerDown", "handleWheel", "handleImageError", "handleContextMenu", "handlePointerMove", "handlePointerUp", "handlePointerCaptureLost", "handlePointerDown", "handleWheel", "handleContextMenu", "handleError", "handleFocus", "handleImageError", "attachEvents", "create", "dispose", "setSrc", "state", "handleError", "handleFocus", "handlePointerDown", "handlePointerUp", "handleContextMenu", "handleWheel", "create", "dispose", "refresh", "state", "List", "None", "None", "Editor", "handleContextMenu", "handleBlur", "handlePointerCaptureLost", "handleMouseDown", "Editor", "text", "handleContextMenu", "handleFocus", "handleBlur", "handleMouseDown", "handleWheel", "handleScrollBarVerticalPointerDown", "handleScrollBarHorizontalPointerDown", "handlePointerCaptureLost", "text", "state", "state", "state", "text", "i", "state", "create", "setScrollBar", "setScrollBarHorizontal", "setSelections", "focus", "List", "handleFocus", "handleBlur", "handleMouseDown", "handleScrollBarVerticalPointerDown", "handleScrollBarHorizontalPointerDown", "handleContextMenu", "handleWheel", "state", "create", "focus", "handleError", "setScrollBar", "setScrollBarHorizontal", "setSelections", "setText", "state", "create", "dispose", "focus", "refresh", "state", "create", "setMessage", "state", "Text", "Text", "object", "focus", "handleBlur", "handleContextMenu", "handleClickAt", "handleWheel", "handlePointerDown", "handleFocus", "handleBlur", "handleDragOver", "getFilePaths", "handleDrop", "handleContextMenu", "handleClick", "handleWheel", "handlePointerDown", "handleMouseEnter", "handleMouseLeave", "focus", "handleClickAt", "attachEvents", "create", "dispose", "handleError", "setFocusedIndex", "activeId", "create$Row", "state", "handleClick", "handleContextMenu", "handleMouseEnter", "handleMouseLeave", "handleWheel", "handleBlur", "handleDragOver", "handleDrop", "handleFocus", "handlePointerDown", "$Dirent", "$InputBox", "handleIconError", "handleReadmeContextMenu", "attachEvents", "create", "state", "handleReadmeContextMenu", "handleIconError", "name", "handleScrollBarClick", "handleClick", "handleWheel", "handleTouchMove", "handleTouchStart", "handleTouchEnd", "handleContextMenu", "handleScrollBarThumbPointerMove", "handleScrollBarThumbPointerMove", "handleScrollBarPointerDown", "handleFocus", "getNodeIndex", "handlePointerDown", "handleContextMenu", "handleWheel", "handleInput", "handleIconError", "handleTouchMove", "handleTouchStart", "handleTouchEnd", "handleScrollBarClick", "handleClick", "attachEvents", "create", "dispose", "focus", "handleError", "setFocusedIndex", "setMessage", "activeId", "render$ExtensionsLess", "render$ExtensionsEqual", "render$ExtensionsMore", "state", "handleInput", "handleContextMenu", "handlePointerDown", "handleFocus", "handleTouchStart", "handleTouchMove", "handleTouchEnd", "handleWheel", "handleScrollBarPointerDown", "handleIconError", "handleInput", "focusPrevious", "handleInput", "handleClick", "handleFocus", "focusPrevious", "attachEvents", "create", "dispose", "focus", "state", "handleInput", "handleFocus", "handleClick", "getNodeIndex", "create", "setMessage", "setFocusedIndex", "handleError", "focus", "location", "state", "create", "focus", "handleError", "setFocusedIndex", "setMessage", "Button", "Input", "Button", "Col", "ColGroup", "Div", "H1", "Input", "Kbd", "Span", "Table", "TBody", "Td", "Text", "Th", "THead", "Tr", "type", "H1", "Div", "Kbd", "Table", "TBody", "Th", "Td", "THead", "Tr", "Input", "ColGroup", "Col", "Button", "Span", "type", "Text", "render", "handleInput", "handleClick", "handleWheel", "handleInput", "getNodeIndex", "handleWheel", "handlePointerDown", "handleClick", "Search", "Number", "create", "setValue", "UiStrings", "Search", "handlePointerDown", "handleInput", "handleWheel", "state", "render", "handleFocus", "handleBlur", "handleKeyDown", "handleSashPointerMove", "handlePointerCaptureLost", "handleSashPointerDown", "handleSashDoubleClick", "handleResize", "handleFocus", "handleBlur", "handleKeyDown", "handleKeyUp", "attachEvents", "create", "state", "handleSashPointerDown", "handleSashDoubleClick", "handleResize", "handleFocus", "handleBlur", "handleKeyDown", "handleKeyUp", "create", "handleDragOver", "handleDragStart", "handleDragOver", "handleDragEnd", "handleDrop", "getNodeIndex", "create", "dispose", "focus", "handleDragStart", "handleDrop", "handleDragOver", "handleDragEnd", "state", "focusIndex", "$Tab", "text", "closeEditor", "handleTabClick", "handleTabContextMenu", "ClassNames", "handleDragStart", "getNodeIndex", "getIndex", "handleTabCloseButtonMouseDown", "handleTabMouseDown", "handleTabsMouseDown", "handleTabsContextMenu", "closeEditor", "handleTabClick", "handleTabContextMenu", "create", "handleTabsMouseDown", "handleTabsContextMenu", "handleDragStart", "state", "append", "create", "dispose", "focus", "handleError", "state", "text", "create", "create", "create", "create", "Button", "create", "type", "Button", "handleClick", "create", "handleClickClose", "appendViewlet", "create", "dispose", "focus", "setSelectedIndex", "setTabs", "UiStrings", "getNodeIndex", "handleClickClose", "state", "name", "create", "UiStrings", "Number", "state", "get", "focusIndex", "handlePointerDown", "focusIndex", "attachEvents", "create", "focus", "setFocusedIndex", "setMessage", "state", "handlePointerDown", "handleWheel", "handleClickAt", "handleBlur", "handleBeforeInput", "handleWheel", "handlePointerDown", "handleBlur", "handleBeforeInput", "handleClickAt", "create", "dispose", "focus", "setFocusedIndex", "setValue", "activeId", "ClassNames", "state", "List", "handleBlur", "handleBeforeInput", "handlePointerDown", "handleWheel", "alert", "create", "focus", "handleError", "setFocusedIndex", "setMessage", "handleClickSectionWatch", "handleClickSectionBreakpoints", "handleClickSectionScope", "handleClickSectionCallstack", "handlePointerDown", "create", "handlePointerDown", "state", "Search", "handleInput", "handleClick", "handleContextMenu", "handleScrollBarClick", "handleWheel", "handleInput", "handleFocus", "getNodeIndex", "getIndex", "handleClick", "handleContextMenu", "handleScrollBarThumbPointerMove", "handleScrollBarPointerDown", "handleWheel", "handleReplaceInput", "handleListFocus", "handleListBlur", "handleScrollBarClick", "attachEvents", "create", "dispose", "focus", "refresh", "setContentHeight", "setFocusedIndex", "setMessage", "setNegativeMargin", "setValue", "activeId", "focusClassName", "UiStrings", "create$Row", "render$Row", "render$RowsLess", "render$RowsEqual", "render$RowsMore", "render$Rows", "Search", "state", "handleInput", "handleFocus", "handleScrollBarPointerDown", "handleListFocus", "handleListBlur", "handleClick", "handleContextMenu", "handleWheel", "type", "text", "setSize", "handleReplaceInput", "$ViewletSearchReplaceInput", "appendViewlet", "create", "dispose", "focus", "setActions", "SideBar", "state", "name", "handleInput", "handleInput", "handleFocus", "handleBlur", "create", "dispose", "setButtonsEnabled", "UiStrings", "handleInput", "handleFocus", "handleBlur", "state", "handleInput", "handleClick", "handleContextMenu", "handleFocus", "handleClick", "handleMouseOver", "handleMouseOut", "handleContextMenu", "handleInput", "index", "findIndex", "attachEvents", "create", "dispose", "focus", "setError", "create$Button", "state", "handleFocus", "handleInput", "handleClick", "handleContextMenu", "handleMouseOver", "handleMouseOut", "create", "focus", "setItems", "handleClick", "StatusBar", "state", "noop", "text", "array", "state", "handleInput", "handleKeyDown", "handleBeforeInput", "render", "focus", "write", "create", "handleInput", "state", "text", "handleInput", "handleInput", "handleFocus", "Commands", "create", "dispose", "focus", "refresh", "write", "handleInput", "handleFocus", "state", "handleContextMenu", "attachEvents", "create", "state", "handleContextMenu", "handleClickClose", "handleClickClose", "create", "dispose", "setButtons", "state", "create", "handleMouseOut", "handleClick", "handleMouseOver", "handleFocusOut", "getNodeIndex", "getIndex", "handleClick", "handleMenuMouseOver", "handleMenuMouseDown", "handleFocus", "handleMouseOver", "handleMouseOut", "findIndex", "attachEvents", "closeMenu", "create", "dispose", "focus", "setFocusedIndex", "activeId", "create$Menu", "state", "handleClick", "handleFocusOut", "handleFocus", "focusIndex", "Menu", "type", "handleMenuMouseOver", "handleMenuMouseDown", "handleVideoError", "attachEvents", "create", "setSrc", "state", "handleVideoError", "ImagePreview", "Audio", "Error", "KeyBindings", "Layout", "Main", "Panel", "state", "create", "addKeyBindings", "removeKeyBindings", "loadModule", "focus", "refresh", "dispose", "handleError", "appendViewlet", "append", "setBounds", "Commands", "name", "appendViewlet", "dispose", "focus", "handleError", "loadModule", "refresh", "setBounds", "addKeyBindings", "removeKeyBindings", "clear", "Commands", "name", "clear", "reload", "close", "setTitle", "Commands", "name", "close", "reload", "setTitle", "load", "Audio", "OffscreenCanvas", "load", "send"]
|
|
7
7
|
}
|