From 01d99645a6e21dc8fd60db7602b8928a244238d5 Mon Sep 17 00:00:00 2001 From: Andrew Pareles Date: Sat, 9 Nov 2024 21:03:03 -0800 Subject: [PATCH] WORKS --- src/package.json | 3 + .../void/browser/react/out/Sidebar.css | 1232 + .../void/browser/react/out/Sidebar.css.map | 1 + .../contrib/void/browser/react/out/Sidebar.js | 34582 +++++++++++++++- .../void/browser/react/out/Sidebar.js.map | 2 +- .../browser/react/sidebar-tsx/Sidebar.tsx | 3 +- .../contrib/void/browser/react/tsup.config.js | 2 +- .../contrib/void/browser/registerSidebar.ts | 4 +- 8 files changed, 35382 insertions(+), 447 deletions(-) create mode 100644 src/package.json create mode 100644 src/vs/workbench/contrib/void/browser/react/out/Sidebar.css create mode 100644 src/vs/workbench/contrib/void/browser/react/out/Sidebar.css.map diff --git a/src/package.json b/src/package.json new file mode 100644 index 00000000..3dbc1ca5 --- /dev/null +++ b/src/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/src/vs/workbench/contrib/void/browser/react/out/Sidebar.css b/src/vs/workbench/contrib/void/browser/react/out/Sidebar.css new file mode 100644 index 00000000..17f0d971 --- /dev/null +++ b/src/vs/workbench/contrib/void/browser/react/out/Sidebar.css @@ -0,0 +1,1232 @@ +/* ../../../../browser/parts/views/media/paneviewlet.css */ +.monaco-pane-view .split-view-view:first-of-type > .pane > .pane-header { + border-top: none !important; +} +.monaco-pane-view .split-view-view:first-of-type > .pane { + border-left: none !important; +} +.monaco-pane-view .pane > .pane-header { + position: relative; +} +.monaco-pane-view .pane > .pane-header.not-collapsible .twisty-container { + display: none; +} +.monaco-pane-view .pane > .pane-header.not-collapsible .title { + margin-left: 8px; +} +.monaco-pane-view .pane > .pane-header > .actions.show-always, +.monaco-pane-view .pane.expanded > .pane-header > .actions.show-expanded { + display: initial; +} +.monaco-pane-view .pane > .pane-header > .icon { + display: none; + width: 16px; + height: 16px; +} +.monaco-pane-view .pane.pane.horizontal:not(.expanded) > .pane-header > .icon { + display: inline; + margin-top: 4px; +} +.monaco-pane-view .pane > .pane-header h3.title { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + font-size: 11px; + min-width: 3ch; + -webkit-margin-before: 0; + -webkit-margin-after: 0; +} +.monaco-pane-view .pane > .pane-header .description { + display: block; + font-weight: normal; + margin-left: 10px; + opacity: 0.6; + overflow: hidden; + text-overflow: ellipsis; + text-transform: none; + white-space: nowrap; + flex-shrink: 100000; +} +.monaco-pane-view .pane > .pane-header .description .codicon { + font-size: 9px; + margin-left: 2px; +} +.monaco-pane-view .pane > .pane-header:not(.expanded) .description { + display: none; +} +.monaco-pane-view .pane.horizontal:not(.expanded) > .pane-header h3.title, +.monaco-pane-view .pane.horizontal:not(.expanded) > .pane-header .description { + display: none; +} +.monaco-pane-view .pane .monaco-progress-container { + position: absolute; + left: 0; + top: -2px; + z-index: 5; +} +.monaco-pane-view .pane:not(.merged-header) .monaco-progress-container { + top: 20px; +} + +/* ../../../../../base/browser/ui/aria/aria.css */ +.monaco-aria-container { + position: absolute; + left: -999em; +} + +/* ../../../../../base/browser/ui/list/list.css */ +.monaco-list { + position: relative; + height: 100%; + width: 100%; + white-space: nowrap; +} +.monaco-list.mouse-support { + user-select: none; + -webkit-user-select: none; +} +.monaco-list > .monaco-scrollable-element { + height: 100%; +} +.monaco-list-rows { + position: relative; + width: 100%; + height: 100%; +} +.monaco-list.horizontal-scrolling .monaco-list-rows { + width: auto; + min-width: 100%; +} +.monaco-list-row { + position: absolute; + box-sizing: border-box; + overflow: hidden; + width: 100%; +} +.monaco-list.mouse-support .monaco-list-row { + cursor: pointer; + touch-action: none; +} +.monaco-list .monaco-scrollable-element > .scrollbar.vertical, +.monaco-pane-view > .monaco-split-view2.vertical > .monaco-scrollable-element > .scrollbar.vertical { + z-index: 14; +} +.monaco-list-row.scrolling { + display: none !important; +} +.monaco-list.element-focused, +.monaco-list.selection-single, +.monaco-list.selection-multiple { + outline: 0 !important; +} +.monaco-drag-image { + display: inline-block; + padding: 1px 7px; + border-radius: 10px; + font-size: 12px; + position: absolute; + z-index: 1000; +} +.monaco-list-type-filter-message { + position: absolute; + box-sizing: border-box; + width: 100%; + height: 100%; + top: 0; + left: 0; + padding: 40px 1em 1em 1em; + text-align: center; + white-space: normal; + opacity: 0.7; + pointer-events: none; +} +.monaco-list-type-filter-message:empty { + display: none; +} + +/* ../../../../../base/browser/ui/scrollbar/media/scrollbars.css */ +.monaco-scrollable-element > .scrollbar > .scra { + cursor: pointer; + font-size: 11px !important; +} +.monaco-scrollable-element > .visible { + opacity: 1; + background: rgba(0, 0, 0, 0); + transition: opacity 100ms linear; + z-index: 11; +} +.monaco-scrollable-element > .invisible { + opacity: 0; + pointer-events: none; +} +.monaco-scrollable-element > .invisible.fade { + transition: opacity 800ms linear; +} +.monaco-scrollable-element > .shadow { + position: absolute; + display: none; +} +.monaco-scrollable-element > .shadow.top { + display: block; + top: 0; + left: 3px; + height: 3px; + width: 100%; + box-shadow: var(--vscode-scrollbar-shadow) 0 6px 6px -6px inset; +} +.monaco-scrollable-element > .shadow.left { + display: block; + top: 3px; + left: 0; + height: 100%; + width: 3px; + box-shadow: var(--vscode-scrollbar-shadow) 6px 0 6px -6px inset; +} +.monaco-scrollable-element > .shadow.top-left-corner { + display: block; + top: 0; + left: 0; + height: 3px; + width: 3px; +} +.monaco-scrollable-element > .shadow.top.left { + box-shadow: var(--vscode-scrollbar-shadow) 6px 0 6px -6px inset; +} +.monaco-scrollable-element > .scrollbar > .slider { + background: var(--vscode-scrollbarSlider-background); +} +.monaco-scrollable-element > .scrollbar > .slider:hover { + background: var(--vscode-scrollbarSlider-hoverBackground); +} +.monaco-scrollable-element > .scrollbar > .slider.active { + background: var(--vscode-scrollbarSlider-activeBackground); +} + +/* ../../../../../base/browser/ui/contextview/contextview.css */ +.context-view { + position: absolute; +} +.context-view.fixed { + all: initial; + font-family: inherit; + font-size: 13px; + position: fixed; + color: inherit; +} + +/* ../../../../../base/browser/ui/selectBox/selectBoxCustom.css */ +.monaco-select-box-dropdown-padding { + --dropdown-padding-top: 1px; + --dropdown-padding-bottom: 1px; +} +.hc-black .monaco-select-box-dropdown-padding, +.hc-light .monaco-select-box-dropdown-padding { + --dropdown-padding-top: 3px; + --dropdown-padding-bottom: 4px; +} +.monaco-select-box-dropdown-container { + display: none; + box-sizing: border-box; +} +.monaco-select-box-dropdown-container > .select-box-details-pane > .select-box-description-markdown * { + margin: 0; +} +.monaco-select-box-dropdown-container > .select-box-details-pane > .select-box-description-markdown a:focus { + outline: 1px solid -webkit-focus-ring-color; + outline-offset: -1px; +} +.monaco-select-box-dropdown-container > .select-box-details-pane > .select-box-description-markdown code { + line-height: 15px; + font-family: var(--monaco-monospace-font); +} +.monaco-select-box-dropdown-container.visible { + display: flex; + flex-direction: column; + text-align: left; + width: 1px; + overflow: hidden; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; +} +.monaco-select-box-dropdown-container > .select-box-dropdown-list-container { + flex: 0 0 auto; + align-self: flex-start; + padding-top: var(--dropdown-padding-top); + padding-bottom: var(--dropdown-padding-bottom); + padding-left: 1px; + padding-right: 1px; + width: 100%; + overflow: hidden; + box-sizing: border-box; +} +.monaco-select-box-dropdown-container > .select-box-details-pane { + padding: 5px; +} +.hc-black .monaco-select-box-dropdown-container > .select-box-dropdown-list-container { + padding-top: var(--dropdown-padding-top); + padding-bottom: var(--dropdown-padding-bottom); +} +.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row { + cursor: pointer; +} +.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row > .option-text { + text-overflow: ellipsis; + overflow: hidden; + padding-left: 3.5px; + white-space: nowrap; + float: left; +} +.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row > .option-detail { + text-overflow: ellipsis; + overflow: hidden; + padding-left: 3.5px; + white-space: nowrap; + float: left; + opacity: 0.7; +} +.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row > .option-decorator-right { + text-overflow: ellipsis; + overflow: hidden; + padding-right: 10px; + white-space: nowrap; + float: right; +} +.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row > .visually-hidden { + position: absolute; + left: -10000px; + top: auto; + width: 1px; + height: 1px; + overflow: hidden; +} +.monaco-select-box-dropdown-container > .select-box-dropdown-container-width-control { + flex: 1 1 auto; + align-self: flex-start; + opacity: 0; +} +.monaco-select-box-dropdown-container > .select-box-dropdown-container-width-control > .width-control-div { + overflow: hidden; + max-height: 0px; +} +.monaco-select-box-dropdown-container > .select-box-dropdown-container-width-control > .width-control-div > .option-text-width-control { + padding-left: 4px; + padding-right: 8px; + white-space: nowrap; +} + +/* ../../../../../base/browser/ui/selectBox/selectBox.css */ +.monaco-select-box { + width: 100%; + cursor: pointer; + border-radius: 2px; +} +.monaco-select-box-dropdown-container { + font-size: 13px; + font-weight: normal; + text-transform: none; +} +.monaco-action-bar .action-item.select-container { + cursor: default; +} +.monaco-action-bar .action-item .monaco-select-box { + cursor: pointer; + min-width: 100px; + min-height: 18px; + padding: 2px 23px 2px 8px; +} +.mac .monaco-action-bar .action-item .monaco-select-box { + font-size: 11px; + border-radius: 5px; +} + +/* ../../../../../base/browser/ui/actionbar/actionbar.css */ +.monaco-action-bar { + white-space: nowrap; + height: 100%; +} +.monaco-action-bar .actions-container { + display: flex; + margin: 0 auto; + padding: 0; + height: 100%; + width: 100%; + align-items: center; +} +.monaco-action-bar.vertical .actions-container { + display: inline-block; +} +.monaco-action-bar .action-item { + display: block; + align-items: center; + justify-content: center; + cursor: pointer; + position: relative; +} +.monaco-action-bar .action-item.disabled { + cursor: default; +} +.monaco-action-bar .action-item .icon, +.monaco-action-bar .action-item .codicon { + display: block; +} +.monaco-action-bar .action-item .codicon { + display: flex; + align-items: center; + width: 16px; + height: 16px; +} +.monaco-action-bar .action-label { + display: flex; + font-size: 11px; + padding: 3px; + border-radius: 5px; +} +.monaco-action-bar .action-item.disabled .action-label, +.monaco-action-bar .action-item.disabled .action-label::before, +.monaco-action-bar .action-item.disabled .action-label:hover { + color: var(--vscode-disabledForeground); +} +.monaco-action-bar.vertical { + text-align: left; +} +.monaco-action-bar.vertical .action-item { + display: block; +} +.monaco-action-bar.vertical .action-label.separator { + display: block; + border-bottom: 1px solid #bbb; + padding-top: 1px; + margin-left: .8em; + margin-right: .8em; +} +.monaco-action-bar .action-item .action-label.separator { + width: 1px; + height: 16px; + margin: 5px 4px !important; + cursor: default; + min-width: 1px; + padding: 0; + background-color: #bbb; +} +.secondary-actions .monaco-action-bar .action-label { + margin-left: 6px; +} +.monaco-action-bar .action-item.select-container { + overflow: hidden; + flex: 1; + max-width: 170px; + min-width: 60px; + display: flex; + align-items: center; + justify-content: center; + margin-right: 10px; +} +.monaco-action-bar .action-item.action-dropdown-item { + display: flex; +} +.monaco-action-bar .action-item.action-dropdown-item > .action-dropdown-item-separator { + display: flex; + align-items: center; + cursor: default; +} +.monaco-action-bar .action-item.action-dropdown-item > .action-dropdown-item-separator > div { + width: 1px; +} + +/* ../../../../../base/browser/ui/sash/sash.css */ +:root { + --vscode-sash-size: 4px; + --vscode-sash-hover-size: 4px; +} +.monaco-sash { + position: absolute; + z-index: 35; + touch-action: none; +} +.monaco-sash.disabled { + pointer-events: none; +} +.monaco-sash.mac.vertical { + cursor: col-resize; +} +.monaco-sash.vertical.minimum { + cursor: e-resize; +} +.monaco-sash.vertical.maximum { + cursor: w-resize; +} +.monaco-sash.mac.horizontal { + cursor: row-resize; +} +.monaco-sash.horizontal.minimum { + cursor: s-resize; +} +.monaco-sash.horizontal.maximum { + cursor: n-resize; +} +.monaco-sash.disabled { + cursor: default !important; + pointer-events: none !important; +} +.monaco-sash.vertical { + cursor: ew-resize; + top: 0; + width: var(--vscode-sash-size); + height: 100%; +} +.monaco-sash.horizontal { + cursor: ns-resize; + left: 0; + width: 100%; + height: var(--vscode-sash-size); +} +.monaco-sash:not(.disabled) > .orthogonal-drag-handle { + content: " "; + height: calc(var(--vscode-sash-size) * 2); + width: calc(var(--vscode-sash-size) * 2); + z-index: 100; + display: block; + cursor: all-scroll; + position: absolute; +} +.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled) > .orthogonal-drag-handle.start, +.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled) > .orthogonal-drag-handle.end { + cursor: nwse-resize; +} +.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled) > .orthogonal-drag-handle.end, +.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled) > .orthogonal-drag-handle.start { + cursor: nesw-resize; +} +.monaco-sash.vertical > .orthogonal-drag-handle.start { + left: calc(var(--vscode-sash-size) * -0.5); + top: calc(var(--vscode-sash-size) * -1); +} +.monaco-sash.vertical > .orthogonal-drag-handle.end { + left: calc(var(--vscode-sash-size) * -0.5); + bottom: calc(var(--vscode-sash-size) * -1); +} +.monaco-sash.horizontal > .orthogonal-drag-handle.start { + top: calc(var(--vscode-sash-size) * -0.5); + left: calc(var(--vscode-sash-size) * -1); +} +.monaco-sash.horizontal > .orthogonal-drag-handle.end { + top: calc(var(--vscode-sash-size) * -0.5); + right: calc(var(--vscode-sash-size) * -1); +} +.monaco-sash:before { + content: ""; + pointer-events: none; + position: absolute; + width: 100%; + height: 100%; + background: transparent; +} +.monaco-workbench:not(.reduce-motion) .monaco-sash:before { + transition: background-color 0.1s ease-out; +} +.monaco-sash.hover:before, +.monaco-sash.active:before { + background: var(--vscode-sash-hoverBorder); +} +.monaco-sash.vertical:before { + width: var(--vscode-sash-hover-size); + left: calc(50% - (var(--vscode-sash-hover-size) / 2)); +} +.monaco-sash.horizontal:before { + height: var(--vscode-sash-hover-size); + top: calc(50% - (var(--vscode-sash-hover-size) / 2)); +} +.pointer-events-disabled { + pointer-events: none !important; +} +.monaco-sash.debug { + background: cyan; +} +.monaco-sash.debug.disabled { + background: rgba(0, 255, 255, 0.2); +} +.monaco-sash.debug:not(.disabled) > .orthogonal-drag-handle { + background: red; +} + +/* ../../../../../base/browser/ui/splitview/paneview.css */ +.monaco-pane-view { + width: 100%; + height: 100%; +} +.monaco-pane-view .pane { + overflow: hidden; + width: 100%; + height: 100%; + display: flex; + flex-direction: column; +} +.monaco-pane-view .pane.horizontal:not(.expanded) { + flex-direction: row; +} +.monaco-pane-view .pane > .pane-header { + height: 22px; + font-size: 11px; + font-weight: bold; + overflow: hidden; + display: flex; + cursor: pointer; + align-items: center; + box-sizing: border-box; +} +.monaco-pane-view .pane > .pane-header.not-collapsible { + cursor: default; +} +.monaco-pane-view .pane > .pane-header > .title { + text-transform: uppercase; +} +.monaco-pane-view .pane.horizontal:not(.expanded) > .pane-header { + flex-direction: column; + height: 100%; + width: 22px; +} +.monaco-pane-view .pane > .pane-header > .codicon:first-of-type { + margin: 0 2px; +} +.monaco-pane-view .pane.horizontal:not(.expanded) > .pane-header > .codicon:first-of-type { + margin: 2px; +} +.monaco-pane-view .pane > .pane-header > .actions { + display: none; + margin-left: auto; +} +.monaco-pane-view .pane > .pane-header > .actions .action-item { + margin-right: 4px; +} +.monaco-pane-view .pane > .pane-header > .actions .action-label { + padding: 2px; +} +.monaco-pane-view .pane:hover > .pane-header.expanded > .actions, +.monaco-pane-view .pane:focus-within > .pane-header.expanded > .actions, +.monaco-pane-view .pane > .pane-header.actions-always-visible.expanded > .actions, +.monaco-pane-view .pane > .pane-header.focused.expanded > .actions { + display: initial; +} +.monaco-pane-view .pane > .pane-header .monaco-action-bar .action-item.select-container { + cursor: default; +} +.monaco-pane-view .pane > .pane-header .action-item .monaco-select-box { + cursor: pointer; + min-width: 110px; + min-height: 18px; + padding: 2px 23px 2px 8px; +} +.linux .monaco-pane-view .pane > .pane-header .action-item .monaco-select-box, +.windows .monaco-pane-view .pane > .pane-header .action-item .monaco-select-box { + padding: 0px 23px 0px 8px; +} +.monaco-pane-view:lang(zh-Hans) .pane > .pane-header, +.monaco-pane-view:lang(zh-Hant) .pane > .pane-header, +.monaco-pane-view:lang(ja) .pane > .pane-header, +.monaco-pane-view:lang(ko) .pane > .pane-header { + font-weight: normal; +} +.monaco-pane-view .pane > .pane-header.hidden { + display: none; +} +.monaco-pane-view .pane > .pane-body { + overflow: hidden; + flex: 1; +} +.monaco-pane-view.animated .split-view-view { + transition-duration: 0.15s; + transition-timing-function: ease-out; +} +.reduce-motion .monaco-pane-view .split-view-view { + transition-duration: 0s !important; +} +.monaco-pane-view.animated.vertical .split-view-view { + transition-property: height; +} +.monaco-pane-view.animated.horizontal .split-view-view { + transition-property: width; +} +#monaco-pane-drop-overlay { + position: absolute; + z-index: 10000; + width: 100%; + height: 100%; + left: 0; + box-sizing: border-box; +} +#monaco-pane-drop-overlay > .pane-overlay-indicator { + position: absolute; + width: 100%; + height: 100%; + min-height: 22px; + min-width: 19px; + pointer-events: none; + transition: opacity 150ms ease-out; +} +#monaco-pane-drop-overlay > .pane-overlay-indicator.overlay-move-transition { + transition: + top 70ms ease-out, + left 70ms ease-out, + width 70ms ease-out, + height 70ms ease-out, + opacity 150ms ease-out; +} + +/* ../../../../../base/browser/ui/splitview/splitview.css */ +.monaco-split-view2 { + position: relative; + width: 100%; + height: 100%; +} +.monaco-split-view2 > .sash-container { + position: absolute; + width: 100%; + height: 100%; + pointer-events: none; +} +.monaco-split-view2 > .sash-container > .monaco-sash { + pointer-events: initial; +} +.monaco-split-view2 > .monaco-scrollable-element { + width: 100%; + height: 100%; +} +.monaco-split-view2 > .monaco-scrollable-element > .split-view-container { + width: 100%; + height: 100%; + white-space: nowrap; + position: relative; +} +.monaco-split-view2 > .monaco-scrollable-element > .split-view-container > .split-view-view { + white-space: initial; + position: absolute; +} +.monaco-split-view2 > .monaco-scrollable-element > .split-view-container > .split-view-view:not(.visible) { + display: none; +} +.monaco-split-view2.vertical > .monaco-scrollable-element > .split-view-container > .split-view-view { + width: 100%; +} +.monaco-split-view2.horizontal > .monaco-scrollable-element > .split-view-container > .split-view-view { + height: 100%; +} +.monaco-split-view2.separator-border > .monaco-scrollable-element > .split-view-container > .split-view-view:not(:first-child)::before { + content: " "; + position: absolute; + top: 0; + left: 0; + z-index: 5; + pointer-events: none; + background-color: var(--separator-border); +} +.monaco-split-view2.separator-border.horizontal > .monaco-scrollable-element > .split-view-container > .split-view-view:not(:first-child)::before { + height: 100%; + width: 1px; +} +.monaco-split-view2.separator-border.vertical > .monaco-scrollable-element > .split-view-container > .split-view-view:not(:first-child)::before { + height: 1px; + width: 100%; +} + +/* ../../../../../base/browser/ui/dropdown/dropdown.css */ +.monaco-dropdown { + height: 100%; + padding: 0; +} +.monaco-dropdown > .dropdown-label { + cursor: pointer; + height: 100%; + display: flex; + align-items: center; + justify-content: center; +} +.monaco-dropdown > .dropdown-label > .action-label.disabled { + cursor: default; +} +.monaco-dropdown-with-primary { + display: flex !important; + flex-direction: row; + border-radius: 5px; +} +.monaco-dropdown-with-primary > .action-container > .action-label { + margin-right: 0; +} +.monaco-dropdown-with-primary > .dropdown-action-container > .monaco-dropdown > .dropdown-label .codicon[class*=codicon-] { + font-size: 12px; + padding-left: 0px; + padding-right: 0px; + line-height: 16px; + margin-left: -3px; +} +.monaco-dropdown-with-primary > .dropdown-action-container > .monaco-dropdown > .dropdown-label > .action-label { + display: block; + background-size: 16px; + background-position: center center; + background-repeat: no-repeat; +} + +/* ../../../../../platform/actions/browser/menuEntryActionViewItem.css */ +.monaco-action-bar .action-item.menu-entry .action-label.icon { + width: 16px; + height: 16px; + background-repeat: no-repeat; + background-position: 50%; + background-size: 16px; +} +.monaco-action-bar .action-item.menu-entry.text-only .action-label { + color: var(--vscode-descriptionForeground); + overflow: hidden; + border-radius: 2px; +} +.monaco-action-bar .action-item.menu-entry.text-only.use-comma:not(:last-of-type) .action-label::after { + content: ", "; +} +.monaco-action-bar .action-item.menu-entry.text-only + .action-item:not(.text-only) > .monaco-dropdown .action-label { + color: var(--vscode-descriptionForeground); +} +.monaco-dropdown-with-default { + display: flex !important; + flex-direction: row; + border-radius: 5px; +} +.monaco-dropdown-with-default > .action-container > .action-label { + margin-right: 0; +} +.monaco-dropdown-with-default > .action-container.menu-entry > .action-label.icon { + width: 16px; + height: 16px; + background-repeat: no-repeat; + background-position: 50%; + background-size: 16px; +} +.monaco-dropdown-with-default:hover { + background-color: var(--vscode-toolbar-hoverBackground); +} +.monaco-dropdown-with-default > .dropdown-action-container > .monaco-dropdown > .dropdown-label .codicon[class*=codicon-] { + font-size: 12px; + padding-left: 0px; + padding-right: 0px; + line-height: 16px; + margin-left: -3px; +} +.monaco-dropdown-with-default > .dropdown-action-container > .monaco-dropdown > .dropdown-label > .action-label { + display: block; + background-size: 16px; + background-position: center center; + background-repeat: no-repeat; +} + +/* ../../../../../base/browser/ui/button/button.css */ +.monaco-text-button { + box-sizing: border-box; + display: flex; + width: 100%; + padding: 4px; + border-radius: 2px; + text-align: center; + cursor: pointer; + justify-content: center; + align-items: center; + border: 1px solid var(--vscode-button-border, transparent); + line-height: 18px; +} +.monaco-text-button:focus { + outline-offset: 2px !important; +} +.monaco-text-button:hover { + text-decoration: none !important; +} +.monaco-button.disabled:focus, +.monaco-button.disabled { + opacity: 0.4 !important; + cursor: default; +} +.monaco-text-button .codicon { + margin: 0 0.2em; + color: inherit !important; +} +.monaco-text-button.monaco-text-button-with-short-label { + flex-direction: row; + flex-wrap: wrap; + padding: 0 4px; + overflow: hidden; + height: 28px; +} +.monaco-text-button.monaco-text-button-with-short-label > .monaco-button-label { + flex-basis: 100%; +} +.monaco-text-button.monaco-text-button-with-short-label > .monaco-button-label-short { + flex-grow: 1; + width: 0; + overflow: hidden; +} +.monaco-text-button.monaco-text-button-with-short-label > .monaco-button-label, +.monaco-text-button.monaco-text-button-with-short-label > .monaco-button-label-short { + display: flex; + justify-content: center; + align-items: center; + font-weight: normal; + font-style: inherit; + padding: 4px 0; +} +.monaco-button-dropdown { + display: flex; + cursor: pointer; +} +.monaco-button-dropdown.disabled { + cursor: default; +} +.monaco-button-dropdown > .monaco-button:focus { + outline-offset: -1px !important; +} +.monaco-button-dropdown.disabled > .monaco-button.disabled, +.monaco-button-dropdown.disabled > .monaco-button.disabled:focus, +.monaco-button-dropdown.disabled > .monaco-button-dropdown-separator { + opacity: 0.4 !important; +} +.monaco-button-dropdown > .monaco-button.monaco-text-button { + border-right-width: 0 !important; +} +.monaco-button-dropdown .monaco-button-dropdown-separator { + padding: 4px 0; + cursor: default; +} +.monaco-button-dropdown .monaco-button-dropdown-separator > div { + height: 100%; + width: 1px; +} +.monaco-button-dropdown > .monaco-button.monaco-dropdown-button { + border: 1px solid var(--vscode-button-border, transparent); + border-left-width: 0 !important; + border-radius: 0 2px 2px 0; + display: flex; + align-items: center; +} +.monaco-button-dropdown > .monaco-button.monaco-text-button { + border-radius: 2px 0 0 2px; +} +.monaco-description-button { + display: flex; + flex-direction: column; + align-items: center; + margin: 4px 5px; +} +.monaco-description-button .monaco-button-description { + font-style: italic; + font-size: 11px; + padding: 4px 20px; +} +.monaco-description-button .monaco-button-label, +.monaco-description-button .monaco-button-description { + display: flex; + justify-content: center; + align-items: center; +} +.monaco-description-button .monaco-button-label > .codicon, +.monaco-description-button .monaco-button-description > .codicon { + margin: 0 0.2em; + color: inherit !important; +} +.monaco-button.default-colors, +.monaco-button-dropdown.default-colors > .monaco-button { + color: var(--vscode-button-foreground); + background-color: var(--vscode-button-background); +} +.monaco-button.default-colors:hover, +.monaco-button-dropdown.default-colors > .monaco-button:hover { + background-color: var(--vscode-button-hoverBackground); +} +.monaco-button.default-colors.secondary, +.monaco-button-dropdown.default-colors > .monaco-button.secondary { + color: var(--vscode-button-secondaryForeground); + background-color: var(--vscode-button-secondaryBackground); +} +.monaco-button.default-colors.secondary:hover, +.monaco-button-dropdown.default-colors > .monaco-button.secondary:hover { + background-color: var(--vscode-button-secondaryHoverBackground); +} +.monaco-button-dropdown.default-colors .monaco-button-dropdown-separator { + background-color: var(--vscode-button-background); + border-top: 1px solid var(--vscode-button-border); + border-bottom: 1px solid var(--vscode-button-border); +} +.monaco-button-dropdown.default-colors .monaco-button.secondary + .monaco-button-dropdown-separator { + background-color: var(--vscode-button-secondaryBackground); +} +.monaco-button-dropdown.default-colors .monaco-button-dropdown-separator > div { + background-color: var(--vscode-button-separator); +} + +/* ../../../../../platform/opener/browser/link.css */ +.monaco-link { + color: var(--vscode-textLink-foreground); +} +.monaco-link:hover { + color: var(--vscode-textLink-activeForeground); +} + +/* ../../../../../base/browser/ui/progressbar/progressbar.css */ +.monaco-progress-container { + width: 100%; + height: 2px; + overflow: hidden; +} +.monaco-progress-container .progress-bit { + width: 2%; + height: 2px; + position: absolute; + left: 0; + display: none; +} +.monaco-progress-container.active .progress-bit { + display: inherit; +} +.monaco-progress-container.discrete .progress-bit { + left: 0; + transition: width 100ms linear; +} +.monaco-progress-container.discrete.done .progress-bit { + width: 100%; +} +.monaco-progress-container.infinite .progress-bit { + animation-name: progress; + animation-duration: 4s; + animation-iteration-count: infinite; + transform: translate3d(0px, 0px, 0px); + animation-timing-function: linear; +} +.monaco-progress-container.infinite.infinite-long-running .progress-bit { + animation-timing-function: steps(100); +} +@keyframes progress { + from { + transform: translateX(0%) scaleX(1); + } + 50% { + transform: translateX(2500%) scaleX(3); + } + to { + transform: translateX(4900%) scaleX(1); + } +} + +/* ../../../../../base/browser/ui/toolbar/toolbar.css */ +.monaco-toolbar { + height: 100%; +} +.monaco-toolbar .toolbar-toggle-more { + display: inline-block; + padding: 0; +} + +/* ../../../../../base/browser/ui/toggle/toggle.css */ +.monaco-custom-toggle { + margin-left: 2px; + float: left; + cursor: pointer; + overflow: hidden; + width: 20px; + height: 20px; + border-radius: 3px; + border: 1px solid transparent; + padding: 1px; + box-sizing: border-box; + user-select: none; + -webkit-user-select: none; +} +.monaco-custom-toggle:hover { + background-color: var(--vscode-inputOption-hoverBackground); +} +.hc-black .monaco-custom-toggle:hover, +.hc-light .monaco-custom-toggle:hover { + border: 1px dashed var(--vscode-focusBorder); +} +.hc-black .monaco-custom-toggle, +.hc-light .monaco-custom-toggle { + background: none; +} +.hc-black .monaco-custom-toggle:hover, +.hc-light .monaco-custom-toggle:hover { + background: none; +} +.monaco-custom-toggle.monaco-checkbox { + height: 18px; + width: 18px; + border: 1px solid transparent; + border-radius: 3px; + margin-right: 9px; + margin-left: 0px; + padding: 0px; + opacity: 1; + background-size: 16px !important; +} +.monaco-action-bar .checkbox-action-item { + display: flex; + align-items: center; + border-radius: 2px; + padding-right: 2px; +} +.monaco-action-bar .checkbox-action-item:hover { + background-color: var(--vscode-toolbar-hoverBackground); +} +.monaco-action-bar .checkbox-action-item > .monaco-custom-toggle.monaco-checkbox { + margin-right: 4px; +} +.monaco-action-bar .checkbox-action-item > .checkbox-label { + font-size: 12px; +} +.monaco-custom-toggle.monaco-checkbox:not(.checked)::before { + visibility: hidden; +} + +/* ../../../../../base/browser/ui/inputbox/inputBox.css */ +.monaco-inputbox { + position: relative; + display: block; + padding: 0; + box-sizing: border-box; + border-radius: 2px; + font-size: inherit; +} +.monaco-inputbox > .ibwrapper > .input, +.monaco-inputbox > .ibwrapper > .mirror { + padding: 4px 6px; +} +.monaco-inputbox > .ibwrapper { + position: relative; + width: 100%; +} +.monaco-inputbox > .ibwrapper > .input { + display: inline-block; + box-sizing: border-box; + width: 100%; + height: 100%; + line-height: inherit; + border: none; + font-family: inherit; + font-size: inherit; + resize: none; + color: inherit; +} +.monaco-inputbox > .ibwrapper > input { + text-overflow: ellipsis; +} +.monaco-inputbox > .ibwrapper > textarea.input { + display: block; + scrollbar-width: none; + outline: none; +} +.monaco-inputbox > .ibwrapper > textarea.input::-webkit-scrollbar { + display: none; +} +.monaco-inputbox > .ibwrapper > textarea.input.empty { + white-space: nowrap; +} +.monaco-inputbox > .ibwrapper > .mirror { + position: absolute; + display: inline-block; + width: 100%; + top: 0; + left: 0; + box-sizing: border-box; + white-space: pre-wrap; + visibility: hidden; + word-wrap: break-word; +} +.monaco-inputbox-container { + text-align: right; +} +.monaco-inputbox-container .monaco-inputbox-message { + display: inline-block; + overflow: hidden; + text-align: left; + width: 100%; + box-sizing: border-box; + padding: 0.4em; + font-size: 12px; + line-height: 17px; + margin-top: -1px; + word-wrap: break-word; +} +.monaco-inputbox .monaco-action-bar { + position: absolute; + right: 2px; + top: 4px; +} +.monaco-inputbox .monaco-action-bar .action-item { + margin-left: 2px; +} +.monaco-inputbox .monaco-action-bar .action-item .codicon { + background-repeat: no-repeat; + width: 16px; + height: 16px; +} + +/* ../../../../../base/browser/ui/findinput/findInput.css */ +.monaco-findInput { + position: relative; +} +.monaco-findInput .monaco-inputbox { + font-size: 13px; + width: 100%; +} +.monaco-findInput > .controls { + position: absolute; + top: 3px; + right: 2px; +} +.vs .monaco-findInput.disabled { + background-color: #E1E1E1; +} +.vs-dark .monaco-findInput.disabled { + background-color: #333; +} +.monaco-findInput.highlight-0 .controls, +.hc-light .monaco-findInput.highlight-0 .controls { + animation: monaco-findInput-highlight-0 100ms linear 0s; +} +.monaco-findInput.highlight-1 .controls, +.hc-light .monaco-findInput.highlight-1 .controls { + animation: monaco-findInput-highlight-1 100ms linear 0s; +} +.hc-black .monaco-findInput.highlight-0 .controls, +.vs-dark .monaco-findInput.highlight-0 .controls { + animation: monaco-findInput-highlight-dark-0 100ms linear 0s; +} +.hc-black .monaco-findInput.highlight-1 .controls, +.vs-dark .monaco-findInput.highlight-1 .controls { + animation: monaco-findInput-highlight-dark-1 100ms linear 0s; +} +@keyframes monaco-findInput-highlight-0 { + 0% { + background: rgba(253, 255, 0, 0.8); + } + 100% { + background: transparent; + } +} +@keyframes monaco-findInput-highlight-1 { + 0% { + background: rgba(253, 255, 0, 0.8); + } + 99% { + background: transparent; + } +} +@keyframes monaco-findInput-highlight-dark-0 { + 0% { + background: rgba(255, 255, 255, 0.44); + } + 100% { + background: transparent; + } +} +@keyframes monaco-findInput-highlight-dark-1 { + 0% { + background: rgba(255, 255, 255, 0.44); + } + 99% { + background: transparent; + } +} +/*# sourceMappingURL=Sidebar.css.map */ \ No newline at end of file diff --git a/src/vs/workbench/contrib/void/browser/react/out/Sidebar.css.map b/src/vs/workbench/contrib/void/browser/react/out/Sidebar.css.map new file mode 100644 index 00000000..ad6b78ea --- /dev/null +++ b/src/vs/workbench/contrib/void/browser/react/out/Sidebar.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../../browser/parts/views/media/paneviewlet.css","../../../../../../base/browser/ui/aria/aria.css","../../../../../../base/browser/ui/list/list.css","../../../../../../base/browser/ui/scrollbar/media/scrollbars.css","../../../../../../base/browser/ui/contextview/contextview.css","../../../../../../base/browser/ui/selectBox/selectBoxCustom.css","../../../../../../base/browser/ui/selectBox/selectBox.css","../../../../../../base/browser/ui/actionbar/actionbar.css","../../../../../../base/browser/ui/sash/sash.css","../../../../../../base/browser/ui/splitview/paneview.css","../../../../../../base/browser/ui/splitview/splitview.css","../../../../../../base/browser/ui/dropdown/dropdown.css","../../../../../../platform/actions/browser/menuEntryActionViewItem.css","../../../../../../base/browser/ui/button/button.css","../../../../../../platform/opener/browser/link.css","../../../../../../base/browser/ui/progressbar/progressbar.css","../../../../../../base/browser/ui/toolbar/toolbar.css","../../../../../../base/browser/ui/toggle/toggle.css","../../../../../../base/browser/ui/inputbox/inputBox.css","../../../../../../base/browser/ui/findinput/findInput.css"],"sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-pane-view .split-view-view:first-of-type > .pane > .pane-header {\n\tborder-top: none !important; /* less clutter: do not show any border for first views in a pane */\n}\n\n.monaco-pane-view .split-view-view:first-of-type > .pane {\n\tborder-left: none !important; /* less clutter: do not show any border for first views in a pane */\n}\n\n.monaco-pane-view .pane > .pane-header {\n\tposition: relative;\n}\n\n.monaco-pane-view .pane > .pane-header.not-collapsible .twisty-container {\n\tdisplay: none;\n}\n\n.monaco-pane-view .pane > .pane-header.not-collapsible .title {\n\tmargin-left: 8px;\n}\n\n.monaco-pane-view .pane > .pane-header > .actions.show-always,\n.monaco-pane-view .pane.expanded > .pane-header > .actions.show-expanded {\n\tdisplay: initial;\n}\n\n.monaco-pane-view .pane > .pane-header > .icon {\n\tdisplay: none;\n\twidth: 16px;\n\theight: 16px;\n}\n\n.monaco-pane-view .pane.pane.horizontal:not(.expanded) > .pane-header > .icon {\n\tdisplay: inline;\n\tmargin-top: 4px;\n}\n\n.monaco-pane-view .pane > .pane-header h3.title {\n\twhite-space: nowrap;\n\ttext-overflow: ellipsis;\n\toverflow: hidden;\n\tfont-size: 11px;\n\tmin-width: 3ch;\n\t-webkit-margin-before: 0;\n\t-webkit-margin-after: 0;\n}\n\n.monaco-pane-view .pane > .pane-header .description {\n\tdisplay: block;\n\tfont-weight: normal;\n\tmargin-left: 10px;\n\topacity: 0.6;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\ttext-transform: none;\n\twhite-space: nowrap;\n\tflex-shrink: 100000;\n}\n\n.monaco-pane-view .pane > .pane-header .description .codicon {\n\tfont-size: 9px;\n\tmargin-left: 2px;\n}\n\n.monaco-pane-view .pane > .pane-header:not(.expanded) .description {\n\tdisplay: none;\n}\n\n.monaco-pane-view .pane.horizontal:not(.expanded) > .pane-header h3.title,\n.monaco-pane-view .pane.horizontal:not(.expanded) > .pane-header .description {\n\tdisplay: none;\n}\n\n.monaco-pane-view .pane .monaco-progress-container {\n\tposition: absolute;\n\tleft: 0;\n\ttop: -2px;\n\tz-index: 5;\n}\n\n.monaco-pane-view .pane:not(.merged-header) .monaco-progress-container {\n\ttop: 20px;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-aria-container {\n\tposition: absolute; /* try to hide from window but not from screen readers */\n\tleft:-999em;\n}","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-list {\n\tposition: relative;\n\theight: 100%;\n\twidth: 100%;\n\twhite-space: nowrap;\n}\n\n.monaco-list.mouse-support {\n\tuser-select: none;\n\t-webkit-user-select: none;\n}\n\n.monaco-list > .monaco-scrollable-element {\n\theight: 100%;\n}\n\n.monaco-list-rows {\n\tposition: relative;\n\twidth: 100%;\n\theight: 100%;\n}\n\n.monaco-list.horizontal-scrolling .monaco-list-rows {\n\twidth: auto;\n\tmin-width: 100%;\n}\n\n.monaco-list-row {\n\tposition: absolute;\n\tbox-sizing: border-box;\n\toverflow: hidden;\n\twidth: 100%;\n}\n\n.monaco-list.mouse-support .monaco-list-row {\n\tcursor: pointer;\n\ttouch-action: none;\n}\n\n/* Make sure the scrollbar renders above overlays (sticky scroll) */\n.monaco-list .monaco-scrollable-element > .scrollbar.vertical,\n.monaco-pane-view > .monaco-split-view2.vertical > .monaco-scrollable-element > .scrollbar.vertical {\n\tz-index: 14;\n}\n\n/* for OS X ballistic scrolling */\n.monaco-list-row.scrolling {\n\tdisplay: none !important;\n}\n\n/* Focus */\n.monaco-list.element-focused,\n.monaco-list.selection-single,\n.monaco-list.selection-multiple {\n\toutline: 0 !important;\n}\n\n/* Dnd */\n.monaco-drag-image {\n\tdisplay: inline-block;\n\tpadding: 1px 7px;\n\tborder-radius: 10px;\n\tfont-size: 12px;\n\tposition: absolute;\n\tz-index: 1000;\n}\n\n/* Filter */\n\n.monaco-list-type-filter-message {\n\tposition: absolute;\n\tbox-sizing: border-box;\n\twidth: 100%;\n\theight: 100%;\n\ttop: 0;\n\tleft: 0;\n\tpadding: 40px 1em 1em 1em;\n\ttext-align: center;\n\twhite-space: normal;\n\topacity: 0.7;\n\tpointer-events: none;\n}\n\n.monaco-list-type-filter-message:empty {\n\tdisplay: none;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n/* Arrows */\n.monaco-scrollable-element > .scrollbar > .scra {\n\tcursor: pointer;\n\tfont-size: 11px !important;\n}\n\n.monaco-scrollable-element > .visible {\n\topacity: 1;\n\n\t/* Background rule added for IE9 - to allow clicks on dom node */\n\tbackground:rgba(0,0,0,0);\n\n\ttransition: opacity 100ms linear;\n\t/* In front of peek view */\n\tz-index: 11;\n}\n.monaco-scrollable-element > .invisible {\n\topacity: 0;\n\tpointer-events: none;\n}\n.monaco-scrollable-element > .invisible.fade {\n\ttransition: opacity 800ms linear;\n}\n\n/* Scrollable Content Inset Shadow */\n.monaco-scrollable-element > .shadow {\n\tposition: absolute;\n\tdisplay: none;\n}\n.monaco-scrollable-element > .shadow.top {\n\tdisplay: block;\n\ttop: 0;\n\tleft: 3px;\n\theight: 3px;\n\twidth: 100%;\n\tbox-shadow: var(--vscode-scrollbar-shadow) 0 6px 6px -6px inset;\n}\n.monaco-scrollable-element > .shadow.left {\n\tdisplay: block;\n\ttop: 3px;\n\tleft: 0;\n\theight: 100%;\n\twidth: 3px;\n\tbox-shadow: var(--vscode-scrollbar-shadow) 6px 0 6px -6px inset;\n}\n.monaco-scrollable-element > .shadow.top-left-corner {\n\tdisplay: block;\n\ttop: 0;\n\tleft: 0;\n\theight: 3px;\n\twidth: 3px;\n}\n.monaco-scrollable-element > .shadow.top.left {\n\tbox-shadow: var(--vscode-scrollbar-shadow) 6px 0 6px -6px inset;\n}\n\n.monaco-scrollable-element > .scrollbar > .slider {\n\tbackground: var(--vscode-scrollbarSlider-background);\n}\n\n.monaco-scrollable-element > .scrollbar > .slider:hover {\n\tbackground: var(--vscode-scrollbarSlider-hoverBackground);\n}\n\n.monaco-scrollable-element > .scrollbar > .slider.active {\n\tbackground: var(--vscode-scrollbarSlider-activeBackground);\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.context-view {\n\tposition: absolute;\n}\n\n.context-view.fixed {\n\tall: initial;\n\tfont-family: inherit;\n\tfont-size: 13px;\n\tposition: fixed;\n\tcolor: inherit;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n/* Use custom CSS vars to expose padding into parent select for padding calculation */\n.monaco-select-box-dropdown-padding {\n\t--dropdown-padding-top: 1px;\n\t--dropdown-padding-bottom: 1px;\n}\n\n.hc-black .monaco-select-box-dropdown-padding,\n.hc-light .monaco-select-box-dropdown-padding {\n\t--dropdown-padding-top: 3px;\n\t--dropdown-padding-bottom: 4px;\n}\n\n.monaco-select-box-dropdown-container {\n\tdisplay: none;\n\tbox-sizing:\tborder-box;\n}\n\n.monaco-select-box-dropdown-container > .select-box-details-pane > .select-box-description-markdown * {\n\tmargin: 0;\n}\n\n.monaco-select-box-dropdown-container > .select-box-details-pane > .select-box-description-markdown a:focus {\n\toutline: 1px solid -webkit-focus-ring-color;\n\toutline-offset: -1px;\n}\n\n.monaco-select-box-dropdown-container > .select-box-details-pane > .select-box-description-markdown code {\n\tline-height: 15px; /** For some reason, this is needed, otherwise will take up 20px height */\n\tfont-family: var(--monaco-monospace-font);\n}\n\n\n.monaco-select-box-dropdown-container.visible {\n\tdisplay: flex;\n\tflex-direction: column;\n\ttext-align: left;\n\twidth: 1px;\n\toverflow: hidden;\n\tborder-bottom-left-radius: 3px;\n\tborder-bottom-right-radius: 3px;\n}\n\n.monaco-select-box-dropdown-container > .select-box-dropdown-list-container {\n\tflex: 0 0 auto;\n\talign-self: flex-start;\n\tpadding-top: var(--dropdown-padding-top);\n\tpadding-bottom: var(--dropdown-padding-bottom);\n\tpadding-left: 1px;\n\tpadding-right: 1px;\n\twidth: 100%;\n\toverflow: hidden;\n\tbox-sizing:\tborder-box;\n}\n\n.monaco-select-box-dropdown-container > .select-box-details-pane {\n\tpadding: 5px;\n}\n\n.hc-black .monaco-select-box-dropdown-container > .select-box-dropdown-list-container {\n\tpadding-top: var(--dropdown-padding-top);\n\tpadding-bottom: var(--dropdown-padding-bottom);\n}\n\n.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row {\n\tcursor: pointer;\n}\n\n.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row > .option-text {\n\ttext-overflow: ellipsis;\n\toverflow: hidden;\n\tpadding-left: 3.5px;\n\twhite-space: nowrap;\n\tfloat: left;\n}\n\n.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row > .option-detail {\n\ttext-overflow: ellipsis;\n\toverflow: hidden;\n\tpadding-left: 3.5px;\n\twhite-space: nowrap;\n\tfloat: left;\n\topacity: 0.7;\n}\n\n.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row > .option-decorator-right {\n\ttext-overflow: ellipsis;\n\toverflow: hidden;\n\tpadding-right: 10px;\n\twhite-space: nowrap;\n\tfloat: right;\n}\n\n\n/* Accepted CSS hiding technique for accessibility reader text */\n/* https://webaim.org/techniques/css/invisiblecontent/ */\n\n.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row > .visually-hidden {\n\t\tposition: absolute;\n\t\tleft: -10000px;\n\t\ttop: auto;\n\t\twidth: 1px;\n\t\theight: 1px;\n\t\toverflow: hidden;\n}\n\n.monaco-select-box-dropdown-container > .select-box-dropdown-container-width-control {\n\tflex: 1 1 auto;\n\talign-self: flex-start;\n\topacity: 0;\n}\n\n.monaco-select-box-dropdown-container > .select-box-dropdown-container-width-control > .width-control-div {\n\toverflow: hidden;\n\tmax-height: 0px;\n}\n\n.monaco-select-box-dropdown-container > .select-box-dropdown-container-width-control > .width-control-div > .option-text-width-control {\n\tpadding-left: 4px;\n\tpadding-right: 8px;\n\twhite-space: nowrap;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-select-box {\n\twidth: 100%;\n\tcursor: pointer;\n\tborder-radius: 2px;\n}\n\n.monaco-select-box-dropdown-container {\n\tfont-size: 13px;\n\tfont-weight: normal;\n\ttext-transform: none;\n}\n\n/** Actions */\n\n.monaco-action-bar .action-item.select-container {\n\tcursor: default;\n}\n\n.monaco-action-bar .action-item .monaco-select-box {\n\tcursor: pointer;\n\tmin-width: 100px;\n\tmin-height: 18px;\n\tpadding: 2px 23px 2px 8px;\n}\n\n.mac .monaco-action-bar .action-item .monaco-select-box {\n\tfont-size: 11px;\n\tborder-radius: 5px;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-action-bar {\n\twhite-space: nowrap;\n\theight: 100%;\n}\n\n.monaco-action-bar .actions-container {\n\tdisplay: flex;\n\tmargin: 0 auto;\n\tpadding: 0;\n\theight: 100%;\n\twidth: 100%;\n\talign-items: center;\n}\n\n.monaco-action-bar.vertical .actions-container {\n\tdisplay: inline-block;\n}\n\n.monaco-action-bar .action-item {\n\tdisplay: block;\n\talign-items: center;\n\tjustify-content: center;\n\tcursor: pointer;\n\tposition: relative; /* DO NOT REMOVE - this is the key to preventing the ghosting icon bug in Chrome 42 */\n}\n\n.monaco-action-bar .action-item.disabled {\n\tcursor: default;\n}\n\n.monaco-action-bar .action-item .icon,\n.monaco-action-bar .action-item .codicon {\n\tdisplay: block;\n}\n\n.monaco-action-bar .action-item .codicon {\n\tdisplay: flex;\n\talign-items: center;\n\twidth: 16px;\n\theight: 16px;\n}\n\n.monaco-action-bar .action-label {\n\tdisplay: flex;\n\tfont-size: 11px;\n\tpadding: 3px;\n\tborder-radius: 5px;\n}\n\n.monaco-action-bar .action-item.disabled .action-label,\n.monaco-action-bar .action-item.disabled .action-label::before,\n.monaco-action-bar .action-item.disabled .action-label:hover {\n\tcolor: var(--vscode-disabledForeground);\n}\n\n/* Vertical actions */\n\n.monaco-action-bar.vertical {\n\ttext-align: left;\n}\n\n.monaco-action-bar.vertical .action-item {\n\tdisplay: block;\n}\n\n.monaco-action-bar.vertical .action-label.separator {\n\tdisplay: block;\n\tborder-bottom: 1px solid #bbb;\n\tpadding-top: 1px;\n\tmargin-left: .8em;\n\tmargin-right: .8em;\n}\n\n.monaco-action-bar .action-item .action-label.separator {\n\twidth: 1px;\n\theight: 16px;\n\tmargin: 5px 4px !important;\n\tcursor: default;\n\tmin-width: 1px;\n\tpadding: 0;\n\tbackground-color: #bbb;\n}\n\n.secondary-actions .monaco-action-bar .action-label {\n\tmargin-left: 6px;\n}\n\n/* Action Items */\n.monaco-action-bar .action-item.select-container {\n\toverflow: hidden; /* somehow the dropdown overflows its container, we prevent it here to not push */\n\tflex: 1;\n\tmax-width: 170px;\n\tmin-width: 60px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tmargin-right: 10px;\n}\n\n.monaco-action-bar .action-item.action-dropdown-item {\n\tdisplay: flex;\n}\n\n.monaco-action-bar .action-item.action-dropdown-item > .action-dropdown-item-separator {\n\tdisplay: flex;\n\talign-items: center;\n\tcursor: default;\n}\n\n.monaco-action-bar .action-item.action-dropdown-item > .action-dropdown-item-separator > div {\n\twidth: 1px;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n:root {\n\t--vscode-sash-size: 4px;\n\t--vscode-sash-hover-size: 4px;\n}\n\n.monaco-sash {\n\tposition: absolute;\n\tz-index: 35;\n\ttouch-action: none;\n}\n\n.monaco-sash.disabled {\n\tpointer-events: none;\n}\n\n.monaco-sash.mac.vertical {\n\tcursor: col-resize;\n}\n\n.monaco-sash.vertical.minimum {\n\tcursor: e-resize;\n}\n\n.monaco-sash.vertical.maximum {\n\tcursor: w-resize;\n}\n\n.monaco-sash.mac.horizontal {\n\tcursor: row-resize;\n}\n\n.monaco-sash.horizontal.minimum {\n\tcursor: s-resize;\n}\n\n.monaco-sash.horizontal.maximum {\n\tcursor: n-resize;\n}\n\n.monaco-sash.disabled {\n\tcursor: default !important;\n\tpointer-events: none !important;\n}\n\n.monaco-sash.vertical {\n\tcursor: ew-resize;\n\ttop: 0;\n\twidth: var(--vscode-sash-size);\n\theight: 100%;\n}\n\n.monaco-sash.horizontal {\n\tcursor: ns-resize;\n\tleft: 0;\n\twidth: 100%;\n\theight: var(--vscode-sash-size);\n}\n\n.monaco-sash:not(.disabled) > .orthogonal-drag-handle {\n\tcontent: \" \";\n\theight: calc(var(--vscode-sash-size) * 2);\n\twidth: calc(var(--vscode-sash-size) * 2);\n\tz-index: 100;\n\tdisplay: block;\n\tcursor: all-scroll;\n\tposition: absolute;\n}\n\n.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)\n\t> .orthogonal-drag-handle.start,\n.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)\n\t> .orthogonal-drag-handle.end {\n\tcursor: nwse-resize;\n}\n\n.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)\n\t> .orthogonal-drag-handle.end,\n.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)\n\t> .orthogonal-drag-handle.start {\n\tcursor: nesw-resize;\n}\n\n.monaco-sash.vertical > .orthogonal-drag-handle.start {\n\tleft: calc(var(--vscode-sash-size) * -0.5);\n\ttop: calc(var(--vscode-sash-size) * -1);\n}\n.monaco-sash.vertical > .orthogonal-drag-handle.end {\n\tleft: calc(var(--vscode-sash-size) * -0.5);\n\tbottom: calc(var(--vscode-sash-size) * -1);\n}\n.monaco-sash.horizontal > .orthogonal-drag-handle.start {\n\ttop: calc(var(--vscode-sash-size) * -0.5);\n\tleft: calc(var(--vscode-sash-size) * -1);\n}\n.monaco-sash.horizontal > .orthogonal-drag-handle.end {\n\ttop: calc(var(--vscode-sash-size) * -0.5);\n\tright: calc(var(--vscode-sash-size) * -1);\n}\n\n.monaco-sash:before {\n\tcontent: '';\n\tpointer-events: none;\n\tposition: absolute;\n\twidth: 100%;\n\theight: 100%;\n\tbackground: transparent;\n}\n\n.monaco-workbench:not(.reduce-motion) .monaco-sash:before {\n\ttransition: background-color 0.1s ease-out;\n}\n\n.monaco-sash.hover:before,\n.monaco-sash.active:before {\n\tbackground: var(--vscode-sash-hoverBorder);\n}\n\n.monaco-sash.vertical:before {\n\twidth: var(--vscode-sash-hover-size);\n\tleft: calc(50% - (var(--vscode-sash-hover-size) / 2));\n}\n\n.monaco-sash.horizontal:before {\n\theight: var(--vscode-sash-hover-size);\n\ttop: calc(50% - (var(--vscode-sash-hover-size) / 2));\n}\n\n.pointer-events-disabled {\n\tpointer-events: none !important;\n}\n\n/** Debug **/\n\n.monaco-sash.debug {\n\tbackground: cyan;\n}\n\n.monaco-sash.debug.disabled {\n\tbackground: rgba(0, 255, 255, 0.2);\n}\n\n.monaco-sash.debug:not(.disabled) > .orthogonal-drag-handle {\n\tbackground: red;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-pane-view {\n\twidth: 100%;\n\theight: 100%;\n}\n\n.monaco-pane-view .pane {\n\toverflow: hidden;\n\twidth: 100%;\n\theight: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n.monaco-pane-view .pane.horizontal:not(.expanded) {\n\tflex-direction: row;\n}\n\n.monaco-pane-view .pane > .pane-header {\n\theight: 22px;\n\tfont-size: 11px;\n\tfont-weight: bold;\n\toverflow: hidden;\n\tdisplay: flex;\n\tcursor: pointer;\n\talign-items: center;\n\tbox-sizing: border-box;\n}\n\n.monaco-pane-view .pane > .pane-header.not-collapsible {\n\tcursor: default;\n}\n\n.monaco-pane-view .pane > .pane-header > .title {\n\ttext-transform: uppercase;\n}\n\n.monaco-pane-view .pane.horizontal:not(.expanded) > .pane-header {\n\tflex-direction: column;\n\theight: 100%;\n\twidth: 22px;\n}\n\n.monaco-pane-view .pane > .pane-header > .codicon:first-of-type {\n\tmargin: 0 2px;\n}\n\n.monaco-pane-view .pane.horizontal:not(.expanded) > .pane-header > .codicon:first-of-type {\n\tmargin: 2px;\n}\n\n/* TODO: actions should be part of the pane, but they aren't yet */\n.monaco-pane-view .pane > .pane-header > .actions {\n\tdisplay: none;\n\tmargin-left: auto;\n}\n\n.monaco-pane-view .pane > .pane-header > .actions .action-item {\n\tmargin-right: 4px;\n}\n\n.monaco-pane-view .pane > .pane-header > .actions .action-label {\n\tpadding: 2px;\n}\n\n/* TODO: actions should be part of the pane, but they aren't yet */\n.monaco-pane-view .pane:hover > .pane-header.expanded > .actions,\n.monaco-pane-view .pane:focus-within > .pane-header.expanded > .actions,\n.monaco-pane-view .pane > .pane-header.actions-always-visible.expanded > .actions,\n.monaco-pane-view .pane > .pane-header.focused.expanded > .actions {\n\tdisplay: initial;\n}\n\n.monaco-pane-view .pane > .pane-header .monaco-action-bar .action-item.select-container {\n\tcursor: default;\n}\n\n.monaco-pane-view .pane > .pane-header .action-item .monaco-select-box {\n\tcursor: pointer;\n\tmin-width: 110px;\n\tmin-height: 18px;\n\tpadding: 2px 23px 2px 8px;\n}\n\n.linux .monaco-pane-view .pane > .pane-header .action-item .monaco-select-box,\n.windows .monaco-pane-view .pane > .pane-header .action-item .monaco-select-box {\n\tpadding: 0px 23px 0px 8px;\n}\n\n/* Bold font style does not go well with CJK fonts */\n.monaco-pane-view:lang(zh-Hans) .pane > .pane-header,\n.monaco-pane-view:lang(zh-Hant) .pane > .pane-header,\n.monaco-pane-view:lang(ja) .pane > .pane-header,\n.monaco-pane-view:lang(ko) .pane > .pane-header {\n\tfont-weight: normal;\n}\n\n.monaco-pane-view .pane > .pane-header.hidden {\n\tdisplay: none;\n}\n\n.monaco-pane-view .pane > .pane-body {\n\toverflow: hidden;\n\tflex: 1;\n}\n\n/* Animation */\n\n.monaco-pane-view.animated .split-view-view {\n\ttransition-duration: 0.15s;\n\ttransition-timing-function: ease-out;\n}\n\n.reduce-motion .monaco-pane-view .split-view-view {\n\ttransition-duration: 0s !important;\n}\n\n.monaco-pane-view.animated.vertical .split-view-view {\n\ttransition-property: height;\n}\n\n.monaco-pane-view.animated.horizontal .split-view-view {\n\ttransition-property: width;\n}\n\n#monaco-pane-drop-overlay {\n\tposition: absolute;\n\tz-index: 10000;\n\twidth: 100%;\n\theight: 100%;\n\tleft: 0;\n\tbox-sizing: border-box;\n}\n\n#monaco-pane-drop-overlay > .pane-overlay-indicator {\n\tposition: absolute;\n\twidth: 100%;\n\theight: 100%;\n\tmin-height: 22px;\n\tmin-width: 19px;\n\n\tpointer-events: none; /* very important to not take events away from the parent */\n\ttransition: opacity 150ms ease-out;\n}\n\n#monaco-pane-drop-overlay > .pane-overlay-indicator.overlay-move-transition {\n\ttransition: top 70ms ease-out, left 70ms ease-out, width 70ms ease-out, height 70ms ease-out, opacity 150ms ease-out;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-split-view2 {\n\tposition: relative;\n\twidth: 100%;\n\theight: 100%;\n}\n\n.monaco-split-view2 > .sash-container {\n\tposition: absolute;\n\twidth: 100%;\n\theight: 100%;\n\tpointer-events: none;\n}\n\n.monaco-split-view2 > .sash-container > .monaco-sash {\n\tpointer-events: initial;\n}\n\n.monaco-split-view2 > .monaco-scrollable-element {\n\twidth: 100%;\n\theight: 100%;\n}\n\n.monaco-split-view2 > .monaco-scrollable-element > .split-view-container {\n\twidth: 100%;\n\theight: 100%;\n\twhite-space: nowrap;\n\tposition: relative;\n}\n\n.monaco-split-view2 > .monaco-scrollable-element > .split-view-container > .split-view-view {\n\twhite-space: initial;\n\tposition: absolute;\n}\n\n.monaco-split-view2 > .monaco-scrollable-element > .split-view-container > .split-view-view:not(.visible) {\n\tdisplay: none;\n}\n\n.monaco-split-view2.vertical > .monaco-scrollable-element > .split-view-container > .split-view-view {\n\twidth: 100%;\n}\n\n.monaco-split-view2.horizontal > .monaco-scrollable-element > .split-view-container > .split-view-view {\n\theight: 100%;\n}\n\n.monaco-split-view2.separator-border > .monaco-scrollable-element > .split-view-container > .split-view-view:not(:first-child)::before {\n\tcontent: ' ';\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tz-index: 5;\n\tpointer-events: none;\n\tbackground-color: var(--separator-border);\n}\n\n.monaco-split-view2.separator-border.horizontal > .monaco-scrollable-element > .split-view-container > .split-view-view:not(:first-child)::before {\n\theight: 100%;\n\twidth: 1px;\n}\n\n.monaco-split-view2.separator-border.vertical > .monaco-scrollable-element > .split-view-container > .split-view-view:not(:first-child)::before {\n\theight: 1px;\n\twidth: 100%;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-dropdown {\n\theight: 100%;\n\tpadding: 0;\n}\n\n.monaco-dropdown > .dropdown-label {\n\tcursor: pointer;\n\theight: 100%;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.monaco-dropdown > .dropdown-label > .action-label.disabled {\n\tcursor: default;\n}\n\n.monaco-dropdown-with-primary {\n\tdisplay: flex !important;\n\tflex-direction: row;\n\tborder-radius: 5px;\n}\n\n.monaco-dropdown-with-primary > .action-container > .action-label {\n\tmargin-right: 0;\n}\n\n.monaco-dropdown-with-primary > .dropdown-action-container > .monaco-dropdown > .dropdown-label .codicon[class*='codicon-'] {\n\tfont-size: 12px;\n\tpadding-left: 0px;\n\tpadding-right: 0px;\n\tline-height: 16px;\n\tmargin-left: -3px;\n}\n\n.monaco-dropdown-with-primary > .dropdown-action-container > .monaco-dropdown > .dropdown-label > .action-label {\n\tdisplay: block;\n\tbackground-size: 16px;\n\tbackground-position: center center;\n\tbackground-repeat: no-repeat;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-action-bar .action-item.menu-entry .action-label.icon {\n\twidth: 16px;\n\theight: 16px;\n\tbackground-repeat: no-repeat;\n\tbackground-position: 50%;\n\tbackground-size: 16px;\n}\n\n.monaco-action-bar .action-item.menu-entry.text-only .action-label {\n\tcolor: var(--vscode-descriptionForeground);\n\toverflow: hidden;\n\tborder-radius: 2px;\n}\n\n.monaco-action-bar .action-item.menu-entry.text-only.use-comma:not(:last-of-type) .action-label::after {\n\tcontent: ', ';\n}\n\n.monaco-action-bar .action-item.menu-entry.text-only + .action-item:not(.text-only) > .monaco-dropdown .action-label {\n\tcolor: var(--vscode-descriptionForeground);\n}\n\n.monaco-dropdown-with-default {\n\tdisplay: flex !important;\n\tflex-direction: row;\n\tborder-radius: 5px;\n}\n\n.monaco-dropdown-with-default > .action-container > .action-label {\n\tmargin-right: 0;\n}\n\n.monaco-dropdown-with-default > .action-container.menu-entry > .action-label.icon {\n\twidth: 16px;\n\theight: 16px;\n\tbackground-repeat: no-repeat;\n\tbackground-position: 50%;\n\tbackground-size: 16px;\n}\n\n.monaco-dropdown-with-default:hover {\n\tbackground-color: var(--vscode-toolbar-hoverBackground);\n}\n\n.monaco-dropdown-with-default > .dropdown-action-container > .monaco-dropdown > .dropdown-label .codicon[class*='codicon-'] {\n\tfont-size: 12px;\n\tpadding-left: 0px;\n\tpadding-right: 0px;\n\tline-height: 16px;\n\tmargin-left: -3px;\n}\n\n.monaco-dropdown-with-default > .dropdown-action-container > .monaco-dropdown > .dropdown-label > .action-label {\n\tdisplay: block;\n\tbackground-size: 16px;\n\tbackground-position: center center;\n\tbackground-repeat: no-repeat;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-text-button {\n\tbox-sizing: border-box;\n\tdisplay: flex;\n\twidth: 100%;\n\tpadding: 4px;\n\tborder-radius: 2px;\n\ttext-align: center;\n\tcursor: pointer;\n\tjustify-content: center;\n\talign-items: center;\n\tborder: 1px solid var(--vscode-button-border, transparent);\n\tline-height: 18px;\n}\n\n.monaco-text-button:focus {\n\toutline-offset: 2px !important;\n}\n\n.monaco-text-button:hover {\n\ttext-decoration: none !important;\n}\n\n.monaco-button.disabled:focus,\n.monaco-button.disabled {\n\topacity: 0.4 !important;\n\tcursor: default;\n}\n\n.monaco-text-button .codicon {\n\tmargin: 0 0.2em;\n\tcolor: inherit !important;\n}\n\n.monaco-text-button.monaco-text-button-with-short-label {\n\tflex-direction: row;\n\tflex-wrap: wrap;\n\tpadding: 0 4px;\n\toverflow: hidden;\n\theight: 28px;\n}\n\n.monaco-text-button.monaco-text-button-with-short-label > .monaco-button-label {\n\tflex-basis: 100%;\n}\n\n.monaco-text-button.monaco-text-button-with-short-label > .monaco-button-label-short {\n\tflex-grow: 1;\n\twidth: 0;\n\toverflow: hidden;\n}\n\n.monaco-text-button.monaco-text-button-with-short-label > .monaco-button-label,\n.monaco-text-button.monaco-text-button-with-short-label > .monaco-button-label-short {\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tfont-weight: normal;\n\tfont-style: inherit;\n\tpadding: 4px 0;\n}\n\n.monaco-button-dropdown {\n\tdisplay: flex;\n\tcursor: pointer;\n}\n\n.monaco-button-dropdown.disabled {\n\tcursor: default;\n}\n\n.monaco-button-dropdown > .monaco-button:focus {\n\toutline-offset: -1px !important;\n}\n\n.monaco-button-dropdown.disabled > .monaco-button.disabled,\n.monaco-button-dropdown.disabled > .monaco-button.disabled:focus,\n.monaco-button-dropdown.disabled > .monaco-button-dropdown-separator {\n\topacity: 0.4 !important;\n}\n\n.monaco-button-dropdown > .monaco-button.monaco-text-button {\n\tborder-right-width: 0 !important;\n}\n\n.monaco-button-dropdown .monaco-button-dropdown-separator {\n\tpadding: 4px 0;\n\tcursor: default;\n}\n\n.monaco-button-dropdown .monaco-button-dropdown-separator > div {\n\theight: 100%;\n\twidth: 1px;\n}\n\n.monaco-button-dropdown > .monaco-button.monaco-dropdown-button {\n\tborder: 1px solid var(--vscode-button-border, transparent);\n\tborder-left-width: 0 !important;\n\tborder-radius: 0 2px 2px 0;\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.monaco-button-dropdown > .monaco-button.monaco-text-button {\n\tborder-radius: 2px 0 0 2px;\n}\n\n.monaco-description-button {\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tmargin: 4px 5px; /* allows button focus outline to be visible */\n}\n\n.monaco-description-button .monaco-button-description {\n\tfont-style: italic;\n\tfont-size: 11px;\n\tpadding: 4px 20px;\n}\n\n.monaco-description-button .monaco-button-label,\n.monaco-description-button .monaco-button-description {\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n}\n\n.monaco-description-button .monaco-button-label > .codicon,\n.monaco-description-button .monaco-button-description > .codicon {\n\tmargin: 0 0.2em;\n\tcolor: inherit !important;\n}\n\n/* default color styles - based on CSS variables */\n\n.monaco-button.default-colors,\n.monaco-button-dropdown.default-colors > .monaco-button{\n\tcolor: var(--vscode-button-foreground);\n\tbackground-color: var(--vscode-button-background);\n}\n\n.monaco-button.default-colors:hover,\n.monaco-button-dropdown.default-colors > .monaco-button:hover {\n\tbackground-color: var(--vscode-button-hoverBackground);\n}\n\n.monaco-button.default-colors.secondary,\n.monaco-button-dropdown.default-colors > .monaco-button.secondary {\n\tcolor: var(--vscode-button-secondaryForeground);\n\tbackground-color: var(--vscode-button-secondaryBackground);\n}\n\n.monaco-button.default-colors.secondary:hover,\n.monaco-button-dropdown.default-colors > .monaco-button.secondary:hover {\n\tbackground-color: var(--vscode-button-secondaryHoverBackground);\n}\n\n.monaco-button-dropdown.default-colors .monaco-button-dropdown-separator {\n\tbackground-color: var(--vscode-button-background);\n\tborder-top: 1px solid var(--vscode-button-border);\n\tborder-bottom: 1px solid var(--vscode-button-border);\n}\n\n.monaco-button-dropdown.default-colors .monaco-button.secondary + .monaco-button-dropdown-separator {\n\tbackground-color: var(--vscode-button-secondaryBackground);\n}\n\n.monaco-button-dropdown.default-colors .monaco-button-dropdown-separator > div {\n\tbackground-color: var(--vscode-button-separator);\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-link {\n\tcolor: var(--vscode-textLink-foreground);\n}\n\n.monaco-link:hover {\n\tcolor: var(--vscode-textLink-activeForeground);\n}\n\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-progress-container {\n\twidth: 100%;\n\theight: 2px;\n\toverflow: hidden; /* keep progress bit in bounds */\n}\n\n.monaco-progress-container .progress-bit {\n\twidth: 2%;\n\theight: 2px;\n\tposition: absolute;\n\tleft: 0;\n\tdisplay: none;\n}\n\n.monaco-progress-container.active .progress-bit {\n\tdisplay: inherit;\n}\n\n.monaco-progress-container.discrete .progress-bit {\n\tleft: 0;\n\ttransition: width 100ms linear;\n}\n\n.monaco-progress-container.discrete.done .progress-bit {\n\twidth: 100%;\n}\n\n.monaco-progress-container.infinite .progress-bit {\n\tanimation-name: progress;\n\tanimation-duration: 4s;\n\tanimation-iteration-count: infinite;\n\ttransform: translate3d(0px, 0px, 0px);\n\tanimation-timing-function: linear;\n}\n\n.monaco-progress-container.infinite.infinite-long-running .progress-bit {\n\t/*\n\t\tThe more smooth `linear` timing function can cause\n\t\thigher GPU consumption as indicated in\n\t\thttps://github.com/microsoft/vscode/issues/97900 &\n\t\thttps://github.com/microsoft/vscode/issues/138396\n\t*/\n\tanimation-timing-function: steps(100);\n}\n\n/**\n * The progress bit has a width: 2% (1/50) of the parent container. The animation moves it from 0% to 100% of\n * that container. Since translateX is relative to the progress bit size, we have to multiple it with\n * its relative size to the parent container:\n * parent width: 5000%\n * bit width: 100%\n * translateX should be as follow:\n * 50%: 5000% * 50% - 50% (set to center) = 2450%\n * 100%: 5000% * 100% - 100% (do not overflow) = 4900%\n */\n@keyframes progress { from { transform: translateX(0%) scaleX(1) } 50% { transform: translateX(2500%) scaleX(3) } to { transform: translateX(4900%) scaleX(1) } }\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-toolbar {\n\theight: 100%;\n}\n\n.monaco-toolbar .toolbar-toggle-more {\n\tdisplay: inline-block;\n\tpadding: 0;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-custom-toggle {\n\tmargin-left: 2px;\n\tfloat: left;\n\tcursor: pointer;\n\toverflow: hidden;\n\twidth: 20px;\n\theight: 20px;\n\tborder-radius: 3px;\n\tborder: 1px solid transparent;\n\tpadding: 1px;\n\tbox-sizing:\tborder-box;\n\tuser-select: none;\n\t-webkit-user-select: none;\n}\n\n.monaco-custom-toggle:hover {\n\tbackground-color: var(--vscode-inputOption-hoverBackground);\n}\n\n.hc-black .monaco-custom-toggle:hover,\n.hc-light .monaco-custom-toggle:hover {\n\tborder: 1px dashed var(--vscode-focusBorder);\n}\n\n.hc-black .monaco-custom-toggle,\n.hc-light .monaco-custom-toggle {\n\tbackground: none;\n}\n\n.hc-black .monaco-custom-toggle:hover,\n.hc-light .monaco-custom-toggle:hover {\n\tbackground: none;\n}\n\n.monaco-custom-toggle.monaco-checkbox {\n\theight: 18px;\n\twidth: 18px;\n\tborder: 1px solid transparent;\n\tborder-radius: 3px;\n\tmargin-right: 9px;\n\tmargin-left: 0px;\n\tpadding: 0px;\n\topacity: 1;\n\tbackground-size: 16px !important;\n}\n\n.monaco-action-bar .checkbox-action-item {\n\tdisplay: flex;\n\talign-items: center;\n\tborder-radius: 2px;\n\tpadding-right: 2px;\n}\n\n.monaco-action-bar .checkbox-action-item:hover {\n\tbackground-color: var(--vscode-toolbar-hoverBackground);\n}\n\n.monaco-action-bar .checkbox-action-item > .monaco-custom-toggle.monaco-checkbox {\n\tmargin-right: 4px;\n}\n\n.monaco-action-bar .checkbox-action-item > .checkbox-label {\n\tfont-size: 12px;\n}\n\n/* hide check when unchecked */\n.monaco-custom-toggle.monaco-checkbox:not(.checked)::before {\n\tvisibility: hidden;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-inputbox {\n\tposition: relative;\n\tdisplay: block;\n\tpadding: 0;\n\tbox-sizing:\tborder-box;\n\tborder-radius: 2px;\n\n\t/* Customizable */\n\tfont-size: inherit;\n}\n\n.monaco-inputbox > .ibwrapper > .input,\n.monaco-inputbox > .ibwrapper > .mirror {\n\n\t/* Customizable */\n\tpadding: 4px 6px;\n}\n\n.monaco-inputbox > .ibwrapper {\n\tposition: relative;\n\twidth: 100%;\n}\n\n.monaco-inputbox > .ibwrapper > .input {\n\tdisplay: inline-block;\n\tbox-sizing:\tborder-box;\n\twidth: 100%;\n\theight: 100%;\n\tline-height: inherit;\n\tborder: none;\n\tfont-family: inherit;\n\tfont-size: inherit;\n\tresize: none;\n\tcolor: inherit;\n}\n\n.monaco-inputbox > .ibwrapper > input {\n\ttext-overflow: ellipsis;\n}\n\n.monaco-inputbox > .ibwrapper > textarea.input {\n\tdisplay: block;\n\tscrollbar-width: none; /* Firefox: hide scrollbars */\n\toutline: none;\n}\n\n.monaco-inputbox > .ibwrapper > textarea.input::-webkit-scrollbar {\n\tdisplay: none; /* Chrome + Safari: hide scrollbar */\n}\n\n.monaco-inputbox > .ibwrapper > textarea.input.empty {\n\twhite-space: nowrap;\n}\n\n.monaco-inputbox > .ibwrapper > .mirror {\n\tposition: absolute;\n\tdisplay: inline-block;\n\twidth: 100%;\n\ttop: 0;\n\tleft: 0;\n\tbox-sizing: border-box;\n\twhite-space: pre-wrap;\n\tvisibility: hidden;\n\tword-wrap: break-word;\n}\n\n/* Context view */\n\n.monaco-inputbox-container {\n\ttext-align: right;\n}\n\n.monaco-inputbox-container .monaco-inputbox-message {\n\tdisplay: inline-block;\n\toverflow: hidden;\n\ttext-align: left;\n\twidth: 100%;\n\tbox-sizing:\tborder-box;\n\tpadding: 0.4em;\n\tfont-size: 12px;\n\tline-height: 17px;\n\tmargin-top: -1px;\n\tword-wrap: break-word;\n}\n\n/* Action bar support */\n.monaco-inputbox .monaco-action-bar {\n\tposition: absolute;\n\tright: 2px;\n\ttop: 4px;\n}\n\n.monaco-inputbox .monaco-action-bar .action-item {\n\tmargin-left: 2px;\n}\n\n.monaco-inputbox .monaco-action-bar .action-item .codicon {\n\tbackground-repeat: no-repeat;\n\twidth: 16px;\n\theight: 16px;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n/* ---------- Find input ---------- */\n\n.monaco-findInput {\n\tposition: relative;\n}\n\n.monaco-findInput .monaco-inputbox {\n\tfont-size: 13px;\n\twidth: 100%;\n}\n\n.monaco-findInput > .controls {\n\tposition: absolute;\n\ttop: 3px;\n\tright: 2px;\n}\n\n.vs .monaco-findInput.disabled {\n\tbackground-color: #E1E1E1;\n}\n\n/* Theming */\n.vs-dark .monaco-findInput.disabled {\n\tbackground-color: #333;\n}\n\n/* Highlighting */\n.monaco-findInput.highlight-0 .controls,\n.hc-light .monaco-findInput.highlight-0 .controls {\n\tanimation: monaco-findInput-highlight-0 100ms linear 0s;\n}\n\n.monaco-findInput.highlight-1 .controls,\n.hc-light .monaco-findInput.highlight-1 .controls {\n\tanimation: monaco-findInput-highlight-1 100ms linear 0s;\n}\n\n.hc-black .monaco-findInput.highlight-0 .controls,\n.vs-dark .monaco-findInput.highlight-0 .controls {\n\tanimation: monaco-findInput-highlight-dark-0 100ms linear 0s;\n}\n\n.hc-black .monaco-findInput.highlight-1 .controls,\n.vs-dark .monaco-findInput.highlight-1 .controls {\n\tanimation: monaco-findInput-highlight-dark-1 100ms linear 0s;\n}\n\n@keyframes monaco-findInput-highlight-0 {\n\t0% { background: rgba(253, 255, 0, 0.8); }\n\t100% { background: transparent; }\n}\n@keyframes monaco-findInput-highlight-1 {\n\t0% { background: rgba(253, 255, 0, 0.8); }\n\t/* Made intentionally different such that the CSS minifier does not collapse the two animations into a single one*/\n\t99% { background: transparent; }\n}\n\n@keyframes monaco-findInput-highlight-dark-0 {\n\t0% { background: rgba(255, 255, 255, 0.44); }\n\t100% { background: transparent; }\n}\n@keyframes monaco-findInput-highlight-dark-1 {\n\t0% { background: rgba(255, 255, 255, 0.44); }\n\t/* Made intentionally different such that the CSS minifier does not collapse the two animations into a single one*/\n\t99% { background: transparent; }\n}\n"],"mappings":";AAKA,CAAC,iBAAiB,CAAC,eAAe,eAAe,EAAE,CAAC,KAAK,EAAE,CAAC;AAC3D,cAAY;AACb;AAEA,CAJC,iBAIiB,CAJC,eAIe,eAAe,EAAE,CAJC;AAKnD,eAAa;AACd;AAEA,CARC,iBAQiB,CARkC,KAQ5B,EAAE,CARkC;AAS3D,YAAU;AACX;AAEA,CAZC,iBAYiB,CAZkC,KAY5B,EAAE,CAZkC,WAYtB,CAAC,gBAAgB,CAAC;AACvD,WAAS;AACV;AAEA,CAhBC,iBAgBiB,CAhBkC,KAgB5B,EAAE,CAhBkC,WAgBtB,CAJC,gBAIgB,CAAC;AACvD,eAAa;AACd;AAEA,CApBC,iBAoBiB,CApBkC,KAoB5B,EAAE,CApBkC,YAoBrB,EAAE,CAAC,OAAO,CAAC;AAClD,CArBC,iBAqBiB,CArBkC,IAqB7B,CAAC,SAAS,EAAE,CArByB,YAqBZ,EAAE,CADR,OACgB,CAAC;AAC1D,WAAS;AACV;AAEA,CAzBC,iBAyBiB,CAzBkC,KAyB5B,EAAE,CAzBkC,YAyBrB,EAAE,CAAC;AACzC,WAAS;AACT,SAAO;AACP,UAAQ;AACT;AAEA,CA/BC,iBA+BiB,CA/BkC,IA+B7B,CA/B6B,IA+BxB,CAAC,UAAU,KAAK,CAVpB,UAU+B,EAAE,CA/BG,YA+BU,EAAE,CAN9B;AAOzC,WAAS;AACT,cAAY;AACb;AAEA,CApCC,iBAoCiB,CApCkC,KAoC5B,EAAE,CApCkC,YAoCrB,EAAE,CApBe;AAqBvD,eAAa;AACb,iBAAe;AACf,YAAU;AACV,aAAW;AACX,aAAW;AACX,yBAAuB;AACvB,wBAAsB;AACvB;AAEA,CA9CC,iBA8CiB,CA9CkC,KA8C5B,EAAE,CA9CkC,YA8CrB,CAAC;AACvC,WAAS;AACT,eAAa;AACb,eAAa;AACb,WAAS;AACT,YAAU;AACV,iBAAe;AACf,kBAAgB;AAChB,eAAa;AACb,eAAa;AACd;AAEA,CA1DC,iBA0DiB,CA1DkC,KA0D5B,EAAE,CA1DkC,YA0DrB,CAZC,YAYY,CAAC;AACpD,aAAW;AACX,eAAa;AACd;AAEA,CA/DC,iBA+DiB,CA/DkC,KA+D5B,EAAE,CA/DkC,WA+DtB,KAAK,CA1CnB,UA0C8B,CAjBd;AAkBvC,WAAS;AACV;AAEA,CAnEC,iBAmEiB,CAnEkC,IAmE7B,CApCM,UAoCK,KAAK,CA9Cf,UA8C0B,EAAE,CAnEQ,YAmEK,EAAE,CAnDX;AAoDxD,CApEC,iBAoEiB,CApEkC,IAoE7B,CArCM,UAqCK,KAAK,CA/Cf,UA+C0B,EAAE,CApEQ,YAoEK,CAtBzB;AAuBvC,WAAS;AACV;AAEA,CAxEC,iBAwEiB,CAxEkC,KAwE5B,CAAC;AACxB,YAAU;AACV,QAAM;AACN,OAAK;AACL,WAAS;AACV;AAEA,CA/EC,iBA+EiB,CA/EkC,IA+E7B,KAAK,CAAC,eAAe,CAPnB;AAQxB,OAAK;AACN;;;ACjFA,CAAC;AACA,YAAU;AACV,QAAK;AACN;;;ACHA,CAAC;AACA,YAAU;AACV,UAAQ;AACR,SAAO;AACP,eAAa;AACd;AAEA,CAPC,WAOW,CAAC;AACZ,eAAa;AACb,uBAAqB;AACtB;AAEA,CAZC,YAYY,EAAE,CAAC;AACf,UAAQ;AACT;AAEA,CAAC;AACA,YAAU;AACV,SAAO;AACP,UAAQ;AACT;AAEA,CAtBC,WAsBW,CAAC,qBAAqB,CANjC;AAOA,SAAO;AACP,aAAW;AACZ;AAEA,CAAC;AACA,YAAU;AACV,cAAY;AACZ,YAAU;AACV,SAAO;AACR;AAEA,CAlCC,WAkCW,CA3BC,cA2Bc,CAP1B;AAQA,UAAQ;AACR,gBAAc;AACf;AAGA,CAxCC,YAwCY,CA5BG,0BA4BwB,EAAE,CAAC,SAAS,CAAC;AACrD,CAAC,iBAAiB,EAAE,CAAC,kBAAkB,CADc,SACJ,EAAE,CA7BnC,0BA6B8D,EAAE,CADrC,SAC+C,CADrC;AAEpD,WAAS;AACV;AAGA,CAnBC,eAmBe,CAAC;AAChB,WAAS;AACV;AAGA,CAnDC,WAmDW,CAAC;AACb,CApDC,WAoDW,CAAC;AACb,CArDC,WAqDW,CAAC;AACZ,WAAS;AACV;AAGA,CAAC;AACA,WAAS;AACT,WAAS,IAAI;AACb,iBAAe;AACf,aAAW;AACX,YAAU;AACV,WAAS;AACV;AAIA,CAAC;AACA,YAAU;AACV,cAAY;AACZ,SAAO;AACP,UAAQ;AACR,OAAK;AACL,QAAM;AACN,WAAS,KAAK,IAAI,IAAI;AACtB,cAAY;AACZ,eAAa;AACb,WAAS;AACT,kBAAgB;AACjB;AAEA,CAdC,+BAc+B;AAC/B,WAAS;AACV;;;ACpFA,CAAC,0BAA0B,EAAE,CAAC,UAAU,EAAE,CAAC;AAC1C,UAAQ;AACR,aAAW;AACZ;AAEA,CALC,0BAK0B,EAAE,CAAC;AAC7B,WAAS;AAGT,cAAW,KAAK,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC;AAEtB,cAAY,QAAQ,MAAM;AAE1B,WAAS;AACV;AACA,CAfC,0BAe0B,EAAE,CAAC;AAC7B,WAAS;AACT,kBAAgB;AACjB;AACA,CAnBC,0BAmB0B,EAAE,CAJC,SAIS,CAAC;AACvC,cAAY,QAAQ,MAAM;AAC3B;AAGA,CAxBC,0BAwB0B,EAAE,CAAC;AAC7B,YAAU;AACV,WAAS;AACV;AACA,CA5BC,0BA4B0B,EAAE,CAJC,MAIM,CAAC;AACpC,WAAS;AACT,OAAK;AACL,QAAM;AACN,UAAQ;AACR,SAAO;AACP,cAAY,IAAI,2BAA2B,EAAE,IAAI,IAAI,KAAK;AAC3D;AACA,CApCC,0BAoC0B,EAAE,CAZC,MAYM,CAAC;AACpC,WAAS;AACT,OAAK;AACL,QAAM;AACN,UAAQ;AACR,SAAO;AACP,cAAY,IAAI,2BAA2B,IAAI,EAAE,IAAI,KAAK;AAC3D;AACA,CA5CC,0BA4C0B,EAAE,CApBC,MAoBM,CAAC;AACpC,WAAS;AACT,OAAK;AACL,QAAM;AACN,UAAQ;AACR,SAAO;AACR;AACA,CAnDC,0BAmD0B,EAAE,CA3BC,MA2BM,CAvBC,GAuBG,CAfH;AAgBpC,cAAY,IAAI,2BAA2B,IAAI,EAAE,IAAI,KAAK;AAC3D;AAEA,CAvDC,0BAuD0B,EAAE,CAvDC,UAuDU,EAAE,CAAC;AAC1C,cAAY,IAAI;AACjB;AAEA,CA3DC,0BA2D0B,EAAE,CA3DC,UA2DU,EAAE,CAJC,MAIM;AAChD,cAAY,IAAI;AACjB;AAEA,CA/DC,0BA+D0B,EAAE,CA/DC,UA+DU,EAAE,CARC,MAQM,CAAC;AACjD,cAAY,IAAI;AACjB;;;AClEA,CAAC;AACA,YAAU;AACX;AAEA,CAJC,YAIY,CAAC;AACb,OAAK;AACL,eAAa;AACb,aAAW;AACX,YAAU;AACV,SAAO;AACR;;;ACTA,CAAC;AACA,0BAAwB;AACxB,6BAA2B;AAC5B;AAEA,CAAC,SAAS,CALT;AAMD,CAAC,SAAS,CANT;AAOA,0BAAwB;AACxB,6BAA2B;AAC5B;AAEA,CAAC;AACA,WAAS;AACT,cAAY;AACb;AAEA,CALC,qCAKqC,EAAE,CAAC,wBAAwB,EAAE,CAAC,gCAAgC;AACnG,UAAQ;AACT;AAEA,CATC,qCASqC,EAAE,CAJC,wBAIwB,EAAE,CAJC,gCAIgC,CAAC;AACpG,WAAS,IAAI,MAAM;AACnB,kBAAgB;AACjB;AAEA,CAdC,qCAcqC,EAAE,CATC,wBASwB,EAAE,CATC,gCASgC;AACnG,eAAa;AACb,eAAa,IAAI;AAClB;AAGA,CApBC,oCAoBoC,CAAC;AACrC,WAAS;AACT,kBAAgB;AAChB,cAAY;AACZ,SAAO;AACP,YAAU;AACV,6BAA2B;AAC3B,8BAA4B;AAC7B;AAEA,CA9BC,qCA8BqC,EAAE,CAAC;AACxC,QAAM,EAAE,EAAE;AACV,cAAY;AACZ,eAAa,IAAI;AACjB,kBAAgB,IAAI;AACpB,gBAAc;AACd,iBAAe;AACf,SAAO;AACP,YAAU;AACV,cAAY;AACb;AAEA,CA1CC,qCA0CqC,EAAE,CArCC;AAsCxC,WAAS;AACV;AAEA,CApDC,SAoDS,CA9CT,qCA8C+C,EAAE,CAhBT;AAiBxC,eAAa,IAAI;AACjB,kBAAgB,IAAI;AACrB;AAEA,CAnDC,qCAmDqC,EAAE,CArBC,mCAqBmC,CAAC,YAAY,CAAC;AACzF,UAAQ;AACT;AAEA,CAvDC,qCAuDqC,EAAE,CAzBC,mCAyBmC,CAJC,YAIY,CAJC,gBAIgB,EAAE,CAAC;AAC5G,iBAAe;AACf,YAAU;AACV,gBAAc;AACd,eAAa;AACb,SAAO;AACR;AAEA,CA/DC,qCA+DqC,EAAE,CAjCC,mCAiCmC,CAZC,YAYY,CAZC,gBAYgB,EAAE,CAAC;AAC5G,iBAAe;AACf,YAAU;AACV,gBAAc;AACd,eAAa;AACb,SAAO;AACP,WAAS;AACV;AAEA,CAxEC,qCAwEqC,EAAE,CA1CC,mCA0CmC,CArBC,YAqBY,CArBC,gBAqBgB,EAAE,CAAC;AAC5G,iBAAe;AACf,YAAU;AACV,iBAAe;AACf,eAAa;AACb,SAAO;AACR;AAMA,CApFC,qCAoFqC,EAAE,CAtDC,mCAsDmC,CAjCC,YAiCY,CAjCC,gBAiCgB,EAAE,CAAC;AAC3G,YAAU;AACV,QAAM;AACN,OAAK;AACL,SAAO;AACP,UAAQ;AACR,YAAU;AACZ;AAEA,CA7FC,qCA6FqC,EAAE,CAAC;AACxC,QAAM,EAAE,EAAE;AACV,cAAY;AACZ,WAAS;AACV;AAEA,CAnGC,qCAmGqC,EAAE,CANC,4CAM4C,EAAE,CAAC;AACvF,YAAU;AACV,cAAY;AACb;AAEA,CAxGC,qCAwGqC,EAAE,CAXC,4CAW4C,EAAE,CALC,kBAKkB,EAAE,CAAC;AAC5G,gBAAc;AACd,iBAAe;AACf,eAAa;AACd;;;ACxHA,CAAC;AACA,SAAO;AACP,UAAQ;AACR,iBAAe;AAChB;AAEA,CAAC;AACA,aAAW;AACX,eAAa;AACb,kBAAgB;AACjB;AAIA,CAAC,kBAAkB,CAAC,WAAW,CAAC;AAC/B,UAAQ;AACT;AAEA,CAJC,kBAIkB,CAJC,YAIY,CAlB/B;AAmBA,UAAQ;AACR,aAAW;AACX,cAAY;AACZ,WAAS,IAAI,KAAK,IAAI;AACvB;AAEA,CAAC,IAAI,CAXJ,kBAWuB,CAXJ,YAWiB,CAzBpC;AA0BA,aAAW;AACX,iBAAe;AAChB;;;AC5BA,CAAC;AACA,eAAa;AACb,UAAQ;AACT;AAEA,CALC,kBAKkB,CAAC;AACnB,WAAS;AACT,UAAQ,EAAE;AACV,WAAS;AACT,UAAQ;AACR,SAAO;AACP,eAAa;AACd;AAEA,CAdC,iBAciB,CAAC,SAAS,CATR;AAUnB,WAAS;AACV;AAEA,CAlBC,kBAkBkB,CAAC;AACnB,WAAS;AACT,eAAa;AACb,mBAAiB;AACjB,UAAQ;AACR,YAAU;AACX;AAEA,CA1BC,kBA0BkB,CARC,WAQW,CAAC;AAC/B,UAAQ;AACT;AAEA,CA9BC,kBA8BkB,CAZC,YAYY,CAAC;AACjC,CA/BC,kBA+BkB,CAbC,YAaY,CAAC;AAChC,WAAS;AACV;AAEA,CAnCC,kBAmCkB,CAjBC,YAiBY,CAJC;AAKhC,WAAS;AACT,eAAa;AACb,SAAO;AACP,UAAQ;AACT;AAEA,CA1CC,kBA0CkB,CAAC;AACnB,WAAS;AACT,aAAW;AACX,WAAS;AACT,iBAAe;AAChB;AAEA,CAjDC,kBAiDkB,CA/BC,WA+BW,CAvBC,SAuBS,CAPrB;AAQpB,CAlDC,kBAkDkB,CAhCC,WAgCW,CAxBC,SAwBS,CARrB,YAQkC;AACtD,CAnDC,kBAmDkB,CAjCC,WAiCW,CAzBC,SAyBS,CATrB,YASkC;AACrD,SAAO,IAAI;AACZ;AAIA,CAzDC,iBAyDiB,CA3CC;AA4ClB,cAAY;AACb;AAEA,CA7DC,iBA6DiB,CA/CC,SA+CS,CA3CR;AA4CnB,WAAS;AACV;AAEA,CAjEC,iBAiEiB,CAnDC,SAmDS,CAvBR,YAuBqB,CAAC;AACzC,WAAS;AACT,iBAAe,IAAI,MAAM;AACzB,eAAa;AACb,eAAa;AACb,gBAAc;AACf;AAEA,CAzEC,kBAyEkB,CAvDC,YAuDY,CA/BZ,YA+ByB,CARH;AASzC,SAAO;AACP,UAAQ;AACR,UAAQ,IAAI;AACZ,UAAQ;AACR,aAAW;AACX,WAAS;AACT,oBAAkB;AACnB;AAEA,CAAC,kBAAkB,CAnFlB,kBAmFqC,CAzClB;AA0CnB,eAAa;AACd;AAGA,CAxFC,kBAwFkB,CAtEC,WAsEW,CAAC;AAC/B,YAAU;AACV,QAAM;AACN,aAAW;AACX,aAAW;AACX,WAAS;AACT,eAAa;AACb,mBAAiB;AACjB,gBAAc;AACf;AAEA,CAnGC,kBAmGkB,CAjFC,WAiFW,CAAC;AAC/B,WAAS;AACV;AAEA,CAvGC,kBAuGkB,CArFC,WAqFW,CAJC,qBAIqB,EAAE,CAAC;AACvD,WAAS;AACT,eAAa;AACb,UAAQ;AACT;AAEA,CA7GC,kBA6GkB,CA3FC,WA2FW,CAVC,qBAUqB,EAAE,CANC,+BAM+B,EAAE;AACxF,SAAO;AACR;;;AC/GA;AACC,sBAAoB;AACpB,4BAA0B;AAC3B;AAEA,CAAC;AACA,YAAU;AACV,WAAS;AACT,gBAAc;AACf;AAEA,CANC,WAMW,CAAC;AACZ,kBAAgB;AACjB;AAEA,CAVC,WAUW,CAAC,GAAG,CAAC;AAChB,UAAQ;AACT;AAEA,CAdC,WAcW,CAJK,QAII,CAAC;AACrB,UAAQ;AACT;AAEA,CAlBC,WAkBW,CARK,QAQI,CAAC;AACrB,UAAQ;AACT;AAEA,CAtBC,WAsBW,CAZC,GAYG,CAAC;AAChB,UAAQ;AACT;AAEA,CA1BC,WA0BW,CAJK,UAIM,CAZD;AAarB,UAAQ;AACT;AAEA,CA9BC,WA8BW,CARK,UAQM,CAZD;AAarB,UAAQ;AACT;AAEA,CAlCC,WAkCW,CA5BC;AA6BZ,UAAQ;AACR,kBAAgB;AACjB;AAEA,CAvCC,WAuCW,CA7BK;AA8BhB,UAAQ;AACR,OAAK;AACL,SAAO,IAAI;AACX,UAAQ;AACT;AAEA,CA9CC,WA8CW,CAxBK;AAyBhB,UAAQ;AACR,QAAM;AACN,SAAO;AACP,UAAQ,IAAI;AACb;AAEA,CArDC,WAqDW,KAAK,CA/CJ,UA+Ce,EAAE,CAAC;AAC9B,WAAS;AACT,UAAQ,KAAK,IAAI,oBAAoB,EAAE;AACvC,SAAO,KAAK,IAAI,oBAAoB,EAAE;AACtC,WAAS;AACT,WAAS;AACT,UAAQ;AACR,YAAU;AACX;AAEA,CA/DC,WA+DW,CAzCK,UAyCM,CAAC,qBAAqB,KAAK,CAzDrC,UA0DZ,EAAE,CAX4B,sBAWL,CAAC;AAC3B,CAjEC,WAiEW,CA3CK,UA2CM,CAAC,qBAAqB,KAAK,CA3DrC,UA4DZ,EAAE,CAb4B,sBAaL,CAAC;AAC1B,UAAQ;AACT;AAEA,CAtEC,WAsEW,CAhDK,UAgDM,CAPC,qBAOqB,KAAK,CAhErC,UAiEZ,EAAE,CAlB4B,sBAkBL,CALC;AAM3B,CAxEC,WAwEW,CAlDK,UAkDM,CAPC,qBAOqB,KAAK,CAlErC,UAmEZ,EAAE,CApB4B,sBAoBL,CATC;AAU1B,UAAQ;AACT;AAEA,CA7EC,WA6EW,CAnEK,SAmEK,EAAE,CAxBO,sBAwBgB,CAbpB;AAc1B,QAAM,KAAK,IAAI,oBAAoB,EAAE;AACrC,OAAK,KAAK,IAAI,oBAAoB,EAAE;AACrC;AACA,CAjFC,WAiFW,CAvEK,SAuEK,EAAE,CA5BO,sBA4BgB,CAfpB;AAgB1B,QAAM,KAAK,IAAI,oBAAoB,EAAE;AACrC,UAAQ,KAAK,IAAI,oBAAoB,EAAE;AACxC;AACA,CArFC,WAqFW,CA/DK,WA+DO,EAAE,CAhCK,sBAgCkB,CArBtB;AAsB1B,OAAK,KAAK,IAAI,oBAAoB,EAAE;AACpC,QAAM,KAAK,IAAI,oBAAoB,EAAE;AACtC;AACA,CAzFC,WAyFW,CAnEK,WAmEO,EAAE,CApCK,sBAoCkB,CAvBtB;AAwB1B,OAAK,KAAK,IAAI,oBAAoB,EAAE;AACpC,SAAO,KAAK,IAAI,oBAAoB,EAAE;AACvC;AAEA,CA9FC,WA8FW;AACX,WAAS;AACT,kBAAgB;AAChB,YAAU;AACV,SAAO;AACP,UAAQ;AACR,cAAY;AACb;AAEA,CAAC,gBAAgB,KAAK,CAAC,eAAe,CAvGrC,WAuGiD;AACjD,cAAY,iBAAiB,KAAK;AACnC;AAEA,CA3GC,WA2GW,CAAC,KAAK;AAClB,CA5GC,WA4GW,CAAC,MAAM;AAClB,cAAY,IAAI;AACjB;AAEA,CAhHC,WAgHW,CAtGK,QAsGI;AACpB,SAAO,IAAI;AACX,QAAM,KAAK,IAAI,EAAE,CAAC,IAAI,0BAA0B,EAAE;AACnD;AAEA,CArHC,WAqHW,CA/FK,UA+FM;AACtB,UAAQ,IAAI;AACZ,OAAK,KAAK,IAAI,EAAE,CAAC,IAAI,0BAA0B,EAAE;AAClD;AAEA,CAAC;AACA,kBAAgB;AACjB;AAIA,CAhIC,WAgIW,CAAC;AACZ,cAAY;AACb;AAEA,CApIC,WAoIW,CAJC,KAIK,CA9HL;AA+HZ,cAAY,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE;AAC/B;AAEA,CAxIC,WAwIW,CARC,KAQK,KAAK,CAlIV,UAkIqB,EAAE,CAnFL;AAoF9B,cAAY;AACb;;;AC/IA,CAAC;AACA,SAAO;AACP,UAAQ;AACT;AAEA,CALC,iBAKiB,CAAC;AAClB,YAAU;AACV,SAAO;AACP,UAAQ;AACR,WAAS;AACT,kBAAgB;AACjB;AAEA,CAbC,iBAaiB,CARC,IAQI,CAAC,UAAU,KAAK,CAAC;AACvC,kBAAgB;AACjB;AAEA,CAjBC,iBAiBiB,CAZC,KAYK,EAAE,CAAC;AAC1B,UAAQ;AACR,aAAW;AACX,eAAa;AACb,YAAU;AACV,WAAS;AACT,UAAQ;AACR,eAAa;AACb,cAAY;AACb;AAEA,CA5BC,iBA4BiB,CAvBC,KAuBK,EAAE,CAXC,WAWW,CAAC;AACtC,UAAQ;AACT;AAEA,CAhCC,iBAgCiB,CA3BC,KA2BK,EAAE,CAfC,YAeY,EAAE,CAAC;AACzC,kBAAgB;AACjB;AAEA,CApCC,iBAoCiB,CA/BC,IA+BI,CAvBC,UAuBU,KAAK,CAvBC,UAuBU,EAAE,CAnBzB;AAoB1B,kBAAgB;AAChB,UAAQ;AACR,SAAO;AACR;AAEA,CA1CC,iBA0CiB,CArCC,KAqCK,EAAE,CAzBC,YAyBY,EAAE,CAAC,OAAO;AAChD,UAAQ,EAAE;AACX;AAEA,CA9CC,iBA8CiB,CAzCC,IAyCI,CAjCC,UAiCU,KAAK,CAjCC,UAiCU,EAAE,CA7BzB,YA6BsC,EAAE,CAJzB,OAIiC;AAC1E,UAAQ;AACT;AAGA,CAnDC,iBAmDiB,CA9CC,KA8CK,EAAE,CAlCC,YAkCY,EAAE,CAAC;AACzC,WAAS;AACT,eAAa;AACd;AAEA,CAxDC,iBAwDiB,CAnDC,KAmDK,EAAE,CAvCC,YAuCY,EAAE,CALC,QAKQ,CAAC;AAClD,gBAAc;AACf;AAEA,CA5DC,iBA4DiB,CAvDC,KAuDK,EAAE,CA3CC,YA2CY,EAAE,CATC,QASQ,CAAC;AAClD,WAAS;AACV;AAGA,CAjEC,iBAiEiB,CA5DC,IA4DI,OAAO,EAAE,CAhDL,WAgDiB,CApDJ,SAoDc,EAAE,CAdd;AAe1C,CAlEC,iBAkEiB,CA7DC,IA6DI,cAAc,EAAE,CAjDZ,WAiDwB,CArDX,SAqDqB,EAAE,CAfrB;AAgB1C,CAnEC,iBAmEiB,CA9DC,KA8DK,EAAE,CAlDC,WAkDW,CAAC,sBAAsB,CAtDrB,SAsD+B,EAAE,CAhB/B;AAiB1C,CApEC,iBAoEiB,CA/DC,KA+DK,EAAE,CAnDC,WAmDW,CAAC,OAAO,CAvDN,SAuDgB,EAAE,CAjBhB;AAkBzC,WAAS;AACV;AAEA,CAxEC,iBAwEiB,CAnEC,KAmEK,EAAE,CAvDC,YAuDY,CAAC,kBAAkB,CAhBP,WAgBmB,CAAC;AACtE,UAAQ;AACT;AAEA,CA5EC,iBA4EiB,CAvEC,KAuEK,EAAE,CA3DC,YA2DY,CApBY,YAoBC,CAAC;AACpD,UAAQ;AACR,aAAW;AACX,cAAY;AACZ,WAAS,IAAI,KAAK,IAAI;AACvB;AAEA,CAAC,MAAM,CAnFN,iBAmFwB,CA9EN,KA8EY,EAAE,CAlEN,YAkEmB,CA3BK,YA2BQ,CAPN;AAQrD,CAAC,QAAQ,CApFR,iBAoF0B,CA/ER,KA+Ec,EAAE,CAnER,YAmEqB,CA5BG,YA4BU,CARR;AASpD,WAAS,IAAI,KAAK,IAAI;AACvB;AAGA,CAzFC,gBAyFgB,MAAM,SAAS,CApFb,KAoFmB,EAAE,CAxEb;AAyE3B,CA1FC,gBA0FgB,MAAM,SAAS,CArFb,KAqFmB,EAAE,CAzEb;AA0E3B,CA3FC,gBA2FgB,MAAM,IAAI,CAtFR,KAsFc,EAAE,CA1ER;AA2E3B,CA5FC,gBA4FgB,MAAM,IAAI,CAvFR,KAuFc,EAAE,CA3ER;AA4E1B,eAAa;AACd;AAEA,CAhGC,iBAgGiB,CA3FC,KA2FK,EAAE,CA/EC,WA+EW,CAAC;AACtC,WAAS;AACV;AAEA,CApGC,iBAoGiB,CA/FC,KA+FK,EAAE,CAAC;AAC1B,YAAU;AACV,QAAM;AACP;AAIA,CA3GC,gBA2GgB,CAAC,SAAS,CAAC;AAC3B,uBAAqB;AACrB,8BAA4B;AAC7B;AAEA,CAAC,cAAc,CAhHd,iBAgHgC,CALL;AAM3B,uBAAqB;AACtB;AAEA,CApHC,gBAoHgB,CATC,QASQ,CAAC,SAAS,CATR;AAU3B,uBAAqB;AACtB;AAEA,CAxHC,gBAwHgB,CAbC,QAaQ,CA3GF,WA2Gc,CAbV;AAc3B,uBAAqB;AACtB;AAEA,CAAC;AACA,YAAU;AACV,WAAS;AACT,SAAO;AACP,UAAQ;AACR,QAAM;AACN,cAAY;AACb;AAEA,CATC,yBASyB,EAAE,CAAC;AAC5B,YAAU;AACV,SAAO;AACP,UAAQ;AACR,cAAY;AACZ,aAAW;AAEX,kBAAgB;AAChB,cAAY,QAAQ,MAAM;AAC3B;AAEA,CApBC,yBAoByB,EAAE,CAXC,sBAWsB,CAAC;AACnD;AAAA,IAAY,IAAI,KAAK,QAAQ;AAAA,IAAE,KAAK,KAAK,QAAQ;AAAA,IAAE,MAAM,KAAK,QAAQ;AAAA,IAAE,OAAO,KAAK,QAAQ;AAAA,IAAE,QAAQ,MAAM;AAC7G;;;AClJA,CAAC;AACA,YAAU;AACV,SAAO;AACP,UAAQ;AACT;AAEA,CANC,mBAMmB,EAAE,CAAC;AACtB,YAAU;AACV,SAAO;AACP,UAAQ;AACR,kBAAgB;AACjB;AAEA,CAbC,mBAamB,EAAE,CAPC,eAOe,EAAE,CAAC;AACxC,kBAAgB;AACjB;AAEA,CAjBC,mBAiBmB,EAAE,CAAC;AACtB,SAAO;AACP,UAAQ;AACT;AAEA,CAtBC,mBAsBmB,EAAE,CALC,0BAK0B,EAAE,CAAC;AACnD,SAAO;AACP,UAAQ;AACR,eAAa;AACb,YAAU;AACX;AAEA,CA7BC,mBA6BmB,EAAE,CAZC,0BAY0B,EAAE,CAPC,qBAOqB,EAAE,CAAC;AAC3E,eAAa;AACb,YAAU;AACX;AAEA,CAlCC,mBAkCmB,EAAE,CAjBC,0BAiB0B,EAAE,CAZC,qBAYqB,EAAE,CALC,eAKe,KAAK,CAAC;AAChG,WAAS;AACV;AAEA,CAtCC,kBAsCkB,CAAC,SAAS,EAAE,CArBR,0BAqBmC,EAAE,CAhBR,qBAgB8B,EAAE,CATR;AAU3E,SAAO;AACR;AAEA,CA1CC,kBA0CkB,CAAC,WAAW,EAAE,CAzBV,0BAyBqC,EAAE,CApBV,qBAoBgC,EAAE,CAbV;AAc3E,UAAQ;AACT;AAEA,CA9CC,kBA8CkB,CAAC,iBAAiB,EAAE,CA7BhB,0BA6B2C,EAAE,CAxBhB,qBAwBsC,EAAE,CAjBhB,eAiBgC,KAAK,aAAa;AAC7H,WAAS;AACT,YAAU;AACV,OAAK;AACL,QAAM;AACN,WAAS;AACT,kBAAgB;AAChB,oBAAkB,IAAI;AACvB;AAEA,CAxDC,kBAwDkB,CAVC,gBAUgB,CAdhB,WAc4B,EAAE,CAvC3B,0BAuCsD,EAAE,CAlC3B,qBAkCiD,EAAE,CA3B3B,eA2B2C,KAAK,aAAa;AACxI,UAAQ;AACR,SAAO;AACR;AAEA,CA7DC,kBA6DkB,CAfC,gBAegB,CAvBhB,SAuB0B,EAAE,CA5CzB,0BA4CoD,EAAE,CAvCzB,qBAuC+C,EAAE,CAhCzB,eAgCyC,KAAK,aAAa;AACtI,UAAQ;AACR,SAAO;AACR;;;AChEA,CAAC;AACA,UAAQ;AACR,WAAS;AACV;AAEA,CALC,gBAKgB,EAAE,CAAC;AACnB,UAAQ;AACR,UAAQ;AACR,WAAS;AACT,eAAa;AACb,mBAAiB;AAClB;AAEA,CAbC,gBAagB,EAAE,CARC,eAQe,EAAE,CAAC,YAAY,CAAC;AAClD,UAAQ;AACT;AAEA,CAAC;AACA,WAAS;AACT,kBAAgB;AAChB,iBAAe;AAChB;AAEA,CANC,6BAM6B,EAAE,CAAC,iBAAiB,EAAE,CAVd;AAWrC,gBAAc;AACf;AAEA,CAVC,6BAU6B,EAAE,CAAC,0BAA0B,EAAE,CA3B5D,gBA2B6E,EAAE,CAtB5D,eAsB4E,CAAC,OAAO,CAAC;AACxG,aAAW;AACX,gBAAc;AACd,iBAAe;AACf,eAAa;AACb,eAAa;AACd;AAEA,CAlBC,6BAkB6B,EAAE,CARC,0BAQ0B,EAAE,CAnC5D,gBAmC6E,EAAE,CA9B5D,eA8B4E,EAAE,CAtB5D;AAuBrC,WAAS;AACT,mBAAiB;AACjB,uBAAqB,OAAO;AAC5B,qBAAmB;AACpB;;;ACxCA,CAAC,kBAAkB,CAAC,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC;AACxD,SAAO;AACP,UAAQ;AACR,qBAAmB;AACnB,uBAAqB;AACrB,mBAAiB;AAClB;AAEA,CARC,kBAQkB,CARC,WAQW,CARC,UAQU,CAAC,UAAU,CART;AAS3C,SAAO,IAAI;AACX,YAAU;AACV,iBAAe;AAChB;AAEA,CAdC,kBAckB,CAdC,WAcW,CAdC,UAcU,CANC,SAMS,CAAC,SAAS,KAAK,eAAe,CAdtC,YAcmD;AAC9F,WAAS;AACV;AAEA,CAlBC,kBAkBkB,CAlBC,WAkBW,CAlBC,UAkBU,CAVC,UAUU,EAAE,CAlBnC,WAkB+C,KAAK,CAV7B,WAUyC,EAAE,CAAC,gBAAgB,CAlB3D;AAmB3C,SAAO,IAAI;AACZ;AAEA,CAAC;AACA,WAAS;AACT,kBAAgB;AAChB,iBAAe;AAChB;AAEA,CANC,6BAM6B,EAAE,CAAC,iBAAiB,EAAE,CA5BR;AA6B3C,gBAAc;AACf;AAEA,CAVC,6BAU6B,EAAE,CAJC,gBAIgB,CAhCjB,WAgC6B,EAAE,CAhCnB,YAgCgC,CAhCnB;AAiCxD,SAAO;AACP,UAAQ;AACR,qBAAmB;AACnB,uBAAqB;AACrB,mBAAiB;AAClB;AAEA,CAlBC,4BAkB4B;AAC5B,oBAAkB,IAAI;AACvB;AAEA,CAtBC,6BAsB6B,EAAE,CAAC,0BAA0B,EAAE,CA1B0B,gBA0BT,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC;AACxG,aAAW;AACX,gBAAc;AACd,iBAAe;AACf,eAAa;AACb,eAAa;AACd;AAEA,CA9BC,6BA8B6B,EAAE,CARC,0BAQ0B,EAAE,CAlC0B,gBAkCT,EAAE,CARC,eAQe,EAAE,CApDtD;AAqD3C,WAAS;AACT,mBAAiB;AACjB,uBAAqB,OAAO;AAC5B,qBAAmB;AACpB;;;ACzDA,CAAC;AACA,cAAY;AACZ,WAAS;AACT,SAAO;AACP,WAAS;AACT,iBAAe;AACf,cAAY;AACZ,UAAQ;AACR,mBAAiB;AACjB,eAAa;AACb,UAAQ,IAAI,MAAM,IAAI,sBAAsB,EAAE;AAC9C,eAAa;AACd;AAEA,CAdC,kBAckB;AAClB,kBAAgB;AACjB;AAEA,CAlBC,kBAkBkB;AAClB,mBAAiB;AAClB;AAEA,CAAC,aAAa,CAAC,QAAQ;AACvB,CADC,aACa,CADC;AAEd,WAAS;AACT,UAAQ;AACT;AAEA,CA5BC,mBA4BmB,CAAC;AACpB,UAAQ,EAAE;AACV,SAAO;AACR;AAEA,CAjCC,kBAiCkB,CAAC;AACnB,kBAAgB;AAChB,aAAW;AACX,WAAS,EAAE;AACX,YAAU;AACV,UAAQ;AACT;AAEA,CAzCC,kBAyCkB,CARC,oCAQoC,EAAE,CAAC;AAC1D,cAAY;AACb;AAEA,CA7CC,kBA6CkB,CAZC,oCAYoC,EAAE,CAAC;AAC1D,aAAW;AACX,SAAO;AACP,YAAU;AACX;AAEA,CAnDC,kBAmDkB,CAlBC,oCAkBoC,EAAE,CAVC;AAW3D,CApDC,kBAoDkB,CAnBC,oCAmBoC,EAAE,CAPC;AAQ1D,WAAS;AACT,mBAAiB;AACjB,eAAa;AACb,eAAa;AACb,cAAY;AACZ,WAAS,IAAI;AACd;AAEA,CAAC;AACA,WAAS;AACT,UAAQ;AACT;AAEA,CALC,sBAKsB,CA5CR;AA6Cd,UAAQ;AACT;AAEA,CATC,uBASuB,EAAE,CAhDzB,aAgDuC;AACvC,kBAAgB;AACjB;AAEA,CAbC,sBAasB,CApDR,SAoDkB,EAAE,CApDlC,aAoDgD,CApDlC;AAqDf,CAdC,sBAcsB,CArDR,SAqDkB,EAAE,CArDlC,aAqDgD,CArDlC,QAqD2C;AAC1D,CAfC,sBAesB,CAtDR,SAsDkB,EAAE,CAAC;AACnC,WAAS;AACV;AAEA,CAnBC,uBAmBuB,EAAE,CA1DzB,aA0DuC,CAhFvC;AAiFA,sBAAoB;AACrB;AAEA,CAvBC,uBAuBuB,CARY;AASnC,WAAS,IAAI;AACb,UAAQ;AACT;AAEA,CA5BC,uBA4BuB,CAbY,iCAasB,EAAE;AAC3D,UAAQ;AACR,SAAO;AACR;AAEA,CAjCC,uBAiCuB,EAAE,CAxEzB,aAwEuC,CAAC;AACxC,UAAQ,IAAI,MAAM,IAAI,sBAAsB,EAAE;AAC9C,qBAAmB;AACnB,iBAAe,EAAE,IAAI,IAAI;AACzB,WAAS;AACT,eAAa;AACd;AAEA,CAzCC,uBAyCuB,EAAE,CAhFzB,aAgFuC,CAtGvC;AAuGA,iBAAe,IAAI,EAAE,EAAE;AACxB;AAEA,CAAC;AACA,WAAS;AACT,kBAAgB;AAChB,eAAa;AACb,UAAQ,IAAI;AACb;AAEA,CAPC,0BAO0B,CAAC;AAC3B,cAAY;AACZ,aAAW;AACX,WAAS,IAAI;AACd;AAEA,CAbC,0BAa0B,CA9EgC;AA+E3D,CAdC,0BAc0B,CAPC;AAQ3B,WAAS;AACT,mBAAiB;AACjB,eAAa;AACd;AAEA,CApBC,0BAoB0B,CArFgC,oBAqFX,EAAE,CAlG7B;AAmGrB,CArBC,0BAqB0B,CAdC,0BAc0B,EAAE,CAnGnC;AAoGpB,UAAQ,EAAE;AACV,SAAO;AACR;AAIA,CAhHC,aAgHa,CAAC;AACf,CA1EC,sBA0EsB,CADR,eACwB,EAAE,CAjHxC;AAkHA,SAAO,IAAI;AACX,oBAAkB,IAAI;AACvB;AAEA,CAtHC,aAsHa,CANC,cAMc;AAC7B,CAhFC,sBAgFsB,CAPR,eAOwB,EAAE,CAvHxC,aAuHsD;AACtD,oBAAkB,IAAI;AACvB;AAEA,CA3HC,aA2Ha,CAXC,cAWc,CAAC;AAC9B,CArFC,sBAqFsB,CAZR,eAYwB,EAAE,CA5HxC,aA4HsD,CADzB;AAE7B,SAAO,IAAI;AACX,oBAAkB,IAAI;AACvB;AAEA,CAjIC,aAiIa,CAjBC,cAiBc,CANC,SAMS;AACvC,CA3FC,sBA2FsB,CAlBR,eAkBwB,EAAE,CAlIxC,aAkIsD,CAPzB,SAOmC;AAChE,oBAAkB,IAAI;AACvB;AAEA,CA/FC,sBA+FsB,CAtBR,eAsBwB,CAhFH;AAiFnC,oBAAkB,IAAI;AACtB,cAAY,IAAI,MAAM,IAAI;AAC1B,iBAAe,IAAI,MAAM,IAAI;AAC9B;AAEA,CArGC,sBAqGsB,CA5BR,eA4BwB,CA5ItC,aA4IoD,CAjBvB,UAiBkC,EAAE,CAtF9B;AAuFnC,oBAAkB,IAAI;AACvB;AAEA,CAzGC,sBAyGsB,CAhCR,eAgCwB,CA1FH,iCA0FqC,EAAE;AAC1E,oBAAkB,IAAI;AACvB;;;ACxKA,CAAC;AACA,SAAO,IAAI;AACZ;AAEA,CAJC,WAIW;AACX,SAAO,IAAI;AACZ;;;ACNA,CAAC;AACA,SAAO;AACP,UAAQ;AACR,YAAU;AACX;AAEA,CANC,0BAM0B,CAAC;AAC3B,SAAO;AACP,UAAQ;AACR,YAAU;AACV,QAAM;AACN,WAAS;AACV;AAEA,CAdC,yBAcyB,CAAC,OAAO,CARN;AAS3B,WAAS;AACV;AAEA,CAlBC,yBAkByB,CAAC,SAAS,CAZR;AAa3B,QAAM;AACN,cAAY,MAAM,MAAM;AACzB;AAEA,CAvBC,yBAuByB,CALC,QAKQ,CAAC,KAAK,CAjBb;AAkB3B,SAAO;AACR;AAEA,CA3BC,yBA2ByB,CAAC,SAAS,CArBR;AAsB3B,kBAAgB;AAChB,sBAAoB;AACpB,6BAA2B;AAC3B,aAAW,YAAY,GAAG,EAAE,GAAG,EAAE;AACjC,6BAA2B;AAC5B;AAEA,CAnCC,yBAmCyB,CARC,QAQQ,CAAC,sBAAsB,CA7B9B;AAoC3B,6BAA2B,MAAM;AAClC;AAYA,WA3BiB;AA2BK;AAAO,eAAW,WAAW,IAAI,OAAO;AAAG;AAAE;AAAM,eAAW,WAAW,OAAO,OAAO;AAAG;AAAE;AAAK,eAAW,WAAW,OAAO,OAAO;AAAG;AAAE;;;ACvDhK,CAAC;AACA,UAAQ;AACT;AAEA,CAJC,eAIe,CAAC;AAChB,WAAS;AACT,WAAS;AACV;;;ACPA,CAAC;AACA,eAAa;AACb,SAAO;AACP,UAAQ;AACR,YAAU;AACV,SAAO;AACP,UAAQ;AACR,iBAAe;AACf,UAAQ,IAAI,MAAM;AAClB,WAAS;AACT,cAAY;AACZ,eAAa;AACb,uBAAqB;AACtB;AAEA,CAfC,oBAeoB;AACpB,oBAAkB,IAAI;AACvB;AAEA,CAAC,SAAS,CAnBT,oBAmB8B;AAC/B,CAAC,SAAS,CApBT,oBAoB8B;AAC9B,UAAQ,IAAI,OAAO,IAAI;AACxB;AAEA,CALC,SAKS,CAxBT;AAyBD,CALC,SAKS,CAzBT;AA0BA,cAAY;AACb;AAEA,CAVC,SAUS,CA7BT,oBA6B8B;AAC/B,CAVC,SAUS,CA9BT,oBA8B8B;AAC9B,cAAY;AACb;AAEA,CAlCC,oBAkCoB,CAAC;AACrB,UAAQ;AACR,SAAO;AACP,UAAQ,IAAI,MAAM;AAClB,iBAAe;AACf,gBAAc;AACd,eAAa;AACb,WAAS;AACT,WAAS;AACT,mBAAiB;AAClB;AAEA,CAAC,kBAAkB,CAAC;AACnB,WAAS;AACT,eAAa;AACb,iBAAe;AACf,iBAAe;AAChB;AAEA,CAPC,kBAOkB,CAPC,oBAOoB;AACvC,oBAAkB,IAAI;AACvB;AAEA,CAXC,kBAWkB,CAXC,qBAWqB,EAAE,CAzD1C,oBAyD+D,CAvB1C;AAwBrB,gBAAc;AACf;AAEA,CAfC,kBAekB,CAfC,qBAeqB,EAAE,CAAC;AAC3C,aAAW;AACZ;AAGA,CAlEC,oBAkEoB,CAhCC,eAgCe,KAAK,CAAC,QAAQ;AAClD,cAAY;AACb;;;ACpEA,CAAC;AACA,YAAU;AACV,WAAS;AACT,WAAS;AACT,cAAY;AACZ,iBAAe;AAGf,aAAW;AACZ;AAEA,CAXC,gBAWgB,EAAE,CAAC,UAAU,EAAE,CAAC;AACjC,CAZC,gBAYgB,EAAE,CADC,UACU,EAAE,CAAC;AAGhC,WAAS,IAAI;AACd;AAEA,CAlBC,gBAkBgB,EAAE,CAPC;AAQnB,YAAU;AACV,SAAO;AACR;AAEA,CAvBC,gBAuBgB,EAAE,CAZC,UAYU,EAAE,CAZC;AAahC,WAAS;AACT,cAAY;AACZ,SAAO;AACP,UAAQ;AACR,eAAa;AACb,UAAQ;AACR,eAAa;AACb,aAAW;AACX,UAAQ;AACR,SAAO;AACR;AAEA,CApCC,gBAoCgB,EAAE,CAzBC,UAyBU,EAAE;AAC/B,iBAAe;AAChB;AAEA,CAxCC,gBAwCgB,EAAE,CA7BC,UA6BU,EAAE,QAAQ,CA7BP;AA8BhC,WAAS;AACT,mBAAiB;AACjB,WAAS;AACV;AAEA,CA9CC,gBA8CgB,EAAE,CAnCC,UAmCU,EAAE,QAAQ,CAnCP,KAmCa;AAC7C,WAAS;AACV;AAEA,CAlDC,gBAkDgB,EAAE,CAvCC,UAuCU,EAAE,QAAQ,CAvCP,KAuCa,CAAC;AAC9C,eAAa;AACd;AAEA,CAtDC,gBAsDgB,EAAE,CA3CC,UA2CU,EAAE,CA1CC;AA2ChC,YAAU;AACV,WAAS;AACT,SAAO;AACP,OAAK;AACL,QAAM;AACN,cAAY;AACZ,eAAa;AACb,cAAY;AACZ,aAAW;AACZ;AAIA,CAAC;AACA,cAAY;AACb;AAEA,CAJC,0BAI0B,CAAC;AAC3B,WAAS;AACT,YAAU;AACV,cAAY;AACZ,SAAO;AACP,cAAY;AACZ,WAAS;AACT,aAAW;AACX,eAAa;AACb,cAAY;AACZ,aAAW;AACZ;AAGA,CAtFC,gBAsFgB,CAAC;AACjB,YAAU;AACV,SAAO;AACP,OAAK;AACN;AAEA,CA5FC,gBA4FgB,CANC,kBAMkB,CAAC;AACpC,eAAa;AACd;AAEA,CAhGC,gBAgGgB,CAVC,kBAUkB,CAJC,YAIY,CAAC;AACjD,qBAAmB;AACnB,SAAO;AACP,UAAQ;AACT;;;ACnGA,CAAC;AACA,YAAU;AACX;AAEA,CAJC,iBAIiB,CAAC;AAClB,aAAW;AACX,SAAO;AACR;AAEA,CATC,iBASiB,EAAE,CAAC;AACpB,YAAU;AACV,OAAK;AACL,SAAO;AACR;AAEA,CAAC,GAAG,CAfH,gBAeoB,CAAC;AACrB,oBAAkB;AACnB;AAGA,CAAC,QAAQ,CApBR,gBAoByB,CALJ;AAMrB,oBAAkB;AACnB;AAGA,CAzBC,gBAyBgB,CAAC,YAAY,CAhBT;AAiBrB,CAAC,SAAS,CA1BT,gBA0B0B,CADT,YACsB,CAjBnB;AAkBpB,aAAW,6BAA6B,MAAM,OAAO;AACtD;AAEA,CA9BC,gBA8BgB,CAAC,YAAY,CArBT;AAsBrB,CALC,SAKS,CA/BT,gBA+B0B,CADT,YACsB,CAtBnB;AAuBpB,aAAW,6BAA6B,MAAM,OAAO;AACtD;AAEA,CAAC,SAAS,CAnCT,gBAmC0B,CAVT,YAUsB,CA1BnB;AA2BrB,CAhBC,QAgBS,CApCT,gBAoC0B,CAXT,YAWsB,CA3BnB;AA4BpB,aAAW,kCAAkC,MAAM,OAAO;AAC3D;AAEA,CALC,SAKS,CAxCT,gBAwC0B,CAVT,YAUsB,CA/BnB;AAgCrB,CArBC,QAqBS,CAzCT,gBAyC0B,CAXT,YAWsB,CAhCnB;AAiCpB,aAAW,kCAAkC,MAAM,OAAO;AAC3D;AAEA,WAlBY;AAmBX;AAAK,gBAAY,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE;AAAM;AACzC;AAAO,gBAAY;AAAa;AACjC;AACA,WAjBY;AAkBX;AAAK,gBAAY,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE;AAAM;AAEzC;AAAM,gBAAY;AAAa;AAChC;AAEA,WAlBY;AAmBX;AAAK,gBAAY,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AAAO;AAC5C;AAAO,gBAAY;AAAa;AACjC;AACA,WAjBY;AAkBX;AAAK,gBAAY,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AAAO;AAE5C;AAAM,gBAAY;AAAa;AAChC;","names":[]} \ No newline at end of file diff --git a/src/vs/workbench/contrib/void/browser/react/out/Sidebar.js b/src/vs/workbench/contrib/void/browser/react/out/Sidebar.js index 36b5b284..8b865603 100644 --- a/src/vs/workbench/contrib/void/browser/react/out/Sidebar.js +++ b/src/vs/workbench/contrib/void/browser/react/out/Sidebar.js @@ -1,5 +1,3 @@ -import { VIEWPANE_FILTER_ACTION } from '../../../../../browser/parts/views/viewPane'; - var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; @@ -22,13 +20,22 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. - !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + __defProp(target, "default", { value: mod, enumerable: true }) , mod )); +var __decorateClass = (decorators, target, key, kind) => { + var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target; + for (var i = decorators.length - 1, decorator; i >= 0; i--) + if (decorator = decorators[i]) + result = (kind ? decorator(target, key, result) : decorator(result)) || result; + if (kind && result) __defProp(target, key, result); + return result; +}; +var __decorateParam = (index, decorator) => (target, key) => decorator(target, key, index); // ../../../../../../../node_modules/react/cjs/react.development.js var require_react_development = __commonJS({ - "../../../../../../../node_modules/react/cjs/react.development.js"(exports, module) { + "../../../../../../../node_modules/react/cjs/react.development.js"(exports2, module3) { { (function() { if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === "function") { @@ -123,38 +130,38 @@ var require_react_development = __commonJS({ ReactSharedInternals.ReactDebugCurrentFrame = ReactDebugCurrentFrame; ReactSharedInternals.ReactCurrentActQueue = ReactCurrentActQueue; } - function warn(format) { + function warn(format2) { { { for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } - printWarning("warn", format, args); + printWarning("warn", format2, args); } } } - function error(format) { + function error(format2) { { { for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { args[_key2 - 1] = arguments[_key2]; } - printWarning("error", format, args); + printWarning("error", format2, args); } } } - function printWarning(level, format, args) { + function printWarning(level, format2, args) { { var ReactDebugCurrentFrame2 = ReactSharedInternals.ReactDebugCurrentFrame; var stack = ReactDebugCurrentFrame2.getStackAddendum(); if (stack !== "") { - format += "%s"; + format2 += "%s"; args = args.concat([stack]); } var argsWithFormat = args.map(function(item) { return String(item); }); - argsWithFormat.unshift("Warning: " + format); + argsWithFormat.unshift("Warning: " + format2); Function.prototype.apply.call(console[level], console, argsWithFormat); } } @@ -396,7 +403,7 @@ var require_react_development = __commonJS({ } return null; } - var hasOwnProperty = Object.prototype.hasOwnProperty; + var hasOwnProperty2 = Object.prototype.hasOwnProperty; var RESERVED_PROPS = { key: true, ref: true, @@ -409,7 +416,7 @@ var require_react_development = __commonJS({ } function hasValidRef(config) { { - if (hasOwnProperty.call(config, "ref")) { + if (hasOwnProperty2.call(config, "ref")) { var getter = Object.getOwnPropertyDescriptor(config, "ref").get; if (getter && getter.isReactWarning) { return false; @@ -420,7 +427,7 @@ var require_react_development = __commonJS({ } function hasValidKey(config) { { - if (hasOwnProperty.call(config, "key")) { + if (hasOwnProperty2.call(config, "key")) { var getter = Object.getOwnPropertyDescriptor(config, "key").get; if (getter && getter.isReactWarning) { return false; @@ -470,7 +477,7 @@ var require_react_development = __commonJS({ } } } - var ReactElement = function(type, key, ref, self, source, owner, props) { + var ReactElement = function(type, key, ref, self2, source, owner, props) { var element = { // This tag allows us to uniquely identify this as a React Element $$typeof: REACT_ELEMENT_TYPE, @@ -494,7 +501,7 @@ var require_react_development = __commonJS({ configurable: false, enumerable: false, writable: false, - value: self + value: self2 }); Object.defineProperty(element, "_source", { configurable: false, @@ -509,12 +516,12 @@ var require_react_development = __commonJS({ } return element; }; - function createElement(type, config, children) { + function createElement2(type, config, children) { var propName; var props = {}; var key = null; var ref = null; - var self = null; + var self2 = null; var source = null; if (config != null) { if (hasValidRef(config)) { @@ -529,10 +536,10 @@ var require_react_development = __commonJS({ } key = "" + config.key; } - self = config.__self === void 0 ? null : config.__self; + self2 = config.__self === void 0 ? null : config.__self; source = config.__source === void 0 ? null : config.__source; for (propName in config) { - if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { + if (hasOwnProperty2.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { props[propName] = config[propName]; } } @@ -571,7 +578,7 @@ var require_react_development = __commonJS({ } } } - return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props); + return ReactElement(type, key, ref, self2, source, ReactCurrentOwner.current, props); } function cloneAndReplaceKey(oldElement, newKey) { var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props); @@ -585,7 +592,7 @@ var require_react_development = __commonJS({ var props = assign({}, element.props); var key = element.key; var ref = element.ref; - var self = element._self; + var self2 = element._self; var source = element._source; var owner = element._owner; if (config != null) { @@ -604,7 +611,7 @@ var require_react_development = __commonJS({ defaultProps = element.type.defaultProps; } for (propName in config) { - if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { + if (hasOwnProperty2.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { if (config[propName] === void 0 && defaultProps !== void 0) { props[propName] = defaultProps[propName]; } else { @@ -623,14 +630,14 @@ var require_react_development = __commonJS({ } props.children = childArray; } - return ReactElement(element.type, key, ref, self, source, owner, props); + return ReactElement(element.type, key, ref, self2, source, owner, props); } function isValidElement(object) { return typeof object === "object" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; } var SEPARATOR = "."; var SUBSEPARATOR = ":"; - function escape(key) { + function escape2(key) { var escapeRegex = /[=:]/g; var escaperLookup = { "=": "=0", @@ -643,15 +650,15 @@ var require_react_development = __commonJS({ } var didWarnAboutMaps = false; var userProvidedKeyEscapeRegex = /\/+/g; - function escapeUserProvidedKey(text) { - return text.replace(userProvidedKeyEscapeRegex, "$&/"); + function escapeUserProvidedKey(text2) { + return text2.replace(userProvidedKeyEscapeRegex, "$&/"); } function getElementKey(element, index) { if (typeof element === "object" && element !== null && element.key != null) { { checkKeyStringCoercion(element.key); } - return escape("" + element.key); + return escape2("" + element.key); } return index.toString(36); } @@ -1031,7 +1038,7 @@ var require_react_development = __commonJS({ } return false; } - function memo(type, compare) { + function memo(type, compare2) { { if (!isValidElementType(type)) { error("memo: The first argument must be a component. Instead received: %s", type === null ? "null" : typeof type); @@ -1040,7 +1047,7 @@ var require_react_development = __commonJS({ var elementType = { $$typeof: REACT_MEMO_TYPE, type, - compare: compare === void 0 ? null : compare + compare: compare2 === void 0 ? null : compare2 }; { var ownName; @@ -1095,29 +1102,29 @@ var require_react_development = __commonJS({ var dispatcher = resolveDispatcher(); return dispatcher.useRef(initialValue); } - function useEffect(create, deps) { + function useEffect(create2, deps) { var dispatcher = resolveDispatcher(); - return dispatcher.useEffect(create, deps); + return dispatcher.useEffect(create2, deps); } - function useInsertionEffect(create, deps) { + function useInsertionEffect(create2, deps) { var dispatcher = resolveDispatcher(); - return dispatcher.useInsertionEffect(create, deps); + return dispatcher.useInsertionEffect(create2, deps); } - function useLayoutEffect(create, deps) { + function useLayoutEffect(create2, deps) { var dispatcher = resolveDispatcher(); - return dispatcher.useLayoutEffect(create, deps); + return dispatcher.useLayoutEffect(create2, deps); } function useCallback(callback, deps) { var dispatcher = resolveDispatcher(); return dispatcher.useCallback(callback, deps); } - function useMemo(create, deps) { + function useMemo(create2, deps) { var dispatcher = resolveDispatcher(); - return dispatcher.useMemo(create, deps); + return dispatcher.useMemo(create2, deps); } - function useImperativeHandle(ref, create, deps) { + function useImperativeHandle(ref, create2, deps) { var dispatcher = resolveDispatcher(); - return dispatcher.useImperativeHandle(ref, create, deps); + return dispatcher.useImperativeHandle(ref, create2, deps); } function useDebugValue(value, formatterFn) { { @@ -1240,7 +1247,7 @@ var require_react_development = __commonJS({ var PossiblyWeakMap = typeof WeakMap === "function" ? WeakMap : Map; componentFrameCache = new PossiblyWeakMap(); } - function describeNativeComponentFrame(fn, construct) { + function describeNativeComponentFrame(fn, construct2) { if (!fn || reentry) { return ""; } @@ -1261,7 +1268,7 @@ var require_react_development = __commonJS({ disableLogs(); } try { - if (construct) { + if (construct2) { var Fake = function() { throw Error(); }; @@ -1404,7 +1411,7 @@ var require_react_development = __commonJS({ } function checkPropTypes(typeSpecs, values, location, componentName, element) { { - var has = Function.call.bind(hasOwnProperty); + var has = Function.call.bind(hasOwnProperty2); for (var typeSpecName in typeSpecs) { if (has(typeSpecs, typeSpecName)) { var error$1 = void 0; @@ -1608,7 +1615,7 @@ var require_react_development = __commonJS({ error("React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s", typeString, info); } } - var element = createElement.apply(this, arguments); + var element = createElement2.apply(this, arguments); if (element == null) { return element; } @@ -1654,7 +1661,7 @@ var require_react_development = __commonJS({ validatePropTypes(newElement); return newElement; } - function startTransition(scope, options) { + function startTransition(scope, options2) { var prevTransition = ReactCurrentBatchConfig.transition; ReactCurrentBatchConfig.transition = {}; var currentTransition = ReactCurrentBatchConfig.transition; @@ -1682,8 +1689,8 @@ var require_react_development = __commonJS({ if (enqueueTaskImpl === null) { try { var requireString = ("require" + Math.random()).slice(0, 7); - var nodeRequire = module && module[requireString]; - enqueueTaskImpl = nodeRequire.call(module, "timers").setImmediate; + var nodeRequire = module3 && module3[requireString]; + enqueueTaskImpl = nodeRequire.call(module3, "timers").setImmediate; } catch (_err) { enqueueTaskImpl = function(callback) { { @@ -1733,14 +1740,14 @@ var require_react_development = __commonJS({ var thenableResult = result; var wasAwaited = false; var thenable = { - then: function(resolve, reject) { + then: function(resolve2, reject) { wasAwaited = true; thenableResult.then(function(returnValue2) { popActScope(prevActScopeDepth); if (actScopeDepth === 0) { - recursivelyFlushAsyncActWork(returnValue2, resolve, reject); + recursivelyFlushAsyncActWork(returnValue2, resolve2, reject); } else { - resolve(returnValue2); + resolve2(returnValue2); } }, function(error2) { popActScope(prevActScopeDepth); @@ -1770,20 +1777,20 @@ var require_react_development = __commonJS({ ReactCurrentActQueue.current = null; } var _thenable = { - then: function(resolve, reject) { + then: function(resolve2, reject) { if (ReactCurrentActQueue.current === null) { ReactCurrentActQueue.current = []; - recursivelyFlushAsyncActWork(returnValue, resolve, reject); + recursivelyFlushAsyncActWork(returnValue, resolve2, reject); } else { - resolve(returnValue); + resolve2(returnValue); } } }; return _thenable; } else { var _thenable2 = { - then: function(resolve, reject) { - resolve(returnValue); + then: function(resolve2, reject) { + resolve2(returnValue); } }; return _thenable2; @@ -1799,7 +1806,7 @@ var require_react_development = __commonJS({ actScopeDepth = prevActScopeDepth; } } - function recursivelyFlushAsyncActWork(returnValue, resolve, reject) { + function recursivelyFlushAsyncActWork(returnValue, resolve2, reject) { { var queue = ReactCurrentActQueue.current; if (queue !== null) { @@ -1808,16 +1815,16 @@ var require_react_development = __commonJS({ enqueueTask(function() { if (queue.length === 0) { ReactCurrentActQueue.current = null; - resolve(returnValue); + resolve2(returnValue); } else { - recursivelyFlushAsyncActWork(returnValue, resolve, reject); + recursivelyFlushAsyncActWork(returnValue, resolve2, reject); } }); } catch (error2) { reject(error2); } } else { - resolve(returnValue); + resolve2(returnValue); } } } @@ -1854,42 +1861,42 @@ var require_react_development = __commonJS({ toArray, only: onlyChild }; - exports.Children = Children; - exports.Component = Component; - exports.Fragment = REACT_FRAGMENT_TYPE; - exports.Profiler = REACT_PROFILER_TYPE; - exports.PureComponent = PureComponent; - exports.StrictMode = REACT_STRICT_MODE_TYPE; - exports.Suspense = REACT_SUSPENSE_TYPE; - exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals; - exports.act = act; - exports.cloneElement = cloneElement$1; - exports.createContext = createContext; - exports.createElement = createElement$1; - exports.createFactory = createFactory; - exports.createRef = createRef; - exports.forwardRef = forwardRef; - exports.isValidElement = isValidElement; - exports.lazy = lazy; - exports.memo = memo; - exports.startTransition = startTransition; - exports.unstable_act = act; - exports.useCallback = useCallback; - exports.useContext = useContext; - exports.useDebugValue = useDebugValue; - exports.useDeferredValue = useDeferredValue; - exports.useEffect = useEffect; - exports.useId = useId; - exports.useImperativeHandle = useImperativeHandle; - exports.useInsertionEffect = useInsertionEffect; - exports.useLayoutEffect = useLayoutEffect; - exports.useMemo = useMemo; - exports.useReducer = useReducer; - exports.useRef = useRef; - exports.useState = useState2; - exports.useSyncExternalStore = useSyncExternalStore; - exports.useTransition = useTransition; - exports.version = ReactVersion; + exports2.Children = Children; + exports2.Component = Component; + exports2.Fragment = REACT_FRAGMENT_TYPE; + exports2.Profiler = REACT_PROFILER_TYPE; + exports2.PureComponent = PureComponent; + exports2.StrictMode = REACT_STRICT_MODE_TYPE; + exports2.Suspense = REACT_SUSPENSE_TYPE; + exports2.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals; + exports2.act = act; + exports2.cloneElement = cloneElement$1; + exports2.createContext = createContext; + exports2.createElement = createElement$1; + exports2.createFactory = createFactory; + exports2.createRef = createRef; + exports2.forwardRef = forwardRef; + exports2.isValidElement = isValidElement; + exports2.lazy = lazy; + exports2.memo = memo; + exports2.startTransition = startTransition; + exports2.unstable_act = act; + exports2.useCallback = useCallback; + exports2.useContext = useContext; + exports2.useDebugValue = useDebugValue; + exports2.useDeferredValue = useDeferredValue; + exports2.useEffect = useEffect; + exports2.useId = useId; + exports2.useImperativeHandle = useImperativeHandle; + exports2.useInsertionEffect = useInsertionEffect; + exports2.useLayoutEffect = useLayoutEffect; + exports2.useMemo = useMemo; + exports2.useReducer = useReducer; + exports2.useRef = useRef; + exports2.useState = useState2; + exports2.useSyncExternalStore = useSyncExternalStore; + exports2.useTransition = useTransition; + exports2.version = ReactVersion; if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop === "function") { __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error()); } @@ -1900,16 +1907,16 @@ var require_react_development = __commonJS({ // ../../../../../../../node_modules/react/index.js var require_react = __commonJS({ - "../../../../../../../node_modules/react/index.js"(exports, module) { + "../../../../../../../node_modules/react/index.js"(exports2, module3) { { - module.exports = require_react_development(); + module3.exports = require_react_development(); } } }); // ../../../../../../../node_modules/scheduler/cjs/scheduler.development.js var require_scheduler_development = __commonJS({ - "../../../../../../../node_modules/scheduler/cjs/scheduler.development.js"(exports) { + "../../../../../../../node_modules/scheduler/cjs/scheduler.development.js"(exports2) { { (function() { if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === "function") { @@ -1943,7 +1950,7 @@ var require_scheduler_development = __commonJS({ while (index > 0) { var parentIndex = index - 1 >>> 1; var parent = heap[parentIndex]; - if (compare(parent, node) > 0) { + if (compare2(parent, node) > 0) { heap[parentIndex] = node; heap[index] = parent; index = parentIndex; @@ -1961,8 +1968,8 @@ var require_scheduler_development = __commonJS({ var left = heap[leftIndex]; var rightIndex = leftIndex + 1; var right = heap[rightIndex]; - if (compare(left, node) < 0) { - if (rightIndex < length && compare(right, left) < 0) { + if (compare2(left, node) < 0) { + if (rightIndex < length && compare2(right, left) < 0) { heap[index] = right; heap[rightIndex] = node; index = rightIndex; @@ -1971,7 +1978,7 @@ var require_scheduler_development = __commonJS({ heap[leftIndex] = node; index = leftIndex; } - } else if (rightIndex < length && compare(right, node) < 0) { + } else if (rightIndex < length && compare2(right, node) < 0) { heap[index] = right; heap[rightIndex] = node; index = rightIndex; @@ -1980,7 +1987,7 @@ var require_scheduler_development = __commonJS({ } } } - function compare(a, b) { + function compare2(a, b) { var diff = a.sortIndex - b.sortIndex; return diff !== 0 ? diff : a.id - b.id; } @@ -1991,16 +1998,16 @@ var require_scheduler_development = __commonJS({ var IdlePriority = 5; function markTaskErrored(task, ms) { } - var hasPerformanceNow = typeof performance === "object" && typeof performance.now === "function"; - if (hasPerformanceNow) { + var hasPerformanceNow2 = typeof performance === "object" && typeof performance.now === "function"; + if (hasPerformanceNow2) { var localPerformance = performance; - exports.unstable_now = function() { + exports2.unstable_now = function() { return localPerformance.now(); }; } else { var localDate = Date; var initialTime = localDate.now(); - exports.unstable_now = function() { + exports2.unstable_now = function() { return localDate.now() - initialTime; }; } @@ -2084,7 +2091,7 @@ var require_scheduler_development = __commonJS({ currentPriorityLevel = currentTask.priorityLevel; var didUserCallbackTimeout = currentTask.expirationTime <= currentTime; var continuationCallback = callback(didUserCallbackTimeout); - currentTime = exports.unstable_now(); + currentTime = exports2.unstable_now(); if (typeof continuationCallback === "function") { currentTask.callback = continuationCallback; } else { @@ -2159,11 +2166,11 @@ var require_scheduler_development = __commonJS({ } }; } - function unstable_scheduleCallback(priorityLevel, callback, options) { - var currentTime = exports.unstable_now(); + function unstable_scheduleCallback(priorityLevel, callback, options2) { + var currentTime = exports2.unstable_now(); var startTime2; - if (typeof options === "object" && options !== null) { - var delay = options.delay; + if (typeof options2 === "object" && options2 !== null) { + var delay = options2.delay; if (typeof delay === "number" && delay > 0) { startTime2 = currentTime + delay; } else { @@ -2172,26 +2179,26 @@ var require_scheduler_development = __commonJS({ } else { startTime2 = currentTime; } - var timeout; + var timeout2; switch (priorityLevel) { case ImmediatePriority: - timeout = IMMEDIATE_PRIORITY_TIMEOUT; + timeout2 = IMMEDIATE_PRIORITY_TIMEOUT; break; case UserBlockingPriority: - timeout = USER_BLOCKING_PRIORITY_TIMEOUT; + timeout2 = USER_BLOCKING_PRIORITY_TIMEOUT; break; case IdlePriority: - timeout = IDLE_PRIORITY_TIMEOUT; + timeout2 = IDLE_PRIORITY_TIMEOUT; break; case LowPriority: - timeout = LOW_PRIORITY_TIMEOUT; + timeout2 = LOW_PRIORITY_TIMEOUT; break; case NormalPriority: default: - timeout = NORMAL_PRIORITY_TIMEOUT; + timeout2 = NORMAL_PRIORITY_TIMEOUT; break; } - var expirationTime = startTime2 + timeout; + var expirationTime = startTime2 + timeout2; var newTask = { id: taskIdCounter++, callback, @@ -2244,7 +2251,7 @@ var require_scheduler_development = __commonJS({ var frameInterval = frameYieldMs; var startTime = -1; function shouldYieldToHost() { - var timeElapsed = exports.unstable_now() - startTime; + var timeElapsed = exports2.unstable_now() - startTime; if (timeElapsed < frameInterval) { return false; } @@ -2265,7 +2272,7 @@ var require_scheduler_development = __commonJS({ } var performWorkUntilDeadline = function() { if (scheduledHostCallback !== null) { - var currentTime = exports.unstable_now(); + var currentTime = exports2.unstable_now(); startTime = currentTime; var hasTimeRemaining = true; var hasMoreWork = true; @@ -2309,7 +2316,7 @@ var require_scheduler_development = __commonJS({ } function requestHostTimeout(callback, ms) { taskTimeoutID = localSetTimeout(function() { - callback(exports.unstable_now()); + callback(exports2.unstable_now()); }, ms); } function cancelHostTimeout() { @@ -2318,24 +2325,24 @@ var require_scheduler_development = __commonJS({ } var unstable_requestPaint = requestPaint; var unstable_Profiling = null; - exports.unstable_IdlePriority = IdlePriority; - exports.unstable_ImmediatePriority = ImmediatePriority; - exports.unstable_LowPriority = LowPriority; - exports.unstable_NormalPriority = NormalPriority; - exports.unstable_Profiling = unstable_Profiling; - exports.unstable_UserBlockingPriority = UserBlockingPriority; - exports.unstable_cancelCallback = unstable_cancelCallback; - exports.unstable_continueExecution = unstable_continueExecution; - exports.unstable_forceFrameRate = forceFrameRate; - exports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel; - exports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode; - exports.unstable_next = unstable_next; - exports.unstable_pauseExecution = unstable_pauseExecution; - exports.unstable_requestPaint = unstable_requestPaint; - exports.unstable_runWithPriority = unstable_runWithPriority; - exports.unstable_scheduleCallback = unstable_scheduleCallback; - exports.unstable_shouldYield = shouldYieldToHost; - exports.unstable_wrapCallback = unstable_wrapCallback; + exports2.unstable_IdlePriority = IdlePriority; + exports2.unstable_ImmediatePriority = ImmediatePriority; + exports2.unstable_LowPriority = LowPriority; + exports2.unstable_NormalPriority = NormalPriority; + exports2.unstable_Profiling = unstable_Profiling; + exports2.unstable_UserBlockingPriority = UserBlockingPriority; + exports2.unstable_cancelCallback = unstable_cancelCallback; + exports2.unstable_continueExecution = unstable_continueExecution; + exports2.unstable_forceFrameRate = forceFrameRate; + exports2.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel; + exports2.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode; + exports2.unstable_next = unstable_next; + exports2.unstable_pauseExecution = unstable_pauseExecution; + exports2.unstable_requestPaint = unstable_requestPaint; + exports2.unstable_runWithPriority = unstable_runWithPriority; + exports2.unstable_scheduleCallback = unstable_scheduleCallback; + exports2.unstable_shouldYield = shouldYieldToHost; + exports2.unstable_wrapCallback = unstable_wrapCallback; if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop === "function") { __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error()); } @@ -2346,16 +2353,16 @@ var require_scheduler_development = __commonJS({ // ../../../../../../../node_modules/scheduler/index.js var require_scheduler = __commonJS({ - "../../../../../../../node_modules/scheduler/index.js"(exports, module) { + "../../../../../../../node_modules/scheduler/index.js"(exports2, module3) { { - module.exports = require_scheduler_development(); + module3.exports = require_scheduler_development(); } } }); // ../../../../../../../node_modules/react-dom/cjs/react-dom.development.js var require_react_dom_development = __commonJS({ - "../../../../../../../node_modules/react-dom/cjs/react-dom.development.js"(exports) { + "../../../../../../../node_modules/react-dom/cjs/react-dom.development.js"(exports2) { { (function() { if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === "function") { @@ -2370,38 +2377,38 @@ var require_react_dom_development = __commonJS({ suppressWarning = newSuppressWarning; } } - function warn(format) { + function warn(format2) { { if (!suppressWarning) { for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } - printWarning("warn", format, args); + printWarning("warn", format2, args); } } } - function error(format) { + function error(format2) { { if (!suppressWarning) { for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { args[_key2 - 1] = arguments[_key2]; } - printWarning("error", format, args); + printWarning("error", format2, args); } } } - function printWarning(level, format, args) { + function printWarning(level, format2, args) { { var ReactDebugCurrentFrame2 = ReactSharedInternals.ReactDebugCurrentFrame; var stack = ReactDebugCurrentFrame2.getStackAddendum(); if (stack !== "") { - format += "%s"; + format2 += "%s"; args = args.concat([stack]); } var argsWithFormat = args.map(function(item) { return String(item); }); - argsWithFormat.unshift("Warning: " + format); + argsWithFormat.unshift("Warning: " + format2); Function.prototype.apply.call(console[level], console, argsWithFormat); } } @@ -2467,7 +2474,7 @@ var require_react_dom_development = __commonJS({ } } var canUseDOM = !!(typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined"); - var hasOwnProperty = Object.prototype.hasOwnProperty; + var hasOwnProperty2 = Object.prototype.hasOwnProperty; function typeName(value) { { var hasToStringTag = typeof Symbol === "function" && Symbol.toStringTag; @@ -2549,10 +2556,10 @@ var require_react_dom_development = __commonJS({ var illegalAttributeNameCache = {}; var validatedAttributeNameCache = {}; function isAttributeNameSafe(attributeName) { - if (hasOwnProperty.call(validatedAttributeNameCache, attributeName)) { + if (hasOwnProperty2.call(validatedAttributeNameCache, attributeName)) { return true; } - if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) { + if (hasOwnProperty2.call(illegalAttributeNameCache, attributeName)) { return false; } if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) { @@ -3286,7 +3293,7 @@ var require_react_dom_development = __commonJS({ var PossiblyWeakMap = typeof WeakMap === "function" ? WeakMap : Map; componentFrameCache = new PossiblyWeakMap(); } - function describeNativeComponentFrame(fn, construct) { + function describeNativeComponentFrame(fn, construct2) { if (!fn || reentry) { return ""; } @@ -3307,7 +3314,7 @@ var require_react_dom_development = __commonJS({ disableLogs(); } try { - if (construct) { + if (construct2) { var Fake = function() { throw Error(); }; @@ -3789,7 +3796,7 @@ var require_react_dom_development = __commonJS({ } return false; } - function getActiveElement(doc) { + function getActiveElement2(doc) { doc = doc || (typeof document !== "undefined" ? document : void 0); if (typeof doc === "undefined") { return null; @@ -3954,7 +3961,7 @@ var require_react_dom_development = __commonJS({ function setDefaultValue(node, type, value) { if ( // Focused number inputs synchronize on blur. See ChangeEventPlugin.js - type !== "number" || getActiveElement(node.ownerDocument) !== node + type !== "number" || getActiveElement2(node.ownerDocument) !== node ) { if (value == null) { node.defaultValue = toString(node._wrapperState.initialValue); @@ -4034,35 +4041,35 @@ var require_react_dom_development = __commonJS({ } } function updateOptions(node, multiple, propValue, setDefaultSelected) { - var options2 = node.options; + var options3 = node.options; if (multiple) { var selectedValues = propValue; var selectedValue = {}; for (var i = 0; i < selectedValues.length; i++) { selectedValue["$" + selectedValues[i]] = true; } - for (var _i = 0; _i < options2.length; _i++) { - var selected = selectedValue.hasOwnProperty("$" + options2[_i].value); - if (options2[_i].selected !== selected) { - options2[_i].selected = selected; + for (var _i = 0; _i < options3.length; _i++) { + var selected = selectedValue.hasOwnProperty("$" + options3[_i].value); + if (options3[_i].selected !== selected) { + options3[_i].selected = selected; } if (selected && setDefaultSelected) { - options2[_i].defaultSelected = true; + options3[_i].defaultSelected = true; } } } else { var _selectedValue = toString(getToStringValue(propValue)); var defaultSelected = null; - for (var _i2 = 0; _i2 < options2.length; _i2++) { - if (options2[_i2].value === _selectedValue) { - options2[_i2].selected = true; + for (var _i2 = 0; _i2 < options3.length; _i2++) { + if (options3[_i2].value === _selectedValue) { + options3[_i2].selected = true; if (setDefaultSelected) { - options2[_i2].defaultSelected = true; + options3[_i2].defaultSelected = true; } return; } - if (defaultSelected === null && !options2[_i2].disabled) { - defaultSelected = options2[_i2]; + if (defaultSelected === null && !options3[_i2].disabled) { + defaultSelected = options3[_i2]; } } if (defaultSelected !== null) { @@ -4236,11 +4243,11 @@ var require_react_dom_development = __commonJS({ } }; var reusableSVGContainer; - var setInnerHTML = createMicrosoftUnsafeLocalFunction(function(node, html) { + var setInnerHTML = createMicrosoftUnsafeLocalFunction(function(node, html2) { if (node.namespaceURI === SVG_NAMESPACE) { if (!("innerHTML" in node)) { reusableSVGContainer = reusableSVGContainer || document.createElement("div"); - reusableSVGContainer.innerHTML = "" + html.valueOf().toString() + ""; + reusableSVGContainer.innerHTML = "" + html2.valueOf().toString() + ""; var svgNode = reusableSVGContainer.firstChild; while (node.firstChild) { node.removeChild(node.firstChild); @@ -4251,22 +4258,22 @@ var require_react_dom_development = __commonJS({ return; } } - node.innerHTML = html; + node.innerHTML = html2; }); var ELEMENT_NODE = 1; var TEXT_NODE = 3; var COMMENT_NODE = 8; var DOCUMENT_NODE = 9; var DOCUMENT_FRAGMENT_NODE = 11; - var setTextContent = function(node, text) { - if (text) { + var setTextContent = function(node, text2) { + if (text2) { var firstChild = node.firstChild; if (firstChild && firstChild === node.lastChild && firstChild.nodeType === TEXT_NODE) { - firstChild.nodeValue = text; + firstChild.nodeValue = text2; return; } } - node.textContent = text; + node.textContent = text2; }; var shorthandToLonghand = { animation: ["animationDelay", "animationDirection", "animationDuration", "animationFillMode", "animationIterationCount", "animationName", "animationPlayState", "animationTimingFunction"], @@ -4469,7 +4476,7 @@ var require_react_dom_development = __commonJS({ function createDangerousStringForStyles(styles) { { var serialized = ""; - var delimiter = ""; + var delimiter2 = ""; for (var styleName in styles) { if (!styles.hasOwnProperty(styleName)) { continue; @@ -4477,9 +4484,9 @@ var require_react_dom_development = __commonJS({ var styleValue = styles[styleName]; if (styleValue != null) { var isCustomProperty = styleName.indexOf("--") === 0; - serialized += delimiter + (isCustomProperty ? styleName : hyphenateStyleName(styleName)) + ":"; + serialized += delimiter2 + (isCustomProperty ? styleName : hyphenateStyleName(styleName)) + ":"; serialized += dangerousStyleValue(styleName, styleValue, isCustomProperty); - delimiter = ";"; + delimiter2 = ";"; } } return serialized || null; @@ -5166,7 +5173,7 @@ var require_react_dom_development = __commonJS({ var rARIACamel = new RegExp("^(aria)[A-Z][" + ATTRIBUTE_NAME_CHAR + "]*$"); function validateProperty(tagName, name) { { - if (hasOwnProperty.call(warnedProperties, name) && warnedProperties[name]) { + if (hasOwnProperty2.call(warnedProperties, name) && warnedProperties[name]) { return true; } if (rARIACamel.test(name)) { @@ -5249,7 +5256,7 @@ var require_react_dom_development = __commonJS({ var rARIA$1 = new RegExp("^(aria)-[" + ATTRIBUTE_NAME_CHAR + "]*$"); var rARIACamel$1 = new RegExp("^(aria)[A-Z][" + ATTRIBUTE_NAME_CHAR + "]*$"); validateProperty$1 = function(tagName, name, value, eventRegistry) { - if (hasOwnProperty.call(warnedProperties$1, name) && warnedProperties$1[name]) { + if (hasOwnProperty2.call(warnedProperties$1, name) && warnedProperties$1[name]) { return true; } var lowerCasedName = name.toLowerCase(); @@ -5518,14 +5525,14 @@ var require_react_dom_development = __commonJS({ var passiveBrowserEventsSupported = false; if (canUseDOM) { try { - var options = {}; - Object.defineProperty(options, "passive", { + var options2 = {}; + Object.defineProperty(options2, "passive", { get: function() { passiveBrowserEventsSupported = true; } }); - window.addEventListener("test", options, options); - window.removeEventListener("test", options, options); + window.addEventListener("test", options2, options2); + window.removeEventListener("test", options2, options2); } catch (e) { passiveBrowserEventsSupported = false; } @@ -7552,12 +7559,12 @@ var require_react_dom_development = __commonJS({ var root = null; var startText = null; var fallbackText = null; - function initialize(nativeEventTarget) { + function initialize2(nativeEventTarget) { root = nativeEventTarget; startText = getText(); return true; } - function reset() { + function reset2() { root = null; startText = null; fallbackText = null; @@ -7630,9 +7637,9 @@ var require_react_dom_development = __commonJS({ if (!Interface.hasOwnProperty(_propName)) { continue; } - var normalize = Interface[_propName]; - if (normalize) { - this[_propName] = normalize(nativeEvent); + var normalize2 = Interface[_propName]; + if (normalize2) { + this[_propName] = normalize2(nativeEvent); } else { this[_propName] = nativeEvent[_propName]; } @@ -8029,7 +8036,7 @@ var require_react_dom_development = __commonJS({ } if (useFallbackCompositionData && !isUsingKoreanIME(nativeEvent)) { if (!isComposing && eventType === "onCompositionStart") { - isComposing = initialize(nativeEventTarget); + isComposing = initialize2(nativeEventTarget); } else if (eventType === "onCompositionEnd") { if (isComposing) { fallbackData = getData(); @@ -8078,7 +8085,7 @@ var require_react_dom_development = __commonJS({ if (isComposing) { if (domEventName === "compositionend" || !canUseCompositionEvent && isFallbackCompositionEnd(domEventName, nativeEvent)) { var chars = getData(); - reset(); + reset2(); isComposing = false; return chars; } @@ -8158,13 +8165,13 @@ var require_react_dom_development = __commonJS({ return false; } var eventName = "on" + eventNameSuffix; - var isSupported = eventName in document; - if (!isSupported) { + var isSupported2 = eventName in document; + if (!isSupported2) { var element = document.createElement("div"); element.setAttribute(eventName, "return;"); - isSupported = typeof element[eventName] === "function"; + isSupported2 = typeof element[eventName] === "function"; } - return isSupported; + return isSupported2; } function registerEvents$1() { registerTwoPhaseEvent("onChange", ["change", "click", "focusin", "focusout", "input", "keydown", "keyup", "selectionchange"]); @@ -8388,7 +8395,7 @@ var require_react_dom_development = __commonJS({ } for (var i = 0; i < keysA.length; i++) { var currentKey = keysA[i]; - if (!hasOwnProperty.call(objB, currentKey) || !objectIs(objA[currentKey], objB[currentKey])) { + if (!hasOwnProperty2.call(objB, currentKey) || !objectIs(objA[currentKey], objB[currentKey])) { return false; } } @@ -8515,15 +8522,15 @@ var require_react_dom_development = __commonJS({ if (selection.rangeCount === 1 && selection.anchorNode === startMarker.node && selection.anchorOffset === startMarker.offset && selection.focusNode === endMarker.node && selection.focusOffset === endMarker.offset) { return; } - var range = doc.createRange(); - range.setStart(startMarker.node, startMarker.offset); + var range2 = doc.createRange(); + range2.setStart(startMarker.node, startMarker.offset); selection.removeAllRanges(); if (start > end) { - selection.addRange(range); + selection.addRange(range2); selection.extend(endMarker.node, endMarker.offset); } else { - range.setEnd(endMarker.node, endMarker.offset); - selection.addRange(range); + range2.setEnd(endMarker.node, endMarker.offset); + selection.addRange(range2); } } } @@ -8559,14 +8566,14 @@ var require_react_dom_development = __commonJS({ } function getActiveElementDeep() { var win = window; - var element = getActiveElement(); + var element = getActiveElement2(); while (element instanceof win.HTMLIFrameElement) { if (isSameOriginFrame(element)) { win = element.contentWindow; } else { return element; } - element = getActiveElement(win.document); + element = getActiveElement2(win.document); } return element; } @@ -8668,7 +8675,7 @@ var require_react_dom_development = __commonJS({ } function constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget) { var doc = getEventTargetDocument(nativeEventTarget); - if (mouseDown || activeElement$1 == null || activeElement$1 !== getActiveElement(doc)) { + if (mouseDown || activeElement$1 == null || activeElement$1 !== getActiveElement2(doc)) { return; } var currentSelection = getSelection$1(activeElement$1); @@ -9292,9 +9299,9 @@ var require_react_dom_development = __commonJS({ error("Expected `%s` listener to be a function, instead got a value of `%s` type.", registrationName, typeof listener); } }; - normalizeHTML = function(parent, html) { + normalizeHTML = function(parent, html2) { var testElement = parent.namespaceURI === HTML_NAMESPACE ? parent.ownerDocument.createElement(parent.tagName) : parent.ownerDocument.createElementNS(parent.namespaceURI, parent.tagName); - testElement.innerHTML = html; + testElement.innerHTML = html2; return testElement.innerHTML; }; } @@ -9391,7 +9398,7 @@ var require_react_dom_development = __commonJS({ } } } - function createElement(type, props, rootContainerElement, parentNamespace) { + function createElement2(type, props, rootContainerElement, parentNamespace) { var isCustomComponentTag; var ownerDocument = getOwnerDocumentFromRootContainer(rootContainerElement); var domElement; @@ -9431,7 +9438,7 @@ var require_react_dom_development = __commonJS({ } { if (namespaceURI === HTML_NAMESPACE) { - if (!isCustomComponentTag && Object.prototype.toString.call(domElement) === "[object HTMLUnknownElement]" && !hasOwnProperty.call(warnedUnknownTags, type)) { + if (!isCustomComponentTag && Object.prototype.toString.call(domElement) === "[object HTMLUnknownElement]" && !hasOwnProperty2.call(warnedUnknownTags, type)) { warnedUnknownTags[type] = true; error("The tag <%s> is unrecognized in this browser. If you meant to render a React component, start its name with an uppercase letter.", type); } @@ -9439,8 +9446,8 @@ var require_react_dom_development = __commonJS({ } return domElement; } - function createTextNode(text, rootContainerElement) { - return getOwnerDocumentFromRootContainer(rootContainerElement).createTextNode(text); + function createTextNode(text2, rootContainerElement) { + return getOwnerDocumentFromRootContainer(rootContainerElement).createTextNode(text2); } function setInitialProperties(domElement, tag, rawProps, rootContainerElement) { var isCustomComponentTag = isCustomComponent(tag, rawProps); @@ -9884,8 +9891,8 @@ var require_react_dom_development = __commonJS({ } return updatePayload; } - function diffHydratedText(textNode, text, isConcurrentMode) { - var isDifferent = textNode.nodeValue !== text; + function diffHydratedText(textNode, text2, isConcurrentMode) { + var isDifferent = textNode.nodeValue !== text2; return isDifferent; } function warnForDeletedHydratableElement(parentNode, child) { @@ -9915,16 +9922,16 @@ var require_react_dom_development = __commonJS({ error("Expected server HTML to contain a matching <%s> in <%s>.", tag, parentNode.nodeName.toLowerCase()); } } - function warnForInsertedHydratedText(parentNode, text) { + function warnForInsertedHydratedText(parentNode, text2) { { - if (text === "") { + if (text2 === "") { return; } if (didWarnInvalidHydration) { return; } didWarnInvalidHydration = true; - error('Expected server HTML to contain a matching text node for "%s" in <%s>.', text, parentNode.nodeName.toLowerCase()); + error('Expected server HTML to contain a matching text node for "%s" in <%s>.', text2, parentNode.nodeName.toLowerCase()); } } function restoreControlledState$3(domElement, tag, props) { @@ -10261,7 +10268,7 @@ var require_react_dom_development = __commonJS({ } parentNamespace = hostContextDev.namespace; } - var domElement = createElement(type, props, rootContainerInstance, parentNamespace); + var domElement = createElement2(type, props, rootContainerInstance, parentNamespace); precacheFiberNode(internalInstanceHandle, domElement); updateFiberProps(domElement, props); return domElement; @@ -10297,12 +10304,12 @@ var require_react_dom_development = __commonJS({ function shouldSetTextContent(type, props) { return type === "textarea" || type === "noscript" || typeof props.children === "string" || typeof props.children === "number" || typeof props.dangerouslySetInnerHTML === "object" && props.dangerouslySetInnerHTML !== null && props.dangerouslySetInnerHTML.__html != null; } - function createTextInstance(text, rootContainerInstance, hostContext, internalInstanceHandle) { + function createTextInstance(text2, rootContainerInstance, hostContext, internalInstanceHandle) { { var hostContextDev = hostContext; - validateDOMNesting(null, text, hostContextDev.ancestorInfo); + validateDOMNesting(null, text2, hostContextDev.ancestorInfo); } - var textNode = createTextNode(text, rootContainerInstance); + var textNode = createTextNode(text2, rootContainerInstance); precacheFiberNode(internalInstanceHandle, textNode); return textNode; } @@ -10440,8 +10447,8 @@ var require_react_dom_development = __commonJS({ var display = styleProp !== void 0 && styleProp !== null && styleProp.hasOwnProperty("display") ? styleProp.display : null; instance.style.display = dangerousStyleValue("display", display); } - function unhideTextInstance(textInstance, text) { - textInstance.nodeValue = text; + function unhideTextInstance(textInstance, text2) { + textInstance.nodeValue = text2; } function clearContainer(container) { if (container.nodeType === ELEMENT_NODE) { @@ -10458,8 +10465,8 @@ var require_react_dom_development = __commonJS({ } return instance; } - function canHydrateTextInstance(instance, text) { - if (text === "" || instance.nodeType !== TEXT_NODE) { + function canHydrateTextInstance(instance, text2) { + if (text2 === "" || instance.nodeType !== TEXT_NODE) { return null; } return instance; @@ -10538,10 +10545,10 @@ var require_react_dom_development = __commonJS({ var isConcurrentMode = (internalInstanceHandle.mode & ConcurrentMode) !== NoMode; return diffHydratedProperties(instance, type, props, parentNamespace, rootContainerInstance, isConcurrentMode, shouldWarnDev); } - function hydrateTextInstance(textInstance, text, internalInstanceHandle, shouldWarnDev) { + function hydrateTextInstance(textInstance, text2, internalInstanceHandle, shouldWarnDev) { precacheFiberNode(internalInstanceHandle, textInstance); (internalInstanceHandle.mode & ConcurrentMode) !== NoMode; - return diffHydratedText(textInstance, text); + return diffHydratedText(textInstance, text2); } function hydrateSuspenseInstance(suspenseInstance, internalInstanceHandle) { precacheFiberNode(internalInstanceHandle, suspenseInstance); @@ -10595,14 +10602,14 @@ var require_react_dom_development = __commonJS({ function shouldDeleteUnhydratedTailInstances(parentType) { return parentType !== "head" && parentType !== "body"; } - function didNotMatchHydratedContainerTextInstance(parentContainer, textInstance, text, isConcurrentMode) { + function didNotMatchHydratedContainerTextInstance(parentContainer, textInstance, text2, isConcurrentMode) { var shouldWarnDev = true; - checkForUnmatchedText(textInstance.nodeValue, text, isConcurrentMode, shouldWarnDev); + checkForUnmatchedText(textInstance.nodeValue, text2, isConcurrentMode, shouldWarnDev); } - function didNotMatchHydratedTextInstance(parentType, parentProps, parentInstance, textInstance, text, isConcurrentMode) { + function didNotMatchHydratedTextInstance(parentType, parentProps, parentInstance, textInstance, text2, isConcurrentMode) { if (parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) { var shouldWarnDev = true; - checkForUnmatchedText(textInstance.nodeValue, text, isConcurrentMode, shouldWarnDev); + checkForUnmatchedText(textInstance.nodeValue, text2, isConcurrentMode, shouldWarnDev); } } function didNotHydrateInstanceWithinContainer(parentContainer, instance) { @@ -10645,9 +10652,9 @@ var require_react_dom_development = __commonJS({ warnForInsertedHydratedElement(parentContainer, type); } } - function didNotFindHydratableTextInstanceWithinContainer(parentContainer, text) { + function didNotFindHydratableTextInstanceWithinContainer(parentContainer, text2) { { - warnForInsertedHydratedText(parentContainer, text); + warnForInsertedHydratedText(parentContainer, text2); } } function didNotFindHydratableInstanceWithinSuspenseInstance(parentInstance, type, props) { @@ -10656,10 +10663,10 @@ var require_react_dom_development = __commonJS({ if (parentNode !== null) warnForInsertedHydratedElement(parentNode, type); } } - function didNotFindHydratableTextInstanceWithinSuspenseInstance(parentInstance, text) { + function didNotFindHydratableTextInstanceWithinSuspenseInstance(parentInstance, text2) { { var parentNode = parentInstance.parentNode; - if (parentNode !== null) warnForInsertedHydratedText(parentNode, text); + if (parentNode !== null) warnForInsertedHydratedText(parentNode, text2); } } function didNotFindHydratableInstance(parentType, parentProps, parentInstance, type, props, isConcurrentMode) { @@ -10669,10 +10676,10 @@ var require_react_dom_development = __commonJS({ } } } - function didNotFindHydratableTextInstance(parentType, parentProps, parentInstance, text, isConcurrentMode) { + function didNotFindHydratableTextInstance(parentType, parentProps, parentInstance, text2, isConcurrentMode) { { if (isConcurrentMode || parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) { - warnForInsertedHydratedText(parentInstance, text); + warnForInsertedHydratedText(parentInstance, text2); } } } @@ -10782,7 +10789,7 @@ var require_react_dom_development = __commonJS({ } function checkPropTypes(typeSpecs, values, location, componentName, element) { { - var has2 = Function.call.bind(hasOwnProperty); + var has2 = Function.call.bind(hasOwnProperty2); for (var typeSpecName in typeSpecs) { if (has2(typeSpecs, typeSpecName)) { var error$1 = void 0; @@ -11082,8 +11089,8 @@ var require_react_dom_development = __commonJS({ function getTreeId() { var overflow = treeContextOverflow; var idWithLeadingBit = treeContextId; - var id = idWithLeadingBit & ~getLeadingBit(idWithLeadingBit); - return id.toString(32) + overflow; + var id2 = idWithLeadingBit & ~getLeadingBit(idWithLeadingBit); + return id2.toString(32) + overflow; } function pushTreeFork(workInProgress2, totalChildren) { warnIfNotHydrating(); @@ -11112,9 +11119,9 @@ var require_react_dom_development = __commonJS({ var restOfBaseLength = baseLength - numberOfOverflowBits; var restOfLength = getBitLength(totalChildren) + restOfBaseLength; var restOfNewBits = slot << restOfBaseLength; - var id = restOfNewBits | restOfBaseId; + var id2 = restOfNewBits | restOfBaseId; var overflow = newOverflow + baseOverflow; - treeContextId = 1 << restOfLength | id; + treeContextId = 1 << restOfLength | id2; treeContextOverflow = overflow; } else { var newBits = slot << baseLength; @@ -11137,8 +11144,8 @@ var require_react_dom_development = __commonJS({ function getBitLength(number) { return 32 - clz32(number); } - function getLeadingBit(id) { - return 1 << getBitLength(id) - 1; + function getLeadingBit(id2) { + return 1 << getBitLength(id2) - 1; } function popTreeContext(workInProgress2) { while (workInProgress2 === treeForkProvider) { @@ -11280,8 +11287,8 @@ var require_react_dom_development = __commonJS({ didNotFindHydratableInstanceWithinContainer(parentContainer, type); break; case HostText: - var text = fiber.pendingProps; - didNotFindHydratableTextInstanceWithinContainer(parentContainer, text); + var text2 = fiber.pendingProps; + didNotFindHydratableTextInstanceWithinContainer(parentContainer, text2); break; } break; @@ -11362,8 +11369,8 @@ var require_react_dom_development = __commonJS({ return false; } case HostText: { - var text = fiber.pendingProps; - var textInstance = canHydrateTextInstance(nextInstance, text); + var text2 = fiber.pendingProps; + var textInstance = canHydrateTextInstance(nextInstance, text2); if (textInstance !== null) { fiber.stateNode = textInstance; hydrationParentFiber = fiber; @@ -11914,10 +11921,10 @@ var require_react_dom_development = __commonJS({ return existingChildren; } function useFiber(fiber, pendingProps) { - var clone = createWorkInProgress(fiber, pendingProps); - clone.index = 0; - clone.sibling = null; - return clone; + var clone2 = createWorkInProgress(fiber, pendingProps); + clone2.index = 0; + clone2.sibling = null; + return clone2; } function placeChild(newFiber, lastPlacedIndex, newIndex) { newFiber.index = newIndex; @@ -12863,14 +12870,14 @@ var require_react_dom_development = __commonJS({ var queue = workInProgress2.updateQueue; var currentQueue = current2.updateQueue; if (queue === currentQueue) { - var clone = { + var clone2 = { baseState: currentQueue.baseState, firstBaseUpdate: currentQueue.firstBaseUpdate, lastBaseUpdate: currentQueue.lastBaseUpdate, shared: currentQueue.shared, effects: currentQueue.effects }; - workInProgress2.updateQueue = clone; + workInProgress2.updateQueue = clone2; } } function createUpdate(eventTime, lane) { @@ -12936,7 +12943,7 @@ var require_react_dom_development = __commonJS({ if (firstBaseUpdate !== null) { var update = firstBaseUpdate; do { - var clone = { + var clone2 = { eventTime: update.eventTime, lane: update.lane, tag: update.tag, @@ -12945,10 +12952,10 @@ var require_react_dom_development = __commonJS({ next: null }; if (newLast === null) { - newFirst = newLast = clone; + newFirst = newLast = clone2; } else { - newLast.next = clone; - newLast = clone; + newLast.next = clone2; + newLast = clone2; } update = update.next; } while (update !== null); @@ -13087,7 +13094,7 @@ var require_react_dom_development = __commonJS({ var updateLane = update.lane; var updateEventTime = update.eventTime; if (!isSubsetOfLanes(renderLanes2, updateLane)) { - var clone = { + var clone2 = { eventTime: updateEventTime, lane: updateLane, tag: update.tag, @@ -13096,10 +13103,10 @@ var require_react_dom_development = __commonJS({ next: null }; if (newLastBaseUpdate === null) { - newFirstBaseUpdate = newLastBaseUpdate = clone; + newFirstBaseUpdate = newLastBaseUpdate = clone2; newBaseState = newState; } else { - newLastBaseUpdate = newLastBaseUpdate.next = clone; + newLastBaseUpdate = newLastBaseUpdate.next = clone2; } newLanes = mergeLanes(newLanes, updateLane); } else { @@ -13349,11 +13356,11 @@ var require_react_dom_development = __commonJS({ } function registerMutableSourceForHydration(root2, mutableSource) { var getVersion = mutableSource._getVersion; - var version = getVersion(mutableSource._source); + var version2 = getVersion(mutableSource._source); if (root2.mutableSourceEagerHydrationData == null) { - root2.mutableSourceEagerHydrationData = [mutableSource, version]; + root2.mutableSourceEagerHydrationData = [mutableSource, version2]; } else { - root2.mutableSourceEagerHydrationData.push(mutableSource, version); + root2.mutableSourceEagerHydrationData.push(mutableSource, version2); } } var ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher, ReactCurrentBatchConfig$2 = ReactSharedInternals.ReactCurrentBatchConfig; @@ -13687,7 +13694,7 @@ var require_react_dom_development = __commonJS({ do { var updateLane = update.lane; if (!isSubsetOfLanes(renderLanes, updateLane)) { - var clone = { + var clone2 = { lane: updateLane, action: update.action, hasEagerState: update.hasEagerState, @@ -13695,10 +13702,10 @@ var require_react_dom_development = __commonJS({ next: null }; if (newBaseQueueLast === null) { - newBaseQueueFirst = newBaseQueueLast = clone; + newBaseQueueFirst = newBaseQueueLast = clone2; newBaseState = newState; } else { - newBaseQueueLast = newBaseQueueLast.next = clone; + newBaseQueueLast = newBaseQueueLast.next = clone2; } currentlyRenderingFiber$1.lanes = mergeLanes(currentlyRenderingFiber$1.lanes, updateLane); markSkippedUpdateLanes(updateLane); @@ -13952,10 +13959,10 @@ var require_react_dom_development = __commonJS({ function rerenderState(initialState) { return rerenderReducer(basicStateReducer); } - function pushEffect(tag, create, destroy, deps) { + function pushEffect(tag, create2, destroy, deps) { var effect = { tag, - create, + create: create2, destroy, deps, // Circular @@ -13993,13 +14000,13 @@ var require_react_dom_development = __commonJS({ var hook = updateWorkInProgressHook(); return hook.memoizedState; } - function mountEffectImpl(fiberFlags, hookFlags, create, deps) { + function mountEffectImpl(fiberFlags, hookFlags, create2, deps) { var hook = mountWorkInProgressHook(); var nextDeps = deps === void 0 ? null : deps; currentlyRenderingFiber$1.flags |= fiberFlags; - hook.memoizedState = pushEffect(HasEffect | hookFlags, create, void 0, nextDeps); + hook.memoizedState = pushEffect(HasEffect | hookFlags, create2, void 0, nextDeps); } - function updateEffectImpl(fiberFlags, hookFlags, create, deps) { + function updateEffectImpl(fiberFlags, hookFlags, create2, deps) { var hook = updateWorkInProgressHook(); var nextDeps = deps === void 0 ? null : deps; var destroy = void 0; @@ -14009,31 +14016,31 @@ var require_react_dom_development = __commonJS({ if (nextDeps !== null) { var prevDeps = prevEffect.deps; if (areHookInputsEqual(nextDeps, prevDeps)) { - hook.memoizedState = pushEffect(hookFlags, create, destroy, nextDeps); + hook.memoizedState = pushEffect(hookFlags, create2, destroy, nextDeps); return; } } } currentlyRenderingFiber$1.flags |= fiberFlags; - hook.memoizedState = pushEffect(HasEffect | hookFlags, create, destroy, nextDeps); + hook.memoizedState = pushEffect(HasEffect | hookFlags, create2, destroy, nextDeps); } - function mountEffect(create, deps) { + function mountEffect(create2, deps) { if ((currentlyRenderingFiber$1.mode & StrictEffectsMode) !== NoMode) { - return mountEffectImpl(MountPassiveDev | Passive | PassiveStatic, Passive$1, create, deps); + return mountEffectImpl(MountPassiveDev | Passive | PassiveStatic, Passive$1, create2, deps); } else { - return mountEffectImpl(Passive | PassiveStatic, Passive$1, create, deps); + return mountEffectImpl(Passive | PassiveStatic, Passive$1, create2, deps); } } - function updateEffect(create, deps) { - return updateEffectImpl(Passive, Passive$1, create, deps); + function updateEffect(create2, deps) { + return updateEffectImpl(Passive, Passive$1, create2, deps); } - function mountInsertionEffect(create, deps) { - return mountEffectImpl(Update, Insertion, create, deps); + function mountInsertionEffect(create2, deps) { + return mountEffectImpl(Update, Insertion, create2, deps); } - function updateInsertionEffect(create, deps) { - return updateEffectImpl(Update, Insertion, create, deps); + function updateInsertionEffect(create2, deps) { + return updateEffectImpl(Update, Insertion, create2, deps); } - function mountLayoutEffect(create, deps) { + function mountLayoutEffect(create2, deps) { var fiberFlags = Update; { fiberFlags |= LayoutStatic; @@ -14041,15 +14048,15 @@ var require_react_dom_development = __commonJS({ if ((currentlyRenderingFiber$1.mode & StrictEffectsMode) !== NoMode) { fiberFlags |= MountLayoutDev; } - return mountEffectImpl(fiberFlags, Layout, create, deps); + return mountEffectImpl(fiberFlags, Layout, create2, deps); } - function updateLayoutEffect(create, deps) { - return updateEffectImpl(Update, Layout, create, deps); + function updateLayoutEffect(create2, deps) { + return updateEffectImpl(Update, Layout, create2, deps); } - function imperativeHandleEffect(create, ref) { + function imperativeHandleEffect(create2, ref) { if (typeof ref === "function") { var refCallback = ref; - var _inst = create(); + var _inst = create2(); refCallback(_inst); return function() { refCallback(null); @@ -14061,17 +14068,17 @@ var require_react_dom_development = __commonJS({ error("Expected useImperativeHandle() first argument to either be a ref callback or React.createRef() object. Instead received: %s.", "an object with keys {" + Object.keys(refObject).join(", ") + "}"); } } - var _inst2 = create(); + var _inst2 = create2(); refObject.current = _inst2; return function() { refObject.current = null; }; } } - function mountImperativeHandle(ref, create, deps) { + function mountImperativeHandle(ref, create2, deps) { { - if (typeof create !== "function") { - error("Expected useImperativeHandle() second argument to be a function that creates a handle. Instead received: %s.", create !== null ? typeof create : "null"); + if (typeof create2 !== "function") { + error("Expected useImperativeHandle() second argument to be a function that creates a handle. Instead received: %s.", create2 !== null ? typeof create2 : "null"); } } var effectDeps = deps !== null && deps !== void 0 ? deps.concat([ref]) : null; @@ -14082,16 +14089,16 @@ var require_react_dom_development = __commonJS({ if ((currentlyRenderingFiber$1.mode & StrictEffectsMode) !== NoMode) { fiberFlags |= MountLayoutDev; } - return mountEffectImpl(fiberFlags, Layout, imperativeHandleEffect.bind(null, create, ref), effectDeps); + return mountEffectImpl(fiberFlags, Layout, imperativeHandleEffect.bind(null, create2, ref), effectDeps); } - function updateImperativeHandle(ref, create, deps) { + function updateImperativeHandle(ref, create2, deps) { { - if (typeof create !== "function") { - error("Expected useImperativeHandle() second argument to be a function that creates a handle. Instead received: %s.", create !== null ? typeof create : "null"); + if (typeof create2 !== "function") { + error("Expected useImperativeHandle() second argument to be a function that creates a handle. Instead received: %s.", create2 !== null ? typeof create2 : "null"); } } var effectDeps = deps !== null && deps !== void 0 ? deps.concat([ref]) : null; - return updateEffectImpl(Update, Layout, imperativeHandleEffect.bind(null, create, ref), effectDeps); + return updateEffectImpl(Update, Layout, imperativeHandleEffect.bind(null, create2, ref), effectDeps); } function mountDebugValue(value, formatterFn) { } @@ -14180,7 +14187,7 @@ var require_react_dom_development = __commonJS({ return value; } } - function startTransition(setPending, callback, options2) { + function startTransition(setPending, callback, options3) { var previousPriority = getCurrentUpdatePriority(); setCurrentUpdatePriority(higherEventPriority(previousPriority, ContinuousEventPriority)); setPending(true); @@ -14236,26 +14243,26 @@ var require_react_dom_development = __commonJS({ var hook = mountWorkInProgressHook(); var root2 = getWorkInProgressRoot(); var identifierPrefix = root2.identifierPrefix; - var id; + var id2; if (getIsHydrating()) { var treeId = getTreeId(); - id = ":" + identifierPrefix + "R" + treeId; + id2 = ":" + identifierPrefix + "R" + treeId; var localId = localIdCounter++; if (localId > 0) { - id += "H" + localId.toString(32); + id2 += "H" + localId.toString(32); } - id += ":"; + id2 += ":"; } else { var globalClientId = globalClientIdCounter++; - id = ":" + identifierPrefix + "r" + globalClientId.toString(32) + ":"; + id2 = ":" + identifierPrefix + "r" + globalClientId.toString(32) + ":"; } - hook.memoizedState = id; - return id; + hook.memoizedState = id2; + return id2; } function updateId() { var hook = updateWorkInProgressHook(); - var id = hook.memoizedState; - return id; + var id2 = hook.memoizedState; + return id2; } function dispatchReducerAction(fiber, queue, action) { { @@ -14413,38 +14420,38 @@ var require_react_dom_development = __commonJS({ mountHookTypesDev(); return readContext(context); }, - useEffect: function(create, deps) { + useEffect: function(create2, deps) { currentHookNameInDev = "useEffect"; mountHookTypesDev(); checkDepsAreArrayDev(deps); - return mountEffect(create, deps); + return mountEffect(create2, deps); }, - useImperativeHandle: function(ref, create, deps) { + useImperativeHandle: function(ref, create2, deps) { currentHookNameInDev = "useImperativeHandle"; mountHookTypesDev(); checkDepsAreArrayDev(deps); - return mountImperativeHandle(ref, create, deps); + return mountImperativeHandle(ref, create2, deps); }, - useInsertionEffect: function(create, deps) { + useInsertionEffect: function(create2, deps) { currentHookNameInDev = "useInsertionEffect"; mountHookTypesDev(); checkDepsAreArrayDev(deps); - return mountInsertionEffect(create, deps); + return mountInsertionEffect(create2, deps); }, - useLayoutEffect: function(create, deps) { + useLayoutEffect: function(create2, deps) { currentHookNameInDev = "useLayoutEffect"; mountHookTypesDev(); checkDepsAreArrayDev(deps); - return mountLayoutEffect(create, deps); + return mountLayoutEffect(create2, deps); }, - useMemo: function(create, deps) { + useMemo: function(create2, deps) { currentHookNameInDev = "useMemo"; mountHookTypesDev(); checkDepsAreArrayDev(deps); var prevDispatcher = ReactCurrentDispatcher$1.current; ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV; try { - return mountMemo(create, deps); + return mountMemo(create2, deps); } finally { ReactCurrentDispatcher$1.current = prevDispatcher; } @@ -14522,33 +14529,33 @@ var require_react_dom_development = __commonJS({ updateHookTypesDev(); return readContext(context); }, - useEffect: function(create, deps) { + useEffect: function(create2, deps) { currentHookNameInDev = "useEffect"; updateHookTypesDev(); - return mountEffect(create, deps); + return mountEffect(create2, deps); }, - useImperativeHandle: function(ref, create, deps) { + useImperativeHandle: function(ref, create2, deps) { currentHookNameInDev = "useImperativeHandle"; updateHookTypesDev(); - return mountImperativeHandle(ref, create, deps); + return mountImperativeHandle(ref, create2, deps); }, - useInsertionEffect: function(create, deps) { + useInsertionEffect: function(create2, deps) { currentHookNameInDev = "useInsertionEffect"; updateHookTypesDev(); - return mountInsertionEffect(create, deps); + return mountInsertionEffect(create2, deps); }, - useLayoutEffect: function(create, deps) { + useLayoutEffect: function(create2, deps) { currentHookNameInDev = "useLayoutEffect"; updateHookTypesDev(); - return mountLayoutEffect(create, deps); + return mountLayoutEffect(create2, deps); }, - useMemo: function(create, deps) { + useMemo: function(create2, deps) { currentHookNameInDev = "useMemo"; updateHookTypesDev(); var prevDispatcher = ReactCurrentDispatcher$1.current; ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV; try { - return mountMemo(create, deps); + return mountMemo(create2, deps); } finally { ReactCurrentDispatcher$1.current = prevDispatcher; } @@ -14626,33 +14633,33 @@ var require_react_dom_development = __commonJS({ updateHookTypesDev(); return readContext(context); }, - useEffect: function(create, deps) { + useEffect: function(create2, deps) { currentHookNameInDev = "useEffect"; updateHookTypesDev(); - return updateEffect(create, deps); + return updateEffect(create2, deps); }, - useImperativeHandle: function(ref, create, deps) { + useImperativeHandle: function(ref, create2, deps) { currentHookNameInDev = "useImperativeHandle"; updateHookTypesDev(); - return updateImperativeHandle(ref, create, deps); + return updateImperativeHandle(ref, create2, deps); }, - useInsertionEffect: function(create, deps) { + useInsertionEffect: function(create2, deps) { currentHookNameInDev = "useInsertionEffect"; updateHookTypesDev(); - return updateInsertionEffect(create, deps); + return updateInsertionEffect(create2, deps); }, - useLayoutEffect: function(create, deps) { + useLayoutEffect: function(create2, deps) { currentHookNameInDev = "useLayoutEffect"; updateHookTypesDev(); - return updateLayoutEffect(create, deps); + return updateLayoutEffect(create2, deps); }, - useMemo: function(create, deps) { + useMemo: function(create2, deps) { currentHookNameInDev = "useMemo"; updateHookTypesDev(); var prevDispatcher = ReactCurrentDispatcher$1.current; ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV; try { - return updateMemo(create, deps); + return updateMemo(create2, deps); } finally { ReactCurrentDispatcher$1.current = prevDispatcher; } @@ -14730,33 +14737,33 @@ var require_react_dom_development = __commonJS({ updateHookTypesDev(); return readContext(context); }, - useEffect: function(create, deps) { + useEffect: function(create2, deps) { currentHookNameInDev = "useEffect"; updateHookTypesDev(); - return updateEffect(create, deps); + return updateEffect(create2, deps); }, - useImperativeHandle: function(ref, create, deps) { + useImperativeHandle: function(ref, create2, deps) { currentHookNameInDev = "useImperativeHandle"; updateHookTypesDev(); - return updateImperativeHandle(ref, create, deps); + return updateImperativeHandle(ref, create2, deps); }, - useInsertionEffect: function(create, deps) { + useInsertionEffect: function(create2, deps) { currentHookNameInDev = "useInsertionEffect"; updateHookTypesDev(); - return updateInsertionEffect(create, deps); + return updateInsertionEffect(create2, deps); }, - useLayoutEffect: function(create, deps) { + useLayoutEffect: function(create2, deps) { currentHookNameInDev = "useLayoutEffect"; updateHookTypesDev(); - return updateLayoutEffect(create, deps); + return updateLayoutEffect(create2, deps); }, - useMemo: function(create, deps) { + useMemo: function(create2, deps) { currentHookNameInDev = "useMemo"; updateHookTypesDev(); var prevDispatcher = ReactCurrentDispatcher$1.current; ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnRerenderInDEV; try { - return updateMemo(create, deps); + return updateMemo(create2, deps); } finally { ReactCurrentDispatcher$1.current = prevDispatcher; } @@ -14837,38 +14844,38 @@ var require_react_dom_development = __commonJS({ mountHookTypesDev(); return readContext(context); }, - useEffect: function(create, deps) { + useEffect: function(create2, deps) { currentHookNameInDev = "useEffect"; warnInvalidHookAccess(); mountHookTypesDev(); - return mountEffect(create, deps); + return mountEffect(create2, deps); }, - useImperativeHandle: function(ref, create, deps) { + useImperativeHandle: function(ref, create2, deps) { currentHookNameInDev = "useImperativeHandle"; warnInvalidHookAccess(); mountHookTypesDev(); - return mountImperativeHandle(ref, create, deps); + return mountImperativeHandle(ref, create2, deps); }, - useInsertionEffect: function(create, deps) { + useInsertionEffect: function(create2, deps) { currentHookNameInDev = "useInsertionEffect"; warnInvalidHookAccess(); mountHookTypesDev(); - return mountInsertionEffect(create, deps); + return mountInsertionEffect(create2, deps); }, - useLayoutEffect: function(create, deps) { + useLayoutEffect: function(create2, deps) { currentHookNameInDev = "useLayoutEffect"; warnInvalidHookAccess(); mountHookTypesDev(); - return mountLayoutEffect(create, deps); + return mountLayoutEffect(create2, deps); }, - useMemo: function(create, deps) { + useMemo: function(create2, deps) { currentHookNameInDev = "useMemo"; warnInvalidHookAccess(); mountHookTypesDev(); var prevDispatcher = ReactCurrentDispatcher$1.current; ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV; try { - return mountMemo(create, deps); + return mountMemo(create2, deps); } finally { ReactCurrentDispatcher$1.current = prevDispatcher; } @@ -14958,38 +14965,38 @@ var require_react_dom_development = __commonJS({ updateHookTypesDev(); return readContext(context); }, - useEffect: function(create, deps) { + useEffect: function(create2, deps) { currentHookNameInDev = "useEffect"; warnInvalidHookAccess(); updateHookTypesDev(); - return updateEffect(create, deps); + return updateEffect(create2, deps); }, - useImperativeHandle: function(ref, create, deps) { + useImperativeHandle: function(ref, create2, deps) { currentHookNameInDev = "useImperativeHandle"; warnInvalidHookAccess(); updateHookTypesDev(); - return updateImperativeHandle(ref, create, deps); + return updateImperativeHandle(ref, create2, deps); }, - useInsertionEffect: function(create, deps) { + useInsertionEffect: function(create2, deps) { currentHookNameInDev = "useInsertionEffect"; warnInvalidHookAccess(); updateHookTypesDev(); - return updateInsertionEffect(create, deps); + return updateInsertionEffect(create2, deps); }, - useLayoutEffect: function(create, deps) { + useLayoutEffect: function(create2, deps) { currentHookNameInDev = "useLayoutEffect"; warnInvalidHookAccess(); updateHookTypesDev(); - return updateLayoutEffect(create, deps); + return updateLayoutEffect(create2, deps); }, - useMemo: function(create, deps) { + useMemo: function(create2, deps) { currentHookNameInDev = "useMemo"; warnInvalidHookAccess(); updateHookTypesDev(); var prevDispatcher = ReactCurrentDispatcher$1.current; ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV; try { - return updateMemo(create, deps); + return updateMemo(create2, deps); } finally { ReactCurrentDispatcher$1.current = prevDispatcher; } @@ -15079,38 +15086,38 @@ var require_react_dom_development = __commonJS({ updateHookTypesDev(); return readContext(context); }, - useEffect: function(create, deps) { + useEffect: function(create2, deps) { currentHookNameInDev = "useEffect"; warnInvalidHookAccess(); updateHookTypesDev(); - return updateEffect(create, deps); + return updateEffect(create2, deps); }, - useImperativeHandle: function(ref, create, deps) { + useImperativeHandle: function(ref, create2, deps) { currentHookNameInDev = "useImperativeHandle"; warnInvalidHookAccess(); updateHookTypesDev(); - return updateImperativeHandle(ref, create, deps); + return updateImperativeHandle(ref, create2, deps); }, - useInsertionEffect: function(create, deps) { + useInsertionEffect: function(create2, deps) { currentHookNameInDev = "useInsertionEffect"; warnInvalidHookAccess(); updateHookTypesDev(); - return updateInsertionEffect(create, deps); + return updateInsertionEffect(create2, deps); }, - useLayoutEffect: function(create, deps) { + useLayoutEffect: function(create2, deps) { currentHookNameInDev = "useLayoutEffect"; warnInvalidHookAccess(); updateHookTypesDev(); - return updateLayoutEffect(create, deps); + return updateLayoutEffect(create2, deps); }, - useMemo: function(create, deps) { + useMemo: function(create2, deps) { currentHookNameInDev = "useMemo"; warnInvalidHookAccess(); updateHookTypesDev(); var prevDispatcher = ReactCurrentDispatcher$1.current; ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV; try { - return updateMemo(create, deps); + return updateMemo(create2, deps); } finally { ReactCurrentDispatcher$1.current = prevDispatcher; } @@ -16334,9 +16341,9 @@ var require_react_dom_development = __commonJS({ var hasScheduledUpdateOrContext = checkScheduledUpdateOrContext(current2, renderLanes2); if (!hasScheduledUpdateOrContext) { var prevProps = currentChild.memoizedProps; - var compare = Component.compare; - compare = compare !== null ? compare : shallowEqual; - if (compare(prevProps, nextProps) && current2.ref === workInProgress2.ref) { + var compare2 = Component.compare; + compare2 = compare2 !== null ? compare2 : shallowEqual; + if (compare2(prevProps, nextProps) && current2.ref === workInProgress2.ref) { return bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2); } } @@ -17434,7 +17441,7 @@ var require_react_dom_development = __commonJS({ } } } - function initSuspenseListRenderState(workInProgress2, isBackwards, tail, lastContentRow, tailMode) { + function initSuspenseListRenderState(workInProgress2, isBackwards, tail2, lastContentRow, tailMode) { var renderState = workInProgress2.memoizedState; if (renderState === null) { workInProgress2.memoizedState = { @@ -17442,7 +17449,7 @@ var require_react_dom_development = __commonJS({ rendering: null, renderingStartTime: 0, last: lastContentRow, - tail, + tail: tail2, tailMode }; } else { @@ -17450,7 +17457,7 @@ var require_react_dom_development = __commonJS({ renderState.rendering = null; renderState.renderingStartTime = 0; renderState.last = lastContentRow; - renderState.tail = tail; + renderState.tail = tail2; renderState.tailMode = tailMode; } } @@ -17482,19 +17489,19 @@ var require_react_dom_development = __commonJS({ switch (revealOrder) { case "forwards": { var lastContentRow = findLastContentRow(workInProgress2.child); - var tail; + var tail2; if (lastContentRow === null) { - tail = workInProgress2.child; + tail2 = workInProgress2.child; workInProgress2.child = null; } else { - tail = lastContentRow.sibling; + tail2 = lastContentRow.sibling; lastContentRow.sibling = null; } initSuspenseListRenderState( workInProgress2, false, // isBackwards - tail, + tail2, lastContentRow, tailMode ); @@ -18831,13 +18838,13 @@ var require_react_dom_development = __commonJS({ markComponentLayoutEffectMountStarted(finishedWork); } } - var create = effect.create; + var create2 = effect.create; { if ((flags & Insertion) !== NoFlags$1) { setIsRunningInsertionEffect(true); } } - effect.destroy = create(); + effect.destroy = create2(); { if ((flags & Insertion) !== NoFlags$1) { setIsRunningInsertionEffect(false); @@ -18883,7 +18890,7 @@ var require_react_dom_development = __commonJS({ switch (finishedWork.tag) { case Profiler: { var passiveEffectDuration = finishedWork.stateNode.passiveEffectDuration; - var _finishedWork$memoize = finishedWork.memoizedProps, id = _finishedWork$memoize.id, onPostCommit = _finishedWork$memoize.onPostCommit; + var _finishedWork$memoize = finishedWork.memoizedProps, id2 = _finishedWork$memoize.id, onPostCommit = _finishedWork$memoize.onPostCommit; var commitTime2 = getCommitTime(); var phase = finishedWork.alternate === null ? "mount" : "update"; { @@ -18892,7 +18899,7 @@ var require_react_dom_development = __commonJS({ } } if (typeof onPostCommit === "function") { - onPostCommit(id, phase, passiveEffectDuration, commitTime2); + onPostCommit(id2, phase, passiveEffectDuration, commitTime2); } var parentFiber = finishedWork.return; outer: while (parentFiber !== null) { @@ -22873,16 +22880,16 @@ var require_react_dom_development = __commonJS({ var copyWithSet = function(obj, path, value) { return copyWithSetImpl(obj, path, 0, value); }; - var findHook = function(fiber, id) { + var findHook = function(fiber, id2) { var currentHook2 = fiber.memoizedState; - while (currentHook2 !== null && id > 0) { + while (currentHook2 !== null && id2 > 0) { currentHook2 = currentHook2.next; - id--; + id2--; } return currentHook2; }; - overrideHookState = function(fiber, id, path, value) { - var hook = findHook(fiber, id); + overrideHookState = function(fiber, id2, path, value) { + var hook = findHook(fiber, id2); if (hook !== null) { var newState = copyWithSet(hook.memoizedState, path, value); hook.memoizedState = newState; @@ -22894,8 +22901,8 @@ var require_react_dom_development = __commonJS({ } } }; - overrideHookStateDeletePath = function(fiber, id, path) { - var hook = findHook(fiber, id); + overrideHookStateDeletePath = function(fiber, id2, path) { + var hook = findHook(fiber, id2); if (hook !== null) { var newState = copyWithDelete(hook.memoizedState, path); hook.memoizedState = newState; @@ -22907,8 +22914,8 @@ var require_react_dom_development = __commonJS({ } } }; - overrideHookStateRenamePath = function(fiber, id, oldPath, newPath) { - var hook = findHook(fiber, id); + overrideHookStateRenamePath = function(fiber, id2, oldPath, newPath) { + var hook = findHook(fiber, id2); if (hook !== null) { var newState = copyWithRename(hook.memoizedState, oldPath, newPath); hook.memoizedState = newState; @@ -23064,7 +23071,7 @@ var require_react_dom_development = __commonJS({ unmarkContainerAsRoot(container); } }; - function createRoot2(container, options2) { + function createRoot2(container, options3) { if (!isValidContainer(container)) { throw new Error("createRoot(...): Target container is not a DOM element."); } @@ -23073,27 +23080,27 @@ var require_react_dom_development = __commonJS({ var concurrentUpdatesByDefaultOverride = false; var identifierPrefix = ""; var onRecoverableError = defaultOnRecoverableError; - if (options2 !== null && options2 !== void 0) { + if (options3 !== null && options3 !== void 0) { { - if (options2.hydrate) { + if (options3.hydrate) { warn("hydrate through createRoot is deprecated. Use ReactDOMClient.hydrateRoot(container, ) instead."); } else { - if (typeof options2 === "object" && options2 !== null && options2.$$typeof === REACT_ELEMENT_TYPE) { + if (typeof options3 === "object" && options3 !== null && options3.$$typeof === REACT_ELEMENT_TYPE) { error("You passed a JSX element to createRoot. You probably meant to call root.render instead. Example usage:\n\n let root = createRoot(domContainer);\n root.render();"); } } } - if (options2.unstable_strictMode === true) { + if (options3.unstable_strictMode === true) { isStrictMode = true; } - if (options2.identifierPrefix !== void 0) { - identifierPrefix = options2.identifierPrefix; + if (options3.identifierPrefix !== void 0) { + identifierPrefix = options3.identifierPrefix; } - if (options2.onRecoverableError !== void 0) { - onRecoverableError = options2.onRecoverableError; + if (options3.onRecoverableError !== void 0) { + onRecoverableError = options3.onRecoverableError; } - if (options2.transitionCallbacks !== void 0) { - options2.transitionCallbacks; + if (options3.transitionCallbacks !== void 0) { + options3.transitionCallbacks; } } var root2 = createContainer(container, ConcurrentRoot, null, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError); @@ -23111,7 +23118,7 @@ var require_react_dom_development = __commonJS({ } } ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = scheduleHydration; - function hydrateRoot(container, initialChildren, options2) { + function hydrateRoot(container, initialChildren, options3) { if (!isValidContainer(container)) { throw new Error("hydrateRoot(...): Target container is not a DOM element."); } @@ -23121,21 +23128,21 @@ var require_react_dom_development = __commonJS({ error("Must provide initial children as second argument to hydrateRoot. Example usage: hydrateRoot(domContainer, )"); } } - var hydrationCallbacks = options2 != null ? options2 : null; - var mutableSources = options2 != null && options2.hydratedSources || null; + var hydrationCallbacks = options3 != null ? options3 : null; + var mutableSources = options3 != null && options3.hydratedSources || null; var isStrictMode = false; var concurrentUpdatesByDefaultOverride = false; var identifierPrefix = ""; var onRecoverableError = defaultOnRecoverableError; - if (options2 !== null && options2 !== void 0) { - if (options2.unstable_strictMode === true) { + if (options3 !== null && options3 !== void 0) { + if (options3.unstable_strictMode === true) { isStrictMode = true; } - if (options2.identifierPrefix !== void 0) { - identifierPrefix = options2.identifierPrefix; + if (options3.identifierPrefix !== void 0) { + identifierPrefix = options3.identifierPrefix; } - if (options2.onRecoverableError !== void 0) { - onRecoverableError = options2.onRecoverableError; + if (options3.onRecoverableError !== void 0) { + onRecoverableError = options3.onRecoverableError; } } var root2 = createHydrationContainer(initialChildren, null, container, ConcurrentRoot, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError); @@ -23440,21 +23447,21 @@ var require_react_dom_development = __commonJS({ // This is an array for better minification. Events: [getInstanceFromNode, getNodeFromInstance, getFiberCurrentPropsFromNode, enqueueStateRestore, restoreStateIfNeeded, batchedUpdates$1] }; - function createRoot$1(container, options2) { + function createRoot$1(container, options3) { { if (!Internals.usingClientEntryPoint && true) { error('You are importing createRoot from "react-dom" which is not supported. You should instead import it from "react-dom/client".'); } } - return createRoot2(container, options2); + return createRoot2(container, options3); } - function hydrateRoot$1(container, initialChildren, options2) { + function hydrateRoot$1(container, initialChildren, options3) { { if (!Internals.usingClientEntryPoint && true) { error('You are importing hydrateRoot from "react-dom" which is not supported. You should instead import it from "react-dom/client".'); } } - return hydrateRoot(container, initialChildren, options2); + return hydrateRoot(container, initialChildren, options3); } function flushSync$1(fn) { { @@ -23480,18 +23487,18 @@ var require_react_dom_development = __commonJS({ } } } - exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = Internals; - exports.createPortal = createPortal$1; - exports.createRoot = createRoot$1; - exports.findDOMNode = findDOMNode; - exports.flushSync = flushSync$1; - exports.hydrate = hydrate; - exports.hydrateRoot = hydrateRoot$1; - exports.render = render; - exports.unmountComponentAtNode = unmountComponentAtNode; - exports.unstable_batchedUpdates = batchedUpdates$1; - exports.unstable_renderSubtreeIntoContainer = renderSubtreeIntoContainer; - exports.version = ReactVersion; + exports2.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = Internals; + exports2.createPortal = createPortal$1; + exports2.createRoot = createRoot$1; + exports2.findDOMNode = findDOMNode; + exports2.flushSync = flushSync$1; + exports2.hydrate = hydrate; + exports2.hydrateRoot = hydrateRoot$1; + exports2.render = render; + exports2.unmountComponentAtNode = unmountComponentAtNode; + exports2.unstable_batchedUpdates = batchedUpdates$1; + exports2.unstable_renderSubtreeIntoContainer = renderSubtreeIntoContainer; + exports2.version = ReactVersion; if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop === "function") { __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error()); } @@ -23502,20 +23509,20 @@ var require_react_dom_development = __commonJS({ // ../../../../../../../node_modules/react-dom/index.js var require_react_dom = __commonJS({ - "../../../../../../../node_modules/react-dom/index.js"(exports, module) { + "../../../../../../../node_modules/react-dom/index.js"(exports2, module3) { { - module.exports = require_react_dom_development(); + module3.exports = require_react_dom_development(); } } }); // ../../../../../../../node_modules/react-dom/client.js var require_client = __commonJS({ - "../../../../../../../node_modules/react-dom/client.js"(exports) { + "../../../../../../../node_modules/react-dom/client.js"(exports2) { var m = require_react_dom(); { i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; - exports.createRoot = function(c, o) { + exports2.createRoot = function(c, o) { i.usingClientEntryPoint = true; try { return m.createRoot(c, o); @@ -23523,10 +23530,10 @@ var require_client = __commonJS({ i.usingClientEntryPoint = false; } }; - exports.hydrateRoot = function(c, h, o) { + exports2.hydrateRoot = function(c, h2, o) { i.usingClientEntryPoint = true; try { - return m.hydrateRoot(c, h, o); + return m.hydrateRoot(c, h2, o); } finally { i.usingClientEntryPoint = false; } @@ -23550,6 +23557,33696 @@ var mountFnGenerator = (Component) => (rootElement, accessor) => { const root = ReactDOM.createRoot(rootElement); root.render(/* @__PURE__ */ import_react.default.createElement(Component, { accessor })); }; + +// ../../../../../nls.messages.ts +function getNLSMessages() { + return globalThis._VSCODE_NLS_MESSAGES; +} +function getNLSLanguage() { + return globalThis._VSCODE_NLS_LANGUAGE; +} + +// ../../../../../nls.ts +var isPseudo = getNLSLanguage() === "pseudo" || typeof document !== "undefined" && document.location && typeof document.location.hash === "string" && document.location.hash.indexOf("pseudo=true") >= 0; +function _format(message, args) { + let result; + if (args.length === 0) { + result = message; + } else { + result = message.replace(/\{(\d+)\}/g, (match, rest) => { + const index = rest[0]; + const arg = args[index]; + let result2 = match; + if (typeof arg === "string") { + result2 = arg; + } else if (typeof arg === "number" || typeof arg === "boolean" || arg === void 0 || arg === null) { + result2 = String(arg); + } + return result2; + }); + } + if (isPseudo) { + result = "\uFF3B" + result.replace(/[aouei]/g, "$&$&") + "\uFF3D"; + } + return result; +} +function localize(data, message, ...args) { + if (typeof data === "number") { + return _format(lookupMessage(data, message), args); + } + return _format(message, args); +} +function lookupMessage(index, fallback) { + const message = getNLSMessages()?.[index]; + if (typeof message !== "string") { + if (typeof fallback === "string") { + return fallback; + } + throw new Error(`!!! NLS MISSING: ${index} !!!`); + } + return message; +} + +// ../../../../../base/common/collections.ts +function groupBy(data, groupFn) { + const result = /* @__PURE__ */ Object.create(null); + for (const element of data) { + const key = groupFn(element); + let target = result[key]; + if (!target) { + target = result[key] = []; + } + target.push(element); + } + return result; +} +function intersection(setA, setB) { + const result = /* @__PURE__ */ new Set(); + for (const elem of setB) { + if (setA.has(elem)) { + result.add(elem); + } + } + return result; +} + +// ../../../../../base/common/errors.ts +var ErrorHandler = class { + constructor() { + this.listeners = []; + this.unexpectedErrorHandler = function(e) { + setTimeout(() => { + if (e.stack) { + if (ErrorNoTelemetry.isErrorNoTelemetry(e)) { + throw new ErrorNoTelemetry(e.message + "\n\n" + e.stack); + } + throw new Error(e.message + "\n\n" + e.stack); + } + throw e; + }, 0); + }; + } + addListener(listener) { + this.listeners.push(listener); + return () => { + this._removeListener(listener); + }; + } + emit(e) { + this.listeners.forEach((listener) => { + listener(e); + }); + } + _removeListener(listener) { + this.listeners.splice(this.listeners.indexOf(listener), 1); + } + setUnexpectedErrorHandler(newUnexpectedErrorHandler) { + this.unexpectedErrorHandler = newUnexpectedErrorHandler; + } + getUnexpectedErrorHandler() { + return this.unexpectedErrorHandler; + } + onUnexpectedError(e) { + this.unexpectedErrorHandler(e); + this.emit(e); + } + // For external errors, we don't want the listeners to be called + onUnexpectedExternalError(e) { + this.unexpectedErrorHandler(e); + } +}; +var errorHandler = new ErrorHandler(); +function onBugIndicatingError(e) { + errorHandler.onUnexpectedError(e); + return void 0; +} +function onUnexpectedError(e) { + if (!isCancellationError(e)) { + errorHandler.onUnexpectedError(e); + } + return void 0; +} +var canceledName = "Canceled"; +function isCancellationError(error) { + if (error instanceof CancellationError) { + return true; + } + return error instanceof Error && error.name === canceledName && error.message === canceledName; +} +var CancellationError = class extends Error { + constructor() { + super(canceledName); + this.name = this.message; + } +}; +function illegalArgument(name) { + if (name) { + return new Error(`Illegal argument: ${name}`); + } else { + return new Error("Illegal argument"); + } +} +function illegalState(name) { + if (name) { + return new Error(`Illegal state: ${name}`); + } else { + return new Error("Illegal state"); + } +} +var ErrorNoTelemetry = class _ErrorNoTelemetry extends Error { + constructor(msg) { + super(msg); + this.name = "CodeExpectedError"; + } + static fromError(err) { + if (err instanceof _ErrorNoTelemetry) { + return err; + } + const result = new _ErrorNoTelemetry(); + result.message = err.message; + result.stack = err.stack; + return result; + } + static isErrorNoTelemetry(err) { + return err.name === "CodeExpectedError"; + } +}; +var BugIndicatingError = class _BugIndicatingError extends Error { + constructor(message) { + super(message || "An unexpected bug occurred."); + Object.setPrototypeOf(this, _BugIndicatingError.prototype); + } +}; + +// ../../../../../base/common/functional.ts +function createSingleCallFunction(fn, fnDidRunCallback) { + const _this = this; + let didCall = false; + let result; + return function() { + if (didCall) { + return result; + } + didCall = true; + { + result = fn.apply(_this, arguments); + } + return result; + }; +} + +// ../../../../../base/common/arrays.ts +function tail(array, n = 0) { + return array[array.length - (1 + n)]; +} +function equals(one, other, itemEquals = (a, b) => a === b) { + if (one === other) { + return true; + } + if (!one || !other) { + return false; + } + if (one.length !== other.length) { + return false; + } + for (let i = 0, len = one.length; i < len; i++) { + if (!itemEquals(one[i], other[i])) { + return false; + } + } + return true; +} +function removeFastWithoutKeepingOrder(array, index) { + const last = array.length - 1; + if (index < last) { + array[index] = array[last]; + } + array.pop(); +} +function binarySearch(array, key, comparator) { + return binarySearch2(array.length, (i) => comparator(array[i], key)); +} +function binarySearch2(length, compareToKey) { + let low = 0, high = length - 1; + while (low <= high) { + const mid = (low + high) / 2 | 0; + const comp = compareToKey(mid); + if (comp < 0) { + low = mid + 1; + } else if (comp > 0) { + high = mid - 1; + } else { + return mid; + } + } + return -(low + 1); +} +function coalesceInPlace(array) { + let to = 0; + for (let i = 0; i < array.length; i++) { + if (!!array[i]) { + array[to] = array[i]; + to += 1; + } + } + array.length = to; +} +function distinct(array, keyFn = (value) => value) { + const seen = /* @__PURE__ */ new Set(); + return array.filter((element) => { + const key = keyFn(element); + if (seen.has(key)) { + return false; + } + seen.add(key); + return true; + }); +} +function range(arg, to) { + let from = typeof to === "number" ? arg : 0; + if (typeof to === "number") { + from = arg; + } else { + from = 0; + to = arg; + } + const result = []; + if (from <= to) { + for (let i = from; i < to; i++) { + result.push(i); + } + } else { + for (let i = from; i > to; i--) { + result.push(i); + } + } + return result; +} +var CompareResult; +((CompareResult2) => { + function isLessThan(result) { + return result < 0; + } + CompareResult2.isLessThan = isLessThan; + function isLessThanOrEqual(result) { + return result <= 0; + } + CompareResult2.isLessThanOrEqual = isLessThanOrEqual; + function isGreaterThan(result) { + return result > 0; + } + CompareResult2.isGreaterThan = isGreaterThan; + function isNeitherLessOrGreaterThan(result) { + return result === 0; + } + CompareResult2.isNeitherLessOrGreaterThan = isNeitherLessOrGreaterThan; + CompareResult2.greaterThan = 1; + CompareResult2.lessThan = -1; + CompareResult2.neitherLessOrGreaterThan = 0; +})(CompareResult || (CompareResult = {})); +function compareBy(selector, comparator) { + return (a, b) => comparator(selector(a), selector(b)); +} +var numberComparator = (a, b) => a - b; +(class _CallbackIterable { + constructor(iterate) { + this.iterate = iterate; + } + static { + this.empty = new _CallbackIterable((_callback) => { + }); + } + forEach(handler) { + this.iterate((item) => { + handler(item); + return true; + }); + } + toArray() { + const result = []; + this.iterate((item) => { + result.push(item); + return true; + }); + return result; + } + filter(predicate) { + return new _CallbackIterable((cb) => this.iterate((item) => predicate(item) ? cb(item) : true)); + } + map(mapFn) { + return new _CallbackIterable((cb) => this.iterate((item) => cb(mapFn(item)))); + } + some(predicate) { + let result = false; + this.iterate((item) => { + result = predicate(item); + return !result; + }); + return result; + } + findFirst(predicate) { + let result; + this.iterate((item) => { + if (predicate(item)) { + result = item; + return false; + } + return true; + }); + return result; + } + findLast(predicate) { + let result; + this.iterate((item) => { + if (predicate(item)) { + result = item; + } + return true; + }); + return result; + } + findLastMaxBy(comparator) { + let result; + let first = true; + this.iterate((item) => { + if (first || CompareResult.isGreaterThan(comparator(item, result))) { + first = false; + result = item; + } + return true; + }); + return result; + } +}); + +// ../../../../../base/common/map.ts +function getOrSet(map, key, value) { + let result = map.get(key); + if (result === void 0) { + result = value; + map.set(key, result); + } + return result; +} +var ResourceMapEntry = class { + constructor(uri, value) { + this.uri = uri; + this.value = value; + } +}; +function isEntries(arg) { + return Array.isArray(arg); +} +var _a2; +(class _ResourceMap { + constructor(arg, toKey) { + this[_a2] = "ResourceMap"; + if (arg instanceof _ResourceMap) { + this.map = new Map(arg.map); + this.toKey = toKey ?? _ResourceMap.defaultToKey; + } else if (isEntries(arg)) { + this.map = /* @__PURE__ */ new Map(); + this.toKey = toKey ?? _ResourceMap.defaultToKey; + for (const [resource, value] of arg) { + this.set(resource, value); + } + } else { + this.map = /* @__PURE__ */ new Map(); + this.toKey = arg ?? _ResourceMap.defaultToKey; + } + } + static { + this.defaultToKey = (resource) => resource.toString(); + } + set(resource, value) { + this.map.set(this.toKey(resource), new ResourceMapEntry(resource, value)); + return this; + } + get(resource) { + return this.map.get(this.toKey(resource))?.value; + } + has(resource) { + return this.map.has(this.toKey(resource)); + } + get size() { + return this.map.size; + } + clear() { + this.map.clear(); + } + delete(resource) { + return this.map.delete(this.toKey(resource)); + } + forEach(clb, thisArg) { + if (typeof thisArg !== "undefined") { + clb = clb.bind(thisArg); + } + for (const [_, entry] of this.map) { + clb(entry.value, entry.uri, this); + } + } + *values() { + for (const entry of this.map.values()) { + yield entry.value; + } + } + *keys() { + for (const entry of this.map.values()) { + yield entry.uri; + } + } + *entries() { + for (const entry of this.map.values()) { + yield [entry.uri, entry.value]; + } + } + *[(_a2 = Symbol.toStringTag, Symbol.iterator)]() { + for (const [, entry] of this.map) { + yield [entry.uri, entry.value]; + } + } +}); +var _a4; +var LinkedMap = class { + constructor() { + this[_a4] = "LinkedMap"; + this._map = /* @__PURE__ */ new Map(); + this._head = void 0; + this._tail = void 0; + this._size = 0; + this._state = 0; + } + clear() { + this._map.clear(); + this._head = void 0; + this._tail = void 0; + this._size = 0; + this._state++; + } + isEmpty() { + return !this._head && !this._tail; + } + get size() { + return this._size; + } + get first() { + return this._head?.value; + } + get last() { + return this._tail?.value; + } + has(key) { + return this._map.has(key); + } + get(key, touch = 0 /* None */) { + const item = this._map.get(key); + if (!item) { + return void 0; + } + if (touch !== 0 /* None */) { + this.touch(item, touch); + } + return item.value; + } + set(key, value, touch = 0 /* None */) { + let item = this._map.get(key); + if (item) { + item.value = value; + if (touch !== 0 /* None */) { + this.touch(item, touch); + } + } else { + item = { key, value, next: void 0, previous: void 0 }; + switch (touch) { + case 0 /* None */: + this.addItemLast(item); + break; + case 1 /* AsOld */: + this.addItemFirst(item); + break; + case 2 /* AsNew */: + this.addItemLast(item); + break; + default: + this.addItemLast(item); + break; + } + this._map.set(key, item); + this._size++; + } + return this; + } + delete(key) { + return !!this.remove(key); + } + remove(key) { + const item = this._map.get(key); + if (!item) { + return void 0; + } + this._map.delete(key); + this.removeItem(item); + this._size--; + return item.value; + } + shift() { + if (!this._head && !this._tail) { + return void 0; + } + if (!this._head || !this._tail) { + throw new Error("Invalid list"); + } + const item = this._head; + this._map.delete(item.key); + this.removeItem(item); + this._size--; + return item.value; + } + forEach(callbackfn, thisArg) { + const state = this._state; + let current = this._head; + while (current) { + if (thisArg) { + callbackfn.bind(thisArg)(current.value, current.key, this); + } else { + callbackfn(current.value, current.key, this); + } + if (this._state !== state) { + throw new Error(`LinkedMap got modified during iteration.`); + } + current = current.next; + } + } + keys() { + const map = this; + const state = this._state; + let current = this._head; + const iterator = { + [Symbol.iterator]() { + return iterator; + }, + next() { + if (map._state !== state) { + throw new Error(`LinkedMap got modified during iteration.`); + } + if (current) { + const result = { value: current.key, done: false }; + current = current.next; + return result; + } else { + return { value: void 0, done: true }; + } + } + }; + return iterator; + } + values() { + const map = this; + const state = this._state; + let current = this._head; + const iterator = { + [Symbol.iterator]() { + return iterator; + }, + next() { + if (map._state !== state) { + throw new Error(`LinkedMap got modified during iteration.`); + } + if (current) { + const result = { value: current.value, done: false }; + current = current.next; + return result; + } else { + return { value: void 0, done: true }; + } + } + }; + return iterator; + } + entries() { + const map = this; + const state = this._state; + let current = this._head; + const iterator = { + [Symbol.iterator]() { + return iterator; + }, + next() { + if (map._state !== state) { + throw new Error(`LinkedMap got modified during iteration.`); + } + if (current) { + const result = { value: [current.key, current.value], done: false }; + current = current.next; + return result; + } else { + return { value: void 0, done: true }; + } + } + }; + return iterator; + } + [(_a4 = Symbol.toStringTag, Symbol.iterator)]() { + return this.entries(); + } + trimOld(newSize) { + if (newSize >= this.size) { + return; + } + if (newSize === 0) { + this.clear(); + return; + } + let current = this._head; + let currentSize = this.size; + while (current && currentSize > newSize) { + this._map.delete(current.key); + current = current.next; + currentSize--; + } + this._head = current; + this._size = currentSize; + if (current) { + current.previous = void 0; + } + this._state++; + } + trimNew(newSize) { + if (newSize >= this.size) { + return; + } + if (newSize === 0) { + this.clear(); + return; + } + let current = this._tail; + let currentSize = this.size; + while (current && currentSize > newSize) { + this._map.delete(current.key); + current = current.previous; + currentSize--; + } + this._tail = current; + this._size = currentSize; + if (current) { + current.next = void 0; + } + this._state++; + } + addItemFirst(item) { + if (!this._head && !this._tail) { + this._tail = item; + } else if (!this._head) { + throw new Error("Invalid list"); + } else { + item.next = this._head; + this._head.previous = item; + } + this._head = item; + this._state++; + } + addItemLast(item) { + if (!this._head && !this._tail) { + this._head = item; + } else if (!this._tail) { + throw new Error("Invalid list"); + } else { + item.previous = this._tail; + this._tail.next = item; + } + this._tail = item; + this._state++; + } + removeItem(item) { + if (item === this._head && item === this._tail) { + this._head = void 0; + this._tail = void 0; + } else if (item === this._head) { + if (!item.next) { + throw new Error("Invalid list"); + } + item.next.previous = void 0; + this._head = item.next; + } else if (item === this._tail) { + if (!item.previous) { + throw new Error("Invalid list"); + } + item.previous.next = void 0; + this._tail = item.previous; + } else { + const next = item.next; + const previous = item.previous; + if (!next || !previous) { + throw new Error("Invalid list"); + } + next.previous = previous; + previous.next = next; + } + item.next = void 0; + item.previous = void 0; + this._state++; + } + touch(item, touch) { + if (!this._head || !this._tail) { + throw new Error("Invalid list"); + } + if (touch !== 1 /* AsOld */ && touch !== 2 /* AsNew */) { + return; + } + if (touch === 1 /* AsOld */) { + if (item === this._head) { + return; + } + const next = item.next; + const previous = item.previous; + if (item === this._tail) { + previous.next = void 0; + this._tail = previous; + } else { + next.previous = previous; + previous.next = next; + } + item.previous = void 0; + item.next = this._head; + this._head.previous = item; + this._head = item; + this._state++; + } else if (touch === 2 /* AsNew */) { + if (item === this._tail) { + return; + } + const next = item.next; + const previous = item.previous; + if (item === this._head) { + next.previous = void 0; + this._head = next; + } else { + next.previous = previous; + previous.next = next; + } + item.next = void 0; + item.previous = this._tail; + this._tail.next = item; + this._tail = item; + this._state++; + } + } + toJSON() { + const data = []; + this.forEach((value, key) => { + data.push([key, value]); + }); + return data; + } + fromJSON(data) { + this.clear(); + for (const [key, value] of data) { + this.set(key, value); + } + } +}; +var Cache = class extends LinkedMap { + constructor(limit, ratio = 1) { + super(); + this._limit = limit; + this._ratio = Math.min(Math.max(0, ratio), 1); + } + get limit() { + return this._limit; + } + set limit(limit) { + this._limit = limit; + this.checkTrim(); + } + get ratio() { + return this._ratio; + } + set ratio(ratio) { + this._ratio = Math.min(Math.max(0, ratio), 1); + this.checkTrim(); + } + get(key, touch = 2 /* AsNew */) { + return super.get(key, touch); + } + peek(key) { + return super.get(key, 0 /* None */); + } + set(key, value) { + super.set(key, value, 2 /* AsNew */); + return this; + } + checkTrim() { + if (this.size > this._limit) { + this.trim(Math.round(this._limit * this._ratio)); + } + } +}; +var LRUCache = class extends Cache { + constructor(limit, ratio = 1) { + super(limit, ratio); + } + trim(newSize) { + this.trimOld(newSize); + } + set(key, value) { + super.set(key, value); + this.checkTrim(); + return this; + } +}; +var SetMap = class { + constructor() { + this.map = /* @__PURE__ */ new Map(); + } + add(key, value) { + let values = this.map.get(key); + if (!values) { + values = /* @__PURE__ */ new Set(); + this.map.set(key, values); + } + values.add(value); + } + delete(key, value) { + const values = this.map.get(key); + if (!values) { + return; + } + values.delete(value); + if (values.size === 0) { + this.map.delete(key); + } + } + forEach(key, fn) { + const values = this.map.get(key); + if (!values) { + return; + } + values.forEach(fn); + } + get(key) { + const values = this.map.get(key); + if (!values) { + return /* @__PURE__ */ new Set(); + } + return values; + } +}; + +// ../../../../../base/common/iterator.ts +var Iterable; +((Iterable2) => { + function is(thing) { + return thing && typeof thing === "object" && typeof thing[Symbol.iterator] === "function"; + } + Iterable2.is = is; + const _empty2 = Object.freeze([]); + function empty() { + return _empty2; + } + Iterable2.empty = empty; + function* single(element) { + yield element; + } + Iterable2.single = single; + function wrap(iterableOrElement) { + if (is(iterableOrElement)) { + return iterableOrElement; + } else { + return single(iterableOrElement); + } + } + Iterable2.wrap = wrap; + function from(iterable) { + return iterable || _empty2; + } + Iterable2.from = from; + function* reverse(array) { + for (let i = array.length - 1; i >= 0; i--) { + yield array[i]; + } + } + Iterable2.reverse = reverse; + function isEmpty(iterable) { + return !iterable || iterable[Symbol.iterator]().next().done === true; + } + Iterable2.isEmpty = isEmpty; + function first(iterable) { + return iterable[Symbol.iterator]().next().value; + } + Iterable2.first = first; + function some(iterable, predicate) { + let i = 0; + for (const element of iterable) { + if (predicate(element, i++)) { + return true; + } + } + return false; + } + Iterable2.some = some; + function find(iterable, predicate) { + for (const element of iterable) { + if (predicate(element)) { + return element; + } + } + return void 0; + } + Iterable2.find = find; + function* filter(iterable, predicate) { + for (const element of iterable) { + if (predicate(element)) { + yield element; + } + } + } + Iterable2.filter = filter; + function* map(iterable, fn) { + let index = 0; + for (const element of iterable) { + yield fn(element, index++); + } + } + Iterable2.map = map; + function* flatMap(iterable, fn) { + let index = 0; + for (const element of iterable) { + yield* fn(element, index++); + } + } + Iterable2.flatMap = flatMap; + function* concat2(...iterables) { + for (const iterable of iterables) { + yield* iterable; + } + } + Iterable2.concat = concat2; + function reduce(iterable, reducer, initialValue) { + let value = initialValue; + for (const element of iterable) { + value = reducer(value, element); + } + return value; + } + Iterable2.reduce = reduce; + function* slice(arr, from2, to = arr.length) { + if (from2 < 0) { + from2 += arr.length; + } + if (to < 0) { + to += arr.length; + } else if (to > arr.length) { + to = arr.length; + } + for (; from2 < to; from2++) { + yield arr[from2]; + } + } + Iterable2.slice = slice; + function consume(iterable, atMost = Number.POSITIVE_INFINITY) { + const consumed = []; + if (atMost === 0) { + return [consumed, iterable]; + } + const iterator = iterable[Symbol.iterator](); + for (let i = 0; i < atMost; i++) { + const next = iterator.next(); + if (next.done) { + return [consumed, Iterable2.empty()]; + } + consumed.push(next.value); + } + return [consumed, { [Symbol.iterator]() { + return iterator; + } }]; + } + Iterable2.consume = consume; + async function asyncToArray(iterable) { + const result = []; + for await (const item of iterable) { + result.push(item); + } + return Promise.resolve(result); + } + Iterable2.asyncToArray = asyncToArray; +})(Iterable || (Iterable = {})); +(class _DisposableTracker { + constructor() { + this.livingDisposables = /* @__PURE__ */ new Map(); + } + static { + this.idx = 0; + } + getDisposableData(d) { + let val = this.livingDisposables.get(d); + if (!val) { + val = { parent: null, source: null, isSingleton: false, value: d, idx: _DisposableTracker.idx++ }; + this.livingDisposables.set(d, val); + } + return val; + } + trackDisposable(d) { + const data = this.getDisposableData(d); + if (!data.source) { + data.source = new Error().stack; + } + } + setParent(child, parent) { + const data = this.getDisposableData(child); + data.parent = parent; + } + markAsDisposed(x) { + this.livingDisposables.delete(x); + } + markAsSingleton(disposable) { + this.getDisposableData(disposable).isSingleton = true; + } + getRootParent(data, cache) { + const cacheValue = cache.get(data); + if (cacheValue) { + return cacheValue; + } + const result = data.parent ? this.getRootParent(this.getDisposableData(data.parent), cache) : data; + cache.set(data, result); + return result; + } + getTrackedDisposables() { + const rootParentCache = /* @__PURE__ */ new Map(); + const leaking = [...this.livingDisposables.entries()].filter(([, v]) => v.source !== null && !this.getRootParent(v, rootParentCache).isSingleton).flatMap(([k]) => k); + return leaking; + } + computeLeakingDisposables(maxReported = 10, preComputedLeaks) { + let uncoveredLeakingObjs; + if (preComputedLeaks) { + uncoveredLeakingObjs = preComputedLeaks; + } else { + const rootParentCache = /* @__PURE__ */ new Map(); + const leakingObjects = [...this.livingDisposables.values()].filter((info) => info.source !== null && !this.getRootParent(info, rootParentCache).isSingleton); + if (leakingObjects.length === 0) { + return; + } + const leakingObjsSet = new Set(leakingObjects.map((o) => o.value)); + uncoveredLeakingObjs = leakingObjects.filter((l) => { + return !(l.parent && leakingObjsSet.has(l.parent)); + }); + if (uncoveredLeakingObjs.length === 0) { + throw new Error("There are cyclic diposable chains!"); + } + } + if (!uncoveredLeakingObjs) { + return void 0; + } + function getStackTracePath(leaking) { + function removePrefix(array, linesToRemove) { + while (array.length > 0 && linesToRemove.some((regexp) => typeof regexp === "string" ? regexp === array[0] : array[0].match(regexp))) { + array.shift(); + } + } + const lines = leaking.source.split("\n").map((p) => p.trim().replace("at ", "")).filter((l) => l !== ""); + removePrefix(lines, ["Error", /^trackDisposable \(.*\)$/, /^DisposableTracker.trackDisposable \(.*\)$/]); + return lines.reverse(); + } + const stackTraceStarts = new SetMap(); + for (const leaking of uncoveredLeakingObjs) { + const stackTracePath = getStackTracePath(leaking); + for (let i2 = 0; i2 <= stackTracePath.length; i2++) { + stackTraceStarts.add(stackTracePath.slice(0, i2).join("\n"), leaking); + } + } + uncoveredLeakingObjs.sort(compareBy((l) => l.idx, numberComparator)); + let message = ""; + let i = 0; + for (const leaking of uncoveredLeakingObjs.slice(0, maxReported)) { + i++; + const stackTracePath = getStackTracePath(leaking); + const stackTraceFormattedLines = []; + for (let i2 = 0; i2 < stackTracePath.length; i2++) { + let line = stackTracePath[i2]; + const starts = stackTraceStarts.get(stackTracePath.slice(0, i2 + 1).join("\n")); + line = `(shared with ${starts.size}/${uncoveredLeakingObjs.length} leaks) at ${line}`; + const prevStarts = stackTraceStarts.get(stackTracePath.slice(0, i2).join("\n")); + const continuations = groupBy([...prevStarts].map((d) => getStackTracePath(d)[i2]), (v) => v); + delete continuations[stackTracePath[i2]]; + for (const [cont, set] of Object.entries(continuations)) { + stackTraceFormattedLines.unshift(` - stacktraces of ${set.length} other leaks continue with ${cont}`); + } + stackTraceFormattedLines.unshift(line); + } + message += ` + + +==================== Leaking disposable ${i}/${uncoveredLeakingObjs.length}: ${leaking.value.constructor.name} ==================== +${stackTraceFormattedLines.join("\n")} +============================================================ + +`; + } + if (uncoveredLeakingObjs.length > maxReported) { + message += ` + + +... and ${uncoveredLeakingObjs.length - maxReported} more leaking disposables + +`; + } + return { leaks: uncoveredLeakingObjs, details: message }; + } +}); +function trackDisposable(x) { + return x; +} +function setParentOfDisposable(child, parent) { +} +function markAsSingleton(singleton) { + return singleton; +} +function dispose(arg) { + if (Iterable.is(arg)) { + const errors = []; + for (const d of arg) { + if (d) { + try { + d.dispose(); + } catch (e) { + errors.push(e); + } + } + } + if (errors.length === 1) { + throw errors[0]; + } else if (errors.length > 1) { + throw new AggregateError(errors, "Encountered errors while disposing of store"); + } + return Array.isArray(arg) ? [] : arg; + } else if (arg) { + arg.dispose(); + return arg; + } +} +function combinedDisposable(...disposables) { + const parent = toDisposable(() => dispose(disposables)); + return parent; +} +function toDisposable(fn) { + const self2 = trackDisposable({ + dispose: createSingleCallFunction(() => { + fn(); + }) + }); + return self2; +} +var DisposableStore = class _DisposableStore { + constructor() { + this._toDispose = /* @__PURE__ */ new Set(); + this._isDisposed = false; + } + static { + this.DISABLE_DISPOSED_WARNING = false; + } + /** + * Dispose of all registered disposables and mark this object as disposed. + * + * Any future disposables added to this object will be disposed of on `add`. + */ + dispose() { + if (this._isDisposed) { + return; + } + this._isDisposed = true; + this.clear(); + } + /** + * @return `true` if this object has been disposed of. + */ + get isDisposed() { + return this._isDisposed; + } + /** + * Dispose of all registered disposables but do not mark this object as disposed. + */ + clear() { + if (this._toDispose.size === 0) { + return; + } + try { + dispose(this._toDispose); + } finally { + this._toDispose.clear(); + } + } + /** + * Add a new {@link IDisposable disposable} to the collection. + */ + add(o) { + if (!o) { + return o; + } + if (o === this) { + throw new Error("Cannot register a disposable on itself!"); + } + if (this._isDisposed) { + if (!_DisposableStore.DISABLE_DISPOSED_WARNING) { + console.warn(new Error("Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!").stack); + } + } else { + this._toDispose.add(o); + } + return o; + } + /** + * Deletes a disposable from store and disposes of it. This will not throw or warn and proceed to dispose the + * disposable even when the disposable is not part in the store. + */ + delete(o) { + if (!o) { + return; + } + if (o === this) { + throw new Error("Cannot dispose a disposable on itself!"); + } + this._toDispose.delete(o); + o.dispose(); + } + /** + * Deletes the value from the store, but does not dispose it. + */ + deleteAndLeak(o) { + if (!o) { + return; + } + if (this._toDispose.has(o)) { + this._toDispose.delete(o); + } + } +}; +var Disposable = class { + constructor() { + this._store = new DisposableStore(); + setParentOfDisposable(this._store); + } + static { + /** + * A disposable that does nothing when it is disposed of. + * + * TODO: This should not be a static property. + */ + this.None = Object.freeze({ dispose() { + } }); + } + dispose() { + this._store.dispose(); + } + /** + * Adds `o` to the collection of disposables managed by this object. + */ + _register(o) { + if (o === this) { + throw new Error("Cannot register a disposable on itself!"); + } + return this._store.add(o); + } +}; +var MutableDisposable = class { + constructor() { + this._isDisposed = false; + } + get value() { + return this._isDisposed ? void 0 : this._value; + } + set value(value) { + if (this._isDisposed || value === this._value) { + return; + } + this._value?.dispose(); + this._value = value; + } + /** + * Resets the stored value and disposed of the previously stored value. + */ + clear() { + this.value = void 0; + } + dispose() { + this._isDisposed = true; + this._value?.dispose(); + this._value = void 0; + } + /** + * Clears the value, but does not dispose it. + * The old value is returned. + */ + clearAndLeak() { + const oldValue = this._value; + this._value = void 0; + return oldValue; + } +}; +var DisposableMap = class { + constructor() { + this._store = /* @__PURE__ */ new Map(); + this._isDisposed = false; + } + /** + * Disposes of all stored values and mark this object as disposed. + * + * Trying to use this object after it has been disposed of is an error. + */ + dispose() { + this._isDisposed = true; + this.clearAndDisposeAll(); + } + /** + * Disposes of all stored values and clear the map, but DO NOT mark this object as disposed. + */ + clearAndDisposeAll() { + if (!this._store.size) { + return; + } + try { + dispose(this._store.values()); + } finally { + this._store.clear(); + } + } + has(key) { + return this._store.has(key); + } + get size() { + return this._store.size; + } + get(key) { + return this._store.get(key); + } + set(key, value, skipDisposeOnOverwrite = false) { + if (this._isDisposed) { + console.warn(new Error("Trying to add a disposable to a DisposableMap that has already been disposed of. The added object will be leaked!").stack); + } + if (!skipDisposeOnOverwrite) { + this._store.get(key)?.dispose(); + } + this._store.set(key, value); + } + /** + * Delete the value stored for `key` from this map and also dispose of it. + */ + deleteAndDispose(key) { + this._store.get(key)?.dispose(); + this._store.delete(key); + } + /** + * Delete the value stored for `key` from this map but return it. The caller is + * responsible for disposing of the value. + */ + deleteAndLeak(key) { + const value = this._store.get(key); + this._store.delete(key); + return value; + } + keys() { + return this._store.keys(); + } + values() { + return this._store.values(); + } + [Symbol.iterator]() { + return this._store[Symbol.iterator](); + } +}; + +// ../../../../../base/common/linkedList.ts +var Node2 = class _Node { + static { + this.Undefined = new _Node(void 0); + } + constructor(element) { + this.element = element; + this.next = _Node.Undefined; + this.prev = _Node.Undefined; + } +}; +var LinkedList = class { + constructor() { + this._first = Node2.Undefined; + this._last = Node2.Undefined; + this._size = 0; + } + get size() { + return this._size; + } + isEmpty() { + return this._first === Node2.Undefined; + } + clear() { + let node = this._first; + while (node !== Node2.Undefined) { + const next = node.next; + node.prev = Node2.Undefined; + node.next = Node2.Undefined; + node = next; + } + this._first = Node2.Undefined; + this._last = Node2.Undefined; + this._size = 0; + } + unshift(element) { + return this._insert(element, false); + } + push(element) { + return this._insert(element, true); + } + _insert(element, atTheEnd) { + const newNode = new Node2(element); + if (this._first === Node2.Undefined) { + this._first = newNode; + this._last = newNode; + } else if (atTheEnd) { + const oldLast = this._last; + this._last = newNode; + newNode.prev = oldLast; + oldLast.next = newNode; + } else { + const oldFirst = this._first; + this._first = newNode; + newNode.next = oldFirst; + oldFirst.prev = newNode; + } + this._size += 1; + let didRemove = false; + return () => { + if (!didRemove) { + didRemove = true; + this._remove(newNode); + } + }; + } + shift() { + if (this._first === Node2.Undefined) { + return void 0; + } else { + const res = this._first.element; + this._remove(this._first); + return res; + } + } + pop() { + if (this._last === Node2.Undefined) { + return void 0; + } else { + const res = this._last.element; + this._remove(this._last); + return res; + } + } + _remove(node) { + if (node.prev !== Node2.Undefined && node.next !== Node2.Undefined) { + const anchor = node.prev; + anchor.next = node.next; + node.next.prev = anchor; + } else if (node.prev === Node2.Undefined && node.next === Node2.Undefined) { + this._first = Node2.Undefined; + this._last = Node2.Undefined; + } else if (node.next === Node2.Undefined) { + this._last = this._last.prev; + this._last.next = Node2.Undefined; + } else if (node.prev === Node2.Undefined) { + this._first = this._first.next; + this._first.prev = Node2.Undefined; + } + this._size -= 1; + } + *[Symbol.iterator]() { + let node = this._first; + while (node !== Node2.Undefined) { + yield node.element; + node = node.next; + } + } +}; + +// ../../../../../base/common/stopwatch.ts +var hasPerformanceNow = globalThis.performance && typeof globalThis.performance.now === "function"; +var StopWatch = class _StopWatch { + static create(highResolution) { + return new _StopWatch(highResolution); + } + constructor(highResolution) { + this._now = hasPerformanceNow && highResolution === false ? Date.now : globalThis.performance.now.bind(globalThis.performance); + this._startTime = this._now(); + this._stopTime = -1; + } + stop() { + this._stopTime = this._now(); + } + reset() { + this._startTime = this._now(); + this._stopTime = -1; + } + elapsed() { + if (this._stopTime !== -1) { + return this._stopTime - this._startTime; + } + return this._now() - this._startTime; + } +}; +var Event; +((Event23) => { + Event23.None = () => Disposable.None; + function defer(event, disposable) { + return debounce(event, () => void 0, 0, void 0, true, void 0, disposable); + } + Event23.defer = defer; + function once(event) { + return (listener, thisArgs = null, disposables) => { + let didFire = false; + let result = void 0; + result = event((e) => { + if (didFire) { + return; + } else if (result) { + result.dispose(); + } else { + didFire = true; + } + return listener.call(thisArgs, e); + }, null, disposables); + if (didFire) { + result.dispose(); + } + return result; + }; + } + Event23.once = once; + function onceIf(event, condition) { + return Event23.once(Event23.filter(event, condition)); + } + Event23.onceIf = onceIf; + function map(event, map2, disposable) { + return snapshot((listener, thisArgs = null, disposables) => event((i) => listener.call(thisArgs, map2(i)), null, disposables), disposable); + } + Event23.map = map; + function forEach(event, each, disposable) { + return snapshot((listener, thisArgs = null, disposables) => event((i) => { + each(i); + listener.call(thisArgs, i); + }, null, disposables), disposable); + } + Event23.forEach = forEach; + function filter(event, filter2, disposable) { + return snapshot((listener, thisArgs = null, disposables) => event((e) => filter2(e) && listener.call(thisArgs, e), null, disposables), disposable); + } + Event23.filter = filter; + function signal(event) { + return event; + } + Event23.signal = signal; + function any(...events) { + return (listener, thisArgs = null, disposables) => { + const disposable = combinedDisposable(...events.map((event) => event((e) => listener.call(thisArgs, e)))); + return addAndReturnDisposable(disposable, disposables); + }; + } + Event23.any = any; + function reduce(event, merge, initial, disposable) { + let output = initial; + return map(event, (e) => { + output = merge(output, e); + return output; + }, disposable); + } + Event23.reduce = reduce; + function snapshot(event, disposable) { + let listener; + const options2 = { + onWillAddFirstListener() { + listener = event(emitter.fire, emitter); + }, + onDidRemoveLastListener() { + listener?.dispose(); + } + }; + const emitter = new Emitter(options2); + disposable?.add(emitter); + return emitter.event; + } + function addAndReturnDisposable(d, store) { + if (store instanceof Array) { + store.push(d); + } else if (store) { + store.add(d); + } + return d; + } + function debounce(event, merge, delay = 100, leading = false, flushOnListenerRemove = false, leakWarningThreshold, disposable) { + let subscription; + let output = void 0; + let handle = void 0; + let numDebouncedCalls = 0; + let doFire; + const options2 = { + leakWarningThreshold, + onWillAddFirstListener() { + subscription = event((cur) => { + numDebouncedCalls++; + output = merge(output, cur); + if (leading && !handle) { + emitter.fire(output); + output = void 0; + } + doFire = () => { + const _output = output; + output = void 0; + handle = void 0; + if (!leading || numDebouncedCalls > 1) { + emitter.fire(_output); + } + numDebouncedCalls = 0; + }; + if (typeof delay === "number") { + clearTimeout(handle); + handle = setTimeout(doFire, delay); + } else { + if (handle === void 0) { + handle = 0; + queueMicrotask(doFire); + } + } + }); + }, + onWillRemoveListener() { + if (flushOnListenerRemove && numDebouncedCalls > 0) { + doFire?.(); + } + }, + onDidRemoveLastListener() { + doFire = void 0; + subscription.dispose(); + } + }; + const emitter = new Emitter(options2); + disposable?.add(emitter); + return emitter.event; + } + Event23.debounce = debounce; + function accumulate(event, delay = 0, disposable) { + return Event23.debounce(event, (last, e) => { + if (!last) { + return [e]; + } + last.push(e); + return last; + }, delay, void 0, true, void 0, disposable); + } + Event23.accumulate = accumulate; + function latch(event, equals3 = (a, b) => a === b, disposable) { + let firstCall = true; + let cache; + return filter(event, (value) => { + const shouldEmit = firstCall || !equals3(value, cache); + firstCall = false; + cache = value; + return shouldEmit; + }, disposable); + } + Event23.latch = latch; + function split(event, isT, disposable) { + return [ + Event23.filter(event, isT, disposable), + Event23.filter(event, (e) => !isT(e), disposable) + ]; + } + Event23.split = split; + function buffer(event, flushAfterTimeout = false, _buffer = [], disposable) { + let buffer2 = _buffer.slice(); + let listener = event((e) => { + if (buffer2) { + buffer2.push(e); + } else { + emitter.fire(e); + } + }); + if (disposable) { + disposable.add(listener); + } + const flush = () => { + buffer2?.forEach((e) => emitter.fire(e)); + buffer2 = null; + }; + const emitter = new Emitter({ + onWillAddFirstListener() { + if (!listener) { + listener = event((e) => emitter.fire(e)); + if (disposable) { + disposable.add(listener); + } + } + }, + onDidAddFirstListener() { + if (buffer2) { + if (flushAfterTimeout) { + setTimeout(flush); + } else { + flush(); + } + } + }, + onDidRemoveLastListener() { + if (listener) { + listener.dispose(); + } + listener = null; + } + }); + if (disposable) { + disposable.add(emitter); + } + return emitter.event; + } + Event23.buffer = buffer; + function chain(event, sythensize) { + const fn = (listener, thisArgs, disposables) => { + const cs = sythensize(new ChainableSynthesis()); + return event(function(value) { + const result = cs.evaluate(value); + if (result !== HaltChainable) { + listener.call(thisArgs, result); + } + }, void 0, disposables); + }; + return fn; + } + Event23.chain = chain; + const HaltChainable = Symbol("HaltChainable"); + class ChainableSynthesis { + constructor() { + this.steps = []; + } + map(fn) { + this.steps.push(fn); + return this; + } + forEach(fn) { + this.steps.push((v) => { + fn(v); + return v; + }); + return this; + } + filter(fn) { + this.steps.push((v) => fn(v) ? v : HaltChainable); + return this; + } + reduce(merge, initial) { + let last = initial; + this.steps.push((v) => { + last = merge(last, v); + return last; + }); + return this; + } + latch(equals3 = (a, b) => a === b) { + let firstCall = true; + let cache; + this.steps.push((value) => { + const shouldEmit = firstCall || !equals3(value, cache); + firstCall = false; + cache = value; + return shouldEmit ? value : HaltChainable; + }); + return this; + } + evaluate(value) { + for (const step of this.steps) { + value = step(value); + if (value === HaltChainable) { + break; + } + } + return value; + } + } + function fromNodeEventEmitter(emitter, eventName, map2 = (id2) => id2) { + const fn = (...args) => result.fire(map2(...args)); + const onFirstListenerAdd = () => emitter.on(eventName, fn); + const onLastListenerRemove = () => emitter.removeListener(eventName, fn); + const result = new Emitter({ onWillAddFirstListener: onFirstListenerAdd, onDidRemoveLastListener: onLastListenerRemove }); + return result.event; + } + Event23.fromNodeEventEmitter = fromNodeEventEmitter; + function fromDOMEventEmitter(emitter, eventName, map2 = (id2) => id2) { + const fn = (...args) => result.fire(map2(...args)); + const onFirstListenerAdd = () => emitter.addEventListener(eventName, fn); + const onLastListenerRemove = () => emitter.removeEventListener(eventName, fn); + const result = new Emitter({ onWillAddFirstListener: onFirstListenerAdd, onDidRemoveLastListener: onLastListenerRemove }); + return result.event; + } + Event23.fromDOMEventEmitter = fromDOMEventEmitter; + function toPromise(event) { + return new Promise((resolve2) => once(event)(resolve2)); + } + Event23.toPromise = toPromise; + function fromPromise(promise) { + const result = new Emitter(); + promise.then((res) => { + result.fire(res); + }, () => { + result.fire(void 0); + }).finally(() => { + result.dispose(); + }); + return result.event; + } + Event23.fromPromise = fromPromise; + function forward(from, to) { + return from((e) => to.fire(e)); + } + Event23.forward = forward; + function runAndSubscribe(event, handler, initial) { + handler(initial); + return event((e) => handler(e)); + } + Event23.runAndSubscribe = runAndSubscribe; + class EmitterObserver { + constructor(_observable, store) { + this._observable = _observable; + this._counter = 0; + this._hasChanged = false; + const options2 = { + onWillAddFirstListener: () => { + _observable.addObserver(this); + this._observable.reportChanges(); + }, + onDidRemoveLastListener: () => { + _observable.removeObserver(this); + } + }; + this.emitter = new Emitter(options2); + if (store) { + store.add(this.emitter); + } + } + beginUpdate(_observable) { + this._counter++; + } + handlePossibleChange(_observable) { + } + handleChange(_observable, _change) { + this._hasChanged = true; + } + endUpdate(_observable) { + this._counter--; + if (this._counter === 0) { + this._observable.reportChanges(); + if (this._hasChanged) { + this._hasChanged = false; + this.emitter.fire(this._observable.get()); + } + } + } + } + function fromObservable(obs, store) { + const observer = new EmitterObserver(obs, store); + return observer.emitter.event; + } + Event23.fromObservable = fromObservable; + function fromObservableLight(observable) { + return (listener, thisArgs, disposables) => { + let count = 0; + let didChange = false; + const observer = { + beginUpdate() { + count++; + }, + endUpdate() { + count--; + if (count === 0) { + observable.reportChanges(); + if (didChange) { + didChange = false; + listener.call(thisArgs); + } + } + }, + handlePossibleChange() { + }, + handleChange() { + didChange = true; + } + }; + observable.addObserver(observer); + observable.reportChanges(); + const disposable = { + dispose() { + observable.removeObserver(observer); + } + }; + if (disposables instanceof DisposableStore) { + disposables.add(disposable); + } else if (Array.isArray(disposables)) { + disposables.push(disposable); + } + return disposable; + }; + } + Event23.fromObservableLight = fromObservableLight; +})(Event || (Event = {})); +var EventProfiling = class _EventProfiling { + constructor(name) { + this.listenerCount = 0; + this.invocationCount = 0; + this.elapsedOverall = 0; + this.durations = []; + this.name = `${name}_${_EventProfiling._idPool++}`; + _EventProfiling.all.add(this); + } + static { + this.all = /* @__PURE__ */ new Set(); + } + static { + this._idPool = 0; + } + start(listenerCount) { + this._stopWatch = new StopWatch(); + this.listenerCount = listenerCount; + } + stop() { + if (this._stopWatch) { + const elapsed = this._stopWatch.elapsed(); + this.durations.push(elapsed); + this.elapsedOverall += elapsed; + this.invocationCount += 1; + this._stopWatch = void 0; + } + } +}; +var _globalLeakWarningThreshold = -1; +var LeakageMonitor = class _LeakageMonitor { + constructor(_errorHandler, threshold, name = (_LeakageMonitor._idPool++).toString(16).padStart(3, "0")) { + this._errorHandler = _errorHandler; + this.threshold = threshold; + this.name = name; + this._warnCountdown = 0; + } + static { + this._idPool = 1; + } + dispose() { + this._stacks?.clear(); + } + check(stack, listenerCount) { + const threshold = this.threshold; + if (threshold <= 0 || listenerCount < threshold) { + return void 0; + } + if (!this._stacks) { + this._stacks = /* @__PURE__ */ new Map(); + } + const count = this._stacks.get(stack.value) || 0; + this._stacks.set(stack.value, count + 1); + this._warnCountdown -= 1; + if (this._warnCountdown <= 0) { + this._warnCountdown = threshold * 0.5; + const [topStack, topCount] = this.getMostFrequentStack(); + const message = `[${this.name}] potential listener LEAK detected, having ${listenerCount} listeners already. MOST frequent listener (${topCount}):`; + console.warn(message); + console.warn(topStack); + const error = new ListenerLeakError(message, topStack); + this._errorHandler(error); + } + return () => { + const count2 = this._stacks.get(stack.value) || 0; + this._stacks.set(stack.value, count2 - 1); + }; + } + getMostFrequentStack() { + if (!this._stacks) { + return void 0; + } + let topStack; + let topCount = 0; + for (const [stack, count] of this._stacks) { + if (!topStack || topCount < count) { + topStack = [stack, count]; + topCount = count; + } + } + return topStack; + } +}; +var Stacktrace = class _Stacktrace { + constructor(value) { + this.value = value; + } + static create() { + const err = new Error(); + return new _Stacktrace(err.stack ?? ""); + } + print() { + console.warn(this.value.split("\n").slice(2).join("\n")); + } +}; +var ListenerLeakError = class extends Error { + constructor(message, stack) { + super(message); + this.name = "ListenerLeakError"; + this.stack = stack; + } +}; +var ListenerRefusalError = class extends Error { + constructor(message, stack) { + super(message); + this.name = "ListenerRefusalError"; + this.stack = stack; + } +}; +var id = 0; +var UniqueContainer = class { + constructor(value) { + this.value = value; + this.id = id++; + } +}; +var compactionThreshold = 2; +var Emitter = class { + constructor(options2) { + this._size = 0; + this._options = options2; + this._leakageMon = this._options?.leakWarningThreshold ? new LeakageMonitor(options2?.onListenerError ?? onUnexpectedError, this._options?.leakWarningThreshold ?? _globalLeakWarningThreshold) : void 0; + this._perfMon = this._options?._profName ? new EventProfiling(this._options._profName) : void 0; + this._deliveryQueue = this._options?.deliveryQueue; + } + dispose() { + if (!this._disposed) { + this._disposed = true; + if (this._deliveryQueue?.current === this) { + this._deliveryQueue.reset(); + } + if (this._listeners) { + this._listeners = void 0; + this._size = 0; + } + this._options?.onDidRemoveLastListener?.(); + this._leakageMon?.dispose(); + } + } + /** + * For the public to allow to subscribe + * to events from this Emitter + */ + get event() { + this._event ??= (callback, thisArgs, disposables) => { + if (this._leakageMon && this._size > this._leakageMon.threshold ** 2) { + const message = `[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far (${this._size} vs ${this._leakageMon.threshold})`; + console.warn(message); + const tuple = this._leakageMon.getMostFrequentStack() ?? ["UNKNOWN stack", -1]; + const error = new ListenerRefusalError(`${message}. HINT: Stack shows most frequent listener (${tuple[1]}-times)`, tuple[0]); + const errorHandler2 = this._options?.onListenerError || onUnexpectedError; + errorHandler2(error); + return Disposable.None; + } + if (this._disposed) { + return Disposable.None; + } + if (thisArgs) { + callback = callback.bind(thisArgs); + } + const contained = new UniqueContainer(callback); + let removeMonitor; + if (this._leakageMon && this._size >= Math.ceil(this._leakageMon.threshold * 0.2)) { + contained.stack = Stacktrace.create(); + removeMonitor = this._leakageMon.check(contained.stack, this._size + 1); + } + if (!this._listeners) { + this._options?.onWillAddFirstListener?.(this); + this._listeners = contained; + this._options?.onDidAddFirstListener?.(this); + } else if (this._listeners instanceof UniqueContainer) { + this._deliveryQueue ??= new EventDeliveryQueuePrivate(); + this._listeners = [this._listeners, contained]; + } else { + this._listeners.push(contained); + } + this._size++; + const result = toDisposable(() => { + removeMonitor?.(); + this._removeListener(contained); + }); + if (disposables instanceof DisposableStore) { + disposables.add(result); + } else if (Array.isArray(disposables)) { + disposables.push(result); + } + return result; + }; + return this._event; + } + _removeListener(listener) { + this._options?.onWillRemoveListener?.(this); + if (!this._listeners) { + return; + } + if (this._size === 1) { + this._listeners = void 0; + this._options?.onDidRemoveLastListener?.(this); + this._size = 0; + return; + } + const listeners = this._listeners; + const index = listeners.indexOf(listener); + if (index === -1) { + console.log("disposed?", this._disposed); + console.log("size?", this._size); + console.log("arr?", JSON.stringify(this._listeners)); + throw new Error("Attempted to dispose unknown listener"); + } + this._size--; + listeners[index] = void 0; + const adjustDeliveryQueue = this._deliveryQueue.current === this; + if (this._size * compactionThreshold <= listeners.length) { + let n = 0; + for (let i = 0; i < listeners.length; i++) { + if (listeners[i]) { + listeners[n++] = listeners[i]; + } else if (adjustDeliveryQueue) { + this._deliveryQueue.end--; + if (n < this._deliveryQueue.i) { + this._deliveryQueue.i--; + } + } + } + listeners.length = n; + } + } + _deliver(listener, value) { + if (!listener) { + return; + } + const errorHandler2 = this._options?.onListenerError || onUnexpectedError; + if (!errorHandler2) { + listener.value(value); + return; + } + try { + listener.value(value); + } catch (e) { + errorHandler2(e); + } + } + /** Delivers items in the queue. Assumes the queue is ready to go. */ + _deliverQueue(dq) { + const listeners = dq.current._listeners; + while (dq.i < dq.end) { + this._deliver(listeners[dq.i++], dq.value); + } + dq.reset(); + } + /** + * To be kept private to fire an event to + * subscribers + */ + fire(event) { + if (this._deliveryQueue?.current) { + this._deliverQueue(this._deliveryQueue); + this._perfMon?.stop(); + } + this._perfMon?.start(this._size); + if (!this._listeners) ; else if (this._listeners instanceof UniqueContainer) { + this._deliver(this._listeners, event); + } else { + const dq = this._deliveryQueue; + dq.enqueue(this, event, this._listeners.length); + this._deliverQueue(dq); + } + this._perfMon?.stop(); + } + hasListeners() { + return this._size > 0; + } +}; +var EventDeliveryQueuePrivate = class { + constructor() { + /** + * Index in current's listener list. + */ + this.i = -1; + /** + * The last index in the listener's list to deliver. + */ + this.end = 0; + } + enqueue(emitter, value, end) { + this.i = 0; + this.end = end; + this.current = emitter; + this.value = value; + } + reset() { + this.i = this.end; + this.current = void 0; + this.value = void 0; + } +}; +var PauseableEmitter = class extends Emitter { + constructor(options2) { + super(options2); + this._isPaused = 0; + this._eventQueue = new LinkedList(); + this._mergeFn = options2?.merge; + } + get isPaused() { + return this._isPaused !== 0; + } + pause() { + this._isPaused++; + } + resume() { + if (this._isPaused !== 0 && --this._isPaused === 0) { + if (this._mergeFn) { + if (this._eventQueue.size > 0) { + const events = Array.from(this._eventQueue); + this._eventQueue.clear(); + super.fire(this._mergeFn(events)); + } + } else { + while (!this._isPaused && this._eventQueue.size !== 0) { + super.fire(this._eventQueue.shift()); + } + } + } + } + fire(event) { + if (this._size) { + if (this._isPaused !== 0) { + this._eventQueue.push(event); + } else { + super.fire(event); + } + } + } +}; +var DebounceEmitter = class extends PauseableEmitter { + constructor(options2) { + super(options2); + this._delay = options2.delay ?? 100; + } + fire(event) { + if (!this._handle) { + this.pause(); + this._handle = setTimeout(() => { + this._handle = void 0; + this.resume(); + }, this._delay); + } + super.fire(event); + } +}; +var MicrotaskEmitter = class extends Emitter { + constructor(options2) { + super(options2); + this._queuedEvents = []; + this._mergeFn = options2?.merge; + } + fire(event) { + if (!this.hasListeners()) { + return; + } + this._queuedEvents.push(event); + if (this._queuedEvents.length === 1) { + queueMicrotask(() => { + if (this._mergeFn) { + super.fire(this._mergeFn(this._queuedEvents)); + } else { + this._queuedEvents.forEach((e) => super.fire(e)); + } + this._queuedEvents = []; + }); + } + } +}; +var EventMultiplexer = class { + constructor() { + this.hasListeners = false; + this.events = []; + this.emitter = new Emitter({ + onWillAddFirstListener: () => this.onFirstListenerAdd(), + onDidRemoveLastListener: () => this.onLastListenerRemove() + }); + } + get event() { + return this.emitter.event; + } + add(event) { + const e = { event, listener: null }; + this.events.push(e); + if (this.hasListeners) { + this.hook(e); + } + const dispose2 = () => { + if (this.hasListeners) { + this.unhook(e); + } + const idx = this.events.indexOf(e); + this.events.splice(idx, 1); + }; + return toDisposable(createSingleCallFunction(dispose2)); + } + onFirstListenerAdd() { + this.hasListeners = true; + this.events.forEach((e) => this.hook(e)); + } + onLastListenerRemove() { + this.hasListeners = false; + this.events.forEach((e) => this.unhook(e)); + } + hook(e) { + e.listener = e.event((r) => this.emitter.fire(r)); + } + unhook(e) { + e.listener?.dispose(); + e.listener = null; + } + dispose() { + this.emitter.dispose(); + for (const e of this.events) { + e.listener?.dispose(); + } + this.events = []; + } +}; +var EventBufferer = class { + constructor() { + this.data = []; + } + wrapEvent(event, reduce, initial) { + return (listener, thisArgs, disposables) => { + return event((i) => { + const data = this.data[this.data.length - 1]; + if (!reduce) { + if (data) { + data.buffers.push(() => listener.call(thisArgs, i)); + } else { + listener.call(thisArgs, i); + } + return; + } + const reduceData = data; + if (!reduceData) { + listener.call(thisArgs, reduce(initial, i)); + return; + } + reduceData.items ??= []; + reduceData.items.push(i); + if (reduceData.buffers.length === 0) { + data.buffers.push(() => { + reduceData.reducedResult ??= initial ? reduceData.items.reduce(reduce, initial) : reduceData.items.reduce(reduce); + listener.call(thisArgs, reduceData.reducedResult); + }); + } + }, void 0, disposables); + }; + } + bufferEvents(fn) { + const data = { buffers: new Array() }; + this.data.push(data); + const r = fn(); + this.data.pop(); + data.buffers.forEach((flush) => flush()); + return r; + } +}; + +// ../../../../../base/common/assert.ts +function ok(value, message) { + if (!value) { + throw new Error(message ? `Assertion failed (${message})` : "Assertion Failed"); + } +} +function assertNever(value, message = "Unreachable") { + throw new Error(message); +} +function assertFn(condition) { + if (!condition()) { + debugger; + condition(); + onUnexpectedError(new BugIndicatingError("Assertion Failed")); + } +} + +// ../../../../../base/common/cancellation.ts +var shortcutEvent = Object.freeze(function(callback, context) { + const handle = setTimeout(callback.bind(context), 0); + return { dispose() { + clearTimeout(handle); + } }; +}); +var CancellationToken; +((CancellationToken6) => { + function isCancellationToken(thing) { + if (thing === CancellationToken6.None || thing === CancellationToken6.Cancelled) { + return true; + } + if (thing instanceof MutableToken) { + return true; + } + if (!thing || typeof thing !== "object") { + return false; + } + return typeof thing.isCancellationRequested === "boolean" && typeof thing.onCancellationRequested === "function"; + } + CancellationToken6.isCancellationToken = isCancellationToken; + CancellationToken6.None = Object.freeze({ + isCancellationRequested: false, + onCancellationRequested: Event.None + }); + CancellationToken6.Cancelled = Object.freeze({ + isCancellationRequested: true, + onCancellationRequested: shortcutEvent + }); +})(CancellationToken || (CancellationToken = {})); +var MutableToken = class { + constructor() { + this._isCancelled = false; + this._emitter = null; + } + cancel() { + if (!this._isCancelled) { + this._isCancelled = true; + if (this._emitter) { + this._emitter.fire(void 0); + this.dispose(); + } + } + } + get isCancellationRequested() { + return this._isCancelled; + } + get onCancellationRequested() { + if (this._isCancelled) { + return shortcutEvent; + } + if (!this._emitter) { + this._emitter = new Emitter(); + } + return this._emitter.event; + } + dispose() { + if (this._emitter) { + this._emitter.dispose(); + this._emitter = null; + } + } +}; +var CancellationTokenSource = class { + constructor(parent) { + this._token = void 0; + this._parentListener = void 0; + this._parentListener = parent && parent.onCancellationRequested(this.cancel, this); + } + get token() { + if (!this._token) { + this._token = new MutableToken(); + } + return this._token; + } + cancel() { + if (!this._token) { + this._token = CancellationToken.Cancelled; + } else if (this._token instanceof MutableToken) { + this._token.cancel(); + } + } + dispose(cancel = false) { + if (cancel) { + this.cancel(); + } + this._parentListener?.dispose(); + if (!this._token) { + this._token = CancellationToken.None; + } else if (this._token instanceof MutableToken) { + this._token.dispose(); + } + } +}; + +// ../../../../../base/common/platform.ts +var LANGUAGE_DEFAULT = "en"; +var _isWindows = false; +var _isMacintosh = false; +var _isLinux = false; +var _isNative = false; +var _isWeb = false; +var _isIOS = false; +var _locale = void 0; +var _language = LANGUAGE_DEFAULT; +var _platformLocale = LANGUAGE_DEFAULT; +var _translationsConfigFile = void 0; +var _userAgent = void 0; +var $globalThis = globalThis; +var nodeProcess = void 0; +if (typeof $globalThis.vscode !== "undefined" && typeof $globalThis.vscode.process !== "undefined") { + nodeProcess = $globalThis.vscode.process; +} else if (typeof process !== "undefined" && typeof process?.versions?.node === "string") { + nodeProcess = process; +} +var isElectronProcess = typeof nodeProcess?.versions?.electron === "string"; +var isElectronRenderer = isElectronProcess && nodeProcess?.type === "renderer"; +if (typeof nodeProcess === "object") { + _isWindows = nodeProcess.platform === "win32"; + _isMacintosh = nodeProcess.platform === "darwin"; + _isLinux = nodeProcess.platform === "linux"; + _isLinux && !!nodeProcess.env["SNAP"] && !!nodeProcess.env["SNAP_REVISION"]; + !!nodeProcess.env["CI"] || !!nodeProcess.env["BUILD_ARTIFACTSTAGINGDIRECTORY"]; + _locale = LANGUAGE_DEFAULT; + _language = LANGUAGE_DEFAULT; + const rawNlsConfig = nodeProcess.env["VSCODE_NLS_CONFIG"]; + if (rawNlsConfig) { + try { + const nlsConfig = JSON.parse(rawNlsConfig); + _locale = nlsConfig.userLocale; + _platformLocale = nlsConfig.osLocale; + _language = nlsConfig.resolvedLanguage || LANGUAGE_DEFAULT; + _translationsConfigFile = nlsConfig.languagePack?.translationsConfigFile; + } catch (e) { + } + } + _isNative = true; +} else if (typeof navigator === "object" && !isElectronRenderer) { + _userAgent = navigator.userAgent; + _isWindows = _userAgent.indexOf("Windows") >= 0; + _isMacintosh = _userAgent.indexOf("Macintosh") >= 0; + _isIOS = (_userAgent.indexOf("Macintosh") >= 0 || _userAgent.indexOf("iPad") >= 0 || _userAgent.indexOf("iPhone") >= 0) && !!navigator.maxTouchPoints && navigator.maxTouchPoints > 0; + _isLinux = _userAgent.indexOf("Linux") >= 0; + _userAgent?.indexOf("Mobi") >= 0; + _isWeb = true; + _language = getNLSLanguage() || LANGUAGE_DEFAULT; + _locale = navigator.language.toLowerCase(); + _platformLocale = _locale; +} else { + console.error("Unable to resolve platform."); +} +var isWindows = _isWindows; +var isMacintosh = _isMacintosh; +var isLinux = _isLinux; +var isNative = _isNative; +var isWeb = _isWeb; +var isWebWorker = _isWeb && typeof $globalThis.importScripts === "function"; +var webWorkerOrigin = isWebWorker ? $globalThis.origin : void 0; +var isIOS = _isIOS; +var userAgent = _userAgent; +var language = _language; +var Language; +((Language2) => { + function value() { + return language; + } + Language2.value = value; + function isDefaultVariant() { + if (language.length === 2) { + return language === "en"; + } else if (language.length >= 3) { + return language[0] === "e" && language[1] === "n" && language[2] === "-"; + } else { + return false; + } + } + Language2.isDefaultVariant = isDefaultVariant; + function isDefault() { + return language === "en"; + } + Language2.isDefault = isDefault; +})(Language || (Language = {})); +var setTimeout0IsFaster = typeof $globalThis.postMessage === "function" && !$globalThis.importScripts; +var setTimeout0 = (() => { + if (setTimeout0IsFaster) { + const pending = []; + $globalThis.addEventListener("message", (e) => { + if (e.data && e.data.vscodeScheduleAsyncWork) { + for (let i = 0, len = pending.length; i < len; i++) { + const candidate = pending[i]; + if (candidate.id === e.data.vscodeScheduleAsyncWork) { + pending.splice(i, 1); + candidate.callback(); + return; + } + } + } + }); + let lastId = 0; + return (callback) => { + const myId = ++lastId; + pending.push({ + id: myId, + callback + }); + $globalThis.postMessage({ vscodeScheduleAsyncWork: myId }, "*"); + }; + } + return (callback) => setTimeout(callback); +})(); +var OS = _isMacintosh || _isIOS ? 2 /* Macintosh */ : _isWindows ? 1 /* Windows */ : 3 /* Linux */; +var isChrome = !!(userAgent && userAgent.indexOf("Chrome") >= 0); +var isFirefox = !!(userAgent && userAgent.indexOf("Firefox") >= 0); +var isSafari = !!(!isChrome && (userAgent && userAgent.indexOf("Safari") >= 0)); +var isEdge = !!(userAgent && userAgent.indexOf("Edg/") >= 0); +!!(userAgent && userAgent.indexOf("Android") >= 0); + +// ../../../../../base/common/process.ts +var safeProcess; +var vscodeGlobal = globalThis.vscode; +if (typeof vscodeGlobal !== "undefined" && typeof vscodeGlobal.process !== "undefined") { + const sandboxProcess = vscodeGlobal.process; + safeProcess = { + get platform() { + return sandboxProcess.platform; + }, + get arch() { + return sandboxProcess.arch; + }, + get env() { + return sandboxProcess.env; + }, + cwd() { + return sandboxProcess.cwd(); + } + }; +} else if (typeof process !== "undefined" && typeof process?.versions?.node === "string") { + safeProcess = { + get platform() { + return process.platform; + }, + get arch() { + return process.arch; + }, + get env() { + return process.env; + }, + cwd() { + return process.env["VSCODE_CWD"] || process.cwd(); + } + }; +} else { + safeProcess = { + // Supported + get platform() { + return isWindows ? "win32" : isMacintosh ? "darwin" : "linux"; + }, + get arch() { + return void 0; + }, + // Unsupported + get env() { + return {}; + }, + cwd() { + return "/"; + } + }; +} +var cwd = safeProcess.cwd; +var env = safeProcess.env; +var platform = safeProcess.platform; +safeProcess.arch; + +// ../../../../../base/common/path.ts +var CHAR_UPPERCASE_A = 65; +var CHAR_LOWERCASE_A = 97; +var CHAR_UPPERCASE_Z = 90; +var CHAR_LOWERCASE_Z = 122; +var CHAR_DOT = 46; +var CHAR_FORWARD_SLASH = 47; +var CHAR_BACKWARD_SLASH = 92; +var CHAR_COLON = 58; +var CHAR_QUESTION_MARK = 63; +var ErrorInvalidArgType = class extends Error { + constructor(name, expected, actual) { + let determiner; + if (typeof expected === "string" && expected.indexOf("not ") === 0) { + determiner = "must not be"; + expected = expected.replace(/^not /, ""); + } else { + determiner = "must be"; + } + const type = name.indexOf(".") !== -1 ? "property" : "argument"; + let msg = `The "${name}" ${type} ${determiner} of type ${expected}`; + msg += `. Received type ${typeof actual}`; + super(msg); + this.code = "ERR_INVALID_ARG_TYPE"; + } +}; +function validateObject(pathObject, name) { + if (pathObject === null || typeof pathObject !== "object") { + throw new ErrorInvalidArgType(name, "Object", pathObject); + } +} +function validateString(value, name) { + if (typeof value !== "string") { + throw new ErrorInvalidArgType(name, "string", value); + } +} +var platformIsWin32 = platform === "win32"; +function isPathSeparator(code) { + return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH; +} +function isPosixPathSeparator(code) { + return code === CHAR_FORWARD_SLASH; +} +function isWindowsDeviceRoot(code) { + return code >= CHAR_UPPERCASE_A && code <= CHAR_UPPERCASE_Z || code >= CHAR_LOWERCASE_A && code <= CHAR_LOWERCASE_Z; +} +function normalizeString(path, allowAboveRoot, separator, isPathSeparator3) { + let res = ""; + let lastSegmentLength = 0; + let lastSlash = -1; + let dots = 0; + let code = 0; + for (let i = 0; i <= path.length; ++i) { + if (i < path.length) { + code = path.charCodeAt(i); + } else if (isPathSeparator3(code)) { + break; + } else { + code = CHAR_FORWARD_SLASH; + } + if (isPathSeparator3(code)) { + if (lastSlash === i - 1 || dots === 1) ; else if (dots === 2) { + if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== CHAR_DOT || res.charCodeAt(res.length - 2) !== CHAR_DOT) { + if (res.length > 2) { + const lastSlashIndex = res.lastIndexOf(separator); + if (lastSlashIndex === -1) { + res = ""; + lastSegmentLength = 0; + } else { + res = res.slice(0, lastSlashIndex); + lastSegmentLength = res.length - 1 - res.lastIndexOf(separator); + } + lastSlash = i; + dots = 0; + continue; + } else if (res.length !== 0) { + res = ""; + lastSegmentLength = 0; + lastSlash = i; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + res += res.length > 0 ? `${separator}..` : ".."; + lastSegmentLength = 2; + } + } else { + if (res.length > 0) { + res += `${separator}${path.slice(lastSlash + 1, i)}`; + } else { + res = path.slice(lastSlash + 1, i); + } + lastSegmentLength = i - lastSlash - 1; + } + lastSlash = i; + dots = 0; + } else if (code === CHAR_DOT && dots !== -1) { + ++dots; + } else { + dots = -1; + } + } + return res; +} +function formatExt(ext) { + return ext ? `${ext[0] === "." ? "" : "."}${ext}` : ""; +} +function _format2(sep2, pathObject) { + validateObject(pathObject, "pathObject"); + const dir = pathObject.dir || pathObject.root; + const base = pathObject.base || `${pathObject.name || ""}${formatExt(pathObject.ext)}`; + if (!dir) { + return base; + } + return dir === pathObject.root ? `${dir}${base}` : `${dir}${sep2}${base}`; +} +var win32 = { + // path.resolve([from ...], to) + resolve(...pathSegments) { + let resolvedDevice = ""; + let resolvedTail = ""; + let resolvedAbsolute = false; + for (let i = pathSegments.length - 1; i >= -1; i--) { + let path; + if (i >= 0) { + path = pathSegments[i]; + validateString(path, `paths[${i}]`); + if (path.length === 0) { + continue; + } + } else if (resolvedDevice.length === 0) { + path = cwd(); + } else { + path = env[`=${resolvedDevice}`] || cwd(); + if (path === void 0 || path.slice(0, 2).toLowerCase() !== resolvedDevice.toLowerCase() && path.charCodeAt(2) === CHAR_BACKWARD_SLASH) { + path = `${resolvedDevice}\\`; + } + } + const len = path.length; + let rootEnd = 0; + let device = ""; + let isAbsolute2 = false; + const code = path.charCodeAt(0); + if (len === 1) { + if (isPathSeparator(code)) { + rootEnd = 1; + isAbsolute2 = true; + } + } else if (isPathSeparator(code)) { + isAbsolute2 = true; + if (isPathSeparator(path.charCodeAt(1))) { + let j = 2; + let last = j; + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + last = j; + while (j < len && isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + last = j; + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j === len || j !== last) { + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } else { + rootEnd = 1; + } + } else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) { + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2 && isPathSeparator(path.charCodeAt(2))) { + isAbsolute2 = true; + rootEnd = 3; + } + } + if (device.length > 0) { + if (resolvedDevice.length > 0) { + if (device.toLowerCase() !== resolvedDevice.toLowerCase()) { + continue; + } + } else { + resolvedDevice = device; + } + } + if (resolvedAbsolute) { + if (resolvedDevice.length > 0) { + break; + } + } else { + resolvedTail = `${path.slice(rootEnd)}\\${resolvedTail}`; + resolvedAbsolute = isAbsolute2; + if (isAbsolute2 && resolvedDevice.length > 0) { + break; + } + } + } + resolvedTail = normalizeString( + resolvedTail, + !resolvedAbsolute, + "\\", + isPathSeparator + ); + return resolvedAbsolute ? `${resolvedDevice}\\${resolvedTail}` : `${resolvedDevice}${resolvedTail}` || "."; + }, + normalize(path) { + validateString(path, "path"); + const len = path.length; + if (len === 0) { + return "."; + } + let rootEnd = 0; + let device; + let isAbsolute2 = false; + const code = path.charCodeAt(0); + if (len === 1) { + return isPosixPathSeparator(code) ? "\\" : path; + } + if (isPathSeparator(code)) { + isAbsolute2 = true; + if (isPathSeparator(path.charCodeAt(1))) { + let j = 2; + let last = j; + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + last = j; + while (j < len && isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + last = j; + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j === len) { + return `\\\\${firstPart}\\${path.slice(last)}\\`; + } + if (j !== last) { + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } else { + rootEnd = 1; + } + } else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) { + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2 && isPathSeparator(path.charCodeAt(2))) { + isAbsolute2 = true; + rootEnd = 3; + } + } + let tail2 = rootEnd < len ? normalizeString(path.slice(rootEnd), !isAbsolute2, "\\", isPathSeparator) : ""; + if (tail2.length === 0 && !isAbsolute2) { + tail2 = "."; + } + if (tail2.length > 0 && isPathSeparator(path.charCodeAt(len - 1))) { + tail2 += "\\"; + } + if (device === void 0) { + return isAbsolute2 ? `\\${tail2}` : tail2; + } + return isAbsolute2 ? `${device}\\${tail2}` : `${device}${tail2}`; + }, + isAbsolute(path) { + validateString(path, "path"); + const len = path.length; + if (len === 0) { + return false; + } + const code = path.charCodeAt(0); + return isPathSeparator(code) || // Possible device root + len > 2 && isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON && isPathSeparator(path.charCodeAt(2)); + }, + join(...paths) { + if (paths.length === 0) { + return "."; + } + let joined; + let firstPart; + for (let i = 0; i < paths.length; ++i) { + const arg = paths[i]; + validateString(arg, "path"); + if (arg.length > 0) { + if (joined === void 0) { + joined = firstPart = arg; + } else { + joined += `\\${arg}`; + } + } + } + if (joined === void 0) { + return "."; + } + let needsReplace = true; + let slashCount = 0; + if (typeof firstPart === "string" && isPathSeparator(firstPart.charCodeAt(0))) { + ++slashCount; + const firstLen = firstPart.length; + if (firstLen > 1 && isPathSeparator(firstPart.charCodeAt(1))) { + ++slashCount; + if (firstLen > 2) { + if (isPathSeparator(firstPart.charCodeAt(2))) { + ++slashCount; + } else { + needsReplace = false; + } + } + } + } + if (needsReplace) { + while (slashCount < joined.length && isPathSeparator(joined.charCodeAt(slashCount))) { + slashCount++; + } + if (slashCount >= 2) { + joined = `\\${joined.slice(slashCount)}`; + } + } + return win32.normalize(joined); + }, + // It will solve the relative path from `from` to `to`, for instance: + // from = 'C:\\orandea\\test\\aaa' + // to = 'C:\\orandea\\impl\\bbb' + // The output of the function should be: '..\\..\\impl\\bbb' + relative(from, to) { + validateString(from, "from"); + validateString(to, "to"); + if (from === to) { + return ""; + } + const fromOrig = win32.resolve(from); + const toOrig = win32.resolve(to); + if (fromOrig === toOrig) { + return ""; + } + from = fromOrig.toLowerCase(); + to = toOrig.toLowerCase(); + if (from === to) { + return ""; + } + let fromStart = 0; + while (fromStart < from.length && from.charCodeAt(fromStart) === CHAR_BACKWARD_SLASH) { + fromStart++; + } + let fromEnd = from.length; + while (fromEnd - 1 > fromStart && from.charCodeAt(fromEnd - 1) === CHAR_BACKWARD_SLASH) { + fromEnd--; + } + const fromLen = fromEnd - fromStart; + let toStart = 0; + while (toStart < to.length && to.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) { + toStart++; + } + let toEnd = to.length; + while (toEnd - 1 > toStart && to.charCodeAt(toEnd - 1) === CHAR_BACKWARD_SLASH) { + toEnd--; + } + const toLen = toEnd - toStart; + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for (; i < length; i++) { + const fromCode = from.charCodeAt(fromStart + i); + if (fromCode !== to.charCodeAt(toStart + i)) { + break; + } else if (fromCode === CHAR_BACKWARD_SLASH) { + lastCommonSep = i; + } + } + if (i !== length) { + if (lastCommonSep === -1) { + return toOrig; + } + } else { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_BACKWARD_SLASH) { + return toOrig.slice(toStart + i + 1); + } + if (i === 2) { + return toOrig.slice(toStart + i); + } + } + if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_BACKWARD_SLASH) { + lastCommonSep = i; + } else if (i === 2) { + lastCommonSep = 3; + } + } + if (lastCommonSep === -1) { + lastCommonSep = 0; + } + } + let out = ""; + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || from.charCodeAt(i) === CHAR_BACKWARD_SLASH) { + out += out.length === 0 ? ".." : "\\.."; + } + } + toStart += lastCommonSep; + if (out.length > 0) { + return `${out}${toOrig.slice(toStart, toEnd)}`; + } + if (toOrig.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) { + ++toStart; + } + return toOrig.slice(toStart, toEnd); + }, + toNamespacedPath(path) { + if (typeof path !== "string" || path.length === 0) { + return path; + } + const resolvedPath = win32.resolve(path); + if (resolvedPath.length <= 2) { + return path; + } + if (resolvedPath.charCodeAt(0) === CHAR_BACKWARD_SLASH) { + if (resolvedPath.charCodeAt(1) === CHAR_BACKWARD_SLASH) { + const code = resolvedPath.charCodeAt(2); + if (code !== CHAR_QUESTION_MARK && code !== CHAR_DOT) { + return `\\\\?\\UNC\\${resolvedPath.slice(2)}`; + } + } + } else if (isWindowsDeviceRoot(resolvedPath.charCodeAt(0)) && resolvedPath.charCodeAt(1) === CHAR_COLON && resolvedPath.charCodeAt(2) === CHAR_BACKWARD_SLASH) { + return `\\\\?\\${resolvedPath}`; + } + return path; + }, + dirname(path) { + validateString(path, "path"); + const len = path.length; + if (len === 0) { + return "."; + } + let rootEnd = -1; + let offset = 0; + const code = path.charCodeAt(0); + if (len === 1) { + return isPathSeparator(code) ? path : "."; + } + if (isPathSeparator(code)) { + rootEnd = offset = 1; + if (isPathSeparator(path.charCodeAt(1))) { + let j = 2; + let last = j; + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + last = j; + while (j < len && isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + last = j; + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j === len) { + return path; + } + if (j !== last) { + rootEnd = offset = j + 1; + } + } + } + } + } else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) { + rootEnd = len > 2 && isPathSeparator(path.charCodeAt(2)) ? 3 : 2; + offset = rootEnd; + } + let end = -1; + let matchedSlash = true; + for (let i = len - 1; i >= offset; --i) { + if (isPathSeparator(path.charCodeAt(i))) { + if (!matchedSlash) { + end = i; + break; + } + } else { + matchedSlash = false; + } + } + if (end === -1) { + if (rootEnd === -1) { + return "."; + } + end = rootEnd; + } + return path.slice(0, end); + }, + basename(path, suffix) { + if (suffix !== void 0) { + validateString(suffix, "suffix"); + } + validateString(path, "path"); + let start = 0; + let end = -1; + let matchedSlash = true; + let i; + if (path.length >= 2 && isWindowsDeviceRoot(path.charCodeAt(0)) && path.charCodeAt(1) === CHAR_COLON) { + start = 2; + } + if (suffix !== void 0 && suffix.length > 0 && suffix.length <= path.length) { + if (suffix === path) { + return ""; + } + let extIdx = suffix.length - 1; + let firstNonSlashEnd = -1; + for (i = path.length - 1; i >= start; --i) { + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + if (code === suffix.charCodeAt(extIdx)) { + if (--extIdx === -1) { + end = i; + } + } else { + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + if (start === end) { + end = firstNonSlashEnd; + } else if (end === -1) { + end = path.length; + } + return path.slice(start, end); + } + for (i = path.length - 1; i >= start; --i) { + if (isPathSeparator(path.charCodeAt(i))) { + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + matchedSlash = false; + end = i + 1; + } + } + if (end === -1) { + return ""; + } + return path.slice(start, end); + }, + extname(path) { + validateString(path, "path"); + let start = 0; + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + let preDotState = 0; + if (path.length >= 2 && path.charCodeAt(1) === CHAR_COLON && isWindowsDeviceRoot(path.charCodeAt(0))) { + start = startPart = 2; + } + for (let i = path.length - 1; i >= start; --i) { + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + if (startDot === -1) { + startDot = i; + } else if (preDotState !== 1) { + preDotState = 1; + } + } else if (startDot !== -1) { + preDotState = -1; + } + } + if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot + preDotState === 0 || // The (right-most) trimmed path component is exactly '..' + preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + return ""; + } + return path.slice(startDot, end); + }, + format: _format2.bind(null, "\\"), + parse(path) { + validateString(path, "path"); + const ret = { root: "", dir: "", base: "", ext: "", name: "" }; + if (path.length === 0) { + return ret; + } + const len = path.length; + let rootEnd = 0; + let code = path.charCodeAt(0); + if (len === 1) { + if (isPathSeparator(code)) { + ret.root = ret.dir = path; + return ret; + } + ret.base = ret.name = path; + return ret; + } + if (isPathSeparator(code)) { + rootEnd = 1; + if (isPathSeparator(path.charCodeAt(1))) { + let j = 2; + let last = j; + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + last = j; + while (j < len && isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + last = j; + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j === len) { + rootEnd = j; + } else if (j !== last) { + rootEnd = j + 1; + } + } + } + } + } else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) { + if (len <= 2) { + ret.root = ret.dir = path; + return ret; + } + rootEnd = 2; + if (isPathSeparator(path.charCodeAt(2))) { + if (len === 3) { + ret.root = ret.dir = path; + return ret; + } + rootEnd = 3; + } + } + if (rootEnd > 0) { + ret.root = path.slice(0, rootEnd); + } + let startDot = -1; + let startPart = rootEnd; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + let preDotState = 0; + for (; i >= rootEnd; --i) { + code = path.charCodeAt(i); + if (isPathSeparator(code)) { + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + if (startDot === -1) { + startDot = i; + } else if (preDotState !== 1) { + preDotState = 1; + } + } else if (startDot !== -1) { + preDotState = -1; + } + } + if (end !== -1) { + if (startDot === -1 || // We saw a non-dot character immediately before the dot + preDotState === 0 || // The (right-most) trimmed path component is exactly '..' + preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + ret.base = ret.name = path.slice(startPart, end); + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + ret.ext = path.slice(startDot, end); + } + } + if (startPart > 0 && startPart !== rootEnd) { + ret.dir = path.slice(0, startPart - 1); + } else { + ret.dir = ret.root; + } + return ret; + }, + sep: "\\", + delimiter: ";", + win32: null, + posix: null +}; +var posixCwd = (() => { + if (platformIsWin32) { + const regexp = /\\/g; + return () => { + const cwd2 = cwd().replace(regexp, "/"); + return cwd2.slice(cwd2.indexOf("/")); + }; + } + return () => cwd(); +})(); +var posix = { + // path.resolve([from ...], to) + resolve(...pathSegments) { + let resolvedPath = ""; + let resolvedAbsolute = false; + for (let i = pathSegments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + const path = i >= 0 ? pathSegments[i] : posixCwd(); + validateString(path, `paths[${i}]`); + if (path.length === 0) { + continue; + } + resolvedPath = `${path}/${resolvedPath}`; + resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + } + resolvedPath = normalizeString( + resolvedPath, + !resolvedAbsolute, + "/", + isPosixPathSeparator + ); + if (resolvedAbsolute) { + return `/${resolvedPath}`; + } + return resolvedPath.length > 0 ? resolvedPath : "."; + }, + normalize(path) { + validateString(path, "path"); + if (path.length === 0) { + return "."; + } + const isAbsolute2 = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + const trailingSeparator = path.charCodeAt(path.length - 1) === CHAR_FORWARD_SLASH; + path = normalizeString(path, !isAbsolute2, "/", isPosixPathSeparator); + if (path.length === 0) { + if (isAbsolute2) { + return "/"; + } + return trailingSeparator ? "./" : "."; + } + if (trailingSeparator) { + path += "/"; + } + return isAbsolute2 ? `/${path}` : path; + }, + isAbsolute(path) { + validateString(path, "path"); + return path.length > 0 && path.charCodeAt(0) === CHAR_FORWARD_SLASH; + }, + join(...paths) { + if (paths.length === 0) { + return "."; + } + let joined; + for (let i = 0; i < paths.length; ++i) { + const arg = paths[i]; + validateString(arg, "path"); + if (arg.length > 0) { + if (joined === void 0) { + joined = arg; + } else { + joined += `/${arg}`; + } + } + } + if (joined === void 0) { + return "."; + } + return posix.normalize(joined); + }, + relative(from, to) { + validateString(from, "from"); + validateString(to, "to"); + if (from === to) { + return ""; + } + from = posix.resolve(from); + to = posix.resolve(to); + if (from === to) { + return ""; + } + const fromStart = 1; + const fromEnd = from.length; + const fromLen = fromEnd - fromStart; + const toStart = 1; + const toLen = to.length - toStart; + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for (; i < length; i++) { + const fromCode = from.charCodeAt(fromStart + i); + if (fromCode !== to.charCodeAt(toStart + i)) { + break; + } else if (fromCode === CHAR_FORWARD_SLASH) { + lastCommonSep = i; + } + } + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_FORWARD_SLASH) { + return to.slice(toStart + i + 1); + } + if (i === 0) { + return to.slice(toStart + i); + } + } else if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) { + lastCommonSep = i; + } else if (i === 0) { + lastCommonSep = 0; + } + } + } + let out = ""; + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || from.charCodeAt(i) === CHAR_FORWARD_SLASH) { + out += out.length === 0 ? ".." : "/.."; + } + } + return `${out}${to.slice(toStart + lastCommonSep)}`; + }, + toNamespacedPath(path) { + return path; + }, + dirname(path) { + validateString(path, "path"); + if (path.length === 0) { + return "."; + } + const hasRoot = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + let end = -1; + let matchedSlash = true; + for (let i = path.length - 1; i >= 1; --i) { + if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) { + if (!matchedSlash) { + end = i; + break; + } + } else { + matchedSlash = false; + } + } + if (end === -1) { + return hasRoot ? "/" : "."; + } + if (hasRoot && end === 1) { + return "//"; + } + return path.slice(0, end); + }, + basename(path, suffix) { + if (suffix !== void 0) { + validateString(suffix, "ext"); + } + validateString(path, "path"); + let start = 0; + let end = -1; + let matchedSlash = true; + let i; + if (suffix !== void 0 && suffix.length > 0 && suffix.length <= path.length) { + if (suffix === path) { + return ""; + } + let extIdx = suffix.length - 1; + let firstNonSlashEnd = -1; + for (i = path.length - 1; i >= 0; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + if (code === suffix.charCodeAt(extIdx)) { + if (--extIdx === -1) { + end = i; + } + } else { + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + if (start === end) { + end = firstNonSlashEnd; + } else if (end === -1) { + end = path.length; + } + return path.slice(start, end); + } + for (i = path.length - 1; i >= 0; --i) { + if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) { + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + matchedSlash = false; + end = i + 1; + } + } + if (end === -1) { + return ""; + } + return path.slice(start, end); + }, + extname(path) { + validateString(path, "path"); + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + let preDotState = 0; + for (let i = path.length - 1; i >= 0; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + if (startDot === -1) { + startDot = i; + } else if (preDotState !== 1) { + preDotState = 1; + } + } else if (startDot !== -1) { + preDotState = -1; + } + } + if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot + preDotState === 0 || // The (right-most) trimmed path component is exactly '..' + preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + return ""; + } + return path.slice(startDot, end); + }, + format: _format2.bind(null, "/"), + parse(path) { + validateString(path, "path"); + const ret = { root: "", dir: "", base: "", ext: "", name: "" }; + if (path.length === 0) { + return ret; + } + const isAbsolute2 = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + let start; + if (isAbsolute2) { + ret.root = "/"; + start = 1; + } else { + start = 0; + } + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + let preDotState = 0; + for (; i >= start; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + if (startDot === -1) { + startDot = i; + } else if (preDotState !== 1) { + preDotState = 1; + } + } else if (startDot !== -1) { + preDotState = -1; + } + } + if (end !== -1) { + const start2 = startPart === 0 && isAbsolute2 ? 1 : startPart; + if (startDot === -1 || // We saw a non-dot character immediately before the dot + preDotState === 0 || // The (right-most) trimmed path component is exactly '..' + preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + ret.base = ret.name = path.slice(start2, end); + } else { + ret.name = path.slice(start2, startDot); + ret.base = path.slice(start2, end); + ret.ext = path.slice(startDot, end); + } + } + if (startPart > 0) { + ret.dir = path.slice(0, startPart - 1); + } else if (isAbsolute2) { + ret.dir = "/"; + } + return ret; + }, + sep: "/", + delimiter: ":", + win32: null, + posix: null +}; +posix.win32 = win32.win32 = win32; +posix.posix = win32.posix = posix; +var normalize = platformIsWin32 ? win32.normalize : posix.normalize; +platformIsWin32 ? win32.isAbsolute : posix.isAbsolute; +var join = platformIsWin32 ? win32.join : posix.join; +var resolve = platformIsWin32 ? win32.resolve : posix.resolve; +var relative = platformIsWin32 ? win32.relative : posix.relative; +var dirname = platformIsWin32 ? win32.dirname : posix.dirname; +platformIsWin32 ? win32.basename : posix.basename; +platformIsWin32 ? win32.extname : posix.extname; +platformIsWin32 ? win32.format : posix.format; +platformIsWin32 ? win32.parse : posix.parse; +platformIsWin32 ? win32.toNamespacedPath : posix.toNamespacedPath; +var sep = platformIsWin32 ? win32.sep : posix.sep; +platformIsWin32 ? win32.delimiter : posix.delimiter; + +// ../../../../../base/common/cache.ts +function identity(t) { + return t; +} +var LRUCachedFunction = class { + constructor(arg1, arg2) { + this.lastCache = void 0; + this.lastArgKey = void 0; + if (typeof arg1 === "function") { + this._fn = arg1; + this._computeKey = identity; + } else { + this._fn = arg2; + this._computeKey = arg1.getCacheKey; + } + } + get(arg) { + const key = this._computeKey(arg); + if (this.lastArgKey !== key) { + this.lastArgKey = key; + this.lastCache = this._fn(arg); + } + return this.lastCache; + } +}; + +// ../../../../../base/common/lazy.ts +var Lazy = class { + constructor(executor) { + this.executor = executor; + this._didRun = false; + } + /** + * True if the lazy value has been resolved. + */ + get hasValue() { + return this._didRun; + } + /** + * Get the wrapped value. + * + * This will force evaluation of the lazy value if it has not been resolved yet. Lazy values are only + * resolved once. `getValue` will re-throw exceptions that are hit while resolving the value + */ + get value() { + if (!this._didRun) { + try { + this._value = this.executor(); + } catch (err) { + this._error = err; + } finally { + this._didRun = true; + } + } + if (this._error) { + throw this._error; + } + return this._value; + } + /** + * Get the wrapped value without forcing evaluation. + */ + get rawValue() { + return this._value; + } +}; + +// ../../../../../base/common/strings.ts +function isFalsyOrWhitespace(str) { + if (!str || typeof str !== "string") { + return true; + } + return str.trim().length === 0; +} +function escape(html2) { + return html2.replace(/[<>&]/g, function(match) { + switch (match) { + case "<": + return "<"; + case ">": + return ">"; + case "&": + return "&"; + default: + return match; + } + }); +} +function escapeRegExpCharacters(value) { + return value.replace(/[\\\{\}\*\+\?\|\^\$\.\[\]\(\)]/g, "\\$&"); +} +function compare(a, b) { + if (a < b) { + return -1; + } else if (a > b) { + return 1; + } else { + return 0; + } +} +function compareSubstring(a, b, aStart = 0, aEnd = a.length, bStart = 0, bEnd = b.length) { + for (; aStart < aEnd && bStart < bEnd; aStart++, bStart++) { + const codeA = a.charCodeAt(aStart); + const codeB = b.charCodeAt(bStart); + if (codeA < codeB) { + return -1; + } else if (codeA > codeB) { + return 1; + } + } + const aLen = aEnd - aStart; + const bLen = bEnd - bStart; + if (aLen < bLen) { + return -1; + } else if (aLen > bLen) { + return 1; + } + return 0; +} +function compareSubstringIgnoreCase(a, b, aStart = 0, aEnd = a.length, bStart = 0, bEnd = b.length) { + for (; aStart < aEnd && bStart < bEnd; aStart++, bStart++) { + let codeA = a.charCodeAt(aStart); + let codeB = b.charCodeAt(bStart); + if (codeA === codeB) { + continue; + } + if (codeA >= 128 || codeB >= 128) { + return compareSubstring(a.toLowerCase(), b.toLowerCase(), aStart, aEnd, bStart, bEnd); + } + if (isLowerAsciiLetter(codeA)) { + codeA -= 32; + } + if (isLowerAsciiLetter(codeB)) { + codeB -= 32; + } + const diff = codeA - codeB; + if (diff === 0) { + continue; + } + return diff; + } + const aLen = aEnd - aStart; + const bLen = bEnd - bStart; + if (aLen < bLen) { + return -1; + } else if (aLen > bLen) { + return 1; + } + return 0; +} +function isLowerAsciiLetter(code) { + return code >= 97 /* a */ && code <= 122 /* z */; +} +function equalsIgnoreCase(a, b) { + return a.length === b.length && compareSubstringIgnoreCase(a, b) === 0; +} +function startsWithIgnoreCase(str, candidate) { + const candidateLength = candidate.length; + if (candidate.length > str.length) { + return false; + } + return compareSubstringIgnoreCase(str, candidate, 0, candidateLength) === 0; +} +function isHighSurrogate(charCode) { + return 55296 <= charCode && charCode <= 56319; +} +function isLowSurrogate(charCode) { + return 56320 <= charCode && charCode <= 57343; +} +function computeCodePoint(highSurrogate, lowSurrogate) { + return (highSurrogate - 55296 << 10) + (lowSurrogate - 56320) + 65536; +} +function isEmojiImprecise(x) { + return x >= 127462 && x <= 127487 || x === 8986 || x === 8987 || x === 9200 || x === 9203 || x >= 9728 && x <= 10175 || x === 11088 || x === 11093 || x >= 127744 && x <= 128591 || x >= 128640 && x <= 128764 || x >= 128992 && x <= 129008 || x >= 129280 && x <= 129535 || x >= 129648 && x <= 129782; +} +(class _GraphemeBreakTree { + static { + this._INSTANCE = null; + } + static getInstance() { + if (!_GraphemeBreakTree._INSTANCE) { + _GraphemeBreakTree._INSTANCE = new _GraphemeBreakTree(); + } + return _GraphemeBreakTree._INSTANCE; + } + constructor() { + this._data = getGraphemeBreakRawData(); + } + getGraphemeBreakType(codePoint) { + if (codePoint < 32) { + if (codePoint === 10 /* LineFeed */) { + return 3 /* LF */; + } + if (codePoint === 13 /* CarriageReturn */) { + return 2 /* CR */; + } + return 4 /* Control */; + } + if (codePoint < 127) { + return 0 /* Other */; + } + const data = this._data; + const nodeCount = data.length / 3; + let nodeIndex = 1; + while (nodeIndex <= nodeCount) { + if (codePoint < data[3 * nodeIndex]) { + nodeIndex = 2 * nodeIndex; + } else if (codePoint > data[3 * nodeIndex + 1]) { + nodeIndex = 2 * nodeIndex + 1; + } else { + return data[3 * nodeIndex + 2]; + } + } + return 0 /* Other */; + } +}); +function getGraphemeBreakRawData() { + return JSON.parse("[0,0,0,51229,51255,12,44061,44087,12,127462,127487,6,7083,7085,5,47645,47671,12,54813,54839,12,128678,128678,14,3270,3270,5,9919,9923,14,45853,45879,12,49437,49463,12,53021,53047,12,71216,71218,7,128398,128399,14,129360,129374,14,2519,2519,5,4448,4519,9,9742,9742,14,12336,12336,14,44957,44983,12,46749,46775,12,48541,48567,12,50333,50359,12,52125,52151,12,53917,53943,12,69888,69890,5,73018,73018,5,127990,127990,14,128558,128559,14,128759,128760,14,129653,129655,14,2027,2035,5,2891,2892,7,3761,3761,5,6683,6683,5,8293,8293,4,9825,9826,14,9999,9999,14,43452,43453,5,44509,44535,12,45405,45431,12,46301,46327,12,47197,47223,12,48093,48119,12,48989,49015,12,49885,49911,12,50781,50807,12,51677,51703,12,52573,52599,12,53469,53495,12,54365,54391,12,65279,65279,4,70471,70472,7,72145,72147,7,119173,119179,5,127799,127818,14,128240,128244,14,128512,128512,14,128652,128652,14,128721,128722,14,129292,129292,14,129445,129450,14,129734,129743,14,1476,1477,5,2366,2368,7,2750,2752,7,3076,3076,5,3415,3415,5,4141,4144,5,6109,6109,5,6964,6964,5,7394,7400,5,9197,9198,14,9770,9770,14,9877,9877,14,9968,9969,14,10084,10084,14,43052,43052,5,43713,43713,5,44285,44311,12,44733,44759,12,45181,45207,12,45629,45655,12,46077,46103,12,46525,46551,12,46973,46999,12,47421,47447,12,47869,47895,12,48317,48343,12,48765,48791,12,49213,49239,12,49661,49687,12,50109,50135,12,50557,50583,12,51005,51031,12,51453,51479,12,51901,51927,12,52349,52375,12,52797,52823,12,53245,53271,12,53693,53719,12,54141,54167,12,54589,54615,12,55037,55063,12,69506,69509,5,70191,70193,5,70841,70841,7,71463,71467,5,72330,72342,5,94031,94031,5,123628,123631,5,127763,127765,14,127941,127941,14,128043,128062,14,128302,128317,14,128465,128467,14,128539,128539,14,128640,128640,14,128662,128662,14,128703,128703,14,128745,128745,14,129004,129007,14,129329,129330,14,129402,129402,14,129483,129483,14,129686,129704,14,130048,131069,14,173,173,4,1757,1757,1,2200,2207,5,2434,2435,7,2631,2632,5,2817,2817,5,3008,3008,5,3201,3201,5,3387,3388,5,3542,3542,5,3902,3903,7,4190,4192,5,6002,6003,5,6439,6440,5,6765,6770,7,7019,7027,5,7154,7155,7,8205,8205,13,8505,8505,14,9654,9654,14,9757,9757,14,9792,9792,14,9852,9853,14,9890,9894,14,9937,9937,14,9981,9981,14,10035,10036,14,11035,11036,14,42654,42655,5,43346,43347,7,43587,43587,5,44006,44007,7,44173,44199,12,44397,44423,12,44621,44647,12,44845,44871,12,45069,45095,12,45293,45319,12,45517,45543,12,45741,45767,12,45965,45991,12,46189,46215,12,46413,46439,12,46637,46663,12,46861,46887,12,47085,47111,12,47309,47335,12,47533,47559,12,47757,47783,12,47981,48007,12,48205,48231,12,48429,48455,12,48653,48679,12,48877,48903,12,49101,49127,12,49325,49351,12,49549,49575,12,49773,49799,12,49997,50023,12,50221,50247,12,50445,50471,12,50669,50695,12,50893,50919,12,51117,51143,12,51341,51367,12,51565,51591,12,51789,51815,12,52013,52039,12,52237,52263,12,52461,52487,12,52685,52711,12,52909,52935,12,53133,53159,12,53357,53383,12,53581,53607,12,53805,53831,12,54029,54055,12,54253,54279,12,54477,54503,12,54701,54727,12,54925,54951,12,55149,55175,12,68101,68102,5,69762,69762,7,70067,70069,7,70371,70378,5,70720,70721,7,71087,71087,5,71341,71341,5,71995,71996,5,72249,72249,7,72850,72871,5,73109,73109,5,118576,118598,5,121505,121519,5,127245,127247,14,127568,127569,14,127777,127777,14,127872,127891,14,127956,127967,14,128015,128016,14,128110,128172,14,128259,128259,14,128367,128368,14,128424,128424,14,128488,128488,14,128530,128532,14,128550,128551,14,128566,128566,14,128647,128647,14,128656,128656,14,128667,128673,14,128691,128693,14,128715,128715,14,128728,128732,14,128752,128752,14,128765,128767,14,129096,129103,14,129311,129311,14,129344,129349,14,129394,129394,14,129413,129425,14,129466,129471,14,129511,129535,14,129664,129666,14,129719,129722,14,129760,129767,14,917536,917631,5,13,13,2,1160,1161,5,1564,1564,4,1807,1807,1,2085,2087,5,2307,2307,7,2382,2383,7,2497,2500,5,2563,2563,7,2677,2677,5,2763,2764,7,2879,2879,5,2914,2915,5,3021,3021,5,3142,3144,5,3263,3263,5,3285,3286,5,3398,3400,7,3530,3530,5,3633,3633,5,3864,3865,5,3974,3975,5,4155,4156,7,4229,4230,5,5909,5909,7,6078,6085,7,6277,6278,5,6451,6456,7,6744,6750,5,6846,6846,5,6972,6972,5,7074,7077,5,7146,7148,7,7222,7223,5,7416,7417,5,8234,8238,4,8417,8417,5,9000,9000,14,9203,9203,14,9730,9731,14,9748,9749,14,9762,9763,14,9776,9783,14,9800,9811,14,9831,9831,14,9872,9873,14,9882,9882,14,9900,9903,14,9929,9933,14,9941,9960,14,9974,9974,14,9989,9989,14,10006,10006,14,10062,10062,14,10160,10160,14,11647,11647,5,12953,12953,14,43019,43019,5,43232,43249,5,43443,43443,5,43567,43568,7,43696,43696,5,43765,43765,7,44013,44013,5,44117,44143,12,44229,44255,12,44341,44367,12,44453,44479,12,44565,44591,12,44677,44703,12,44789,44815,12,44901,44927,12,45013,45039,12,45125,45151,12,45237,45263,12,45349,45375,12,45461,45487,12,45573,45599,12,45685,45711,12,45797,45823,12,45909,45935,12,46021,46047,12,46133,46159,12,46245,46271,12,46357,46383,12,46469,46495,12,46581,46607,12,46693,46719,12,46805,46831,12,46917,46943,12,47029,47055,12,47141,47167,12,47253,47279,12,47365,47391,12,47477,47503,12,47589,47615,12,47701,47727,12,47813,47839,12,47925,47951,12,48037,48063,12,48149,48175,12,48261,48287,12,48373,48399,12,48485,48511,12,48597,48623,12,48709,48735,12,48821,48847,12,48933,48959,12,49045,49071,12,49157,49183,12,49269,49295,12,49381,49407,12,49493,49519,12,49605,49631,12,49717,49743,12,49829,49855,12,49941,49967,12,50053,50079,12,50165,50191,12,50277,50303,12,50389,50415,12,50501,50527,12,50613,50639,12,50725,50751,12,50837,50863,12,50949,50975,12,51061,51087,12,51173,51199,12,51285,51311,12,51397,51423,12,51509,51535,12,51621,51647,12,51733,51759,12,51845,51871,12,51957,51983,12,52069,52095,12,52181,52207,12,52293,52319,12,52405,52431,12,52517,52543,12,52629,52655,12,52741,52767,12,52853,52879,12,52965,52991,12,53077,53103,12,53189,53215,12,53301,53327,12,53413,53439,12,53525,53551,12,53637,53663,12,53749,53775,12,53861,53887,12,53973,53999,12,54085,54111,12,54197,54223,12,54309,54335,12,54421,54447,12,54533,54559,12,54645,54671,12,54757,54783,12,54869,54895,12,54981,55007,12,55093,55119,12,55243,55291,10,66045,66045,5,68325,68326,5,69688,69702,5,69817,69818,5,69957,69958,7,70089,70092,5,70198,70199,5,70462,70462,5,70502,70508,5,70750,70750,5,70846,70846,7,71100,71101,5,71230,71230,7,71351,71351,5,71737,71738,5,72000,72000,7,72160,72160,5,72273,72278,5,72752,72758,5,72882,72883,5,73031,73031,5,73461,73462,7,94192,94193,7,119149,119149,7,121403,121452,5,122915,122916,5,126980,126980,14,127358,127359,14,127535,127535,14,127759,127759,14,127771,127771,14,127792,127793,14,127825,127867,14,127897,127899,14,127945,127945,14,127985,127986,14,128000,128007,14,128021,128021,14,128066,128100,14,128184,128235,14,128249,128252,14,128266,128276,14,128335,128335,14,128379,128390,14,128407,128419,14,128444,128444,14,128481,128481,14,128499,128499,14,128526,128526,14,128536,128536,14,128543,128543,14,128556,128556,14,128564,128564,14,128577,128580,14,128643,128645,14,128649,128649,14,128654,128654,14,128660,128660,14,128664,128664,14,128675,128675,14,128686,128689,14,128695,128696,14,128705,128709,14,128717,128719,14,128725,128725,14,128736,128741,14,128747,128748,14,128755,128755,14,128762,128762,14,128981,128991,14,129009,129023,14,129160,129167,14,129296,129304,14,129320,129327,14,129340,129342,14,129356,129356,14,129388,129392,14,129399,129400,14,129404,129407,14,129432,129442,14,129454,129455,14,129473,129474,14,129485,129487,14,129648,129651,14,129659,129660,14,129671,129679,14,129709,129711,14,129728,129730,14,129751,129753,14,129776,129782,14,917505,917505,4,917760,917999,5,10,10,3,127,159,4,768,879,5,1471,1471,5,1536,1541,1,1648,1648,5,1767,1768,5,1840,1866,5,2070,2073,5,2137,2139,5,2274,2274,1,2363,2363,7,2377,2380,7,2402,2403,5,2494,2494,5,2507,2508,7,2558,2558,5,2622,2624,7,2641,2641,5,2691,2691,7,2759,2760,5,2786,2787,5,2876,2876,5,2881,2884,5,2901,2902,5,3006,3006,5,3014,3016,7,3072,3072,5,3134,3136,5,3157,3158,5,3260,3260,5,3266,3266,5,3274,3275,7,3328,3329,5,3391,3392,7,3405,3405,5,3457,3457,5,3536,3537,7,3551,3551,5,3636,3642,5,3764,3772,5,3895,3895,5,3967,3967,7,3993,4028,5,4146,4151,5,4182,4183,7,4226,4226,5,4253,4253,5,4957,4959,5,5940,5940,7,6070,6070,7,6087,6088,7,6158,6158,4,6432,6434,5,6448,6449,7,6679,6680,5,6742,6742,5,6754,6754,5,6783,6783,5,6912,6915,5,6966,6970,5,6978,6978,5,7042,7042,7,7080,7081,5,7143,7143,7,7150,7150,7,7212,7219,5,7380,7392,5,7412,7412,5,8203,8203,4,8232,8232,4,8265,8265,14,8400,8412,5,8421,8432,5,8617,8618,14,9167,9167,14,9200,9200,14,9410,9410,14,9723,9726,14,9733,9733,14,9745,9745,14,9752,9752,14,9760,9760,14,9766,9766,14,9774,9774,14,9786,9786,14,9794,9794,14,9823,9823,14,9828,9828,14,9833,9850,14,9855,9855,14,9875,9875,14,9880,9880,14,9885,9887,14,9896,9897,14,9906,9916,14,9926,9927,14,9935,9935,14,9939,9939,14,9962,9962,14,9972,9972,14,9978,9978,14,9986,9986,14,9997,9997,14,10002,10002,14,10017,10017,14,10055,10055,14,10071,10071,14,10133,10135,14,10548,10549,14,11093,11093,14,12330,12333,5,12441,12442,5,42608,42610,5,43010,43010,5,43045,43046,5,43188,43203,7,43302,43309,5,43392,43394,5,43446,43449,5,43493,43493,5,43571,43572,7,43597,43597,7,43703,43704,5,43756,43757,5,44003,44004,7,44009,44010,7,44033,44059,12,44089,44115,12,44145,44171,12,44201,44227,12,44257,44283,12,44313,44339,12,44369,44395,12,44425,44451,12,44481,44507,12,44537,44563,12,44593,44619,12,44649,44675,12,44705,44731,12,44761,44787,12,44817,44843,12,44873,44899,12,44929,44955,12,44985,45011,12,45041,45067,12,45097,45123,12,45153,45179,12,45209,45235,12,45265,45291,12,45321,45347,12,45377,45403,12,45433,45459,12,45489,45515,12,45545,45571,12,45601,45627,12,45657,45683,12,45713,45739,12,45769,45795,12,45825,45851,12,45881,45907,12,45937,45963,12,45993,46019,12,46049,46075,12,46105,46131,12,46161,46187,12,46217,46243,12,46273,46299,12,46329,46355,12,46385,46411,12,46441,46467,12,46497,46523,12,46553,46579,12,46609,46635,12,46665,46691,12,46721,46747,12,46777,46803,12,46833,46859,12,46889,46915,12,46945,46971,12,47001,47027,12,47057,47083,12,47113,47139,12,47169,47195,12,47225,47251,12,47281,47307,12,47337,47363,12,47393,47419,12,47449,47475,12,47505,47531,12,47561,47587,12,47617,47643,12,47673,47699,12,47729,47755,12,47785,47811,12,47841,47867,12,47897,47923,12,47953,47979,12,48009,48035,12,48065,48091,12,48121,48147,12,48177,48203,12,48233,48259,12,48289,48315,12,48345,48371,12,48401,48427,12,48457,48483,12,48513,48539,12,48569,48595,12,48625,48651,12,48681,48707,12,48737,48763,12,48793,48819,12,48849,48875,12,48905,48931,12,48961,48987,12,49017,49043,12,49073,49099,12,49129,49155,12,49185,49211,12,49241,49267,12,49297,49323,12,49353,49379,12,49409,49435,12,49465,49491,12,49521,49547,12,49577,49603,12,49633,49659,12,49689,49715,12,49745,49771,12,49801,49827,12,49857,49883,12,49913,49939,12,49969,49995,12,50025,50051,12,50081,50107,12,50137,50163,12,50193,50219,12,50249,50275,12,50305,50331,12,50361,50387,12,50417,50443,12,50473,50499,12,50529,50555,12,50585,50611,12,50641,50667,12,50697,50723,12,50753,50779,12,50809,50835,12,50865,50891,12,50921,50947,12,50977,51003,12,51033,51059,12,51089,51115,12,51145,51171,12,51201,51227,12,51257,51283,12,51313,51339,12,51369,51395,12,51425,51451,12,51481,51507,12,51537,51563,12,51593,51619,12,51649,51675,12,51705,51731,12,51761,51787,12,51817,51843,12,51873,51899,12,51929,51955,12,51985,52011,12,52041,52067,12,52097,52123,12,52153,52179,12,52209,52235,12,52265,52291,12,52321,52347,12,52377,52403,12,52433,52459,12,52489,52515,12,52545,52571,12,52601,52627,12,52657,52683,12,52713,52739,12,52769,52795,12,52825,52851,12,52881,52907,12,52937,52963,12,52993,53019,12,53049,53075,12,53105,53131,12,53161,53187,12,53217,53243,12,53273,53299,12,53329,53355,12,53385,53411,12,53441,53467,12,53497,53523,12,53553,53579,12,53609,53635,12,53665,53691,12,53721,53747,12,53777,53803,12,53833,53859,12,53889,53915,12,53945,53971,12,54001,54027,12,54057,54083,12,54113,54139,12,54169,54195,12,54225,54251,12,54281,54307,12,54337,54363,12,54393,54419,12,54449,54475,12,54505,54531,12,54561,54587,12,54617,54643,12,54673,54699,12,54729,54755,12,54785,54811,12,54841,54867,12,54897,54923,12,54953,54979,12,55009,55035,12,55065,55091,12,55121,55147,12,55177,55203,12,65024,65039,5,65520,65528,4,66422,66426,5,68152,68154,5,69291,69292,5,69633,69633,5,69747,69748,5,69811,69814,5,69826,69826,5,69932,69932,7,70016,70017,5,70079,70080,7,70095,70095,5,70196,70196,5,70367,70367,5,70402,70403,7,70464,70464,5,70487,70487,5,70709,70711,7,70725,70725,7,70833,70834,7,70843,70844,7,70849,70849,7,71090,71093,5,71103,71104,5,71227,71228,7,71339,71339,5,71344,71349,5,71458,71461,5,71727,71735,5,71985,71989,7,71998,71998,5,72002,72002,7,72154,72155,5,72193,72202,5,72251,72254,5,72281,72283,5,72344,72345,5,72766,72766,7,72874,72880,5,72885,72886,5,73023,73029,5,73104,73105,5,73111,73111,5,92912,92916,5,94095,94098,5,113824,113827,4,119142,119142,7,119155,119162,4,119362,119364,5,121476,121476,5,122888,122904,5,123184,123190,5,125252,125258,5,127183,127183,14,127340,127343,14,127377,127386,14,127491,127503,14,127548,127551,14,127744,127756,14,127761,127761,14,127769,127769,14,127773,127774,14,127780,127788,14,127796,127797,14,127820,127823,14,127869,127869,14,127894,127895,14,127902,127903,14,127943,127943,14,127947,127950,14,127972,127972,14,127988,127988,14,127992,127994,14,128009,128011,14,128019,128019,14,128023,128041,14,128064,128064,14,128102,128107,14,128174,128181,14,128238,128238,14,128246,128247,14,128254,128254,14,128264,128264,14,128278,128299,14,128329,128330,14,128348,128359,14,128371,128377,14,128392,128393,14,128401,128404,14,128421,128421,14,128433,128434,14,128450,128452,14,128476,128478,14,128483,128483,14,128495,128495,14,128506,128506,14,128519,128520,14,128528,128528,14,128534,128534,14,128538,128538,14,128540,128542,14,128544,128549,14,128552,128555,14,128557,128557,14,128560,128563,14,128565,128565,14,128567,128576,14,128581,128591,14,128641,128642,14,128646,128646,14,128648,128648,14,128650,128651,14,128653,128653,14,128655,128655,14,128657,128659,14,128661,128661,14,128663,128663,14,128665,128666,14,128674,128674,14,128676,128677,14,128679,128685,14,128690,128690,14,128694,128694,14,128697,128702,14,128704,128704,14,128710,128714,14,128716,128716,14,128720,128720,14,128723,128724,14,128726,128727,14,128733,128735,14,128742,128744,14,128746,128746,14,128749,128751,14,128753,128754,14,128756,128758,14,128761,128761,14,128763,128764,14,128884,128895,14,128992,129003,14,129008,129008,14,129036,129039,14,129114,129119,14,129198,129279,14,129293,129295,14,129305,129310,14,129312,129319,14,129328,129328,14,129331,129338,14,129343,129343,14,129351,129355,14,129357,129359,14,129375,129387,14,129393,129393,14,129395,129398,14,129401,129401,14,129403,129403,14,129408,129412,14,129426,129431,14,129443,129444,14,129451,129453,14,129456,129465,14,129472,129472,14,129475,129482,14,129484,129484,14,129488,129510,14,129536,129647,14,129652,129652,14,129656,129658,14,129661,129663,14,129667,129670,14,129680,129685,14,129705,129708,14,129712,129718,14,129723,129727,14,129731,129733,14,129744,129750,14,129754,129759,14,129768,129775,14,129783,129791,14,917504,917504,4,917506,917535,4,917632,917759,4,918000,921599,4,0,9,4,11,12,4,14,31,4,169,169,14,174,174,14,1155,1159,5,1425,1469,5,1473,1474,5,1479,1479,5,1552,1562,5,1611,1631,5,1750,1756,5,1759,1764,5,1770,1773,5,1809,1809,5,1958,1968,5,2045,2045,5,2075,2083,5,2089,2093,5,2192,2193,1,2250,2273,5,2275,2306,5,2362,2362,5,2364,2364,5,2369,2376,5,2381,2381,5,2385,2391,5,2433,2433,5,2492,2492,5,2495,2496,7,2503,2504,7,2509,2509,5,2530,2531,5,2561,2562,5,2620,2620,5,2625,2626,5,2635,2637,5,2672,2673,5,2689,2690,5,2748,2748,5,2753,2757,5,2761,2761,7,2765,2765,5,2810,2815,5,2818,2819,7,2878,2878,5,2880,2880,7,2887,2888,7,2893,2893,5,2903,2903,5,2946,2946,5,3007,3007,7,3009,3010,7,3018,3020,7,3031,3031,5,3073,3075,7,3132,3132,5,3137,3140,7,3146,3149,5,3170,3171,5,3202,3203,7,3262,3262,7,3264,3265,7,3267,3268,7,3271,3272,7,3276,3277,5,3298,3299,5,3330,3331,7,3390,3390,5,3393,3396,5,3402,3404,7,3406,3406,1,3426,3427,5,3458,3459,7,3535,3535,5,3538,3540,5,3544,3550,7,3570,3571,7,3635,3635,7,3655,3662,5,3763,3763,7,3784,3789,5,3893,3893,5,3897,3897,5,3953,3966,5,3968,3972,5,3981,3991,5,4038,4038,5,4145,4145,7,4153,4154,5,4157,4158,5,4184,4185,5,4209,4212,5,4228,4228,7,4237,4237,5,4352,4447,8,4520,4607,10,5906,5908,5,5938,5939,5,5970,5971,5,6068,6069,5,6071,6077,5,6086,6086,5,6089,6099,5,6155,6157,5,6159,6159,5,6313,6313,5,6435,6438,7,6441,6443,7,6450,6450,5,6457,6459,5,6681,6682,7,6741,6741,7,6743,6743,7,6752,6752,5,6757,6764,5,6771,6780,5,6832,6845,5,6847,6862,5,6916,6916,7,6965,6965,5,6971,6971,7,6973,6977,7,6979,6980,7,7040,7041,5,7073,7073,7,7078,7079,7,7082,7082,7,7142,7142,5,7144,7145,5,7149,7149,5,7151,7153,5,7204,7211,7,7220,7221,7,7376,7378,5,7393,7393,7,7405,7405,5,7415,7415,7,7616,7679,5,8204,8204,5,8206,8207,4,8233,8233,4,8252,8252,14,8288,8292,4,8294,8303,4,8413,8416,5,8418,8420,5,8482,8482,14,8596,8601,14,8986,8987,14,9096,9096,14,9193,9196,14,9199,9199,14,9201,9202,14,9208,9210,14,9642,9643,14,9664,9664,14,9728,9729,14,9732,9732,14,9735,9741,14,9743,9744,14,9746,9746,14,9750,9751,14,9753,9756,14,9758,9759,14,9761,9761,14,9764,9765,14,9767,9769,14,9771,9773,14,9775,9775,14,9784,9785,14,9787,9791,14,9793,9793,14,9795,9799,14,9812,9822,14,9824,9824,14,9827,9827,14,9829,9830,14,9832,9832,14,9851,9851,14,9854,9854,14,9856,9861,14,9874,9874,14,9876,9876,14,9878,9879,14,9881,9881,14,9883,9884,14,9888,9889,14,9895,9895,14,9898,9899,14,9904,9905,14,9917,9918,14,9924,9925,14,9928,9928,14,9934,9934,14,9936,9936,14,9938,9938,14,9940,9940,14,9961,9961,14,9963,9967,14,9970,9971,14,9973,9973,14,9975,9977,14,9979,9980,14,9982,9985,14,9987,9988,14,9992,9996,14,9998,9998,14,10000,10001,14,10004,10004,14,10013,10013,14,10024,10024,14,10052,10052,14,10060,10060,14,10067,10069,14,10083,10083,14,10085,10087,14,10145,10145,14,10175,10175,14,11013,11015,14,11088,11088,14,11503,11505,5,11744,11775,5,12334,12335,5,12349,12349,14,12951,12951,14,42607,42607,5,42612,42621,5,42736,42737,5,43014,43014,5,43043,43044,7,43047,43047,7,43136,43137,7,43204,43205,5,43263,43263,5,43335,43345,5,43360,43388,8,43395,43395,7,43444,43445,7,43450,43451,7,43454,43456,7,43561,43566,5,43569,43570,5,43573,43574,5,43596,43596,5,43644,43644,5,43698,43700,5,43710,43711,5,43755,43755,7,43758,43759,7,43766,43766,5,44005,44005,5,44008,44008,5,44012,44012,7,44032,44032,11,44060,44060,11,44088,44088,11,44116,44116,11,44144,44144,11,44172,44172,11,44200,44200,11,44228,44228,11,44256,44256,11,44284,44284,11,44312,44312,11,44340,44340,11,44368,44368,11,44396,44396,11,44424,44424,11,44452,44452,11,44480,44480,11,44508,44508,11,44536,44536,11,44564,44564,11,44592,44592,11,44620,44620,11,44648,44648,11,44676,44676,11,44704,44704,11,44732,44732,11,44760,44760,11,44788,44788,11,44816,44816,11,44844,44844,11,44872,44872,11,44900,44900,11,44928,44928,11,44956,44956,11,44984,44984,11,45012,45012,11,45040,45040,11,45068,45068,11,45096,45096,11,45124,45124,11,45152,45152,11,45180,45180,11,45208,45208,11,45236,45236,11,45264,45264,11,45292,45292,11,45320,45320,11,45348,45348,11,45376,45376,11,45404,45404,11,45432,45432,11,45460,45460,11,45488,45488,11,45516,45516,11,45544,45544,11,45572,45572,11,45600,45600,11,45628,45628,11,45656,45656,11,45684,45684,11,45712,45712,11,45740,45740,11,45768,45768,11,45796,45796,11,45824,45824,11,45852,45852,11,45880,45880,11,45908,45908,11,45936,45936,11,45964,45964,11,45992,45992,11,46020,46020,11,46048,46048,11,46076,46076,11,46104,46104,11,46132,46132,11,46160,46160,11,46188,46188,11,46216,46216,11,46244,46244,11,46272,46272,11,46300,46300,11,46328,46328,11,46356,46356,11,46384,46384,11,46412,46412,11,46440,46440,11,46468,46468,11,46496,46496,11,46524,46524,11,46552,46552,11,46580,46580,11,46608,46608,11,46636,46636,11,46664,46664,11,46692,46692,11,46720,46720,11,46748,46748,11,46776,46776,11,46804,46804,11,46832,46832,11,46860,46860,11,46888,46888,11,46916,46916,11,46944,46944,11,46972,46972,11,47000,47000,11,47028,47028,11,47056,47056,11,47084,47084,11,47112,47112,11,47140,47140,11,47168,47168,11,47196,47196,11,47224,47224,11,47252,47252,11,47280,47280,11,47308,47308,11,47336,47336,11,47364,47364,11,47392,47392,11,47420,47420,11,47448,47448,11,47476,47476,11,47504,47504,11,47532,47532,11,47560,47560,11,47588,47588,11,47616,47616,11,47644,47644,11,47672,47672,11,47700,47700,11,47728,47728,11,47756,47756,11,47784,47784,11,47812,47812,11,47840,47840,11,47868,47868,11,47896,47896,11,47924,47924,11,47952,47952,11,47980,47980,11,48008,48008,11,48036,48036,11,48064,48064,11,48092,48092,11,48120,48120,11,48148,48148,11,48176,48176,11,48204,48204,11,48232,48232,11,48260,48260,11,48288,48288,11,48316,48316,11,48344,48344,11,48372,48372,11,48400,48400,11,48428,48428,11,48456,48456,11,48484,48484,11,48512,48512,11,48540,48540,11,48568,48568,11,48596,48596,11,48624,48624,11,48652,48652,11,48680,48680,11,48708,48708,11,48736,48736,11,48764,48764,11,48792,48792,11,48820,48820,11,48848,48848,11,48876,48876,11,48904,48904,11,48932,48932,11,48960,48960,11,48988,48988,11,49016,49016,11,49044,49044,11,49072,49072,11,49100,49100,11,49128,49128,11,49156,49156,11,49184,49184,11,49212,49212,11,49240,49240,11,49268,49268,11,49296,49296,11,49324,49324,11,49352,49352,11,49380,49380,11,49408,49408,11,49436,49436,11,49464,49464,11,49492,49492,11,49520,49520,11,49548,49548,11,49576,49576,11,49604,49604,11,49632,49632,11,49660,49660,11,49688,49688,11,49716,49716,11,49744,49744,11,49772,49772,11,49800,49800,11,49828,49828,11,49856,49856,11,49884,49884,11,49912,49912,11,49940,49940,11,49968,49968,11,49996,49996,11,50024,50024,11,50052,50052,11,50080,50080,11,50108,50108,11,50136,50136,11,50164,50164,11,50192,50192,11,50220,50220,11,50248,50248,11,50276,50276,11,50304,50304,11,50332,50332,11,50360,50360,11,50388,50388,11,50416,50416,11,50444,50444,11,50472,50472,11,50500,50500,11,50528,50528,11,50556,50556,11,50584,50584,11,50612,50612,11,50640,50640,11,50668,50668,11,50696,50696,11,50724,50724,11,50752,50752,11,50780,50780,11,50808,50808,11,50836,50836,11,50864,50864,11,50892,50892,11,50920,50920,11,50948,50948,11,50976,50976,11,51004,51004,11,51032,51032,11,51060,51060,11,51088,51088,11,51116,51116,11,51144,51144,11,51172,51172,11,51200,51200,11,51228,51228,11,51256,51256,11,51284,51284,11,51312,51312,11,51340,51340,11,51368,51368,11,51396,51396,11,51424,51424,11,51452,51452,11,51480,51480,11,51508,51508,11,51536,51536,11,51564,51564,11,51592,51592,11,51620,51620,11,51648,51648,11,51676,51676,11,51704,51704,11,51732,51732,11,51760,51760,11,51788,51788,11,51816,51816,11,51844,51844,11,51872,51872,11,51900,51900,11,51928,51928,11,51956,51956,11,51984,51984,11,52012,52012,11,52040,52040,11,52068,52068,11,52096,52096,11,52124,52124,11,52152,52152,11,52180,52180,11,52208,52208,11,52236,52236,11,52264,52264,11,52292,52292,11,52320,52320,11,52348,52348,11,52376,52376,11,52404,52404,11,52432,52432,11,52460,52460,11,52488,52488,11,52516,52516,11,52544,52544,11,52572,52572,11,52600,52600,11,52628,52628,11,52656,52656,11,52684,52684,11,52712,52712,11,52740,52740,11,52768,52768,11,52796,52796,11,52824,52824,11,52852,52852,11,52880,52880,11,52908,52908,11,52936,52936,11,52964,52964,11,52992,52992,11,53020,53020,11,53048,53048,11,53076,53076,11,53104,53104,11,53132,53132,11,53160,53160,11,53188,53188,11,53216,53216,11,53244,53244,11,53272,53272,11,53300,53300,11,53328,53328,11,53356,53356,11,53384,53384,11,53412,53412,11,53440,53440,11,53468,53468,11,53496,53496,11,53524,53524,11,53552,53552,11,53580,53580,11,53608,53608,11,53636,53636,11,53664,53664,11,53692,53692,11,53720,53720,11,53748,53748,11,53776,53776,11,53804,53804,11,53832,53832,11,53860,53860,11,53888,53888,11,53916,53916,11,53944,53944,11,53972,53972,11,54000,54000,11,54028,54028,11,54056,54056,11,54084,54084,11,54112,54112,11,54140,54140,11,54168,54168,11,54196,54196,11,54224,54224,11,54252,54252,11,54280,54280,11,54308,54308,11,54336,54336,11,54364,54364,11,54392,54392,11,54420,54420,11,54448,54448,11,54476,54476,11,54504,54504,11,54532,54532,11,54560,54560,11,54588,54588,11,54616,54616,11,54644,54644,11,54672,54672,11,54700,54700,11,54728,54728,11,54756,54756,11,54784,54784,11,54812,54812,11,54840,54840,11,54868,54868,11,54896,54896,11,54924,54924,11,54952,54952,11,54980,54980,11,55008,55008,11,55036,55036,11,55064,55064,11,55092,55092,11,55120,55120,11,55148,55148,11,55176,55176,11,55216,55238,9,64286,64286,5,65056,65071,5,65438,65439,5,65529,65531,4,66272,66272,5,68097,68099,5,68108,68111,5,68159,68159,5,68900,68903,5,69446,69456,5,69632,69632,7,69634,69634,7,69744,69744,5,69759,69761,5,69808,69810,7,69815,69816,7,69821,69821,1,69837,69837,1,69927,69931,5,69933,69940,5,70003,70003,5,70018,70018,7,70070,70078,5,70082,70083,1,70094,70094,7,70188,70190,7,70194,70195,7,70197,70197,7,70206,70206,5,70368,70370,7,70400,70401,5,70459,70460,5,70463,70463,7,70465,70468,7,70475,70477,7,70498,70499,7,70512,70516,5,70712,70719,5,70722,70724,5,70726,70726,5,70832,70832,5,70835,70840,5,70842,70842,5,70845,70845,5,70847,70848,5,70850,70851,5,71088,71089,7,71096,71099,7,71102,71102,7,71132,71133,5,71219,71226,5,71229,71229,5,71231,71232,5,71340,71340,7,71342,71343,7,71350,71350,7,71453,71455,5,71462,71462,7,71724,71726,7,71736,71736,7,71984,71984,5,71991,71992,7,71997,71997,7,71999,71999,1,72001,72001,1,72003,72003,5,72148,72151,5,72156,72159,7,72164,72164,7,72243,72248,5,72250,72250,1,72263,72263,5,72279,72280,7,72324,72329,1,72343,72343,7,72751,72751,7,72760,72765,5,72767,72767,5,72873,72873,7,72881,72881,7,72884,72884,7,73009,73014,5,73020,73021,5,73030,73030,1,73098,73102,7,73107,73108,7,73110,73110,7,73459,73460,5,78896,78904,4,92976,92982,5,94033,94087,7,94180,94180,5,113821,113822,5,118528,118573,5,119141,119141,5,119143,119145,5,119150,119154,5,119163,119170,5,119210,119213,5,121344,121398,5,121461,121461,5,121499,121503,5,122880,122886,5,122907,122913,5,122918,122922,5,123566,123566,5,125136,125142,5,126976,126979,14,126981,127182,14,127184,127231,14,127279,127279,14,127344,127345,14,127374,127374,14,127405,127461,14,127489,127490,14,127514,127514,14,127538,127546,14,127561,127567,14,127570,127743,14,127757,127758,14,127760,127760,14,127762,127762,14,127766,127768,14,127770,127770,14,127772,127772,14,127775,127776,14,127778,127779,14,127789,127791,14,127794,127795,14,127798,127798,14,127819,127819,14,127824,127824,14,127868,127868,14,127870,127871,14,127892,127893,14,127896,127896,14,127900,127901,14,127904,127940,14,127942,127942,14,127944,127944,14,127946,127946,14,127951,127955,14,127968,127971,14,127973,127984,14,127987,127987,14,127989,127989,14,127991,127991,14,127995,127999,5,128008,128008,14,128012,128014,14,128017,128018,14,128020,128020,14,128022,128022,14,128042,128042,14,128063,128063,14,128065,128065,14,128101,128101,14,128108,128109,14,128173,128173,14,128182,128183,14,128236,128237,14,128239,128239,14,128245,128245,14,128248,128248,14,128253,128253,14,128255,128258,14,128260,128263,14,128265,128265,14,128277,128277,14,128300,128301,14,128326,128328,14,128331,128334,14,128336,128347,14,128360,128366,14,128369,128370,14,128378,128378,14,128391,128391,14,128394,128397,14,128400,128400,14,128405,128406,14,128420,128420,14,128422,128423,14,128425,128432,14,128435,128443,14,128445,128449,14,128453,128464,14,128468,128475,14,128479,128480,14,128482,128482,14,128484,128487,14,128489,128494,14,128496,128498,14,128500,128505,14,128507,128511,14,128513,128518,14,128521,128525,14,128527,128527,14,128529,128529,14,128533,128533,14,128535,128535,14,128537,128537,14]"); +} +(class _AmbiguousCharacters { + constructor(confusableDictionary) { + this.confusableDictionary = confusableDictionary; + } + static { + this.ambiguousCharacterData = new Lazy(() => { + return JSON.parse( + '{"_common":[8232,32,8233,32,5760,32,8192,32,8193,32,8194,32,8195,32,8196,32,8197,32,8198,32,8200,32,8201,32,8202,32,8287,32,8199,32,8239,32,2042,95,65101,95,65102,95,65103,95,8208,45,8209,45,8210,45,65112,45,1748,45,8259,45,727,45,8722,45,10134,45,11450,45,1549,44,1643,44,8218,44,184,44,42233,44,894,59,2307,58,2691,58,1417,58,1795,58,1796,58,5868,58,65072,58,6147,58,6153,58,8282,58,1475,58,760,58,42889,58,8758,58,720,58,42237,58,451,33,11601,33,660,63,577,63,2429,63,5038,63,42731,63,119149,46,8228,46,1793,46,1794,46,42510,46,68176,46,1632,46,1776,46,42232,46,1373,96,65287,96,8219,96,8242,96,1370,96,1523,96,8175,96,65344,96,900,96,8189,96,8125,96,8127,96,8190,96,697,96,884,96,712,96,714,96,715,96,756,96,699,96,701,96,700,96,702,96,42892,96,1497,96,2036,96,2037,96,5194,96,5836,96,94033,96,94034,96,65339,91,10088,40,10098,40,12308,40,64830,40,65341,93,10089,41,10099,41,12309,41,64831,41,10100,123,119060,123,10101,125,65342,94,8270,42,1645,42,8727,42,66335,42,5941,47,8257,47,8725,47,8260,47,9585,47,10187,47,10744,47,119354,47,12755,47,12339,47,11462,47,20031,47,12035,47,65340,92,65128,92,8726,92,10189,92,10741,92,10745,92,119311,92,119355,92,12756,92,20022,92,12034,92,42872,38,708,94,710,94,5869,43,10133,43,66203,43,8249,60,10094,60,706,60,119350,60,5176,60,5810,60,5120,61,11840,61,12448,61,42239,61,8250,62,10095,62,707,62,119351,62,5171,62,94015,62,8275,126,732,126,8128,126,8764,126,65372,124,65293,45,120784,50,120794,50,120804,50,120814,50,120824,50,130034,50,42842,50,423,50,1000,50,42564,50,5311,50,42735,50,119302,51,120785,51,120795,51,120805,51,120815,51,120825,51,130035,51,42923,51,540,51,439,51,42858,51,11468,51,1248,51,94011,51,71882,51,120786,52,120796,52,120806,52,120816,52,120826,52,130036,52,5070,52,71855,52,120787,53,120797,53,120807,53,120817,53,120827,53,130037,53,444,53,71867,53,120788,54,120798,54,120808,54,120818,54,120828,54,130038,54,11474,54,5102,54,71893,54,119314,55,120789,55,120799,55,120809,55,120819,55,120829,55,130039,55,66770,55,71878,55,2819,56,2538,56,2666,56,125131,56,120790,56,120800,56,120810,56,120820,56,120830,56,130040,56,547,56,546,56,66330,56,2663,57,2920,57,2541,57,3437,57,120791,57,120801,57,120811,57,120821,57,120831,57,130041,57,42862,57,11466,57,71884,57,71852,57,71894,57,9082,97,65345,97,119834,97,119886,97,119938,97,119990,97,120042,97,120094,97,120146,97,120198,97,120250,97,120302,97,120354,97,120406,97,120458,97,593,97,945,97,120514,97,120572,97,120630,97,120688,97,120746,97,65313,65,119808,65,119860,65,119912,65,119964,65,120016,65,120068,65,120120,65,120172,65,120224,65,120276,65,120328,65,120380,65,120432,65,913,65,120488,65,120546,65,120604,65,120662,65,120720,65,5034,65,5573,65,42222,65,94016,65,66208,65,119835,98,119887,98,119939,98,119991,98,120043,98,120095,98,120147,98,120199,98,120251,98,120303,98,120355,98,120407,98,120459,98,388,98,5071,98,5234,98,5551,98,65314,66,8492,66,119809,66,119861,66,119913,66,120017,66,120069,66,120121,66,120173,66,120225,66,120277,66,120329,66,120381,66,120433,66,42932,66,914,66,120489,66,120547,66,120605,66,120663,66,120721,66,5108,66,5623,66,42192,66,66178,66,66209,66,66305,66,65347,99,8573,99,119836,99,119888,99,119940,99,119992,99,120044,99,120096,99,120148,99,120200,99,120252,99,120304,99,120356,99,120408,99,120460,99,7428,99,1010,99,11429,99,43951,99,66621,99,128844,67,71922,67,71913,67,65315,67,8557,67,8450,67,8493,67,119810,67,119862,67,119914,67,119966,67,120018,67,120174,67,120226,67,120278,67,120330,67,120382,67,120434,67,1017,67,11428,67,5087,67,42202,67,66210,67,66306,67,66581,67,66844,67,8574,100,8518,100,119837,100,119889,100,119941,100,119993,100,120045,100,120097,100,120149,100,120201,100,120253,100,120305,100,120357,100,120409,100,120461,100,1281,100,5095,100,5231,100,42194,100,8558,68,8517,68,119811,68,119863,68,119915,68,119967,68,120019,68,120071,68,120123,68,120175,68,120227,68,120279,68,120331,68,120383,68,120435,68,5024,68,5598,68,5610,68,42195,68,8494,101,65349,101,8495,101,8519,101,119838,101,119890,101,119942,101,120046,101,120098,101,120150,101,120202,101,120254,101,120306,101,120358,101,120410,101,120462,101,43826,101,1213,101,8959,69,65317,69,8496,69,119812,69,119864,69,119916,69,120020,69,120072,69,120124,69,120176,69,120228,69,120280,69,120332,69,120384,69,120436,69,917,69,120492,69,120550,69,120608,69,120666,69,120724,69,11577,69,5036,69,42224,69,71846,69,71854,69,66182,69,119839,102,119891,102,119943,102,119995,102,120047,102,120099,102,120151,102,120203,102,120255,102,120307,102,120359,102,120411,102,120463,102,43829,102,42905,102,383,102,7837,102,1412,102,119315,70,8497,70,119813,70,119865,70,119917,70,120021,70,120073,70,120125,70,120177,70,120229,70,120281,70,120333,70,120385,70,120437,70,42904,70,988,70,120778,70,5556,70,42205,70,71874,70,71842,70,66183,70,66213,70,66853,70,65351,103,8458,103,119840,103,119892,103,119944,103,120048,103,120100,103,120152,103,120204,103,120256,103,120308,103,120360,103,120412,103,120464,103,609,103,7555,103,397,103,1409,103,119814,71,119866,71,119918,71,119970,71,120022,71,120074,71,120126,71,120178,71,120230,71,120282,71,120334,71,120386,71,120438,71,1292,71,5056,71,5107,71,42198,71,65352,104,8462,104,119841,104,119945,104,119997,104,120049,104,120101,104,120153,104,120205,104,120257,104,120309,104,120361,104,120413,104,120465,104,1211,104,1392,104,5058,104,65320,72,8459,72,8460,72,8461,72,119815,72,119867,72,119919,72,120023,72,120179,72,120231,72,120283,72,120335,72,120387,72,120439,72,919,72,120494,72,120552,72,120610,72,120668,72,120726,72,11406,72,5051,72,5500,72,42215,72,66255,72,731,105,9075,105,65353,105,8560,105,8505,105,8520,105,119842,105,119894,105,119946,105,119998,105,120050,105,120102,105,120154,105,120206,105,120258,105,120310,105,120362,105,120414,105,120466,105,120484,105,618,105,617,105,953,105,8126,105,890,105,120522,105,120580,105,120638,105,120696,105,120754,105,1110,105,42567,105,1231,105,43893,105,5029,105,71875,105,65354,106,8521,106,119843,106,119895,106,119947,106,119999,106,120051,106,120103,106,120155,106,120207,106,120259,106,120311,106,120363,106,120415,106,120467,106,1011,106,1112,106,65322,74,119817,74,119869,74,119921,74,119973,74,120025,74,120077,74,120129,74,120181,74,120233,74,120285,74,120337,74,120389,74,120441,74,42930,74,895,74,1032,74,5035,74,5261,74,42201,74,119844,107,119896,107,119948,107,120000,107,120052,107,120104,107,120156,107,120208,107,120260,107,120312,107,120364,107,120416,107,120468,107,8490,75,65323,75,119818,75,119870,75,119922,75,119974,75,120026,75,120078,75,120130,75,120182,75,120234,75,120286,75,120338,75,120390,75,120442,75,922,75,120497,75,120555,75,120613,75,120671,75,120729,75,11412,75,5094,75,5845,75,42199,75,66840,75,1472,108,8739,73,9213,73,65512,73,1633,108,1777,73,66336,108,125127,108,120783,73,120793,73,120803,73,120813,73,120823,73,130033,73,65321,73,8544,73,8464,73,8465,73,119816,73,119868,73,119920,73,120024,73,120128,73,120180,73,120232,73,120284,73,120336,73,120388,73,120440,73,65356,108,8572,73,8467,108,119845,108,119897,108,119949,108,120001,108,120053,108,120105,73,120157,73,120209,73,120261,73,120313,73,120365,73,120417,73,120469,73,448,73,120496,73,120554,73,120612,73,120670,73,120728,73,11410,73,1030,73,1216,73,1493,108,1503,108,1575,108,126464,108,126592,108,65166,108,65165,108,1994,108,11599,73,5825,73,42226,73,93992,73,66186,124,66313,124,119338,76,8556,76,8466,76,119819,76,119871,76,119923,76,120027,76,120079,76,120131,76,120183,76,120235,76,120287,76,120339,76,120391,76,120443,76,11472,76,5086,76,5290,76,42209,76,93974,76,71843,76,71858,76,66587,76,66854,76,65325,77,8559,77,8499,77,119820,77,119872,77,119924,77,120028,77,120080,77,120132,77,120184,77,120236,77,120288,77,120340,77,120392,77,120444,77,924,77,120499,77,120557,77,120615,77,120673,77,120731,77,1018,77,11416,77,5047,77,5616,77,5846,77,42207,77,66224,77,66321,77,119847,110,119899,110,119951,110,120003,110,120055,110,120107,110,120159,110,120211,110,120263,110,120315,110,120367,110,120419,110,120471,110,1400,110,1404,110,65326,78,8469,78,119821,78,119873,78,119925,78,119977,78,120029,78,120081,78,120185,78,120237,78,120289,78,120341,78,120393,78,120445,78,925,78,120500,78,120558,78,120616,78,120674,78,120732,78,11418,78,42208,78,66835,78,3074,111,3202,111,3330,111,3458,111,2406,111,2662,111,2790,111,3046,111,3174,111,3302,111,3430,111,3664,111,3792,111,4160,111,1637,111,1781,111,65359,111,8500,111,119848,111,119900,111,119952,111,120056,111,120108,111,120160,111,120212,111,120264,111,120316,111,120368,111,120420,111,120472,111,7439,111,7441,111,43837,111,959,111,120528,111,120586,111,120644,111,120702,111,120760,111,963,111,120532,111,120590,111,120648,111,120706,111,120764,111,11423,111,4351,111,1413,111,1505,111,1607,111,126500,111,126564,111,126596,111,65259,111,65260,111,65258,111,65257,111,1726,111,64428,111,64429,111,64427,111,64426,111,1729,111,64424,111,64425,111,64423,111,64422,111,1749,111,3360,111,4125,111,66794,111,71880,111,71895,111,66604,111,1984,79,2534,79,2918,79,12295,79,70864,79,71904,79,120782,79,120792,79,120802,79,120812,79,120822,79,130032,79,65327,79,119822,79,119874,79,119926,79,119978,79,120030,79,120082,79,120134,79,120186,79,120238,79,120290,79,120342,79,120394,79,120446,79,927,79,120502,79,120560,79,120618,79,120676,79,120734,79,11422,79,1365,79,11604,79,4816,79,2848,79,66754,79,42227,79,71861,79,66194,79,66219,79,66564,79,66838,79,9076,112,65360,112,119849,112,119901,112,119953,112,120005,112,120057,112,120109,112,120161,112,120213,112,120265,112,120317,112,120369,112,120421,112,120473,112,961,112,120530,112,120544,112,120588,112,120602,112,120646,112,120660,112,120704,112,120718,112,120762,112,120776,112,11427,112,65328,80,8473,80,119823,80,119875,80,119927,80,119979,80,120031,80,120083,80,120187,80,120239,80,120291,80,120343,80,120395,80,120447,80,929,80,120504,80,120562,80,120620,80,120678,80,120736,80,11426,80,5090,80,5229,80,42193,80,66197,80,119850,113,119902,113,119954,113,120006,113,120058,113,120110,113,120162,113,120214,113,120266,113,120318,113,120370,113,120422,113,120474,113,1307,113,1379,113,1382,113,8474,81,119824,81,119876,81,119928,81,119980,81,120032,81,120084,81,120188,81,120240,81,120292,81,120344,81,120396,81,120448,81,11605,81,119851,114,119903,114,119955,114,120007,114,120059,114,120111,114,120163,114,120215,114,120267,114,120319,114,120371,114,120423,114,120475,114,43847,114,43848,114,7462,114,11397,114,43905,114,119318,82,8475,82,8476,82,8477,82,119825,82,119877,82,119929,82,120033,82,120189,82,120241,82,120293,82,120345,82,120397,82,120449,82,422,82,5025,82,5074,82,66740,82,5511,82,42211,82,94005,82,65363,115,119852,115,119904,115,119956,115,120008,115,120060,115,120112,115,120164,115,120216,115,120268,115,120320,115,120372,115,120424,115,120476,115,42801,115,445,115,1109,115,43946,115,71873,115,66632,115,65331,83,119826,83,119878,83,119930,83,119982,83,120034,83,120086,83,120138,83,120190,83,120242,83,120294,83,120346,83,120398,83,120450,83,1029,83,1359,83,5077,83,5082,83,42210,83,94010,83,66198,83,66592,83,119853,116,119905,116,119957,116,120009,116,120061,116,120113,116,120165,116,120217,116,120269,116,120321,116,120373,116,120425,116,120477,116,8868,84,10201,84,128872,84,65332,84,119827,84,119879,84,119931,84,119983,84,120035,84,120087,84,120139,84,120191,84,120243,84,120295,84,120347,84,120399,84,120451,84,932,84,120507,84,120565,84,120623,84,120681,84,120739,84,11430,84,5026,84,42196,84,93962,84,71868,84,66199,84,66225,84,66325,84,119854,117,119906,117,119958,117,120010,117,120062,117,120114,117,120166,117,120218,117,120270,117,120322,117,120374,117,120426,117,120478,117,42911,117,7452,117,43854,117,43858,117,651,117,965,117,120534,117,120592,117,120650,117,120708,117,120766,117,1405,117,66806,117,71896,117,8746,85,8899,85,119828,85,119880,85,119932,85,119984,85,120036,85,120088,85,120140,85,120192,85,120244,85,120296,85,120348,85,120400,85,120452,85,1357,85,4608,85,66766,85,5196,85,42228,85,94018,85,71864,85,8744,118,8897,118,65366,118,8564,118,119855,118,119907,118,119959,118,120011,118,120063,118,120115,118,120167,118,120219,118,120271,118,120323,118,120375,118,120427,118,120479,118,7456,118,957,118,120526,118,120584,118,120642,118,120700,118,120758,118,1141,118,1496,118,71430,118,43945,118,71872,118,119309,86,1639,86,1783,86,8548,86,119829,86,119881,86,119933,86,119985,86,120037,86,120089,86,120141,86,120193,86,120245,86,120297,86,120349,86,120401,86,120453,86,1140,86,11576,86,5081,86,5167,86,42719,86,42214,86,93960,86,71840,86,66845,86,623,119,119856,119,119908,119,119960,119,120012,119,120064,119,120116,119,120168,119,120220,119,120272,119,120324,119,120376,119,120428,119,120480,119,7457,119,1121,119,1309,119,1377,119,71434,119,71438,119,71439,119,43907,119,71919,87,71910,87,119830,87,119882,87,119934,87,119986,87,120038,87,120090,87,120142,87,120194,87,120246,87,120298,87,120350,87,120402,87,120454,87,1308,87,5043,87,5076,87,42218,87,5742,120,10539,120,10540,120,10799,120,65368,120,8569,120,119857,120,119909,120,119961,120,120013,120,120065,120,120117,120,120169,120,120221,120,120273,120,120325,120,120377,120,120429,120,120481,120,5441,120,5501,120,5741,88,9587,88,66338,88,71916,88,65336,88,8553,88,119831,88,119883,88,119935,88,119987,88,120039,88,120091,88,120143,88,120195,88,120247,88,120299,88,120351,88,120403,88,120455,88,42931,88,935,88,120510,88,120568,88,120626,88,120684,88,120742,88,11436,88,11613,88,5815,88,42219,88,66192,88,66228,88,66327,88,66855,88,611,121,7564,121,65369,121,119858,121,119910,121,119962,121,120014,121,120066,121,120118,121,120170,121,120222,121,120274,121,120326,121,120378,121,120430,121,120482,121,655,121,7935,121,43866,121,947,121,8509,121,120516,121,120574,121,120632,121,120690,121,120748,121,1199,121,4327,121,71900,121,65337,89,119832,89,119884,89,119936,89,119988,89,120040,89,120092,89,120144,89,120196,89,120248,89,120300,89,120352,89,120404,89,120456,89,933,89,978,89,120508,89,120566,89,120624,89,120682,89,120740,89,11432,89,1198,89,5033,89,5053,89,42220,89,94019,89,71844,89,66226,89,119859,122,119911,122,119963,122,120015,122,120067,122,120119,122,120171,122,120223,122,120275,122,120327,122,120379,122,120431,122,120483,122,7458,122,43923,122,71876,122,66293,90,71909,90,65338,90,8484,90,8488,90,119833,90,119885,90,119937,90,119989,90,120041,90,120197,90,120249,90,120301,90,120353,90,120405,90,120457,90,918,90,120493,90,120551,90,120609,90,120667,90,120725,90,5059,90,42204,90,71849,90,65282,34,65284,36,65285,37,65286,38,65290,42,65291,43,65294,46,65295,47,65296,48,65297,49,65298,50,65299,51,65300,52,65301,53,65302,54,65303,55,65304,56,65305,57,65308,60,65309,61,65310,62,65312,64,65316,68,65318,70,65319,71,65324,76,65329,81,65330,82,65333,85,65334,86,65335,87,65343,95,65346,98,65348,100,65350,102,65355,107,65357,109,65358,110,65361,113,65362,114,65364,116,65365,117,65367,119,65370,122,65371,123,65373,125,119846,109],"_default":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"cs":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"de":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"es":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"fr":[65374,126,65306,58,65281,33,8216,96,8245,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"it":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"ja":[8211,45,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65292,44,65307,59],"ko":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"pl":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"pt-BR":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"qps-ploc":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"ru":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,305,105,921,73,1009,112,215,120,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"tr":[160,32,8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"zh-hans":[65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41],"zh-hant":[8211,45,65374,126,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65307,59]}' + ); + }); + } + static { + this.cache = new LRUCachedFunction({ getCacheKey: JSON.stringify }, (locales) => { + function arrayToMap(arr) { + const result = /* @__PURE__ */ new Map(); + for (let i = 0; i < arr.length; i += 2) { + result.set(arr[i], arr[i + 1]); + } + return result; + } + function mergeMaps(map1, map2) { + const result = new Map(map1); + for (const [key, value] of map2) { + result.set(key, value); + } + return result; + } + function intersectMaps(map1, map2) { + if (!map1) { + return map2; + } + const result = /* @__PURE__ */ new Map(); + for (const [key, value] of map1) { + if (map2.has(key)) { + result.set(key, value); + } + } + return result; + } + const data = this.ambiguousCharacterData.value; + let filteredLocales = locales.filter( + (l) => !l.startsWith("_") && l in data + ); + if (filteredLocales.length === 0) { + filteredLocales = ["_default"]; + } + let languageSpecificMap = void 0; + for (const locale of filteredLocales) { + const map2 = arrayToMap(data[locale]); + languageSpecificMap = intersectMaps(languageSpecificMap, map2); + } + const commonMap = arrayToMap(data["_common"]); + const map = mergeMaps(commonMap, languageSpecificMap); + return new _AmbiguousCharacters(map); + }); + } + static getInstance(locales) { + return _AmbiguousCharacters.cache.get(Array.from(locales)); + } + static { + this._locales = new Lazy( + () => Object.keys(_AmbiguousCharacters.ambiguousCharacterData.value).filter( + (k) => !k.startsWith("_") + ) + ); + } + static getLocales() { + return _AmbiguousCharacters._locales.value; + } + isAmbiguous(codePoint) { + return this.confusableDictionary.has(codePoint); + } + containsAmbiguousCharacter(str) { + for (let i = 0; i < str.length; i++) { + const codePoint = str.codePointAt(i); + if (typeof codePoint === "number" && this.isAmbiguous(codePoint)) { + return true; + } + } + return false; + } + /** + * Returns the non basic ASCII code point that the given code point can be confused, + * or undefined if such code point does note exist. + */ + getPrimaryConfusable(codePoint) { + return this.confusableDictionary.get(codePoint); + } + getConfusableCodePoints() { + return new Set(this.confusableDictionary.keys()); + } +}); + +// ../../../../../base/common/types.ts +function isString(str) { + return typeof str === "string"; +} +function isObject(obj) { + return typeof obj === "object" && obj !== null && !Array.isArray(obj) && !(obj instanceof RegExp) && !(obj instanceof Date); +} +function isNumber(obj) { + return typeof obj === "number" && !isNaN(obj); +} +function isUndefined(obj) { + return typeof obj === "undefined"; +} +function isUndefinedOrNull(obj) { + return isUndefined(obj) || obj === null; +} +function assertType(condition, type) { + if (!condition) { + throw new Error("Unexpected type"); + } +} +function assertIsDefined(arg) { + if (isUndefinedOrNull(arg)) { + throw new Error("Assertion Failed: argument is undefined or null"); + } + return arg; +} +function isFunction(obj) { + return typeof obj === "function"; +} +function validateConstraints(args, constraints) { + const len = Math.min(args.length, constraints.length); + for (let i = 0; i < len; i++) { + validateConstraint(args[i], constraints[i]); + } +} +function validateConstraint(arg, constraint) { + if (isString(constraint)) { + if (typeof arg !== constraint) { + throw new Error(`argument does not match constraint: typeof ${constraint}`); + } + } else if (isFunction(constraint)) { + try { + if (arg instanceof constraint) { + return; + } + } catch { + } + if (!isUndefinedOrNull(arg) && arg.constructor === constraint) { + return; + } + if (constraint.length === 1 && constraint.call(void 0, arg) === true) { + return; + } + throw new Error(`argument does not match one of these constraints: arg instanceof constraint, arg.constructor === constraint, nor constraint(arg) === true`); + } +} + +// ../../../../../base/common/extpath.ts +function isPathSeparator2(code) { + return code === 47 /* Slash */ || code === 92 /* Backslash */; +} +function toSlashes(osPath) { + return osPath.replace(/[\\/]/g, posix.sep); +} +function toPosixPath(osPath) { + if (osPath.indexOf("/") === -1) { + osPath = toSlashes(osPath); + } + if (/^[a-zA-Z]:(\/|$)/.test(osPath)) { + osPath = "/" + osPath; + } + return osPath; +} +function getRoot(path, sep2 = posix.sep) { + if (!path) { + return ""; + } + const len = path.length; + const firstLetter = path.charCodeAt(0); + if (isPathSeparator2(firstLetter)) { + if (isPathSeparator2(path.charCodeAt(1))) { + if (!isPathSeparator2(path.charCodeAt(2))) { + let pos2 = 3; + const start = pos2; + for (; pos2 < len; pos2++) { + if (isPathSeparator2(path.charCodeAt(pos2))) { + break; + } + } + if (start !== pos2 && !isPathSeparator2(path.charCodeAt(pos2 + 1))) { + pos2 += 1; + for (; pos2 < len; pos2++) { + if (isPathSeparator2(path.charCodeAt(pos2))) { + return path.slice(0, pos2 + 1).replace(/[\\/]/g, sep2); + } + } + } + } + } + return sep2; + } else if (isWindowsDriveLetter(firstLetter)) { + if (path.charCodeAt(1) === 58 /* Colon */) { + if (isPathSeparator2(path.charCodeAt(2))) { + return path.slice(0, 2) + sep2; + } else { + return path.slice(0, 2); + } + } + } + let pos = path.indexOf("://"); + if (pos !== -1) { + pos += 3; + for (; pos < len; pos++) { + if (isPathSeparator2(path.charCodeAt(pos))) { + return path.slice(0, pos + 1); + } + } + } + return ""; +} +function isEqualOrParent(base, parentCandidate, ignoreCase, separator = sep) { + if (base === parentCandidate) { + return true; + } + if (!base || !parentCandidate) { + return false; + } + if (parentCandidate.length > base.length) { + return false; + } + if (ignoreCase) { + const beginsWith = startsWithIgnoreCase(base, parentCandidate); + if (!beginsWith) { + return false; + } + if (parentCandidate.length === base.length) { + return true; + } + let sepOffset = parentCandidate.length; + if (parentCandidate.charAt(parentCandidate.length - 1) === separator) { + sepOffset--; + } + return base.charAt(sepOffset) === separator; + } + if (parentCandidate.charAt(parentCandidate.length - 1) !== separator) { + parentCandidate += separator; + } + return base.indexOf(parentCandidate) === 0; +} +function isWindowsDriveLetter(char0) { + return char0 >= 65 /* A */ && char0 <= 90 /* Z */ || char0 >= 97 /* a */ && char0 <= 122 /* z */; +} + +// ../../../../../base/common/uri.ts +var _schemePattern = /^\w[\w\d+.-]*$/; +var _singleSlashStart = /^\//; +var _doubleSlashStart = /^\/\//; +function _validateUri(ret, _strict) { + if (!ret.scheme && _strict) { + throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${ret.authority}", path: "${ret.path}", query: "${ret.query}", fragment: "${ret.fragment}"}`); + } + if (ret.scheme && !_schemePattern.test(ret.scheme)) { + throw new Error("[UriError]: Scheme contains illegal characters."); + } + if (ret.path) { + if (ret.authority) { + if (!_singleSlashStart.test(ret.path)) { + throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character'); + } + } else { + if (_doubleSlashStart.test(ret.path)) { + throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")'); + } + } + } +} +function _schemeFix(scheme, _strict) { + if (!scheme && !_strict) { + return "file"; + } + return scheme; +} +function _referenceResolution(scheme, path) { + switch (scheme) { + case "https": + case "http": + case "file": + if (!path) { + path = _slash; + } else if (path[0] !== _slash) { + path = _slash + path; + } + break; + } + return path; +} +var _empty = ""; +var _slash = "/"; +var _regexp = /^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/; +var URI = class _URI { + static isUri(thing) { + if (thing instanceof _URI) { + return true; + } + if (!thing) { + return false; + } + return typeof thing.authority === "string" && typeof thing.fragment === "string" && typeof thing.path === "string" && typeof thing.query === "string" && typeof thing.scheme === "string" && typeof thing.fsPath === "string" && typeof thing.with === "function" && typeof thing.toString === "function"; + } + /** + * @internal + */ + constructor(schemeOrData, authority, path, query, fragment, _strict = false) { + if (typeof schemeOrData === "object") { + this.scheme = schemeOrData.scheme || _empty; + this.authority = schemeOrData.authority || _empty; + this.path = schemeOrData.path || _empty; + this.query = schemeOrData.query || _empty; + this.fragment = schemeOrData.fragment || _empty; + } else { + this.scheme = _schemeFix(schemeOrData, _strict); + this.authority = authority || _empty; + this.path = _referenceResolution(this.scheme, path || _empty); + this.query = query || _empty; + this.fragment = fragment || _empty; + _validateUri(this, _strict); + } + } + // ---- filesystem path ----------------------- + /** + * Returns a string representing the corresponding file system path of this URI. + * Will handle UNC paths, normalizes windows drive letters to lower-case, and uses the + * platform specific path separator. + * + * * Will *not* validate the path for invalid characters and semantics. + * * Will *not* look at the scheme of this URI. + * * The result shall *not* be used for display purposes but for accessing a file on disk. + * + * + * The *difference* to `URI#path` is the use of the platform specific separator and the handling + * of UNC paths. See the below sample of a file-uri with an authority (UNC path). + * + * ```ts + const u = URI.parse('file://server/c$/folder/file.txt') + u.authority === 'server' + u.path === '/shares/c$/file.txt' + u.fsPath === '\\server\c$\folder\file.txt' + ``` + * + * Using `URI#path` to read a file (using fs-apis) would not be enough because parts of the path, + * namely the server name, would be missing. Therefore `URI#fsPath` exists - it's sugar to ease working + * with URIs that represent files on disk (`file` scheme). + */ + get fsPath() { + return uriToFsPath(this, false); + } + // ---- modify to new ------------------------- + with(change) { + if (!change) { + return this; + } + let { scheme, authority, path, query, fragment } = change; + if (scheme === void 0) { + scheme = this.scheme; + } else if (scheme === null) { + scheme = _empty; + } + if (authority === void 0) { + authority = this.authority; + } else if (authority === null) { + authority = _empty; + } + if (path === void 0) { + path = this.path; + } else if (path === null) { + path = _empty; + } + if (query === void 0) { + query = this.query; + } else if (query === null) { + query = _empty; + } + if (fragment === void 0) { + fragment = this.fragment; + } else if (fragment === null) { + fragment = _empty; + } + if (scheme === this.scheme && authority === this.authority && path === this.path && query === this.query && fragment === this.fragment) { + return this; + } + return new Uri(scheme, authority, path, query, fragment); + } + // ---- parse & validate ------------------------ + /** + * Creates a new URI from a string, e.g. `http://www.example.com/some/path`, + * `file:///usr/home`, or `scheme:with/path`. + * + * @param value A string which represents an URI (see `URI#toString`). + */ + static parse(value, _strict = false) { + const match = _regexp.exec(value); + if (!match) { + return new Uri(_empty, _empty, _empty, _empty, _empty); + } + return new Uri( + match[2] || _empty, + percentDecode(match[4] || _empty), + percentDecode(match[5] || _empty), + percentDecode(match[7] || _empty), + percentDecode(match[9] || _empty), + _strict + ); + } + /** + * Creates a new URI from a file system path, e.g. `c:\my\files`, + * `/usr/home`, or `\\server\share\some\path`. + * + * The *difference* between `URI#parse` and `URI#file` is that the latter treats the argument + * as path, not as stringified-uri. E.g. `URI.file(path)` is **not the same as** + * `URI.parse('file://' + path)` because the path might contain characters that are + * interpreted (# and ?). See the following sample: + * ```ts + const good = URI.file('/coding/c#/project1'); + good.scheme === 'file'; + good.path === '/coding/c#/project1'; + good.fragment === ''; + const bad = URI.parse('file://' + '/coding/c#/project1'); + bad.scheme === 'file'; + bad.path === '/coding/c'; // path is now broken + bad.fragment === '/project1'; + ``` + * + * @param path A file system path (see `URI#fsPath`) + */ + static file(path) { + let authority = _empty; + if (isWindows) { + path = path.replace(/\\/g, _slash); + } + if (path[0] === _slash && path[1] === _slash) { + const idx = path.indexOf(_slash, 2); + if (idx === -1) { + authority = path.substring(2); + path = _slash; + } else { + authority = path.substring(2, idx); + path = path.substring(idx) || _slash; + } + } + return new Uri("file", authority, path, _empty, _empty); + } + /** + * Creates new URI from uri components. + * + * Unless `strict` is `true` the scheme is defaults to be `file`. This function performs + * validation and should be used for untrusted uri components retrieved from storage, + * user input, command arguments etc + */ + static from(components, strict) { + const result = new Uri( + components.scheme, + components.authority, + components.path, + components.query, + components.fragment, + strict + ); + return result; + } + /** + * Join a URI path with path fragments and normalizes the resulting path. + * + * @param uri The input URI. + * @param pathFragment The path fragment to add to the URI path. + * @returns The resulting URI. + */ + static joinPath(uri, ...pathFragment) { + if (!uri.path) { + throw new Error(`[UriError]: cannot call joinPath on URI without path`); + } + let newPath; + if (isWindows && uri.scheme === "file") { + newPath = _URI.file(win32.join(uriToFsPath(uri, true), ...pathFragment)).path; + } else { + newPath = posix.join(uri.path, ...pathFragment); + } + return uri.with({ path: newPath }); + } + // ---- printing/externalize --------------------------- + /** + * Creates a string representation for this URI. It's guaranteed that calling + * `URI.parse` with the result of this function creates an URI which is equal + * to this URI. + * + * * The result shall *not* be used for display purposes but for externalization or transport. + * * The result will be encoded using the percentage encoding and encoding happens mostly + * ignore the scheme-specific encoding rules. + * + * @param skipEncoding Do not encode the result, default is `false` + */ + toString(skipEncoding = false) { + return _asFormatted(this, skipEncoding); + } + toJSON() { + return this; + } + static revive(data) { + if (!data) { + return data; + } else if (data instanceof _URI) { + return data; + } else { + const result = new Uri(data); + result._formatted = data.external ?? null; + result._fsPath = data._sep === _pathSepMarker ? data.fsPath ?? null : null; + return result; + } + } + [Symbol.for("debug.description")]() { + return `URI(${this.toString()})`; + } +}; +var _pathSepMarker = isWindows ? 1 : void 0; +var Uri = class extends URI { + constructor() { + super(...arguments); + this._formatted = null; + this._fsPath = null; + } + get fsPath() { + if (!this._fsPath) { + this._fsPath = uriToFsPath(this, false); + } + return this._fsPath; + } + toString(skipEncoding = false) { + if (!skipEncoding) { + if (!this._formatted) { + this._formatted = _asFormatted(this, false); + } + return this._formatted; + } else { + return _asFormatted(this, true); + } + } + toJSON() { + const res = { + $mid: 1 /* Uri */ + }; + if (this._fsPath) { + res.fsPath = this._fsPath; + res._sep = _pathSepMarker; + } + if (this._formatted) { + res.external = this._formatted; + } + if (this.path) { + res.path = this.path; + } + if (this.scheme) { + res.scheme = this.scheme; + } + if (this.authority) { + res.authority = this.authority; + } + if (this.query) { + res.query = this.query; + } + if (this.fragment) { + res.fragment = this.fragment; + } + return res; + } +}; +var encodeTable = { + [58 /* Colon */]: "%3A", + // gen-delims + [47 /* Slash */]: "%2F", + [63 /* QuestionMark */]: "%3F", + [35 /* Hash */]: "%23", + [91 /* OpenSquareBracket */]: "%5B", + [93 /* CloseSquareBracket */]: "%5D", + [64 /* AtSign */]: "%40", + [33 /* ExclamationMark */]: "%21", + // sub-delims + [36 /* DollarSign */]: "%24", + [38 /* Ampersand */]: "%26", + [39 /* SingleQuote */]: "%27", + [40 /* OpenParen */]: "%28", + [41 /* CloseParen */]: "%29", + [42 /* Asterisk */]: "%2A", + [43 /* Plus */]: "%2B", + [44 /* Comma */]: "%2C", + [59 /* Semicolon */]: "%3B", + [61 /* Equals */]: "%3D", + [32 /* Space */]: "%20" +}; +function encodeURIComponentFast(uriComponent, isPath, isAuthority) { + let res = void 0; + let nativeEncodePos = -1; + for (let pos = 0; pos < uriComponent.length; pos++) { + const code = uriComponent.charCodeAt(pos); + if (code >= 97 /* a */ && code <= 122 /* z */ || code >= 65 /* A */ && code <= 90 /* Z */ || code >= 48 /* Digit0 */ && code <= 57 /* Digit9 */ || code === 45 /* Dash */ || code === 46 /* Period */ || code === 95 /* Underline */ || code === 126 /* Tilde */ || isPath && code === 47 /* Slash */ || isAuthority && code === 91 /* OpenSquareBracket */ || isAuthority && code === 93 /* CloseSquareBracket */ || isAuthority && code === 58 /* Colon */) { + if (nativeEncodePos !== -1) { + res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos)); + nativeEncodePos = -1; + } + if (res !== void 0) { + res += uriComponent.charAt(pos); + } + } else { + if (res === void 0) { + res = uriComponent.substr(0, pos); + } + const escaped = encodeTable[code]; + if (escaped !== void 0) { + if (nativeEncodePos !== -1) { + res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos)); + nativeEncodePos = -1; + } + res += escaped; + } else if (nativeEncodePos === -1) { + nativeEncodePos = pos; + } + } + } + if (nativeEncodePos !== -1) { + res += encodeURIComponent(uriComponent.substring(nativeEncodePos)); + } + return res !== void 0 ? res : uriComponent; +} +function encodeURIComponentMinimal(path) { + let res = void 0; + for (let pos = 0; pos < path.length; pos++) { + const code = path.charCodeAt(pos); + if (code === 35 /* Hash */ || code === 63 /* QuestionMark */) { + if (res === void 0) { + res = path.substr(0, pos); + } + res += encodeTable[code]; + } else { + if (res !== void 0) { + res += path[pos]; + } + } + } + return res !== void 0 ? res : path; +} +function uriToFsPath(uri, keepDriveLetterCasing) { + let value; + if (uri.authority && uri.path.length > 1 && uri.scheme === "file") { + value = `//${uri.authority}${uri.path}`; + } else if (uri.path.charCodeAt(0) === 47 /* Slash */ && (uri.path.charCodeAt(1) >= 65 /* A */ && uri.path.charCodeAt(1) <= 90 /* Z */ || uri.path.charCodeAt(1) >= 97 /* a */ && uri.path.charCodeAt(1) <= 122 /* z */) && uri.path.charCodeAt(2) === 58 /* Colon */) { + if (!keepDriveLetterCasing) { + value = uri.path[1].toLowerCase() + uri.path.substr(2); + } else { + value = uri.path.substr(1); + } + } else { + value = uri.path; + } + if (isWindows) { + value = value.replace(/\//g, "\\"); + } + return value; +} +function _asFormatted(uri, skipEncoding) { + const encoder = !skipEncoding ? encodeURIComponentFast : encodeURIComponentMinimal; + let res = ""; + let { scheme, authority, path, query, fragment } = uri; + if (scheme) { + res += scheme; + res += ":"; + } + if (authority || scheme === "file") { + res += _slash; + res += _slash; + } + if (authority) { + let idx = authority.indexOf("@"); + if (idx !== -1) { + const userinfo = authority.substr(0, idx); + authority = authority.substr(idx + 1); + idx = userinfo.lastIndexOf(":"); + if (idx === -1) { + res += encoder(userinfo, false, false); + } else { + res += encoder(userinfo.substr(0, idx), false, false); + res += ":"; + res += encoder(userinfo.substr(idx + 1), false, true); + } + res += "@"; + } + authority = authority.toLowerCase(); + idx = authority.lastIndexOf(":"); + if (idx === -1) { + res += encoder(authority, false, true); + } else { + res += encoder(authority.substr(0, idx), false, true); + res += authority.substr(idx); + } + } + if (path) { + if (path.length >= 3 && path.charCodeAt(0) === 47 /* Slash */ && path.charCodeAt(2) === 58 /* Colon */) { + const code = path.charCodeAt(1); + if (code >= 65 /* A */ && code <= 90 /* Z */) { + path = `/${String.fromCharCode(code + 32)}:${path.substr(3)}`; + } + } else if (path.length >= 2 && path.charCodeAt(1) === 58 /* Colon */) { + const code = path.charCodeAt(0); + if (code >= 65 /* A */ && code <= 90 /* Z */) { + path = `${String.fromCharCode(code + 32)}:${path.substr(2)}`; + } + } + res += encoder(path, true, false); + } + if (query) { + res += "?"; + res += encoder(query, false, false); + } + if (fragment) { + res += "#"; + res += !skipEncoding ? encodeURIComponentFast(fragment, false, false) : fragment; + } + return res; +} +function decodeURIComponentGraceful(str) { + try { + return decodeURIComponent(str); + } catch { + if (str.length > 3) { + return str.substr(0, 3) + decodeURIComponentGraceful(str.substr(3)); + } else { + return str; + } + } +} +var _rEncodedAsHex = /(%[0-9A-Za-z][0-9A-Za-z])+/g; +function percentDecode(str) { + if (!str.match(_rEncodedAsHex)) { + return str; + } + return str.replace(_rEncodedAsHex, (match) => decodeURIComponentGraceful(match)); +} + +// ../../../../../base/common/network.ts +var Schemas; +((Schemas2) => { + Schemas2.inMemory = "inmemory"; + Schemas2.vscode = "vscode"; + Schemas2.internal = "private"; + Schemas2.walkThrough = "walkThrough"; + Schemas2.walkThroughSnippet = "walkThroughSnippet"; + Schemas2.http = "http"; + Schemas2.https = "https"; + Schemas2.file = "file"; + Schemas2.mailto = "mailto"; + Schemas2.untitled = "untitled"; + Schemas2.data = "data"; + Schemas2.command = "command"; + Schemas2.vscodeRemote = "vscode-remote"; + Schemas2.vscodeRemoteResource = "vscode-remote-resource"; + Schemas2.vscodeManagedRemoteResource = "vscode-managed-remote-resource"; + Schemas2.vscodeUserData = "vscode-userdata"; + Schemas2.vscodeCustomEditor = "vscode-custom-editor"; + Schemas2.vscodeNotebookCell = "vscode-notebook-cell"; + Schemas2.vscodeNotebookCellMetadata = "vscode-notebook-cell-metadata"; + Schemas2.vscodeNotebookCellMetadataDiff = "vscode-notebook-cell-metadata-diff"; + Schemas2.vscodeNotebookCellOutput = "vscode-notebook-cell-output"; + Schemas2.vscodeNotebookCellOutputDiff = "vscode-notebook-cell-output-diff"; + Schemas2.vscodeNotebookMetadata = "vscode-notebook-metadata"; + Schemas2.vscodeInteractiveInput = "vscode-interactive-input"; + Schemas2.vscodeSettings = "vscode-settings"; + Schemas2.vscodeWorkspaceTrust = "vscode-workspace-trust"; + Schemas2.vscodeTerminal = "vscode-terminal"; + Schemas2.vscodeChatCodeBlock = "vscode-chat-code-block"; + Schemas2.vscodeChatCodeCompareBlock = "vscode-chat-code-compare-block"; + Schemas2.vscodeChatSesssion = "vscode-chat-editor"; + Schemas2.webviewPanel = "webview-panel"; + Schemas2.vscodeWebview = "vscode-webview"; + Schemas2.extension = "extension"; + Schemas2.vscodeFileResource = "vscode-file"; + Schemas2.tmp = "tmp"; + Schemas2.vsls = "vsls"; + Schemas2.vscodeSourceControl = "vscode-scm"; + Schemas2.commentsInput = "comment"; + Schemas2.codeSetting = "code-setting"; + Schemas2.outputChannel = "output"; +})(Schemas || (Schemas = {})); +var connectionTokenQueryName = "tkn"; +var RemoteAuthoritiesImpl = class { + constructor() { + this._hosts = /* @__PURE__ */ Object.create(null); + this._ports = /* @__PURE__ */ Object.create(null); + this._connectionTokens = /* @__PURE__ */ Object.create(null); + this._preferredWebSchema = "http"; + this._delegate = null; + this._serverRootPath = "/"; + } + setPreferredWebSchema(schema) { + this._preferredWebSchema = schema; + } + setDelegate(delegate) { + this._delegate = delegate; + } + setServerRootPath(product, serverBasePath) { + this._serverRootPath = getServerRootPath(product, serverBasePath); + } + getServerRootPath() { + return this._serverRootPath; + } + get _remoteResourcesPath() { + return posix.join(this._serverRootPath, Schemas.vscodeRemoteResource); + } + set(authority, host, port) { + this._hosts[authority] = host; + this._ports[authority] = port; + } + setConnectionToken(authority, connectionToken) { + this._connectionTokens[authority] = connectionToken; + } + getPreferredWebSchema() { + return this._preferredWebSchema; + } + rewrite(uri) { + if (this._delegate) { + try { + return this._delegate(uri); + } catch (err) { + onUnexpectedError(err); + return uri; + } + } + const authority = uri.authority; + let host = this._hosts[authority]; + if (host && host.indexOf(":") !== -1 && host.indexOf("[") === -1) { + host = `[${host}]`; + } + const port = this._ports[authority]; + const connectionToken = this._connectionTokens[authority]; + let query = `path=${encodeURIComponent(uri.path)}`; + if (typeof connectionToken === "string") { + query += `&${connectionTokenQueryName}=${encodeURIComponent(connectionToken)}`; + } + return URI.from({ + scheme: isWeb ? this._preferredWebSchema : Schemas.vscodeRemoteResource, + authority: `${host}:${port}`, + path: this._remoteResourcesPath, + query + }); + } +}; +var RemoteAuthorities = new RemoteAuthoritiesImpl(); +function getServerRootPath(product, basePath) { + return posix.join(basePath ?? "/", `${product.quality ?? "oss"}-${product.commit ?? "dev"}`); +} +var VSCODE_AUTHORITY = "vscode-app"; +var FileAccessImpl = class _FileAccessImpl { + static { + this.FALLBACK_AUTHORITY = VSCODE_AUTHORITY; + } + /** + * Returns a URI to use in contexts where the browser is responsible + * for loading (e.g. fetch()) or when used within the DOM. + * + * **Note:** use `dom.ts#asCSSUrl` whenever the URL is to be used in CSS context. + */ + asBrowserUri(resourcePath) { + const uri = this.toUri(resourcePath); + return this.uriToBrowserUri(uri); + } + /** + * Returns a URI to use in contexts where the browser is responsible + * for loading (e.g. fetch()) or when used within the DOM. + * + * **Note:** use `dom.ts#asCSSUrl` whenever the URL is to be used in CSS context. + */ + uriToBrowserUri(uri) { + if (uri.scheme === Schemas.vscodeRemote) { + return RemoteAuthorities.rewrite(uri); + } + if ( + // ...only ever for `file` resources + uri.scheme === Schemas.file && // ...and we run in native environments + (isNative || // ...or web worker extensions on desktop + webWorkerOrigin === `${Schemas.vscodeFileResource}://${_FileAccessImpl.FALLBACK_AUTHORITY}`) + ) { + return uri.with({ + scheme: Schemas.vscodeFileResource, + // We need to provide an authority here so that it can serve + // as origin for network and loading matters in chromium. + // If the URI is not coming with an authority already, we + // add our own + authority: uri.authority || _FileAccessImpl.FALLBACK_AUTHORITY, + query: null, + fragment: null + }); + } + return uri; + } + /** + * Returns the `file` URI to use in contexts where node.js + * is responsible for loading. + */ + asFileUri(resourcePath) { + const uri = this.toUri(resourcePath); + return this.uriToFileUri(uri); + } + /** + * Returns the `file` URI to use in contexts where node.js + * is responsible for loading. + */ + uriToFileUri(uri) { + if (uri.scheme === Schemas.vscodeFileResource) { + return uri.with({ + scheme: Schemas.file, + // Only preserve the `authority` if it is different from + // our fallback authority. This ensures we properly preserve + // Windows UNC paths that come with their own authority. + authority: uri.authority !== _FileAccessImpl.FALLBACK_AUTHORITY ? uri.authority : null, + query: null, + fragment: null + }); + } + return uri; + } + toUri(uriOrModule, moduleIdToUrl) { + if (URI.isUri(uriOrModule)) { + return uriOrModule; + } + if (globalThis._VSCODE_FILE_ROOT) { + const rootUriOrPath = globalThis._VSCODE_FILE_ROOT; + if (/^\w[\w\d+.-]*:\/\//.test(rootUriOrPath)) { + return URI.joinPath(URI.parse(rootUriOrPath, true), uriOrModule); + } + const modulePath = join(rootUriOrPath, uriOrModule); + return URI.file(modulePath); + } + return URI.parse(moduleIdToUrl.toUrl(uriOrModule)); + } +}; +var FileAccess = new FileAccessImpl(); +var COI; +((COI2) => { + const coiHeaders = /* @__PURE__ */ new Map([ + ["1", { "Cross-Origin-Opener-Policy": "same-origin" }], + ["2", { "Cross-Origin-Embedder-Policy": "require-corp" }], + ["3", { "Cross-Origin-Opener-Policy": "same-origin", "Cross-Origin-Embedder-Policy": "require-corp" }] + ]); + COI2.CoopAndCoep = Object.freeze(coiHeaders.get("3")); + const coiSearchParamName = "vscode-coi"; + function getHeadersFromQuery(url) { + let params; + if (typeof url === "string") { + params = new URL(url).searchParams; + } else if (url instanceof URL) { + params = url.searchParams; + } else if (URI.isUri(url)) { + params = new URL(url.toString(true)).searchParams; + } + const value = params?.get(coiSearchParamName); + if (!value) { + return void 0; + } + return coiHeaders.get(value); + } + COI2.getHeadersFromQuery = getHeadersFromQuery; + function addSearchParam(urlOrSearch, coop, coep) { + if (!globalThis.crossOriginIsolated) { + return; + } + const value = coop && coep ? "3" : coep ? "2" : "1"; + if (urlOrSearch instanceof URLSearchParams) { + urlOrSearch.set(coiSearchParamName, value); + } else { + urlOrSearch[coiSearchParamName] = value; + } + } + COI2.addSearchParam = addSearchParam; +})(COI || (COI = {})); + +// ../../../../../base/common/resources.ts +function originalFSPath(uri) { + return uriToFsPath(uri, true); +} +var ExtUri = class { + constructor(_ignorePathCasing) { + this._ignorePathCasing = _ignorePathCasing; + } + compare(uri1, uri2, ignoreFragment = false) { + if (uri1 === uri2) { + return 0; + } + return compare(this.getComparisonKey(uri1, ignoreFragment), this.getComparisonKey(uri2, ignoreFragment)); + } + isEqual(uri1, uri2, ignoreFragment = false) { + if (uri1 === uri2) { + return true; + } + if (!uri1 || !uri2) { + return false; + } + return this.getComparisonKey(uri1, ignoreFragment) === this.getComparisonKey(uri2, ignoreFragment); + } + getComparisonKey(uri, ignoreFragment = false) { + return uri.with({ + path: this._ignorePathCasing(uri) ? uri.path.toLowerCase() : void 0, + fragment: ignoreFragment ? null : void 0 + }).toString(); + } + ignorePathCasing(uri) { + return this._ignorePathCasing(uri); + } + isEqualOrParent(base, parentCandidate, ignoreFragment = false) { + if (base.scheme === parentCandidate.scheme) { + if (base.scheme === Schemas.file) { + return isEqualOrParent(originalFSPath(base), originalFSPath(parentCandidate), this._ignorePathCasing(base)) && base.query === parentCandidate.query && (ignoreFragment || base.fragment === parentCandidate.fragment); + } + if (isEqualAuthority(base.authority, parentCandidate.authority)) { + return isEqualOrParent(base.path, parentCandidate.path, this._ignorePathCasing(base), "/") && base.query === parentCandidate.query && (ignoreFragment || base.fragment === parentCandidate.fragment); + } + } + return false; + } + // --- path math + joinPath(resource, ...pathFragment) { + return URI.joinPath(resource, ...pathFragment); + } + basenameOrAuthority(resource) { + return basename2(resource) || resource.authority; + } + basename(resource) { + return posix.basename(resource.path); + } + extname(resource) { + return posix.extname(resource.path); + } + dirname(resource) { + if (resource.path.length === 0) { + return resource; + } + let dirname3; + if (resource.scheme === Schemas.file) { + dirname3 = URI.file(dirname(originalFSPath(resource))).path; + } else { + dirname3 = posix.dirname(resource.path); + if (resource.authority && dirname3.length && dirname3.charCodeAt(0) !== 47 /* Slash */) { + console.error(`dirname("${resource.toString})) resulted in a relative path`); + dirname3 = "/"; + } + } + return resource.with({ + path: dirname3 + }); + } + normalizePath(resource) { + if (!resource.path.length) { + return resource; + } + let normalizedPath; + if (resource.scheme === Schemas.file) { + normalizedPath = URI.file(normalize(originalFSPath(resource))).path; + } else { + normalizedPath = posix.normalize(resource.path); + } + return resource.with({ + path: normalizedPath + }); + } + relativePath(from, to) { + if (from.scheme !== to.scheme || !isEqualAuthority(from.authority, to.authority)) { + return void 0; + } + if (from.scheme === Schemas.file) { + const relativePath2 = relative(originalFSPath(from), originalFSPath(to)); + return isWindows ? toSlashes(relativePath2) : relativePath2; + } + let fromPath = from.path || "/"; + const toPath = to.path || "/"; + if (this._ignorePathCasing(from)) { + let i = 0; + for (const len = Math.min(fromPath.length, toPath.length); i < len; i++) { + if (fromPath.charCodeAt(i) !== toPath.charCodeAt(i)) { + if (fromPath.charAt(i).toLowerCase() !== toPath.charAt(i).toLowerCase()) { + break; + } + } + } + fromPath = toPath.substr(0, i) + fromPath.substr(i); + } + return posix.relative(fromPath, toPath); + } + resolvePath(base, path) { + if (base.scheme === Schemas.file) { + const newURI = URI.file(resolve(originalFSPath(base), path)); + return base.with({ + authority: newURI.authority, + path: newURI.path + }); + } + path = toPosixPath(path); + return base.with({ + path: posix.resolve(base.path, path) + }); + } + // --- misc + isAbsolutePath(resource) { + return !!resource.path && resource.path[0] === "/"; + } + isEqualAuthority(a1, a2) { + return a1 === a2 || a1 !== void 0 && a2 !== void 0 && equalsIgnoreCase(a1, a2); + } + hasTrailingPathSeparator(resource, sep2 = sep) { + if (resource.scheme === Schemas.file) { + const fsp = originalFSPath(resource); + return fsp.length > getRoot(fsp).length && fsp[fsp.length - 1] === sep2; + } else { + const p = resource.path; + return p.length > 1 && p.charCodeAt(p.length - 1) === 47 /* Slash */ && !/^[a-zA-Z]:(\/$|\\$)/.test(resource.fsPath); + } + } + removeTrailingPathSeparator(resource, sep2 = sep) { + if (hasTrailingPathSeparator(resource, sep2)) { + return resource.with({ path: resource.path.substr(0, resource.path.length - 1) }); + } + return resource; + } + addTrailingPathSeparator(resource, sep2 = sep) { + let isRootSep = false; + if (resource.scheme === Schemas.file) { + const fsp = originalFSPath(resource); + isRootSep = fsp !== void 0 && fsp.length === getRoot(fsp).length && fsp[fsp.length - 1] === sep2; + } else { + sep2 = "/"; + const p = resource.path; + isRootSep = p.length === 1 && p.charCodeAt(p.length - 1) === 47 /* Slash */; + } + if (!isRootSep && !hasTrailingPathSeparator(resource, sep2)) { + return resource.with({ path: resource.path + "/" }); + } + return resource; + } +}; +var extUri = new ExtUri(() => false); +var isEqual = extUri.isEqual.bind(extUri); +extUri.isEqualOrParent.bind(extUri); +extUri.getComparisonKey.bind(extUri); +extUri.basenameOrAuthority.bind(extUri); +var basename2 = extUri.basename.bind(extUri); +extUri.extname.bind(extUri); +var dirname2 = extUri.dirname.bind(extUri); +var joinPath = extUri.joinPath.bind(extUri); +extUri.normalizePath.bind(extUri); +extUri.relativePath.bind(extUri); +var resolvePath = extUri.resolvePath.bind(extUri); +extUri.isAbsolutePath.bind(extUri); +var isEqualAuthority = extUri.isEqualAuthority.bind(extUri); +var hasTrailingPathSeparator = extUri.hasTrailingPathSeparator.bind(extUri); +extUri.removeTrailingPathSeparator.bind(extUri); +extUri.addTrailingPathSeparator.bind(extUri); +var DataUri; +((DataUri2) => { + DataUri2.META_DATA_LABEL = "label"; + DataUri2.META_DATA_DESCRIPTION = "description"; + DataUri2.META_DATA_SIZE = "size"; + DataUri2.META_DATA_MIME = "mime"; + function parseMetaData(dataUri) { + const metadata = /* @__PURE__ */ new Map(); + const meta = dataUri.path.substring(dataUri.path.indexOf(";") + 1, dataUri.path.lastIndexOf(";")); + meta.split(";").forEach((property) => { + const [key, value] = property.split(":"); + if (key && value) { + metadata.set(key, value); + } + }); + const mime = dataUri.path.substring(0, dataUri.path.indexOf(";")); + if (mime) { + metadata.set(DataUri2.META_DATA_MIME, mime); + } + return metadata; + } + DataUri2.parseMetaData = parseMetaData; +})(DataUri || (DataUri = {})); + +// ../../../../../base/common/symbols.ts +var MicrotaskDelay = Symbol("MicrotaskDelay"); + +// ../../../../../base/common/async.ts +function createCancelablePromise(callback) { + const source = new CancellationTokenSource(); + const thenable = callback(source.token); + const promise = new Promise((resolve2, reject) => { + const subscription = source.token.onCancellationRequested(() => { + subscription.dispose(); + reject(new CancellationError()); + }); + Promise.resolve(thenable).then((value) => { + subscription.dispose(); + source.dispose(); + resolve2(value); + }, (err) => { + subscription.dispose(); + source.dispose(); + reject(err); + }); + }); + return new class { + cancel() { + source.cancel(); + source.dispose(); + } + then(resolve2, reject) { + return promise.then(resolve2, reject); + } + catch(reject) { + return this.then(void 0, reject); + } + finally(onfinally) { + return promise.finally(onfinally); + } + }(); +} +var Throttler = class { + constructor() { + this.isDisposed = false; + this.activePromise = null; + this.queuedPromise = null; + this.queuedPromiseFactory = null; + } + queue(promiseFactory) { + if (this.isDisposed) { + return Promise.reject(new Error("Throttler is disposed")); + } + if (this.activePromise) { + this.queuedPromiseFactory = promiseFactory; + if (!this.queuedPromise) { + const onComplete = () => { + this.queuedPromise = null; + if (this.isDisposed) { + return; + } + const result = this.queue(this.queuedPromiseFactory); + this.queuedPromiseFactory = null; + return result; + }; + this.queuedPromise = new Promise((resolve2) => { + this.activePromise.then(onComplete, onComplete).then(resolve2); + }); + } + return new Promise((resolve2, reject) => { + this.queuedPromise.then(resolve2, reject); + }); + } + this.activePromise = promiseFactory(); + return new Promise((resolve2, reject) => { + this.activePromise.then((result) => { + this.activePromise = null; + resolve2(result); + }, (err) => { + this.activePromise = null; + reject(err); + }); + }); + } + dispose() { + this.isDisposed = true; + } +}; +var timeoutDeferred = (timeout2, fn) => { + let scheduled = true; + const handle = setTimeout(() => { + scheduled = false; + fn(); + }, timeout2); + return { + isTriggered: () => scheduled, + dispose: () => { + clearTimeout(handle); + scheduled = false; + } + }; +}; +var microtaskDeferred = (fn) => { + let scheduled = true; + queueMicrotask(() => { + if (scheduled) { + scheduled = false; + fn(); + } + }); + return { + isTriggered: () => scheduled, + dispose: () => { + scheduled = false; + } + }; +}; +var Delayer = class { + constructor(defaultDelay) { + this.defaultDelay = defaultDelay; + this.deferred = null; + this.completionPromise = null; + this.doResolve = null; + this.doReject = null; + this.task = null; + } + trigger(task, delay = this.defaultDelay) { + this.task = task; + this.cancelTimeout(); + if (!this.completionPromise) { + this.completionPromise = new Promise((resolve2, reject) => { + this.doResolve = resolve2; + this.doReject = reject; + }).then(() => { + this.completionPromise = null; + this.doResolve = null; + if (this.task) { + const task2 = this.task; + this.task = null; + return task2(); + } + return void 0; + }); + } + const fn = () => { + this.deferred = null; + this.doResolve?.(null); + }; + this.deferred = delay === MicrotaskDelay ? microtaskDeferred(fn) : timeoutDeferred(delay, fn); + return this.completionPromise; + } + isTriggered() { + return !!this.deferred?.isTriggered(); + } + cancel() { + this.cancelTimeout(); + if (this.completionPromise) { + this.doReject?.(new CancellationError()); + this.completionPromise = null; + } + } + cancelTimeout() { + this.deferred?.dispose(); + this.deferred = null; + } + dispose() { + this.cancel(); + } +}; +var ThrottledDelayer = class { + constructor(defaultDelay) { + this.delayer = new Delayer(defaultDelay); + this.throttler = new Throttler(); + } + trigger(promiseFactory, delay) { + return this.delayer.trigger(() => this.throttler.queue(promiseFactory), delay); + } + isTriggered() { + return this.delayer.isTriggered(); + } + cancel() { + this.delayer.cancel(); + } + dispose() { + this.delayer.dispose(); + this.throttler.dispose(); + } +}; +function timeout(millis, token) { + if (!token) { + return createCancelablePromise((token2) => timeout(millis, token2)); + } + return new Promise((resolve2, reject) => { + const handle = setTimeout(() => { + disposable.dispose(); + resolve2(); + }, millis); + const disposable = token.onCancellationRequested(() => { + clearTimeout(handle); + disposable.dispose(); + reject(new CancellationError()); + }); + }); +} +function disposableTimeout(handler, timeout2 = 0, store) { + const timer = setTimeout(() => { + handler(); + if (store) { + disposable.dispose(); + } + }, timeout2); + const disposable = toDisposable(() => { + clearTimeout(timer); + store?.deleteAndLeak(disposable); + }); + store?.add(disposable); + return disposable; +} +var TimeoutTimer = class { + constructor(runner, timeout2) { + this._isDisposed = false; + this._token = -1; + if (typeof runner === "function" && typeof timeout2 === "number") { + this.setIfNotSet(runner, timeout2); + } + } + dispose() { + this.cancel(); + this._isDisposed = true; + } + cancel() { + if (this._token !== -1) { + clearTimeout(this._token); + this._token = -1; + } + } + cancelAndSet(runner, timeout2) { + if (this._isDisposed) { + throw new BugIndicatingError(`Calling 'cancelAndSet' on a disposed TimeoutTimer`); + } + this.cancel(); + this._token = setTimeout(() => { + this._token = -1; + runner(); + }, timeout2); + } + setIfNotSet(runner, timeout2) { + if (this._isDisposed) { + throw new BugIndicatingError(`Calling 'setIfNotSet' on a disposed TimeoutTimer`); + } + if (this._token !== -1) { + return; + } + this._token = setTimeout(() => { + this._token = -1; + runner(); + }, timeout2); + } +}; +var IntervalTimer = class { + constructor() { + this.disposable = void 0; + this.isDisposed = false; + } + cancel() { + this.disposable?.dispose(); + this.disposable = void 0; + } + cancelAndSet(runner, interval, context = globalThis) { + if (this.isDisposed) { + throw new BugIndicatingError(`Calling 'cancelAndSet' on a disposed IntervalTimer`); + } + this.cancel(); + const handle = context.setInterval(() => { + runner(); + }, interval); + this.disposable = toDisposable(() => { + context.clearInterval(handle); + this.disposable = void 0; + }); + } + dispose() { + this.cancel(); + this.isDisposed = true; + } +}; +var RunOnceScheduler = class { + constructor(runner, delay) { + this.timeoutToken = -1; + this.runner = runner; + this.timeout = delay; + this.timeoutHandler = this.onTimeout.bind(this); + } + /** + * Dispose RunOnceScheduler + */ + dispose() { + this.cancel(); + this.runner = null; + } + /** + * Cancel current scheduled runner (if any). + */ + cancel() { + if (this.isScheduled()) { + clearTimeout(this.timeoutToken); + this.timeoutToken = -1; + } + } + /** + * Cancel previous runner (if any) & schedule a new runner. + */ + schedule(delay = this.timeout) { + this.cancel(); + this.timeoutToken = setTimeout(this.timeoutHandler, delay); + } + get delay() { + return this.timeout; + } + set delay(value) { + this.timeout = value; + } + /** + * Returns true if scheduled. + */ + isScheduled() { + return this.timeoutToken !== -1; + } + flush() { + if (this.isScheduled()) { + this.cancel(); + this.doRun(); + } + } + onTimeout() { + this.timeoutToken = -1; + if (this.runner) { + this.doRun(); + } + } + doRun() { + this.runner?.(); + } +}; +var runWhenGlobalIdle; +var _runWhenIdle; +(function() { + if (typeof globalThis.requestIdleCallback !== "function" || typeof globalThis.cancelIdleCallback !== "function") { + _runWhenIdle = (_targetWindow, runner) => { + setTimeout0(() => { + if (disposed) { + return; + } + const end = Date.now() + 15; + const deadline = { + didTimeout: true, + timeRemaining() { + return Math.max(0, end - Date.now()); + } + }; + runner(Object.freeze(deadline)); + }); + let disposed = false; + return { + dispose() { + if (disposed) { + return; + } + disposed = true; + } + }; + }; + } else { + _runWhenIdle = (targetWindow, runner, timeout2) => { + const handle = targetWindow.requestIdleCallback(runner, typeof timeout2 === "number" ? { timeout: timeout2 } : void 0); + let disposed = false; + return { + dispose() { + if (disposed) { + return; + } + disposed = true; + targetWindow.cancelIdleCallback(handle); + } + }; + }; + } + runWhenGlobalIdle = (runner) => _runWhenIdle(globalThis, runner); +})(); +var DeferredPromise = class { + get isRejected() { + return this.outcome?.outcome === 1 /* Rejected */; + } + get isResolved() { + return this.outcome?.outcome === 0 /* Resolved */; + } + get isSettled() { + return !!this.outcome; + } + get value() { + return this.outcome?.outcome === 0 /* Resolved */ ? this.outcome?.value : void 0; + } + constructor() { + this.p = new Promise((c, e) => { + this.completeCallback = c; + this.errorCallback = e; + }); + } + complete(value) { + return new Promise((resolve2) => { + this.completeCallback(value); + this.outcome = { outcome: 0 /* Resolved */, value }; + resolve2(); + }); + } + error(err) { + return new Promise((resolve2) => { + this.errorCallback(err); + this.outcome = { outcome: 1 /* Rejected */, value: err }; + resolve2(); + }); + } + cancel() { + return this.error(new CancellationError()); + } +}; +var Promises; +((Promises2) => { + async function settled(promises) { + let firstError = void 0; + const result = await Promise.all(promises.map((promise) => promise.then((value) => value, (error) => { + if (!firstError) { + firstError = error; + } + return void 0; + }))); + if (typeof firstError !== "undefined") { + throw firstError; + } + return result; + } + Promises2.settled = settled; + function withAsyncBody(bodyFn) { + return new Promise(async (resolve2, reject) => { + try { + await bodyFn(resolve2, reject); + } catch (error) { + reject(error); + } + }); + } + Promises2.withAsyncBody = withAsyncBody; +})(Promises || (Promises = {})); +(class _AsyncIterableObject { + static fromArray(items) { + return new _AsyncIterableObject((writer) => { + writer.emitMany(items); + }); + } + static fromPromise(promise) { + return new _AsyncIterableObject(async (emitter) => { + emitter.emitMany(await promise); + }); + } + static fromPromises(promises) { + return new _AsyncIterableObject(async (emitter) => { + await Promise.all(promises.map(async (p) => emitter.emitOne(await p))); + }); + } + static merge(iterables) { + return new _AsyncIterableObject(async (emitter) => { + await Promise.all(iterables.map(async (iterable) => { + for await (const item of iterable) { + emitter.emitOne(item); + } + })); + }); + } + static { + this.EMPTY = _AsyncIterableObject.fromArray([]); + } + constructor(executor, onReturn) { + this._state = 0 /* Initial */; + this._results = []; + this._error = null; + this._onReturn = onReturn; + this._onStateChanged = new Emitter(); + queueMicrotask(async () => { + const writer = { + emitOne: (item) => this.emitOne(item), + emitMany: (items) => this.emitMany(items), + reject: (error) => this.reject(error) + }; + try { + await Promise.resolve(executor(writer)); + this.resolve(); + } catch (err) { + this.reject(err); + } finally { + writer.emitOne = void 0; + writer.emitMany = void 0; + writer.reject = void 0; + } + }); + } + [Symbol.asyncIterator]() { + let i = 0; + return { + next: async () => { + do { + if (this._state === 2 /* DoneError */) { + throw this._error; + } + if (i < this._results.length) { + return { done: false, value: this._results[i++] }; + } + if (this._state === 1 /* DoneOK */) { + return { done: true, value: void 0 }; + } + await Event.toPromise(this._onStateChanged.event); + } while (true); + }, + return: async () => { + this._onReturn?.(); + return { done: true, value: void 0 }; + } + }; + } + static map(iterable, mapFn) { + return new _AsyncIterableObject(async (emitter) => { + for await (const item of iterable) { + emitter.emitOne(mapFn(item)); + } + }); + } + map(mapFn) { + return _AsyncIterableObject.map(this, mapFn); + } + static filter(iterable, filterFn) { + return new _AsyncIterableObject(async (emitter) => { + for await (const item of iterable) { + if (filterFn(item)) { + emitter.emitOne(item); + } + } + }); + } + filter(filterFn) { + return _AsyncIterableObject.filter(this, filterFn); + } + static coalesce(iterable) { + return _AsyncIterableObject.filter(iterable, (item) => !!item); + } + coalesce() { + return _AsyncIterableObject.coalesce(this); + } + static async toPromise(iterable) { + const result = []; + for await (const item of iterable) { + result.push(item); + } + return result; + } + toPromise() { + return _AsyncIterableObject.toPromise(this); + } + /** + * The value will be appended at the end. + * + * **NOTE** If `resolve()` or `reject()` have already been called, this method has no effect. + */ + emitOne(value) { + if (this._state !== 0 /* Initial */) { + return; + } + this._results.push(value); + this._onStateChanged.fire(); + } + /** + * The values will be appended at the end. + * + * **NOTE** If `resolve()` or `reject()` have already been called, this method has no effect. + */ + emitMany(values) { + if (this._state !== 0 /* Initial */) { + return; + } + this._results = this._results.concat(values); + this._onStateChanged.fire(); + } + /** + * Calling `resolve()` will mark the result array as complete. + * + * **NOTE** `resolve()` must be called, otherwise all consumers of this iterable will hang indefinitely, similar to a non-resolved promise. + * **NOTE** If `resolve()` or `reject()` have already been called, this method has no effect. + */ + resolve() { + if (this._state !== 0 /* Initial */) { + return; + } + this._state = 1 /* DoneOK */; + this._onStateChanged.fire(); + } + /** + * Writing an error will permanently invalidate this iterable. + * The current users will receive an error thrown, as will all future users. + * + * **NOTE** If `resolve()` or `reject()` have already been called, this method has no effect. + */ + reject(error) { + if (this._state !== 0 /* Initial */) { + return; + } + this._state = 2 /* DoneError */; + this._error = error; + this._onStateChanged.fire(); + } +}); + +// ../../../../../base/common/color.ts +function roundFloat(number, decimalPoints) { + const decimal = Math.pow(10, decimalPoints); + return Math.round(number * decimal) / decimal; +} +var RGBA = class { + constructor(r, g, b, a = 1) { + this._rgbaBrand = void 0; + this.r = Math.min(255, Math.max(0, r)) | 0; + this.g = Math.min(255, Math.max(0, g)) | 0; + this.b = Math.min(255, Math.max(0, b)) | 0; + this.a = roundFloat(Math.max(Math.min(1, a), 0), 3); + } + static equals(a, b) { + return a.r === b.r && a.g === b.g && a.b === b.b && a.a === b.a; + } +}; +var HSLA = class _HSLA { + constructor(h2, s, l, a) { + this._hslaBrand = void 0; + this.h = Math.max(Math.min(360, h2), 0) | 0; + this.s = roundFloat(Math.max(Math.min(1, s), 0), 3); + this.l = roundFloat(Math.max(Math.min(1, l), 0), 3); + this.a = roundFloat(Math.max(Math.min(1, a), 0), 3); + } + static equals(a, b) { + return a.h === b.h && a.s === b.s && a.l === b.l && a.a === b.a; + } + /** + * Converts an RGB color value to HSL. Conversion formula + * adapted from http://en.wikipedia.org/wiki/HSL_color_space. + * Assumes r, g, and b are contained in the set [0, 255] and + * returns h in the set [0, 360], s, and l in the set [0, 1]. + */ + static fromRGBA(rgba) { + const r = rgba.r / 255; + const g = rgba.g / 255; + const b = rgba.b / 255; + const a = rgba.a; + const max = Math.max(r, g, b); + const min = Math.min(r, g, b); + let h2 = 0; + let s = 0; + const l = (min + max) / 2; + const chroma = max - min; + if (chroma > 0) { + s = Math.min(l <= 0.5 ? chroma / (2 * l) : chroma / (2 - 2 * l), 1); + switch (max) { + case r: + h2 = (g - b) / chroma + (g < b ? 6 : 0); + break; + case g: + h2 = (b - r) / chroma + 2; + break; + case b: + h2 = (r - g) / chroma + 4; + break; + } + h2 *= 60; + h2 = Math.round(h2); + } + return new _HSLA(h2, s, l, a); + } + static _hue2rgb(p, q, t) { + if (t < 0) { + t += 1; + } + if (t > 1) { + t -= 1; + } + if (t < 1 / 6) { + return p + (q - p) * 6 * t; + } + if (t < 1 / 2) { + return q; + } + if (t < 2 / 3) { + return p + (q - p) * (2 / 3 - t) * 6; + } + return p; + } + /** + * Converts an HSL color value to RGB. Conversion formula + * adapted from http://en.wikipedia.org/wiki/HSL_color_space. + * Assumes h in the set [0, 360] s, and l are contained in the set [0, 1] and + * returns r, g, and b in the set [0, 255]. + */ + static toRGBA(hsla) { + const h2 = hsla.h / 360; + const { s, l, a } = hsla; + let r, g, b; + if (s === 0) { + r = g = b = l; + } else { + const q = l < 0.5 ? l * (1 + s) : l + s - l * s; + const p = 2 * l - q; + r = _HSLA._hue2rgb(p, q, h2 + 1 / 3); + g = _HSLA._hue2rgb(p, q, h2); + b = _HSLA._hue2rgb(p, q, h2 - 1 / 3); + } + return new RGBA(Math.round(r * 255), Math.round(g * 255), Math.round(b * 255), a); + } +}; +var HSVA = class _HSVA { + constructor(h2, s, v, a) { + this._hsvaBrand = void 0; + this.h = Math.max(Math.min(360, h2), 0) | 0; + this.s = roundFloat(Math.max(Math.min(1, s), 0), 3); + this.v = roundFloat(Math.max(Math.min(1, v), 0), 3); + this.a = roundFloat(Math.max(Math.min(1, a), 0), 3); + } + static equals(a, b) { + return a.h === b.h && a.s === b.s && a.v === b.v && a.a === b.a; + } + // from http://www.rapidtables.com/convert/color/rgb-to-hsv.htm + static fromRGBA(rgba) { + const r = rgba.r / 255; + const g = rgba.g / 255; + const b = rgba.b / 255; + const cmax = Math.max(r, g, b); + const cmin = Math.min(r, g, b); + const delta = cmax - cmin; + const s = cmax === 0 ? 0 : delta / cmax; + let m; + if (delta === 0) { + m = 0; + } else if (cmax === r) { + m = ((g - b) / delta % 6 + 6) % 6; + } else if (cmax === g) { + m = (b - r) / delta + 2; + } else { + m = (r - g) / delta + 4; + } + return new _HSVA(Math.round(m * 60), s, cmax, rgba.a); + } + // from http://www.rapidtables.com/convert/color/hsv-to-rgb.htm + static toRGBA(hsva) { + const { h: h2, s, v, a } = hsva; + const c = v * s; + const x = c * (1 - Math.abs(h2 / 60 % 2 - 1)); + const m = v - c; + let [r, g, b] = [0, 0, 0]; + if (h2 < 60) { + r = c; + g = x; + } else if (h2 < 120) { + r = x; + g = c; + } else if (h2 < 180) { + g = c; + b = x; + } else if (h2 < 240) { + g = x; + b = c; + } else if (h2 < 300) { + r = x; + b = c; + } else if (h2 <= 360) { + r = c; + b = x; + } + r = Math.round((r + m) * 255); + g = Math.round((g + m) * 255); + b = Math.round((b + m) * 255); + return new RGBA(r, g, b, a); + } +}; +var Color = class _Color { + static fromHex(hex) { + return _Color.Format.CSS.parseHex(hex) || _Color.red; + } + static equals(a, b) { + if (!a && !b) { + return true; + } + if (!a || !b) { + return false; + } + return a.equals(b); + } + get hsla() { + if (this._hsla) { + return this._hsla; + } else { + return HSLA.fromRGBA(this.rgba); + } + } + get hsva() { + if (this._hsva) { + return this._hsva; + } + return HSVA.fromRGBA(this.rgba); + } + constructor(arg) { + if (!arg) { + throw new Error("Color needs a value"); + } else if (arg instanceof RGBA) { + this.rgba = arg; + } else if (arg instanceof HSLA) { + this._hsla = arg; + this.rgba = HSLA.toRGBA(arg); + } else if (arg instanceof HSVA) { + this._hsva = arg; + this.rgba = HSVA.toRGBA(arg); + } else { + throw new Error("Invalid color ctor argument"); + } + } + equals(other) { + return !!other && RGBA.equals(this.rgba, other.rgba) && HSLA.equals(this.hsla, other.hsla) && HSVA.equals(this.hsva, other.hsva); + } + /** + * http://www.w3.org/TR/WCAG20/#relativeluminancedef + * Returns the number in the set [0, 1]. O => Darkest Black. 1 => Lightest white. + */ + getRelativeLuminance() { + const R = _Color._relativeLuminanceForComponent(this.rgba.r); + const G = _Color._relativeLuminanceForComponent(this.rgba.g); + const B = _Color._relativeLuminanceForComponent(this.rgba.b); + const luminance = 0.2126 * R + 0.7152 * G + 0.0722 * B; + return roundFloat(luminance, 4); + } + /** + * Reduces the "foreground" color on this "background" color unti it is + * below the relative luminace ratio. + * @returns the new foreground color + * @see https://github.com/xtermjs/xterm.js/blob/44f9fa39ae03e2ca6d28354d88a399608686770e/src/common/Color.ts#L315 + */ + reduceRelativeLuminace(foreground2, ratio) { + let { r: fgR, g: fgG, b: fgB } = foreground2.rgba; + let cr = this.getContrastRatio(foreground2); + while (cr < ratio && (fgR > 0 || fgG > 0 || fgB > 0)) { + fgR -= Math.max(0, Math.ceil(fgR * 0.1)); + fgG -= Math.max(0, Math.ceil(fgG * 0.1)); + fgB -= Math.max(0, Math.ceil(fgB * 0.1)); + cr = this.getContrastRatio(new _Color(new RGBA(fgR, fgG, fgB))); + } + return new _Color(new RGBA(fgR, fgG, fgB)); + } + /** + * Increases the "foreground" color on this "background" color unti it is + * below the relative luminace ratio. + * @returns the new foreground color + * @see https://github.com/xtermjs/xterm.js/blob/44f9fa39ae03e2ca6d28354d88a399608686770e/src/common/Color.ts#L335 + */ + increaseRelativeLuminace(foreground2, ratio) { + let { r: fgR, g: fgG, b: fgB } = foreground2.rgba; + let cr = this.getContrastRatio(foreground2); + while (cr < ratio && (fgR < 255 || fgG < 255 || fgB < 255)) { + fgR = Math.min(255, fgR + Math.ceil((255 - fgR) * 0.1)); + fgG = Math.min(255, fgG + Math.ceil((255 - fgG) * 0.1)); + fgB = Math.min(255, fgB + Math.ceil((255 - fgB) * 0.1)); + cr = this.getContrastRatio(new _Color(new RGBA(fgR, fgG, fgB))); + } + return new _Color(new RGBA(fgR, fgG, fgB)); + } + static _relativeLuminanceForComponent(color) { + const c = color / 255; + return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4); + } + /** + * http://www.w3.org/TR/WCAG20/#contrast-ratiodef + * Returns the contrast ration number in the set [1, 21]. + */ + getContrastRatio(another) { + const lum1 = this.getRelativeLuminance(); + const lum2 = another.getRelativeLuminance(); + return lum1 > lum2 ? (lum1 + 0.05) / (lum2 + 0.05) : (lum2 + 0.05) / (lum1 + 0.05); + } + /** + * http://24ways.org/2010/calculating-color-contrast + * Return 'true' if darker color otherwise 'false' + */ + isDarker() { + const yiq = (this.rgba.r * 299 + this.rgba.g * 587 + this.rgba.b * 114) / 1e3; + return yiq < 128; + } + /** + * http://24ways.org/2010/calculating-color-contrast + * Return 'true' if lighter color otherwise 'false' + */ + isLighter() { + const yiq = (this.rgba.r * 299 + this.rgba.g * 587 + this.rgba.b * 114) / 1e3; + return yiq >= 128; + } + isLighterThan(another) { + const lum1 = this.getRelativeLuminance(); + const lum2 = another.getRelativeLuminance(); + return lum1 > lum2; + } + isDarkerThan(another) { + const lum1 = this.getRelativeLuminance(); + const lum2 = another.getRelativeLuminance(); + return lum1 < lum2; + } + /** + * Based on xterm.js: https://github.com/xtermjs/xterm.js/blob/44f9fa39ae03e2ca6d28354d88a399608686770e/src/common/Color.ts#L288 + * + * Given a foreground color and a background color, either increase or reduce the luminance of the + * foreground color until the specified contrast ratio is met. If pure white or black is hit + * without the contrast ratio being met, go the other direction using the background color as the + * foreground color and take either the first or second result depending on which has the higher + * contrast ratio. + * + * @param foreground The foreground color. + * @param ratio The contrast ratio to achieve. + * @returns The adjusted foreground color. + */ + ensureConstrast(foreground2, ratio) { + const bgL = this.getRelativeLuminance(); + const fgL = foreground2.getRelativeLuminance(); + const cr = this.getContrastRatio(foreground2); + if (cr < ratio) { + if (fgL < bgL) { + const resultA2 = this.reduceRelativeLuminace(foreground2, ratio); + const resultARatio2 = this.getContrastRatio(resultA2); + if (resultARatio2 < ratio) { + const resultB = this.increaseRelativeLuminace(foreground2, ratio); + const resultBRatio = this.getContrastRatio(resultB); + return resultARatio2 > resultBRatio ? resultA2 : resultB; + } + return resultA2; + } + const resultA = this.increaseRelativeLuminace(foreground2, ratio); + const resultARatio = this.getContrastRatio(resultA); + if (resultARatio < ratio) { + const resultB = this.reduceRelativeLuminace(foreground2, ratio); + const resultBRatio = this.getContrastRatio(resultB); + return resultARatio > resultBRatio ? resultA : resultB; + } + return resultA; + } + return foreground2; + } + lighten(factor) { + return new _Color(new HSLA(this.hsla.h, this.hsla.s, this.hsla.l + this.hsla.l * factor, this.hsla.a)); + } + darken(factor) { + return new _Color(new HSLA(this.hsla.h, this.hsla.s, this.hsla.l - this.hsla.l * factor, this.hsla.a)); + } + transparent(factor) { + const { r, g, b, a } = this.rgba; + return new _Color(new RGBA(r, g, b, a * factor)); + } + isTransparent() { + return this.rgba.a === 0; + } + isOpaque() { + return this.rgba.a === 1; + } + opposite() { + return new _Color(new RGBA(255 - this.rgba.r, 255 - this.rgba.g, 255 - this.rgba.b, this.rgba.a)); + } + blend(c) { + const rgba = c.rgba; + const thisA = this.rgba.a; + const colorA = rgba.a; + const a = thisA + colorA * (1 - thisA); + if (a < 1e-6) { + return _Color.transparent; + } + const r = this.rgba.r * thisA / a + rgba.r * colorA * (1 - thisA) / a; + const g = this.rgba.g * thisA / a + rgba.g * colorA * (1 - thisA) / a; + const b = this.rgba.b * thisA / a + rgba.b * colorA * (1 - thisA) / a; + return new _Color(new RGBA(r, g, b, a)); + } + makeOpaque(opaqueBackground) { + if (this.isOpaque() || opaqueBackground.rgba.a !== 1) { + return this; + } + const { r, g, b, a } = this.rgba; + return new _Color(new RGBA( + opaqueBackground.rgba.r - a * (opaqueBackground.rgba.r - r), + opaqueBackground.rgba.g - a * (opaqueBackground.rgba.g - g), + opaqueBackground.rgba.b - a * (opaqueBackground.rgba.b - b), + 1 + )); + } + flatten(...backgrounds) { + const background = backgrounds.reduceRight((accumulator, color) => { + return _Color._flatten(color, accumulator); + }); + return _Color._flatten(this, background); + } + static _flatten(foreground2, background) { + const backgroundAlpha = 1 - foreground2.rgba.a; + return new _Color(new RGBA( + backgroundAlpha * background.rgba.r + foreground2.rgba.a * foreground2.rgba.r, + backgroundAlpha * background.rgba.g + foreground2.rgba.a * foreground2.rgba.g, + backgroundAlpha * background.rgba.b + foreground2.rgba.a * foreground2.rgba.b + )); + } + toString() { + if (!this._toString) { + this._toString = _Color.Format.CSS.format(this); + } + return this._toString; + } + static getLighterColor(of, relative2, factor) { + if (of.isLighterThan(relative2)) { + return of; + } + factor = factor ? factor : 0.5; + const lum1 = of.getRelativeLuminance(); + const lum2 = relative2.getRelativeLuminance(); + factor = factor * (lum2 - lum1) / lum2; + return of.lighten(factor); + } + static getDarkerColor(of, relative2, factor) { + if (of.isDarkerThan(relative2)) { + return of; + } + factor = factor ? factor : 0.5; + const lum1 = of.getRelativeLuminance(); + const lum2 = relative2.getRelativeLuminance(); + factor = factor * (lum1 - lum2) / lum1; + return of.darken(factor); + } + static { + this.white = new _Color(new RGBA(255, 255, 255, 1)); + } + static { + this.black = new _Color(new RGBA(0, 0, 0, 1)); + } + static { + this.red = new _Color(new RGBA(255, 0, 0, 1)); + } + static { + this.blue = new _Color(new RGBA(0, 0, 255, 1)); + } + static { + this.green = new _Color(new RGBA(0, 255, 0, 1)); + } + static { + this.cyan = new _Color(new RGBA(0, 255, 255, 1)); + } + static { + this.lightgrey = new _Color(new RGBA(211, 211, 211, 1)); + } + static { + this.transparent = new _Color(new RGBA(0, 0, 0, 0)); + } +}; +((Color2) => { + ((Format2) => { + ((CSS2) => { + function formatRGB(color) { + if (color.rgba.a === 1) { + return `rgb(${color.rgba.r}, ${color.rgba.g}, ${color.rgba.b})`; + } + return Color2.Format.CSS.formatRGBA(color); + } + CSS2.formatRGB = formatRGB; + function formatRGBA(color) { + return `rgba(${color.rgba.r}, ${color.rgba.g}, ${color.rgba.b}, ${+color.rgba.a.toFixed(2)})`; + } + CSS2.formatRGBA = formatRGBA; + function formatHSL(color) { + if (color.hsla.a === 1) { + return `hsl(${color.hsla.h}, ${(color.hsla.s * 100).toFixed(2)}%, ${(color.hsla.l * 100).toFixed(2)}%)`; + } + return Color2.Format.CSS.formatHSLA(color); + } + CSS2.formatHSL = formatHSL; + function formatHSLA(color) { + return `hsla(${color.hsla.h}, ${(color.hsla.s * 100).toFixed(2)}%, ${(color.hsla.l * 100).toFixed(2)}%, ${color.hsla.a.toFixed(2)})`; + } + CSS2.formatHSLA = formatHSLA; + function _toTwoDigitHex(n) { + const r = n.toString(16); + return r.length !== 2 ? "0" + r : r; + } + function formatHex(color) { + return `#${_toTwoDigitHex(color.rgba.r)}${_toTwoDigitHex(color.rgba.g)}${_toTwoDigitHex(color.rgba.b)}`; + } + CSS2.formatHex = formatHex; + function formatHexA(color, compact = false) { + if (compact && color.rgba.a === 1) { + return Color2.Format.CSS.formatHex(color); + } + return `#${_toTwoDigitHex(color.rgba.r)}${_toTwoDigitHex(color.rgba.g)}${_toTwoDigitHex(color.rgba.b)}${_toTwoDigitHex(Math.round(color.rgba.a * 255))}`; + } + CSS2.formatHexA = formatHexA; + function format2(color) { + if (color.isOpaque()) { + return Color2.Format.CSS.formatHex(color); + } + return Color2.Format.CSS.formatRGBA(color); + } + CSS2.format = format2; + function parseHex(hex) { + const length = hex.length; + if (length === 0) { + return null; + } + if (hex.charCodeAt(0) !== 35 /* Hash */) { + return null; + } + if (length === 7) { + const r = 16 * _parseHexDigit(hex.charCodeAt(1)) + _parseHexDigit(hex.charCodeAt(2)); + const g = 16 * _parseHexDigit(hex.charCodeAt(3)) + _parseHexDigit(hex.charCodeAt(4)); + const b = 16 * _parseHexDigit(hex.charCodeAt(5)) + _parseHexDigit(hex.charCodeAt(6)); + return new Color2(new RGBA(r, g, b, 1)); + } + if (length === 9) { + const r = 16 * _parseHexDigit(hex.charCodeAt(1)) + _parseHexDigit(hex.charCodeAt(2)); + const g = 16 * _parseHexDigit(hex.charCodeAt(3)) + _parseHexDigit(hex.charCodeAt(4)); + const b = 16 * _parseHexDigit(hex.charCodeAt(5)) + _parseHexDigit(hex.charCodeAt(6)); + const a = 16 * _parseHexDigit(hex.charCodeAt(7)) + _parseHexDigit(hex.charCodeAt(8)); + return new Color2(new RGBA(r, g, b, a / 255)); + } + if (length === 4) { + const r = _parseHexDigit(hex.charCodeAt(1)); + const g = _parseHexDigit(hex.charCodeAt(2)); + const b = _parseHexDigit(hex.charCodeAt(3)); + return new Color2(new RGBA(16 * r + r, 16 * g + g, 16 * b + b)); + } + if (length === 5) { + const r = _parseHexDigit(hex.charCodeAt(1)); + const g = _parseHexDigit(hex.charCodeAt(2)); + const b = _parseHexDigit(hex.charCodeAt(3)); + const a = _parseHexDigit(hex.charCodeAt(4)); + return new Color2(new RGBA(16 * r + r, 16 * g + g, 16 * b + b, (16 * a + a) / 255)); + } + return null; + } + CSS2.parseHex = parseHex; + function _parseHexDigit(charCode) { + switch (charCode) { + case 48 /* Digit0 */: + return 0; + case 49 /* Digit1 */: + return 1; + case 50 /* Digit2 */: + return 2; + case 51 /* Digit3 */: + return 3; + case 52 /* Digit4 */: + return 4; + case 53 /* Digit5 */: + return 5; + case 54 /* Digit6 */: + return 6; + case 55 /* Digit7 */: + return 7; + case 56 /* Digit8 */: + return 8; + case 57 /* Digit9 */: + return 9; + case 97 /* a */: + return 10; + case 65 /* A */: + return 10; + case 98 /* b */: + return 11; + case 66 /* B */: + return 11; + case 99 /* c */: + return 12; + case 67 /* C */: + return 12; + case 100 /* d */: + return 13; + case 68 /* D */: + return 13; + case 101 /* e */: + return 14; + case 69 /* E */: + return 14; + case 102 /* f */: + return 15; + case 70 /* F */: + return 15; + } + return 0; + } + })(Format2.CSS || (Format2.CSS = {})); + })(Color2.Format || (Color2.Format = {})); +})(Color || (Color = {})); + +// ../../../../../base/common/jsonSchema.ts +function getCompressedContent(schema) { + let hasDups = false; + const equalsByString = /* @__PURE__ */ new Map(); + const nodeToEquals = /* @__PURE__ */ new Map(); + const visitSchemas = (next) => { + if (schema === next) { + return true; + } + const val = JSON.stringify(next); + if (val.length < 30) { + return true; + } + const eq = equalsByString.get(val); + if (!eq) { + const newEq = { schemas: [next] }; + equalsByString.set(val, newEq); + nodeToEquals.set(next, newEq); + return true; + } + eq.schemas.push(next); + nodeToEquals.set(next, eq); + hasDups = true; + return false; + }; + traverseNodes(schema, visitSchemas); + equalsByString.clear(); + if (!hasDups) { + return JSON.stringify(schema); + } + let defNodeName = "$defs"; + while (schema.hasOwnProperty(defNodeName)) { + defNodeName += "_"; + } + const definitions = []; + function stringify2(root) { + return JSON.stringify(root, (_key, value) => { + if (value !== root) { + const eq = nodeToEquals.get(value); + if (eq && eq.schemas.length > 1) { + if (!eq.id) { + eq.id = `_${definitions.length}`; + definitions.push(eq.schemas[0]); + } + return { $ref: `#/${defNodeName}/${eq.id}` }; + } + } + return value; + }); + } + const str = stringify2(schema); + const defStrings = []; + for (let i = 0; i < definitions.length; i++) { + defStrings.push(`"_${i}":${stringify2(definitions[i])}`); + } + if (defStrings.length) { + return `${str.substring(0, str.length - 1)},"${defNodeName}":{${defStrings.join(",")}}}`; + } + return str; +} +function isObject2(thing) { + return typeof thing === "object" && thing !== null; +} +function traverseNodes(root, visit) { + if (!root || typeof root !== "object") { + return; + } + const collectEntries = (...entries2) => { + for (const entry of entries2) { + if (isObject2(entry)) { + toWalk.push(entry); + } + } + }; + const collectMapEntries = (...maps) => { + for (const map of maps) { + if (isObject2(map)) { + for (const key in map) { + const entry = map[key]; + if (isObject2(entry)) { + toWalk.push(entry); + } + } + } + } + }; + const collectArrayEntries = (...arrays) => { + for (const array of arrays) { + if (Array.isArray(array)) { + for (const entry of array) { + if (isObject2(entry)) { + toWalk.push(entry); + } + } + } + } + }; + const collectEntryOrArrayEntries = (items) => { + if (Array.isArray(items)) { + for (const entry of items) { + if (isObject2(entry)) { + toWalk.push(entry); + } + } + } else if (isObject2(items)) { + toWalk.push(items); + } + }; + const toWalk = [root]; + let next = toWalk.pop(); + while (next) { + const visitChildern = visit(next); + if (visitChildern) { + collectEntries(next.additionalItems, next.additionalProperties, next.not, next.contains, next.propertyNames, next.if, next.then, next.else, next.unevaluatedItems, next.unevaluatedProperties); + collectMapEntries(next.definitions, next.$defs, next.properties, next.patternProperties, next.dependencies, next.dependentSchemas); + collectArrayEntries(next.anyOf, next.allOf, next.oneOf, next.prefixItems); + collectEntryOrArrayEntries(next.items); + } + next = toWalk.pop(); + } +} + +// ../../../../../platform/registry/common/platform.ts +var RegistryImpl = class { + constructor() { + this.data = /* @__PURE__ */ new Map(); + } + add(id2, data) { + ok(isString(id2)); + ok(isObject(data)); + ok(!this.data.has(id2), "There is already an extension with this id"); + this.data.set(id2, data); + } + knows(id2) { + return this.data.has(id2); + } + as(id2) { + return this.data.get(id2) || null; + } +}; +var Registry = new RegistryImpl(); + +// ../../../../../platform/jsonschemas/common/jsonContributionRegistry.ts +var Extensions = { + JSONContribution: "base.contributions.json" +}; +function normalizeId(id2) { + if (id2.length > 0 && id2.charAt(id2.length - 1) === "#") { + return id2.substring(0, id2.length - 1); + } + return id2; +} +var JSONContributionRegistry = class { + constructor() { + this._onDidChangeSchema = new Emitter(); + this.onDidChangeSchema = this._onDidChangeSchema.event; + this.schemasById = {}; + } + registerSchema(uri, unresolvedSchemaContent) { + this.schemasById[normalizeId(uri)] = unresolvedSchemaContent; + this._onDidChangeSchema.fire(uri); + } + notifySchemaChanged(uri) { + this._onDidChangeSchema.fire(uri); + } + getSchemaContributions() { + return { + schemas: this.schemasById + }; + } + getSchemaContent(uri) { + const schema = this.schemasById[uri]; + return schema ? getCompressedContent(schema) : void 0; + } + hasSchemaContent(uri) { + return !!this.schemasById[uri]; + } +}; +var jsonContributionRegistry = new JSONContributionRegistry(); +Registry.add(Extensions.JSONContribution, jsonContributionRegistry); + +// ../../../../../platform/theme/common/colorUtils.ts +function asCssVariableName(colorIdent) { + return `--vscode-${colorIdent.replace(/\./g, "-")}`; +} +function asCssVariable(color) { + return `var(${asCssVariableName(color)})`; +} +function asCssVariableWithDefault(color, defaultCssValue) { + return `var(${asCssVariableName(color)}, ${defaultCssValue})`; +} +function isColorDefaults(value) { + return value !== null && typeof value === "object" && "light" in value && "dark" in value; +} +var Extensions2 = { + ColorContribution: "base.contributions.colors" +}; +var DEFAULT_COLOR_CONFIG_VALUE = "default"; +var ColorRegistry = class { + constructor() { + this._onDidChangeSchema = new Emitter(); + this.onDidChangeSchema = this._onDidChangeSchema.event; + this.colorSchema = { type: "object", properties: {} }; + this.colorReferenceSchema = { type: "string", enum: [], enumDescriptions: [] }; + this.colorsById = {}; + } + notifyThemeUpdate(colorThemeData) { + for (const key of Object.keys(this.colorsById)) { + const color = colorThemeData.getColor(key); + if (color) { + this.colorSchema.properties[key].oneOf[0].defaultSnippets[0].body = `\${1:${color.toString()}}`; + } + } + this._onDidChangeSchema.fire(); + } + registerColor(id2, defaults2, description, needsTransparency = false, deprecationMessage) { + const colorContribution = { id: id2, description, defaults: defaults2, needsTransparency, deprecationMessage }; + this.colorsById[id2] = colorContribution; + const propertySchema = { type: "string", format: "color-hex", defaultSnippets: [{ body: "${1:#ff0000}" }] }; + if (deprecationMessage) { + propertySchema.deprecationMessage = deprecationMessage; + } + if (needsTransparency) { + propertySchema.pattern = "^#(?:(?[0-9a-fA-f]{3}[0-9a-eA-E])|(?:[0-9a-fA-F]{6}(?:(?![fF]{2})(?:[0-9a-fA-F]{2}))))?$"; + propertySchema.patternErrorMessage = localize("transparecyRequired", "This color must be transparent or it will obscure content"); + } + this.colorSchema.properties[id2] = { + description, + oneOf: [ + propertySchema, + { type: "string", const: DEFAULT_COLOR_CONFIG_VALUE, description: localize("useDefault", "Use the default color.") } + ] + }; + this.colorReferenceSchema.enum.push(id2); + this.colorReferenceSchema.enumDescriptions.push(description); + this._onDidChangeSchema.fire(); + return id2; + } + deregisterColor(id2) { + delete this.colorsById[id2]; + delete this.colorSchema.properties[id2]; + const index = this.colorReferenceSchema.enum.indexOf(id2); + if (index !== -1) { + this.colorReferenceSchema.enum.splice(index, 1); + this.colorReferenceSchema.enumDescriptions.splice(index, 1); + } + this._onDidChangeSchema.fire(); + } + getColors() { + return Object.keys(this.colorsById).map((id2) => this.colorsById[id2]); + } + resolveDefaultColor(id2, theme) { + const colorDesc = this.colorsById[id2]; + if (colorDesc?.defaults) { + const colorValue = isColorDefaults(colorDesc.defaults) ? colorDesc.defaults[theme.type] : colorDesc.defaults; + return resolveColorValue(colorValue, theme); + } + return void 0; + } + getColorSchema() { + return this.colorSchema; + } + getColorReferenceSchema() { + return this.colorReferenceSchema; + } + toString() { + const sorter2 = (a, b) => { + const cat1 = a.indexOf(".") === -1 ? 0 : 1; + const cat2 = b.indexOf(".") === -1 ? 0 : 1; + if (cat1 !== cat2) { + return cat1 - cat2; + } + return a.localeCompare(b); + }; + return Object.keys(this.colorsById).sort(sorter2).map((k) => `- \`${k}\`: ${this.colorsById[k].description}`).join("\n"); + } +}; +var colorRegistry = new ColorRegistry(); +Registry.add(Extensions2.ColorContribution, colorRegistry); +function registerColor(id2, defaults2, description, needsTransparency, deprecationMessage) { + return colorRegistry.registerColor(id2, defaults2, description, needsTransparency, deprecationMessage); +} +function executeTransform(transform2, theme) { + switch (transform2.op) { + case 0 /* Darken */: + return resolveColorValue(transform2.value, theme)?.darken(transform2.factor); + case 1 /* Lighten */: + return resolveColorValue(transform2.value, theme)?.lighten(transform2.factor); + case 2 /* Transparent */: + return resolveColorValue(transform2.value, theme)?.transparent(transform2.factor); + case 3 /* Opaque */: { + const backgroundColor = resolveColorValue(transform2.background, theme); + if (!backgroundColor) { + return resolveColorValue(transform2.value, theme); + } + return resolveColorValue(transform2.value, theme)?.makeOpaque(backgroundColor); + } + case 4 /* OneOf */: + for (const candidate of transform2.values) { + const color = resolveColorValue(candidate, theme); + if (color) { + return color; + } + } + return void 0; + case 6 /* IfDefinedThenElse */: + return resolveColorValue(theme.defines(transform2.if) ? transform2.then : transform2.else, theme); + case 5 /* LessProminent */: { + const from = resolveColorValue(transform2.value, theme); + if (!from) { + return void 0; + } + const backgroundColor = resolveColorValue(transform2.background, theme); + if (!backgroundColor) { + return from.transparent(transform2.factor * transform2.transparency); + } + return from.isDarkerThan(backgroundColor) ? Color.getLighterColor(from, backgroundColor, transform2.factor).transparent(transform2.transparency) : Color.getDarkerColor(from, backgroundColor, transform2.factor).transparent(transform2.transparency); + } + default: + throw assertNever(); + } +} +function darken(colorValue, factor) { + return { op: 0 /* Darken */, value: colorValue, factor }; +} +function lighten(colorValue, factor) { + return { op: 1 /* Lighten */, value: colorValue, factor }; +} +function transparent(colorValue, factor) { + return { op: 2 /* Transparent */, value: colorValue, factor }; +} +function oneOf(...colorValues) { + return { op: 4 /* OneOf */, values: colorValues }; +} +function ifDefinedThenElse(ifArg, thenArg, elseArg) { + return { op: 6 /* IfDefinedThenElse */, if: ifArg, then: thenArg, else: elseArg }; +} +function lessProminent(colorValue, backgroundColorValue, factor, transparency) { + return { op: 5 /* LessProminent */, value: colorValue, background: backgroundColorValue, factor, transparency }; +} +function resolveColorValue(colorValue, theme) { + if (colorValue === null) { + return void 0; + } else if (typeof colorValue === "string") { + if (colorValue[0] === "#") { + return Color.fromHex(colorValue); + } + return theme.getColor(colorValue); + } else if (colorValue instanceof Color) { + return colorValue; + } else if (typeof colorValue === "object") { + return executeTransform(colorValue, theme); + } + return void 0; +} +var workbenchColorsSchemaId = "vscode://schemas/workbench-colors"; +var schemaRegistry = Registry.as(Extensions.JSONContribution); +schemaRegistry.registerSchema(workbenchColorsSchemaId, colorRegistry.getColorSchema()); +var delayer = new RunOnceScheduler(() => schemaRegistry.notifySchemaChanged(workbenchColorsSchemaId), 200); +colorRegistry.onDidChangeSchema(() => { + if (!delayer.isScheduled()) { + delayer.schedule(); + } +}); + +// ../../../../../platform/theme/common/colors/baseColors.ts +var foreground = registerColor( + "foreground", + { dark: "#CCCCCC", light: "#616161", hcDark: "#FFFFFF", hcLight: "#292929" }, + localize("foreground", "Overall foreground color. This color is only used if not overridden by a component.") +); +registerColor( + "disabledForeground", + { dark: "#CCCCCC80", light: "#61616180", hcDark: "#A5A5A5", hcLight: "#7F7F7F" }, + localize("disabledForeground", "Overall foreground for disabled elements. This color is only used if not overridden by a component.") +); +var errorForeground = registerColor( + "errorForeground", + { dark: "#F48771", light: "#A1260D", hcDark: "#F48771", hcLight: "#B5200D" }, + localize("errorForeground", "Overall foreground color for error messages. This color is only used if not overridden by a component.") +); +registerColor( + "descriptionForeground", + { light: "#717171", dark: transparent(foreground, 0.7), hcDark: transparent(foreground, 0.7), hcLight: transparent(foreground, 0.7) }, + localize("descriptionForeground", "Foreground color for description text providing additional information, for example for a label.") +); +var iconForeground = registerColor( + "icon.foreground", + { dark: "#C5C5C5", light: "#424242", hcDark: "#FFFFFF", hcLight: "#292929" }, + localize("iconForeground", "The default color for icons in the workbench.") +); +var focusBorder = registerColor( + "focusBorder", + { dark: "#007FD4", light: "#0090F1", hcDark: "#F38518", hcLight: "#006BBD" }, + localize("focusBorder", "Overall border color for focused elements. This color is only used if not overridden by a component.") +); +var contrastBorder = registerColor( + "contrastBorder", + { light: null, dark: null, hcDark: "#6FC3DF", hcLight: "#0F4A85" }, + localize("contrastBorder", "An extra border around elements to separate them from others for greater contrast.") +); +var activeContrastBorder = registerColor( + "contrastActiveBorder", + { light: null, dark: null, hcDark: focusBorder, hcLight: focusBorder }, + localize("activeContrastBorder", "An extra border around active elements to separate them from others for greater contrast.") +); +registerColor( + "selection.background", + null, + localize("selectionBackground", "The background color of text selections in the workbench (e.g. for input fields or text areas). Note that this does not apply to selections within the editor.") +); +var textLinkForeground = registerColor( + "textLink.foreground", + { light: "#006AB1", dark: "#3794FF", hcDark: "#21A6FF", hcLight: "#0F4A85" }, + localize("textLinkForeground", "Foreground color for links in text.") +); +registerColor( + "textLink.activeForeground", + { light: "#006AB1", dark: "#3794FF", hcDark: "#21A6FF", hcLight: "#0F4A85" }, + localize("textLinkActiveForeground", "Foreground color for links in text when clicked on and on mouse hover.") +); +registerColor( + "textSeparator.foreground", + { light: "#0000002e", dark: "#ffffff2e", hcDark: Color.black, hcLight: "#292929" }, + localize("textSeparatorForeground", "Color for text separators.") +); +registerColor( + "textPreformat.foreground", + { light: "#A31515", dark: "#D7BA7D", hcDark: "#000000", hcLight: "#FFFFFF" }, + localize("textPreformatForeground", "Foreground color for preformatted text segments.") +); +registerColor( + "textPreformat.background", + { light: "#0000001A", dark: "#FFFFFF1A", hcDark: "#FFFFFF", hcLight: "#09345f" }, + localize("textPreformatBackground", "Background color for preformatted text segments.") +); +registerColor( + "textBlockQuote.background", + { light: "#f2f2f2", dark: "#222222", hcDark: null, hcLight: "#F2F2F2" }, + localize("textBlockQuoteBackground", "Background color for block quotes in text.") +); +registerColor( + "textBlockQuote.border", + { light: "#007acc80", dark: "#007acc80", hcDark: Color.white, hcLight: "#292929" }, + localize("textBlockQuoteBorder", "Border color for block quotes in text.") +); +registerColor( + "textCodeBlock.background", + { light: "#dcdcdc66", dark: "#0a0a0a66", hcDark: Color.black, hcLight: "#F2F2F2" }, + localize("textCodeBlockBackground", "Background color for code blocks in text.") +); + +// ../../../../../platform/theme/common/colors/miscColors.ts +registerColor( + "sash.hoverBorder", + focusBorder, + localize("sashActiveBorder", "Border color of active sashes.") +); +var badgeBackground = registerColor( + "badge.background", + { dark: "#4D4D4D", light: "#C4C4C4", hcDark: Color.black, hcLight: "#0F4A85" }, + localize("badgeBackground", "Badge background color. Badges are small information labels, e.g. for search results count.") +); +var badgeForeground = registerColor( + "badge.foreground", + { dark: Color.white, light: "#333", hcDark: Color.white, hcLight: Color.white }, + localize("badgeForeground", "Badge foreground color. Badges are small information labels, e.g. for search results count.") +); +var scrollbarShadow = registerColor( + "scrollbar.shadow", + { dark: "#000000", light: "#DDDDDD", hcDark: null, hcLight: null }, + localize("scrollbarShadow", "Scrollbar shadow to indicate that the view is scrolled.") +); +var scrollbarSliderBackground = registerColor( + "scrollbarSlider.background", + { dark: Color.fromHex("#797979").transparent(0.4), light: Color.fromHex("#646464").transparent(0.4), hcDark: transparent(contrastBorder, 0.6), hcLight: transparent(contrastBorder, 0.4) }, + localize("scrollbarSliderBackground", "Scrollbar slider background color.") +); +var scrollbarSliderHoverBackground = registerColor( + "scrollbarSlider.hoverBackground", + { dark: Color.fromHex("#646464").transparent(0.7), light: Color.fromHex("#646464").transparent(0.7), hcDark: transparent(contrastBorder, 0.8), hcLight: transparent(contrastBorder, 0.8) }, + localize("scrollbarSliderHoverBackground", "Scrollbar slider background color when hovering.") +); +var scrollbarSliderActiveBackground = registerColor( + "scrollbarSlider.activeBackground", + { dark: Color.fromHex("#BFBFBF").transparent(0.4), light: Color.fromHex("#000000").transparent(0.6), hcDark: contrastBorder, hcLight: contrastBorder }, + localize("scrollbarSliderActiveBackground", "Scrollbar slider background color when clicked on.") +); +var progressBarBackground = registerColor( + "progressBar.background", + { dark: Color.fromHex("#0E70C0"), light: Color.fromHex("#0E70C0"), hcDark: contrastBorder, hcLight: contrastBorder }, + localize("progressBarBackground", "Background color of the progress bar that can show for long running operations.") +); + +// ../../../../../platform/theme/common/colors/editorColors.ts +var editorBackground = registerColor( + "editor.background", + { light: "#ffffff", dark: "#1E1E1E", hcDark: Color.black, hcLight: Color.white }, + localize("editorBackground", "Editor background color.") +); +var editorForeground = registerColor( + "editor.foreground", + { light: "#333333", dark: "#BBBBBB", hcDark: Color.white, hcLight: foreground }, + localize("editorForeground", "Editor default foreground color.") +); +registerColor( + "editorStickyScroll.background", + editorBackground, + localize("editorStickyScrollBackground", "Background color of sticky scroll in the editor") +); +registerColor( + "editorStickyScrollHover.background", + { dark: "#2A2D2E", light: "#F0F0F0", hcDark: null, hcLight: Color.fromHex("#0F4A85").transparent(0.1) }, + localize("editorStickyScrollHoverBackground", "Background color of sticky scroll on hover in the editor") +); +registerColor( + "editorStickyScroll.border", + { dark: null, light: null, hcDark: contrastBorder, hcLight: contrastBorder }, + localize("editorStickyScrollBorder", "Border color of sticky scroll in the editor") +); +registerColor( + "editorStickyScroll.shadow", + scrollbarShadow, + localize("editorStickyScrollShadow", " Shadow color of sticky scroll in the editor") +); +var editorWidgetBackground = registerColor( + "editorWidget.background", + { dark: "#252526", light: "#F3F3F3", hcDark: "#0C141F", hcLight: Color.white }, + localize("editorWidgetBackground", "Background color of editor widgets, such as find/replace.") +); +var editorWidgetForeground = registerColor( + "editorWidget.foreground", + foreground, + localize("editorWidgetForeground", "Foreground color of editor widgets, such as find/replace.") +); +var editorWidgetBorder = registerColor( + "editorWidget.border", + { dark: "#454545", light: "#C8C8C8", hcDark: contrastBorder, hcLight: contrastBorder }, + localize("editorWidgetBorder", "Border color of editor widgets. The color is only used if the widget chooses to have a border and if the color is not overridden by a widget.") +); +registerColor( + "editorWidget.resizeBorder", + null, + localize("editorWidgetResizeBorder", "Border color of the resize bar of editor widgets. The color is only used if the widget chooses to have a resize border and if the color is not overridden by a widget.") +); +registerColor( + "editorError.background", + null, + localize("editorError.background", "Background color of error text in the editor. The color must not be opaque so as not to hide underlying decorations."), + true +); +var editorErrorForeground = registerColor( + "editorError.foreground", + { dark: "#F14C4C", light: "#E51400", hcDark: "#F48771", hcLight: "#B5200D" }, + localize("editorError.foreground", "Foreground color of error squigglies in the editor.") +); +registerColor( + "editorError.border", + { dark: null, light: null, hcDark: Color.fromHex("#E47777").transparent(0.8), hcLight: "#B5200D" }, + localize("errorBorder", "If set, color of double underlines for errors in the editor.") +); +registerColor( + "editorWarning.background", + null, + localize("editorWarning.background", "Background color of warning text in the editor. The color must not be opaque so as not to hide underlying decorations."), + true +); +var editorWarningForeground = registerColor( + "editorWarning.foreground", + { dark: "#CCA700", light: "#BF8803", hcDark: "#FFD370", hcLight: "#895503" }, + localize("editorWarning.foreground", "Foreground color of warning squigglies in the editor.") +); +var editorWarningBorder = registerColor( + "editorWarning.border", + { dark: null, light: null, hcDark: Color.fromHex("#FFCC00").transparent(0.8), hcLight: Color.fromHex("#FFCC00").transparent(0.8) }, + localize("warningBorder", "If set, color of double underlines for warnings in the editor.") +); +registerColor( + "editorInfo.background", + null, + localize("editorInfo.background", "Background color of info text in the editor. The color must not be opaque so as not to hide underlying decorations."), + true +); +var editorInfoForeground = registerColor( + "editorInfo.foreground", + { dark: "#3794FF", light: "#1a85ff", hcDark: "#3794FF", hcLight: "#1a85ff" }, + localize("editorInfo.foreground", "Foreground color of info squigglies in the editor.") +); +var editorInfoBorder = registerColor( + "editorInfo.border", + { dark: null, light: null, hcDark: Color.fromHex("#3794FF").transparent(0.8), hcLight: "#292929" }, + localize("infoBorder", "If set, color of double underlines for infos in the editor.") +); +registerColor( + "editorHint.foreground", + { dark: Color.fromHex("#eeeeee").transparent(0.7), light: "#6c6c6c", hcDark: null, hcLight: null }, + localize("editorHint.foreground", "Foreground color of hint squigglies in the editor.") +); +registerColor( + "editorHint.border", + { dark: null, light: null, hcDark: Color.fromHex("#eeeeee").transparent(0.8), hcLight: "#292929" }, + localize("hintBorder", "If set, color of double underlines for hints in the editor.") +); +registerColor( + "editorLink.activeForeground", + { dark: "#4E94CE", light: Color.blue, hcDark: Color.cyan, hcLight: "#292929" }, + localize("activeLinkForeground", "Color of active links.") +); +var editorSelectionBackground = registerColor( + "editor.selectionBackground", + { light: "#ADD6FF", dark: "#264F78", hcDark: "#f3f518", hcLight: "#0F4A85" }, + localize("editorSelectionBackground", "Color of the editor selection.") +); +registerColor( + "editor.selectionForeground", + { light: null, dark: null, hcDark: "#000000", hcLight: Color.white }, + localize("editorSelectionForeground", "Color of the selected text for high contrast.") +); +registerColor( + "editor.inactiveSelectionBackground", + { light: transparent(editorSelectionBackground, 0.5), dark: transparent(editorSelectionBackground, 0.5), hcDark: transparent(editorSelectionBackground, 0.7), hcLight: transparent(editorSelectionBackground, 0.5) }, + localize("editorInactiveSelection", "Color of the selection in an inactive editor. The color must not be opaque so as not to hide underlying decorations."), + true +); +registerColor( + "editor.selectionHighlightBackground", + { light: lessProminent(editorSelectionBackground, editorBackground, 0.3, 0.6), dark: lessProminent(editorSelectionBackground, editorBackground, 0.3, 0.6), hcDark: null, hcLight: null }, + localize("editorSelectionHighlight", "Color for regions with the same content as the selection. The color must not be opaque so as not to hide underlying decorations."), + true +); +registerColor( + "editor.selectionHighlightBorder", + { light: null, dark: null, hcDark: activeContrastBorder, hcLight: activeContrastBorder }, + localize("editorSelectionHighlightBorder", "Border color for regions with the same content as the selection.") +); +registerColor( + "editor.findMatchBackground", + { light: "#A8AC94", dark: "#515C6A", hcDark: null, hcLight: null }, + localize("editorFindMatch", "Color of the current search match.") +); +registerColor( + "editor.findMatchForeground", + null, + localize("editorFindMatchForeground", "Text color of the current search match.") +); +var editorFindMatchHighlight = registerColor( + "editor.findMatchHighlightBackground", + { light: "#EA5C0055", dark: "#EA5C0055", hcDark: null, hcLight: null }, + localize("findMatchHighlight", "Color of the other search matches. The color must not be opaque so as not to hide underlying decorations."), + true +); +registerColor( + "editor.findMatchHighlightForeground", + null, + localize("findMatchHighlightForeground", "Foreground color of the other search matches."), + true +); +registerColor( + "editor.findRangeHighlightBackground", + { dark: "#3a3d4166", light: "#b4b4b44d", hcDark: null, hcLight: null }, + localize("findRangeHighlight", "Color of the range limiting the search. The color must not be opaque so as not to hide underlying decorations."), + true +); +registerColor( + "editor.findMatchBorder", + { light: null, dark: null, hcDark: activeContrastBorder, hcLight: activeContrastBorder }, + localize("editorFindMatchBorder", "Border color of the current search match.") +); +var editorFindMatchHighlightBorder = registerColor( + "editor.findMatchHighlightBorder", + { light: null, dark: null, hcDark: activeContrastBorder, hcLight: activeContrastBorder }, + localize("findMatchHighlightBorder", "Border color of the other search matches.") +); +registerColor( + "editor.findRangeHighlightBorder", + { dark: null, light: null, hcDark: transparent(activeContrastBorder, 0.4), hcLight: transparent(activeContrastBorder, 0.4) }, + localize("findRangeHighlightBorder", "Border color of the range limiting the search. The color must not be opaque so as not to hide underlying decorations."), + true +); +registerColor( + "editor.hoverHighlightBackground", + { light: "#ADD6FF26", dark: "#264f7840", hcDark: "#ADD6FF26", hcLight: null }, + localize("hoverHighlight", "Highlight below the word for which a hover is shown. The color must not be opaque so as not to hide underlying decorations."), + true +); +var editorHoverBackground = registerColor( + "editorHoverWidget.background", + editorWidgetBackground, + localize("hoverBackground", "Background color of the editor hover.") +); +registerColor( + "editorHoverWidget.foreground", + editorWidgetForeground, + localize("hoverForeground", "Foreground color of the editor hover.") +); +registerColor( + "editorHoverWidget.border", + editorWidgetBorder, + localize("hoverBorder", "Border color of the editor hover.") +); +registerColor( + "editorHoverWidget.statusBarBackground", + { dark: lighten(editorHoverBackground, 0.2), light: darken(editorHoverBackground, 0.05), hcDark: editorWidgetBackground, hcLight: editorWidgetBackground }, + localize("statusBarBackground", "Background color of the editor hover status bar.") +); +var editorInlayHintForeground = registerColor( + "editorInlayHint.foreground", + { dark: "#969696", light: "#969696", hcDark: Color.white, hcLight: Color.black }, + localize("editorInlayHintForeground", "Foreground color of inline hints") +); +var editorInlayHintBackground = registerColor( + "editorInlayHint.background", + { dark: transparent(badgeBackground, 0.1), light: transparent(badgeBackground, 0.1), hcDark: transparent(Color.white, 0.1), hcLight: transparent(badgeBackground, 0.1) }, + localize("editorInlayHintBackground", "Background color of inline hints") +); +registerColor( + "editorInlayHint.typeForeground", + editorInlayHintForeground, + localize("editorInlayHintForegroundTypes", "Foreground color of inline hints for types") +); +registerColor( + "editorInlayHint.typeBackground", + editorInlayHintBackground, + localize("editorInlayHintBackgroundTypes", "Background color of inline hints for types") +); +registerColor( + "editorInlayHint.parameterForeground", + editorInlayHintForeground, + localize("editorInlayHintForegroundParameter", "Foreground color of inline hints for parameters") +); +registerColor( + "editorInlayHint.parameterBackground", + editorInlayHintBackground, + localize("editorInlayHintBackgroundParameter", "Background color of inline hints for parameters") +); +var editorLightBulbForeground = registerColor( + "editorLightBulb.foreground", + { dark: "#FFCC00", light: "#DDB100", hcDark: "#FFCC00", hcLight: "#007ACC" }, + localize("editorLightBulbForeground", "The color used for the lightbulb actions icon.") +); +registerColor( + "editorLightBulbAutoFix.foreground", + { dark: "#75BEFF", light: "#007ACC", hcDark: "#75BEFF", hcLight: "#007ACC" }, + localize("editorLightBulbAutoFixForeground", "The color used for the lightbulb auto fix actions icon.") +); +registerColor( + "editorLightBulbAi.foreground", + editorLightBulbForeground, + localize("editorLightBulbAiForeground", "The color used for the lightbulb AI icon.") +); +registerColor( + "editor.snippetTabstopHighlightBackground", + { dark: new Color(new RGBA(124, 124, 124, 0.3)), light: new Color(new RGBA(10, 50, 100, 0.2)), hcDark: new Color(new RGBA(124, 124, 124, 0.3)), hcLight: new Color(new RGBA(10, 50, 100, 0.2)) }, + localize("snippetTabstopHighlightBackground", "Highlight background color of a snippet tabstop.") +); +registerColor( + "editor.snippetTabstopHighlightBorder", + null, + localize("snippetTabstopHighlightBorder", "Highlight border color of a snippet tabstop.") +); +registerColor( + "editor.snippetFinalTabstopHighlightBackground", + null, + localize("snippetFinalTabstopHighlightBackground", "Highlight background color of the final tabstop of a snippet.") +); +registerColor( + "editor.snippetFinalTabstopHighlightBorder", + { dark: "#525252", light: new Color(new RGBA(10, 50, 100, 0.5)), hcDark: "#525252", hcLight: "#292929" }, + localize("snippetFinalTabstopHighlightBorder", "Highlight border color of the final tabstop of a snippet.") +); +var defaultInsertColor = new Color(new RGBA(155, 185, 85, 0.2)); +var defaultRemoveColor = new Color(new RGBA(255, 0, 0, 0.2)); +registerColor( + "diffEditor.insertedTextBackground", + { dark: "#9ccc2c33", light: "#9ccc2c40", hcDark: null, hcLight: null }, + localize("diffEditorInserted", "Background color for text that got inserted. The color must not be opaque so as not to hide underlying decorations."), + true +); +registerColor( + "diffEditor.removedTextBackground", + { dark: "#ff000033", light: "#ff000033", hcDark: null, hcLight: null }, + localize("diffEditorRemoved", "Background color for text that got removed. The color must not be opaque so as not to hide underlying decorations."), + true +); +registerColor( + "diffEditor.insertedLineBackground", + { dark: defaultInsertColor, light: defaultInsertColor, hcDark: null, hcLight: null }, + localize("diffEditorInsertedLines", "Background color for lines that got inserted. The color must not be opaque so as not to hide underlying decorations."), + true +); +registerColor( + "diffEditor.removedLineBackground", + { dark: defaultRemoveColor, light: defaultRemoveColor, hcDark: null, hcLight: null }, + localize("diffEditorRemovedLines", "Background color for lines that got removed. The color must not be opaque so as not to hide underlying decorations."), + true +); +registerColor( + "diffEditorGutter.insertedLineBackground", + null, + localize("diffEditorInsertedLineGutter", "Background color for the margin where lines got inserted.") +); +registerColor( + "diffEditorGutter.removedLineBackground", + null, + localize("diffEditorRemovedLineGutter", "Background color for the margin where lines got removed.") +); +registerColor( + "diffEditorOverview.insertedForeground", + null, + localize("diffEditorOverviewInserted", "Diff overview ruler foreground for inserted content.") +); +registerColor( + "diffEditorOverview.removedForeground", + null, + localize("diffEditorOverviewRemoved", "Diff overview ruler foreground for removed content.") +); +registerColor( + "diffEditor.insertedTextBorder", + { dark: null, light: null, hcDark: "#33ff2eff", hcLight: "#374E06" }, + localize("diffEditorInsertedOutline", "Outline color for the text that got inserted.") +); +registerColor( + "diffEditor.removedTextBorder", + { dark: null, light: null, hcDark: "#FF008F", hcLight: "#AD0707" }, + localize("diffEditorRemovedOutline", "Outline color for text that got removed.") +); +registerColor( + "diffEditor.border", + { dark: null, light: null, hcDark: contrastBorder, hcLight: contrastBorder }, + localize("diffEditorBorder", "Border color between the two text editors.") +); +registerColor( + "diffEditor.diagonalFill", + { dark: "#cccccc33", light: "#22222233", hcDark: null, hcLight: null }, + localize("diffDiagonalFill", "Color of the diff editor's diagonal fill. The diagonal fill is used in side-by-side diff views.") +); +registerColor( + "diffEditor.unchangedRegionBackground", + "sideBar.background", + localize("diffEditor.unchangedRegionBackground", "The background color of unchanged blocks in the diff editor.") +); +registerColor( + "diffEditor.unchangedRegionForeground", + "foreground", + localize("diffEditor.unchangedRegionForeground", "The foreground color of unchanged blocks in the diff editor.") +); +registerColor( + "diffEditor.unchangedCodeBackground", + { dark: "#74747429", light: "#b8b8b829", hcDark: null, hcLight: null }, + localize("diffEditor.unchangedCodeBackground", "The background color of unchanged code in the diff editor.") +); +var widgetShadow = registerColor( + "widget.shadow", + { dark: transparent(Color.black, 0.36), light: transparent(Color.black, 0.16), hcDark: null, hcLight: null }, + localize("widgetShadow", "Shadow color of widgets such as find/replace inside the editor.") +); +var widgetBorder = registerColor( + "widget.border", + { dark: null, light: null, hcDark: contrastBorder, hcLight: contrastBorder }, + localize("widgetBorder", "Border color of widgets such as find/replace inside the editor.") +); +var toolbarHoverBackground = registerColor( + "toolbar.hoverBackground", + { dark: "#5a5d5e50", light: "#b8b8b850", hcDark: null, hcLight: null }, + localize("toolbarHoverBackground", "Toolbar background when hovering over actions using the mouse") +); +registerColor( + "toolbar.hoverOutline", + { dark: null, light: null, hcDark: activeContrastBorder, hcLight: activeContrastBorder }, + localize("toolbarHoverOutline", "Toolbar outline when hovering over actions using the mouse") +); +registerColor( + "toolbar.activeBackground", + { dark: lighten(toolbarHoverBackground, 0.1), light: darken(toolbarHoverBackground, 0.1), hcDark: null, hcLight: null }, + localize("toolbarActiveBackground", "Toolbar background when holding the mouse over actions") +); +var breadcrumbsForeground = registerColor( + "breadcrumb.foreground", + transparent(foreground, 0.8), + localize("breadcrumbsFocusForeground", "Color of focused breadcrumb items.") +); +var breadcrumbsBackground = registerColor( + "breadcrumb.background", + editorBackground, + localize("breadcrumbsBackground", "Background color of breadcrumb items.") +); +var breadcrumbsFocusForeground = registerColor( + "breadcrumb.focusForeground", + { light: darken(foreground, 0.2), dark: lighten(foreground, 0.1), hcDark: lighten(foreground, 0.1), hcLight: lighten(foreground, 0.1) }, + localize("breadcrumbsFocusForeground", "Color of focused breadcrumb items.") +); +var breadcrumbsActiveSelectionForeground = registerColor( + "breadcrumb.activeSelectionForeground", + { light: darken(foreground, 0.2), dark: lighten(foreground, 0.1), hcDark: lighten(foreground, 0.1), hcLight: lighten(foreground, 0.1) }, + localize("breadcrumbsSelectedForeground", "Color of selected breadcrumb items.") +); +registerColor( + "breadcrumbPicker.background", + editorWidgetBackground, + localize("breadcrumbsSelectedBackground", "Background color of breadcrumb item picker.") +); +var headerTransparency = 0.5; +var currentBaseColor = Color.fromHex("#40C8AE").transparent(headerTransparency); +var incomingBaseColor = Color.fromHex("#40A6FF").transparent(headerTransparency); +var commonBaseColor = Color.fromHex("#606060").transparent(0.4); +var contentTransparency = 0.4; +var rulerTransparency = 1; +var mergeCurrentHeaderBackground = registerColor( + "merge.currentHeaderBackground", + { dark: currentBaseColor, light: currentBaseColor, hcDark: null, hcLight: null }, + localize("mergeCurrentHeaderBackground", "Current header background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations."), + true +); +registerColor( + "merge.currentContentBackground", + transparent(mergeCurrentHeaderBackground, contentTransparency), + localize("mergeCurrentContentBackground", "Current content background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations."), + true +); +var mergeIncomingHeaderBackground = registerColor( + "merge.incomingHeaderBackground", + { dark: incomingBaseColor, light: incomingBaseColor, hcDark: null, hcLight: null }, + localize("mergeIncomingHeaderBackground", "Incoming header background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations."), + true +); +registerColor( + "merge.incomingContentBackground", + transparent(mergeIncomingHeaderBackground, contentTransparency), + localize("mergeIncomingContentBackground", "Incoming content background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations."), + true +); +var mergeCommonHeaderBackground = registerColor( + "merge.commonHeaderBackground", + { dark: commonBaseColor, light: commonBaseColor, hcDark: null, hcLight: null }, + localize("mergeCommonHeaderBackground", "Common ancestor header background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations."), + true +); +registerColor( + "merge.commonContentBackground", + transparent(mergeCommonHeaderBackground, contentTransparency), + localize("mergeCommonContentBackground", "Common ancestor content background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations."), + true +); +var mergeBorder = registerColor( + "merge.border", + { dark: null, light: null, hcDark: "#C3DF6F", hcLight: "#007ACC" }, + localize("mergeBorder", "Border color on headers and the splitter in inline merge-conflicts.") +); +registerColor( + "editorOverviewRuler.currentContentForeground", + { dark: transparent(mergeCurrentHeaderBackground, rulerTransparency), light: transparent(mergeCurrentHeaderBackground, rulerTransparency), hcDark: mergeBorder, hcLight: mergeBorder }, + localize("overviewRulerCurrentContentForeground", "Current overview ruler foreground for inline merge-conflicts.") +); +registerColor( + "editorOverviewRuler.incomingContentForeground", + { dark: transparent(mergeIncomingHeaderBackground, rulerTransparency), light: transparent(mergeIncomingHeaderBackground, rulerTransparency), hcDark: mergeBorder, hcLight: mergeBorder }, + localize("overviewRulerIncomingContentForeground", "Incoming overview ruler foreground for inline merge-conflicts.") +); +registerColor( + "editorOverviewRuler.commonContentForeground", + { dark: transparent(mergeCommonHeaderBackground, rulerTransparency), light: transparent(mergeCommonHeaderBackground, rulerTransparency), hcDark: mergeBorder, hcLight: mergeBorder }, + localize("overviewRulerCommonContentForeground", "Common ancestor overview ruler foreground for inline merge-conflicts.") +); +registerColor( + "editorOverviewRuler.findMatchForeground", + { dark: "#d186167e", light: "#d186167e", hcDark: "#AB5A00", hcLight: "#AB5A00" }, + localize("overviewRulerFindMatchForeground", "Overview ruler marker color for find matches. The color must not be opaque so as not to hide underlying decorations."), + true +); +registerColor( + "editorOverviewRuler.selectionHighlightForeground", + "#A0A0A0CC", + localize("overviewRulerSelectionHighlightForeground", "Overview ruler marker color for selection highlights. The color must not be opaque so as not to hide underlying decorations."), + true +); +var problemsErrorIconForeground = registerColor( + "problemsErrorIcon.foreground", + editorErrorForeground, + localize("problemsErrorIconForeground", "The color used for the problems error icon.") +); +var problemsWarningIconForeground = registerColor( + "problemsWarningIcon.foreground", + editorWarningForeground, + localize("problemsWarningIconForeground", "The color used for the problems warning icon.") +); +var problemsInfoIconForeground = registerColor( + "problemsInfoIcon.foreground", + editorInfoForeground, + localize("problemsInfoIconForeground", "The color used for the problems info icon.") +); + +// ../../../../../platform/theme/common/colors/minimapColors.ts +var minimapFindMatch = registerColor( + "minimap.findMatchHighlight", + { light: "#d18616", dark: "#d18616", hcDark: "#AB5A00", hcLight: "#0F4A85" }, + localize("minimapFindMatchHighlight", "Minimap marker color for find matches."), + true +); +registerColor( + "minimap.selectionOccurrenceHighlight", + { light: "#c9c9c9", dark: "#676767", hcDark: "#ffffff", hcLight: "#0F4A85" }, + localize("minimapSelectionOccurrenceHighlight", "Minimap marker color for repeating editor selections."), + true +); +registerColor( + "minimap.selectionHighlight", + { light: "#ADD6FF", dark: "#264F78", hcDark: "#ffffff", hcLight: "#0F4A85" }, + localize("minimapSelectionHighlight", "Minimap marker color for the editor selection."), + true +); +registerColor( + "minimap.infoHighlight", + { dark: editorInfoForeground, light: editorInfoForeground, hcDark: editorInfoBorder, hcLight: editorInfoBorder }, + localize("minimapInfo", "Minimap marker color for infos.") +); +registerColor( + "minimap.warningHighlight", + { dark: editorWarningForeground, light: editorWarningForeground, hcDark: editorWarningBorder, hcLight: editorWarningBorder }, + localize("overviewRuleWarning", "Minimap marker color for warnings.") +); +registerColor( + "minimap.errorHighlight", + { dark: new Color(new RGBA(255, 18, 18, 0.7)), light: new Color(new RGBA(255, 18, 18, 0.7)), hcDark: new Color(new RGBA(255, 50, 50, 1)), hcLight: "#B5200D" }, + localize("minimapError", "Minimap marker color for errors.") +); +registerColor( + "minimap.background", + null, + localize("minimapBackground", "Minimap background color.") +); +registerColor( + "minimap.foregroundOpacity", + Color.fromHex("#000f"), + localize("minimapForegroundOpacity", 'Opacity of foreground elements rendered in the minimap. For example, "#000000c0" will render the elements with 75% opacity.') +); +registerColor( + "minimapSlider.background", + transparent(scrollbarSliderBackground, 0.5), + localize("minimapSliderBackground", "Minimap slider background color.") +); +registerColor( + "minimapSlider.hoverBackground", + transparent(scrollbarSliderHoverBackground, 0.5), + localize("minimapSliderHoverBackground", "Minimap slider background color when hovering.") +); +registerColor( + "minimapSlider.activeBackground", + transparent(scrollbarSliderActiveBackground, 0.5), + localize("minimapSliderActiveBackground", "Minimap slider background color when clicked on.") +); + +// ../../../../../platform/theme/common/colors/chartsColors.ts +registerColor( + "charts.foreground", + foreground, + localize("chartsForeground", "The foreground color used in charts.") +); +registerColor( + "charts.lines", + transparent(foreground, 0.5), + localize("chartsLines", "The color used for horizontal lines in charts.") +); +registerColor( + "charts.red", + editorErrorForeground, + localize("chartsRed", "The red color used in chart visualizations.") +); +registerColor( + "charts.blue", + editorInfoForeground, + localize("chartsBlue", "The blue color used in chart visualizations.") +); +registerColor( + "charts.yellow", + editorWarningForeground, + localize("chartsYellow", "The yellow color used in chart visualizations.") +); +registerColor( + "charts.orange", + minimapFindMatch, + localize("chartsOrange", "The orange color used in chart visualizations.") +); +registerColor( + "charts.green", + { dark: "#89D185", light: "#388A34", hcDark: "#89D185", hcLight: "#374e06" }, + localize("chartsGreen", "The green color used in chart visualizations.") +); +registerColor( + "charts.purple", + { dark: "#B180D7", light: "#652D90", hcDark: "#B180D7", hcLight: "#652D90" }, + localize("chartsPurple", "The purple color used in chart visualizations.") +); + +// ../../../../../platform/theme/common/colors/inputColors.ts +var inputBackground = registerColor( + "input.background", + { dark: "#3C3C3C", light: Color.white, hcDark: Color.black, hcLight: Color.white }, + localize("inputBoxBackground", "Input box background.") +); +var inputForeground = registerColor( + "input.foreground", + foreground, + localize("inputBoxForeground", "Input box foreground.") +); +var inputBorder = registerColor( + "input.border", + { dark: null, light: null, hcDark: contrastBorder, hcLight: contrastBorder }, + localize("inputBoxBorder", "Input box border.") +); +var inputActiveOptionBorder = registerColor( + "inputOption.activeBorder", + { dark: "#007ACC", light: "#007ACC", hcDark: contrastBorder, hcLight: contrastBorder }, + localize("inputBoxActiveOptionBorder", "Border color of activated options in input fields.") +); +var inputActiveOptionHoverBackground = registerColor( + "inputOption.hoverBackground", + { dark: "#5a5d5e80", light: "#b8b8b850", hcDark: null, hcLight: null }, + localize("inputOption.hoverBackground", "Background color of activated options in input fields.") +); +var inputActiveOptionBackground = registerColor( + "inputOption.activeBackground", + { dark: transparent(focusBorder, 0.4), light: transparent(focusBorder, 0.2), hcDark: Color.transparent, hcLight: Color.transparent }, + localize("inputOption.activeBackground", "Background hover color of options in input fields.") +); +var inputActiveOptionForeground = registerColor( + "inputOption.activeForeground", + { dark: Color.white, light: Color.black, hcDark: foreground, hcLight: foreground }, + localize("inputOption.activeForeground", "Foreground color of activated options in input fields.") +); +registerColor( + "input.placeholderForeground", + { light: transparent(foreground, 0.5), dark: transparent(foreground, 0.5), hcDark: transparent(foreground, 0.7), hcLight: transparent(foreground, 0.7) }, + localize("inputPlaceholderForeground", "Input box foreground color for placeholder text.") +); +var inputValidationInfoBackground = registerColor( + "inputValidation.infoBackground", + { dark: "#063B49", light: "#D6ECF2", hcDark: Color.black, hcLight: Color.white }, + localize("inputValidationInfoBackground", "Input validation background color for information severity.") +); +var inputValidationInfoForeground = registerColor( + "inputValidation.infoForeground", + { dark: null, light: null, hcDark: null, hcLight: foreground }, + localize("inputValidationInfoForeground", "Input validation foreground color for information severity.") +); +var inputValidationInfoBorder = registerColor( + "inputValidation.infoBorder", + { dark: "#007acc", light: "#007acc", hcDark: contrastBorder, hcLight: contrastBorder }, + localize("inputValidationInfoBorder", "Input validation border color for information severity.") +); +var inputValidationWarningBackground = registerColor( + "inputValidation.warningBackground", + { dark: "#352A05", light: "#F6F5D2", hcDark: Color.black, hcLight: Color.white }, + localize("inputValidationWarningBackground", "Input validation background color for warning severity.") +); +var inputValidationWarningForeground = registerColor( + "inputValidation.warningForeground", + { dark: null, light: null, hcDark: null, hcLight: foreground }, + localize("inputValidationWarningForeground", "Input validation foreground color for warning severity.") +); +var inputValidationWarningBorder = registerColor( + "inputValidation.warningBorder", + { dark: "#B89500", light: "#B89500", hcDark: contrastBorder, hcLight: contrastBorder }, + localize("inputValidationWarningBorder", "Input validation border color for warning severity.") +); +var inputValidationErrorBackground = registerColor( + "inputValidation.errorBackground", + { dark: "#5A1D1D", light: "#F2DEDE", hcDark: Color.black, hcLight: Color.white }, + localize("inputValidationErrorBackground", "Input validation background color for error severity.") +); +var inputValidationErrorForeground = registerColor( + "inputValidation.errorForeground", + { dark: null, light: null, hcDark: null, hcLight: foreground }, + localize("inputValidationErrorForeground", "Input validation foreground color for error severity.") +); +var inputValidationErrorBorder = registerColor( + "inputValidation.errorBorder", + { dark: "#BE1100", light: "#BE1100", hcDark: contrastBorder, hcLight: contrastBorder }, + localize("inputValidationErrorBorder", "Input validation border color for error severity.") +); +var selectBackground = registerColor( + "dropdown.background", + { dark: "#3C3C3C", light: Color.white, hcDark: Color.black, hcLight: Color.white }, + localize("dropdownBackground", "Dropdown background.") +); +var selectListBackground = registerColor( + "dropdown.listBackground", + { dark: null, light: null, hcDark: Color.black, hcLight: Color.white }, + localize("dropdownListBackground", "Dropdown list background.") +); +var selectForeground = registerColor( + "dropdown.foreground", + { dark: "#F0F0F0", light: foreground, hcDark: Color.white, hcLight: foreground }, + localize("dropdownForeground", "Dropdown foreground.") +); +var selectBorder = registerColor( + "dropdown.border", + { dark: selectBackground, light: "#CECECE", hcDark: contrastBorder, hcLight: contrastBorder }, + localize("dropdownBorder", "Dropdown border.") +); +var buttonForeground = registerColor( + "button.foreground", + Color.white, + localize("buttonForeground", "Button foreground color.") +); +var buttonSeparator = registerColor( + "button.separator", + transparent(buttonForeground, 0.4), + localize("buttonSeparator", "Button separator color.") +); +var buttonBackground = registerColor( + "button.background", + { dark: "#0E639C", light: "#007ACC", hcDark: null, hcLight: "#0F4A85" }, + localize("buttonBackground", "Button background color.") +); +var buttonHoverBackground = registerColor( + "button.hoverBackground", + { dark: lighten(buttonBackground, 0.2), light: darken(buttonBackground, 0.2), hcDark: buttonBackground, hcLight: buttonBackground }, + localize("buttonHoverBackground", "Button background color when hovering.") +); +var buttonBorder = registerColor( + "button.border", + contrastBorder, + localize("buttonBorder", "Button border color.") +); +var buttonSecondaryForeground = registerColor( + "button.secondaryForeground", + { dark: Color.white, light: Color.white, hcDark: Color.white, hcLight: foreground }, + localize("buttonSecondaryForeground", "Secondary button foreground color.") +); +var buttonSecondaryBackground = registerColor( + "button.secondaryBackground", + { dark: "#3A3D41", light: "#5F6A79", hcDark: null, hcLight: Color.white }, + localize("buttonSecondaryBackground", "Secondary button background color.") +); +var buttonSecondaryHoverBackground = registerColor( + "button.secondaryHoverBackground", + { dark: lighten(buttonSecondaryBackground, 0.2), light: darken(buttonSecondaryBackground, 0.2), hcDark: null, hcLight: null }, + localize("buttonSecondaryHoverBackground", "Secondary button background color when hovering.") +); +var radioActiveForeground = registerColor( + "radio.activeForeground", + inputActiveOptionForeground, + localize("radioActiveForeground", "Foreground color of active radio option.") +); +var radioActiveBackground = registerColor( + "radio.activeBackground", + inputActiveOptionBackground, + localize("radioBackground", "Background color of active radio option.") +); +var radioActiveBorder = registerColor( + "radio.activeBorder", + inputActiveOptionBorder, + localize("radioActiveBorder", "Border color of the active radio option.") +); +var radioInactiveForeground = registerColor( + "radio.inactiveForeground", + null, + localize("radioInactiveForeground", "Foreground color of inactive radio option.") +); +var radioInactiveBackground = registerColor( + "radio.inactiveBackground", + null, + localize("radioInactiveBackground", "Background color of inactive radio option.") +); +var radioInactiveBorder = registerColor( + "radio.inactiveBorder", + { light: transparent(radioActiveForeground, 0.2), dark: transparent(radioActiveForeground, 0.2), hcDark: transparent(radioActiveForeground, 0.4), hcLight: transparent(radioActiveForeground, 0.2) }, + localize("radioInactiveBorder", "Border color of the inactive radio option.") +); +var radioInactiveHoverBackground = registerColor( + "radio.inactiveHoverBackground", + inputActiveOptionHoverBackground, + localize("radioHoverBackground", "Background color of inactive active radio option when hovering.") +); +var checkboxBackground = registerColor( + "checkbox.background", + selectBackground, + localize("checkbox.background", "Background color of checkbox widget.") +); +registerColor( + "checkbox.selectBackground", + editorWidgetBackground, + localize("checkbox.select.background", "Background color of checkbox widget when the element it's in is selected.") +); +var checkboxForeground = registerColor( + "checkbox.foreground", + selectForeground, + localize("checkbox.foreground", "Foreground color of checkbox widget.") +); +var checkboxBorder = registerColor( + "checkbox.border", + selectBorder, + localize("checkbox.border", "Border color of checkbox widget.") +); +registerColor( + "checkbox.selectBorder", + iconForeground, + localize("checkbox.select.border", "Border color of checkbox widget when the element it's in is selected.") +); +var keybindingLabelBackground = registerColor( + "keybindingLabel.background", + { dark: new Color(new RGBA(128, 128, 128, 0.17)), light: new Color(new RGBA(221, 221, 221, 0.4)), hcDark: Color.transparent, hcLight: Color.transparent }, + localize("keybindingLabelBackground", "Keybinding label background color. The keybinding label is used to represent a keyboard shortcut.") +); +var keybindingLabelForeground = registerColor( + "keybindingLabel.foreground", + { dark: Color.fromHex("#CCCCCC"), light: Color.fromHex("#555555"), hcDark: Color.white, hcLight: foreground }, + localize("keybindingLabelForeground", "Keybinding label foreground color. The keybinding label is used to represent a keyboard shortcut.") +); +var keybindingLabelBorder = registerColor( + "keybindingLabel.border", + { dark: new Color(new RGBA(51, 51, 51, 0.6)), light: new Color(new RGBA(204, 204, 204, 0.4)), hcDark: new Color(new RGBA(111, 195, 223)), hcLight: contrastBorder }, + localize("keybindingLabelBorder", "Keybinding label border color. The keybinding label is used to represent a keyboard shortcut.") +); +var keybindingLabelBottomBorder = registerColor( + "keybindingLabel.bottomBorder", + { dark: new Color(new RGBA(68, 68, 68, 0.6)), light: new Color(new RGBA(187, 187, 187, 0.4)), hcDark: new Color(new RGBA(111, 195, 223)), hcLight: foreground }, + localize("keybindingLabelBottomBorder", "Keybinding label border bottom color. The keybinding label is used to represent a keyboard shortcut.") +); + +// ../../../../../platform/theme/common/colors/listColors.ts +var listFocusBackground = registerColor( + "list.focusBackground", + null, + localize("listFocusBackground", "List/Tree background color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.") +); +var listFocusForeground = registerColor( + "list.focusForeground", + null, + localize("listFocusForeground", "List/Tree foreground color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.") +); +var listFocusOutline = registerColor( + "list.focusOutline", + { dark: focusBorder, light: focusBorder, hcDark: activeContrastBorder, hcLight: activeContrastBorder }, + localize("listFocusOutline", "List/Tree outline color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.") +); +var listFocusAndSelectionOutline = registerColor( + "list.focusAndSelectionOutline", + null, + localize("listFocusAndSelectionOutline", "List/Tree outline color for the focused item when the list/tree is active and selected. An active list/tree has keyboard focus, an inactive does not.") +); +var listActiveSelectionBackground = registerColor( + "list.activeSelectionBackground", + { dark: "#04395E", light: "#0060C0", hcDark: null, hcLight: Color.fromHex("#0F4A85").transparent(0.1) }, + localize("listActiveSelectionBackground", "List/Tree background color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.") +); +var listActiveSelectionForeground = registerColor( + "list.activeSelectionForeground", + { dark: Color.white, light: Color.white, hcDark: null, hcLight: null }, + localize("listActiveSelectionForeground", "List/Tree foreground color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.") +); +var listActiveSelectionIconForeground = registerColor( + "list.activeSelectionIconForeground", + null, + localize("listActiveSelectionIconForeground", "List/Tree icon foreground color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.") +); +var listInactiveSelectionBackground = registerColor( + "list.inactiveSelectionBackground", + { dark: "#37373D", light: "#E4E6F1", hcDark: null, hcLight: Color.fromHex("#0F4A85").transparent(0.1) }, + localize("listInactiveSelectionBackground", "List/Tree background color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.") +); +var listInactiveSelectionForeground = registerColor( + "list.inactiveSelectionForeground", + null, + localize("listInactiveSelectionForeground", "List/Tree foreground color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.") +); +var listInactiveSelectionIconForeground = registerColor( + "list.inactiveSelectionIconForeground", + null, + localize("listInactiveSelectionIconForeground", "List/Tree icon foreground color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.") +); +var listInactiveFocusBackground = registerColor( + "list.inactiveFocusBackground", + null, + localize("listInactiveFocusBackground", "List/Tree background color for the focused item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.") +); +var listInactiveFocusOutline = registerColor( + "list.inactiveFocusOutline", + null, + localize("listInactiveFocusOutline", "List/Tree outline color for the focused item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.") +); +var listHoverBackground = registerColor( + "list.hoverBackground", + { dark: "#2A2D2E", light: "#F0F0F0", hcDark: Color.white.transparent(0.1), hcLight: Color.fromHex("#0F4A85").transparent(0.1) }, + localize("listHoverBackground", "List/Tree background when hovering over items using the mouse.") +); +var listHoverForeground = registerColor( + "list.hoverForeground", + null, + localize("listHoverForeground", "List/Tree foreground when hovering over items using the mouse.") +); +var listDropOverBackground = registerColor( + "list.dropBackground", + { dark: "#062F4A", light: "#D6EBFF", hcDark: null, hcLight: null }, + localize("listDropBackground", "List/Tree drag and drop background when moving items over other items when using the mouse.") +); +var listDropBetweenBackground = registerColor( + "list.dropBetweenBackground", + { dark: iconForeground, light: iconForeground, hcDark: null, hcLight: null }, + localize("listDropBetweenBackground", "List/Tree drag and drop border color when moving items between items when using the mouse.") +); +var listHighlightForeground = registerColor( + "list.highlightForeground", + { dark: "#2AAAFF", light: "#0066BF", hcDark: focusBorder, hcLight: focusBorder }, + localize("highlight", "List/Tree foreground color of the match highlights when searching inside the list/tree.") +); +registerColor( + "list.focusHighlightForeground", + { dark: listHighlightForeground, light: ifDefinedThenElse(listActiveSelectionBackground, listHighlightForeground, "#BBE7FF"), hcDark: listHighlightForeground, hcLight: listHighlightForeground }, + localize("listFocusHighlightForeground", "List/Tree foreground color of the match highlights on actively focused items when searching inside the list/tree.") +); +registerColor( + "list.invalidItemForeground", + { dark: "#B89500", light: "#B89500", hcDark: "#B89500", hcLight: "#B5200D" }, + localize("invalidItemForeground", "List/Tree foreground color for invalid items, for example an unresolved root in explorer.") +); +registerColor( + "list.errorForeground", + { dark: "#F88070", light: "#B01011", hcDark: null, hcLight: null }, + localize("listErrorForeground", "Foreground color of list items containing errors.") +); +registerColor( + "list.warningForeground", + { dark: "#CCA700", light: "#855F00", hcDark: null, hcLight: null }, + localize("listWarningForeground", "Foreground color of list items containing warnings.") +); +var listFilterWidgetBackground = registerColor( + "listFilterWidget.background", + { light: darken(editorWidgetBackground, 0), dark: lighten(editorWidgetBackground, 0), hcDark: editorWidgetBackground, hcLight: editorWidgetBackground }, + localize("listFilterWidgetBackground", "Background color of the type filter widget in lists and trees.") +); +var listFilterWidgetOutline = registerColor( + "listFilterWidget.outline", + { dark: Color.transparent, light: Color.transparent, hcDark: "#f38518", hcLight: "#007ACC" }, + localize("listFilterWidgetOutline", "Outline color of the type filter widget in lists and trees.") +); +var listFilterWidgetNoMatchesOutline = registerColor( + "listFilterWidget.noMatchesOutline", + { dark: "#BE1100", light: "#BE1100", hcDark: contrastBorder, hcLight: contrastBorder }, + localize("listFilterWidgetNoMatchesOutline", "Outline color of the type filter widget in lists and trees, when there are no matches.") +); +var listFilterWidgetShadow = registerColor( + "listFilterWidget.shadow", + widgetShadow, + localize("listFilterWidgetShadow", "Shadow color of the type filter widget in lists and trees.") +); +registerColor( + "list.filterMatchBackground", + { dark: editorFindMatchHighlight, light: editorFindMatchHighlight, hcDark: null, hcLight: null }, + localize("listFilterMatchHighlight", "Background color of the filtered match.") +); +registerColor( + "list.filterMatchBorder", + { dark: editorFindMatchHighlightBorder, light: editorFindMatchHighlightBorder, hcDark: contrastBorder, hcLight: activeContrastBorder }, + localize("listFilterMatchHighlightBorder", "Border color of the filtered match.") +); +registerColor( + "list.deemphasizedForeground", + { dark: "#8C8C8C", light: "#8E8E90", hcDark: "#A7A8A9", hcLight: "#666666" }, + localize("listDeemphasizedForeground", "List/Tree foreground color for items that are deemphasized.") +); +var treeIndentGuidesStroke = registerColor( + "tree.indentGuidesStroke", + { dark: "#585858", light: "#a9a9a9", hcDark: "#a9a9a9", hcLight: "#a5a5a5" }, + localize("treeIndentGuidesStroke", "Tree stroke color for the indentation guides.") +); +var treeInactiveIndentGuidesStroke = registerColor( + "tree.inactiveIndentGuidesStroke", + transparent(treeIndentGuidesStroke, 0.4), + localize("treeInactiveIndentGuidesStroke", "Tree stroke color for the indentation guides that are not active.") +); +var tableColumnsBorder = registerColor( + "tree.tableColumnsBorder", + { dark: "#CCCCCC20", light: "#61616120", hcDark: null, hcLight: null }, + localize("tableColumnsBorder", "Table border color between columns.") +); +var tableOddRowsBackgroundColor = registerColor( + "tree.tableOddRowsBackground", + { dark: transparent(foreground, 0.04), light: transparent(foreground, 0.04), hcDark: null, hcLight: null }, + localize("tableOddRowsBackgroundColor", "Background color for odd table rows.") +); +registerColor( + "editorActionList.background", + editorWidgetBackground, + localize("editorActionListBackground", "Action List background color.") +); +registerColor( + "editorActionList.foreground", + editorWidgetForeground, + localize("editorActionListForeground", "Action List foreground color.") +); +registerColor( + "editorActionList.focusForeground", + listActiveSelectionForeground, + localize("editorActionListFocusForeground", "Action List foreground color for the focused item.") +); +registerColor( + "editorActionList.focusBackground", + listActiveSelectionBackground, + localize("editorActionListFocusBackground", "Action List background color for the focused item.") +); + +// ../../../../../platform/theme/common/colors/menuColors.ts +var menuBorder = registerColor( + "menu.border", + { dark: null, light: null, hcDark: contrastBorder, hcLight: contrastBorder }, + localize("menuBorder", "Border color of menus.") +); +var menuForeground = registerColor( + "menu.foreground", + selectForeground, + localize("menuForeground", "Foreground color of menu items.") +); +var menuBackground = registerColor( + "menu.background", + selectBackground, + localize("menuBackground", "Background color of menu items.") +); +var menuSelectionForeground = registerColor( + "menu.selectionForeground", + listActiveSelectionForeground, + localize("menuSelectionForeground", "Foreground color of the selected menu item in menus.") +); +var menuSelectionBackground = registerColor( + "menu.selectionBackground", + listActiveSelectionBackground, + localize("menuSelectionBackground", "Background color of the selected menu item in menus.") +); +var menuSelectionBorder = registerColor( + "menu.selectionBorder", + { dark: null, light: null, hcDark: activeContrastBorder, hcLight: activeContrastBorder }, + localize("menuSelectionBorder", "Border color of the selected menu item in menus.") +); +var menuSeparatorBackground = registerColor( + "menu.separatorBackground", + { dark: "#606060", light: "#D4D4D4", hcDark: contrastBorder, hcLight: contrastBorder }, + localize("menuSeparatorBackground", "Color of a separator menu item in menus.") +); + +// ../../../../../platform/theme/common/colors/quickpickColors.ts +registerColor( + "quickInput.background", + editorWidgetBackground, + localize("pickerBackground", "Quick picker background color. The quick picker widget is the container for pickers like the command palette.") +); +registerColor( + "quickInput.foreground", + editorWidgetForeground, + localize("pickerForeground", "Quick picker foreground color. The quick picker widget is the container for pickers like the command palette.") +); +registerColor( + "quickInputTitle.background", + { dark: new Color(new RGBA(255, 255, 255, 0.105)), light: new Color(new RGBA(0, 0, 0, 0.06)), hcDark: "#000000", hcLight: Color.white }, + localize("pickerTitleBackground", "Quick picker title background color. The quick picker widget is the container for pickers like the command palette.") +); +var pickerGroupForeground = registerColor( + "pickerGroup.foreground", + { dark: "#3794FF", light: "#0066BF", hcDark: Color.white, hcLight: "#0F4A85" }, + localize("pickerGroupForeground", "Quick picker color for grouping labels.") +); +registerColor( + "pickerGroup.border", + { dark: "#3F3F46", light: "#CCCEDB", hcDark: Color.white, hcLight: "#0F4A85" }, + localize("pickerGroupBorder", "Quick picker color for grouping borders.") +); +var _deprecatedQuickInputListFocusBackground = registerColor( + "quickInput.list.focusBackground", + null, + "", + void 0, + localize("quickInput.list.focusBackground deprecation", "Please use quickInputList.focusBackground instead") +); +var quickInputListFocusForeground = registerColor( + "quickInputList.focusForeground", + listActiveSelectionForeground, + localize("quickInput.listFocusForeground", "Quick picker foreground color for the focused item.") +); +var quickInputListFocusIconForeground = registerColor( + "quickInputList.focusIconForeground", + listActiveSelectionIconForeground, + localize("quickInput.listFocusIconForeground", "Quick picker icon foreground color for the focused item.") +); +var quickInputListFocusBackground = registerColor( + "quickInputList.focusBackground", + { dark: oneOf(_deprecatedQuickInputListFocusBackground, listActiveSelectionBackground), light: oneOf(_deprecatedQuickInputListFocusBackground, listActiveSelectionBackground), hcDark: null, hcLight: null }, + localize("quickInput.listFocusBackground", "Quick picker background color for the focused item.") +); + +// ../../../../../platform/theme/common/colors/searchColors.ts +registerColor( + "search.resultsInfoForeground", + { light: foreground, dark: transparent(foreground, 0.65), hcDark: foreground, hcLight: foreground }, + localize("search.resultsInfoForeground", "Color of the text in the search viewlet's completion message.") +); +registerColor( + "searchEditor.findMatchBackground", + { light: transparent(editorFindMatchHighlight, 0.66), dark: transparent(editorFindMatchHighlight, 0.66), hcDark: editorFindMatchHighlight, hcLight: editorFindMatchHighlight }, + localize("searchEditor.queryMatch", "Color of the Search Editor query matches.") +); +registerColor( + "searchEditor.findMatchBorder", + { light: transparent(editorFindMatchHighlightBorder, 0.66), dark: transparent(editorFindMatchHighlightBorder, 0.66), hcDark: editorFindMatchHighlightBorder, hcLight: editorFindMatchHighlightBorder }, + localize("searchEditor.editorFindMatchBorder", "Border color of the Search Editor query matches.") +); + +// ../../../../../base/browser/window.ts +function ensureCodeWindow(targetWindow, fallbackWindowId) { + const codeWindow = targetWindow; + if (typeof codeWindow.vscodeWindowId !== "number") { + Object.defineProperty(codeWindow, "vscodeWindowId", { + get: () => fallbackWindowId + }); + } +} +var mainWindow = window; + +// ../../../../../base/browser/browser.ts +var WindowManager = class _WindowManager { + constructor() { + // --- Zoom Level + this.mapWindowIdToZoomLevel = /* @__PURE__ */ new Map(); + this._onDidChangeZoomLevel = new Emitter(); + this.onDidChangeZoomLevel = this._onDidChangeZoomLevel.event; + // --- Zoom Factor + this.mapWindowIdToZoomFactor = /* @__PURE__ */ new Map(); + // --- Fullscreen + this._onDidChangeFullscreen = new Emitter(); + this.onDidChangeFullscreen = this._onDidChangeFullscreen.event; + this.mapWindowIdToFullScreen = /* @__PURE__ */ new Map(); + } + static { + this.INSTANCE = new _WindowManager(); + } + getZoomLevel(targetWindow) { + return this.mapWindowIdToZoomLevel.get(this.getWindowId(targetWindow)) ?? 0; + } + setZoomLevel(zoomLevel, targetWindow) { + if (this.getZoomLevel(targetWindow) === zoomLevel) { + return; + } + const targetWindowId = this.getWindowId(targetWindow); + this.mapWindowIdToZoomLevel.set(targetWindowId, zoomLevel); + this._onDidChangeZoomLevel.fire(targetWindowId); + } + getZoomFactor(targetWindow) { + return this.mapWindowIdToZoomFactor.get(this.getWindowId(targetWindow)) ?? 1; + } + setZoomFactor(zoomFactor, targetWindow) { + this.mapWindowIdToZoomFactor.set(this.getWindowId(targetWindow), zoomFactor); + } + setFullscreen(fullscreen, targetWindow) { + if (this.isFullscreen(targetWindow) === fullscreen) { + return; + } + const windowId = this.getWindowId(targetWindow); + this.mapWindowIdToFullScreen.set(windowId, fullscreen); + this._onDidChangeFullscreen.fire(windowId); + } + isFullscreen(targetWindow) { + return !!this.mapWindowIdToFullScreen.get(this.getWindowId(targetWindow)); + } + getWindowId(targetWindow) { + return targetWindow.vscodeWindowId; + } +}; +function addMatchMediaChangeListener(targetWindow, query, callback) { + if (typeof query === "string") { + query = targetWindow.matchMedia(query); + } + query.addEventListener("change", callback); +} +WindowManager.INSTANCE.onDidChangeZoomLevel; +function getZoomFactor(targetWindow) { + return WindowManager.INSTANCE.getZoomFactor(targetWindow); +} +WindowManager.INSTANCE.onDidChangeFullscreen; +var userAgent2 = navigator.userAgent; +var isFirefox2 = userAgent2.indexOf("Firefox") >= 0; +var isWebKit = userAgent2.indexOf("AppleWebKit") >= 0; +var isChrome2 = userAgent2.indexOf("Chrome") >= 0; +var isSafari2 = !isChrome2 && userAgent2.indexOf("Safari") >= 0; +userAgent2.indexOf("Electron/") >= 0; +userAgent2.indexOf("Android") >= 0; +var standalone = false; +if (typeof mainWindow.matchMedia === "function") { + const standaloneMatchMedia = mainWindow.matchMedia("(display-mode: standalone) or (display-mode: window-controls-overlay)"); + const fullScreenMatchMedia = mainWindow.matchMedia("(display-mode: fullscreen)"); + standalone = standaloneMatchMedia.matches; + addMatchMediaChangeListener(mainWindow, standaloneMatchMedia, ({ matches }) => { + if (standalone && fullScreenMatchMedia.matches) { + return; + } + standalone = matches; + }); +} +function isStandalone() { + return standalone; +} + +// ../../../../../base/browser/canIUse.ts +var BrowserFeatures = { + clipboard: { + writeText: isNative || document.queryCommandSupported && document.queryCommandSupported("copy") || !!(navigator && navigator.clipboard && navigator.clipboard.writeText), + readText: isNative || !!(navigator && navigator.clipboard && navigator.clipboard.readText) + }, + keyboard: (() => { + if (isNative || isStandalone()) { + return 0 /* Always */; + } + if (navigator.keyboard || isSafari2) { + return 1 /* FullScreen */; + } + return 2 /* None */; + })(), + // 'ontouchstart' in window always evaluates to true with typescript's modern typings. This causes `window` to be + // `never` later in `window.navigator`. That's why we need the explicit `window as Window` cast + touch: "ontouchstart" in mainWindow || navigator.maxTouchPoints > 0, + pointerEvents: mainWindow.PointerEvent && ("ontouchstart" in mainWindow || navigator.maxTouchPoints > 0) +}; + +// ../../../../../base/common/keyCodes.ts +var KeyCodeStrMap = class { + constructor() { + this._keyCodeToStr = []; + this._strToKeyCode = /* @__PURE__ */ Object.create(null); + } + define(keyCode, str) { + this._keyCodeToStr[keyCode] = str; + this._strToKeyCode[str.toLowerCase()] = keyCode; + } + keyCodeToStr(keyCode) { + return this._keyCodeToStr[keyCode]; + } + strToKeyCode(str) { + return this._strToKeyCode[str.toLowerCase()] || 0 /* Unknown */; + } +}; +var uiMap = new KeyCodeStrMap(); +var userSettingsUSMap = new KeyCodeStrMap(); +var userSettingsGeneralMap = new KeyCodeStrMap(); +var EVENT_KEY_CODE_MAP = new Array(230); +var scanCodeStrToInt = /* @__PURE__ */ Object.create(null); +var scanCodeLowerCaseStrToInt = /* @__PURE__ */ Object.create(null); +(function() { + const empty = ""; + const mappings = [ + // immutable, scanCode, scanCodeStr, keyCode, keyCodeStr, eventKeyCode, vkey, usUserSettingsLabel, generalUserSettingsLabel + [1, 0 /* None */, "None", 0 /* Unknown */, "unknown", 0, "VK_UNKNOWN", empty, empty], + [1, 1 /* Hyper */, "Hyper", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 2 /* Super */, "Super", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 3 /* Fn */, "Fn", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 4 /* FnLock */, "FnLock", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 5 /* Suspend */, "Suspend", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 6 /* Resume */, "Resume", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 7 /* Turbo */, "Turbo", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 8 /* Sleep */, "Sleep", 0 /* Unknown */, empty, 0, "VK_SLEEP", empty, empty], + [1, 9 /* WakeUp */, "WakeUp", 0 /* Unknown */, empty, 0, empty, empty, empty], + [0, 10 /* KeyA */, "KeyA", 31 /* KeyA */, "A", 65, "VK_A", empty, empty], + [0, 11 /* KeyB */, "KeyB", 32 /* KeyB */, "B", 66, "VK_B", empty, empty], + [0, 12 /* KeyC */, "KeyC", 33 /* KeyC */, "C", 67, "VK_C", empty, empty], + [0, 13 /* KeyD */, "KeyD", 34 /* KeyD */, "D", 68, "VK_D", empty, empty], + [0, 14 /* KeyE */, "KeyE", 35 /* KeyE */, "E", 69, "VK_E", empty, empty], + [0, 15 /* KeyF */, "KeyF", 36 /* KeyF */, "F", 70, "VK_F", empty, empty], + [0, 16 /* KeyG */, "KeyG", 37 /* KeyG */, "G", 71, "VK_G", empty, empty], + [0, 17 /* KeyH */, "KeyH", 38 /* KeyH */, "H", 72, "VK_H", empty, empty], + [0, 18 /* KeyI */, "KeyI", 39 /* KeyI */, "I", 73, "VK_I", empty, empty], + [0, 19 /* KeyJ */, "KeyJ", 40 /* KeyJ */, "J", 74, "VK_J", empty, empty], + [0, 20 /* KeyK */, "KeyK", 41 /* KeyK */, "K", 75, "VK_K", empty, empty], + [0, 21 /* KeyL */, "KeyL", 42 /* KeyL */, "L", 76, "VK_L", empty, empty], + [0, 22 /* KeyM */, "KeyM", 43 /* KeyM */, "M", 77, "VK_M", empty, empty], + [0, 23 /* KeyN */, "KeyN", 44 /* KeyN */, "N", 78, "VK_N", empty, empty], + [0, 24 /* KeyO */, "KeyO", 45 /* KeyO */, "O", 79, "VK_O", empty, empty], + [0, 25 /* KeyP */, "KeyP", 46 /* KeyP */, "P", 80, "VK_P", empty, empty], + [0, 26 /* KeyQ */, "KeyQ", 47 /* KeyQ */, "Q", 81, "VK_Q", empty, empty], + [0, 27 /* KeyR */, "KeyR", 48 /* KeyR */, "R", 82, "VK_R", empty, empty], + [0, 28 /* KeyS */, "KeyS", 49 /* KeyS */, "S", 83, "VK_S", empty, empty], + [0, 29 /* KeyT */, "KeyT", 50 /* KeyT */, "T", 84, "VK_T", empty, empty], + [0, 30 /* KeyU */, "KeyU", 51 /* KeyU */, "U", 85, "VK_U", empty, empty], + [0, 31 /* KeyV */, "KeyV", 52 /* KeyV */, "V", 86, "VK_V", empty, empty], + [0, 32 /* KeyW */, "KeyW", 53 /* KeyW */, "W", 87, "VK_W", empty, empty], + [0, 33 /* KeyX */, "KeyX", 54 /* KeyX */, "X", 88, "VK_X", empty, empty], + [0, 34 /* KeyY */, "KeyY", 55 /* KeyY */, "Y", 89, "VK_Y", empty, empty], + [0, 35 /* KeyZ */, "KeyZ", 56 /* KeyZ */, "Z", 90, "VK_Z", empty, empty], + [0, 36 /* Digit1 */, "Digit1", 22 /* Digit1 */, "1", 49, "VK_1", empty, empty], + [0, 37 /* Digit2 */, "Digit2", 23 /* Digit2 */, "2", 50, "VK_2", empty, empty], + [0, 38 /* Digit3 */, "Digit3", 24 /* Digit3 */, "3", 51, "VK_3", empty, empty], + [0, 39 /* Digit4 */, "Digit4", 25 /* Digit4 */, "4", 52, "VK_4", empty, empty], + [0, 40 /* Digit5 */, "Digit5", 26 /* Digit5 */, "5", 53, "VK_5", empty, empty], + [0, 41 /* Digit6 */, "Digit6", 27 /* Digit6 */, "6", 54, "VK_6", empty, empty], + [0, 42 /* Digit7 */, "Digit7", 28 /* Digit7 */, "7", 55, "VK_7", empty, empty], + [0, 43 /* Digit8 */, "Digit8", 29 /* Digit8 */, "8", 56, "VK_8", empty, empty], + [0, 44 /* Digit9 */, "Digit9", 30 /* Digit9 */, "9", 57, "VK_9", empty, empty], + [0, 45 /* Digit0 */, "Digit0", 21 /* Digit0 */, "0", 48, "VK_0", empty, empty], + [1, 46 /* Enter */, "Enter", 3 /* Enter */, "Enter", 13, "VK_RETURN", empty, empty], + [1, 47 /* Escape */, "Escape", 9 /* Escape */, "Escape", 27, "VK_ESCAPE", empty, empty], + [1, 48 /* Backspace */, "Backspace", 1 /* Backspace */, "Backspace", 8, "VK_BACK", empty, empty], + [1, 49 /* Tab */, "Tab", 2 /* Tab */, "Tab", 9, "VK_TAB", empty, empty], + [1, 50 /* Space */, "Space", 10 /* Space */, "Space", 32, "VK_SPACE", empty, empty], + [0, 51 /* Minus */, "Minus", 88 /* Minus */, "-", 189, "VK_OEM_MINUS", "-", "OEM_MINUS"], + [0, 52 /* Equal */, "Equal", 86 /* Equal */, "=", 187, "VK_OEM_PLUS", "=", "OEM_PLUS"], + [0, 53 /* BracketLeft */, "BracketLeft", 92 /* BracketLeft */, "[", 219, "VK_OEM_4", "[", "OEM_4"], + [0, 54 /* BracketRight */, "BracketRight", 94 /* BracketRight */, "]", 221, "VK_OEM_6", "]", "OEM_6"], + [0, 55 /* Backslash */, "Backslash", 93 /* Backslash */, "\\", 220, "VK_OEM_5", "\\", "OEM_5"], + [0, 56 /* IntlHash */, "IntlHash", 0 /* Unknown */, empty, 0, empty, empty, empty], + // has been dropped from the w3c spec + [0, 57 /* Semicolon */, "Semicolon", 85 /* Semicolon */, ";", 186, "VK_OEM_1", ";", "OEM_1"], + [0, 58 /* Quote */, "Quote", 95 /* Quote */, "'", 222, "VK_OEM_7", "'", "OEM_7"], + [0, 59 /* Backquote */, "Backquote", 91 /* Backquote */, "`", 192, "VK_OEM_3", "`", "OEM_3"], + [0, 60 /* Comma */, "Comma", 87 /* Comma */, ",", 188, "VK_OEM_COMMA", ",", "OEM_COMMA"], + [0, 61 /* Period */, "Period", 89 /* Period */, ".", 190, "VK_OEM_PERIOD", ".", "OEM_PERIOD"], + [0, 62 /* Slash */, "Slash", 90 /* Slash */, "/", 191, "VK_OEM_2", "/", "OEM_2"], + [1, 63 /* CapsLock */, "CapsLock", 8 /* CapsLock */, "CapsLock", 20, "VK_CAPITAL", empty, empty], + [1, 64 /* F1 */, "F1", 59 /* F1 */, "F1", 112, "VK_F1", empty, empty], + [1, 65 /* F2 */, "F2", 60 /* F2 */, "F2", 113, "VK_F2", empty, empty], + [1, 66 /* F3 */, "F3", 61 /* F3 */, "F3", 114, "VK_F3", empty, empty], + [1, 67 /* F4 */, "F4", 62 /* F4 */, "F4", 115, "VK_F4", empty, empty], + [1, 68 /* F5 */, "F5", 63 /* F5 */, "F5", 116, "VK_F5", empty, empty], + [1, 69 /* F6 */, "F6", 64 /* F6 */, "F6", 117, "VK_F6", empty, empty], + [1, 70 /* F7 */, "F7", 65 /* F7 */, "F7", 118, "VK_F7", empty, empty], + [1, 71 /* F8 */, "F8", 66 /* F8 */, "F8", 119, "VK_F8", empty, empty], + [1, 72 /* F9 */, "F9", 67 /* F9 */, "F9", 120, "VK_F9", empty, empty], + [1, 73 /* F10 */, "F10", 68 /* F10 */, "F10", 121, "VK_F10", empty, empty], + [1, 74 /* F11 */, "F11", 69 /* F11 */, "F11", 122, "VK_F11", empty, empty], + [1, 75 /* F12 */, "F12", 70 /* F12 */, "F12", 123, "VK_F12", empty, empty], + [1, 76 /* PrintScreen */, "PrintScreen", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 77 /* ScrollLock */, "ScrollLock", 84 /* ScrollLock */, "ScrollLock", 145, "VK_SCROLL", empty, empty], + [1, 78 /* Pause */, "Pause", 7 /* PauseBreak */, "PauseBreak", 19, "VK_PAUSE", empty, empty], + [1, 79 /* Insert */, "Insert", 19 /* Insert */, "Insert", 45, "VK_INSERT", empty, empty], + [1, 80 /* Home */, "Home", 14 /* Home */, "Home", 36, "VK_HOME", empty, empty], + [1, 81 /* PageUp */, "PageUp", 11 /* PageUp */, "PageUp", 33, "VK_PRIOR", empty, empty], + [1, 82 /* Delete */, "Delete", 20 /* Delete */, "Delete", 46, "VK_DELETE", empty, empty], + [1, 83 /* End */, "End", 13 /* End */, "End", 35, "VK_END", empty, empty], + [1, 84 /* PageDown */, "PageDown", 12 /* PageDown */, "PageDown", 34, "VK_NEXT", empty, empty], + [1, 85 /* ArrowRight */, "ArrowRight", 17 /* RightArrow */, "RightArrow", 39, "VK_RIGHT", "Right", empty], + [1, 86 /* ArrowLeft */, "ArrowLeft", 15 /* LeftArrow */, "LeftArrow", 37, "VK_LEFT", "Left", empty], + [1, 87 /* ArrowDown */, "ArrowDown", 18 /* DownArrow */, "DownArrow", 40, "VK_DOWN", "Down", empty], + [1, 88 /* ArrowUp */, "ArrowUp", 16 /* UpArrow */, "UpArrow", 38, "VK_UP", "Up", empty], + [1, 89 /* NumLock */, "NumLock", 83 /* NumLock */, "NumLock", 144, "VK_NUMLOCK", empty, empty], + [1, 90 /* NumpadDivide */, "NumpadDivide", 113 /* NumpadDivide */, "NumPad_Divide", 111, "VK_DIVIDE", empty, empty], + [1, 91 /* NumpadMultiply */, "NumpadMultiply", 108 /* NumpadMultiply */, "NumPad_Multiply", 106, "VK_MULTIPLY", empty, empty], + [1, 92 /* NumpadSubtract */, "NumpadSubtract", 111 /* NumpadSubtract */, "NumPad_Subtract", 109, "VK_SUBTRACT", empty, empty], + [1, 93 /* NumpadAdd */, "NumpadAdd", 109 /* NumpadAdd */, "NumPad_Add", 107, "VK_ADD", empty, empty], + [1, 94 /* NumpadEnter */, "NumpadEnter", 3 /* Enter */, empty, 0, empty, empty, empty], + [1, 95 /* Numpad1 */, "Numpad1", 99 /* Numpad1 */, "NumPad1", 97, "VK_NUMPAD1", empty, empty], + [1, 96 /* Numpad2 */, "Numpad2", 100 /* Numpad2 */, "NumPad2", 98, "VK_NUMPAD2", empty, empty], + [1, 97 /* Numpad3 */, "Numpad3", 101 /* Numpad3 */, "NumPad3", 99, "VK_NUMPAD3", empty, empty], + [1, 98 /* Numpad4 */, "Numpad4", 102 /* Numpad4 */, "NumPad4", 100, "VK_NUMPAD4", empty, empty], + [1, 99 /* Numpad5 */, "Numpad5", 103 /* Numpad5 */, "NumPad5", 101, "VK_NUMPAD5", empty, empty], + [1, 100 /* Numpad6 */, "Numpad6", 104 /* Numpad6 */, "NumPad6", 102, "VK_NUMPAD6", empty, empty], + [1, 101 /* Numpad7 */, "Numpad7", 105 /* Numpad7 */, "NumPad7", 103, "VK_NUMPAD7", empty, empty], + [1, 102 /* Numpad8 */, "Numpad8", 106 /* Numpad8 */, "NumPad8", 104, "VK_NUMPAD8", empty, empty], + [1, 103 /* Numpad9 */, "Numpad9", 107 /* Numpad9 */, "NumPad9", 105, "VK_NUMPAD9", empty, empty], + [1, 104 /* Numpad0 */, "Numpad0", 98 /* Numpad0 */, "NumPad0", 96, "VK_NUMPAD0", empty, empty], + [1, 105 /* NumpadDecimal */, "NumpadDecimal", 112 /* NumpadDecimal */, "NumPad_Decimal", 110, "VK_DECIMAL", empty, empty], + [0, 106 /* IntlBackslash */, "IntlBackslash", 97 /* IntlBackslash */, "OEM_102", 226, "VK_OEM_102", empty, empty], + [1, 107 /* ContextMenu */, "ContextMenu", 58 /* ContextMenu */, "ContextMenu", 93, empty, empty, empty], + [1, 108 /* Power */, "Power", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 109 /* NumpadEqual */, "NumpadEqual", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 110 /* F13 */, "F13", 71 /* F13 */, "F13", 124, "VK_F13", empty, empty], + [1, 111 /* F14 */, "F14", 72 /* F14 */, "F14", 125, "VK_F14", empty, empty], + [1, 112 /* F15 */, "F15", 73 /* F15 */, "F15", 126, "VK_F15", empty, empty], + [1, 113 /* F16 */, "F16", 74 /* F16 */, "F16", 127, "VK_F16", empty, empty], + [1, 114 /* F17 */, "F17", 75 /* F17 */, "F17", 128, "VK_F17", empty, empty], + [1, 115 /* F18 */, "F18", 76 /* F18 */, "F18", 129, "VK_F18", empty, empty], + [1, 116 /* F19 */, "F19", 77 /* F19 */, "F19", 130, "VK_F19", empty, empty], + [1, 117 /* F20 */, "F20", 78 /* F20 */, "F20", 131, "VK_F20", empty, empty], + [1, 118 /* F21 */, "F21", 79 /* F21 */, "F21", 132, "VK_F21", empty, empty], + [1, 119 /* F22 */, "F22", 80 /* F22 */, "F22", 133, "VK_F22", empty, empty], + [1, 120 /* F23 */, "F23", 81 /* F23 */, "F23", 134, "VK_F23", empty, empty], + [1, 121 /* F24 */, "F24", 82 /* F24 */, "F24", 135, "VK_F24", empty, empty], + [1, 122 /* Open */, "Open", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 123 /* Help */, "Help", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 124 /* Select */, "Select", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 125 /* Again */, "Again", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 126 /* Undo */, "Undo", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 127 /* Cut */, "Cut", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 128 /* Copy */, "Copy", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 129 /* Paste */, "Paste", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 130 /* Find */, "Find", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 131 /* AudioVolumeMute */, "AudioVolumeMute", 117 /* AudioVolumeMute */, "AudioVolumeMute", 173, "VK_VOLUME_MUTE", empty, empty], + [1, 132 /* AudioVolumeUp */, "AudioVolumeUp", 118 /* AudioVolumeUp */, "AudioVolumeUp", 175, "VK_VOLUME_UP", empty, empty], + [1, 133 /* AudioVolumeDown */, "AudioVolumeDown", 119 /* AudioVolumeDown */, "AudioVolumeDown", 174, "VK_VOLUME_DOWN", empty, empty], + [1, 134 /* NumpadComma */, "NumpadComma", 110 /* NUMPAD_SEPARATOR */, "NumPad_Separator", 108, "VK_SEPARATOR", empty, empty], + [0, 135 /* IntlRo */, "IntlRo", 115 /* ABNT_C1 */, "ABNT_C1", 193, "VK_ABNT_C1", empty, empty], + [1, 136 /* KanaMode */, "KanaMode", 0 /* Unknown */, empty, 0, empty, empty, empty], + [0, 137 /* IntlYen */, "IntlYen", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 138 /* Convert */, "Convert", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 139 /* NonConvert */, "NonConvert", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 140 /* Lang1 */, "Lang1", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 141 /* Lang2 */, "Lang2", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 142 /* Lang3 */, "Lang3", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 143 /* Lang4 */, "Lang4", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 144 /* Lang5 */, "Lang5", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 145 /* Abort */, "Abort", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 146 /* Props */, "Props", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 147 /* NumpadParenLeft */, "NumpadParenLeft", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 148 /* NumpadParenRight */, "NumpadParenRight", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 149 /* NumpadBackspace */, "NumpadBackspace", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 150 /* NumpadMemoryStore */, "NumpadMemoryStore", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 151 /* NumpadMemoryRecall */, "NumpadMemoryRecall", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 152 /* NumpadMemoryClear */, "NumpadMemoryClear", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 153 /* NumpadMemoryAdd */, "NumpadMemoryAdd", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 154 /* NumpadMemorySubtract */, "NumpadMemorySubtract", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 155 /* NumpadClear */, "NumpadClear", 131 /* Clear */, "Clear", 12, "VK_CLEAR", empty, empty], + [1, 156 /* NumpadClearEntry */, "NumpadClearEntry", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 0 /* None */, empty, 5 /* Ctrl */, "Ctrl", 17, "VK_CONTROL", empty, empty], + [1, 0 /* None */, empty, 4 /* Shift */, "Shift", 16, "VK_SHIFT", empty, empty], + [1, 0 /* None */, empty, 6 /* Alt */, "Alt", 18, "VK_MENU", empty, empty], + [1, 0 /* None */, empty, 57 /* Meta */, "Meta", 91, "VK_COMMAND", empty, empty], + [1, 157 /* ControlLeft */, "ControlLeft", 5 /* Ctrl */, empty, 0, "VK_LCONTROL", empty, empty], + [1, 158 /* ShiftLeft */, "ShiftLeft", 4 /* Shift */, empty, 0, "VK_LSHIFT", empty, empty], + [1, 159 /* AltLeft */, "AltLeft", 6 /* Alt */, empty, 0, "VK_LMENU", empty, empty], + [1, 160 /* MetaLeft */, "MetaLeft", 57 /* Meta */, empty, 0, "VK_LWIN", empty, empty], + [1, 161 /* ControlRight */, "ControlRight", 5 /* Ctrl */, empty, 0, "VK_RCONTROL", empty, empty], + [1, 162 /* ShiftRight */, "ShiftRight", 4 /* Shift */, empty, 0, "VK_RSHIFT", empty, empty], + [1, 163 /* AltRight */, "AltRight", 6 /* Alt */, empty, 0, "VK_RMENU", empty, empty], + [1, 164 /* MetaRight */, "MetaRight", 57 /* Meta */, empty, 0, "VK_RWIN", empty, empty], + [1, 165 /* BrightnessUp */, "BrightnessUp", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 166 /* BrightnessDown */, "BrightnessDown", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 167 /* MediaPlay */, "MediaPlay", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 168 /* MediaRecord */, "MediaRecord", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 169 /* MediaFastForward */, "MediaFastForward", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 170 /* MediaRewind */, "MediaRewind", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 171 /* MediaTrackNext */, "MediaTrackNext", 124 /* MediaTrackNext */, "MediaTrackNext", 176, "VK_MEDIA_NEXT_TRACK", empty, empty], + [1, 172 /* MediaTrackPrevious */, "MediaTrackPrevious", 125 /* MediaTrackPrevious */, "MediaTrackPrevious", 177, "VK_MEDIA_PREV_TRACK", empty, empty], + [1, 173 /* MediaStop */, "MediaStop", 126 /* MediaStop */, "MediaStop", 178, "VK_MEDIA_STOP", empty, empty], + [1, 174 /* Eject */, "Eject", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 175 /* MediaPlayPause */, "MediaPlayPause", 127 /* MediaPlayPause */, "MediaPlayPause", 179, "VK_MEDIA_PLAY_PAUSE", empty, empty], + [1, 176 /* MediaSelect */, "MediaSelect", 128 /* LaunchMediaPlayer */, "LaunchMediaPlayer", 181, "VK_MEDIA_LAUNCH_MEDIA_SELECT", empty, empty], + [1, 177 /* LaunchMail */, "LaunchMail", 129 /* LaunchMail */, "LaunchMail", 180, "VK_MEDIA_LAUNCH_MAIL", empty, empty], + [1, 178 /* LaunchApp2 */, "LaunchApp2", 130 /* LaunchApp2 */, "LaunchApp2", 183, "VK_MEDIA_LAUNCH_APP2", empty, empty], + [1, 179 /* LaunchApp1 */, "LaunchApp1", 0 /* Unknown */, empty, 0, "VK_MEDIA_LAUNCH_APP1", empty, empty], + [1, 180 /* SelectTask */, "SelectTask", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 181 /* LaunchScreenSaver */, "LaunchScreenSaver", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 182 /* BrowserSearch */, "BrowserSearch", 120 /* BrowserSearch */, "BrowserSearch", 170, "VK_BROWSER_SEARCH", empty, empty], + [1, 183 /* BrowserHome */, "BrowserHome", 121 /* BrowserHome */, "BrowserHome", 172, "VK_BROWSER_HOME", empty, empty], + [1, 184 /* BrowserBack */, "BrowserBack", 122 /* BrowserBack */, "BrowserBack", 166, "VK_BROWSER_BACK", empty, empty], + [1, 185 /* BrowserForward */, "BrowserForward", 123 /* BrowserForward */, "BrowserForward", 167, "VK_BROWSER_FORWARD", empty, empty], + [1, 186 /* BrowserStop */, "BrowserStop", 0 /* Unknown */, empty, 0, "VK_BROWSER_STOP", empty, empty], + [1, 187 /* BrowserRefresh */, "BrowserRefresh", 0 /* Unknown */, empty, 0, "VK_BROWSER_REFRESH", empty, empty], + [1, 188 /* BrowserFavorites */, "BrowserFavorites", 0 /* Unknown */, empty, 0, "VK_BROWSER_FAVORITES", empty, empty], + [1, 189 /* ZoomToggle */, "ZoomToggle", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 190 /* MailReply */, "MailReply", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 191 /* MailForward */, "MailForward", 0 /* Unknown */, empty, 0, empty, empty, empty], + [1, 192 /* MailSend */, "MailSend", 0 /* Unknown */, empty, 0, empty, empty, empty], + // See https://lists.w3.org/Archives/Public/www-dom/2010JulSep/att-0182/keyCode-spec.html + // If an Input Method Editor is processing key input and the event is keydown, return 229. + [1, 0 /* None */, empty, 114 /* KEY_IN_COMPOSITION */, "KeyInComposition", 229, empty, empty, empty], + [1, 0 /* None */, empty, 116 /* ABNT_C2 */, "ABNT_C2", 194, "VK_ABNT_C2", empty, empty], + [1, 0 /* None */, empty, 96 /* OEM_8 */, "OEM_8", 223, "VK_OEM_8", empty, empty], + [1, 0 /* None */, empty, 0 /* Unknown */, empty, 0, "VK_KANA", empty, empty], + [1, 0 /* None */, empty, 0 /* Unknown */, empty, 0, "VK_HANGUL", empty, empty], + [1, 0 /* None */, empty, 0 /* Unknown */, empty, 0, "VK_JUNJA", empty, empty], + [1, 0 /* None */, empty, 0 /* Unknown */, empty, 0, "VK_FINAL", empty, empty], + [1, 0 /* None */, empty, 0 /* Unknown */, empty, 0, "VK_HANJA", empty, empty], + [1, 0 /* None */, empty, 0 /* Unknown */, empty, 0, "VK_KANJI", empty, empty], + [1, 0 /* None */, empty, 0 /* Unknown */, empty, 0, "VK_CONVERT", empty, empty], + [1, 0 /* None */, empty, 0 /* Unknown */, empty, 0, "VK_NONCONVERT", empty, empty], + [1, 0 /* None */, empty, 0 /* Unknown */, empty, 0, "VK_ACCEPT", empty, empty], + [1, 0 /* None */, empty, 0 /* Unknown */, empty, 0, "VK_MODECHANGE", empty, empty], + [1, 0 /* None */, empty, 0 /* Unknown */, empty, 0, "VK_SELECT", empty, empty], + [1, 0 /* None */, empty, 0 /* Unknown */, empty, 0, "VK_PRINT", empty, empty], + [1, 0 /* None */, empty, 0 /* Unknown */, empty, 0, "VK_EXECUTE", empty, empty], + [1, 0 /* None */, empty, 0 /* Unknown */, empty, 0, "VK_SNAPSHOT", empty, empty], + [1, 0 /* None */, empty, 0 /* Unknown */, empty, 0, "VK_HELP", empty, empty], + [1, 0 /* None */, empty, 0 /* Unknown */, empty, 0, "VK_APPS", empty, empty], + [1, 0 /* None */, empty, 0 /* Unknown */, empty, 0, "VK_PROCESSKEY", empty, empty], + [1, 0 /* None */, empty, 0 /* Unknown */, empty, 0, "VK_PACKET", empty, empty], + [1, 0 /* None */, empty, 0 /* Unknown */, empty, 0, "VK_DBE_SBCSCHAR", empty, empty], + [1, 0 /* None */, empty, 0 /* Unknown */, empty, 0, "VK_DBE_DBCSCHAR", empty, empty], + [1, 0 /* None */, empty, 0 /* Unknown */, empty, 0, "VK_ATTN", empty, empty], + [1, 0 /* None */, empty, 0 /* Unknown */, empty, 0, "VK_CRSEL", empty, empty], + [1, 0 /* None */, empty, 0 /* Unknown */, empty, 0, "VK_EXSEL", empty, empty], + [1, 0 /* None */, empty, 0 /* Unknown */, empty, 0, "VK_EREOF", empty, empty], + [1, 0 /* None */, empty, 0 /* Unknown */, empty, 0, "VK_PLAY", empty, empty], + [1, 0 /* None */, empty, 0 /* Unknown */, empty, 0, "VK_ZOOM", empty, empty], + [1, 0 /* None */, empty, 0 /* Unknown */, empty, 0, "VK_NONAME", empty, empty], + [1, 0 /* None */, empty, 0 /* Unknown */, empty, 0, "VK_PA1", empty, empty], + [1, 0 /* None */, empty, 0 /* Unknown */, empty, 0, "VK_OEM_CLEAR", empty, empty] + ]; + const seenKeyCode = []; + const seenScanCode = []; + for (const mapping of mappings) { + const [immutable, scanCode, scanCodeStr, keyCode, keyCodeStr, eventKeyCode, vkey, usUserSettingsLabel, generalUserSettingsLabel] = mapping; + if (!seenScanCode[scanCode]) { + seenScanCode[scanCode] = true; + scanCodeStrToInt[scanCodeStr] = scanCode; + scanCodeLowerCaseStrToInt[scanCodeStr.toLowerCase()] = scanCode; + } + if (!seenKeyCode[keyCode]) { + seenKeyCode[keyCode] = true; + if (!keyCodeStr) { + throw new Error(`String representation missing for key code ${keyCode} around scan code ${scanCodeStr}`); + } + uiMap.define(keyCode, keyCodeStr); + userSettingsUSMap.define(keyCode, usUserSettingsLabel || keyCodeStr); + userSettingsGeneralMap.define(keyCode, generalUserSettingsLabel || usUserSettingsLabel || keyCodeStr); + } + if (eventKeyCode) { + EVENT_KEY_CODE_MAP[eventKeyCode] = keyCode; + } + } +})(); +var KeyCodeUtils; +((KeyCodeUtils2) => { + function toString(keyCode) { + return uiMap.keyCodeToStr(keyCode); + } + KeyCodeUtils2.toString = toString; + function fromString(key) { + return uiMap.strToKeyCode(key); + } + KeyCodeUtils2.fromString = fromString; + function toUserSettingsUS(keyCode) { + return userSettingsUSMap.keyCodeToStr(keyCode); + } + KeyCodeUtils2.toUserSettingsUS = toUserSettingsUS; + function toUserSettingsGeneral(keyCode) { + return userSettingsGeneralMap.keyCodeToStr(keyCode); + } + KeyCodeUtils2.toUserSettingsGeneral = toUserSettingsGeneral; + function fromUserSettings(key) { + return userSettingsUSMap.strToKeyCode(key) || userSettingsGeneralMap.strToKeyCode(key); + } + KeyCodeUtils2.fromUserSettings = fromUserSettings; + function toElectronAccelerator(keyCode) { + if (keyCode >= 98 /* Numpad0 */ && keyCode <= 113 /* NumpadDivide */) { + return null; + } + switch (keyCode) { + case 16 /* UpArrow */: + return "Up"; + case 18 /* DownArrow */: + return "Down"; + case 15 /* LeftArrow */: + return "Left"; + case 17 /* RightArrow */: + return "Right"; + } + return uiMap.keyCodeToStr(keyCode); + } + KeyCodeUtils2.toElectronAccelerator = toElectronAccelerator; +})(KeyCodeUtils || (KeyCodeUtils = {})); + +// ../../../../../base/common/keybindings.ts +function decodeKeybinding(keybinding, OS2) { + if (typeof keybinding === "number") { + if (keybinding === 0) { + return null; + } + const firstChord = (keybinding & 65535) >>> 0; + const secondChord = (keybinding & 4294901760) >>> 16; + if (secondChord !== 0) { + return new Keybinding([ + createSimpleKeybinding(firstChord, OS2), + createSimpleKeybinding(secondChord, OS2) + ]); + } + return new Keybinding([createSimpleKeybinding(firstChord, OS2)]); + } else { + const chords = []; + for (let i = 0; i < keybinding.length; i++) { + chords.push(createSimpleKeybinding(keybinding[i], OS2)); + } + return new Keybinding(chords); + } +} +function createSimpleKeybinding(keybinding, OS2) { + const ctrlCmd = keybinding & 2048 /* CtrlCmd */ ? true : false; + const winCtrl = keybinding & 256 /* WinCtrl */ ? true : false; + const ctrlKey = OS2 === 2 /* Macintosh */ ? winCtrl : ctrlCmd; + const shiftKey = keybinding & 1024 /* Shift */ ? true : false; + const altKey = keybinding & 512 /* Alt */ ? true : false; + const metaKey = OS2 === 2 /* Macintosh */ ? ctrlCmd : winCtrl; + const keyCode = keybinding & 255 /* KeyCode */; + return new KeyCodeChord(ctrlKey, shiftKey, altKey, metaKey, keyCode); +} +var KeyCodeChord = class _KeyCodeChord { + constructor(ctrlKey, shiftKey, altKey, metaKey, keyCode) { + this.ctrlKey = ctrlKey; + this.shiftKey = shiftKey; + this.altKey = altKey; + this.metaKey = metaKey; + this.keyCode = keyCode; + } + equals(other) { + return other instanceof _KeyCodeChord && this.ctrlKey === other.ctrlKey && this.shiftKey === other.shiftKey && this.altKey === other.altKey && this.metaKey === other.metaKey && this.keyCode === other.keyCode; + } + getHashCode() { + const ctrl = this.ctrlKey ? "1" : "0"; + const shift2 = this.shiftKey ? "1" : "0"; + const alt = this.altKey ? "1" : "0"; + const meta = this.metaKey ? "1" : "0"; + return `K${ctrl}${shift2}${alt}${meta}${this.keyCode}`; + } + isModifierKey() { + return this.keyCode === 0 /* Unknown */ || this.keyCode === 5 /* Ctrl */ || this.keyCode === 57 /* Meta */ || this.keyCode === 6 /* Alt */ || this.keyCode === 4 /* Shift */; + } + toKeybinding() { + return new Keybinding([this]); + } + /** + * Does this keybinding refer to the key code of a modifier and it also has the modifier flag? + */ + isDuplicateModifierCase() { + return this.ctrlKey && this.keyCode === 5 /* Ctrl */ || this.shiftKey && this.keyCode === 4 /* Shift */ || this.altKey && this.keyCode === 6 /* Alt */ || this.metaKey && this.keyCode === 57 /* Meta */; + } +}; +var Keybinding = class { + constructor(chords) { + if (chords.length === 0) { + throw illegalArgument(`chords`); + } + this.chords = chords; + } + getHashCode() { + let result = ""; + for (let i = 0, len = this.chords.length; i < len; i++) { + if (i !== 0) { + result += ";"; + } + result += this.chords[i].getHashCode(); + } + return result; + } + equals(other) { + if (other === null) { + return false; + } + if (this.chords.length !== other.chords.length) { + return false; + } + for (let i = 0; i < this.chords.length; i++) { + if (!this.chords[i].equals(other.chords[i])) { + return false; + } + } + return true; + } +}; + +// ../../../../../base/browser/keyboardEvent.ts +function extractKeyCode(e) { + if (e.charCode) { + const char = String.fromCharCode(e.charCode).toUpperCase(); + return KeyCodeUtils.fromString(char); + } + const keyCode = e.keyCode; + if (keyCode === 3) { + return 7 /* PauseBreak */; + } else if (isFirefox2) { + switch (keyCode) { + case 59: + return 85 /* Semicolon */; + case 60: + if (isLinux) { + return 97 /* IntlBackslash */; + } + break; + case 61: + return 86 /* Equal */; + // based on: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode#numpad_keys + case 107: + return 109 /* NumpadAdd */; + case 109: + return 111 /* NumpadSubtract */; + case 173: + return 88 /* Minus */; + case 224: + if (isMacintosh) { + return 57 /* Meta */; + } + break; + } + } else if (isWebKit) { + if (isMacintosh && keyCode === 93) { + return 57 /* Meta */; + } else if (!isMacintosh && keyCode === 92) { + return 57 /* Meta */; + } + } + return EVENT_KEY_CODE_MAP[keyCode] || 0 /* Unknown */; +} +var ctrlKeyMod = isMacintosh ? 256 /* WinCtrl */ : 2048 /* CtrlCmd */; +var altKeyMod = 512 /* Alt */; +var shiftKeyMod = 1024 /* Shift */; +var metaKeyMod = isMacintosh ? 2048 /* CtrlCmd */ : 256 /* WinCtrl */; +var StandardKeyboardEvent = class { + constructor(source) { + this._standardKeyboardEventBrand = true; + const e = source; + this.browserEvent = e; + this.target = e.target; + this.ctrlKey = e.ctrlKey; + this.shiftKey = e.shiftKey; + this.altKey = e.altKey; + this.metaKey = e.metaKey; + this.altGraphKey = e.getModifierState?.("AltGraph"); + this.keyCode = extractKeyCode(e); + this.code = e.code; + this.ctrlKey = this.ctrlKey || this.keyCode === 5 /* Ctrl */; + this.altKey = this.altKey || this.keyCode === 6 /* Alt */; + this.shiftKey = this.shiftKey || this.keyCode === 4 /* Shift */; + this.metaKey = this.metaKey || this.keyCode === 57 /* Meta */; + this._asKeybinding = this._computeKeybinding(); + this._asKeyCodeChord = this._computeKeyCodeChord(); + } + preventDefault() { + if (this.browserEvent && this.browserEvent.preventDefault) { + this.browserEvent.preventDefault(); + } + } + stopPropagation() { + if (this.browserEvent && this.browserEvent.stopPropagation) { + this.browserEvent.stopPropagation(); + } + } + toKeyCodeChord() { + return this._asKeyCodeChord; + } + equals(other) { + return this._asKeybinding === other; + } + _computeKeybinding() { + let key = 0 /* Unknown */; + if (this.keyCode !== 5 /* Ctrl */ && this.keyCode !== 4 /* Shift */ && this.keyCode !== 6 /* Alt */ && this.keyCode !== 57 /* Meta */) { + key = this.keyCode; + } + let result = 0; + if (this.ctrlKey) { + result |= ctrlKeyMod; + } + if (this.altKey) { + result |= altKeyMod; + } + if (this.shiftKey) { + result |= shiftKeyMod; + } + if (this.metaKey) { + result |= metaKeyMod; + } + result |= key; + return result; + } + _computeKeyCodeChord() { + let key = 0 /* Unknown */; + if (this.keyCode !== 5 /* Ctrl */ && this.keyCode !== 4 /* Shift */ && this.keyCode !== 6 /* Alt */ && this.keyCode !== 57 /* Meta */) { + key = this.keyCode; + } + return new KeyCodeChord(this.ctrlKey, this.shiftKey, this.altKey, this.metaKey, key); + } +}; + +// ../../../../../base/browser/iframe.ts +var sameOriginWindowChainCache = /* @__PURE__ */ new WeakMap(); +function getParentWindowIfSameOrigin(w) { + if (!w.parent || w.parent === w) { + return null; + } + try { + const location = w.location; + const parentLocation = w.parent.location; + if (location.origin !== "null" && parentLocation.origin !== "null" && location.origin !== parentLocation.origin) { + return null; + } + } catch (e) { + return null; + } + return w.parent; +} +var IframeUtils = class { + /** + * Returns a chain of embedded windows with the same origin (which can be accessed programmatically). + * Having a chain of length 1 might mean that the current execution environment is running outside of an iframe or inside an iframe embedded in a window with a different origin. + */ + static getSameOriginWindowChain(targetWindow) { + let windowChainCache = sameOriginWindowChainCache.get(targetWindow); + if (!windowChainCache) { + windowChainCache = []; + sameOriginWindowChainCache.set(targetWindow, windowChainCache); + let w = targetWindow; + let parent; + do { + parent = getParentWindowIfSameOrigin(w); + if (parent) { + windowChainCache.push({ + window: new WeakRef(w), + iframeElement: w.frameElement || null + }); + } else { + windowChainCache.push({ + window: new WeakRef(w), + iframeElement: null + }); + } + w = parent; + } while (w); + } + return windowChainCache.slice(0); + } + /** + * Returns the position of `childWindow` relative to `ancestorWindow` + */ + static getPositionOfChildWindowRelativeToAncestorWindow(childWindow, ancestorWindow) { + if (!ancestorWindow || childWindow === ancestorWindow) { + return { + top: 0, + left: 0 + }; + } + let top = 0, left = 0; + const windowChain = this.getSameOriginWindowChain(childWindow); + for (const windowChainEl of windowChain) { + const windowInChain = windowChainEl.window.deref(); + top += windowInChain?.scrollY ?? 0; + left += windowInChain?.scrollX ?? 0; + if (windowInChain === ancestorWindow) { + break; + } + if (!windowChainEl.iframeElement) { + break; + } + const boundingRect = windowChainEl.iframeElement.getBoundingClientRect(); + top += boundingRect.top; + left += boundingRect.left; + } + return { + top, + left + }; + } +}; + +// ../../../../../base/browser/mouseEvent.ts +var StandardMouseEvent = class { + constructor(targetWindow, e) { + this.timestamp = Date.now(); + this.browserEvent = e; + this.leftButton = e.button === 0; + this.middleButton = e.button === 1; + this.rightButton = e.button === 2; + this.buttons = e.buttons; + this.target = e.target; + this.detail = e.detail || 1; + if (e.type === "dblclick") { + this.detail = 2; + } + this.ctrlKey = e.ctrlKey; + this.shiftKey = e.shiftKey; + this.altKey = e.altKey; + this.metaKey = e.metaKey; + if (typeof e.pageX === "number") { + this.posx = e.pageX; + this.posy = e.pageY; + } else { + this.posx = e.clientX + this.target.ownerDocument.body.scrollLeft + this.target.ownerDocument.documentElement.scrollLeft; + this.posy = e.clientY + this.target.ownerDocument.body.scrollTop + this.target.ownerDocument.documentElement.scrollTop; + } + const iframeOffsets = IframeUtils.getPositionOfChildWindowRelativeToAncestorWindow(targetWindow, e.view); + this.posx -= iframeOffsets.left; + this.posy -= iframeOffsets.top; + } + preventDefault() { + this.browserEvent.preventDefault(); + } + stopPropagation() { + this.browserEvent.stopPropagation(); + } +}; +var StandardWheelEvent = class { + constructor(e, deltaX = 0, deltaY = 0) { + this.browserEvent = e || null; + this.target = e ? e.target || e.targetNode || e.srcElement : null; + this.deltaY = deltaY; + this.deltaX = deltaX; + let shouldFactorDPR = false; + if (isChrome2) { + const chromeVersionMatch = navigator.userAgent.match(/Chrome\/(\d+)/); + const chromeMajorVersion = chromeVersionMatch ? parseInt(chromeVersionMatch[1]) : 123; + shouldFactorDPR = chromeMajorVersion <= 122; + } + if (e) { + const e1 = e; + const e2 = e; + const devicePixelRatio = e.view?.devicePixelRatio || 1; + if (typeof e1.wheelDeltaY !== "undefined") { + if (shouldFactorDPR) { + this.deltaY = e1.wheelDeltaY / (120 * devicePixelRatio); + } else { + this.deltaY = e1.wheelDeltaY / 120; + } + } else if (typeof e2.VERTICAL_AXIS !== "undefined" && e2.axis === e2.VERTICAL_AXIS) { + this.deltaY = -e2.detail / 3; + } else if (e.type === "wheel") { + const ev = e; + if (ev.deltaMode === ev.DOM_DELTA_LINE) { + if (isFirefox2 && !isMacintosh) { + this.deltaY = -e.deltaY / 3; + } else { + this.deltaY = -e.deltaY; + } + } else { + this.deltaY = -e.deltaY / 40; + } + } + if (typeof e1.wheelDeltaX !== "undefined") { + if (isSafari2 && isWindows) { + this.deltaX = -(e1.wheelDeltaX / 120); + } else if (shouldFactorDPR) { + this.deltaX = e1.wheelDeltaX / (120 * devicePixelRatio); + } else { + this.deltaX = e1.wheelDeltaX / 120; + } + } else if (typeof e2.HORIZONTAL_AXIS !== "undefined" && e2.axis === e2.HORIZONTAL_AXIS) { + this.deltaX = -e.detail / 3; + } else if (e.type === "wheel") { + const ev = e; + if (ev.deltaMode === ev.DOM_DELTA_LINE) { + if (isFirefox2 && !isMacintosh) { + this.deltaX = -e.deltaX / 3; + } else { + this.deltaX = -e.deltaX; + } + } else { + this.deltaX = -e.deltaX / 40; + } + } + if (this.deltaY === 0 && this.deltaX === 0 && e.wheelDelta) { + if (shouldFactorDPR) { + this.deltaY = e.wheelDelta / (120 * devicePixelRatio); + } else { + this.deltaY = e.wheelDelta / 120; + } + } + } + } + preventDefault() { + this.browserEvent?.preventDefault(); + } + stopPropagation() { + this.browserEvent?.stopPropagation(); + } +}; + +// ../../../../../base/browser/dompurify/dompurify.js +var { + entries, + setPrototypeOf, + isFrozen, + getPrototypeOf, + getOwnPropertyDescriptor +} = Object; +var { + freeze, + seal, + create +} = Object; +var { + apply, + construct +} = typeof Reflect !== "undefined" && Reflect; +if (!apply) { + apply = function apply2(fun, thisValue, args) { + return fun.apply(thisValue, args); + }; +} +if (!freeze) { + freeze = function freeze2(x) { + return x; + }; +} +if (!seal) { + seal = function seal2(x) { + return x; + }; +} +if (!construct) { + construct = function construct2(Func, args) { + return new Func(...args); + }; +} +var arrayForEach = unapply(Array.prototype.forEach); +var arrayPop = unapply(Array.prototype.pop); +var arrayPush = unapply(Array.prototype.push); +var stringToLowerCase = unapply(String.prototype.toLowerCase); +var stringToString = unapply(String.prototype.toString); +var stringMatch = unapply(String.prototype.match); +var stringReplace = unapply(String.prototype.replace); +var stringIndexOf = unapply(String.prototype.indexOf); +var stringTrim = unapply(String.prototype.trim); +var regExpTest = unapply(RegExp.prototype.test); +var typeErrorCreate = unconstruct(TypeError); +function unapply(func) { + return function(thisArg) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + return apply(func, thisArg, args); + }; +} +function unconstruct(func) { + return function() { + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + return construct(func, args); + }; +} +function addToSet(set, array, transformCaseFunc) { + var _transformCaseFunc; + transformCaseFunc = (_transformCaseFunc = transformCaseFunc) !== null && _transformCaseFunc !== void 0 ? _transformCaseFunc : stringToLowerCase; + if (setPrototypeOf) { + setPrototypeOf(set, null); + } + let l = array.length; + while (l--) { + let element = array[l]; + if (typeof element === "string") { + const lcElement = transformCaseFunc(element); + if (lcElement !== element) { + if (!isFrozen(array)) { + array[l] = lcElement; + } + element = lcElement; + } + } + set[element] = true; + } + return set; +} +function clone(object) { + const newObject = create(null); + for (const [property, value] of entries(object)) { + newObject[property] = value; + } + return newObject; +} +function lookupGetter(object, prop) { + while (object !== null) { + const desc = getOwnPropertyDescriptor(object, prop); + if (desc) { + if (desc.get) { + return unapply(desc.get); + } + if (typeof desc.value === "function") { + return unapply(desc.value); + } + } + object = getPrototypeOf(object); + } + function fallbackValue(element) { + console.warn("fallback value for", element); + return null; + } + return fallbackValue; +} +var 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"]); +var 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"]); +var svgFilters = freeze(["feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feDistantLight", "feDropShadow", "feFlood", "feFuncA", "feFuncB", "feFuncG", "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode", "feMorphology", "feOffset", "fePointLight", "feSpecularLighting", "feSpotLight", "feTile", "feTurbulence"]); +var svgDisallowed = freeze(["animate", "color-profile", "cursor", "discard", "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"]); +var 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", "mprescripts"]); +var mathMlDisallowed = freeze(["maction", "maligngroup", "malignmark", "mlongdiv", "mscarries", "mscarry", "msgroup", "mstack", "msline", "msrow", "semantics", "annotation", "annotation-xml", "mprescripts", "none"]); +var text = freeze(["#text"]); +var 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"]); +var 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"]); +var 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"]); +var xml = freeze(["xlink:href", "xml:id", "xlink:title", "xml:space", "xmlns:xlink"]); +var MUSTACHE_EXPR = seal(/\{\{[\w\W]*|[\w\W]*\}\}/gm); +var ERB_EXPR = seal(/<%[\w\W]*|[\w\W]*%>/gm); +var TMPLIT_EXPR = seal(/\${[\w\W]*}/gm); +var DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]/); +var ARIA_ATTR = seal(/^aria-[\-\w]+$/); +var IS_ALLOWED_URI = seal( + /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i + // eslint-disable-line no-useless-escape +); +var IS_SCRIPT_OR_DATA = seal(/^(?:\w+script|data):/i); +var ATTR_WHITESPACE = seal( + /[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g + // eslint-disable-line no-control-regex +); +var DOCTYPE_NAME = seal(/^html$/i); +var EXPRESSIONS = /* @__PURE__ */ Object.freeze({ + __proto__: null, + MUSTACHE_EXPR, + ERB_EXPR, + TMPLIT_EXPR, + DATA_ATTR, + ARIA_ATTR, + IS_ALLOWED_URI, + IS_SCRIPT_OR_DATA, + ATTR_WHITESPACE, + DOCTYPE_NAME +}); +var getGlobal = () => typeof window === "undefined" ? null : window; +var _createTrustedTypesPolicy = function _createTrustedTypesPolicy2(trustedTypes, purifyHostElement) { + if (typeof trustedTypes !== "object" || typeof trustedTypes.createPolicy !== "function") { + return null; + } + let suffix = null; + const ATTR_NAME = "data-tt-policy-suffix"; + if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) { + suffix = purifyHostElement.getAttribute(ATTR_NAME); + } + const policyName = "dompurify" + (suffix ? "#" + suffix : ""); + try { + return trustedTypes.createPolicy(policyName, { + createHTML(html2) { + return html2; + }, + createScriptURL(scriptUrl) { + return scriptUrl; + } + }); + } catch (_) { + console.warn("TrustedTypes policy " + policyName + " could not be created."); + return null; + } +}; +function createDOMPurify() { + let window2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getGlobal(); + const DOMPurify = (root) => createDOMPurify(root); + DOMPurify.version = "3.0.5"; + DOMPurify.removed = []; + if (!window2 || !window2.document || window2.document.nodeType !== 9) { + DOMPurify.isSupported = false; + return DOMPurify; + } + const originalDocument = window2.document; + const currentScript = originalDocument.currentScript; + let { + document: document2 + } = window2; + const { + DocumentFragment, + HTMLTemplateElement, + Node: Node3, + Element: Element2, + NodeFilter, + NamedNodeMap = window2.NamedNodeMap || window2.MozNamedAttrMap, + HTMLFormElement, + DOMParser: DOMParser2, + trustedTypes + } = window2; + const ElementPrototype = Element2.prototype; + const cloneNode = lookupGetter(ElementPrototype, "cloneNode"); + const getNextSibling = lookupGetter(ElementPrototype, "nextSibling"); + const getChildNodes = lookupGetter(ElementPrototype, "childNodes"); + const getParentNode = lookupGetter(ElementPrototype, "parentNode"); + if (typeof HTMLTemplateElement === "function") { + const template = document2.createElement("template"); + if (template.content && template.content.ownerDocument) { + document2 = template.content.ownerDocument; + } + } + let trustedTypesPolicy; + let emptyHTML = ""; + const { + implementation, + createNodeIterator, + createDocumentFragment, + getElementsByTagName + } = document2; + const { + importNode + } = originalDocument; + let hooks = {}; + DOMPurify.isSupported = typeof entries === "function" && typeof getParentNode === "function" && implementation && implementation.createHTMLDocument !== void 0; + const { + MUSTACHE_EXPR: MUSTACHE_EXPR2, + ERB_EXPR: ERB_EXPR2, + TMPLIT_EXPR: TMPLIT_EXPR2, + DATA_ATTR: DATA_ATTR2, + ARIA_ATTR: ARIA_ATTR2, + IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA2, + ATTR_WHITESPACE: ATTR_WHITESPACE2 + } = EXPRESSIONS; + let { + IS_ALLOWED_URI: IS_ALLOWED_URI$1 + } = EXPRESSIONS; + let ALLOWED_TAGS = null; + const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]); + let ALLOWED_ATTR = null; + const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]); + let CUSTOM_ELEMENT_HANDLING = Object.seal(Object.create(null, { + tagNameCheck: { + writable: true, + configurable: false, + enumerable: true, + value: null + }, + attributeNameCheck: { + writable: true, + configurable: false, + enumerable: true, + value: null + }, + allowCustomizedBuiltInElements: { + writable: true, + configurable: false, + enumerable: true, + value: false + } + })); + let FORBID_TAGS = null; + let FORBID_ATTR = null; + let ALLOW_ARIA_ATTR = true; + let ALLOW_DATA_ATTR = true; + let ALLOW_UNKNOWN_PROTOCOLS = false; + let ALLOW_SELF_CLOSE_IN_ATTR = true; + let SAFE_FOR_TEMPLATES = false; + let WHOLE_DOCUMENT = false; + let SET_CONFIG = false; + let FORCE_BODY = false; + let RETURN_DOM = false; + let RETURN_DOM_FRAGMENT = false; + let RETURN_TRUSTED_TYPE = false; + let SANITIZE_DOM = true; + let SANITIZE_NAMED_PROPS = false; + const SANITIZE_NAMED_PROPS_PREFIX = "user-content-"; + let KEEP_CONTENT = true; + let IN_PLACE = false; + let USE_PROFILES = {}; + let FORBID_CONTENTS = null; + const 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"]); + let DATA_URI_TAGS = null; + const DEFAULT_DATA_URI_TAGS = addToSet({}, ["audio", "video", "img", "source", "image", "track"]); + let URI_SAFE_ATTRIBUTES = null; + const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ["alt", "class", "for", "id", "label", "name", "pattern", "placeholder", "role", "summary", "title", "value", "style", "xmlns"]); + const MATHML_NAMESPACE = "http://www.w3.org/1998/Math/MathML"; + const SVG_NAMESPACE = "http://www.w3.org/2000/svg"; + const HTML_NAMESPACE = "http://www.w3.org/1999/xhtml"; + let NAMESPACE = HTML_NAMESPACE; + let IS_EMPTY_INPUT = false; + let ALLOWED_NAMESPACES = null; + const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString); + let PARSER_MEDIA_TYPE; + const SUPPORTED_PARSER_MEDIA_TYPES = ["application/xhtml+xml", "text/html"]; + const DEFAULT_PARSER_MEDIA_TYPE = "text/html"; + let transformCaseFunc; + let CONFIG = null; + const formElement = document2.createElement("form"); + const isRegexOrFunction = function isRegexOrFunction2(testValue) { + return testValue instanceof RegExp || testValue instanceof Function; + }; + const _parseConfig = function _parseConfig2(cfg) { + if (CONFIG && CONFIG === cfg) { + return; + } + if (!cfg || typeof cfg !== "object") { + cfg = {}; + } + cfg = clone(cfg); + PARSER_MEDIA_TYPE = // eslint-disable-next-line unicorn/prefer-includes + SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE; + transformCaseFunc = PARSER_MEDIA_TYPE === "application/xhtml+xml" ? stringToString : stringToLowerCase; + ALLOWED_TAGS = "ALLOWED_TAGS" in cfg ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS; + ALLOWED_ATTR = "ALLOWED_ATTR" in cfg ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR; + ALLOWED_NAMESPACES = "ALLOWED_NAMESPACES" in cfg ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES; + URI_SAFE_ATTRIBUTES = "ADD_URI_SAFE_ATTR" in cfg ? addToSet( + clone(DEFAULT_URI_SAFE_ATTRIBUTES), + // eslint-disable-line indent + cfg.ADD_URI_SAFE_ATTR, + // eslint-disable-line indent + transformCaseFunc + // eslint-disable-line indent + ) : DEFAULT_URI_SAFE_ATTRIBUTES; + DATA_URI_TAGS = "ADD_DATA_URI_TAGS" in cfg ? addToSet( + clone(DEFAULT_DATA_URI_TAGS), + // eslint-disable-line indent + cfg.ADD_DATA_URI_TAGS, + // eslint-disable-line indent + transformCaseFunc + // eslint-disable-line indent + ) : DEFAULT_DATA_URI_TAGS; + FORBID_CONTENTS = "FORBID_CONTENTS" in cfg ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS; + FORBID_TAGS = "FORBID_TAGS" in cfg ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {}; + FORBID_ATTR = "FORBID_ATTR" in cfg ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {}; + USE_PROFILES = "USE_PROFILES" in cfg ? cfg.USE_PROFILES : false; + ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; + ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; + ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; + ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; + SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; + WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; + RETURN_DOM = cfg.RETURN_DOM || false; + RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; + RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; + FORCE_BODY = cfg.FORCE_BODY || false; + SANITIZE_DOM = cfg.SANITIZE_DOM !== false; + SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; + KEEP_CONTENT = cfg.KEEP_CONTENT !== false; + IN_PLACE = cfg.IN_PLACE || false; + IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI; + NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE; + CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {}; + if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) { + CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck; + } + if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) { + CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck; + } + if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === "boolean") { + CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements; + } + if (SAFE_FOR_TEMPLATES) { + ALLOW_DATA_ATTR = false; + } + if (RETURN_DOM_FRAGMENT) { + RETURN_DOM = true; + } + if (USE_PROFILES) { + ALLOWED_TAGS = addToSet({}, [...text]); + ALLOWED_ATTR = []; + if (USE_PROFILES.html === true) { + addToSet(ALLOWED_TAGS, html$1); + addToSet(ALLOWED_ATTR, html); + } + if (USE_PROFILES.svg === true) { + addToSet(ALLOWED_TAGS, svg$1); + addToSet(ALLOWED_ATTR, svg); + addToSet(ALLOWED_ATTR, xml); + } + if (USE_PROFILES.svgFilters === true) { + addToSet(ALLOWED_TAGS, svgFilters); + addToSet(ALLOWED_ATTR, svg); + addToSet(ALLOWED_ATTR, xml); + } + if (USE_PROFILES.mathMl === true) { + addToSet(ALLOWED_TAGS, mathMl$1); + addToSet(ALLOWED_ATTR, mathMl); + addToSet(ALLOWED_ATTR, xml); + } + } + if (cfg.ADD_TAGS) { + if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) { + ALLOWED_TAGS = clone(ALLOWED_TAGS); + } + addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc); + } + if (cfg.ADD_ATTR) { + if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) { + ALLOWED_ATTR = clone(ALLOWED_ATTR); + } + addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc); + } + if (cfg.ADD_URI_SAFE_ATTR) { + addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc); + } + if (cfg.FORBID_CONTENTS) { + if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) { + FORBID_CONTENTS = clone(FORBID_CONTENTS); + } + addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc); + } + if (KEEP_CONTENT) { + ALLOWED_TAGS["#text"] = true; + } + if (WHOLE_DOCUMENT) { + addToSet(ALLOWED_TAGS, ["html", "head", "body"]); + } + if (ALLOWED_TAGS.table) { + addToSet(ALLOWED_TAGS, ["tbody"]); + delete FORBID_TAGS.tbody; + } + if (cfg.TRUSTED_TYPES_POLICY) { + if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== "function") { + throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.'); + } + if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== "function") { + throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.'); + } + trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY; + emptyHTML = trustedTypesPolicy.createHTML(""); + } else { + if (trustedTypesPolicy === void 0) { + trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript); + } + if (trustedTypesPolicy !== null && typeof emptyHTML === "string") { + emptyHTML = trustedTypesPolicy.createHTML(""); + } + } + if (freeze) { + freeze(cfg); + } + CONFIG = cfg; + }; + const MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ["mi", "mo", "mn", "ms", "mtext"]); + const HTML_INTEGRATION_POINTS = addToSet({}, ["foreignobject", "desc", "title", "annotation-xml"]); + const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ["title", "style", "font", "a", "script"]); + const ALL_SVG_TAGS = addToSet({}, svg$1); + addToSet(ALL_SVG_TAGS, svgFilters); + addToSet(ALL_SVG_TAGS, svgDisallowed); + const ALL_MATHML_TAGS = addToSet({}, mathMl$1); + addToSet(ALL_MATHML_TAGS, mathMlDisallowed); + const _checkValidNamespace = function _checkValidNamespace2(element) { + let parent = getParentNode(element); + if (!parent || !parent.tagName) { + parent = { + namespaceURI: NAMESPACE, + tagName: "template" + }; + } + const tagName = stringToLowerCase(element.tagName); + const parentTagName = stringToLowerCase(parent.tagName); + if (!ALLOWED_NAMESPACES[element.namespaceURI]) { + return false; + } + if (element.namespaceURI === SVG_NAMESPACE) { + if (parent.namespaceURI === HTML_NAMESPACE) { + return tagName === "svg"; + } + if (parent.namespaceURI === MATHML_NAMESPACE) { + return tagName === "svg" && (parentTagName === "annotation-xml" || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]); + } + return Boolean(ALL_SVG_TAGS[tagName]); + } + if (element.namespaceURI === MATHML_NAMESPACE) { + if (parent.namespaceURI === HTML_NAMESPACE) { + return tagName === "math"; + } + if (parent.namespaceURI === SVG_NAMESPACE) { + return tagName === "math" && HTML_INTEGRATION_POINTS[parentTagName]; + } + return Boolean(ALL_MATHML_TAGS[tagName]); + } + if (element.namespaceURI === HTML_NAMESPACE) { + if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) { + return false; + } + if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) { + return false; + } + return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]); + } + if (PARSER_MEDIA_TYPE === "application/xhtml+xml" && ALLOWED_NAMESPACES[element.namespaceURI]) { + return true; + } + return false; + }; + const _forceRemove = function _forceRemove2(node) { + arrayPush(DOMPurify.removed, { + element: node + }); + try { + node.parentNode.removeChild(node); + } catch (_) { + node.remove(); + } + }; + const _removeAttribute = function _removeAttribute2(name, node) { + try { + arrayPush(DOMPurify.removed, { + attribute: node.getAttributeNode(name), + from: node + }); + } catch (_) { + arrayPush(DOMPurify.removed, { + attribute: null, + from: node + }); + } + node.removeAttribute(name); + if (name === "is" && !ALLOWED_ATTR[name]) { + if (RETURN_DOM || RETURN_DOM_FRAGMENT) { + try { + _forceRemove(node); + } catch (_) { + } + } else { + try { + node.setAttribute(name, ""); + } catch (_) { + } + } + } + }; + const _initDocument = function _initDocument2(dirty) { + let doc; + let leadingWhitespace; + if (FORCE_BODY) { + dirty = "" + dirty; + } else { + const matches = stringMatch(dirty, /^[\r\n\t ]+/); + leadingWhitespace = matches && matches[0]; + } + if (PARSER_MEDIA_TYPE === "application/xhtml+xml" && NAMESPACE === HTML_NAMESPACE) { + dirty = '' + dirty + ""; + } + const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty; + if (NAMESPACE === HTML_NAMESPACE) { + try { + doc = new DOMParser2().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE); + } catch (_) { + } + } + if (!doc || !doc.documentElement) { + doc = implementation.createDocument(NAMESPACE, "template", null); + try { + doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload; + } catch (_) { + } + } + const body = doc.body || doc.documentElement; + if (dirty && leadingWhitespace) { + body.insertBefore(document2.createTextNode(leadingWhitespace), body.childNodes[0] || null); + } + if (NAMESPACE === HTML_NAMESPACE) { + return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? "html" : "body")[0]; + } + return WHOLE_DOCUMENT ? doc.documentElement : body; + }; + const _createIterator = function _createIterator2(root) { + return createNodeIterator.call( + root.ownerDocument || root, + root, + // eslint-disable-next-line no-bitwise + NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, + null, + false + ); + }; + const _isClobbered = function _isClobbered2(elm) { + 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"); + }; + const _isNode = function _isNode2(object) { + return typeof Node3 === "object" ? object instanceof Node3 : object && typeof object === "object" && typeof object.nodeType === "number" && typeof object.nodeName === "string"; + }; + const _executeHook = function _executeHook2(entryPoint, currentNode, data) { + if (!hooks[entryPoint]) { + return; + } + arrayForEach(hooks[entryPoint], (hook) => { + hook.call(DOMPurify, currentNode, data, CONFIG); + }); + }; + const _sanitizeElements = function _sanitizeElements2(currentNode) { + let content; + _executeHook("beforeSanitizeElements", currentNode, null); + if (_isClobbered(currentNode)) { + _forceRemove(currentNode); + return true; + } + const tagName = transformCaseFunc(currentNode.nodeName); + _executeHook("uponSanitizeElement", currentNode, { + tagName, + allowedTags: ALLOWED_TAGS + }); + if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\w]/g, currentNode.innerHTML) && regExpTest(/<[/\w]/g, currentNode.textContent)) { + _forceRemove(currentNode); + return true; + } + if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) { + if (!FORBID_TAGS[tagName] && _basicCustomElementTest(tagName)) { + if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) return false; + if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) return false; + } + if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) { + const parentNode = getParentNode(currentNode) || currentNode.parentNode; + const childNodes = getChildNodes(currentNode) || currentNode.childNodes; + if (childNodes && parentNode) { + const childCount = childNodes.length; + for (let i = childCount - 1; i >= 0; --i) { + parentNode.insertBefore(cloneNode(childNodes[i], true), getNextSibling(currentNode)); + } + } + } + _forceRemove(currentNode); + return true; + } + if (currentNode instanceof Element2 && !_checkValidNamespace(currentNode)) { + _forceRemove(currentNode); + return true; + } + if ((tagName === "noscript" || tagName === "noembed" || tagName === "noframes") && regExpTest(/<\/no(script|embed|frames)/i, currentNode.innerHTML)) { + _forceRemove(currentNode); + return true; + } + if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) { + content = currentNode.textContent; + content = stringReplace(content, MUSTACHE_EXPR2, " "); + content = stringReplace(content, ERB_EXPR2, " "); + content = stringReplace(content, TMPLIT_EXPR2, " "); + if (currentNode.textContent !== content) { + arrayPush(DOMPurify.removed, { + element: currentNode.cloneNode() + }); + currentNode.textContent = content; + } + } + _executeHook("afterSanitizeElements", currentNode, null); + return false; + }; + const _isValidAttribute = function _isValidAttribute2(lcTag, lcName, value) { + if (SANITIZE_DOM && (lcName === "id" || lcName === "name") && (value in document2 || value in formElement)) { + return false; + } + if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR2, lcName)) ; + else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR2, lcName)) ; + else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) { + if ( + // First condition does a very basic check if a) it's basically a valid custom element tagname AND + // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck + // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck + _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)) || // Alternative, second condition checks if it's an `is`-attribute, AND + // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck + 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)) + ) ; + else { + return false; + } + } else if (URI_SAFE_ATTRIBUTES[lcName]) ; + else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE2, ""))) ; + else if ((lcName === "src" || lcName === "xlink:href" || lcName === "href") && lcTag !== "script" && stringIndexOf(value, "data:") === 0 && DATA_URI_TAGS[lcTag]) ; + else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA2, stringReplace(value, ATTR_WHITESPACE2, ""))) ; + else if (value) { + return false; + } else ; + return true; + }; + const _basicCustomElementTest = function _basicCustomElementTest2(tagName) { + return tagName.indexOf("-") > 0; + }; + const _sanitizeAttributes = function _sanitizeAttributes2(currentNode) { + let attr; + let value; + let lcName; + let l; + _executeHook("beforeSanitizeAttributes", currentNode, null); + const { + attributes + } = currentNode; + if (!attributes) { + return; + } + const hookEvent = { + attrName: "", + attrValue: "", + keepAttr: true, + allowedAttributes: ALLOWED_ATTR + }; + l = attributes.length; + while (l--) { + attr = attributes[l]; + const { + name, + namespaceURI + } = attr; + value = name === "value" ? attr.value : stringTrim(attr.value); + lcName = transformCaseFunc(name); + hookEvent.attrName = lcName; + hookEvent.attrValue = value; + hookEvent.keepAttr = true; + hookEvent.forceKeepAttr = void 0; + _executeHook("uponSanitizeAttribute", currentNode, hookEvent); + value = hookEvent.attrValue; + if (hookEvent.forceKeepAttr) { + continue; + } + _removeAttribute(name, currentNode); + if (!hookEvent.keepAttr) { + continue; + } + if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\/>/i, value)) { + _removeAttribute(name, currentNode); + continue; + } + if (SAFE_FOR_TEMPLATES) { + value = stringReplace(value, MUSTACHE_EXPR2, " "); + value = stringReplace(value, ERB_EXPR2, " "); + value = stringReplace(value, TMPLIT_EXPR2, " "); + } + const lcTag = transformCaseFunc(currentNode.nodeName); + if (!_isValidAttribute(lcTag, lcName, value)) { + continue; + } + if (SANITIZE_NAMED_PROPS && (lcName === "id" || lcName === "name")) { + _removeAttribute(name, currentNode); + value = SANITIZE_NAMED_PROPS_PREFIX + value; + } + if (trustedTypesPolicy && typeof trustedTypes === "object" && typeof trustedTypes.getAttributeType === "function") { + if (namespaceURI) ; + else { + switch (trustedTypes.getAttributeType(lcTag, lcName)) { + case "TrustedHTML": { + value = trustedTypesPolicy.createHTML(value); + break; + } + case "TrustedScriptURL": { + value = trustedTypesPolicy.createScriptURL(value); + break; + } + } + } + } + try { + if (namespaceURI) { + currentNode.setAttributeNS(namespaceURI, name, value); + } else { + currentNode.setAttribute(name, value); + } + arrayPop(DOMPurify.removed); + } catch (_) { + } + } + _executeHook("afterSanitizeAttributes", currentNode, null); + }; + const _sanitizeShadowDOM = function _sanitizeShadowDOM2(fragment) { + let shadowNode; + const shadowIterator = _createIterator(fragment); + _executeHook("beforeSanitizeShadowDOM", fragment, null); + while (shadowNode = shadowIterator.nextNode()) { + _executeHook("uponSanitizeShadowNode", shadowNode, null); + if (_sanitizeElements(shadowNode)) { + continue; + } + if (shadowNode.content instanceof DocumentFragment) { + _sanitizeShadowDOM2(shadowNode.content); + } + _sanitizeAttributes(shadowNode); + } + _executeHook("afterSanitizeShadowDOM", fragment, null); + }; + DOMPurify.sanitize = function(dirty) { + let cfg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + let body; + let importedNode; + let currentNode; + let returnNode; + IS_EMPTY_INPUT = !dirty; + if (IS_EMPTY_INPUT) { + dirty = ""; + } + if (typeof dirty !== "string" && !_isNode(dirty)) { + if (typeof dirty.toString === "function") { + dirty = dirty.toString(); + if (typeof dirty !== "string") { + throw typeErrorCreate("dirty is not a string, aborting"); + } + } else { + throw typeErrorCreate("toString is not a function"); + } + } + if (!DOMPurify.isSupported) { + return dirty; + } + if (!SET_CONFIG) { + _parseConfig(cfg); + } + DOMPurify.removed = []; + if (typeof dirty === "string") { + IN_PLACE = false; + } + if (IN_PLACE) { + if (dirty.nodeName) { + const tagName = transformCaseFunc(dirty.nodeName); + if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) { + throw typeErrorCreate("root node is forbidden and cannot be sanitized in-place"); + } + } + } else if (dirty instanceof Node3) { + body = _initDocument(""); + importedNode = body.ownerDocument.importNode(dirty, true); + if (importedNode.nodeType === 1 && importedNode.nodeName === "BODY") { + body = importedNode; + } else if (importedNode.nodeName === "HTML") { + body = importedNode; + } else { + body.appendChild(importedNode); + } + } else { + if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && // eslint-disable-next-line unicorn/prefer-includes + dirty.indexOf("<") === -1) { + return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty; + } + body = _initDocument(dirty); + if (!body) { + return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : ""; + } + } + if (body && FORCE_BODY) { + _forceRemove(body.firstChild); + } + const nodeIterator = _createIterator(IN_PLACE ? dirty : body); + while (currentNode = nodeIterator.nextNode()) { + if (_sanitizeElements(currentNode)) { + continue; + } + if (currentNode.content instanceof DocumentFragment) { + _sanitizeShadowDOM(currentNode.content); + } + _sanitizeAttributes(currentNode); + } + if (IN_PLACE) { + return dirty; + } + if (RETURN_DOM) { + if (RETURN_DOM_FRAGMENT) { + returnNode = createDocumentFragment.call(body.ownerDocument); + while (body.firstChild) { + returnNode.appendChild(body.firstChild); + } + } else { + returnNode = body; + } + if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) { + returnNode = importNode.call(originalDocument, returnNode, true); + } + return returnNode; + } + let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML; + if (WHOLE_DOCUMENT && ALLOWED_TAGS["!doctype"] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) { + serializedHTML = "\n" + serializedHTML; + } + if (SAFE_FOR_TEMPLATES) { + serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR2, " "); + serializedHTML = stringReplace(serializedHTML, ERB_EXPR2, " "); + serializedHTML = stringReplace(serializedHTML, TMPLIT_EXPR2, " "); + } + return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML; + }; + DOMPurify.setConfig = function(cfg) { + _parseConfig(cfg); + SET_CONFIG = true; + }; + DOMPurify.clearConfig = function() { + CONFIG = null; + SET_CONFIG = false; + }; + DOMPurify.isValidAttribute = function(tag, attr, value) { + if (!CONFIG) { + _parseConfig({}); + } + const lcTag = transformCaseFunc(tag); + const lcName = transformCaseFunc(attr); + return _isValidAttribute(lcTag, lcName, value); + }; + DOMPurify.addHook = function(entryPoint, hookFunction) { + if (typeof hookFunction !== "function") { + return; + } + hooks[entryPoint] = hooks[entryPoint] || []; + arrayPush(hooks[entryPoint], hookFunction); + }; + DOMPurify.removeHook = function(entryPoint) { + if (hooks[entryPoint]) { + return arrayPop(hooks[entryPoint]); + } + }; + DOMPurify.removeHooks = function(entryPoint) { + if (hooks[entryPoint]) { + hooks[entryPoint] = []; + } + }; + DOMPurify.removeAllHooks = function() { + hooks = {}; + }; + return DOMPurify; +} +var purify = createDOMPurify(); +purify.version; +purify.isSupported; +var sanitize = purify.sanitize; +purify.setConfig; +purify.clearConfig; +purify.isValidAttribute; +var addHook = purify.addHook; +var removeHook = purify.removeHook; +purify.removeHooks; +purify.removeAllHooks; + +// ../../../../../base/common/hash.ts +function hash(obj) { + return doHash(obj, 0); +} +function doHash(obj, hashVal) { + switch (typeof obj) { + case "object": + if (obj === null) { + return numberHash(349, hashVal); + } else if (Array.isArray(obj)) { + return arrayHash(obj, hashVal); + } + return objectHash(obj, hashVal); + case "string": + return stringHash(obj, hashVal); + case "boolean": + return booleanHash(obj, hashVal); + case "number": + return numberHash(obj, hashVal); + case "undefined": + return numberHash(937, hashVal); + default: + return numberHash(617, hashVal); + } +} +function numberHash(val, initialHashVal) { + return (initialHashVal << 5) - initialHashVal + val | 0; +} +function booleanHash(b, initialHashVal) { + return numberHash(b ? 433 : 863, initialHashVal); +} +function stringHash(s, hashVal) { + hashVal = numberHash(149417, hashVal); + for (let i = 0, length = s.length; i < length; i++) { + hashVal = numberHash(s.charCodeAt(i), hashVal); + } + return hashVal; +} +function arrayHash(arr, initialHashVal) { + initialHashVal = numberHash(104579, initialHashVal); + return arr.reduce((hashVal, item) => doHash(item, hashVal), initialHashVal); +} +function objectHash(obj, initialHashVal) { + initialHashVal = numberHash(181387, initialHashVal); + return Object.keys(obj).sort().reduce((hashVal, key) => { + hashVal = stringHash(key, hashVal); + return doHash(obj[key], hashVal); + }, initialHashVal); +} +function leftRotate(value, bits, totalBits = 32) { + const delta = totalBits - bits; + const mask = ~((1 << delta) - 1); + return (value << bits | (mask & value) >>> delta) >>> 0; +} +function fill(dest, index = 0, count = dest.byteLength, value = 0) { + for (let i = 0; i < count; i++) { + dest[index + i] = value; + } +} +function leftPad(value, length, char = "0") { + while (value.length < length) { + value = char + value; + } + return value; +} +function toHexString(bufferOrValue, bitsize = 32) { + if (bufferOrValue instanceof ArrayBuffer) { + return Array.from(new Uint8Array(bufferOrValue)).map((b) => b.toString(16).padStart(2, "0")).join(""); + } + return leftPad((bufferOrValue >>> 0).toString(16), bitsize / 4); +} +(class _StringSHA1 { + constructor() { + // 80 * 4 = 320 + this._h0 = 1732584193; + this._h1 = 4023233417; + this._h2 = 2562383102; + this._h3 = 271733878; + this._h4 = 3285377520; + this._buff = new Uint8Array( + 64 /* BLOCK_SIZE */ + 3 + /* to fit any utf-8 */ + ); + this._buffDV = new DataView(this._buff.buffer); + this._buffLen = 0; + this._totalLen = 0; + this._leftoverHighSurrogate = 0; + this._finished = false; + } + static { + this._bigBlock32 = new DataView(new ArrayBuffer(320)); + } + update(str) { + const strLen = str.length; + if (strLen === 0) { + return; + } + const buff = this._buff; + let buffLen = this._buffLen; + let leftoverHighSurrogate = this._leftoverHighSurrogate; + let charCode; + let offset; + if (leftoverHighSurrogate !== 0) { + charCode = leftoverHighSurrogate; + offset = -1; + leftoverHighSurrogate = 0; + } else { + charCode = str.charCodeAt(0); + offset = 0; + } + while (true) { + let codePoint = charCode; + if (isHighSurrogate(charCode)) { + if (offset + 1 < strLen) { + const nextCharCode = str.charCodeAt(offset + 1); + if (isLowSurrogate(nextCharCode)) { + offset++; + codePoint = computeCodePoint(charCode, nextCharCode); + } else { + codePoint = 65533 /* UNICODE_REPLACEMENT */; + } + } else { + leftoverHighSurrogate = charCode; + break; + } + } else if (isLowSurrogate(charCode)) { + codePoint = 65533 /* UNICODE_REPLACEMENT */; + } + buffLen = this._push(buff, buffLen, codePoint); + offset++; + if (offset < strLen) { + charCode = str.charCodeAt(offset); + } else { + break; + } + } + this._buffLen = buffLen; + this._leftoverHighSurrogate = leftoverHighSurrogate; + } + _push(buff, buffLen, codePoint) { + if (codePoint < 128) { + buff[buffLen++] = codePoint; + } else if (codePoint < 2048) { + buff[buffLen++] = 192 | (codePoint & 1984) >>> 6; + buff[buffLen++] = 128 | (codePoint & 63) >>> 0; + } else if (codePoint < 65536) { + buff[buffLen++] = 224 | (codePoint & 61440) >>> 12; + buff[buffLen++] = 128 | (codePoint & 4032) >>> 6; + buff[buffLen++] = 128 | (codePoint & 63) >>> 0; + } else { + buff[buffLen++] = 240 | (codePoint & 1835008) >>> 18; + buff[buffLen++] = 128 | (codePoint & 258048) >>> 12; + buff[buffLen++] = 128 | (codePoint & 4032) >>> 6; + buff[buffLen++] = 128 | (codePoint & 63) >>> 0; + } + if (buffLen >= 64 /* BLOCK_SIZE */) { + this._step(); + buffLen -= 64 /* BLOCK_SIZE */; + this._totalLen += 64 /* BLOCK_SIZE */; + buff[0] = buff[64 /* BLOCK_SIZE */ + 0]; + buff[1] = buff[64 /* BLOCK_SIZE */ + 1]; + buff[2] = buff[64 /* BLOCK_SIZE */ + 2]; + } + return buffLen; + } + digest() { + if (!this._finished) { + this._finished = true; + if (this._leftoverHighSurrogate) { + this._leftoverHighSurrogate = 0; + this._buffLen = this._push(this._buff, this._buffLen, 65533 /* UNICODE_REPLACEMENT */); + } + this._totalLen += this._buffLen; + this._wrapUp(); + } + return toHexString(this._h0) + toHexString(this._h1) + toHexString(this._h2) + toHexString(this._h3) + toHexString(this._h4); + } + _wrapUp() { + this._buff[this._buffLen++] = 128; + fill(this._buff, this._buffLen); + if (this._buffLen > 56) { + this._step(); + fill(this._buff); + } + const ml = 8 * this._totalLen; + this._buffDV.setUint32(56, Math.floor(ml / 4294967296), false); + this._buffDV.setUint32(60, ml % 4294967296, false); + this._step(); + } + _step() { + const bigBlock32 = _StringSHA1._bigBlock32; + const data = this._buffDV; + for (let j = 0; j < 64; j += 4) { + bigBlock32.setUint32(j, data.getUint32(j, false), false); + } + for (let j = 64; j < 320; j += 4) { + bigBlock32.setUint32(j, leftRotate(bigBlock32.getUint32(j - 12, false) ^ bigBlock32.getUint32(j - 32, false) ^ bigBlock32.getUint32(j - 56, false) ^ bigBlock32.getUint32(j - 64, false), 1), false); + } + let a = this._h0; + let b = this._h1; + let c = this._h2; + let d = this._h3; + let e = this._h4; + let f, k; + let temp; + for (let j = 0; j < 80; j++) { + if (j < 20) { + f = b & c | ~b & d; + k = 1518500249; + } else if (j < 40) { + f = b ^ c ^ d; + k = 1859775393; + } else if (j < 60) { + f = b & c | b & d | c & d; + k = 2400959708; + } else { + f = b ^ c ^ d; + k = 3395469782; + } + temp = leftRotate(a, 5) + f + e + k + bigBlock32.getUint32(j * 4, false) & 4294967295; + e = d; + d = c; + c = leftRotate(b, 30); + b = a; + a = temp; + } + this._h0 = this._h0 + a & 4294967295; + this._h1 = this._h1 + b & 4294967295; + this._h2 = this._h2 + c & 4294967295; + this._h3 = this._h3 + d & 4294967295; + this._h4 = this._h4 + e & 4294967295; + } +}); + +// ../../../../../base/common/numbers.ts +function clamp(value, min, max) { + return Math.min(Math.max(value, min), max); +} + +// ../../../../../base/browser/dom.ts +var { + registerWindow, + getWindow, + getDocument, + getWindows, + getWindowsCount, + getWindowId, + getWindowById, + hasWindow, + onDidRegisterWindow, + onWillUnregisterWindow, + onDidUnregisterWindow +} = function() { + const windows = /* @__PURE__ */ new Map(); + ensureCodeWindow(mainWindow, 1); + const mainWindowRegistration = { window: mainWindow, disposables: new DisposableStore() }; + windows.set(mainWindow.vscodeWindowId, mainWindowRegistration); + const onDidRegisterWindow2 = new Emitter(); + const onDidUnregisterWindow2 = new Emitter(); + const onWillUnregisterWindow2 = new Emitter(); + function getWindowById2(windowId, fallbackToMain) { + const window2 = typeof windowId === "number" ? windows.get(windowId) : void 0; + return window2 ?? (fallbackToMain ? mainWindowRegistration : void 0); + } + return { + onDidRegisterWindow: onDidRegisterWindow2.event, + onWillUnregisterWindow: onWillUnregisterWindow2.event, + onDidUnregisterWindow: onDidUnregisterWindow2.event, + registerWindow(window2) { + if (windows.has(window2.vscodeWindowId)) { + return Disposable.None; + } + const disposables = new DisposableStore(); + const registeredWindow = { + window: window2, + disposables: disposables.add(new DisposableStore()) + }; + windows.set(window2.vscodeWindowId, registeredWindow); + disposables.add(toDisposable(() => { + windows.delete(window2.vscodeWindowId); + onDidUnregisterWindow2.fire(window2); + })); + disposables.add(addDisposableListener(window2, EventType.BEFORE_UNLOAD, () => { + onWillUnregisterWindow2.fire(window2); + })); + onDidRegisterWindow2.fire(registeredWindow); + return disposables; + }, + getWindows() { + return windows.values(); + }, + getWindowsCount() { + return windows.size; + }, + getWindowId(targetWindow) { + return targetWindow.vscodeWindowId; + }, + hasWindow(windowId) { + return windows.has(windowId); + }, + getWindowById: getWindowById2, + getWindow(e) { + const candidateNode = e; + if (candidateNode?.ownerDocument?.defaultView) { + return candidateNode.ownerDocument.defaultView.window; + } + const candidateEvent = e; + if (candidateEvent?.view) { + return candidateEvent.view.window; + } + return mainWindow; + }, + getDocument(e) { + const candidateNode = e; + return getWindow(candidateNode).document; + } + }; +}(); +function clearNode(node) { + while (node.firstChild) { + node.firstChild.remove(); + } +} +var DomListener = class { + constructor(node, type, handler, options2) { + this._node = node; + this._type = type; + this._handler = handler; + this._options = options2 || false; + this._node.addEventListener(this._type, this._handler, this._options); + } + dispose() { + if (!this._handler) { + return; + } + this._node.removeEventListener(this._type, this._handler, this._options); + this._node = null; + this._handler = null; + } +}; +function addDisposableListener(node, type, handler, useCaptureOrOptions) { + return new DomListener(node, type, handler, useCaptureOrOptions); +} +function _wrapAsStandardMouseEvent(targetWindow, handler) { + return function(e) { + return handler(new StandardMouseEvent(targetWindow, e)); + }; +} +function _wrapAsStandardKeyboardEvent(handler) { + return function(e) { + return handler(new StandardKeyboardEvent(e)); + }; +} +var addStandardDisposableListener = function addStandardDisposableListener2(node, type, handler, useCapture) { + let wrapHandler = handler; + if (type === "click" || type === "mousedown" || type === "contextmenu") { + wrapHandler = _wrapAsStandardMouseEvent(getWindow(node), handler); + } else if (type === "keydown" || type === "keypress" || type === "keyup") { + wrapHandler = _wrapAsStandardKeyboardEvent(handler); + } + return addDisposableListener(node, type, wrapHandler, useCapture); +}; +var scheduleAtNextAnimationFrame; +var WindowIntervalTimer = class extends IntervalTimer { + /** + * + * @param node The optional node from which the target window is determined + */ + constructor(node) { + super(); + this.defaultTarget = node && getWindow(node); + } + cancelAndSet(runner, interval, targetWindow) { + return super.cancelAndSet(runner, interval, targetWindow ?? this.defaultTarget); + } +}; +var AnimationFrameQueueItem = class { + constructor(runner, priority = 0) { + this._runner = runner; + this.priority = priority; + this._canceled = false; + } + dispose() { + this._canceled = true; + } + execute() { + if (this._canceled) { + return; + } + try { + this._runner(); + } catch (e) { + onUnexpectedError(e); + } + } + // Sort by priority (largest to lowest) + static sort(a, b) { + return b.priority - a.priority; + } +}; +(function() { + const NEXT_QUEUE = /* @__PURE__ */ new Map(); + const CURRENT_QUEUE = /* @__PURE__ */ new Map(); + const animFrameRequested = /* @__PURE__ */ new Map(); + const inAnimationFrameRunner = /* @__PURE__ */ new Map(); + const animationFrameRunner = (targetWindowId) => { + animFrameRequested.set(targetWindowId, false); + const currentQueue = NEXT_QUEUE.get(targetWindowId) ?? []; + CURRENT_QUEUE.set(targetWindowId, currentQueue); + NEXT_QUEUE.set(targetWindowId, []); + inAnimationFrameRunner.set(targetWindowId, true); + while (currentQueue.length > 0) { + currentQueue.sort(AnimationFrameQueueItem.sort); + const top = currentQueue.shift(); + top.execute(); + } + inAnimationFrameRunner.set(targetWindowId, false); + }; + scheduleAtNextAnimationFrame = (targetWindow, runner, priority = 0) => { + const targetWindowId = getWindowId(targetWindow); + const item = new AnimationFrameQueueItem(runner, priority); + let nextQueue = NEXT_QUEUE.get(targetWindowId); + if (!nextQueue) { + nextQueue = []; + NEXT_QUEUE.set(targetWindowId, nextQueue); + } + nextQueue.push(item); + if (!animFrameRequested.get(targetWindowId)) { + animFrameRequested.set(targetWindowId, true); + targetWindow.requestAnimationFrame(() => animationFrameRunner(targetWindowId)); + } + return item; + }; +})(); +function getComputedStyle(el) { + return getWindow(el).getComputedStyle(el, null); +} +var SizeUtils = class _SizeUtils { + // Adapted from WinJS + // Converts a CSS positioning string for the specified element to pixels. + static convertToPixels(element, value) { + return parseFloat(value) || 0; + } + static getDimension(element, cssPropertyName, jsPropertyName) { + const computedStyle = getComputedStyle(element); + const value = computedStyle ? computedStyle.getPropertyValue(cssPropertyName) : "0"; + return _SizeUtils.convertToPixels(element, value); + } + static getBorderLeftWidth(element) { + return _SizeUtils.getDimension(element, "border-left-width", "borderLeftWidth"); + } + static getBorderRightWidth(element) { + return _SizeUtils.getDimension(element, "border-right-width", "borderRightWidth"); + } + static getBorderTopWidth(element) { + return _SizeUtils.getDimension(element, "border-top-width", "borderTopWidth"); + } + static getBorderBottomWidth(element) { + return _SizeUtils.getDimension(element, "border-bottom-width", "borderBottomWidth"); + } + static getPaddingLeft(element) { + return _SizeUtils.getDimension(element, "padding-left", "paddingLeft"); + } + static getPaddingRight(element) { + return _SizeUtils.getDimension(element, "padding-right", "paddingRight"); + } + static getPaddingTop(element) { + return _SizeUtils.getDimension(element, "padding-top", "paddingTop"); + } + static getPaddingBottom(element) { + return _SizeUtils.getDimension(element, "padding-bottom", "paddingBottom"); + } + static getMarginLeft(element) { + return _SizeUtils.getDimension(element, "margin-left", "marginLeft"); + } + static getMarginTop(element) { + return _SizeUtils.getDimension(element, "margin-top", "marginTop"); + } + static getMarginRight(element) { + return _SizeUtils.getDimension(element, "margin-right", "marginRight"); + } + static getMarginBottom(element) { + return _SizeUtils.getDimension(element, "margin-bottom", "marginBottom"); + } +}; +var Dimension = class _Dimension { + constructor(width, height) { + this.width = width; + this.height = height; + } + static { + this.None = new _Dimension(0, 0); + } + with(width = this.width, height = this.height) { + if (width !== this.width || height !== this.height) { + return new _Dimension(width, height); + } else { + return this; + } + } + static is(obj) { + return typeof obj === "object" && typeof obj.height === "number" && typeof obj.width === "number"; + } + static lift(obj) { + if (obj instanceof _Dimension) { + return obj; + } else { + return new _Dimension(obj.width, obj.height); + } + } + static equals(a, b) { + if (a === b) { + return true; + } + if (!a || !b) { + return false; + } + return a.width === b.width && a.height === b.height; + } +}; +function getTopLeftOffset(element) { + let offsetParent = element.offsetParent; + let top = element.offsetTop; + let left = element.offsetLeft; + while ((element = element.parentNode) !== null && element !== element.ownerDocument.body && element !== element.ownerDocument.documentElement) { + top -= element.scrollTop; + const c = isShadowRoot(element) ? null : getComputedStyle(element); + if (c) { + left -= c.direction !== "rtl" ? element.scrollLeft : -element.scrollLeft; + } + if (element === offsetParent) { + left += SizeUtils.getBorderLeftWidth(element); + top += SizeUtils.getBorderTopWidth(element); + top += element.offsetTop; + left += element.offsetLeft; + offsetParent = element.offsetParent; + } + } + return { + left, + top + }; +} +function getDomNodePagePosition(domNode) { + const bb = domNode.getBoundingClientRect(); + const window2 = getWindow(domNode); + return { + left: bb.left + window2.scrollX, + top: bb.top + window2.scrollY, + width: bb.width, + height: bb.height + }; +} +function getDomNodeZoomLevel(domNode) { + let testElement = domNode; + let zoom = 1; + do { + const elementZoomLevel = getComputedStyle(testElement).zoom; + if (elementZoomLevel !== null && elementZoomLevel !== void 0 && elementZoomLevel !== "1") { + zoom *= elementZoomLevel; + } + testElement = testElement.parentElement; + } while (testElement !== null && testElement !== testElement.ownerDocument.documentElement); + return zoom; +} +function getTotalWidth(element) { + const margin = SizeUtils.getMarginLeft(element) + SizeUtils.getMarginRight(element); + return element.offsetWidth + margin; +} +function getContentWidth(element) { + const border = SizeUtils.getBorderLeftWidth(element) + SizeUtils.getBorderRightWidth(element); + const padding = SizeUtils.getPaddingLeft(element) + SizeUtils.getPaddingRight(element); + return element.offsetWidth - border - padding; +} +function getContentHeight(element) { + const border = SizeUtils.getBorderTopWidth(element) + SizeUtils.getBorderBottomWidth(element); + const padding = SizeUtils.getPaddingTop(element) + SizeUtils.getPaddingBottom(element); + return element.offsetHeight - border - padding; +} +function getTotalHeight(element) { + const margin = SizeUtils.getMarginTop(element) + SizeUtils.getMarginBottom(element); + return element.offsetHeight + margin; +} +function isAncestor(testChild, testAncestor) { + return Boolean(testAncestor?.contains(testChild)); +} +function isShadowRoot(node) { + return node && !!node.host && !!node.mode; +} +function getShadowRoot(domNode) { + while (domNode.parentNode) { + if (domNode === domNode.ownerDocument?.body) { + return null; + } + domNode = domNode.parentNode; + } + return isShadowRoot(domNode) ? domNode : null; +} +function getActiveElement() { + let result = getActiveDocument().activeElement; + while (result?.shadowRoot) { + result = result.shadowRoot.activeElement; + } + return result; +} +function isActiveElement(element) { + return getActiveElement() === element; +} +function getActiveDocument() { + if (getWindowsCount() <= 1) { + return mainWindow.document; + } + const documents = Array.from(getWindows()).map(({ window: window2 }) => window2.document); + return documents.find((doc) => doc.hasFocus()) ?? mainWindow.document; +} +function getActiveWindow() { + const document2 = getActiveDocument(); + return document2.defaultView?.window ?? mainWindow; +} +var globalStylesheets = /* @__PURE__ */ new Map(); +function createStyleSheet(container = mainWindow.document.head, beforeAppend, disposableStore) { + const style = document.createElement("style"); + style.type = "text/css"; + style.media = "screen"; + container.appendChild(style); + if (container === mainWindow.document.head) { + const globalStylesheetClones = /* @__PURE__ */ new Set(); + globalStylesheets.set(style, globalStylesheetClones); + for (const { window: targetWindow, disposables } of getWindows()) { + if (targetWindow === mainWindow) { + continue; + } + disposables.add(cloneGlobalStyleSheet(style, globalStylesheetClones, targetWindow)); + } + } + return style; +} +function cloneGlobalStyleSheet(globalStylesheet, globalStylesheetClones, targetWindow) { + const disposables = new DisposableStore(); + const clone2 = globalStylesheet.cloneNode(true); + targetWindow.document.head.appendChild(clone2); + disposables.add(toDisposable(() => clone2.remove())); + for (const rule of getDynamicStyleSheetRules(globalStylesheet)) { + clone2.sheet?.insertRule(rule.cssText, clone2.sheet?.cssRules.length); + } + disposables.add(sharedMutationObserver.observe(globalStylesheet, disposables, { childList: true })(() => { + clone2.textContent = globalStylesheet.textContent; + })); + globalStylesheetClones.add(clone2); + disposables.add(toDisposable(() => globalStylesheetClones.delete(clone2))); + return disposables; +} +var sharedMutationObserver = new class { + constructor() { + this.mutationObservers = /* @__PURE__ */ new Map(); + } + observe(target, disposables, options2) { + let mutationObserversPerTarget = this.mutationObservers.get(target); + if (!mutationObserversPerTarget) { + mutationObserversPerTarget = /* @__PURE__ */ new Map(); + this.mutationObservers.set(target, mutationObserversPerTarget); + } + const optionsHash = hash(options2); + let mutationObserverPerOptions = mutationObserversPerTarget.get(optionsHash); + if (!mutationObserverPerOptions) { + const onDidMutate = new Emitter(); + const observer = new MutationObserver((mutations) => onDidMutate.fire(mutations)); + observer.observe(target, options2); + const resolvedMutationObserverPerOptions = mutationObserverPerOptions = { + users: 1, + observer, + onDidMutate: onDidMutate.event + }; + disposables.add(toDisposable(() => { + resolvedMutationObserverPerOptions.users -= 1; + if (resolvedMutationObserverPerOptions.users === 0) { + onDidMutate.dispose(); + observer.disconnect(); + mutationObserversPerTarget?.delete(optionsHash); + if (mutationObserversPerTarget?.size === 0) { + this.mutationObservers.delete(target); + } + } + })); + mutationObserversPerTarget.set(optionsHash, mutationObserverPerOptions); + } else { + mutationObserverPerOptions.users += 1; + } + return mutationObserverPerOptions.onDidMutate; + } +}(); +var _sharedStyleSheet = null; +function getSharedStyleSheet() { + if (!_sharedStyleSheet) { + _sharedStyleSheet = createStyleSheet(); + } + return _sharedStyleSheet; +} +function getDynamicStyleSheetRules(style) { + if (style?.sheet?.rules) { + return style.sheet.rules; + } + if (style?.sheet?.cssRules) { + return style.sheet.cssRules; + } + return []; +} +function createCSSRule(selector, cssText, style = getSharedStyleSheet()) { + if (!style || !cssText) { + return; + } + style.sheet?.insertRule(`${selector} {${cssText}}`, 0); + for (const clonedGlobalStylesheet of globalStylesheets.get(style) ?? []) { + createCSSRule(selector, cssText, clonedGlobalStylesheet); + } +} +function isHTMLElement(e) { + return e instanceof HTMLElement || e instanceof getWindow(e).HTMLElement; +} +function isSVGElement(e) { + return e instanceof SVGElement || e instanceof getWindow(e).SVGElement; +} +function isMouseEvent(e) { + return e instanceof MouseEvent || e instanceof getWindow(e).MouseEvent; +} +var EventType = { + // Mouse + CLICK: "click", + AUXCLICK: "auxclick", + DBLCLICK: "dblclick", + MOUSE_UP: "mouseup", + MOUSE_DOWN: "mousedown", + MOUSE_OVER: "mouseover", + MOUSE_MOVE: "mousemove", + MOUSE_OUT: "mouseout", + MOUSE_ENTER: "mouseenter", + MOUSE_LEAVE: "mouseleave", + MOUSE_WHEEL: "wheel", + POINTER_UP: "pointerup", + POINTER_DOWN: "pointerdown", + POINTER_MOVE: "pointermove", + POINTER_LEAVE: "pointerleave", + CONTEXT_MENU: "contextmenu", + WHEEL: "wheel", + // Keyboard + KEY_DOWN: "keydown", + KEY_PRESS: "keypress", + KEY_UP: "keyup", + // HTML Document + LOAD: "load", + BEFORE_UNLOAD: "beforeunload", + UNLOAD: "unload", + PAGE_SHOW: "pageshow", + PAGE_HIDE: "pagehide", + PASTE: "paste", + ABORT: "abort", + ERROR: "error", + RESIZE: "resize", + SCROLL: "scroll", + FULLSCREEN_CHANGE: "fullscreenchange", + WK_FULLSCREEN_CHANGE: "webkitfullscreenchange", + // Form + SELECT: "select", + CHANGE: "change", + SUBMIT: "submit", + RESET: "reset", + FOCUS: "focus", + FOCUS_IN: "focusin", + FOCUS_OUT: "focusout", + BLUR: "blur", + INPUT: "input", + // Local Storage + STORAGE: "storage", + // Drag + DRAG_START: "dragstart", + DRAG: "drag", + DRAG_ENTER: "dragenter", + DRAG_LEAVE: "dragleave", + DRAG_OVER: "dragover", + DROP: "drop", + DRAG_END: "dragend", + // Animation + ANIMATION_START: isWebKit ? "webkitAnimationStart" : "animationstart", + ANIMATION_END: isWebKit ? "webkitAnimationEnd" : "animationend", + ANIMATION_ITERATION: isWebKit ? "webkitAnimationIteration" : "animationiteration" +}; +var EventHelper = { + stop: (e, cancelBubble) => { + e.preventDefault(); + if (cancelBubble) { + e.stopPropagation(); + } + return e; + } +}; +var FocusTracker = class _FocusTracker extends Disposable { + constructor(element) { + super(); + this._onDidFocus = this._register(new Emitter()); + this.onDidFocus = this._onDidFocus.event; + this._onDidBlur = this._register(new Emitter()); + this.onDidBlur = this._onDidBlur.event; + let hasFocus = _FocusTracker.hasFocusWithin(element); + let loosingFocus = false; + const onFocus = () => { + loosingFocus = false; + if (!hasFocus) { + hasFocus = true; + this._onDidFocus.fire(); + } + }; + const onBlur = () => { + if (hasFocus) { + loosingFocus = true; + (isHTMLElement(element) ? getWindow(element) : element).setTimeout(() => { + if (loosingFocus) { + loosingFocus = false; + hasFocus = false; + this._onDidBlur.fire(); + } + }, 0); + } + }; + this._refreshStateHandler = () => { + const currentNodeHasFocus = _FocusTracker.hasFocusWithin(element); + if (currentNodeHasFocus !== hasFocus) { + if (hasFocus) { + onBlur(); + } else { + onFocus(); + } + } + }; + this._register(addDisposableListener(element, EventType.FOCUS, onFocus, true)); + this._register(addDisposableListener(element, EventType.BLUR, onBlur, true)); + if (isHTMLElement(element)) { + this._register(addDisposableListener(element, EventType.FOCUS_IN, () => this._refreshStateHandler())); + this._register(addDisposableListener(element, EventType.FOCUS_OUT, () => this._refreshStateHandler())); + } + } + static hasFocusWithin(element) { + if (isHTMLElement(element)) { + const shadowRoot = getShadowRoot(element); + const activeElement = shadowRoot ? shadowRoot.activeElement : element.ownerDocument.activeElement; + return isAncestor(activeElement, element); + } else { + const window2 = element; + return isAncestor(window2.document.activeElement, window2.document); + } + } + refreshState() { + this._refreshStateHandler(); + } +}; +function trackFocus(element) { + return new FocusTracker(element); +} +function after(sibling, child) { + sibling.after(child); + return child; +} +function append(parent, ...children) { + parent.append(...children); + if (children.length === 1 && typeof children[0] !== "string") { + return children[0]; + } +} +function prepend(parent, child) { + parent.insertBefore(child, parent.firstChild); + return child; +} +function reset(parent, ...children) { + parent.innerText = ""; + append(parent, ...children); +} +var SELECTOR_REGEX = /([\w\-]+)?(#([\w\-]+))?((\.([\w\-]+))*)/; +function _$(namespace, description, attrs, ...children) { + const match = SELECTOR_REGEX.exec(description); + if (!match) { + throw new Error("Bad use of emmet"); + } + const tagName = match[1] || "div"; + let result; + if (namespace !== "http://www.w3.org/1999/xhtml" /* HTML */) { + result = document.createElementNS(namespace, tagName); + } else { + result = document.createElement(tagName); + } + if (match[3]) { + result.id = match[3]; + } + if (match[4]) { + result.className = match[4].replace(/\./g, " ").trim(); + } + if (attrs) { + Object.entries(attrs).forEach(([name, value]) => { + if (typeof value === "undefined") { + return; + } + if (/^on\w+$/.test(name)) { + result[name] = value; + } else if (name === "selected") { + if (value) { + result.setAttribute(name, "true"); + } + } else { + result.setAttribute(name, value); + } + }); + } + result.append(...children); + return result; +} +function $(description, attrs, ...children) { + return _$("http://www.w3.org/1999/xhtml" /* HTML */, description, attrs, ...children); +} +$.SVG = function(description, attrs, ...children) { + return _$("http://www.w3.org/2000/svg" /* SVG */, description, attrs, ...children); +}; +function show(...elements) { + for (const element of elements) { + element.style.display = ""; + element.removeAttribute("aria-hidden"); + } +} +function hide(...elements) { + for (const element of elements) { + element.style.display = "none"; + element.setAttribute("aria-hidden", "true"); + } +} +function animate(targetWindow, fn) { + const step = () => { + fn(); + stepDisposable = scheduleAtNextAnimationFrame(targetWindow, step); + }; + let stepDisposable = scheduleAtNextAnimationFrame(targetWindow, step); + return toDisposable(() => stepDisposable.dispose()); +} +RemoteAuthorities.setPreferredWebSchema(/^https:/.test(mainWindow.location.href) ? "https" : "http"); +function asCSSUrl(uri) { + if (!uri) { + return `url('')`; + } + return `url('${FileAccess.uriToBrowserUri(uri).toString(true).replace(/'/g, "%27")}')`; +} +function asCssValueWithDefault(cssPropertyValue, dflt) { + if (cssPropertyValue !== void 0) { + const variableMatch = cssPropertyValue.match(/^\s*var\((.+)\)$/); + if (variableMatch) { + const varArguments = variableMatch[1].split(",", 2); + if (varArguments.length === 2) { + dflt = asCssValueWithDefault(varArguments[1].trim(), dflt); + } + return `var(${varArguments[0]}, ${dflt})`; + } + return cssPropertyValue; + } + return dflt; +} +function hookDomPurifyHrefAndSrcSanitizer(allowedProtocols, allowDataImages = false) { + const anchor = document.createElement("a"); + addHook("afterSanitizeAttributes", (node) => { + for (const attr of ["href", "src"]) { + if (node.hasAttribute(attr)) { + const attrValue = node.getAttribute(attr); + if (attr === "href" && attrValue.startsWith("#")) { + continue; + } + anchor.href = attrValue; + if (!allowedProtocols.includes(anchor.protocol.replace(/:$/, ""))) { + if (allowDataImages && attr === "src" && anchor.href.startsWith("data:")) { + continue; + } + node.removeAttribute(attr); + } + } + } + }); + return toDisposable(() => { + removeHook("afterSanitizeAttributes"); + }); +} +[ + Schemas.http, + Schemas.https, + Schemas.command +]; +var basicMarkupHtmlTags = Object.freeze([ + "a", + "abbr", + "b", + "bdo", + "blockquote", + "br", + "caption", + "cite", + "code", + "col", + "colgroup", + "dd", + "del", + "details", + "dfn", + "div", + "dl", + "dt", + "em", + "figcaption", + "figure", + "h1", + "h2", + "h3", + "h4", + "h5", + "h6", + "hr", + "i", + "img", + "input", + "ins", + "kbd", + "label", + "li", + "mark", + "ol", + "p", + "pre", + "q", + "rp", + "rt", + "ruby", + "samp", + "small", + "small", + "source", + "span", + "strike", + "strong", + "sub", + "summary", + "sup", + "table", + "tbody", + "td", + "tfoot", + "th", + "thead", + "time", + "tr", + "tt", + "u", + "ul", + "var", + "video", + "wbr" +]); +var ModifierKeyEmitter = class _ModifierKeyEmitter extends Emitter { + constructor() { + super(); + this._subscriptions = new DisposableStore(); + this._keyStatus = { + altKey: false, + shiftKey: false, + ctrlKey: false, + metaKey: false + }; + this._subscriptions.add(Event.runAndSubscribe(onDidRegisterWindow, ({ window: window2, disposables }) => this.registerListeners(window2, disposables), { window: mainWindow, disposables: this._subscriptions })); + } + registerListeners(window2, disposables) { + disposables.add(addDisposableListener(window2, "keydown", (e) => { + if (e.defaultPrevented) { + return; + } + const event = new StandardKeyboardEvent(e); + if (event.keyCode === 6 /* Alt */ && e.repeat) { + return; + } + if (e.altKey && !this._keyStatus.altKey) { + this._keyStatus.lastKeyPressed = "alt"; + } else if (e.ctrlKey && !this._keyStatus.ctrlKey) { + this._keyStatus.lastKeyPressed = "ctrl"; + } else if (e.metaKey && !this._keyStatus.metaKey) { + this._keyStatus.lastKeyPressed = "meta"; + } else if (e.shiftKey && !this._keyStatus.shiftKey) { + this._keyStatus.lastKeyPressed = "shift"; + } else if (event.keyCode !== 6 /* Alt */) { + this._keyStatus.lastKeyPressed = void 0; + } else { + return; + } + this._keyStatus.altKey = e.altKey; + this._keyStatus.ctrlKey = e.ctrlKey; + this._keyStatus.metaKey = e.metaKey; + this._keyStatus.shiftKey = e.shiftKey; + if (this._keyStatus.lastKeyPressed) { + this._keyStatus.event = e; + this.fire(this._keyStatus); + } + }, true)); + disposables.add(addDisposableListener(window2, "keyup", (e) => { + if (e.defaultPrevented) { + return; + } + if (!e.altKey && this._keyStatus.altKey) { + this._keyStatus.lastKeyReleased = "alt"; + } else if (!e.ctrlKey && this._keyStatus.ctrlKey) { + this._keyStatus.lastKeyReleased = "ctrl"; + } else if (!e.metaKey && this._keyStatus.metaKey) { + this._keyStatus.lastKeyReleased = "meta"; + } else if (!e.shiftKey && this._keyStatus.shiftKey) { + this._keyStatus.lastKeyReleased = "shift"; + } else { + this._keyStatus.lastKeyReleased = void 0; + } + if (this._keyStatus.lastKeyPressed !== this._keyStatus.lastKeyReleased) { + this._keyStatus.lastKeyPressed = void 0; + } + this._keyStatus.altKey = e.altKey; + this._keyStatus.ctrlKey = e.ctrlKey; + this._keyStatus.metaKey = e.metaKey; + this._keyStatus.shiftKey = e.shiftKey; + if (this._keyStatus.lastKeyReleased) { + this._keyStatus.event = e; + this.fire(this._keyStatus); + } + }, true)); + disposables.add(addDisposableListener(window2.document.body, "mousedown", () => { + this._keyStatus.lastKeyPressed = void 0; + }, true)); + disposables.add(addDisposableListener(window2.document.body, "mouseup", () => { + this._keyStatus.lastKeyPressed = void 0; + }, true)); + disposables.add(addDisposableListener(window2.document.body, "mousemove", (e) => { + if (e.buttons) { + this._keyStatus.lastKeyPressed = void 0; + } + }, true)); + disposables.add(addDisposableListener(window2, "blur", () => { + this.resetKeyStatus(); + })); + } + get keyStatus() { + return this._keyStatus; + } + get isModifierPressed() { + return this._keyStatus.altKey || this._keyStatus.ctrlKey || this._keyStatus.metaKey || this._keyStatus.shiftKey; + } + /** + * Allows to explicitly reset the key status based on more knowledge (#109062) + */ + resetKeyStatus() { + this.doResetKeyStatus(); + this.fire(this._keyStatus); + } + doResetKeyStatus() { + this._keyStatus = { + altKey: false, + shiftKey: false, + ctrlKey: false, + metaKey: false + }; + } + static getInstance() { + if (!_ModifierKeyEmitter.instance) { + _ModifierKeyEmitter.instance = new _ModifierKeyEmitter(); + } + return _ModifierKeyEmitter.instance; + } + dispose() { + super.dispose(); + this._subscriptions.dispose(); + } +}; +function isEditableElement(element) { + return element.tagName.toLowerCase() === "input" || element.tagName.toLowerCase() === "textarea" || isHTMLElement(element) && !!element.editContext; +} + +// ../../../../../base/common/actions.ts +var Action = class extends Disposable { + constructor(id2, label = "", cssClass = "", enabled = true, actionCallback) { + super(); + this._onDidChange = this._register(new Emitter()); + this.onDidChange = this._onDidChange.event; + this._enabled = true; + this._id = id2; + this._label = label; + this._cssClass = cssClass; + this._enabled = enabled; + this._actionCallback = actionCallback; + } + get id() { + return this._id; + } + get label() { + return this._label; + } + set label(value) { + this._setLabel(value); + } + _setLabel(value) { + if (this._label !== value) { + this._label = value; + this._onDidChange.fire({ label: value }); + } + } + get tooltip() { + return this._tooltip || ""; + } + set tooltip(value) { + this._setTooltip(value); + } + _setTooltip(value) { + if (this._tooltip !== value) { + this._tooltip = value; + this._onDidChange.fire({ tooltip: value }); + } + } + get class() { + return this._cssClass; + } + set class(value) { + this._setClass(value); + } + _setClass(value) { + if (this._cssClass !== value) { + this._cssClass = value; + this._onDidChange.fire({ class: value }); + } + } + get enabled() { + return this._enabled; + } + set enabled(value) { + this._setEnabled(value); + } + _setEnabled(value) { + if (this._enabled !== value) { + this._enabled = value; + this._onDidChange.fire({ enabled: value }); + } + } + get checked() { + return this._checked; + } + set checked(value) { + this._setChecked(value); + } + _setChecked(value) { + if (this._checked !== value) { + this._checked = value; + this._onDidChange.fire({ checked: value }); + } + } + async run(event, data) { + if (this._actionCallback) { + await this._actionCallback(event); + } + } +}; +var ActionRunner = class extends Disposable { + constructor() { + super(...arguments); + this._onWillRun = this._register(new Emitter()); + this.onWillRun = this._onWillRun.event; + this._onDidRun = this._register(new Emitter()); + this.onDidRun = this._onDidRun.event; + } + async run(action, context) { + if (!action.enabled) { + return; + } + this._onWillRun.fire({ action }); + let error = void 0; + try { + await this.runAction(action, context); + } catch (e) { + error = e; + } + this._onDidRun.fire({ action, error }); + } + async runAction(action, context) { + await action.run(context); + } +}; +var Separator = class _Separator { + constructor() { + this.id = _Separator.ID; + this.label = ""; + this.tooltip = ""; + this.class = "separator"; + this.enabled = false; + this.checked = false; + } + /** + * Joins all non-empty lists of actions with separators. + */ + static join(...actionLists) { + let out = []; + for (const list of actionLists) { + if (!list.length) ; else if (out.length) { + out = [...out, new _Separator(), ...list]; + } else { + out = list; + } + } + return out; + } + static { + this.ID = "vs.actions.separator"; + } + async run() { + } +}; +var SubmenuAction = class { + constructor(id2, label, actions, cssClass) { + this.tooltip = ""; + this.enabled = true; + this.checked = void 0; + this.id = id2; + this.label = label; + this.class = cssClass; + this._actions = actions; + } + get actions() { + return this._actions; + } + async run() { + } +}; +(class _EmptySubmenuAction extends Action { + static { + this.ID = "vs.actions.empty"; + } + constructor() { + super(_EmptySubmenuAction.ID, localize("submenu.empty", "(empty)"), void 0, false); + } +}); +function toAction(props) { + return { + id: props.id, + label: props.label, + tooltip: props.tooltip ?? props.label, + class: props.class, + enabled: props.enabled ?? true, + checked: props.checked, + run: async (...args) => props.run(...args) + }; +} + +// ../../../../../base/common/mime.ts +var Mimes = Object.freeze({ + text: "text/plain", + binary: "application/octet-stream", + unknown: "application/unknown", + markdown: "text/markdown", + latex: "text/latex", + uriList: "text/uri-list" +}); + +// ../../../../../base/browser/dnd.ts +var DataTransfers = { + /** + * Application specific resource transfer type + */ + RESOURCES: "ResourceURLs", + /** + * Browser specific transfer type to download + */ + DOWNLOAD_URL: "DownloadURL", + /** + * Browser specific transfer type for files + */ + FILES: "Files", + /** + * Typically transfer type for copy/paste transfers. + */ + TEXT: Mimes.text, + /** + * Internal type used to pass around text/uri-list data. + * + * This is needed to work around https://bugs.chromium.org/p/chromium/issues/detail?id=239745. + */ + INTERNAL_URI_LIST: "application/vnd.code.uri-list" +}; + +// ../../../../../base/common/decorators.ts +function memoize(_target, key, descriptor) { + let fnKey = null; + let fn = null; + if (typeof descriptor.value === "function") { + fnKey = "value"; + fn = descriptor.value; + if (fn.length !== 0) { + console.warn("Memoize should only be used in functions with zero parameters"); + } + } else if (typeof descriptor.get === "function") { + fnKey = "get"; + fn = descriptor.get; + } + if (!fn) { + throw new Error("not supported"); + } + const memoizeKey = `$memoize$${key}`; + descriptor[fnKey] = function(...args) { + if (!this.hasOwnProperty(memoizeKey)) { + Object.defineProperty(this, memoizeKey, { + configurable: false, + enumerable: false, + writable: false, + value: fn.apply(this, args) + }); + } + return this[memoizeKey]; + }; +} + +// ../../../../../base/browser/touch.ts +var EventType2; +((EventType3) => { + EventType3.Tap = "-monaco-gesturetap"; + EventType3.Change = "-monaco-gesturechange"; + EventType3.Start = "-monaco-gesturestart"; + EventType3.End = "-monaco-gesturesend"; + EventType3.Contextmenu = "-monaco-gesturecontextmenu"; +})(EventType2 || (EventType2 = {})); +var _Gesture = class _Gesture extends Disposable { + // ms + constructor() { + super(); + this.dispatched = false; + this.targets = new LinkedList(); + this.ignoreTargets = new LinkedList(); + this.activeTouches = {}; + this.handle = null; + this._lastSetTapCountTime = 0; + this._register(Event.runAndSubscribe(onDidRegisterWindow, ({ window: window2, disposables }) => { + disposables.add(addDisposableListener(window2.document, "touchstart", (e) => this.onTouchStart(e), { passive: false })); + disposables.add(addDisposableListener(window2.document, "touchend", (e) => this.onTouchEnd(window2, e))); + disposables.add(addDisposableListener(window2.document, "touchmove", (e) => this.onTouchMove(e), { passive: false })); + }, { window: mainWindow, disposables: this._store })); + } + static { + this.SCROLL_FRICTION = -5e-3; + } + static { + this.HOLD_DELAY = 700; + } + static { + this.CLEAR_TAP_COUNT_TIME = 400; + } + static addTarget(element) { + if (!_Gesture.isTouchDevice()) { + return Disposable.None; + } + if (!_Gesture.INSTANCE) { + _Gesture.INSTANCE = markAsSingleton(new _Gesture()); + } + const remove = _Gesture.INSTANCE.targets.push(element); + return toDisposable(remove); + } + static ignoreTarget(element) { + if (!_Gesture.isTouchDevice()) { + return Disposable.None; + } + if (!_Gesture.INSTANCE) { + _Gesture.INSTANCE = markAsSingleton(new _Gesture()); + } + const remove = _Gesture.INSTANCE.ignoreTargets.push(element); + return toDisposable(remove); + } + static isTouchDevice() { + return "ontouchstart" in mainWindow || navigator.maxTouchPoints > 0; + } + dispose() { + if (this.handle) { + this.handle.dispose(); + this.handle = null; + } + super.dispose(); + } + onTouchStart(e) { + const timestamp = Date.now(); + if (this.handle) { + this.handle.dispose(); + this.handle = null; + } + for (let i = 0, len = e.targetTouches.length; i < len; i++) { + const touch = e.targetTouches.item(i); + this.activeTouches[touch.identifier] = { + id: touch.identifier, + initialTarget: touch.target, + initialTimeStamp: timestamp, + initialPageX: touch.pageX, + initialPageY: touch.pageY, + rollingTimestamps: [timestamp], + rollingPageX: [touch.pageX], + rollingPageY: [touch.pageY] + }; + const evt = this.newGestureEvent(EventType2.Start, touch.target); + evt.pageX = touch.pageX; + evt.pageY = touch.pageY; + this.dispatchEvent(evt); + } + if (this.dispatched) { + e.preventDefault(); + e.stopPropagation(); + this.dispatched = false; + } + } + onTouchEnd(targetWindow, e) { + const timestamp = Date.now(); + const activeTouchCount = Object.keys(this.activeTouches).length; + for (let i = 0, len = e.changedTouches.length; i < len; i++) { + const touch = e.changedTouches.item(i); + if (!this.activeTouches.hasOwnProperty(String(touch.identifier))) { + console.warn("move of an UNKNOWN touch", touch); + continue; + } + const data = this.activeTouches[touch.identifier], holdTime = Date.now() - data.initialTimeStamp; + if (holdTime < _Gesture.HOLD_DELAY && Math.abs(data.initialPageX - tail(data.rollingPageX)) < 30 && Math.abs(data.initialPageY - tail(data.rollingPageY)) < 30) { + const evt = this.newGestureEvent(EventType2.Tap, data.initialTarget); + evt.pageX = tail(data.rollingPageX); + evt.pageY = tail(data.rollingPageY); + this.dispatchEvent(evt); + } else if (holdTime >= _Gesture.HOLD_DELAY && Math.abs(data.initialPageX - tail(data.rollingPageX)) < 30 && Math.abs(data.initialPageY - tail(data.rollingPageY)) < 30) { + const evt = this.newGestureEvent(EventType2.Contextmenu, data.initialTarget); + evt.pageX = tail(data.rollingPageX); + evt.pageY = tail(data.rollingPageY); + this.dispatchEvent(evt); + } else if (activeTouchCount === 1) { + const finalX = tail(data.rollingPageX); + const finalY = tail(data.rollingPageY); + const deltaT = tail(data.rollingTimestamps) - data.rollingTimestamps[0]; + const deltaX = finalX - data.rollingPageX[0]; + const deltaY = finalY - data.rollingPageY[0]; + const dispatchTo = [...this.targets].filter((t) => data.initialTarget instanceof Node && t.contains(data.initialTarget)); + this.inertia( + targetWindow, + dispatchTo, + timestamp, + // time now + Math.abs(deltaX) / deltaT, + // speed + deltaX > 0 ? 1 : -1, + // x direction + finalX, + // x now + Math.abs(deltaY) / deltaT, + // y speed + deltaY > 0 ? 1 : -1, + // y direction + finalY + // y now + ); + } + this.dispatchEvent(this.newGestureEvent(EventType2.End, data.initialTarget)); + delete this.activeTouches[touch.identifier]; + } + if (this.dispatched) { + e.preventDefault(); + e.stopPropagation(); + this.dispatched = false; + } + } + newGestureEvent(type, initialTarget) { + const event = document.createEvent("CustomEvent"); + event.initEvent(type, false, true); + event.initialTarget = initialTarget; + event.tapCount = 0; + return event; + } + dispatchEvent(event) { + if (event.type === EventType2.Tap) { + const currentTime = (/* @__PURE__ */ new Date()).getTime(); + let setTapCount = 0; + if (currentTime - this._lastSetTapCountTime > _Gesture.CLEAR_TAP_COUNT_TIME) { + setTapCount = 1; + } else { + setTapCount = 2; + } + this._lastSetTapCountTime = currentTime; + event.tapCount = setTapCount; + } else if (event.type === EventType2.Change || event.type === EventType2.Contextmenu) { + this._lastSetTapCountTime = 0; + } + if (event.initialTarget instanceof Node) { + for (const ignoreTarget of this.ignoreTargets) { + if (ignoreTarget.contains(event.initialTarget)) { + return; + } + } + const targets = []; + for (const target of this.targets) { + if (target.contains(event.initialTarget)) { + let depth = 0; + let now = event.initialTarget; + while (now && now !== target) { + depth++; + now = now.parentElement; + } + targets.push([depth, target]); + } + } + targets.sort((a, b) => a[0] - b[0]); + for (const [_, target] of targets) { + target.dispatchEvent(event); + this.dispatched = true; + } + } + } + inertia(targetWindow, dispatchTo, t1, vX, dirX, x, vY, dirY, y) { + this.handle = scheduleAtNextAnimationFrame(targetWindow, () => { + const now = Date.now(); + const deltaT = now - t1; + let delta_pos_x = 0, delta_pos_y = 0; + let stopped = true; + vX += _Gesture.SCROLL_FRICTION * deltaT; + vY += _Gesture.SCROLL_FRICTION * deltaT; + if (vX > 0) { + stopped = false; + delta_pos_x = dirX * vX * deltaT; + } + if (vY > 0) { + stopped = false; + delta_pos_y = dirY * vY * deltaT; + } + const evt = this.newGestureEvent(EventType2.Change); + evt.translationX = delta_pos_x; + evt.translationY = delta_pos_y; + dispatchTo.forEach((d) => d.dispatchEvent(evt)); + if (!stopped) { + this.inertia(targetWindow, dispatchTo, now, vX, dirX, x + delta_pos_x, vY, dirY, y + delta_pos_y); + } + }); + } + onTouchMove(e) { + const timestamp = Date.now(); + for (let i = 0, len = e.changedTouches.length; i < len; i++) { + const touch = e.changedTouches.item(i); + if (!this.activeTouches.hasOwnProperty(String(touch.identifier))) { + console.warn("end of an UNKNOWN touch", touch); + continue; + } + const data = this.activeTouches[touch.identifier]; + const evt = this.newGestureEvent(EventType2.Change, data.initialTarget); + evt.translationX = touch.pageX - tail(data.rollingPageX); + evt.translationY = touch.pageY - tail(data.rollingPageY); + evt.pageX = touch.pageX; + evt.pageY = touch.pageY; + this.dispatchEvent(evt); + if (data.rollingPageX.length > 3) { + data.rollingPageX.shift(); + data.rollingPageY.shift(); + data.rollingTimestamps.shift(); + } + data.rollingPageX.push(touch.pageX); + data.rollingPageY.push(touch.pageY); + data.rollingTimestamps.push(timestamp); + } + if (this.dispatched) { + e.preventDefault(); + e.stopPropagation(); + this.dispatched = false; + } + } +}; +__decorateClass([ + memoize +], _Gesture, "isTouchDevice", 1); +var Gesture = _Gesture; + +// ../../../../../base/browser/ui/hover/hoverDelegateFactory.ts +var nullHoverDelegateFactory = () => ({ + get delay() { + return -1; + }, + dispose: () => { + }, + showHover: () => { + return void 0; + } +}); +var hoverDelegateFactory = nullHoverDelegateFactory; +var defaultHoverDelegateMouse = new Lazy(() => hoverDelegateFactory()); +var defaultHoverDelegateElement = new Lazy(() => hoverDelegateFactory()); +function getDefaultHoverDelegate(placement) { + if (placement === "element") { + return defaultHoverDelegateElement.value; + } + return defaultHoverDelegateMouse.value; +} +function createInstantHoverDelegate() { + return hoverDelegateFactory(); +} + +// ../../../../../base/browser/event.ts +var DomEmitter = class { + get event() { + return this.emitter.event; + } + constructor(element, type, useCapture) { + const fn = (e) => this.emitter.fire(e); + this.emitter = new Emitter({ + onWillAddFirstListener: () => element.addEventListener(type, fn, useCapture), + onDidRemoveLastListener: () => element.removeEventListener(type, fn, useCapture) + }); + } + dispose() { + this.emitter.dispose(); + } +}; +function alert(msg) { + { + return; + } +} +function status(msg) { + { + return; + } +} + +// ../../../../../base/browser/ui/list/splice.ts +var CombinedSpliceable = class { + constructor(spliceables) { + this.spliceables = spliceables; + } + splice(start, deleteCount, elements) { + this.spliceables.forEach((s) => s.splice(start, deleteCount, elements)); + } +}; +_matchesPrefix.bind(void 0, false); +var matchesPrefix = _matchesPrefix.bind(void 0, true); +function _matchesPrefix(ignoreCase, word, wordToMatchAgainst) { + if (!wordToMatchAgainst || wordToMatchAgainst.length < word.length) { + return null; + } + let matches; + if (ignoreCase) { + matches = startsWithIgnoreCase(wordToMatchAgainst, word); + } else { + matches = wordToMatchAgainst.indexOf(word) === 0; + } + if (!matches) { + return null; + } + return word.length > 0 ? [{ start: 0, end: word.length }] : []; +} +var wordSeparators = /* @__PURE__ */ new Set(); +"()[]{}<>`'\"-/;:,.?!".split("").forEach((s) => wordSeparators.add(s.charCodeAt(0))); +new LRUCache(1e4); +function matchesFuzzy2(pattern, word) { + const score = fuzzyScore(pattern, pattern.toLowerCase(), 0, word, word.toLowerCase(), 0, { firstMatchCanBeWeak: true, boostFullMatch: true }); + return score ? createMatches(score) : null; +} +function createMatches(score) { + if (typeof score === "undefined") { + return []; + } + const res = []; + const wordPos = score[1]; + for (let i = score.length - 1; i > 1; i--) { + const pos = score[i] + wordPos; + const last = res[res.length - 1]; + if (last && last.end === pos) { + last.end = pos + 1; + } else { + res.push({ start: pos, end: pos + 1 }); + } + } + return res; +} +var _maxLen = 128; +function initTable() { + const table = []; + const row = []; + for (let i = 0; i <= _maxLen; i++) { + row[i] = 0; + } + for (let i = 0; i <= _maxLen; i++) { + table.push(row.slice(0)); + } + return table; +} +function initArr(maxLen) { + const row = []; + for (let i = 0; i <= maxLen; i++) { + row[i] = 0; + } + return row; +} +var _minWordMatchPos = initArr(2 * _maxLen); +var _maxWordMatchPos = initArr(2 * _maxLen); +var _diag = initTable(); +var _table = initTable(); +var _arrows = initTable(); +function isSeparatorAtPos(value, index) { + if (index < 0 || index >= value.length) { + return false; + } + const code = value.codePointAt(index); + switch (code) { + case 95 /* Underline */: + case 45 /* Dash */: + case 46 /* Period */: + case 32 /* Space */: + case 47 /* Slash */: + case 92 /* Backslash */: + case 39 /* SingleQuote */: + case 34 /* DoubleQuote */: + case 58 /* Colon */: + case 36 /* DollarSign */: + case 60 /* LessThan */: + case 62 /* GreaterThan */: + case 40 /* OpenParen */: + case 41 /* CloseParen */: + case 91 /* OpenSquareBracket */: + case 93 /* CloseSquareBracket */: + case 123 /* OpenCurlyBrace */: + case 125 /* CloseCurlyBrace */: + return true; + case void 0: + return false; + default: + if (isEmojiImprecise(code)) { + return true; + } + return false; + } +} +function isWhitespaceAtPos(value, index) { + if (index < 0 || index >= value.length) { + return false; + } + const code = value.charCodeAt(index); + switch (code) { + case 32 /* Space */: + case 9 /* Tab */: + return true; + default: + return false; + } +} +function isUpperCaseAtPos(pos, word, wordLow) { + return word[pos] !== wordLow[pos]; +} +function isPatternInWord(patternLow, patternPos, patternLen, wordLow, wordPos, wordLen, fillMinWordPosArr = false) { + while (patternPos < patternLen && wordPos < wordLen) { + if (patternLow[patternPos] === wordLow[wordPos]) { + if (fillMinWordPosArr) { + _minWordMatchPos[patternPos] = wordPos; + } + patternPos += 1; + } + wordPos += 1; + } + return patternPos === patternLen; +} +var FuzzyScore; +((FuzzyScore2) => { + FuzzyScore2.Default = [-100, 0]; + function isDefault(score) { + return !score || score.length === 2 && score[0] === -100 && score[1] === 0; + } + FuzzyScore2.isDefault = isDefault; +})(FuzzyScore || (FuzzyScore = {})); +var FuzzyScoreOptions = class { + constructor(firstMatchCanBeWeak, boostFullMatch) { + this.firstMatchCanBeWeak = firstMatchCanBeWeak; + this.boostFullMatch = boostFullMatch; + } + static { + this.default = { boostFullMatch: true, firstMatchCanBeWeak: false }; + } +}; +function fuzzyScore(pattern, patternLow, patternStart, word, wordLow, wordStart, options2 = FuzzyScoreOptions.default) { + const patternLen = pattern.length > _maxLen ? _maxLen : pattern.length; + const wordLen = word.length > _maxLen ? _maxLen : word.length; + if (patternStart >= patternLen || wordStart >= wordLen || patternLen - patternStart > wordLen - wordStart) { + return void 0; + } + if (!isPatternInWord(patternLow, patternStart, patternLen, wordLow, wordStart, wordLen, true)) { + return void 0; + } + _fillInMaxWordMatchPos(patternLen, wordLen, patternStart, wordStart, patternLow, wordLow); + let row = 1; + let column = 1; + let patternPos = patternStart; + let wordPos = wordStart; + const hasStrongFirstMatch = [false]; + for (row = 1, patternPos = patternStart; patternPos < patternLen; row++, patternPos++) { + const minWordMatchPos = _minWordMatchPos[patternPos]; + const maxWordMatchPos = _maxWordMatchPos[patternPos]; + const nextMaxWordMatchPos = patternPos + 1 < patternLen ? _maxWordMatchPos[patternPos + 1] : wordLen; + for (column = minWordMatchPos - wordStart + 1, wordPos = minWordMatchPos; wordPos < nextMaxWordMatchPos; column++, wordPos++) { + let score = Number.MIN_SAFE_INTEGER; + let canComeDiag = false; + if (wordPos <= maxWordMatchPos) { + score = _doScore( + pattern, + patternLow, + patternPos, + patternStart, + word, + wordLow, + wordPos, + wordLen, + wordStart, + _diag[row - 1][column - 1] === 0, + hasStrongFirstMatch + ); + } + let diagScore = 0; + if (score !== Number.MAX_SAFE_INTEGER) { + canComeDiag = true; + diagScore = score + _table[row - 1][column - 1]; + } + const canComeLeft = wordPos > minWordMatchPos; + const leftScore = canComeLeft ? _table[row][column - 1] + (_diag[row][column - 1] > 0 ? -5 : 0) : 0; + const canComeLeftLeft = wordPos > minWordMatchPos + 1 && _diag[row][column - 1] > 0; + const leftLeftScore = canComeLeftLeft ? _table[row][column - 2] + (_diag[row][column - 2] > 0 ? -5 : 0) : 0; + if (canComeLeftLeft && (!canComeLeft || leftLeftScore >= leftScore) && (!canComeDiag || leftLeftScore >= diagScore)) { + _table[row][column] = leftLeftScore; + _arrows[row][column] = 3 /* LeftLeft */; + _diag[row][column] = 0; + } else if (canComeLeft && (!canComeDiag || leftScore >= diagScore)) { + _table[row][column] = leftScore; + _arrows[row][column] = 2 /* Left */; + _diag[row][column] = 0; + } else if (canComeDiag) { + _table[row][column] = diagScore; + _arrows[row][column] = 1 /* Diag */; + _diag[row][column] = _diag[row - 1][column - 1] + 1; + } else { + throw new Error(`not possible`); + } + } + } + if (!hasStrongFirstMatch[0] && !options2.firstMatchCanBeWeak) { + return void 0; + } + row--; + column--; + const result = [_table[row][column], wordStart]; + let backwardsDiagLength = 0; + let maxMatchColumn = 0; + while (row >= 1) { + let diagColumn = column; + do { + const arrow = _arrows[row][diagColumn]; + if (arrow === 3 /* LeftLeft */) { + diagColumn = diagColumn - 2; + } else if (arrow === 2 /* Left */) { + diagColumn = diagColumn - 1; + } else { + break; + } + } while (diagColumn >= 1); + if (backwardsDiagLength > 1 && patternLow[patternStart + row - 1] === wordLow[wordStart + column - 1] && !isUpperCaseAtPos(diagColumn + wordStart - 1, word, wordLow) && backwardsDiagLength + 1 > _diag[row][diagColumn]) { + diagColumn = column; + } + if (diagColumn === column) { + backwardsDiagLength++; + } else { + backwardsDiagLength = 1; + } + if (!maxMatchColumn) { + maxMatchColumn = diagColumn; + } + row--; + column = diagColumn - 1; + result.push(column); + } + if (wordLen - wordStart === patternLen && options2.boostFullMatch) { + result[0] += 2; + } + const skippedCharsCount = maxMatchColumn - patternLen; + result[0] -= skippedCharsCount; + return result; +} +function _fillInMaxWordMatchPos(patternLen, wordLen, patternStart, wordStart, patternLow, wordLow) { + let patternPos = patternLen - 1; + let wordPos = wordLen - 1; + while (patternPos >= patternStart && wordPos >= wordStart) { + if (patternLow[patternPos] === wordLow[wordPos]) { + _maxWordMatchPos[patternPos] = wordPos; + patternPos--; + } + wordPos--; + } +} +function _doScore(pattern, patternLow, patternPos, patternStart, word, wordLow, wordPos, wordLen, wordStart, newMatchStart, outFirstMatchStrong) { + if (patternLow[patternPos] !== wordLow[wordPos]) { + return Number.MIN_SAFE_INTEGER; + } + let score = 1; + let isGapLocation = false; + if (wordPos === patternPos - patternStart) { + score = pattern[patternPos] === word[wordPos] ? 7 : 5; + } else if (isUpperCaseAtPos(wordPos, word, wordLow) && (wordPos === 0 || !isUpperCaseAtPos(wordPos - 1, word, wordLow))) { + score = pattern[patternPos] === word[wordPos] ? 7 : 5; + isGapLocation = true; + } else if (isSeparatorAtPos(wordLow, wordPos) && (wordPos === 0 || !isSeparatorAtPos(wordLow, wordPos - 1))) { + score = 5; + } else if (isSeparatorAtPos(wordLow, wordPos - 1) || isWhitespaceAtPos(wordLow, wordPos - 1)) { + score = 5; + isGapLocation = true; + } + if (score > 1 && patternPos === patternStart) { + outFirstMatchStrong[0] = true; + } + if (!isGapLocation) { + isGapLocation = isUpperCaseAtPos(wordPos, word, wordLow) || isSeparatorAtPos(wordLow, wordPos - 1) || isWhitespaceAtPos(wordLow, wordPos - 1); + } + if (patternPos === patternStart) { + if (wordPos > wordStart) { + score -= isGapLocation ? 3 : 5; + } + } else { + if (newMatchStart) { + score += isGapLocation ? 2 : 0; + } else { + score += isGapLocation ? 0 : 1; + } + } + if (wordPos + 1 === wordLen) { + score -= isGapLocation ? 3 : 5; + } + return score; +} + +// ../../../../../base/browser/ui/list/list.ts +var ListError = class extends Error { + constructor(user, message) { + super(`ListError [${user}] ${message}`); + } +}; + +// ../../../../../base/browser/fastDomNode.ts +var FastDomNode = class { + constructor(domNode) { + this.domNode = domNode; + this._maxWidth = ""; + this._width = ""; + this._height = ""; + this._top = ""; + this._left = ""; + this._bottom = ""; + this._right = ""; + this._paddingTop = ""; + this._paddingLeft = ""; + this._paddingBottom = ""; + this._paddingRight = ""; + this._fontFamily = ""; + this._fontWeight = ""; + this._fontSize = ""; + this._fontStyle = ""; + this._fontFeatureSettings = ""; + this._fontVariationSettings = ""; + this._textDecoration = ""; + this._lineHeight = ""; + this._letterSpacing = ""; + this._className = ""; + this._display = ""; + this._position = ""; + this._visibility = ""; + this._color = ""; + this._backgroundColor = ""; + this._layerHint = false; + this._contain = "none"; + this._boxShadow = ""; + } + setMaxWidth(_maxWidth) { + const maxWidth = numberAsPixels(_maxWidth); + if (this._maxWidth === maxWidth) { + return; + } + this._maxWidth = maxWidth; + this.domNode.style.maxWidth = this._maxWidth; + } + setWidth(_width) { + const width = numberAsPixels(_width); + if (this._width === width) { + return; + } + this._width = width; + this.domNode.style.width = this._width; + } + setHeight(_height) { + const height = numberAsPixels(_height); + if (this._height === height) { + return; + } + this._height = height; + this.domNode.style.height = this._height; + } + setTop(_top) { + const top = numberAsPixels(_top); + if (this._top === top) { + return; + } + this._top = top; + this.domNode.style.top = this._top; + } + setLeft(_left) { + const left = numberAsPixels(_left); + if (this._left === left) { + return; + } + this._left = left; + this.domNode.style.left = this._left; + } + setBottom(_bottom) { + const bottom = numberAsPixels(_bottom); + if (this._bottom === bottom) { + return; + } + this._bottom = bottom; + this.domNode.style.bottom = this._bottom; + } + setRight(_right) { + const right = numberAsPixels(_right); + if (this._right === right) { + return; + } + this._right = right; + this.domNode.style.right = this._right; + } + setPaddingTop(_paddingTop) { + const paddingTop = numberAsPixels(_paddingTop); + if (this._paddingTop === paddingTop) { + return; + } + this._paddingTop = paddingTop; + this.domNode.style.paddingTop = this._paddingTop; + } + setPaddingLeft(_paddingLeft) { + const paddingLeft = numberAsPixels(_paddingLeft); + if (this._paddingLeft === paddingLeft) { + return; + } + this._paddingLeft = paddingLeft; + this.domNode.style.paddingLeft = this._paddingLeft; + } + setPaddingBottom(_paddingBottom) { + const paddingBottom = numberAsPixels(_paddingBottom); + if (this._paddingBottom === paddingBottom) { + return; + } + this._paddingBottom = paddingBottom; + this.domNode.style.paddingBottom = this._paddingBottom; + } + setPaddingRight(_paddingRight) { + const paddingRight = numberAsPixels(_paddingRight); + if (this._paddingRight === paddingRight) { + return; + } + this._paddingRight = paddingRight; + this.domNode.style.paddingRight = this._paddingRight; + } + setFontFamily(fontFamily) { + if (this._fontFamily === fontFamily) { + return; + } + this._fontFamily = fontFamily; + this.domNode.style.fontFamily = this._fontFamily; + } + setFontWeight(fontWeight) { + if (this._fontWeight === fontWeight) { + return; + } + this._fontWeight = fontWeight; + this.domNode.style.fontWeight = this._fontWeight; + } + setFontSize(_fontSize) { + const fontSize = numberAsPixels(_fontSize); + if (this._fontSize === fontSize) { + return; + } + this._fontSize = fontSize; + this.domNode.style.fontSize = this._fontSize; + } + setFontStyle(fontStyle) { + if (this._fontStyle === fontStyle) { + return; + } + this._fontStyle = fontStyle; + this.domNode.style.fontStyle = this._fontStyle; + } + setFontFeatureSettings(fontFeatureSettings) { + if (this._fontFeatureSettings === fontFeatureSettings) { + return; + } + this._fontFeatureSettings = fontFeatureSettings; + this.domNode.style.fontFeatureSettings = this._fontFeatureSettings; + } + setFontVariationSettings(fontVariationSettings) { + if (this._fontVariationSettings === fontVariationSettings) { + return; + } + this._fontVariationSettings = fontVariationSettings; + this.domNode.style.fontVariationSettings = this._fontVariationSettings; + } + setTextDecoration(textDecoration) { + if (this._textDecoration === textDecoration) { + return; + } + this._textDecoration = textDecoration; + this.domNode.style.textDecoration = this._textDecoration; + } + setLineHeight(_lineHeight) { + const lineHeight = numberAsPixels(_lineHeight); + if (this._lineHeight === lineHeight) { + return; + } + this._lineHeight = lineHeight; + this.domNode.style.lineHeight = this._lineHeight; + } + setLetterSpacing(_letterSpacing) { + const letterSpacing = numberAsPixels(_letterSpacing); + if (this._letterSpacing === letterSpacing) { + return; + } + this._letterSpacing = letterSpacing; + this.domNode.style.letterSpacing = this._letterSpacing; + } + setClassName(className) { + if (this._className === className) { + return; + } + this._className = className; + this.domNode.className = this._className; + } + toggleClassName(className, shouldHaveIt) { + this.domNode.classList.toggle(className, shouldHaveIt); + this._className = this.domNode.className; + } + setDisplay(display) { + if (this._display === display) { + return; + } + this._display = display; + this.domNode.style.display = this._display; + } + setPosition(position) { + if (this._position === position) { + return; + } + this._position = position; + this.domNode.style.position = this._position; + } + setVisibility(visibility) { + if (this._visibility === visibility) { + return; + } + this._visibility = visibility; + this.domNode.style.visibility = this._visibility; + } + setColor(color) { + if (this._color === color) { + return; + } + this._color = color; + this.domNode.style.color = this._color; + } + setBackgroundColor(backgroundColor) { + if (this._backgroundColor === backgroundColor) { + return; + } + this._backgroundColor = backgroundColor; + this.domNode.style.backgroundColor = this._backgroundColor; + } + setLayerHinting(layerHint) { + if (this._layerHint === layerHint) { + return; + } + this._layerHint = layerHint; + this.domNode.style.transform = this._layerHint ? "translate3d(0px, 0px, 0px)" : ""; + } + setBoxShadow(boxShadow) { + if (this._boxShadow === boxShadow) { + return; + } + this._boxShadow = boxShadow; + this.domNode.style.boxShadow = boxShadow; + } + setContain(contain) { + if (this._contain === contain) { + return; + } + this._contain = contain; + this.domNode.style.contain = this._contain; + } + setAttribute(name, value) { + this.domNode.setAttribute(name, value); + } + removeAttribute(name) { + this.domNode.removeAttribute(name); + } + appendChild(child) { + this.domNode.appendChild(child.domNode); + } + removeChild(child) { + this.domNode.removeChild(child.domNode); + } +}; +function numberAsPixels(value) { + return typeof value === "number" ? `${value}px` : value; +} +function createFastDomNode(domNode) { + return new FastDomNode(domNode); +} + +// ../../../../../base/browser/globalPointerMoveMonitor.ts +var GlobalPointerMoveMonitor = class { + constructor() { + this._hooks = new DisposableStore(); + this._pointerMoveCallback = null; + this._onStopCallback = null; + } + dispose() { + this.stopMonitoring(false); + this._hooks.dispose(); + } + stopMonitoring(invokeStopCallback, browserEvent) { + if (!this.isMonitoring()) { + return; + } + this._hooks.clear(); + this._pointerMoveCallback = null; + const onStopCallback = this._onStopCallback; + this._onStopCallback = null; + if (invokeStopCallback && onStopCallback) { + onStopCallback(browserEvent); + } + } + isMonitoring() { + return !!this._pointerMoveCallback; + } + startMonitoring(initialElement, pointerId, initialButtons, pointerMoveCallback, onStopCallback) { + if (this.isMonitoring()) { + this.stopMonitoring(false); + } + this._pointerMoveCallback = pointerMoveCallback; + this._onStopCallback = onStopCallback; + let eventSource = initialElement; + try { + initialElement.setPointerCapture(pointerId); + this._hooks.add(toDisposable(() => { + try { + initialElement.releasePointerCapture(pointerId); + } catch (err) { + } + })); + } catch (err) { + eventSource = getWindow(initialElement); + } + this._hooks.add(addDisposableListener( + eventSource, + EventType.POINTER_MOVE, + (e) => { + if (e.buttons !== initialButtons) { + this.stopMonitoring(true); + return; + } + e.preventDefault(); + this._pointerMoveCallback(e); + } + )); + this._hooks.add(addDisposableListener( + eventSource, + EventType.POINTER_UP, + (e) => this.stopMonitoring(true) + )); + } +}; + +// ../../../../../base/browser/ui/widget.ts +var Widget = class extends Disposable { + onclick(domNode, listener) { + this._register(addDisposableListener(domNode, EventType.CLICK, (e) => listener(new StandardMouseEvent(getWindow(domNode), e)))); + } + onmousedown(domNode, listener) { + this._register(addDisposableListener(domNode, EventType.MOUSE_DOWN, (e) => listener(new StandardMouseEvent(getWindow(domNode), e)))); + } + onmouseover(domNode, listener) { + this._register(addDisposableListener(domNode, EventType.MOUSE_OVER, (e) => listener(new StandardMouseEvent(getWindow(domNode), e)))); + } + onmouseleave(domNode, listener) { + this._register(addDisposableListener(domNode, EventType.MOUSE_LEAVE, (e) => listener(new StandardMouseEvent(getWindow(domNode), e)))); + } + onkeydown(domNode, listener) { + this._register(addDisposableListener(domNode, EventType.KEY_DOWN, (e) => listener(new StandardKeyboardEvent(e)))); + } + onkeyup(domNode, listener) { + this._register(addDisposableListener(domNode, EventType.KEY_UP, (e) => listener(new StandardKeyboardEvent(e)))); + } + oninput(domNode, listener) { + this._register(addDisposableListener(domNode, EventType.INPUT, listener)); + } + onblur(domNode, listener) { + this._register(addDisposableListener(domNode, EventType.BLUR, listener)); + } + onfocus(domNode, listener) { + this._register(addDisposableListener(domNode, EventType.FOCUS, listener)); + } + onchange(domNode, listener) { + this._register(addDisposableListener(domNode, EventType.CHANGE, listener)); + } + ignoreGesture(domNode) { + return Gesture.ignoreTarget(domNode); + } +}; + +// ../../../../../base/common/codiconsUtil.ts +var _codiconFontCharacters = /* @__PURE__ */ Object.create(null); +function register(id2, fontCharacter) { + if (isString(fontCharacter)) { + const val = _codiconFontCharacters[fontCharacter]; + if (val === void 0) { + throw new Error(`${id2} references an unknown codicon: ${fontCharacter}`); + } + fontCharacter = val; + } + _codiconFontCharacters[id2] = fontCharacter; + return { id: id2 }; +} +function getCodiconFontCharacters() { + return _codiconFontCharacters; +} + +// ../../../../../base/common/codiconsLibrary.ts +var codiconsLibrary = { + add: register("add", 6e4), + plus: register("plus", 6e4), + gistNew: register("gist-new", 6e4), + repoCreate: register("repo-create", 6e4), + lightbulb: register("lightbulb", 60001), + lightBulb: register("light-bulb", 60001), + repo: register("repo", 60002), + repoDelete: register("repo-delete", 60002), + gistFork: register("gist-fork", 60003), + repoForked: register("repo-forked", 60003), + gitPullRequest: register("git-pull-request", 60004), + gitPullRequestAbandoned: register("git-pull-request-abandoned", 60004), + recordKeys: register("record-keys", 60005), + keyboard: register("keyboard", 60005), + tag: register("tag", 60006), + gitPullRequestLabel: register("git-pull-request-label", 60006), + tagAdd: register("tag-add", 60006), + tagRemove: register("tag-remove", 60006), + person: register("person", 60007), + personFollow: register("person-follow", 60007), + personOutline: register("person-outline", 60007), + personFilled: register("person-filled", 60007), + gitBranch: register("git-branch", 60008), + gitBranchCreate: register("git-branch-create", 60008), + gitBranchDelete: register("git-branch-delete", 60008), + sourceControl: register("source-control", 60008), + mirror: register("mirror", 60009), + mirrorPublic: register("mirror-public", 60009), + star: register("star", 60010), + starAdd: register("star-add", 60010), + starDelete: register("star-delete", 60010), + starEmpty: register("star-empty", 60010), + comment: register("comment", 60011), + commentAdd: register("comment-add", 60011), + alert: register("alert", 60012), + warning: register("warning", 60012), + search: register("search", 60013), + searchSave: register("search-save", 60013), + logOut: register("log-out", 60014), + signOut: register("sign-out", 60014), + logIn: register("log-in", 60015), + signIn: register("sign-in", 60015), + eye: register("eye", 60016), + eyeUnwatch: register("eye-unwatch", 60016), + eyeWatch: register("eye-watch", 60016), + circleFilled: register("circle-filled", 60017), + primitiveDot: register("primitive-dot", 60017), + closeDirty: register("close-dirty", 60017), + debugBreakpoint: register("debug-breakpoint", 60017), + debugBreakpointDisabled: register("debug-breakpoint-disabled", 60017), + debugHint: register("debug-hint", 60017), + terminalDecorationSuccess: register("terminal-decoration-success", 60017), + primitiveSquare: register("primitive-square", 60018), + edit: register("edit", 60019), + pencil: register("pencil", 60019), + info: register("info", 60020), + issueOpened: register("issue-opened", 60020), + gistPrivate: register("gist-private", 60021), + gitForkPrivate: register("git-fork-private", 60021), + lock: register("lock", 60021), + mirrorPrivate: register("mirror-private", 60021), + close: register("close", 60022), + removeClose: register("remove-close", 60022), + x: register("x", 60022), + repoSync: register("repo-sync", 60023), + sync: register("sync", 60023), + clone: register("clone", 60024), + desktopDownload: register("desktop-download", 60024), + beaker: register("beaker", 60025), + microscope: register("microscope", 60025), + vm: register("vm", 60026), + deviceDesktop: register("device-desktop", 60026), + file: register("file", 60027), + fileText: register("file-text", 60027), + more: register("more", 60028), + ellipsis: register("ellipsis", 60028), + kebabHorizontal: register("kebab-horizontal", 60028), + mailReply: register("mail-reply", 60029), + reply: register("reply", 60029), + organization: register("organization", 60030), + organizationFilled: register("organization-filled", 60030), + organizationOutline: register("organization-outline", 60030), + newFile: register("new-file", 60031), + fileAdd: register("file-add", 60031), + newFolder: register("new-folder", 60032), + fileDirectoryCreate: register("file-directory-create", 60032), + trash: register("trash", 60033), + trashcan: register("trashcan", 60033), + history: register("history", 60034), + clock: register("clock", 60034), + folder: register("folder", 60035), + fileDirectory: register("file-directory", 60035), + symbolFolder: register("symbol-folder", 60035), + logoGithub: register("logo-github", 60036), + markGithub: register("mark-github", 60036), + github: register("github", 60036), + terminal: register("terminal", 60037), + console: register("console", 60037), + repl: register("repl", 60037), + zap: register("zap", 60038), + symbolEvent: register("symbol-event", 60038), + error: register("error", 60039), + stop: register("stop", 60039), + variable: register("variable", 60040), + symbolVariable: register("symbol-variable", 60040), + array: register("array", 60042), + symbolArray: register("symbol-array", 60042), + symbolModule: register("symbol-module", 60043), + symbolPackage: register("symbol-package", 60043), + symbolNamespace: register("symbol-namespace", 60043), + symbolObject: register("symbol-object", 60043), + symbolMethod: register("symbol-method", 60044), + symbolFunction: register("symbol-function", 60044), + symbolConstructor: register("symbol-constructor", 60044), + symbolBoolean: register("symbol-boolean", 60047), + symbolNull: register("symbol-null", 60047), + symbolNumeric: register("symbol-numeric", 60048), + symbolNumber: register("symbol-number", 60048), + symbolStructure: register("symbol-structure", 60049), + symbolStruct: register("symbol-struct", 60049), + symbolParameter: register("symbol-parameter", 60050), + symbolTypeParameter: register("symbol-type-parameter", 60050), + symbolKey: register("symbol-key", 60051), + symbolText: register("symbol-text", 60051), + symbolReference: register("symbol-reference", 60052), + goToFile: register("go-to-file", 60052), + symbolEnum: register("symbol-enum", 60053), + symbolValue: register("symbol-value", 60053), + symbolRuler: register("symbol-ruler", 60054), + symbolUnit: register("symbol-unit", 60054), + activateBreakpoints: register("activate-breakpoints", 60055), + archive: register("archive", 60056), + arrowBoth: register("arrow-both", 60057), + arrowDown: register("arrow-down", 60058), + arrowLeft: register("arrow-left", 60059), + arrowRight: register("arrow-right", 60060), + arrowSmallDown: register("arrow-small-down", 60061), + arrowSmallLeft: register("arrow-small-left", 60062), + arrowSmallRight: register("arrow-small-right", 60063), + arrowSmallUp: register("arrow-small-up", 60064), + arrowUp: register("arrow-up", 60065), + bell: register("bell", 60066), + bold: register("bold", 60067), + book: register("book", 60068), + bookmark: register("bookmark", 60069), + debugBreakpointConditionalUnverified: register("debug-breakpoint-conditional-unverified", 60070), + debugBreakpointConditional: register("debug-breakpoint-conditional", 60071), + debugBreakpointConditionalDisabled: register("debug-breakpoint-conditional-disabled", 60071), + debugBreakpointDataUnverified: register("debug-breakpoint-data-unverified", 60072), + debugBreakpointData: register("debug-breakpoint-data", 60073), + debugBreakpointDataDisabled: register("debug-breakpoint-data-disabled", 60073), + debugBreakpointLogUnverified: register("debug-breakpoint-log-unverified", 60074), + debugBreakpointLog: register("debug-breakpoint-log", 60075), + debugBreakpointLogDisabled: register("debug-breakpoint-log-disabled", 60075), + briefcase: register("briefcase", 60076), + broadcast: register("broadcast", 60077), + browser: register("browser", 60078), + bug: register("bug", 60079), + calendar: register("calendar", 60080), + caseSensitive: register("case-sensitive", 60081), + check: register("check", 60082), + checklist: register("checklist", 60083), + chevronDown: register("chevron-down", 60084), + chevronLeft: register("chevron-left", 60085), + chevronRight: register("chevron-right", 60086), + chevronUp: register("chevron-up", 60087), + chromeClose: register("chrome-close", 60088), + chromeMaximize: register("chrome-maximize", 60089), + chromeMinimize: register("chrome-minimize", 60090), + chromeRestore: register("chrome-restore", 60091), + circleOutline: register("circle-outline", 60092), + circle: register("circle", 60092), + debugBreakpointUnverified: register("debug-breakpoint-unverified", 60092), + terminalDecorationIncomplete: register("terminal-decoration-incomplete", 60092), + circleSlash: register("circle-slash", 60093), + circuitBoard: register("circuit-board", 60094), + clearAll: register("clear-all", 60095), + clippy: register("clippy", 60096), + closeAll: register("close-all", 60097), + cloudDownload: register("cloud-download", 60098), + cloudUpload: register("cloud-upload", 60099), + code: register("code", 60100), + collapseAll: register("collapse-all", 60101), + colorMode: register("color-mode", 60102), + commentDiscussion: register("comment-discussion", 60103), + creditCard: register("credit-card", 60105), + dash: register("dash", 60108), + dashboard: register("dashboard", 60109), + database: register("database", 60110), + debugContinue: register("debug-continue", 60111), + debugDisconnect: register("debug-disconnect", 60112), + debugPause: register("debug-pause", 60113), + debugRestart: register("debug-restart", 60114), + debugStart: register("debug-start", 60115), + debugStepInto: register("debug-step-into", 60116), + debugStepOut: register("debug-step-out", 60117), + debugStepOver: register("debug-step-over", 60118), + debugStop: register("debug-stop", 60119), + debug: register("debug", 60120), + deviceCameraVideo: register("device-camera-video", 60121), + deviceCamera: register("device-camera", 60122), + deviceMobile: register("device-mobile", 60123), + diffAdded: register("diff-added", 60124), + diffIgnored: register("diff-ignored", 60125), + diffModified: register("diff-modified", 60126), + diffRemoved: register("diff-removed", 60127), + diffRenamed: register("diff-renamed", 60128), + diff: register("diff", 60129), + diffSidebyside: register("diff-sidebyside", 60129), + discard: register("discard", 60130), + editorLayout: register("editor-layout", 60131), + emptyWindow: register("empty-window", 60132), + exclude: register("exclude", 60133), + extensions: register("extensions", 60134), + eyeClosed: register("eye-closed", 60135), + fileBinary: register("file-binary", 60136), + fileCode: register("file-code", 60137), + fileMedia: register("file-media", 60138), + filePdf: register("file-pdf", 60139), + fileSubmodule: register("file-submodule", 60140), + fileSymlinkDirectory: register("file-symlink-directory", 60141), + fileSymlinkFile: register("file-symlink-file", 60142), + fileZip: register("file-zip", 60143), + files: register("files", 60144), + filter: register("filter", 60145), + flame: register("flame", 60146), + foldDown: register("fold-down", 60147), + foldUp: register("fold-up", 60148), + fold: register("fold", 60149), + folderActive: register("folder-active", 60150), + folderOpened: register("folder-opened", 60151), + gear: register("gear", 60152), + gift: register("gift", 60153), + gistSecret: register("gist-secret", 60154), + gist: register("gist", 60155), + gitCommit: register("git-commit", 60156), + gitCompare: register("git-compare", 60157), + compareChanges: register("compare-changes", 60157), + gitMerge: register("git-merge", 60158), + githubAction: register("github-action", 60159), + githubAlt: register("github-alt", 60160), + globe: register("globe", 60161), + grabber: register("grabber", 60162), + graph: register("graph", 60163), + gripper: register("gripper", 60164), + heart: register("heart", 60165), + home: register("home", 60166), + horizontalRule: register("horizontal-rule", 60167), + hubot: register("hubot", 60168), + inbox: register("inbox", 60169), + issueReopened: register("issue-reopened", 60171), + issues: register("issues", 60172), + italic: register("italic", 60173), + jersey: register("jersey", 60174), + json: register("json", 60175), + kebabVertical: register("kebab-vertical", 60176), + key: register("key", 60177), + law: register("law", 60178), + lightbulbAutofix: register("lightbulb-autofix", 60179), + linkExternal: register("link-external", 60180), + link: register("link", 60181), + listOrdered: register("list-ordered", 60182), + listUnordered: register("list-unordered", 60183), + liveShare: register("live-share", 60184), + loading: register("loading", 60185), + location: register("location", 60186), + mailRead: register("mail-read", 60187), + mail: register("mail", 60188), + markdown: register("markdown", 60189), + megaphone: register("megaphone", 60190), + mention: register("mention", 60191), + milestone: register("milestone", 60192), + gitPullRequestMilestone: register("git-pull-request-milestone", 60192), + mortarBoard: register("mortar-board", 60193), + move: register("move", 60194), + multipleWindows: register("multiple-windows", 60195), + mute: register("mute", 60196), + noNewline: register("no-newline", 60197), + note: register("note", 60198), + octoface: register("octoface", 60199), + openPreview: register("open-preview", 60200), + package: register("package", 60201), + paintcan: register("paintcan", 60202), + pin: register("pin", 60203), + play: register("play", 60204), + run: register("run", 60204), + plug: register("plug", 60205), + preserveCase: register("preserve-case", 60206), + preview: register("preview", 60207), + project: register("project", 60208), + pulse: register("pulse", 60209), + question: register("question", 60210), + quote: register("quote", 60211), + radioTower: register("radio-tower", 60212), + reactions: register("reactions", 60213), + references: register("references", 60214), + refresh: register("refresh", 60215), + regex: register("regex", 60216), + remoteExplorer: register("remote-explorer", 60217), + remote: register("remote", 60218), + remove: register("remove", 60219), + replaceAll: register("replace-all", 60220), + replace: register("replace", 60221), + repoClone: register("repo-clone", 60222), + repoForcePush: register("repo-force-push", 60223), + repoPull: register("repo-pull", 60224), + repoPush: register("repo-push", 60225), + report: register("report", 60226), + requestChanges: register("request-changes", 60227), + rocket: register("rocket", 60228), + rootFolderOpened: register("root-folder-opened", 60229), + rootFolder: register("root-folder", 60230), + rss: register("rss", 60231), + ruby: register("ruby", 60232), + saveAll: register("save-all", 60233), + saveAs: register("save-as", 60234), + save: register("save", 60235), + screenFull: register("screen-full", 60236), + screenNormal: register("screen-normal", 60237), + searchStop: register("search-stop", 60238), + server: register("server", 60240), + settingsGear: register("settings-gear", 60241), + settings: register("settings", 60242), + shield: register("shield", 60243), + smiley: register("smiley", 60244), + sortPrecedence: register("sort-precedence", 60245), + splitHorizontal: register("split-horizontal", 60246), + splitVertical: register("split-vertical", 60247), + squirrel: register("squirrel", 60248), + starFull: register("star-full", 60249), + starHalf: register("star-half", 60250), + symbolClass: register("symbol-class", 60251), + symbolColor: register("symbol-color", 60252), + symbolConstant: register("symbol-constant", 60253), + symbolEnumMember: register("symbol-enum-member", 60254), + symbolField: register("symbol-field", 60255), + symbolFile: register("symbol-file", 60256), + symbolInterface: register("symbol-interface", 60257), + symbolKeyword: register("symbol-keyword", 60258), + symbolMisc: register("symbol-misc", 60259), + symbolOperator: register("symbol-operator", 60260), + symbolProperty: register("symbol-property", 60261), + wrench: register("wrench", 60261), + wrenchSubaction: register("wrench-subaction", 60261), + symbolSnippet: register("symbol-snippet", 60262), + tasklist: register("tasklist", 60263), + telescope: register("telescope", 60264), + textSize: register("text-size", 60265), + threeBars: register("three-bars", 60266), + thumbsdown: register("thumbsdown", 60267), + thumbsup: register("thumbsup", 60268), + tools: register("tools", 60269), + triangleDown: register("triangle-down", 60270), + triangleLeft: register("triangle-left", 60271), + triangleRight: register("triangle-right", 60272), + triangleUp: register("triangle-up", 60273), + twitter: register("twitter", 60274), + unfold: register("unfold", 60275), + unlock: register("unlock", 60276), + unmute: register("unmute", 60277), + unverified: register("unverified", 60278), + verified: register("verified", 60279), + versions: register("versions", 60280), + vmActive: register("vm-active", 60281), + vmOutline: register("vm-outline", 60282), + vmRunning: register("vm-running", 60283), + watch: register("watch", 60284), + whitespace: register("whitespace", 60285), + wholeWord: register("whole-word", 60286), + window: register("window", 60287), + wordWrap: register("word-wrap", 60288), + zoomIn: register("zoom-in", 60289), + zoomOut: register("zoom-out", 60290), + listFilter: register("list-filter", 60291), + listFlat: register("list-flat", 60292), + listSelection: register("list-selection", 60293), + selection: register("selection", 60293), + listTree: register("list-tree", 60294), + debugBreakpointFunctionUnverified: register("debug-breakpoint-function-unverified", 60295), + debugBreakpointFunction: register("debug-breakpoint-function", 60296), + debugBreakpointFunctionDisabled: register("debug-breakpoint-function-disabled", 60296), + debugStackframeActive: register("debug-stackframe-active", 60297), + circleSmallFilled: register("circle-small-filled", 60298), + debugStackframeDot: register("debug-stackframe-dot", 60298), + terminalDecorationMark: register("terminal-decoration-mark", 60298), + debugStackframe: register("debug-stackframe", 60299), + debugStackframeFocused: register("debug-stackframe-focused", 60299), + debugBreakpointUnsupported: register("debug-breakpoint-unsupported", 60300), + symbolString: register("symbol-string", 60301), + debugReverseContinue: register("debug-reverse-continue", 60302), + debugStepBack: register("debug-step-back", 60303), + debugRestartFrame: register("debug-restart-frame", 60304), + debugAlt: register("debug-alt", 60305), + callIncoming: register("call-incoming", 60306), + callOutgoing: register("call-outgoing", 60307), + menu: register("menu", 60308), + expandAll: register("expand-all", 60309), + feedback: register("feedback", 60310), + gitPullRequestReviewer: register("git-pull-request-reviewer", 60310), + groupByRefType: register("group-by-ref-type", 60311), + ungroupByRefType: register("ungroup-by-ref-type", 60312), + account: register("account", 60313), + gitPullRequestAssignee: register("git-pull-request-assignee", 60313), + bellDot: register("bell-dot", 60314), + debugConsole: register("debug-console", 60315), + library: register("library", 60316), + output: register("output", 60317), + runAll: register("run-all", 60318), + syncIgnored: register("sync-ignored", 60319), + pinned: register("pinned", 60320), + githubInverted: register("github-inverted", 60321), + serverProcess: register("server-process", 60322), + serverEnvironment: register("server-environment", 60323), + pass: register("pass", 60324), + issueClosed: register("issue-closed", 60324), + stopCircle: register("stop-circle", 60325), + playCircle: register("play-circle", 60326), + record: register("record", 60327), + debugAltSmall: register("debug-alt-small", 60328), + vmConnect: register("vm-connect", 60329), + cloud: register("cloud", 60330), + merge: register("merge", 60331), + export: register("export", 60332), + graphLeft: register("graph-left", 60333), + magnet: register("magnet", 60334), + notebook: register("notebook", 60335), + redo: register("redo", 60336), + checkAll: register("check-all", 60337), + pinnedDirty: register("pinned-dirty", 60338), + passFilled: register("pass-filled", 60339), + circleLargeFilled: register("circle-large-filled", 60340), + circleLarge: register("circle-large", 60341), + circleLargeOutline: register("circle-large-outline", 60341), + combine: register("combine", 60342), + gather: register("gather", 60342), + table: register("table", 60343), + variableGroup: register("variable-group", 60344), + typeHierarchy: register("type-hierarchy", 60345), + typeHierarchySub: register("type-hierarchy-sub", 60346), + typeHierarchySuper: register("type-hierarchy-super", 60347), + gitPullRequestCreate: register("git-pull-request-create", 60348), + runAbove: register("run-above", 60349), + runBelow: register("run-below", 60350), + notebookTemplate: register("notebook-template", 60351), + debugRerun: register("debug-rerun", 60352), + workspaceTrusted: register("workspace-trusted", 60353), + workspaceUntrusted: register("workspace-untrusted", 60354), + workspaceUnknown: register("workspace-unknown", 60355), + terminalCmd: register("terminal-cmd", 60356), + terminalDebian: register("terminal-debian", 60357), + terminalLinux: register("terminal-linux", 60358), + terminalPowershell: register("terminal-powershell", 60359), + terminalTmux: register("terminal-tmux", 60360), + terminalUbuntu: register("terminal-ubuntu", 60361), + terminalBash: register("terminal-bash", 60362), + arrowSwap: register("arrow-swap", 60363), + copy: register("copy", 60364), + personAdd: register("person-add", 60365), + filterFilled: register("filter-filled", 60366), + wand: register("wand", 60367), + debugLineByLine: register("debug-line-by-line", 60368), + inspect: register("inspect", 60369), + layers: register("layers", 60370), + layersDot: register("layers-dot", 60371), + layersActive: register("layers-active", 60372), + compass: register("compass", 60373), + compassDot: register("compass-dot", 60374), + compassActive: register("compass-active", 60375), + azure: register("azure", 60376), + issueDraft: register("issue-draft", 60377), + gitPullRequestClosed: register("git-pull-request-closed", 60378), + gitPullRequestDraft: register("git-pull-request-draft", 60379), + debugAll: register("debug-all", 60380), + debugCoverage: register("debug-coverage", 60381), + runErrors: register("run-errors", 60382), + folderLibrary: register("folder-library", 60383), + debugContinueSmall: register("debug-continue-small", 60384), + beakerStop: register("beaker-stop", 60385), + graphLine: register("graph-line", 60386), + graphScatter: register("graph-scatter", 60387), + pieChart: register("pie-chart", 60388), + bracket: register("bracket", 60175), + bracketDot: register("bracket-dot", 60389), + bracketError: register("bracket-error", 60390), + lockSmall: register("lock-small", 60391), + azureDevops: register("azure-devops", 60392), + verifiedFilled: register("verified-filled", 60393), + newline: register("newline", 60394), + layout: register("layout", 60395), + layoutActivitybarLeft: register("layout-activitybar-left", 60396), + layoutActivitybarRight: register("layout-activitybar-right", 60397), + layoutPanelLeft: register("layout-panel-left", 60398), + layoutPanelCenter: register("layout-panel-center", 60399), + layoutPanelJustify: register("layout-panel-justify", 60400), + layoutPanelRight: register("layout-panel-right", 60401), + layoutPanel: register("layout-panel", 60402), + layoutSidebarLeft: register("layout-sidebar-left", 60403), + layoutSidebarRight: register("layout-sidebar-right", 60404), + layoutStatusbar: register("layout-statusbar", 60405), + layoutMenubar: register("layout-menubar", 60406), + layoutCentered: register("layout-centered", 60407), + target: register("target", 60408), + indent: register("indent", 60409), + recordSmall: register("record-small", 60410), + errorSmall: register("error-small", 60411), + terminalDecorationError: register("terminal-decoration-error", 60411), + arrowCircleDown: register("arrow-circle-down", 60412), + arrowCircleLeft: register("arrow-circle-left", 60413), + arrowCircleRight: register("arrow-circle-right", 60414), + arrowCircleUp: register("arrow-circle-up", 60415), + layoutSidebarRightOff: register("layout-sidebar-right-off", 60416), + layoutPanelOff: register("layout-panel-off", 60417), + layoutSidebarLeftOff: register("layout-sidebar-left-off", 60418), + blank: register("blank", 60419), + heartFilled: register("heart-filled", 60420), + map: register("map", 60421), + mapHorizontal: register("map-horizontal", 60421), + foldHorizontal: register("fold-horizontal", 60421), + mapFilled: register("map-filled", 60422), + mapHorizontalFilled: register("map-horizontal-filled", 60422), + foldHorizontalFilled: register("fold-horizontal-filled", 60422), + circleSmall: register("circle-small", 60423), + bellSlash: register("bell-slash", 60424), + bellSlashDot: register("bell-slash-dot", 60425), + commentUnresolved: register("comment-unresolved", 60426), + gitPullRequestGoToChanges: register("git-pull-request-go-to-changes", 60427), + gitPullRequestNewChanges: register("git-pull-request-new-changes", 60428), + searchFuzzy: register("search-fuzzy", 60429), + commentDraft: register("comment-draft", 60430), + send: register("send", 60431), + sparkle: register("sparkle", 60432), + insert: register("insert", 60433), + mic: register("mic", 60434), + thumbsdownFilled: register("thumbsdown-filled", 60435), + thumbsupFilled: register("thumbsup-filled", 60436), + coffee: register("coffee", 60437), + snake: register("snake", 60438), + game: register("game", 60439), + vr: register("vr", 60440), + chip: register("chip", 60441), + piano: register("piano", 60442), + music: register("music", 60443), + micFilled: register("mic-filled", 60444), + repoFetch: register("repo-fetch", 60445), + copilot: register("copilot", 60446), + lightbulbSparkle: register("lightbulb-sparkle", 60447), + robot: register("robot", 60448), + sparkleFilled: register("sparkle-filled", 60449), + diffSingle: register("diff-single", 60450), + diffMultiple: register("diff-multiple", 60451), + surroundWith: register("surround-with", 60452), + share: register("share", 60453), + gitStash: register("git-stash", 60454), + gitStashApply: register("git-stash-apply", 60455), + gitStashPop: register("git-stash-pop", 60456), + vscode: register("vscode", 60457), + vscodeInsiders: register("vscode-insiders", 60458), + codeOss: register("code-oss", 60459), + runCoverage: register("run-coverage", 60460), + runAllCoverage: register("run-all-coverage", 60461), + coverage: register("coverage", 60462), + githubProject: register("github-project", 60463), + mapVertical: register("map-vertical", 60464), + foldVertical: register("fold-vertical", 60464), + mapVerticalFilled: register("map-vertical-filled", 60465), + foldVerticalFilled: register("fold-vertical-filled", 60465), + goToSearch: register("go-to-search", 60466), + percentage: register("percentage", 60467), + sortPercentage: register("sort-percentage", 60467), + attach: register("attach", 60468) +}; + +// ../../../../../base/common/codicons.ts +var codiconsDerived = { + dialogError: register("dialog-error", "error"), + dialogWarning: register("dialog-warning", "warning"), + dialogInfo: register("dialog-info", "info"), + dialogClose: register("dialog-close", "close"), + treeItemExpanded: register("tree-item-expanded", "chevron-down"), + // collapsed is done with rotation + treeFilterOnTypeOn: register("tree-filter-on-type-on", "list-filter"), + treeFilterOnTypeOff: register("tree-filter-on-type-off", "list-selection"), + treeFilterClear: register("tree-filter-clear", "close"), + treeItemLoading: register("tree-item-loading", "loading"), + menuSelection: register("menu-selection", "check"), + menuSubmenu: register("menu-submenu", "chevron-right"), + menuBarMore: register("menubar-more", "more"), + scrollbarButtonLeft: register("scrollbar-button-left", "triangle-left"), + scrollbarButtonRight: register("scrollbar-button-right", "triangle-right"), + scrollbarButtonUp: register("scrollbar-button-up", "triangle-up"), + scrollbarButtonDown: register("scrollbar-button-down", "triangle-down"), + toolBarMore: register("toolbar-more", "more"), + quickInputBack: register("quick-input-back", "arrow-left"), + dropDownButton: register("drop-down-button", 60084), + symbolCustomColor: register("symbol-customcolor", 60252), + exportIcon: register("export", 60332), + workspaceUnspecified: register("workspace-unspecified", 60355), + newLine: register("newline", 60394), + thumbsDownFilled: register("thumbsdown-filled", 60435), + thumbsUpFilled: register("thumbsup-filled", 60436), + gitFetch: register("git-fetch", 60445), + lightbulbSparkleAutofix: register("lightbulb-sparkle-autofix", 60447), + debugBreakpointPending: register("debug-breakpoint-pending", 60377) +}; +var Codicon = { + ...codiconsLibrary, + ...codiconsDerived +}; + +// ../../../../../base/common/themables.ts +var ThemeColor; +((ThemeColor2) => { + function isThemeColor(obj) { + return obj && typeof obj === "object" && typeof obj.id === "string"; + } + ThemeColor2.isThemeColor = isThemeColor; +})(ThemeColor || (ThemeColor = {})); +var ThemeIcon; +((ThemeIcon2) => { + ThemeIcon2.iconNameSegment = "[A-Za-z0-9]+"; + ThemeIcon2.iconNameExpression = "[A-Za-z0-9-]+"; + ThemeIcon2.iconModifierExpression = "~[A-Za-z]+"; + ThemeIcon2.iconNameCharacter = "[A-Za-z0-9~-]"; + const ThemeIconIdRegex = new RegExp(`^(${ThemeIcon2.iconNameExpression})(${ThemeIcon2.iconModifierExpression})?$`); + function asClassNameArray(icon) { + const match = ThemeIconIdRegex.exec(icon.id); + if (!match) { + return asClassNameArray(Codicon.error); + } + const [, id2, modifier] = match; + const classNames = ["codicon", "codicon-" + id2]; + if (modifier) { + classNames.push("codicon-modifier-" + modifier.substring(1)); + } + return classNames; + } + ThemeIcon2.asClassNameArray = asClassNameArray; + function asClassName(icon) { + return asClassNameArray(icon).join(" "); + } + ThemeIcon2.asClassName = asClassName; + function asCSSSelector(icon) { + return "." + asClassNameArray(icon).join("."); + } + ThemeIcon2.asCSSSelector = asCSSSelector; + function isThemeIcon(obj) { + return obj && typeof obj === "object" && typeof obj.id === "string" && (typeof obj.color === "undefined" || ThemeColor.isThemeColor(obj.color)); + } + ThemeIcon2.isThemeIcon = isThemeIcon; + const _regexFromString = new RegExp(`^\\$\\((${ThemeIcon2.iconNameExpression}(?:${ThemeIcon2.iconModifierExpression})?)\\)$`); + function fromString(str) { + const match = _regexFromString.exec(str); + if (!match) { + return void 0; + } + const [, name] = match; + return { id: name }; + } + ThemeIcon2.fromString = fromString; + function fromId(id2) { + return { id: id2 }; + } + ThemeIcon2.fromId = fromId; + function modify(icon, modifier) { + let id2 = icon.id; + const tildeIndex = id2.lastIndexOf("~"); + if (tildeIndex !== -1) { + id2 = id2.substring(0, tildeIndex); + } + if (modifier) { + id2 = `${id2}~${modifier}`; + } + return { id: id2 }; + } + ThemeIcon2.modify = modify; + function getModifier(icon) { + const tildeIndex = icon.id.lastIndexOf("~"); + if (tildeIndex !== -1) { + return icon.id.substring(tildeIndex + 1); + } + return void 0; + } + ThemeIcon2.getModifier = getModifier; + function isEqual2(ti1, ti2) { + return ti1.id === ti2.id && ti1.color?.id === ti2.color?.id; + } + ThemeIcon2.isEqual = isEqual2; +})(ThemeIcon || (ThemeIcon = {})); + +// ../../../../../base/browser/ui/scrollbar/scrollbarArrow.ts +var ARROW_IMG_SIZE = 11; +var ScrollbarArrow = class extends Widget { + constructor(opts) { + super(); + this._onActivate = opts.onActivate; + this.bgDomNode = document.createElement("div"); + this.bgDomNode.className = "arrow-background"; + this.bgDomNode.style.position = "absolute"; + this.bgDomNode.style.width = opts.bgWidth + "px"; + this.bgDomNode.style.height = opts.bgHeight + "px"; + if (typeof opts.top !== "undefined") { + this.bgDomNode.style.top = "0px"; + } + if (typeof opts.left !== "undefined") { + this.bgDomNode.style.left = "0px"; + } + if (typeof opts.bottom !== "undefined") { + this.bgDomNode.style.bottom = "0px"; + } + if (typeof opts.right !== "undefined") { + this.bgDomNode.style.right = "0px"; + } + this.domNode = document.createElement("div"); + this.domNode.className = opts.className; + this.domNode.classList.add(...ThemeIcon.asClassNameArray(opts.icon)); + this.domNode.style.position = "absolute"; + this.domNode.style.width = ARROW_IMG_SIZE + "px"; + this.domNode.style.height = ARROW_IMG_SIZE + "px"; + if (typeof opts.top !== "undefined") { + this.domNode.style.top = opts.top + "px"; + } + if (typeof opts.left !== "undefined") { + this.domNode.style.left = opts.left + "px"; + } + if (typeof opts.bottom !== "undefined") { + this.domNode.style.bottom = opts.bottom + "px"; + } + if (typeof opts.right !== "undefined") { + this.domNode.style.right = opts.right + "px"; + } + this._pointerMoveMonitor = this._register(new GlobalPointerMoveMonitor()); + this._register(addStandardDisposableListener(this.bgDomNode, EventType.POINTER_DOWN, (e) => this._arrowPointerDown(e))); + this._register(addStandardDisposableListener(this.domNode, EventType.POINTER_DOWN, (e) => this._arrowPointerDown(e))); + this._pointerdownRepeatTimer = this._register(new WindowIntervalTimer()); + this._pointerdownScheduleRepeatTimer = this._register(new TimeoutTimer()); + } + _arrowPointerDown(e) { + if (!e.target || !(e.target instanceof Element)) { + return; + } + const scheduleRepeater = () => { + this._pointerdownRepeatTimer.cancelAndSet(() => this._onActivate(), 1e3 / 24, getWindow(e)); + }; + this._onActivate(); + this._pointerdownRepeatTimer.cancel(); + this._pointerdownScheduleRepeatTimer.cancelAndSet(scheduleRepeater, 200); + this._pointerMoveMonitor.startMonitoring( + e.target, + e.pointerId, + e.buttons, + (pointerMoveData) => { + }, + () => { + this._pointerdownRepeatTimer.cancel(); + this._pointerdownScheduleRepeatTimer.cancel(); + } + ); + e.preventDefault(); + } +}; + +// ../../../../../base/common/scrollable.ts +var ScrollState = class _ScrollState { + constructor(_forceIntegerValues, width, scrollWidth, scrollLeft, height, scrollHeight, scrollTop) { + this._forceIntegerValues = _forceIntegerValues; + this._scrollStateBrand = void 0; + if (this._forceIntegerValues) { + width = width | 0; + scrollWidth = scrollWidth | 0; + scrollLeft = scrollLeft | 0; + height = height | 0; + scrollHeight = scrollHeight | 0; + scrollTop = scrollTop | 0; + } + this.rawScrollLeft = scrollLeft; + this.rawScrollTop = scrollTop; + if (width < 0) { + width = 0; + } + if (scrollLeft + width > scrollWidth) { + scrollLeft = scrollWidth - width; + } + if (scrollLeft < 0) { + scrollLeft = 0; + } + if (height < 0) { + height = 0; + } + if (scrollTop + height > scrollHeight) { + scrollTop = scrollHeight - height; + } + if (scrollTop < 0) { + scrollTop = 0; + } + this.width = width; + this.scrollWidth = scrollWidth; + this.scrollLeft = scrollLeft; + this.height = height; + this.scrollHeight = scrollHeight; + this.scrollTop = scrollTop; + } + equals(other) { + return this.rawScrollLeft === other.rawScrollLeft && this.rawScrollTop === other.rawScrollTop && this.width === other.width && this.scrollWidth === other.scrollWidth && this.scrollLeft === other.scrollLeft && this.height === other.height && this.scrollHeight === other.scrollHeight && this.scrollTop === other.scrollTop; + } + withScrollDimensions(update, useRawScrollPositions) { + return new _ScrollState( + this._forceIntegerValues, + typeof update.width !== "undefined" ? update.width : this.width, + typeof update.scrollWidth !== "undefined" ? update.scrollWidth : this.scrollWidth, + useRawScrollPositions ? this.rawScrollLeft : this.scrollLeft, + typeof update.height !== "undefined" ? update.height : this.height, + typeof update.scrollHeight !== "undefined" ? update.scrollHeight : this.scrollHeight, + useRawScrollPositions ? this.rawScrollTop : this.scrollTop + ); + } + withScrollPosition(update) { + return new _ScrollState( + this._forceIntegerValues, + this.width, + this.scrollWidth, + typeof update.scrollLeft !== "undefined" ? update.scrollLeft : this.rawScrollLeft, + this.height, + this.scrollHeight, + typeof update.scrollTop !== "undefined" ? update.scrollTop : this.rawScrollTop + ); + } + createScrollEvent(previous, inSmoothScrolling) { + const widthChanged = this.width !== previous.width; + const scrollWidthChanged = this.scrollWidth !== previous.scrollWidth; + const scrollLeftChanged = this.scrollLeft !== previous.scrollLeft; + const heightChanged = this.height !== previous.height; + const scrollHeightChanged = this.scrollHeight !== previous.scrollHeight; + const scrollTopChanged = this.scrollTop !== previous.scrollTop; + return { + inSmoothScrolling, + oldWidth: previous.width, + oldScrollWidth: previous.scrollWidth, + oldScrollLeft: previous.scrollLeft, + width: this.width, + scrollWidth: this.scrollWidth, + scrollLeft: this.scrollLeft, + oldHeight: previous.height, + oldScrollHeight: previous.scrollHeight, + oldScrollTop: previous.scrollTop, + height: this.height, + scrollHeight: this.scrollHeight, + scrollTop: this.scrollTop, + widthChanged, + scrollWidthChanged, + scrollLeftChanged, + heightChanged, + scrollHeightChanged, + scrollTopChanged + }; + } +}; +var Scrollable = class extends Disposable { + constructor(options2) { + super(); + this._scrollableBrand = void 0; + this._onScroll = this._register(new Emitter()); + this.onScroll = this._onScroll.event; + this._smoothScrollDuration = options2.smoothScrollDuration; + this._scheduleAtNextAnimationFrame = options2.scheduleAtNextAnimationFrame; + this._state = new ScrollState(options2.forceIntegerValues, 0, 0, 0, 0, 0, 0); + this._smoothScrolling = null; + } + dispose() { + if (this._smoothScrolling) { + this._smoothScrolling.dispose(); + this._smoothScrolling = null; + } + super.dispose(); + } + setSmoothScrollDuration(smoothScrollDuration) { + this._smoothScrollDuration = smoothScrollDuration; + } + validateScrollPosition(scrollPosition) { + return this._state.withScrollPosition(scrollPosition); + } + getScrollDimensions() { + return this._state; + } + setScrollDimensions(dimensions, useRawScrollPositions) { + const newState = this._state.withScrollDimensions(dimensions, useRawScrollPositions); + this._setState(newState, Boolean(this._smoothScrolling)); + this._smoothScrolling?.acceptScrollDimensions(this._state); + } + /** + * Returns the final scroll position that the instance will have once the smooth scroll animation concludes. + * If no scroll animation is occurring, it will return the current scroll position instead. + */ + getFutureScrollPosition() { + if (this._smoothScrolling) { + return this._smoothScrolling.to; + } + return this._state; + } + /** + * Returns the current scroll position. + * Note: This result might be an intermediate scroll position, as there might be an ongoing smooth scroll animation. + */ + getCurrentScrollPosition() { + return this._state; + } + setScrollPositionNow(update) { + const newState = this._state.withScrollPosition(update); + if (this._smoothScrolling) { + this._smoothScrolling.dispose(); + this._smoothScrolling = null; + } + this._setState(newState, false); + } + setScrollPositionSmooth(update, reuseAnimation) { + if (this._smoothScrollDuration === 0) { + return this.setScrollPositionNow(update); + } + if (this._smoothScrolling) { + update = { + scrollLeft: typeof update.scrollLeft === "undefined" ? this._smoothScrolling.to.scrollLeft : update.scrollLeft, + scrollTop: typeof update.scrollTop === "undefined" ? this._smoothScrolling.to.scrollTop : update.scrollTop + }; + const validTarget = this._state.withScrollPosition(update); + if (this._smoothScrolling.to.scrollLeft === validTarget.scrollLeft && this._smoothScrolling.to.scrollTop === validTarget.scrollTop) { + return; + } + let newSmoothScrolling; + if (reuseAnimation) { + newSmoothScrolling = new SmoothScrollingOperation(this._smoothScrolling.from, validTarget, this._smoothScrolling.startTime, this._smoothScrolling.duration); + } else { + newSmoothScrolling = this._smoothScrolling.combine(this._state, validTarget, this._smoothScrollDuration); + } + this._smoothScrolling.dispose(); + this._smoothScrolling = newSmoothScrolling; + } else { + const validTarget = this._state.withScrollPosition(update); + this._smoothScrolling = SmoothScrollingOperation.start(this._state, validTarget, this._smoothScrollDuration); + } + this._smoothScrolling.animationFrameDisposable = this._scheduleAtNextAnimationFrame(() => { + if (!this._smoothScrolling) { + return; + } + this._smoothScrolling.animationFrameDisposable = null; + this._performSmoothScrolling(); + }); + } + hasPendingScrollAnimation() { + return Boolean(this._smoothScrolling); + } + _performSmoothScrolling() { + if (!this._smoothScrolling) { + return; + } + const update = this._smoothScrolling.tick(); + const newState = this._state.withScrollPosition(update); + this._setState(newState, true); + if (!this._smoothScrolling) { + return; + } + if (update.isDone) { + this._smoothScrolling.dispose(); + this._smoothScrolling = null; + return; + } + this._smoothScrolling.animationFrameDisposable = this._scheduleAtNextAnimationFrame(() => { + if (!this._smoothScrolling) { + return; + } + this._smoothScrolling.animationFrameDisposable = null; + this._performSmoothScrolling(); + }); + } + _setState(newState, inSmoothScrolling) { + const oldState = this._state; + if (oldState.equals(newState)) { + return; + } + this._state = newState; + this._onScroll.fire(this._state.createScrollEvent(oldState, inSmoothScrolling)); + } +}; +var SmoothScrollingUpdate = class { + constructor(scrollLeft, scrollTop, isDone) { + this.scrollLeft = scrollLeft; + this.scrollTop = scrollTop; + this.isDone = isDone; + } +}; +function createEaseOutCubic(from, to) { + const delta = to - from; + return function(completion) { + return from + delta * easeOutCubic(completion); + }; +} +function createComposed(a, b, cut) { + return function(completion) { + if (completion < cut) { + return a(completion / cut); + } + return b((completion - cut) / (1 - cut)); + }; +} +var SmoothScrollingOperation = class _SmoothScrollingOperation { + constructor(from, to, startTime, duration) { + this.from = from; + this.to = to; + this.duration = duration; + this.startTime = startTime; + this.animationFrameDisposable = null; + this._initAnimations(); + } + _initAnimations() { + this.scrollLeft = this._initAnimation(this.from.scrollLeft, this.to.scrollLeft, this.to.width); + this.scrollTop = this._initAnimation(this.from.scrollTop, this.to.scrollTop, this.to.height); + } + _initAnimation(from, to, viewportSize) { + const delta = Math.abs(from - to); + if (delta > 2.5 * viewportSize) { + let stop1, stop2; + if (from < to) { + stop1 = from + 0.75 * viewportSize; + stop2 = to - 0.75 * viewportSize; + } else { + stop1 = from - 0.75 * viewportSize; + stop2 = to + 0.75 * viewportSize; + } + return createComposed(createEaseOutCubic(from, stop1), createEaseOutCubic(stop2, to), 0.33); + } + return createEaseOutCubic(from, to); + } + dispose() { + if (this.animationFrameDisposable !== null) { + this.animationFrameDisposable.dispose(); + this.animationFrameDisposable = null; + } + } + acceptScrollDimensions(state) { + this.to = state.withScrollPosition(this.to); + this._initAnimations(); + } + tick() { + return this._tick(Date.now()); + } + _tick(now) { + const completion = (now - this.startTime) / this.duration; + if (completion < 1) { + const newScrollLeft = this.scrollLeft(completion); + const newScrollTop = this.scrollTop(completion); + return new SmoothScrollingUpdate(newScrollLeft, newScrollTop, false); + } + return new SmoothScrollingUpdate(this.to.scrollLeft, this.to.scrollTop, true); + } + combine(from, to, duration) { + return _SmoothScrollingOperation.start(from, to, duration); + } + static start(from, to, duration) { + duration = duration + 10; + const startTime = Date.now() - 10; + return new _SmoothScrollingOperation(from, to, startTime, duration); + } +}; +function easeInCubic(t) { + return Math.pow(t, 3); +} +function easeOutCubic(t) { + return 1 - easeInCubic(1 - t); +} + +// ../../../../../base/browser/ui/scrollbar/scrollbarVisibilityController.ts +var ScrollbarVisibilityController = class extends Disposable { + constructor(visibility, visibleClassName, invisibleClassName) { + super(); + this._visibility = visibility; + this._visibleClassName = visibleClassName; + this._invisibleClassName = invisibleClassName; + this._domNode = null; + this._isVisible = false; + this._isNeeded = false; + this._rawShouldBeVisible = false; + this._shouldBeVisible = false; + this._revealTimer = this._register(new TimeoutTimer()); + } + setVisibility(visibility) { + if (this._visibility !== visibility) { + this._visibility = visibility; + this._updateShouldBeVisible(); + } + } + // ----------------- Hide / Reveal + setShouldBeVisible(rawShouldBeVisible) { + this._rawShouldBeVisible = rawShouldBeVisible; + this._updateShouldBeVisible(); + } + _applyVisibilitySetting() { + if (this._visibility === 2 /* Hidden */) { + return false; + } + if (this._visibility === 3 /* Visible */) { + return true; + } + return this._rawShouldBeVisible; + } + _updateShouldBeVisible() { + const shouldBeVisible = this._applyVisibilitySetting(); + if (this._shouldBeVisible !== shouldBeVisible) { + this._shouldBeVisible = shouldBeVisible; + this.ensureVisibility(); + } + } + setIsNeeded(isNeeded) { + if (this._isNeeded !== isNeeded) { + this._isNeeded = isNeeded; + this.ensureVisibility(); + } + } + setDomNode(domNode) { + this._domNode = domNode; + this._domNode.setClassName(this._invisibleClassName); + this.setShouldBeVisible(false); + } + ensureVisibility() { + if (!this._isNeeded) { + this._hide(false); + return; + } + if (this._shouldBeVisible) { + this._reveal(); + } else { + this._hide(true); + } + } + _reveal() { + if (this._isVisible) { + return; + } + this._isVisible = true; + this._revealTimer.setIfNotSet(() => { + this._domNode?.setClassName(this._visibleClassName); + }, 0); + } + _hide(withFadeAway) { + this._revealTimer.cancel(); + if (!this._isVisible) { + return; + } + this._isVisible = false; + this._domNode?.setClassName(this._invisibleClassName + (withFadeAway ? " fade" : "")); + } +}; + +// ../../../../../base/browser/ui/scrollbar/abstractScrollbar.ts +var POINTER_DRAG_RESET_DISTANCE = 140; +var AbstractScrollbar = class extends Widget { + constructor(opts) { + super(); + this._lazyRender = opts.lazyRender; + this._host = opts.host; + this._scrollable = opts.scrollable; + this._scrollByPage = opts.scrollByPage; + this._scrollbarState = opts.scrollbarState; + this._visibilityController = this._register(new ScrollbarVisibilityController(opts.visibility, "visible scrollbar " + opts.extraScrollbarClassName, "invisible scrollbar " + opts.extraScrollbarClassName)); + this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()); + this._pointerMoveMonitor = this._register(new GlobalPointerMoveMonitor()); + this._shouldRender = true; + this.domNode = createFastDomNode(document.createElement("div")); + this.domNode.setAttribute("role", "presentation"); + this.domNode.setAttribute("aria-hidden", "true"); + this._visibilityController.setDomNode(this.domNode); + this.domNode.setPosition("absolute"); + this._register(addDisposableListener(this.domNode.domNode, EventType.POINTER_DOWN, (e) => this._domNodePointerDown(e))); + } + // ----------------- creation + /** + * Creates the dom node for an arrow & adds it to the container + */ + _createArrow(opts) { + const arrow = this._register(new ScrollbarArrow(opts)); + this.domNode.domNode.appendChild(arrow.bgDomNode); + this.domNode.domNode.appendChild(arrow.domNode); + } + /** + * Creates the slider dom node, adds it to the container & hooks up the events + */ + _createSlider(top, left, width, height) { + this.slider = createFastDomNode(document.createElement("div")); + this.slider.setClassName("slider"); + this.slider.setPosition("absolute"); + this.slider.setTop(top); + this.slider.setLeft(left); + if (typeof width === "number") { + this.slider.setWidth(width); + } + if (typeof height === "number") { + this.slider.setHeight(height); + } + this.slider.setLayerHinting(true); + this.slider.setContain("strict"); + this.domNode.domNode.appendChild(this.slider.domNode); + this._register(addDisposableListener( + this.slider.domNode, + EventType.POINTER_DOWN, + (e) => { + if (e.button === 0) { + e.preventDefault(); + this._sliderPointerDown(e); + } + } + )); + this.onclick(this.slider.domNode, (e) => { + if (e.leftButton) { + e.stopPropagation(); + } + }); + } + // ----------------- Update state + _onElementSize(visibleSize) { + if (this._scrollbarState.setVisibleSize(visibleSize)) { + this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()); + this._shouldRender = true; + if (!this._lazyRender) { + this.render(); + } + } + return this._shouldRender; + } + _onElementScrollSize(elementScrollSize) { + if (this._scrollbarState.setScrollSize(elementScrollSize)) { + this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()); + this._shouldRender = true; + if (!this._lazyRender) { + this.render(); + } + } + return this._shouldRender; + } + _onElementScrollPosition(elementScrollPosition) { + if (this._scrollbarState.setScrollPosition(elementScrollPosition)) { + this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()); + this._shouldRender = true; + if (!this._lazyRender) { + this.render(); + } + } + return this._shouldRender; + } + // ----------------- rendering + beginReveal() { + this._visibilityController.setShouldBeVisible(true); + } + beginHide() { + this._visibilityController.setShouldBeVisible(false); + } + render() { + if (!this._shouldRender) { + return; + } + this._shouldRender = false; + this._renderDomNode(this._scrollbarState.getRectangleLargeSize(), this._scrollbarState.getRectangleSmallSize()); + this._updateSlider(this._scrollbarState.getSliderSize(), this._scrollbarState.getArrowSize() + this._scrollbarState.getSliderPosition()); + } + // ----------------- DOM events + _domNodePointerDown(e) { + if (e.target !== this.domNode.domNode) { + return; + } + this._onPointerDown(e); + } + delegatePointerDown(e) { + const domTop = this.domNode.domNode.getClientRects()[0].top; + const sliderStart = domTop + this._scrollbarState.getSliderPosition(); + const sliderStop = domTop + this._scrollbarState.getSliderPosition() + this._scrollbarState.getSliderSize(); + const pointerPos = this._sliderPointerPosition(e); + if (sliderStart <= pointerPos && pointerPos <= sliderStop) { + if (e.button === 0) { + e.preventDefault(); + this._sliderPointerDown(e); + } + } else { + this._onPointerDown(e); + } + } + _onPointerDown(e) { + let offsetX; + let offsetY; + if (e.target === this.domNode.domNode && typeof e.offsetX === "number" && typeof e.offsetY === "number") { + offsetX = e.offsetX; + offsetY = e.offsetY; + } else { + const domNodePosition = getDomNodePagePosition(this.domNode.domNode); + offsetX = e.pageX - domNodePosition.left; + offsetY = e.pageY - domNodePosition.top; + } + const offset = this._pointerDownRelativePosition(offsetX, offsetY); + this._setDesiredScrollPositionNow( + this._scrollByPage ? this._scrollbarState.getDesiredScrollPositionFromOffsetPaged(offset) : this._scrollbarState.getDesiredScrollPositionFromOffset(offset) + ); + if (e.button === 0) { + e.preventDefault(); + this._sliderPointerDown(e); + } + } + _sliderPointerDown(e) { + if (!e.target || !(e.target instanceof Element)) { + return; + } + const initialPointerPosition = this._sliderPointerPosition(e); + const initialPointerOrthogonalPosition = this._sliderOrthogonalPointerPosition(e); + const initialScrollbarState = this._scrollbarState.clone(); + this.slider.toggleClassName("active", true); + this._pointerMoveMonitor.startMonitoring( + e.target, + e.pointerId, + e.buttons, + (pointerMoveData) => { + const pointerOrthogonalPosition = this._sliderOrthogonalPointerPosition(pointerMoveData); + const pointerOrthogonalDelta = Math.abs(pointerOrthogonalPosition - initialPointerOrthogonalPosition); + if (isWindows && pointerOrthogonalDelta > POINTER_DRAG_RESET_DISTANCE) { + this._setDesiredScrollPositionNow(initialScrollbarState.getScrollPosition()); + return; + } + const pointerPosition = this._sliderPointerPosition(pointerMoveData); + const pointerDelta = pointerPosition - initialPointerPosition; + this._setDesiredScrollPositionNow(initialScrollbarState.getDesiredScrollPositionFromDelta(pointerDelta)); + }, + () => { + this.slider.toggleClassName("active", false); + this._host.onDragEnd(); + } + ); + this._host.onDragStart(); + } + _setDesiredScrollPositionNow(_desiredScrollPosition) { + const desiredScrollPosition = {}; + this.writeScrollPosition(desiredScrollPosition, _desiredScrollPosition); + this._scrollable.setScrollPositionNow(desiredScrollPosition); + } + updateScrollbarSize(scrollbarSize) { + this._updateScrollbarSize(scrollbarSize); + this._scrollbarState.setScrollbarSize(scrollbarSize); + this._shouldRender = true; + if (!this._lazyRender) { + this.render(); + } + } + isNeeded() { + return this._scrollbarState.isNeeded(); + } +}; + +// ../../../../../base/browser/ui/scrollbar/scrollbarState.ts +var MINIMUM_SLIDER_SIZE = 20; +var ScrollbarState = class _ScrollbarState { + constructor(arrowSize, scrollbarSize, oppositeScrollbarSize, visibleSize, scrollSize, scrollPosition) { + this._scrollbarSize = Math.round(scrollbarSize); + this._oppositeScrollbarSize = Math.round(oppositeScrollbarSize); + this._arrowSize = Math.round(arrowSize); + this._visibleSize = visibleSize; + this._scrollSize = scrollSize; + this._scrollPosition = scrollPosition; + this._computedAvailableSize = 0; + this._computedIsNeeded = false; + this._computedSliderSize = 0; + this._computedSliderRatio = 0; + this._computedSliderPosition = 0; + this._refreshComputedValues(); + } + clone() { + return new _ScrollbarState(this._arrowSize, this._scrollbarSize, this._oppositeScrollbarSize, this._visibleSize, this._scrollSize, this._scrollPosition); + } + setVisibleSize(visibleSize) { + const iVisibleSize = Math.round(visibleSize); + if (this._visibleSize !== iVisibleSize) { + this._visibleSize = iVisibleSize; + this._refreshComputedValues(); + return true; + } + return false; + } + setScrollSize(scrollSize) { + const iScrollSize = Math.round(scrollSize); + if (this._scrollSize !== iScrollSize) { + this._scrollSize = iScrollSize; + this._refreshComputedValues(); + return true; + } + return false; + } + setScrollPosition(scrollPosition) { + const iScrollPosition = Math.round(scrollPosition); + if (this._scrollPosition !== iScrollPosition) { + this._scrollPosition = iScrollPosition; + this._refreshComputedValues(); + return true; + } + return false; + } + setScrollbarSize(scrollbarSize) { + this._scrollbarSize = Math.round(scrollbarSize); + } + setOppositeScrollbarSize(oppositeScrollbarSize) { + this._oppositeScrollbarSize = Math.round(oppositeScrollbarSize); + } + static _computeValues(oppositeScrollbarSize, arrowSize, visibleSize, scrollSize, scrollPosition) { + const computedAvailableSize = Math.max(0, visibleSize - oppositeScrollbarSize); + const computedRepresentableSize = Math.max(0, computedAvailableSize - 2 * arrowSize); + const computedIsNeeded = scrollSize > 0 && scrollSize > visibleSize; + if (!computedIsNeeded) { + return { + computedAvailableSize: Math.round(computedAvailableSize), + computedIsNeeded, + computedSliderSize: Math.round(computedRepresentableSize), + computedSliderRatio: 0, + computedSliderPosition: 0 + }; + } + const computedSliderSize = Math.round(Math.max(MINIMUM_SLIDER_SIZE, Math.floor(visibleSize * computedRepresentableSize / scrollSize))); + const computedSliderRatio = (computedRepresentableSize - computedSliderSize) / (scrollSize - visibleSize); + const computedSliderPosition = scrollPosition * computedSliderRatio; + return { + computedAvailableSize: Math.round(computedAvailableSize), + computedIsNeeded, + computedSliderSize: Math.round(computedSliderSize), + computedSliderRatio, + computedSliderPosition: Math.round(computedSliderPosition) + }; + } + _refreshComputedValues() { + const r = _ScrollbarState._computeValues(this._oppositeScrollbarSize, this._arrowSize, this._visibleSize, this._scrollSize, this._scrollPosition); + this._computedAvailableSize = r.computedAvailableSize; + this._computedIsNeeded = r.computedIsNeeded; + this._computedSliderSize = r.computedSliderSize; + this._computedSliderRatio = r.computedSliderRatio; + this._computedSliderPosition = r.computedSliderPosition; + } + getArrowSize() { + return this._arrowSize; + } + getScrollPosition() { + return this._scrollPosition; + } + getRectangleLargeSize() { + return this._computedAvailableSize; + } + getRectangleSmallSize() { + return this._scrollbarSize; + } + isNeeded() { + return this._computedIsNeeded; + } + getSliderSize() { + return this._computedSliderSize; + } + getSliderPosition() { + return this._computedSliderPosition; + } + /** + * Compute a desired `scrollPosition` such that `offset` ends up in the center of the slider. + * `offset` is based on the same coordinate system as the `sliderPosition`. + */ + getDesiredScrollPositionFromOffset(offset) { + if (!this._computedIsNeeded) { + return 0; + } + const desiredSliderPosition = offset - this._arrowSize - this._computedSliderSize / 2; + return Math.round(desiredSliderPosition / this._computedSliderRatio); + } + /** + * Compute a desired `scrollPosition` from if offset is before or after the slider position. + * If offset is before slider, treat as a page up (or left). If after, page down (or right). + * `offset` and `_computedSliderPosition` are based on the same coordinate system. + * `_visibleSize` corresponds to a "page" of lines in the returned coordinate system. + */ + getDesiredScrollPositionFromOffsetPaged(offset) { + if (!this._computedIsNeeded) { + return 0; + } + const correctedOffset = offset - this._arrowSize; + let desiredScrollPosition = this._scrollPosition; + if (correctedOffset < this._computedSliderPosition) { + desiredScrollPosition -= this._visibleSize; + } else { + desiredScrollPosition += this._visibleSize; + } + return desiredScrollPosition; + } + /** + * Compute a desired `scrollPosition` such that the slider moves by `delta`. + */ + getDesiredScrollPositionFromDelta(delta) { + if (!this._computedIsNeeded) { + return 0; + } + const desiredSliderPosition = this._computedSliderPosition + delta; + return Math.round(desiredSliderPosition / this._computedSliderRatio); + } +}; + +// ../../../../../base/browser/ui/scrollbar/horizontalScrollbar.ts +var HorizontalScrollbar = class extends AbstractScrollbar { + constructor(scrollable, options2, host) { + const scrollDimensions = scrollable.getScrollDimensions(); + const scrollPosition = scrollable.getCurrentScrollPosition(); + super({ + lazyRender: options2.lazyRender, + host, + scrollbarState: new ScrollbarState( + options2.horizontalHasArrows ? options2.arrowSize : 0, + options2.horizontal === 2 /* Hidden */ ? 0 : options2.horizontalScrollbarSize, + options2.vertical === 2 /* Hidden */ ? 0 : options2.verticalScrollbarSize, + scrollDimensions.width, + scrollDimensions.scrollWidth, + scrollPosition.scrollLeft + ), + visibility: options2.horizontal, + extraScrollbarClassName: "horizontal", + scrollable, + scrollByPage: options2.scrollByPage + }); + if (options2.horizontalHasArrows) { + const arrowDelta = (options2.arrowSize - ARROW_IMG_SIZE) / 2; + const scrollbarDelta = (options2.horizontalScrollbarSize - ARROW_IMG_SIZE) / 2; + this._createArrow({ + className: "scra", + icon: Codicon.scrollbarButtonLeft, + top: scrollbarDelta, + left: arrowDelta, + bottom: void 0, + right: void 0, + bgWidth: options2.arrowSize, + bgHeight: options2.horizontalScrollbarSize, + onActivate: () => this._host.onMouseWheel(new StandardWheelEvent(null, 1, 0)) + }); + this._createArrow({ + className: "scra", + icon: Codicon.scrollbarButtonRight, + top: scrollbarDelta, + left: void 0, + bottom: void 0, + right: arrowDelta, + bgWidth: options2.arrowSize, + bgHeight: options2.horizontalScrollbarSize, + onActivate: () => this._host.onMouseWheel(new StandardWheelEvent(null, -1, 0)) + }); + } + this._createSlider(Math.floor((options2.horizontalScrollbarSize - options2.horizontalSliderSize) / 2), 0, void 0, options2.horizontalSliderSize); + } + _updateSlider(sliderSize, sliderPosition) { + this.slider.setWidth(sliderSize); + this.slider.setLeft(sliderPosition); + } + _renderDomNode(largeSize, smallSize) { + this.domNode.setWidth(largeSize); + this.domNode.setHeight(smallSize); + this.domNode.setLeft(0); + this.domNode.setBottom(0); + } + onDidScroll(e) { + this._shouldRender = this._onElementScrollSize(e.scrollWidth) || this._shouldRender; + this._shouldRender = this._onElementScrollPosition(e.scrollLeft) || this._shouldRender; + this._shouldRender = this._onElementSize(e.width) || this._shouldRender; + return this._shouldRender; + } + _pointerDownRelativePosition(offsetX, offsetY) { + return offsetX; + } + _sliderPointerPosition(e) { + return e.pageX; + } + _sliderOrthogonalPointerPosition(e) { + return e.pageY; + } + _updateScrollbarSize(size) { + this.slider.setHeight(size); + } + writeScrollPosition(target, scrollPosition) { + target.scrollLeft = scrollPosition; + } + updateOptions(options2) { + this.updateScrollbarSize(options2.horizontal === 2 /* Hidden */ ? 0 : options2.horizontalScrollbarSize); + this._scrollbarState.setOppositeScrollbarSize(options2.vertical === 2 /* Hidden */ ? 0 : options2.verticalScrollbarSize); + this._visibilityController.setVisibility(options2.horizontal); + this._scrollByPage = options2.scrollByPage; + } +}; + +// ../../../../../base/browser/ui/scrollbar/verticalScrollbar.ts +var VerticalScrollbar = class extends AbstractScrollbar { + constructor(scrollable, options2, host) { + const scrollDimensions = scrollable.getScrollDimensions(); + const scrollPosition = scrollable.getCurrentScrollPosition(); + super({ + lazyRender: options2.lazyRender, + host, + scrollbarState: new ScrollbarState( + options2.verticalHasArrows ? options2.arrowSize : 0, + options2.vertical === 2 /* Hidden */ ? 0 : options2.verticalScrollbarSize, + // give priority to vertical scroll bar over horizontal and let it scroll all the way to the bottom + 0, + scrollDimensions.height, + scrollDimensions.scrollHeight, + scrollPosition.scrollTop + ), + visibility: options2.vertical, + extraScrollbarClassName: "vertical", + scrollable, + scrollByPage: options2.scrollByPage + }); + if (options2.verticalHasArrows) { + const arrowDelta = (options2.arrowSize - ARROW_IMG_SIZE) / 2; + const scrollbarDelta = (options2.verticalScrollbarSize - ARROW_IMG_SIZE) / 2; + this._createArrow({ + className: "scra", + icon: Codicon.scrollbarButtonUp, + top: arrowDelta, + left: scrollbarDelta, + bottom: void 0, + right: void 0, + bgWidth: options2.verticalScrollbarSize, + bgHeight: options2.arrowSize, + onActivate: () => this._host.onMouseWheel(new StandardWheelEvent(null, 0, 1)) + }); + this._createArrow({ + className: "scra", + icon: Codicon.scrollbarButtonDown, + top: void 0, + left: scrollbarDelta, + bottom: arrowDelta, + right: void 0, + bgWidth: options2.verticalScrollbarSize, + bgHeight: options2.arrowSize, + onActivate: () => this._host.onMouseWheel(new StandardWheelEvent(null, 0, -1)) + }); + } + this._createSlider(0, Math.floor((options2.verticalScrollbarSize - options2.verticalSliderSize) / 2), options2.verticalSliderSize, void 0); + } + _updateSlider(sliderSize, sliderPosition) { + this.slider.setHeight(sliderSize); + this.slider.setTop(sliderPosition); + } + _renderDomNode(largeSize, smallSize) { + this.domNode.setWidth(smallSize); + this.domNode.setHeight(largeSize); + this.domNode.setRight(0); + this.domNode.setTop(0); + } + onDidScroll(e) { + this._shouldRender = this._onElementScrollSize(e.scrollHeight) || this._shouldRender; + this._shouldRender = this._onElementScrollPosition(e.scrollTop) || this._shouldRender; + this._shouldRender = this._onElementSize(e.height) || this._shouldRender; + return this._shouldRender; + } + _pointerDownRelativePosition(offsetX, offsetY) { + return offsetY; + } + _sliderPointerPosition(e) { + return e.pageY; + } + _sliderOrthogonalPointerPosition(e) { + return e.pageX; + } + _updateScrollbarSize(size) { + this.slider.setWidth(size); + } + writeScrollPosition(target, scrollPosition) { + target.scrollTop = scrollPosition; + } + updateOptions(options2) { + this.updateScrollbarSize(options2.vertical === 2 /* Hidden */ ? 0 : options2.verticalScrollbarSize); + this._scrollbarState.setOppositeScrollbarSize(0); + this._visibilityController.setVisibility(options2.vertical); + this._scrollByPage = options2.scrollByPage; + } +}; + +// ../../../../../base/browser/ui/scrollbar/scrollableElement.ts +var HIDE_TIMEOUT = 500; +var SCROLL_WHEEL_SENSITIVITY = 50; +var MouseWheelClassifierItem = class { + constructor(timestamp, deltaX, deltaY) { + this.timestamp = timestamp; + this.deltaX = deltaX; + this.deltaY = deltaY; + this.score = 0; + } +}; +var MouseWheelClassifier = class _MouseWheelClassifier { + static { + this.INSTANCE = new _MouseWheelClassifier(); + } + constructor() { + this._capacity = 5; + this._memory = []; + this._front = -1; + this._rear = -1; + } + isPhysicalMouseWheel() { + if (this._front === -1 && this._rear === -1) { + return false; + } + let remainingInfluence = 1; + let score = 0; + let iteration = 1; + let index = this._rear; + do { + const influence = index === this._front ? remainingInfluence : Math.pow(2, -iteration); + remainingInfluence -= influence; + score += this._memory[index].score * influence; + if (index === this._front) { + break; + } + index = (this._capacity + index - 1) % this._capacity; + iteration++; + } while (true); + return score <= 0.5; + } + acceptStandardWheelEvent(e) { + if (isChrome2) { + const targetWindow = getWindow(e.browserEvent); + const pageZoomFactor = getZoomFactor(targetWindow); + this.accept(Date.now(), e.deltaX * pageZoomFactor, e.deltaY * pageZoomFactor); + } else { + this.accept(Date.now(), e.deltaX, e.deltaY); + } + } + accept(timestamp, deltaX, deltaY) { + let previousItem = null; + const item = new MouseWheelClassifierItem(timestamp, deltaX, deltaY); + if (this._front === -1 && this._rear === -1) { + this._memory[0] = item; + this._front = 0; + this._rear = 0; + } else { + previousItem = this._memory[this._rear]; + this._rear = (this._rear + 1) % this._capacity; + if (this._rear === this._front) { + this._front = (this._front + 1) % this._capacity; + } + this._memory[this._rear] = item; + } + item.score = this._computeScore(item, previousItem); + } + /** + * A score between 0 and 1 for `item`. + * - a score towards 0 indicates that the source appears to be a physical mouse wheel + * - a score towards 1 indicates that the source appears to be a touchpad or magic mouse, etc. + */ + _computeScore(item, previousItem) { + if (Math.abs(item.deltaX) > 0 && Math.abs(item.deltaY) > 0) { + return 1; + } + let score = 0.5; + if (!this._isAlmostInt(item.deltaX) || !this._isAlmostInt(item.deltaY)) { + score += 0.25; + } + if (previousItem) { + const absDeltaX = Math.abs(item.deltaX); + const absDeltaY = Math.abs(item.deltaY); + const absPreviousDeltaX = Math.abs(previousItem.deltaX); + const absPreviousDeltaY = Math.abs(previousItem.deltaY); + const minDeltaX = Math.max(Math.min(absDeltaX, absPreviousDeltaX), 1); + const minDeltaY = Math.max(Math.min(absDeltaY, absPreviousDeltaY), 1); + const maxDeltaX = Math.max(absDeltaX, absPreviousDeltaX); + const maxDeltaY = Math.max(absDeltaY, absPreviousDeltaY); + const isSameModulo = maxDeltaX % minDeltaX === 0 && maxDeltaY % minDeltaY === 0; + if (isSameModulo) { + score -= 0.5; + } + } + return Math.min(Math.max(score, 0), 1); + } + _isAlmostInt(value) { + const delta = Math.abs(Math.round(value) - value); + return delta < 0.01; + } +}; +var AbstractScrollableElement = class extends Widget { + constructor(element, options2, scrollable) { + super(); + this._onScroll = this._register(new Emitter()); + this.onScroll = this._onScroll.event; + this._onWillScroll = this._register(new Emitter()); + this.onWillScroll = this._onWillScroll.event; + element.style.overflow = "hidden"; + this._options = resolveOptions(options2); + this._scrollable = scrollable; + this._register(this._scrollable.onScroll((e) => { + this._onWillScroll.fire(e); + this._onDidScroll(e); + this._onScroll.fire(e); + })); + const scrollbarHost = { + onMouseWheel: (mouseWheelEvent) => this._onMouseWheel(mouseWheelEvent), + onDragStart: () => this._onDragStart(), + onDragEnd: () => this._onDragEnd() + }; + this._verticalScrollbar = this._register(new VerticalScrollbar(this._scrollable, this._options, scrollbarHost)); + this._horizontalScrollbar = this._register(new HorizontalScrollbar(this._scrollable, this._options, scrollbarHost)); + this._domNode = document.createElement("div"); + this._domNode.className = "monaco-scrollable-element " + this._options.className; + this._domNode.setAttribute("role", "presentation"); + this._domNode.style.position = "relative"; + this._domNode.style.overflow = "hidden"; + this._domNode.appendChild(element); + this._domNode.appendChild(this._horizontalScrollbar.domNode.domNode); + this._domNode.appendChild(this._verticalScrollbar.domNode.domNode); + if (this._options.useShadows) { + this._leftShadowDomNode = createFastDomNode(document.createElement("div")); + this._leftShadowDomNode.setClassName("shadow"); + this._domNode.appendChild(this._leftShadowDomNode.domNode); + this._topShadowDomNode = createFastDomNode(document.createElement("div")); + this._topShadowDomNode.setClassName("shadow"); + this._domNode.appendChild(this._topShadowDomNode.domNode); + this._topLeftShadowDomNode = createFastDomNode(document.createElement("div")); + this._topLeftShadowDomNode.setClassName("shadow"); + this._domNode.appendChild(this._topLeftShadowDomNode.domNode); + } else { + this._leftShadowDomNode = null; + this._topShadowDomNode = null; + this._topLeftShadowDomNode = null; + } + this._listenOnDomNode = this._options.listenOnDomNode || this._domNode; + this._mouseWheelToDispose = []; + this._setListeningToMouseWheel(this._options.handleMouseWheel); + this.onmouseover(this._listenOnDomNode, (e) => this._onMouseOver(e)); + this.onmouseleave(this._listenOnDomNode, (e) => this._onMouseLeave(e)); + this._hideTimeout = this._register(new TimeoutTimer()); + this._isDragging = false; + this._mouseIsOver = false; + this._shouldRender = true; + this._revealOnScroll = true; + } + get options() { + return this._options; + } + dispose() { + this._mouseWheelToDispose = dispose(this._mouseWheelToDispose); + super.dispose(); + } + /** + * Get the generated 'scrollable' dom node + */ + getDomNode() { + return this._domNode; + } + getOverviewRulerLayoutInfo() { + return { + parent: this._domNode, + insertBefore: this._verticalScrollbar.domNode.domNode + }; + } + /** + * Delegate a pointer down event to the vertical scrollbar. + * This is to help with clicking somewhere else and having the scrollbar react. + */ + delegateVerticalScrollbarPointerDown(browserEvent) { + this._verticalScrollbar.delegatePointerDown(browserEvent); + } + getScrollDimensions() { + return this._scrollable.getScrollDimensions(); + } + setScrollDimensions(dimensions) { + this._scrollable.setScrollDimensions(dimensions, false); + } + /** + * Update the class name of the scrollable element. + */ + updateClassName(newClassName) { + this._options.className = newClassName; + if (isMacintosh) { + this._options.className += " mac"; + } + this._domNode.className = "monaco-scrollable-element " + this._options.className; + } + /** + * Update configuration options for the scrollbar. + */ + updateOptions(newOptions) { + if (typeof newOptions.handleMouseWheel !== "undefined") { + this._options.handleMouseWheel = newOptions.handleMouseWheel; + this._setListeningToMouseWheel(this._options.handleMouseWheel); + } + if (typeof newOptions.mouseWheelScrollSensitivity !== "undefined") { + this._options.mouseWheelScrollSensitivity = newOptions.mouseWheelScrollSensitivity; + } + if (typeof newOptions.fastScrollSensitivity !== "undefined") { + this._options.fastScrollSensitivity = newOptions.fastScrollSensitivity; + } + if (typeof newOptions.scrollPredominantAxis !== "undefined") { + this._options.scrollPredominantAxis = newOptions.scrollPredominantAxis; + } + if (typeof newOptions.horizontal !== "undefined") { + this._options.horizontal = newOptions.horizontal; + } + if (typeof newOptions.vertical !== "undefined") { + this._options.vertical = newOptions.vertical; + } + if (typeof newOptions.horizontalScrollbarSize !== "undefined") { + this._options.horizontalScrollbarSize = newOptions.horizontalScrollbarSize; + } + if (typeof newOptions.verticalScrollbarSize !== "undefined") { + this._options.verticalScrollbarSize = newOptions.verticalScrollbarSize; + } + if (typeof newOptions.scrollByPage !== "undefined") { + this._options.scrollByPage = newOptions.scrollByPage; + } + this._horizontalScrollbar.updateOptions(this._options); + this._verticalScrollbar.updateOptions(this._options); + if (!this._options.lazyRender) { + this._render(); + } + } + setRevealOnScroll(value) { + this._revealOnScroll = value; + } + delegateScrollFromMouseWheelEvent(browserEvent) { + this._onMouseWheel(new StandardWheelEvent(browserEvent)); + } + // -------------------- mouse wheel scrolling -------------------- + _setListeningToMouseWheel(shouldListen) { + const isListening = this._mouseWheelToDispose.length > 0; + if (isListening === shouldListen) { + return; + } + this._mouseWheelToDispose = dispose(this._mouseWheelToDispose); + if (shouldListen) { + const onMouseWheel = (browserEvent) => { + this._onMouseWheel(new StandardWheelEvent(browserEvent)); + }; + this._mouseWheelToDispose.push(addDisposableListener(this._listenOnDomNode, EventType.MOUSE_WHEEL, onMouseWheel, { passive: false })); + } + } + _onMouseWheel(e) { + if (e.browserEvent?.defaultPrevented) { + return; + } + const classifier = MouseWheelClassifier.INSTANCE; + { + classifier.acceptStandardWheelEvent(e); + } + let didScroll = false; + if (e.deltaY || e.deltaX) { + let deltaY = e.deltaY * this._options.mouseWheelScrollSensitivity; + let deltaX = e.deltaX * this._options.mouseWheelScrollSensitivity; + if (this._options.scrollPredominantAxis) { + if (this._options.scrollYToX && deltaX + deltaY === 0) { + deltaX = deltaY = 0; + } else if (Math.abs(deltaY) >= Math.abs(deltaX)) { + deltaX = 0; + } else { + deltaY = 0; + } + } + if (this._options.flipAxes) { + [deltaY, deltaX] = [deltaX, deltaY]; + } + const shiftConvert = !isMacintosh && e.browserEvent && e.browserEvent.shiftKey; + if ((this._options.scrollYToX || shiftConvert) && !deltaX) { + deltaX = deltaY; + deltaY = 0; + } + if (e.browserEvent && e.browserEvent.altKey) { + deltaX = deltaX * this._options.fastScrollSensitivity; + deltaY = deltaY * this._options.fastScrollSensitivity; + } + const futureScrollPosition = this._scrollable.getFutureScrollPosition(); + let desiredScrollPosition = {}; + if (deltaY) { + const deltaScrollTop = SCROLL_WHEEL_SENSITIVITY * deltaY; + const desiredScrollTop = futureScrollPosition.scrollTop - (deltaScrollTop < 0 ? Math.floor(deltaScrollTop) : Math.ceil(deltaScrollTop)); + this._verticalScrollbar.writeScrollPosition(desiredScrollPosition, desiredScrollTop); + } + if (deltaX) { + const deltaScrollLeft = SCROLL_WHEEL_SENSITIVITY * deltaX; + const desiredScrollLeft = futureScrollPosition.scrollLeft - (deltaScrollLeft < 0 ? Math.floor(deltaScrollLeft) : Math.ceil(deltaScrollLeft)); + this._horizontalScrollbar.writeScrollPosition(desiredScrollPosition, desiredScrollLeft); + } + desiredScrollPosition = this._scrollable.validateScrollPosition(desiredScrollPosition); + if (futureScrollPosition.scrollLeft !== desiredScrollPosition.scrollLeft || futureScrollPosition.scrollTop !== desiredScrollPosition.scrollTop) { + const canPerformSmoothScroll = this._options.mouseWheelSmoothScroll && classifier.isPhysicalMouseWheel(); + if (canPerformSmoothScroll) { + this._scrollable.setScrollPositionSmooth(desiredScrollPosition); + } else { + this._scrollable.setScrollPositionNow(desiredScrollPosition); + } + didScroll = true; + } + } + let consumeMouseWheel = didScroll; + if (!consumeMouseWheel && this._options.alwaysConsumeMouseWheel) { + consumeMouseWheel = true; + } + if (!consumeMouseWheel && this._options.consumeMouseWheelIfScrollbarIsNeeded && (this._verticalScrollbar.isNeeded() || this._horizontalScrollbar.isNeeded())) { + consumeMouseWheel = true; + } + if (consumeMouseWheel) { + e.preventDefault(); + e.stopPropagation(); + } + } + _onDidScroll(e) { + this._shouldRender = this._horizontalScrollbar.onDidScroll(e) || this._shouldRender; + this._shouldRender = this._verticalScrollbar.onDidScroll(e) || this._shouldRender; + if (this._options.useShadows) { + this._shouldRender = true; + } + if (this._revealOnScroll) { + this._reveal(); + } + if (!this._options.lazyRender) { + this._render(); + } + } + /** + * Render / mutate the DOM now. + * Should be used together with the ctor option `lazyRender`. + */ + renderNow() { + if (!this._options.lazyRender) { + throw new Error("Please use `lazyRender` together with `renderNow`!"); + } + this._render(); + } + _render() { + if (!this._shouldRender) { + return; + } + this._shouldRender = false; + this._horizontalScrollbar.render(); + this._verticalScrollbar.render(); + if (this._options.useShadows) { + const scrollState = this._scrollable.getCurrentScrollPosition(); + const enableTop = scrollState.scrollTop > 0; + const enableLeft = scrollState.scrollLeft > 0; + const leftClassName = enableLeft ? " left" : ""; + const topClassName = enableTop ? " top" : ""; + const topLeftClassName = enableLeft || enableTop ? " top-left-corner" : ""; + this._leftShadowDomNode.setClassName(`shadow${leftClassName}`); + this._topShadowDomNode.setClassName(`shadow${topClassName}`); + this._topLeftShadowDomNode.setClassName(`shadow${topLeftClassName}${topClassName}${leftClassName}`); + } + } + // -------------------- fade in / fade out -------------------- + _onDragStart() { + this._isDragging = true; + this._reveal(); + } + _onDragEnd() { + this._isDragging = false; + this._hide(); + } + _onMouseLeave(e) { + this._mouseIsOver = false; + this._hide(); + } + _onMouseOver(e) { + this._mouseIsOver = true; + this._reveal(); + } + _reveal() { + this._verticalScrollbar.beginReveal(); + this._horizontalScrollbar.beginReveal(); + this._scheduleHide(); + } + _hide() { + if (!this._mouseIsOver && !this._isDragging) { + this._verticalScrollbar.beginHide(); + this._horizontalScrollbar.beginHide(); + } + } + _scheduleHide() { + if (!this._mouseIsOver && !this._isDragging) { + this._hideTimeout.cancelAndSet(() => this._hide(), HIDE_TIMEOUT); + } + } +}; +var ScrollableElement = class extends AbstractScrollableElement { + constructor(element, options2) { + options2 = options2 || {}; + options2.mouseWheelSmoothScroll = false; + const scrollable = new Scrollable({ + forceIntegerValues: true, + smoothScrollDuration: 0, + scheduleAtNextAnimationFrame: (callback) => scheduleAtNextAnimationFrame(getWindow(element), callback) + }); + super(element, options2, scrollable); + this._register(scrollable); + } + setScrollPosition(update) { + this._scrollable.setScrollPositionNow(update); + } + getScrollPosition() { + return this._scrollable.getCurrentScrollPosition(); + } +}; +var SmoothScrollableElement = class extends AbstractScrollableElement { + constructor(element, options2, scrollable) { + super(element, options2, scrollable); + } + setScrollPosition(update) { + if (update.reuseAnimation) { + this._scrollable.setScrollPositionSmooth(update, update.reuseAnimation); + } else { + this._scrollable.setScrollPositionNow(update); + } + } + getScrollPosition() { + return this._scrollable.getCurrentScrollPosition(); + } +}; +var DomScrollableElement = class extends AbstractScrollableElement { + constructor(element, options2) { + options2 = options2 || {}; + options2.mouseWheelSmoothScroll = false; + const scrollable = new Scrollable({ + forceIntegerValues: false, + // See https://github.com/microsoft/vscode/issues/139877 + smoothScrollDuration: 0, + scheduleAtNextAnimationFrame: (callback) => scheduleAtNextAnimationFrame(getWindow(element), callback) + }); + super(element, options2, scrollable); + this._register(scrollable); + this._element = element; + this._register(this.onScroll((e) => { + if (e.scrollTopChanged) { + this._element.scrollTop = e.scrollTop; + } + if (e.scrollLeftChanged) { + this._element.scrollLeft = e.scrollLeft; + } + })); + this.scanDomNode(); + } + setScrollPosition(update) { + this._scrollable.setScrollPositionNow(update); + } + getScrollPosition() { + return this._scrollable.getCurrentScrollPosition(); + } + scanDomNode() { + this.setScrollDimensions({ + width: this._element.clientWidth, + scrollWidth: this._element.scrollWidth, + height: this._element.clientHeight, + scrollHeight: this._element.scrollHeight + }); + this.setScrollPosition({ + scrollLeft: this._element.scrollLeft, + scrollTop: this._element.scrollTop + }); + } +}; +function resolveOptions(opts) { + const result = { + lazyRender: typeof opts.lazyRender !== "undefined" ? opts.lazyRender : false, + className: typeof opts.className !== "undefined" ? opts.className : "", + useShadows: typeof opts.useShadows !== "undefined" ? opts.useShadows : true, + handleMouseWheel: typeof opts.handleMouseWheel !== "undefined" ? opts.handleMouseWheel : true, + flipAxes: typeof opts.flipAxes !== "undefined" ? opts.flipAxes : false, + consumeMouseWheelIfScrollbarIsNeeded: typeof opts.consumeMouseWheelIfScrollbarIsNeeded !== "undefined" ? opts.consumeMouseWheelIfScrollbarIsNeeded : false, + alwaysConsumeMouseWheel: typeof opts.alwaysConsumeMouseWheel !== "undefined" ? opts.alwaysConsumeMouseWheel : false, + scrollYToX: typeof opts.scrollYToX !== "undefined" ? opts.scrollYToX : false, + mouseWheelScrollSensitivity: typeof opts.mouseWheelScrollSensitivity !== "undefined" ? opts.mouseWheelScrollSensitivity : 1, + fastScrollSensitivity: typeof opts.fastScrollSensitivity !== "undefined" ? opts.fastScrollSensitivity : 5, + scrollPredominantAxis: typeof opts.scrollPredominantAxis !== "undefined" ? opts.scrollPredominantAxis : true, + mouseWheelSmoothScroll: typeof opts.mouseWheelSmoothScroll !== "undefined" ? opts.mouseWheelSmoothScroll : true, + arrowSize: typeof opts.arrowSize !== "undefined" ? opts.arrowSize : 11, + listenOnDomNode: typeof opts.listenOnDomNode !== "undefined" ? opts.listenOnDomNode : null, + horizontal: typeof opts.horizontal !== "undefined" ? opts.horizontal : 1 /* Auto */, + horizontalScrollbarSize: typeof opts.horizontalScrollbarSize !== "undefined" ? opts.horizontalScrollbarSize : 10, + horizontalSliderSize: typeof opts.horizontalSliderSize !== "undefined" ? opts.horizontalSliderSize : 0, + horizontalHasArrows: typeof opts.horizontalHasArrows !== "undefined" ? opts.horizontalHasArrows : false, + vertical: typeof opts.vertical !== "undefined" ? opts.vertical : 1 /* Auto */, + verticalScrollbarSize: typeof opts.verticalScrollbarSize !== "undefined" ? opts.verticalScrollbarSize : 10, + verticalHasArrows: typeof opts.verticalHasArrows !== "undefined" ? opts.verticalHasArrows : false, + verticalSliderSize: typeof opts.verticalSliderSize !== "undefined" ? opts.verticalSliderSize : 0, + scrollByPage: typeof opts.scrollByPage !== "undefined" ? opts.scrollByPage : false + }; + result.horizontalSliderSize = typeof opts.horizontalSliderSize !== "undefined" ? opts.horizontalSliderSize : result.horizontalScrollbarSize; + result.verticalSliderSize = typeof opts.verticalSliderSize !== "undefined" ? opts.verticalSliderSize : result.verticalScrollbarSize; + if (isMacintosh) { + result.className += " mac"; + } + return result; +} + +// ../../../../../base/common/range.ts +var Range; +((Range2) => { + function intersect(one, other) { + if (one.start >= other.end || other.start >= one.end) { + return { start: 0, end: 0 }; + } + const start = Math.max(one.start, other.start); + const end = Math.min(one.end, other.end); + if (end - start <= 0) { + return { start: 0, end: 0 }; + } + return { start, end }; + } + Range2.intersect = intersect; + function isEmpty(range2) { + return range2.end - range2.start <= 0; + } + Range2.isEmpty = isEmpty; + function intersects(one, other) { + return !isEmpty(intersect(one, other)); + } + Range2.intersects = intersects; + function relativeComplement2(one, other) { + const result = []; + const first = { start: one.start, end: Math.min(other.start, one.end) }; + const second = { start: Math.max(other.end, one.start), end: one.end }; + if (!isEmpty(first)) { + result.push(first); + } + if (!isEmpty(second)) { + result.push(second); + } + return result; + } + Range2.relativeComplement = relativeComplement2; +})(Range || (Range = {})); + +// ../../../../../base/browser/ui/list/rangeMap.ts +function groupIntersect(range2, groups) { + const result = []; + for (const r of groups) { + if (range2.start >= r.range.end) { + continue; + } + if (range2.end < r.range.start) { + break; + } + const intersection2 = Range.intersect(range2, r.range); + if (Range.isEmpty(intersection2)) { + continue; + } + result.push({ + range: intersection2, + size: r.size + }); + } + return result; +} +function shift({ start, end }, much) { + return { start: start + much, end: end + much }; +} +function consolidate(groups) { + const result = []; + let previousGroup = null; + for (const group of groups) { + const start = group.range.start; + const end = group.range.end; + const size = group.size; + if (previousGroup && size === previousGroup.size) { + previousGroup.range.end = end; + continue; + } + previousGroup = { range: { start, end }, size }; + result.push(previousGroup); + } + return result; +} +function concat(...groups) { + return consolidate(groups.reduce((r, g) => r.concat(g), [])); +} +var RangeMap = class { + constructor(topPadding) { + this.groups = []; + this._size = 0; + this._paddingTop = 0; + this._paddingTop = topPadding ?? 0; + this._size = this._paddingTop; + } + get paddingTop() { + return this._paddingTop; + } + set paddingTop(paddingTop) { + this._size = this._size + paddingTop - this._paddingTop; + this._paddingTop = paddingTop; + } + splice(index, deleteCount, items = []) { + const diff = items.length - deleteCount; + const before = groupIntersect({ start: 0, end: index }, this.groups); + const after2 = groupIntersect({ start: index + deleteCount, end: Number.POSITIVE_INFINITY }, this.groups).map((g) => ({ range: shift(g.range, diff), size: g.size })); + const middle = items.map((item, i) => ({ + range: { start: index + i, end: index + i + 1 }, + size: item.size + })); + this.groups = concat(before, middle, after2); + this._size = this._paddingTop + this.groups.reduce((t, g) => t + g.size * (g.range.end - g.range.start), 0); + } + /** + * Returns the number of items in the range map. + */ + get count() { + const len = this.groups.length; + if (!len) { + return 0; + } + return this.groups[len - 1].range.end; + } + /** + * Returns the sum of the sizes of all items in the range map. + */ + get size() { + return this._size; + } + /** + * Returns the index of the item at the given position. + */ + indexAt(position) { + if (position < 0) { + return -1; + } + if (position < this._paddingTop) { + return 0; + } + let index = 0; + let size = this._paddingTop; + for (const group of this.groups) { + const count = group.range.end - group.range.start; + const newSize = size + count * group.size; + if (position < newSize) { + return index + Math.floor((position - size) / group.size); + } + index += count; + size = newSize; + } + return index; + } + /** + * Returns the index of the item right after the item at the + * index of the given position. + */ + indexAfter(position) { + return Math.min(this.indexAt(position) + 1, this.count); + } + /** + * Returns the start position of the item at the given index. + */ + positionAt(index) { + if (index < 0) { + return -1; + } + let position = 0; + let count = 0; + for (const group of this.groups) { + const groupCount = group.range.end - group.range.start; + const newCount = count + groupCount; + if (index < newCount) { + return this._paddingTop + position + (index - count) * group.size; + } + position += groupCount * group.size; + count = newCount; + } + return -1; + } +}; + +// ../../../../../base/browser/ui/list/rowCache.ts +var RowCache = class { + constructor(renderers) { + this.renderers = renderers; + this.cache = /* @__PURE__ */ new Map(); + this.transactionNodesPendingRemoval = /* @__PURE__ */ new Set(); + this.inTransaction = false; + } + /** + * Returns a row either by creating a new one or reusing + * a previously released row which shares the same templateId. + * + * @returns A row and `isReusingConnectedDomNode` if the row's node is already in the dom in a stale position. + */ + alloc(templateId) { + let result = this.getTemplateCache(templateId).pop(); + let isStale = false; + if (result) { + isStale = this.transactionNodesPendingRemoval.has(result.domNode); + if (isStale) { + this.transactionNodesPendingRemoval.delete(result.domNode); + } + } else { + const domNode = $(".monaco-list-row"); + const renderer = this.getRenderer(templateId); + const templateData = renderer.renderTemplate(domNode); + result = { domNode, templateId, templateData }; + } + return { row: result, isReusingConnectedDomNode: isStale }; + } + /** + * Releases the row for eventual reuse. + */ + release(row) { + if (!row) { + return; + } + this.releaseRow(row); + } + /** + * Begin a set of changes that use the cache. This lets us skip work when a row is removed and then inserted again. + */ + transact(makeChanges) { + if (this.inTransaction) { + throw new Error("Already in transaction"); + } + this.inTransaction = true; + try { + makeChanges(); + } finally { + for (const domNode of this.transactionNodesPendingRemoval) { + this.doRemoveNode(domNode); + } + this.transactionNodesPendingRemoval.clear(); + this.inTransaction = false; + } + } + releaseRow(row) { + const { domNode, templateId } = row; + if (domNode) { + if (this.inTransaction) { + this.transactionNodesPendingRemoval.add(domNode); + } else { + this.doRemoveNode(domNode); + } + } + const cache = this.getTemplateCache(templateId); + cache.push(row); + } + doRemoveNode(domNode) { + domNode.classList.remove("scrolling"); + domNode.remove(); + } + getTemplateCache(templateId) { + let result = this.cache.get(templateId); + if (!result) { + result = []; + this.cache.set(templateId, result); + } + return result; + } + dispose() { + this.cache.forEach((cachedRows, templateId) => { + for (const cachedRow of cachedRows) { + const renderer = this.getRenderer(templateId); + renderer.disposeTemplate(cachedRow.templateData); + cachedRow.templateData = null; + } + }); + this.cache.clear(); + this.transactionNodesPendingRemoval.clear(); + } + getRenderer(templateId) { + const renderer = this.renderers.get(templateId); + if (!renderer) { + throw new Error(`No renderer found for ${templateId}`); + } + return renderer; + } +}; + +// ../../../../../base/browser/ui/list/listView.ts +var StaticDND = { + CurrentDragAndDropData: void 0 +}; +var DefaultOptions = { + useShadows: true, + verticalScrollMode: 1 /* Auto */, + setRowLineHeight: true, + setRowHeight: true, + supportDynamicHeights: false, + dnd: { + getDragElements(e) { + return [e]; + }, + getDragURI() { + return null; + }, + onDragStart() { + }, + onDragOver() { + return false; + }, + drop() { + }, + dispose() { + } + }, + horizontalScrolling: false, + transformOptimization: true, + alwaysConsumeMouseWheel: true +}; +var ElementsDragAndDropData = class { + get context() { + return this._context; + } + set context(value) { + this._context = value; + } + constructor(elements) { + this.elements = elements; + } + update() { + } + getData() { + return this.elements; + } +}; +var ExternalElementsDragAndDropData = class { + constructor(elements) { + this.elements = elements; + } + update() { + } + getData() { + return this.elements; + } +}; +var NativeDragAndDropData = class { + constructor() { + this.types = []; + this.files = []; + } + update(dataTransfer) { + if (dataTransfer.types) { + this.types.splice(0, this.types.length, ...dataTransfer.types); + } + if (dataTransfer.files) { + this.files.splice(0, this.files.length); + for (let i = 0; i < dataTransfer.files.length; i++) { + const file = dataTransfer.files.item(i); + if (file && (file.size || file.type)) { + this.files.push(file); + } + } + } + } + getData() { + return { + types: this.types, + files: this.files + }; + } +}; +function equalsDragFeedback(f1, f2) { + if (Array.isArray(f1) && Array.isArray(f2)) { + return equals(f1, f2); + } + return f1 === f2; +} +var ListViewAccessibilityProvider = class { + constructor(accessibilityProvider) { + if (accessibilityProvider?.getSetSize) { + this.getSetSize = accessibilityProvider.getSetSize.bind(accessibilityProvider); + } else { + this.getSetSize = (e, i, l) => l; + } + if (accessibilityProvider?.getPosInSet) { + this.getPosInSet = accessibilityProvider.getPosInSet.bind(accessibilityProvider); + } else { + this.getPosInSet = (e, i) => i + 1; + } + if (accessibilityProvider?.getRole) { + this.getRole = accessibilityProvider.getRole.bind(accessibilityProvider); + } else { + this.getRole = (_) => "listitem"; + } + if (accessibilityProvider?.isChecked) { + this.isChecked = accessibilityProvider.isChecked.bind(accessibilityProvider); + } else { + this.isChecked = (_) => void 0; + } + } +}; +var _ListView = class _ListView { + constructor(container, virtualDelegate, renderers, options2 = DefaultOptions) { + this.virtualDelegate = virtualDelegate; + this.domId = `list_id_${++_ListView.InstanceCount}`; + this.renderers = /* @__PURE__ */ new Map(); + this.renderWidth = 0; + this._scrollHeight = 0; + this.scrollableElementUpdateDisposable = null; + this.scrollableElementWidthDelayer = new Delayer(50); + this.splicing = false; + this.dragOverAnimationStopDisposable = Disposable.None; + this.dragOverMouseY = 0; + this.canDrop = false; + this.currentDragFeedbackDisposable = Disposable.None; + this.onDragLeaveTimeout = Disposable.None; + this.disposables = new DisposableStore(); + this._onDidChangeContentHeight = new Emitter(); + this._onDidChangeContentWidth = new Emitter(); + this.onDidChangeContentHeight = Event.latch(this._onDidChangeContentHeight.event, void 0, this.disposables); + this.onDidChangeContentWidth = Event.latch(this._onDidChangeContentWidth.event, void 0, this.disposables); + this._horizontalScrolling = false; + if (options2.horizontalScrolling && options2.supportDynamicHeights) { + throw new Error("Horizontal scrolling and dynamic heights not supported simultaneously"); + } + this.items = []; + this.itemId = 0; + this.rangeMap = this.createRangeMap(options2.paddingTop ?? 0); + for (const renderer of renderers) { + this.renderers.set(renderer.templateId, renderer); + } + this.cache = this.disposables.add(new RowCache(this.renderers)); + this.lastRenderTop = 0; + this.lastRenderHeight = 0; + this.domNode = document.createElement("div"); + this.domNode.className = "monaco-list"; + this.domNode.classList.add(this.domId); + this.domNode.tabIndex = 0; + this.domNode.classList.toggle("mouse-support", typeof options2.mouseSupport === "boolean" ? options2.mouseSupport : true); + this._horizontalScrolling = options2.horizontalScrolling ?? DefaultOptions.horizontalScrolling; + this.domNode.classList.toggle("horizontal-scrolling", this._horizontalScrolling); + this.paddingBottom = typeof options2.paddingBottom === "undefined" ? 0 : options2.paddingBottom; + this.accessibilityProvider = new ListViewAccessibilityProvider(options2.accessibilityProvider); + this.rowsContainer = document.createElement("div"); + this.rowsContainer.className = "monaco-list-rows"; + const transformOptimization = options2.transformOptimization ?? DefaultOptions.transformOptimization; + if (transformOptimization) { + this.rowsContainer.style.transform = "translate3d(0px, 0px, 0px)"; + this.rowsContainer.style.overflow = "hidden"; + this.rowsContainer.style.contain = "strict"; + } + this.disposables.add(Gesture.addTarget(this.rowsContainer)); + this.scrollable = this.disposables.add(new Scrollable({ + forceIntegerValues: true, + smoothScrollDuration: options2.smoothScrolling ?? false ? 125 : 0, + scheduleAtNextAnimationFrame: (cb) => scheduleAtNextAnimationFrame(getWindow(this.domNode), cb) + })); + this.scrollableElement = this.disposables.add(new SmoothScrollableElement(this.rowsContainer, { + alwaysConsumeMouseWheel: options2.alwaysConsumeMouseWheel ?? DefaultOptions.alwaysConsumeMouseWheel, + horizontal: 1 /* Auto */, + vertical: options2.verticalScrollMode ?? DefaultOptions.verticalScrollMode, + useShadows: options2.useShadows ?? DefaultOptions.useShadows, + mouseWheelScrollSensitivity: options2.mouseWheelScrollSensitivity, + fastScrollSensitivity: options2.fastScrollSensitivity, + scrollByPage: options2.scrollByPage + }, this.scrollable)); + this.domNode.appendChild(this.scrollableElement.getDomNode()); + container.appendChild(this.domNode); + this.scrollableElement.onScroll(this.onScroll, this, this.disposables); + this.disposables.add(addDisposableListener(this.rowsContainer, EventType2.Change, (e) => this.onTouchChange(e))); + this.disposables.add(addDisposableListener(this.scrollableElement.getDomNode(), "scroll", (e) => e.target.scrollTop = 0)); + this.disposables.add(addDisposableListener(this.domNode, "dragover", (e) => this.onDragOver(this.toDragEvent(e)))); + this.disposables.add(addDisposableListener(this.domNode, "drop", (e) => this.onDrop(this.toDragEvent(e)))); + this.disposables.add(addDisposableListener(this.domNode, "dragleave", (e) => this.onDragLeave(this.toDragEvent(e)))); + this.disposables.add(addDisposableListener(this.domNode, "dragend", (e) => this.onDragEnd(e))); + this.setRowLineHeight = options2.setRowLineHeight ?? DefaultOptions.setRowLineHeight; + this.setRowHeight = options2.setRowHeight ?? DefaultOptions.setRowHeight; + this.supportDynamicHeights = options2.supportDynamicHeights ?? DefaultOptions.supportDynamicHeights; + this.dnd = options2.dnd ?? this.disposables.add(DefaultOptions.dnd); + this.layout(options2.initialSize?.height, options2.initialSize?.width); + } + static { + this.InstanceCount = 0; + } + get contentHeight() { + return this.rangeMap.size; + } + get contentWidth() { + return this.scrollWidth ?? 0; + } + get onDidScroll() { + return this.scrollableElement.onScroll; + } + get onWillScroll() { + return this.scrollableElement.onWillScroll; + } + get containerDomNode() { + return this.rowsContainer; + } + get scrollableElementDomNode() { + return this.scrollableElement.getDomNode(); + } + get horizontalScrolling() { + return this._horizontalScrolling; + } + set horizontalScrolling(value) { + if (value === this._horizontalScrolling) { + return; + } + if (value && this.supportDynamicHeights) { + throw new Error("Horizontal scrolling and dynamic heights not supported simultaneously"); + } + this._horizontalScrolling = value; + this.domNode.classList.toggle("horizontal-scrolling", this._horizontalScrolling); + if (this._horizontalScrolling) { + for (const item of this.items) { + this.measureItemWidth(item); + } + this.updateScrollWidth(); + this.scrollableElement.setScrollDimensions({ width: getContentWidth(this.domNode) }); + this.rowsContainer.style.width = `${Math.max(this.scrollWidth || 0, this.renderWidth)}px`; + } else { + this.scrollableElementWidthDelayer.cancel(); + this.scrollableElement.setScrollDimensions({ width: this.renderWidth, scrollWidth: this.renderWidth }); + this.rowsContainer.style.width = ""; + } + } + updateOptions(options2) { + if (options2.paddingBottom !== void 0) { + this.paddingBottom = options2.paddingBottom; + this.scrollableElement.setScrollDimensions({ scrollHeight: this.scrollHeight }); + } + if (options2.smoothScrolling !== void 0) { + this.scrollable.setSmoothScrollDuration(options2.smoothScrolling ? 125 : 0); + } + if (options2.horizontalScrolling !== void 0) { + this.horizontalScrolling = options2.horizontalScrolling; + } + let scrollableOptions; + if (options2.scrollByPage !== void 0) { + scrollableOptions = { ...scrollableOptions ?? {}, scrollByPage: options2.scrollByPage }; + } + if (options2.mouseWheelScrollSensitivity !== void 0) { + scrollableOptions = { ...scrollableOptions ?? {}, mouseWheelScrollSensitivity: options2.mouseWheelScrollSensitivity }; + } + if (options2.fastScrollSensitivity !== void 0) { + scrollableOptions = { ...scrollableOptions ?? {}, fastScrollSensitivity: options2.fastScrollSensitivity }; + } + if (scrollableOptions) { + this.scrollableElement.updateOptions(scrollableOptions); + } + if (options2.paddingTop !== void 0 && options2.paddingTop !== this.rangeMap.paddingTop) { + const lastRenderRange = this.getRenderRange(this.lastRenderTop, this.lastRenderHeight); + const offset = options2.paddingTop - this.rangeMap.paddingTop; + this.rangeMap.paddingTop = options2.paddingTop; + this.render(lastRenderRange, Math.max(0, this.lastRenderTop + offset), this.lastRenderHeight, void 0, void 0, true); + this.setScrollTop(this.lastRenderTop); + this.eventuallyUpdateScrollDimensions(); + if (this.supportDynamicHeights) { + this._rerender(this.lastRenderTop, this.lastRenderHeight); + } + } + } + delegateScrollFromMouseWheelEvent(browserEvent) { + this.scrollableElement.delegateScrollFromMouseWheelEvent(browserEvent); + } + delegateVerticalScrollbarPointerDown(browserEvent) { + this.scrollableElement.delegateVerticalScrollbarPointerDown(browserEvent); + } + updateElementHeight(index, size, anchorIndex) { + if (index < 0 || index >= this.items.length) { + return; + } + const originalSize = this.items[index].size; + if (typeof size === "undefined") { + if (!this.supportDynamicHeights) { + console.warn("Dynamic heights not supported", new Error().stack); + return; + } + this.items[index].lastDynamicHeightWidth = void 0; + size = originalSize + this.probeDynamicHeight(index); + } + if (originalSize === size) { + return; + } + const lastRenderRange = this.getRenderRange(this.lastRenderTop, this.lastRenderHeight); + let heightDiff = 0; + if (index < lastRenderRange.start) { + heightDiff = size - originalSize; + } else { + if (anchorIndex !== null && anchorIndex > index && anchorIndex < lastRenderRange.end) { + heightDiff = size - originalSize; + } else { + heightDiff = 0; + } + } + this.rangeMap.splice(index, 1, [{ size }]); + this.items[index].size = size; + this.render(lastRenderRange, Math.max(0, this.lastRenderTop + heightDiff), this.lastRenderHeight, void 0, void 0, true); + this.setScrollTop(this.lastRenderTop); + this.eventuallyUpdateScrollDimensions(); + if (this.supportDynamicHeights) { + this._rerender(this.lastRenderTop, this.lastRenderHeight); + } + } + createRangeMap(paddingTop) { + return new RangeMap(paddingTop); + } + splice(start, deleteCount, elements = []) { + if (this.splicing) { + throw new Error("Can't run recursive splices."); + } + this.splicing = true; + try { + return this._splice(start, deleteCount, elements); + } finally { + this.splicing = false; + this._onDidChangeContentHeight.fire(this.contentHeight); + } + } + _splice(start, deleteCount, elements = []) { + const previousRenderRange = this.getRenderRange(this.lastRenderTop, this.lastRenderHeight); + const deleteRange = { start, end: start + deleteCount }; + const removeRange = Range.intersect(previousRenderRange, deleteRange); + const rowsToDispose = /* @__PURE__ */ new Map(); + for (let i = removeRange.end - 1; i >= removeRange.start; i--) { + const item = this.items[i]; + item.dragStartDisposable.dispose(); + item.checkedDisposable.dispose(); + if (item.row) { + let rows = rowsToDispose.get(item.templateId); + if (!rows) { + rows = []; + rowsToDispose.set(item.templateId, rows); + } + const renderer = this.renderers.get(item.templateId); + if (renderer && renderer.disposeElement) { + renderer.disposeElement(item.element, i, item.row.templateData, item.size); + } + rows.unshift(item.row); + } + item.row = null; + item.stale = true; + } + const previousRestRange = { start: start + deleteCount, end: this.items.length }; + const previousRenderedRestRange = Range.intersect(previousRestRange, previousRenderRange); + const previousUnrenderedRestRanges = Range.relativeComplement(previousRestRange, previousRenderRange); + const inserted = elements.map((element) => ({ + id: String(this.itemId++), + element, + templateId: this.virtualDelegate.getTemplateId(element), + size: this.virtualDelegate.getHeight(element), + width: void 0, + hasDynamicHeight: !!this.virtualDelegate.hasDynamicHeight && this.virtualDelegate.hasDynamicHeight(element), + lastDynamicHeightWidth: void 0, + row: null, + uri: void 0, + dropTarget: false, + dragStartDisposable: Disposable.None, + checkedDisposable: Disposable.None, + stale: false + })); + let deleted; + if (start === 0 && deleteCount >= this.items.length) { + this.rangeMap = this.createRangeMap(this.rangeMap.paddingTop); + this.rangeMap.splice(0, 0, inserted); + deleted = this.items; + this.items = inserted; + } else { + this.rangeMap.splice(start, deleteCount, inserted); + deleted = this.items.splice(start, deleteCount, ...inserted); + } + const delta = elements.length - deleteCount; + const renderRange = this.getRenderRange(this.lastRenderTop, this.lastRenderHeight); + const renderedRestRange = shift(previousRenderedRestRange, delta); + const updateRange = Range.intersect(renderRange, renderedRestRange); + for (let i = updateRange.start; i < updateRange.end; i++) { + this.updateItemInDOM(this.items[i], i); + } + const removeRanges = Range.relativeComplement(renderedRestRange, renderRange); + for (const range2 of removeRanges) { + for (let i = range2.start; i < range2.end; i++) { + this.removeItemFromDOM(i); + } + } + const unrenderedRestRanges = previousUnrenderedRestRanges.map((r) => shift(r, delta)); + const elementsRange = { start, end: start + elements.length }; + const insertRanges = [elementsRange, ...unrenderedRestRanges].map((r) => Range.intersect(renderRange, r)).reverse(); + for (const range2 of insertRanges) { + for (let i = range2.end - 1; i >= range2.start; i--) { + const item = this.items[i]; + const rows = rowsToDispose.get(item.templateId); + const row = rows?.pop(); + this.insertItemInDOM(i, row); + } + } + for (const rows of rowsToDispose.values()) { + for (const row of rows) { + this.cache.release(row); + } + } + this.eventuallyUpdateScrollDimensions(); + if (this.supportDynamicHeights) { + this._rerender(this.scrollTop, this.renderHeight); + } + return deleted.map((i) => i.element); + } + eventuallyUpdateScrollDimensions() { + this._scrollHeight = this.contentHeight; + this.rowsContainer.style.height = `${this._scrollHeight}px`; + if (!this.scrollableElementUpdateDisposable) { + this.scrollableElementUpdateDisposable = scheduleAtNextAnimationFrame(getWindow(this.domNode), () => { + this.scrollableElement.setScrollDimensions({ scrollHeight: this.scrollHeight }); + this.updateScrollWidth(); + this.scrollableElementUpdateDisposable = null; + }); + } + } + eventuallyUpdateScrollWidth() { + if (!this.horizontalScrolling) { + this.scrollableElementWidthDelayer.cancel(); + return; + } + this.scrollableElementWidthDelayer.trigger(() => this.updateScrollWidth()); + } + updateScrollWidth() { + if (!this.horizontalScrolling) { + return; + } + let scrollWidth = 0; + for (const item of this.items) { + if (typeof item.width !== "undefined") { + scrollWidth = Math.max(scrollWidth, item.width); + } + } + this.scrollWidth = scrollWidth; + this.scrollableElement.setScrollDimensions({ scrollWidth: scrollWidth === 0 ? 0 : scrollWidth + 10 }); + this._onDidChangeContentWidth.fire(this.scrollWidth); + } + updateWidth(index) { + if (!this.horizontalScrolling || typeof this.scrollWidth === "undefined") { + return; + } + const item = this.items[index]; + this.measureItemWidth(item); + if (typeof item.width !== "undefined" && item.width > this.scrollWidth) { + this.scrollWidth = item.width; + this.scrollableElement.setScrollDimensions({ scrollWidth: this.scrollWidth + 10 }); + this._onDidChangeContentWidth.fire(this.scrollWidth); + } + } + rerender() { + if (!this.supportDynamicHeights) { + return; + } + for (const item of this.items) { + item.lastDynamicHeightWidth = void 0; + } + this._rerender(this.lastRenderTop, this.lastRenderHeight); + } + get length() { + return this.items.length; + } + get renderHeight() { + const scrollDimensions = this.scrollableElement.getScrollDimensions(); + return scrollDimensions.height; + } + get firstVisibleIndex() { + const range2 = this.getRenderRange(this.lastRenderTop, this.lastRenderHeight); + return range2.start; + } + get firstMostlyVisibleIndex() { + const firstVisibleIndex = this.firstVisibleIndex; + const firstElTop = this.rangeMap.positionAt(firstVisibleIndex); + const nextElTop = this.rangeMap.positionAt(firstVisibleIndex + 1); + if (nextElTop !== -1) { + const firstElMidpoint = (nextElTop - firstElTop) / 2 + firstElTop; + if (firstElMidpoint < this.scrollTop) { + return firstVisibleIndex + 1; + } + } + return firstVisibleIndex; + } + get lastVisibleIndex() { + const range2 = this.getRenderRange(this.lastRenderTop, this.lastRenderHeight); + return range2.end - 1; + } + element(index) { + return this.items[index].element; + } + indexOf(element) { + return this.items.findIndex((item) => item.element === element); + } + domElement(index) { + const row = this.items[index].row; + return row && row.domNode; + } + elementHeight(index) { + return this.items[index].size; + } + elementTop(index) { + return this.rangeMap.positionAt(index); + } + indexAt(position) { + return this.rangeMap.indexAt(position); + } + indexAfter(position) { + return this.rangeMap.indexAfter(position); + } + layout(height, width) { + const scrollDimensions = { + height: typeof height === "number" ? height : getContentHeight(this.domNode) + }; + if (this.scrollableElementUpdateDisposable) { + this.scrollableElementUpdateDisposable.dispose(); + this.scrollableElementUpdateDisposable = null; + scrollDimensions.scrollHeight = this.scrollHeight; + } + this.scrollableElement.setScrollDimensions(scrollDimensions); + if (typeof width !== "undefined") { + this.renderWidth = width; + if (this.supportDynamicHeights) { + this._rerender(this.scrollTop, this.renderHeight); + } + } + if (this.horizontalScrolling) { + this.scrollableElement.setScrollDimensions({ + width: typeof width === "number" ? width : getContentWidth(this.domNode) + }); + } + } + // Render + render(previousRenderRange, renderTop, renderHeight, renderLeft, scrollWidth, updateItemsInDOM = false) { + const renderRange = this.getRenderRange(renderTop, renderHeight); + const rangesToInsert = Range.relativeComplement(renderRange, previousRenderRange).reverse(); + const rangesToRemove = Range.relativeComplement(previousRenderRange, renderRange); + if (updateItemsInDOM) { + const rangesToUpdate = Range.intersect(previousRenderRange, renderRange); + for (let i = rangesToUpdate.start; i < rangesToUpdate.end; i++) { + this.updateItemInDOM(this.items[i], i); + } + } + this.cache.transact(() => { + for (const range2 of rangesToRemove) { + for (let i = range2.start; i < range2.end; i++) { + this.removeItemFromDOM(i); + } + } + for (const range2 of rangesToInsert) { + for (let i = range2.end - 1; i >= range2.start; i--) { + this.insertItemInDOM(i); + } + } + }); + if (renderLeft !== void 0) { + this.rowsContainer.style.left = `-${renderLeft}px`; + } + this.rowsContainer.style.top = `-${renderTop}px`; + if (this.horizontalScrolling && scrollWidth !== void 0) { + this.rowsContainer.style.width = `${Math.max(scrollWidth, this.renderWidth)}px`; + } + this.lastRenderTop = renderTop; + this.lastRenderHeight = renderHeight; + } + // DOM operations + insertItemInDOM(index, row) { + const item = this.items[index]; + if (!item.row) { + if (row) { + item.row = row; + item.stale = true; + } else { + const result = this.cache.alloc(item.templateId); + item.row = result.row; + item.stale ||= result.isReusingConnectedDomNode; + } + } + const role = this.accessibilityProvider.getRole(item.element) || "listitem"; + item.row.domNode.setAttribute("role", role); + const checked = this.accessibilityProvider.isChecked(item.element); + if (typeof checked === "boolean") { + item.row.domNode.setAttribute("aria-checked", String(!!checked)); + } else if (checked) { + const update = (checked2) => item.row.domNode.setAttribute("aria-checked", String(!!checked2)); + update(checked.value); + item.checkedDisposable = checked.onDidChange(() => update(checked.value)); + } + if (item.stale || !item.row.domNode.parentElement) { + const referenceNode = this.items.at(index + 1)?.row?.domNode ?? null; + if (item.row.domNode.parentElement !== this.rowsContainer || item.row.domNode.nextElementSibling !== referenceNode) { + this.rowsContainer.insertBefore(item.row.domNode, referenceNode); + } + item.stale = false; + } + this.updateItemInDOM(item, index); + const renderer = this.renderers.get(item.templateId); + if (!renderer) { + throw new Error(`No renderer found for template id ${item.templateId}`); + } + renderer?.renderElement(item.element, index, item.row.templateData, item.size); + const uri = this.dnd.getDragURI(item.element); + item.dragStartDisposable.dispose(); + item.row.domNode.draggable = !!uri; + if (uri) { + item.dragStartDisposable = addDisposableListener(item.row.domNode, "dragstart", (event) => this.onDragStart(item.element, uri, event)); + } + if (this.horizontalScrolling) { + this.measureItemWidth(item); + this.eventuallyUpdateScrollWidth(); + } + } + measureItemWidth(item) { + if (!item.row || !item.row.domNode) { + return; + } + item.row.domNode.style.width = "fit-content"; + item.width = getContentWidth(item.row.domNode); + const style = getWindow(item.row.domNode).getComputedStyle(item.row.domNode); + if (style.paddingLeft) { + item.width += parseFloat(style.paddingLeft); + } + if (style.paddingRight) { + item.width += parseFloat(style.paddingRight); + } + item.row.domNode.style.width = ""; + } + updateItemInDOM(item, index) { + item.row.domNode.style.top = `${this.elementTop(index)}px`; + if (this.setRowHeight) { + item.row.domNode.style.height = `${item.size}px`; + } + if (this.setRowLineHeight) { + item.row.domNode.style.lineHeight = `${item.size}px`; + } + item.row.domNode.setAttribute("data-index", `${index}`); + item.row.domNode.setAttribute("data-last-element", index === this.length - 1 ? "true" : "false"); + item.row.domNode.setAttribute("data-parity", index % 2 === 0 ? "even" : "odd"); + item.row.domNode.setAttribute("aria-setsize", String(this.accessibilityProvider.getSetSize(item.element, index, this.length))); + item.row.domNode.setAttribute("aria-posinset", String(this.accessibilityProvider.getPosInSet(item.element, index))); + item.row.domNode.setAttribute("id", this.getElementDomId(index)); + item.row.domNode.classList.toggle("drop-target", item.dropTarget); + } + removeItemFromDOM(index) { + const item = this.items[index]; + item.dragStartDisposable.dispose(); + item.checkedDisposable.dispose(); + if (item.row) { + const renderer = this.renderers.get(item.templateId); + if (renderer && renderer.disposeElement) { + renderer.disposeElement(item.element, index, item.row.templateData, item.size); + } + this.cache.release(item.row); + item.row = null; + } + if (this.horizontalScrolling) { + this.eventuallyUpdateScrollWidth(); + } + } + getScrollTop() { + const scrollPosition = this.scrollableElement.getScrollPosition(); + return scrollPosition.scrollTop; + } + setScrollTop(scrollTop, reuseAnimation) { + if (this.scrollableElementUpdateDisposable) { + this.scrollableElementUpdateDisposable.dispose(); + this.scrollableElementUpdateDisposable = null; + this.scrollableElement.setScrollDimensions({ scrollHeight: this.scrollHeight }); + } + this.scrollableElement.setScrollPosition({ scrollTop, reuseAnimation }); + } + getScrollLeft() { + const scrollPosition = this.scrollableElement.getScrollPosition(); + return scrollPosition.scrollLeft; + } + setScrollLeft(scrollLeft) { + if (this.scrollableElementUpdateDisposable) { + this.scrollableElementUpdateDisposable.dispose(); + this.scrollableElementUpdateDisposable = null; + this.scrollableElement.setScrollDimensions({ scrollWidth: this.scrollWidth }); + } + this.scrollableElement.setScrollPosition({ scrollLeft }); + } + get scrollTop() { + return this.getScrollTop(); + } + set scrollTop(scrollTop) { + this.setScrollTop(scrollTop); + } + get scrollHeight() { + return this._scrollHeight + (this.horizontalScrolling ? 10 : 0) + this.paddingBottom; + } + get onMouseClick() { + return Event.map(this.disposables.add(new DomEmitter(this.domNode, "click")).event, (e) => this.toMouseEvent(e), this.disposables); + } + get onMouseDblClick() { + return Event.map(this.disposables.add(new DomEmitter(this.domNode, "dblclick")).event, (e) => this.toMouseEvent(e), this.disposables); + } + get onMouseMiddleClick() { + return Event.filter(Event.map(this.disposables.add(new DomEmitter(this.domNode, "auxclick")).event, (e) => this.toMouseEvent(e), this.disposables), (e) => e.browserEvent.button === 1, this.disposables); + } + get onMouseUp() { + return Event.map(this.disposables.add(new DomEmitter(this.domNode, "mouseup")).event, (e) => this.toMouseEvent(e), this.disposables); + } + get onMouseDown() { + return Event.map(this.disposables.add(new DomEmitter(this.domNode, "mousedown")).event, (e) => this.toMouseEvent(e), this.disposables); + } + get onMouseOver() { + return Event.map(this.disposables.add(new DomEmitter(this.domNode, "mouseover")).event, (e) => this.toMouseEvent(e), this.disposables); + } + get onMouseMove() { + return Event.map(this.disposables.add(new DomEmitter(this.domNode, "mousemove")).event, (e) => this.toMouseEvent(e), this.disposables); + } + get onMouseOut() { + return Event.map(this.disposables.add(new DomEmitter(this.domNode, "mouseout")).event, (e) => this.toMouseEvent(e), this.disposables); + } + get onContextMenu() { + return Event.any(Event.map(this.disposables.add(new DomEmitter(this.domNode, "contextmenu")).event, (e) => this.toMouseEvent(e), this.disposables), Event.map(this.disposables.add(new DomEmitter(this.domNode, EventType2.Contextmenu)).event, (e) => this.toGestureEvent(e), this.disposables)); + } + get onTouchStart() { + return Event.map(this.disposables.add(new DomEmitter(this.domNode, "touchstart")).event, (e) => this.toTouchEvent(e), this.disposables); + } + get onTap() { + return Event.map(this.disposables.add(new DomEmitter(this.rowsContainer, EventType2.Tap)).event, (e) => this.toGestureEvent(e), this.disposables); + } + toMouseEvent(browserEvent) { + const index = this.getItemIndexFromEventTarget(browserEvent.target || null); + const item = typeof index === "undefined" ? void 0 : this.items[index]; + const element = item && item.element; + return { browserEvent, index, element }; + } + toTouchEvent(browserEvent) { + const index = this.getItemIndexFromEventTarget(browserEvent.target || null); + const item = typeof index === "undefined" ? void 0 : this.items[index]; + const element = item && item.element; + return { browserEvent, index, element }; + } + toGestureEvent(browserEvent) { + const index = this.getItemIndexFromEventTarget(browserEvent.initialTarget || null); + const item = typeof index === "undefined" ? void 0 : this.items[index]; + const element = item && item.element; + return { browserEvent, index, element }; + } + toDragEvent(browserEvent) { + const index = this.getItemIndexFromEventTarget(browserEvent.target || null); + const item = typeof index === "undefined" ? void 0 : this.items[index]; + const element = item && item.element; + const sector = this.getTargetSector(browserEvent, index); + return { browserEvent, index, element, sector }; + } + onScroll(e) { + try { + const previousRenderRange = this.getRenderRange(this.lastRenderTop, this.lastRenderHeight); + this.render(previousRenderRange, e.scrollTop, e.height, e.scrollLeft, e.scrollWidth); + if (this.supportDynamicHeights) { + this._rerender(e.scrollTop, e.height, e.inSmoothScrolling); + } + } catch (err) { + console.error("Got bad scroll event:", e); + throw err; + } + } + onTouchChange(event) { + event.preventDefault(); + event.stopPropagation(); + this.scrollTop -= event.translationY; + } + // DND + onDragStart(element, uri, event) { + if (!event.dataTransfer) { + return; + } + const elements = this.dnd.getDragElements(element); + event.dataTransfer.effectAllowed = "copyMove"; + event.dataTransfer.setData(DataTransfers.TEXT, uri); + if (event.dataTransfer.setDragImage) { + let label; + if (this.dnd.getDragLabel) { + label = this.dnd.getDragLabel(elements, event); + } + if (typeof label === "undefined") { + label = String(elements.length); + } + const dragImage = $(".monaco-drag-image"); + dragImage.textContent = label; + const getDragImageContainer = (e) => { + while (e && !e.classList.contains("monaco-workbench")) { + e = e.parentElement; + } + return e || this.domNode.ownerDocument; + }; + const container = getDragImageContainer(this.domNode); + container.appendChild(dragImage); + event.dataTransfer.setDragImage(dragImage, -10, -10); + setTimeout(() => dragImage.remove(), 0); + } + this.domNode.classList.add("dragging"); + this.currentDragData = new ElementsDragAndDropData(elements); + StaticDND.CurrentDragAndDropData = new ExternalElementsDragAndDropData(elements); + this.dnd.onDragStart?.(this.currentDragData, event); + } + onDragOver(event) { + event.browserEvent.preventDefault(); + this.onDragLeaveTimeout.dispose(); + if (StaticDND.CurrentDragAndDropData && StaticDND.CurrentDragAndDropData.getData() === "vscode-ui") { + return false; + } + this.setupDragAndDropScrollTopAnimation(event.browserEvent); + if (!event.browserEvent.dataTransfer) { + return false; + } + if (!this.currentDragData) { + if (StaticDND.CurrentDragAndDropData) { + this.currentDragData = StaticDND.CurrentDragAndDropData; + } else { + if (!event.browserEvent.dataTransfer.types) { + return false; + } + this.currentDragData = new NativeDragAndDropData(); + } + } + const result = this.dnd.onDragOver(this.currentDragData, event.element, event.index, event.sector, event.browserEvent); + this.canDrop = typeof result === "boolean" ? result : result.accept; + if (!this.canDrop) { + this.currentDragFeedback = void 0; + this.currentDragFeedbackDisposable.dispose(); + return false; + } + event.browserEvent.dataTransfer.dropEffect = typeof result !== "boolean" && result.effect?.type === 0 /* Copy */ ? "copy" : "move"; + let feedback; + if (typeof result !== "boolean" && result.feedback) { + feedback = result.feedback; + } else { + if (typeof event.index === "undefined") { + feedback = [-1]; + } else { + feedback = [event.index]; + } + } + feedback = distinct(feedback).filter((i) => i >= -1 && i < this.length).sort((a, b) => a - b); + feedback = feedback[0] === -1 ? [-1] : feedback; + let dragOverEffectPosition = typeof result !== "boolean" && result.effect && result.effect.position ? result.effect.position : "drop-target" /* Over */; + if (equalsDragFeedback(this.currentDragFeedback, feedback) && this.currentDragFeedbackPosition === dragOverEffectPosition) { + return true; + } + this.currentDragFeedback = feedback; + this.currentDragFeedbackPosition = dragOverEffectPosition; + this.currentDragFeedbackDisposable.dispose(); + if (feedback[0] === -1) { + this.domNode.classList.add(dragOverEffectPosition); + this.rowsContainer.classList.add(dragOverEffectPosition); + this.currentDragFeedbackDisposable = toDisposable(() => { + this.domNode.classList.remove(dragOverEffectPosition); + this.rowsContainer.classList.remove(dragOverEffectPosition); + }); + } else { + if (feedback.length > 1 && dragOverEffectPosition !== "drop-target" /* Over */) { + throw new Error("Can't use multiple feedbacks with position different than 'over'"); + } + if (dragOverEffectPosition === "drop-target-after" /* After */) { + if (feedback[0] < this.length - 1) { + feedback[0] += 1; + dragOverEffectPosition = "drop-target-before" /* Before */; + } + } + for (const index of feedback) { + const item = this.items[index]; + item.dropTarget = true; + item.row?.domNode.classList.add(dragOverEffectPosition); + } + this.currentDragFeedbackDisposable = toDisposable(() => { + for (const index of feedback) { + const item = this.items[index]; + item.dropTarget = false; + item.row?.domNode.classList.remove(dragOverEffectPosition); + } + }); + } + return true; + } + onDragLeave(event) { + this.onDragLeaveTimeout.dispose(); + this.onDragLeaveTimeout = disposableTimeout(() => this.clearDragOverFeedback(), 100, this.disposables); + if (this.currentDragData) { + this.dnd.onDragLeave?.(this.currentDragData, event.element, event.index, event.browserEvent); + } + } + onDrop(event) { + if (!this.canDrop) { + return; + } + const dragData = this.currentDragData; + this.teardownDragAndDropScrollTopAnimation(); + this.clearDragOverFeedback(); + this.domNode.classList.remove("dragging"); + this.currentDragData = void 0; + StaticDND.CurrentDragAndDropData = void 0; + if (!dragData || !event.browserEvent.dataTransfer) { + return; + } + event.browserEvent.preventDefault(); + dragData.update(event.browserEvent.dataTransfer); + this.dnd.drop(dragData, event.element, event.index, event.sector, event.browserEvent); + } + onDragEnd(event) { + this.canDrop = false; + this.teardownDragAndDropScrollTopAnimation(); + this.clearDragOverFeedback(); + this.domNode.classList.remove("dragging"); + this.currentDragData = void 0; + StaticDND.CurrentDragAndDropData = void 0; + this.dnd.onDragEnd?.(event); + } + clearDragOverFeedback() { + this.currentDragFeedback = void 0; + this.currentDragFeedbackPosition = void 0; + this.currentDragFeedbackDisposable.dispose(); + this.currentDragFeedbackDisposable = Disposable.None; + } + // DND scroll top animation + setupDragAndDropScrollTopAnimation(event) { + if (!this.dragOverAnimationDisposable) { + const viewTop = getTopLeftOffset(this.domNode).top; + this.dragOverAnimationDisposable = animate(getWindow(this.domNode), this.animateDragAndDropScrollTop.bind(this, viewTop)); + } + this.dragOverAnimationStopDisposable.dispose(); + this.dragOverAnimationStopDisposable = disposableTimeout(() => { + if (this.dragOverAnimationDisposable) { + this.dragOverAnimationDisposable.dispose(); + this.dragOverAnimationDisposable = void 0; + } + }, 1e3, this.disposables); + this.dragOverMouseY = event.pageY; + } + animateDragAndDropScrollTop(viewTop) { + if (this.dragOverMouseY === void 0) { + return; + } + const diff = this.dragOverMouseY - viewTop; + const upperLimit = this.renderHeight - 35; + if (diff < 35) { + this.scrollTop += Math.max(-14, Math.floor(0.3 * (diff - 35))); + } else if (diff > upperLimit) { + this.scrollTop += Math.min(14, Math.floor(0.3 * (diff - upperLimit))); + } + } + teardownDragAndDropScrollTopAnimation() { + this.dragOverAnimationStopDisposable.dispose(); + if (this.dragOverAnimationDisposable) { + this.dragOverAnimationDisposable.dispose(); + this.dragOverAnimationDisposable = void 0; + } + } + // Util + getTargetSector(browserEvent, targetIndex) { + if (targetIndex === void 0) { + return void 0; + } + const relativePosition = browserEvent.offsetY / this.items[targetIndex].size; + const sector = Math.floor(relativePosition / 0.25); + return clamp(sector, 0, 3); + } + getItemIndexFromEventTarget(target) { + const scrollableElement = this.scrollableElement.getDomNode(); + let element = target; + while ((isHTMLElement(element) || isSVGElement(element)) && element !== this.rowsContainer && scrollableElement.contains(element)) { + const rawIndex = element.getAttribute("data-index"); + if (rawIndex) { + const index = Number(rawIndex); + if (!isNaN(index)) { + return index; + } + } + element = element.parentElement; + } + return void 0; + } + getRenderRange(renderTop, renderHeight) { + return { + start: this.rangeMap.indexAt(renderTop), + end: this.rangeMap.indexAfter(renderTop + renderHeight - 1) + }; + } + /** + * Given a stable rendered state, checks every rendered element whether it needs + * to be probed for dynamic height. Adjusts scroll height and top if necessary. + */ + _rerender(renderTop, renderHeight, inSmoothScrolling) { + const previousRenderRange = this.getRenderRange(renderTop, renderHeight); + let anchorElementIndex; + let anchorElementTopDelta; + if (renderTop === this.elementTop(previousRenderRange.start)) { + anchorElementIndex = previousRenderRange.start; + anchorElementTopDelta = 0; + } else if (previousRenderRange.end - previousRenderRange.start > 1) { + anchorElementIndex = previousRenderRange.start + 1; + anchorElementTopDelta = this.elementTop(anchorElementIndex) - renderTop; + } + let heightDiff = 0; + while (true) { + const renderRange = this.getRenderRange(renderTop, renderHeight); + let didChange = false; + for (let i = renderRange.start; i < renderRange.end; i++) { + const diff = this.probeDynamicHeight(i); + if (diff !== 0) { + this.rangeMap.splice(i, 1, [this.items[i]]); + } + heightDiff += diff; + didChange = didChange || diff !== 0; + } + if (!didChange) { + if (heightDiff !== 0) { + this.eventuallyUpdateScrollDimensions(); + } + const unrenderRanges = Range.relativeComplement(previousRenderRange, renderRange); + for (const range2 of unrenderRanges) { + for (let i = range2.start; i < range2.end; i++) { + if (this.items[i].row) { + this.removeItemFromDOM(i); + } + } + } + const renderRanges = Range.relativeComplement(renderRange, previousRenderRange).reverse(); + for (const range2 of renderRanges) { + for (let i = range2.end - 1; i >= range2.start; i--) { + this.insertItemInDOM(i); + } + } + for (let i = renderRange.start; i < renderRange.end; i++) { + if (this.items[i].row) { + this.updateItemInDOM(this.items[i], i); + } + } + if (typeof anchorElementIndex === "number") { + const deltaScrollTop = this.scrollable.getFutureScrollPosition().scrollTop - renderTop; + const newScrollTop = this.elementTop(anchorElementIndex) - anchorElementTopDelta + deltaScrollTop; + this.setScrollTop(newScrollTop, inSmoothScrolling); + } + this._onDidChangeContentHeight.fire(this.contentHeight); + return; + } + } + } + probeDynamicHeight(index) { + const item = this.items[index]; + if (!!this.virtualDelegate.getDynamicHeight) { + const newSize = this.virtualDelegate.getDynamicHeight(item.element); + if (newSize !== null) { + const size2 = item.size; + item.size = newSize; + item.lastDynamicHeightWidth = this.renderWidth; + return newSize - size2; + } + } + if (!item.hasDynamicHeight || item.lastDynamicHeightWidth === this.renderWidth) { + return 0; + } + if (!!this.virtualDelegate.hasDynamicHeight && !this.virtualDelegate.hasDynamicHeight(item.element)) { + return 0; + } + const size = item.size; + if (item.row) { + item.row.domNode.style.height = ""; + item.size = item.row.domNode.offsetHeight; + if (item.size === 0 && !isAncestor(item.row.domNode, getWindow(item.row.domNode).document.body)) { + console.warn("Measuring item node that is not in DOM! Add ListView to the DOM before measuring row height!", new Error().stack); + } + item.lastDynamicHeightWidth = this.renderWidth; + return item.size - size; + } + const { row } = this.cache.alloc(item.templateId); + row.domNode.style.height = ""; + this.rowsContainer.appendChild(row.domNode); + const renderer = this.renderers.get(item.templateId); + if (!renderer) { + throw new BugIndicatingError("Missing renderer for templateId: " + item.templateId); + } + renderer.renderElement(item.element, index, row.templateData, void 0); + item.size = row.domNode.offsetHeight; + renderer.disposeElement?.(item.element, index, row.templateData, void 0); + this.virtualDelegate.setDynamicHeight?.(item.element, item.size); + item.lastDynamicHeightWidth = this.renderWidth; + row.domNode.remove(); + this.cache.release(row); + return item.size - size; + } + getElementDomId(index) { + return `${this.domId}_${index}`; + } + // Dispose + dispose() { + for (const item of this.items) { + item.dragStartDisposable.dispose(); + item.checkedDisposable.dispose(); + if (item.row) { + const renderer = this.renderers.get(item.row.templateId); + if (renderer) { + renderer.disposeElement?.(item.element, -1, item.row.templateData, void 0); + renderer.disposeTemplate(item.row.templateData); + } + } + } + this.items = []; + this.domNode?.remove(); + this.dragOverAnimationDisposable?.dispose(); + this.disposables.dispose(); + } +}; +__decorateClass([ + memoize +], _ListView.prototype, "onMouseClick", 1); +__decorateClass([ + memoize +], _ListView.prototype, "onMouseDblClick", 1); +__decorateClass([ + memoize +], _ListView.prototype, "onMouseMiddleClick", 1); +__decorateClass([ + memoize +], _ListView.prototype, "onMouseUp", 1); +__decorateClass([ + memoize +], _ListView.prototype, "onMouseDown", 1); +__decorateClass([ + memoize +], _ListView.prototype, "onMouseOver", 1); +__decorateClass([ + memoize +], _ListView.prototype, "onMouseMove", 1); +__decorateClass([ + memoize +], _ListView.prototype, "onMouseOut", 1); +__decorateClass([ + memoize +], _ListView.prototype, "onContextMenu", 1); +__decorateClass([ + memoize +], _ListView.prototype, "onTouchStart", 1); +__decorateClass([ + memoize +], _ListView.prototype, "onTap", 1); +var ListView = _ListView; + +// ../../../../../base/common/observableInternal/debugName.ts +var DebugNameData = class { + constructor(owner, debugNameSource, referenceFn) { + this.owner = owner; + this.debugNameSource = debugNameSource; + this.referenceFn = referenceFn; + } + getDebugName(target) { + return getDebugName(target, this); + } +}; +var countPerName = /* @__PURE__ */ new Map(); +var cachedDebugName = /* @__PURE__ */ new WeakMap(); +function getDebugName(target, data) { + const cached = cachedDebugName.get(target); + if (cached) { + return cached; + } + const dbgName = computeDebugName(target, data); + if (dbgName) { + let count = countPerName.get(dbgName) ?? 0; + count++; + countPerName.set(dbgName, count); + const result = count === 1 ? dbgName : `${dbgName}#${count}`; + cachedDebugName.set(target, result); + return result; + } + return void 0; +} +function computeDebugName(self2, data) { + const cached = cachedDebugName.get(self2); + if (cached) { + return cached; + } + const ownerStr = data.owner ? formatOwner(data.owner) + `.` : ""; + let result; + const debugNameSource = data.debugNameSource; + if (debugNameSource !== void 0) { + if (typeof debugNameSource === "function") { + result = debugNameSource(); + if (result !== void 0) { + return ownerStr + result; + } + } else { + return ownerStr + debugNameSource; + } + } + const referenceFn = data.referenceFn; + if (referenceFn !== void 0) { + result = getFunctionName(referenceFn); + if (result !== void 0) { + return ownerStr + result; + } + } + if (data.owner !== void 0) { + const key = findKey(data.owner, self2); + if (key !== void 0) { + return ownerStr + key; + } + } + return void 0; +} +function findKey(obj, value) { + for (const key in obj) { + if (obj[key] === value) { + return key; + } + } + return void 0; +} +var countPerClassName = /* @__PURE__ */ new Map(); +var ownerId = /* @__PURE__ */ new WeakMap(); +function formatOwner(owner) { + const id2 = ownerId.get(owner); + if (id2) { + return id2; + } + const className = getClassName(owner); + let count = countPerClassName.get(className) ?? 0; + count++; + countPerClassName.set(className, count); + const result = count === 1 ? className : `${className}#${count}`; + ownerId.set(owner, result); + return result; +} +function getClassName(obj) { + const ctor = obj.constructor; + if (ctor) { + return ctor.name; + } + return "Object"; +} +function getFunctionName(fn) { + const fnSrc = fn.toString(); + const regexp = /\/\*\*\s*@description\s*([^*]*)\*\//; + const match = regexp.exec(fnSrc); + const result = match ? match[1] : void 0; + return result?.trim(); +} + +// ../../../../../base/common/equals.ts +var strictEquals = (a, b) => a === b; + +// ../../../../../base/common/observableInternal/logging.ts +var globalObservableLogger; +function getLogger() { + return globalObservableLogger; +} + +// ../../../../../base/common/observableInternal/base.ts +var _recomputeInitiallyAndOnChange; +function _setRecomputeInitiallyAndOnChange(recomputeInitiallyAndOnChange2) { + _recomputeInitiallyAndOnChange = recomputeInitiallyAndOnChange2; +} +var _keepObserved; +function _setKeepObserved(keepObserved2) { + _keepObserved = keepObserved2; +} +var _derived; +function _setDerivedOpts(derived2) { + _derived = derived2; +} +var ConvenientObservable = class { + get TChange() { + return null; + } + reportChanges() { + this.get(); + } + /** @sealed */ + read(reader) { + if (reader) { + return reader.readObservable(this); + } else { + return this.get(); + } + } + map(fnOrOwner, fnOrUndefined) { + const owner = fnOrUndefined === void 0 ? void 0 : fnOrOwner; + const fn = fnOrUndefined === void 0 ? fnOrOwner : fnOrUndefined; + return _derived( + { + owner, + debugName: () => { + const name = getFunctionName(fn); + if (name !== void 0) { + return name; + } + const regexp = /^\s*\(?\s*([a-zA-Z_$][a-zA-Z_$0-9]*)\s*\)?\s*=>\s*\1(?:\??)\.([a-zA-Z_$][a-zA-Z_$0-9]*)\s*$/; + const match = regexp.exec(fn.toString()); + if (match) { + return `${this.debugName}.${match[2]}`; + } + if (!owner) { + return `${this.debugName} (mapped)`; + } + return void 0; + }, + debugReferenceFn: fn + }, + (reader) => fn(this.read(reader), reader) + ); + } + /** + * @sealed + * Converts an observable of an observable value into a direct observable of the value. + */ + flatten() { + return _derived( + { + owner: void 0, + debugName: () => `${this.debugName} (flattened)` + }, + (reader) => this.read(reader).read(reader) + ); + } + recomputeInitiallyAndOnChange(store, handleValue) { + store.add(_recomputeInitiallyAndOnChange(this, handleValue)); + return this; + } + /** + * Ensures that this observable is observed. This keeps the cache alive. + * However, in case of deriveds, it does not force eager evaluation (only when the value is read/get). + * Use `recomputeInitiallyAndOnChange` for eager evaluation. + */ + keepObserved(store) { + store.add(_keepObserved(this)); + return this; + } + get debugValue() { + return this.get(); + } +}; +var BaseObservable = class extends ConvenientObservable { + constructor() { + super(...arguments); + this.observers = /* @__PURE__ */ new Set(); + } + addObserver(observer) { + const len = this.observers.size; + this.observers.add(observer); + if (len === 0) { + this.onFirstObserverAdded(); + } + } + removeObserver(observer) { + const deleted = this.observers.delete(observer); + if (deleted && this.observers.size === 0) { + this.onLastObserverRemoved(); + } + } + onFirstObserverAdded() { + } + onLastObserverRemoved() { + } +}; +function transaction(fn, getDebugName2) { + const tx = new TransactionImpl(fn, getDebugName2); + try { + fn(tx); + } finally { + tx.finish(); + } +} +function subtransaction(tx, fn, getDebugName2) { + if (!tx) { + transaction(fn, getDebugName2); + } else { + fn(tx); + } +} +var TransactionImpl = class { + constructor(_fn, _getDebugName) { + this._fn = _fn; + this._getDebugName = _getDebugName; + this.updatingObservers = []; + } + getDebugName() { + if (this._getDebugName) { + return this._getDebugName(); + } + return getFunctionName(this._fn); + } + updateObserver(observer, observable) { + this.updatingObservers.push({ observer, observable }); + observer.beginUpdate(observable); + } + finish() { + const updatingObservers = this.updatingObservers; + for (let i = 0; i < updatingObservers.length; i++) { + const { observer, observable } = updatingObservers[i]; + observer.endUpdate(observable); + } + this.updatingObservers = null; + } +}; + +// ../../../../../base/common/observableInternal/autorun.ts +function autorun(fn) { + return new AutorunObserver( + new DebugNameData(void 0, void 0, fn), + fn, + void 0, + void 0 + ); +} +var AutorunObserver = class { + constructor(_debugNameData, _runFn, createChangeSummary, _handleChange) { + this._debugNameData = _debugNameData; + this._runFn = _runFn; + this.createChangeSummary = createChangeSummary; + this._handleChange = _handleChange; + this.state = 2 /* stale */; + this.updateCount = 0; + this.disposed = false; + this.dependencies = /* @__PURE__ */ new Set(); + this.dependenciesToBeRemoved = /* @__PURE__ */ new Set(); + this.changeSummary = this.createChangeSummary?.(); + this._runIfNeeded(); + } + get debugName() { + return this._debugNameData.getDebugName(this) ?? "(anonymous)"; + } + dispose() { + this.disposed = true; + for (const o of this.dependencies) { + o.removeObserver(this); + } + this.dependencies.clear(); + } + _runIfNeeded() { + if (this.state === 3 /* upToDate */) { + return; + } + const emptySet = this.dependenciesToBeRemoved; + this.dependenciesToBeRemoved = this.dependencies; + this.dependencies = emptySet; + this.state = 3 /* upToDate */; + const isDisposed = this.disposed; + try { + if (!isDisposed) { + getLogger()?.handleAutorunTriggered(this); + const changeSummary = this.changeSummary; + try { + this.changeSummary = this.createChangeSummary?.(); + this._runFn(this, changeSummary); + } catch (e) { + onBugIndicatingError(e); + } + } + } finally { + for (const o of this.dependenciesToBeRemoved) { + o.removeObserver(this); + } + this.dependenciesToBeRemoved.clear(); + } + } + toString() { + return `Autorun<${this.debugName}>`; + } + // IObserver implementation + beginUpdate() { + if (this.state === 3 /* upToDate */) { + this.state = 1 /* dependenciesMightHaveChanged */; + } + this.updateCount++; + } + endUpdate() { + try { + if (this.updateCount === 1) { + do { + if (this.state === 1 /* dependenciesMightHaveChanged */) { + this.state = 3 /* upToDate */; + for (const d of this.dependencies) { + d.reportChanges(); + if (this.state === 2 /* stale */) { + break; + } + } + } + this._runIfNeeded(); + } while (this.state !== 3 /* upToDate */); + } + } finally { + this.updateCount--; + } + assertFn(() => this.updateCount >= 0); + } + handlePossibleChange(observable) { + if (this.state === 3 /* upToDate */ && this.dependencies.has(observable) && !this.dependenciesToBeRemoved.has(observable)) { + this.state = 1 /* dependenciesMightHaveChanged */; + } + } + handleChange(observable, change) { + if (this.dependencies.has(observable) && !this.dependenciesToBeRemoved.has(observable)) { + try { + const shouldReact = this._handleChange ? this._handleChange({ + changedObservable: observable, + change, + didChange: (o) => o === observable + }, this.changeSummary) : true; + if (shouldReact) { + this.state = 2 /* stale */; + } + } catch (e) { + onBugIndicatingError(e); + } + } + } + // IReader implementation + readObservable(observable) { + if (this.disposed) { + return observable.get(); + } + observable.addObserver(this); + const value = observable.get(); + this.dependencies.add(observable); + this.dependenciesToBeRemoved.delete(observable); + return value; + } +}; +((autorun2) => { + autorun2.Observer = AutorunObserver; +})(autorun || (autorun = {})); + +// ../../../../../base/common/observableInternal/derived.ts +function derivedOpts(options2, computeFn) { + return new Derived( + new DebugNameData(options2.owner, options2.debugName, options2.debugReferenceFn), + computeFn, + void 0, + void 0, + options2.onLastObserverRemoved, + options2.equalsFn ?? strictEquals + ); +} +_setDerivedOpts(derivedOpts); +var Derived = class extends BaseObservable { + constructor(_debugNameData, _computeFn, createChangeSummary, _handleChange, _handleLastObserverRemoved = void 0, _equalityComparator) { + super(); + this._debugNameData = _debugNameData; + this._computeFn = _computeFn; + this.createChangeSummary = createChangeSummary; + this._handleChange = _handleChange; + this._handleLastObserverRemoved = _handleLastObserverRemoved; + this._equalityComparator = _equalityComparator; + this.state = 0 /* initial */; + this.value = void 0; + this.updateCount = 0; + this.dependencies = /* @__PURE__ */ new Set(); + this.dependenciesToBeRemoved = /* @__PURE__ */ new Set(); + this.changeSummary = void 0; + this.changeSummary = this.createChangeSummary?.(); + } + get debugName() { + return this._debugNameData.getDebugName(this) ?? "(anonymous)"; + } + onLastObserverRemoved() { + this.state = 0 /* initial */; + this.value = void 0; + for (const d of this.dependencies) { + d.removeObserver(this); + } + this.dependencies.clear(); + this._handleLastObserverRemoved?.(); + } + get() { + if (this.observers.size === 0) { + const result = this._computeFn(this, this.createChangeSummary?.()); + this.onLastObserverRemoved(); + return result; + } else { + do { + if (this.state === 1 /* dependenciesMightHaveChanged */) { + for (const d of this.dependencies) { + d.reportChanges(); + if (this.state === 2 /* stale */) { + break; + } + } + } + if (this.state === 1 /* dependenciesMightHaveChanged */) { + this.state = 3 /* upToDate */; + } + this._recomputeIfNeeded(); + } while (this.state !== 3 /* upToDate */); + return this.value; + } + } + _recomputeIfNeeded() { + if (this.state === 3 /* upToDate */) { + return; + } + const emptySet = this.dependenciesToBeRemoved; + this.dependenciesToBeRemoved = this.dependencies; + this.dependencies = emptySet; + const hadValue = this.state !== 0 /* initial */; + const oldValue = this.value; + this.state = 3 /* upToDate */; + let didChange = false; + try { + const changeSummary = this.changeSummary; + this.changeSummary = this.createChangeSummary?.(); + try { + this.value = this._computeFn(this, changeSummary); + } finally { + for (const o of this.dependenciesToBeRemoved) { + o.removeObserver(this); + } + this.dependenciesToBeRemoved.clear(); + } + didChange = hadValue && !this._equalityComparator(oldValue, this.value); + getLogger()?.handleDerivedRecomputed(this, { + oldValue, + newValue: this.value, + change: void 0, + didChange, + hadValue + }); + } catch (e) { + onBugIndicatingError(e); + } + if (didChange) { + for (const r of this.observers) { + r.handleChange(this, void 0); + } + } + } + toString() { + return `LazyDerived<${this.debugName}>`; + } + // IObserver Implementation + beginUpdate(_observable) { + this.updateCount++; + const propagateBeginUpdate = this.updateCount === 1; + if (this.state === 3 /* upToDate */) { + this.state = 1 /* dependenciesMightHaveChanged */; + if (!propagateBeginUpdate) { + for (const r of this.observers) { + r.handlePossibleChange(this); + } + } + } + if (propagateBeginUpdate) { + for (const r of this.observers) { + r.beginUpdate(this); + } + } + } + endUpdate(_observable) { + this.updateCount--; + if (this.updateCount === 0) { + const observers = [...this.observers]; + for (const r of observers) { + r.endUpdate(this); + } + } + assertFn(() => this.updateCount >= 0); + } + handlePossibleChange(observable) { + if (this.state === 3 /* upToDate */ && this.dependencies.has(observable) && !this.dependenciesToBeRemoved.has(observable)) { + this.state = 1 /* dependenciesMightHaveChanged */; + for (const r of this.observers) { + r.handlePossibleChange(this); + } + } + } + handleChange(observable, change) { + if (this.dependencies.has(observable) && !this.dependenciesToBeRemoved.has(observable)) { + let shouldReact = false; + try { + shouldReact = this._handleChange ? this._handleChange({ + changedObservable: observable, + change, + didChange: (o) => o === observable + }, this.changeSummary) : true; + } catch (e) { + onBugIndicatingError(e); + } + const wasUpToDate = this.state === 3 /* upToDate */; + if (shouldReact && (this.state === 1 /* dependenciesMightHaveChanged */ || wasUpToDate)) { + this.state = 2 /* stale */; + if (wasUpToDate) { + for (const r of this.observers) { + r.handlePossibleChange(this); + } + } + } + } + } + // IReader Implementation + readObservable(observable) { + observable.addObserver(this); + const value = observable.get(); + this.dependencies.add(observable); + this.dependenciesToBeRemoved.delete(observable); + return value; + } + addObserver(observer) { + const shouldCallBeginUpdate = !this.observers.has(observer) && this.updateCount > 0; + super.addObserver(observer); + if (shouldCallBeginUpdate) { + observer.beginUpdate(this); + } + } + removeObserver(observer) { + const shouldCallEndUpdate = this.observers.has(observer) && this.updateCount > 0; + super.removeObserver(observer); + if (shouldCallEndUpdate) { + observer.endUpdate(this); + } + } +}; + +// ../../../../../base/common/observableInternal/utils.ts +function constObservable(value) { + return new ConstObservable(value); +} +var ConstObservable = class extends ConvenientObservable { + constructor(value) { + super(); + this.value = value; + } + get debugName() { + return this.toString(); + } + get() { + return this.value; + } + addObserver(observer) { + } + removeObserver(observer) { + } + toString() { + return `Const: ${this.value}`; + } +}; +function observableFromEvent(...args) { + let owner; + let event; + let getValue; + if (args.length === 3) { + [owner, event, getValue] = args; + } else { + [event, getValue] = args; + } + return new FromEventObservable( + new DebugNameData(owner, void 0, getValue), + event, + getValue, + () => FromEventObservable.globalTransaction, + strictEquals + ); +} +var FromEventObservable = class extends BaseObservable { + constructor(_debugNameData, event, _getValue, _getTransaction, _equalityComparator) { + super(); + this._debugNameData = _debugNameData; + this.event = event; + this._getValue = _getValue; + this._getTransaction = _getTransaction; + this._equalityComparator = _equalityComparator; + this.hasValue = false; + this.handleEvent = (args) => { + const newValue = this._getValue(args); + const oldValue = this.value; + const didChange = !this.hasValue || !this._equalityComparator(oldValue, newValue); + if (didChange) { + this.value = newValue; + if (this.hasValue) { + subtransaction( + this._getTransaction(), + (tx) => { + for (const o of this.observers) { + tx.updateObserver(o, this); + o.handleChange(this, void 0); + } + }, + () => { + const name = this.getDebugName(); + return "Event fired" + (name ? `: ${name}` : ""); + } + ); + } + this.hasValue = true; + } + }; + } + getDebugName() { + return this._debugNameData.getDebugName(this); + } + get debugName() { + const name = this.getDebugName(); + return "From Event" + (name ? `: ${name}` : ""); + } + onFirstObserverAdded() { + this.subscription = this.event(this.handleEvent); + } + onLastObserverRemoved() { + this.subscription.dispose(); + this.subscription = void 0; + this.hasValue = false; + this.value = void 0; + } + get() { + if (this.subscription) { + if (!this.hasValue) { + this.handleEvent(void 0); + } + return this.value; + } else { + const value = this._getValue(void 0); + return value; + } + } +}; +((observableFromEvent2) => { + observableFromEvent2.Observer = FromEventObservable; + function batchEventsGlobally(tx, fn) { + let didSet = false; + if (FromEventObservable.globalTransaction === void 0) { + FromEventObservable.globalTransaction = tx; + didSet = true; + } + try { + fn(); + } finally { + if (didSet) { + FromEventObservable.globalTransaction = void 0; + } + } + } + observableFromEvent2.batchEventsGlobally = batchEventsGlobally; +})(observableFromEvent || (observableFromEvent = {})); +function keepObserved(observable) { + const o = new KeepAliveObserver(false, void 0); + observable.addObserver(o); + return toDisposable(() => { + observable.removeObserver(o); + }); +} +_setKeepObserved(keepObserved); +function recomputeInitiallyAndOnChange(observable, handleValue) { + const o = new KeepAliveObserver(true, handleValue); + observable.addObserver(o); + if (handleValue) { + handleValue(observable.get()); + } else { + observable.reportChanges(); + } + return toDisposable(() => { + observable.removeObserver(o); + }); +} +_setRecomputeInitiallyAndOnChange(recomputeInitiallyAndOnChange); +var KeepAliveObserver = class { + constructor(_forceRecompute, _handleValue) { + this._forceRecompute = _forceRecompute; + this._handleValue = _handleValue; + this._counter = 0; + } + beginUpdate(observable) { + this._counter++; + } + endUpdate(observable) { + this._counter--; + if (this._counter === 0 && this._forceRecompute) { + if (this._handleValue) { + this._handleValue(observable.get()); + } else { + observable.reportChanges(); + } + } + } + handlePossibleChange(observable) { + } + handleChange(observable, change) { + } +}; + +// ../../../../../base/browser/ui/list/listWidget.ts +var TraitRenderer = class { + constructor(trait) { + this.trait = trait; + this.renderedElements = []; + } + get templateId() { + return `template:${this.trait.name}`; + } + renderTemplate(container) { + return container; + } + renderElement(element, index, templateData) { + const renderedElementIndex = this.renderedElements.findIndex((el) => el.templateData === templateData); + if (renderedElementIndex >= 0) { + const rendered = this.renderedElements[renderedElementIndex]; + this.trait.unrender(templateData); + rendered.index = index; + } else { + const rendered = { index, templateData }; + this.renderedElements.push(rendered); + } + this.trait.renderIndex(index, templateData); + } + splice(start, deleteCount, insertCount) { + const rendered = []; + for (const renderedElement of this.renderedElements) { + if (renderedElement.index < start) { + rendered.push(renderedElement); + } else if (renderedElement.index >= start + deleteCount) { + rendered.push({ + index: renderedElement.index + insertCount - deleteCount, + templateData: renderedElement.templateData + }); + } + } + this.renderedElements = rendered; + } + renderIndexes(indexes) { + for (const { index, templateData } of this.renderedElements) { + if (indexes.indexOf(index) > -1) { + this.trait.renderIndex(index, templateData); + } + } + } + disposeTemplate(templateData) { + const index = this.renderedElements.findIndex((el) => el.templateData === templateData); + if (index < 0) { + return; + } + this.renderedElements.splice(index, 1); + } +}; +var Trait = class { + constructor(_trait) { + this._trait = _trait; + this.indexes = []; + this.sortedIndexes = []; + this._onChange = new Emitter(); + this.onChange = this._onChange.event; + } + get name() { + return this._trait; + } + get renderer() { + return new TraitRenderer(this); + } + splice(start, deleteCount, elements) { + const diff = elements.length - deleteCount; + const end = start + deleteCount; + const sortedIndexes = []; + let i = 0; + while (i < this.sortedIndexes.length && this.sortedIndexes[i] < start) { + sortedIndexes.push(this.sortedIndexes[i++]); + } + for (let j = 0; j < elements.length; j++) { + if (elements[j]) { + sortedIndexes.push(j + start); + } + } + while (i < this.sortedIndexes.length && this.sortedIndexes[i] >= end) { + sortedIndexes.push(this.sortedIndexes[i++] + diff); + } + this.renderer.splice(start, deleteCount, elements.length); + this._set(sortedIndexes, sortedIndexes); + } + renderIndex(index, container) { + container.classList.toggle(this._trait, this.contains(index)); + } + unrender(container) { + container.classList.remove(this._trait); + } + /** + * Sets the indexes which should have this trait. + * + * @param indexes Indexes which should have this trait. + * @return The old indexes which had this trait. + */ + set(indexes, browserEvent) { + return this._set(indexes, [...indexes].sort(numericSort), browserEvent); + } + _set(indexes, sortedIndexes, browserEvent) { + const result = this.indexes; + const sortedResult = this.sortedIndexes; + this.indexes = indexes; + this.sortedIndexes = sortedIndexes; + const toRender = disjunction(sortedResult, indexes); + this.renderer.renderIndexes(toRender); + this._onChange.fire({ indexes, browserEvent }); + return result; + } + get() { + return this.indexes; + } + contains(index) { + return binarySearch(this.sortedIndexes, index, numericSort) >= 0; + } + dispose() { + dispose(this._onChange); + } +}; +__decorateClass([ + memoize +], Trait.prototype, "renderer", 1); +var SelectionTrait = class extends Trait { + constructor(setAriaSelected) { + super("selected"); + this.setAriaSelected = setAriaSelected; + } + renderIndex(index, container) { + super.renderIndex(index, container); + if (this.setAriaSelected) { + if (this.contains(index)) { + container.setAttribute("aria-selected", "true"); + } else { + container.setAttribute("aria-selected", "false"); + } + } + } +}; +var TraitSpliceable = class { + constructor(trait, view, identityProvider) { + this.trait = trait; + this.view = view; + this.identityProvider = identityProvider; + } + splice(start, deleteCount, elements) { + if (!this.identityProvider) { + return this.trait.splice(start, deleteCount, new Array(elements.length).fill(false)); + } + const pastElementsWithTrait = this.trait.get().map((i) => this.identityProvider.getId(this.view.element(i)).toString()); + if (pastElementsWithTrait.length === 0) { + return this.trait.splice(start, deleteCount, new Array(elements.length).fill(false)); + } + const pastElementsWithTraitSet = new Set(pastElementsWithTrait); + const elementsWithTrait = elements.map((e) => pastElementsWithTraitSet.has(this.identityProvider.getId(e).toString())); + this.trait.splice(start, deleteCount, elementsWithTrait); + } +}; +function isListElementDescendantOfClass(e, className) { + if (e.classList.contains(className)) { + return true; + } + if (e.classList.contains("monaco-list")) { + return false; + } + if (!e.parentElement) { + return false; + } + return isListElementDescendantOfClass(e.parentElement, className); +} +function isMonacoEditor(e) { + return isListElementDescendantOfClass(e, "monaco-editor"); +} +var KeyboardController = class { + constructor(list, view, options2) { + this.list = list; + this.view = view; + this.disposables = new DisposableStore(); + this.multipleSelectionDisposables = new DisposableStore(); + this.multipleSelectionSupport = options2.multipleSelectionSupport; + this.disposables.add(this.onKeyDown((e) => { + switch (e.keyCode) { + case 3 /* Enter */: + return this.onEnter(e); + case 16 /* UpArrow */: + return this.onUpArrow(e); + case 18 /* DownArrow */: + return this.onDownArrow(e); + case 11 /* PageUp */: + return this.onPageUpArrow(e); + case 12 /* PageDown */: + return this.onPageDownArrow(e); + case 9 /* Escape */: + return this.onEscape(e); + case 31 /* KeyA */: + if (this.multipleSelectionSupport && (isMacintosh ? e.metaKey : e.ctrlKey)) { + this.onCtrlA(e); + } + } + })); + } + get onKeyDown() { + return Event.chain( + this.disposables.add(new DomEmitter(this.view.domNode, "keydown")).event, + ($4) => $4.filter((e) => !isEditableElement(e.target)).map((e) => new StandardKeyboardEvent(e)) + ); + } + updateOptions(optionsUpdate) { + if (optionsUpdate.multipleSelectionSupport !== void 0) { + this.multipleSelectionSupport = optionsUpdate.multipleSelectionSupport; + } + } + onEnter(e) { + e.preventDefault(); + e.stopPropagation(); + this.list.setSelection(this.list.getFocus(), e.browserEvent); + } + onUpArrow(e) { + e.preventDefault(); + e.stopPropagation(); + this.list.focusPrevious(1, false, e.browserEvent); + const el = this.list.getFocus()[0]; + this.list.setAnchor(el); + this.list.reveal(el); + this.view.domNode.focus(); + } + onDownArrow(e) { + e.preventDefault(); + e.stopPropagation(); + this.list.focusNext(1, false, e.browserEvent); + const el = this.list.getFocus()[0]; + this.list.setAnchor(el); + this.list.reveal(el); + this.view.domNode.focus(); + } + onPageUpArrow(e) { + e.preventDefault(); + e.stopPropagation(); + this.list.focusPreviousPage(e.browserEvent); + const el = this.list.getFocus()[0]; + this.list.setAnchor(el); + this.list.reveal(el); + this.view.domNode.focus(); + } + onPageDownArrow(e) { + e.preventDefault(); + e.stopPropagation(); + this.list.focusNextPage(e.browserEvent); + const el = this.list.getFocus()[0]; + this.list.setAnchor(el); + this.list.reveal(el); + this.view.domNode.focus(); + } + onCtrlA(e) { + e.preventDefault(); + e.stopPropagation(); + this.list.setSelection(range(this.list.length), e.browserEvent); + this.list.setAnchor(void 0); + this.view.domNode.focus(); + } + onEscape(e) { + if (this.list.getSelection().length) { + e.preventDefault(); + e.stopPropagation(); + this.list.setSelection([], e.browserEvent); + this.list.setAnchor(void 0); + this.view.domNode.focus(); + } + } + dispose() { + this.disposables.dispose(); + this.multipleSelectionDisposables.dispose(); + } +}; +__decorateClass([ + memoize +], KeyboardController.prototype, "onKeyDown", 1); +var DefaultKeyboardNavigationDelegate = new class { + mightProducePrintableCharacter(event) { + if (event.ctrlKey || event.metaKey || event.altKey) { + return false; + } + return event.keyCode >= 31 /* KeyA */ && event.keyCode <= 56 /* KeyZ */ || event.keyCode >= 21 /* Digit0 */ && event.keyCode <= 30 /* Digit9 */ || event.keyCode >= 98 /* Numpad0 */ && event.keyCode <= 107 /* Numpad9 */ || event.keyCode >= 85 /* Semicolon */ && event.keyCode <= 95 /* Quote */; + } +}(); +var TypeNavigationController = class { + constructor(list, view, keyboardNavigationLabelProvider, keyboardNavigationEventFilter, delegate) { + this.list = list; + this.view = view; + this.keyboardNavigationLabelProvider = keyboardNavigationLabelProvider; + this.keyboardNavigationEventFilter = keyboardNavigationEventFilter; + this.delegate = delegate; + this.enabled = false; + this.state = 0 /* Idle */; + this.mode = 0 /* Automatic */; + this.triggered = false; + this.previouslyFocused = -1; + this.enabledDisposables = new DisposableStore(); + this.disposables = new DisposableStore(); + this.updateOptions(list.options); + } + updateOptions(options2) { + if (options2.typeNavigationEnabled ?? true) { + this.enable(); + } else { + this.disable(); + } + this.mode = options2.typeNavigationMode ?? 0 /* Automatic */; + } + trigger() { + this.triggered = !this.triggered; + } + enable() { + if (this.enabled) { + return; + } + let typing = false; + const onChar = Event.chain( + this.enabledDisposables.add(new DomEmitter(this.view.domNode, "keydown")).event, + ($4) => $4.filter((e) => !isEditableElement(e.target)).filter(() => this.mode === 0 /* Automatic */ || this.triggered).map((event) => new StandardKeyboardEvent(event)).filter((e) => typing || this.keyboardNavigationEventFilter(e)).filter((e) => this.delegate.mightProducePrintableCharacter(e)).forEach((e) => EventHelper.stop(e, true)).map((event) => event.browserEvent.key) + ); + const onClear = Event.debounce(onChar, () => null, 800, void 0, void 0, void 0, this.enabledDisposables); + const onInput = Event.reduce(Event.any(onChar, onClear), (r, i) => i === null ? null : (r || "") + i, void 0, this.enabledDisposables); + onInput(this.onInput, this, this.enabledDisposables); + onClear(this.onClear, this, this.enabledDisposables); + onChar(() => typing = true, void 0, this.enabledDisposables); + onClear(() => typing = false, void 0, this.enabledDisposables); + this.enabled = true; + this.triggered = false; + } + disable() { + if (!this.enabled) { + return; + } + this.enabledDisposables.clear(); + this.enabled = false; + this.triggered = false; + } + onClear() { + const focus = this.list.getFocus(); + if (focus.length > 0 && focus[0] === this.previouslyFocused) { + const ariaLabel = this.list.options.accessibilityProvider?.getAriaLabel(this.list.element(focus[0])); + if (typeof ariaLabel === "string") ; else if (ariaLabel) { + alert(ariaLabel.get()); + } + } + this.previouslyFocused = -1; + } + onInput(word) { + if (!word) { + this.state = 0 /* Idle */; + this.triggered = false; + return; + } + const focus = this.list.getFocus(); + const start = focus.length > 0 ? focus[0] : 0; + const delta = this.state === 0 /* Idle */ ? 1 : 0; + this.state = 1 /* Typing */; + for (let i = 0; i < this.list.length; i++) { + const index = (start + i + delta) % this.list.length; + const label = this.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(this.view.element(index)); + const labelStr = label && label.toString(); + if (this.list.options.typeNavigationEnabled) { + if (typeof labelStr !== "undefined") { + if (matchesPrefix(word, labelStr)) { + this.previouslyFocused = start; + this.list.setFocus([index]); + this.list.reveal(index); + return; + } + const fuzzy = matchesFuzzy2(word, labelStr); + if (fuzzy) { + const fuzzyScore2 = fuzzy[0].end - fuzzy[0].start; + if (fuzzyScore2 > 1 && fuzzy.length === 1) { + this.previouslyFocused = start; + this.list.setFocus([index]); + this.list.reveal(index); + return; + } + } + } + } else if (typeof labelStr === "undefined" || matchesPrefix(word, labelStr)) { + this.previouslyFocused = start; + this.list.setFocus([index]); + this.list.reveal(index); + return; + } + } + } + dispose() { + this.disable(); + this.enabledDisposables.dispose(); + this.disposables.dispose(); + } +}; +var DOMFocusController = class { + constructor(list, view) { + this.list = list; + this.view = view; + this.disposables = new DisposableStore(); + const onKeyDown = Event.chain( + this.disposables.add(new DomEmitter(view.domNode, "keydown")).event, + ($4) => $4.filter((e) => !isEditableElement(e.target)).map((e) => new StandardKeyboardEvent(e)) + ); + const onTab = Event.chain(onKeyDown, ($4) => $4.filter((e) => e.keyCode === 2 /* Tab */ && !e.ctrlKey && !e.metaKey && !e.shiftKey && !e.altKey)); + onTab(this.onTab, this, this.disposables); + } + onTab(e) { + if (e.target !== this.view.domNode) { + return; + } + const focus = this.list.getFocus(); + if (focus.length === 0) { + return; + } + const focusedDomElement = this.view.domElement(focus[0]); + if (!focusedDomElement) { + return; + } + const tabIndexElement = focusedDomElement.querySelector("[tabIndex]"); + if (!tabIndexElement || !isHTMLElement(tabIndexElement) || tabIndexElement.tabIndex === -1) { + return; + } + const style = getWindow(tabIndexElement).getComputedStyle(tabIndexElement); + if (style.visibility === "hidden" || style.display === "none") { + return; + } + e.preventDefault(); + e.stopPropagation(); + tabIndexElement.focus(); + } + dispose() { + this.disposables.dispose(); + } +}; +function isSelectionSingleChangeEvent(event) { + return isMacintosh ? event.browserEvent.metaKey : event.browserEvent.ctrlKey; +} +function isSelectionRangeChangeEvent(event) { + return event.browserEvent.shiftKey; +} +function isMouseRightClick(event) { + return isMouseEvent(event) && event.button === 2; +} +var DefaultMultipleSelectionController = { + isSelectionSingleChangeEvent, + isSelectionRangeChangeEvent +}; +var MouseController = class { + constructor(list) { + this.list = list; + this.disposables = new DisposableStore(); + this._onPointer = new Emitter(); + this.onPointer = this._onPointer.event; + if (list.options.multipleSelectionSupport !== false) { + this.multipleSelectionController = this.list.options.multipleSelectionController || DefaultMultipleSelectionController; + } + this.mouseSupport = typeof list.options.mouseSupport === "undefined" || !!list.options.mouseSupport; + if (this.mouseSupport) { + list.onMouseDown(this.onMouseDown, this, this.disposables); + list.onContextMenu(this.onContextMenu, this, this.disposables); + list.onMouseDblClick(this.onDoubleClick, this, this.disposables); + list.onTouchStart(this.onMouseDown, this, this.disposables); + this.disposables.add(Gesture.addTarget(list.getHTMLElement())); + } + Event.any(list.onMouseClick, list.onMouseMiddleClick, list.onTap)(this.onViewPointer, this, this.disposables); + } + updateOptions(optionsUpdate) { + if (optionsUpdate.multipleSelectionSupport !== void 0) { + this.multipleSelectionController = void 0; + if (optionsUpdate.multipleSelectionSupport) { + this.multipleSelectionController = this.list.options.multipleSelectionController || DefaultMultipleSelectionController; + } + } + } + isSelectionSingleChangeEvent(event) { + if (!this.multipleSelectionController) { + return false; + } + return this.multipleSelectionController.isSelectionSingleChangeEvent(event); + } + isSelectionRangeChangeEvent(event) { + if (!this.multipleSelectionController) { + return false; + } + return this.multipleSelectionController.isSelectionRangeChangeEvent(event); + } + isSelectionChangeEvent(event) { + return this.isSelectionSingleChangeEvent(event) || this.isSelectionRangeChangeEvent(event); + } + onMouseDown(e) { + if (isMonacoEditor(e.browserEvent.target)) { + return; + } + if (getActiveElement() !== e.browserEvent.target) { + this.list.domFocus(); + } + } + onContextMenu(e) { + if (isEditableElement(e.browserEvent.target) || isMonacoEditor(e.browserEvent.target)) { + return; + } + const focus = typeof e.index === "undefined" ? [] : [e.index]; + this.list.setFocus(focus, e.browserEvent); + } + onViewPointer(e) { + if (!this.mouseSupport) { + return; + } + if (isEditableElement(e.browserEvent.target) || isMonacoEditor(e.browserEvent.target)) { + return; + } + if (e.browserEvent.isHandledByList) { + return; + } + e.browserEvent.isHandledByList = true; + const focus = e.index; + if (typeof focus === "undefined") { + this.list.setFocus([], e.browserEvent); + this.list.setSelection([], e.browserEvent); + this.list.setAnchor(void 0); + return; + } + if (this.isSelectionChangeEvent(e)) { + return this.changeSelection(e); + } + this.list.setFocus([focus], e.browserEvent); + this.list.setAnchor(focus); + if (!isMouseRightClick(e.browserEvent)) { + this.list.setSelection([focus], e.browserEvent); + } + this._onPointer.fire(e); + } + onDoubleClick(e) { + if (isEditableElement(e.browserEvent.target) || isMonacoEditor(e.browserEvent.target)) { + return; + } + if (this.isSelectionChangeEvent(e)) { + return; + } + if (e.browserEvent.isHandledByList) { + return; + } + e.browserEvent.isHandledByList = true; + const focus = this.list.getFocus(); + this.list.setSelection(focus, e.browserEvent); + } + changeSelection(e) { + const focus = e.index; + let anchor = this.list.getAnchor(); + if (this.isSelectionRangeChangeEvent(e)) { + if (typeof anchor === "undefined") { + const currentFocus = this.list.getFocus()[0]; + anchor = currentFocus ?? focus; + this.list.setAnchor(anchor); + } + const min = Math.min(anchor, focus); + const max = Math.max(anchor, focus); + const rangeSelection = range(min, max + 1); + const selection = this.list.getSelection(); + const contiguousRange = getContiguousRangeContaining(disjunction(selection, [anchor]), anchor); + if (contiguousRange.length === 0) { + return; + } + const newSelection = disjunction(rangeSelection, relativeComplement(selection, contiguousRange)); + this.list.setSelection(newSelection, e.browserEvent); + this.list.setFocus([focus], e.browserEvent); + } else if (this.isSelectionSingleChangeEvent(e)) { + const selection = this.list.getSelection(); + const newSelection = selection.filter((i) => i !== focus); + this.list.setFocus([focus]); + this.list.setAnchor(focus); + if (selection.length === newSelection.length) { + this.list.setSelection([...newSelection, focus], e.browserEvent); + } else { + this.list.setSelection(newSelection, e.browserEvent); + } + } + } + dispose() { + this.disposables.dispose(); + } +}; +var DefaultStyleController = class { + constructor(styleElement, selectorSuffix) { + this.styleElement = styleElement; + this.selectorSuffix = selectorSuffix; + } + style(styles) { + const suffix = this.selectorSuffix && `.${this.selectorSuffix}`; + const content = []; + if (styles.listBackground) { + content.push(`.monaco-list${suffix} .monaco-list-rows { background: ${styles.listBackground}; }`); + } + if (styles.listFocusBackground) { + content.push(`.monaco-list${suffix}:focus .monaco-list-row.focused { background-color: ${styles.listFocusBackground}; }`); + content.push(`.monaco-list${suffix}:focus .monaco-list-row.focused:hover { background-color: ${styles.listFocusBackground}; }`); + } + if (styles.listFocusForeground) { + content.push(`.monaco-list${suffix}:focus .monaco-list-row.focused { color: ${styles.listFocusForeground}; }`); + } + if (styles.listActiveSelectionBackground) { + content.push(`.monaco-list${suffix}:focus .monaco-list-row.selected { background-color: ${styles.listActiveSelectionBackground}; }`); + content.push(`.monaco-list${suffix}:focus .monaco-list-row.selected:hover { background-color: ${styles.listActiveSelectionBackground}; }`); + } + if (styles.listActiveSelectionForeground) { + content.push(`.monaco-list${suffix}:focus .monaco-list-row.selected { color: ${styles.listActiveSelectionForeground}; }`); + } + if (styles.listActiveSelectionIconForeground) { + content.push(`.monaco-list${suffix}:focus .monaco-list-row.selected .codicon { color: ${styles.listActiveSelectionIconForeground}; }`); + } + if (styles.listFocusAndSelectionBackground) { + content.push(` + .monaco-drag-image, + .monaco-list${suffix}:focus .monaco-list-row.selected.focused { background-color: ${styles.listFocusAndSelectionBackground}; } + `); + } + if (styles.listFocusAndSelectionForeground) { + content.push(` + .monaco-drag-image, + .monaco-list${suffix}:focus .monaco-list-row.selected.focused { color: ${styles.listFocusAndSelectionForeground}; } + `); + } + if (styles.listInactiveFocusForeground) { + content.push(`.monaco-list${suffix} .monaco-list-row.focused { color: ${styles.listInactiveFocusForeground}; }`); + content.push(`.monaco-list${suffix} .monaco-list-row.focused:hover { color: ${styles.listInactiveFocusForeground}; }`); + } + if (styles.listInactiveSelectionIconForeground) { + content.push(`.monaco-list${suffix} .monaco-list-row.focused .codicon { color: ${styles.listInactiveSelectionIconForeground}; }`); + } + if (styles.listInactiveFocusBackground) { + content.push(`.monaco-list${suffix} .monaco-list-row.focused { background-color: ${styles.listInactiveFocusBackground}; }`); + content.push(`.monaco-list${suffix} .monaco-list-row.focused:hover { background-color: ${styles.listInactiveFocusBackground}; }`); + } + if (styles.listInactiveSelectionBackground) { + content.push(`.monaco-list${suffix} .monaco-list-row.selected { background-color: ${styles.listInactiveSelectionBackground}; }`); + content.push(`.monaco-list${suffix} .monaco-list-row.selected:hover { background-color: ${styles.listInactiveSelectionBackground}; }`); + } + if (styles.listInactiveSelectionForeground) { + content.push(`.monaco-list${suffix} .monaco-list-row.selected { color: ${styles.listInactiveSelectionForeground}; }`); + } + if (styles.listHoverBackground) { + content.push(`.monaco-list${suffix}:not(.drop-target):not(.dragging) .monaco-list-row:hover:not(.selected):not(.focused) { background-color: ${styles.listHoverBackground}; }`); + } + if (styles.listHoverForeground) { + content.push(`.monaco-list${suffix}:not(.drop-target):not(.dragging) .monaco-list-row:hover:not(.selected):not(.focused) { color: ${styles.listHoverForeground}; }`); + } + const focusAndSelectionOutline = asCssValueWithDefault(styles.listFocusAndSelectionOutline, asCssValueWithDefault(styles.listSelectionOutline, styles.listFocusOutline ?? "")); + if (focusAndSelectionOutline) { + content.push(`.monaco-list${suffix}:focus .monaco-list-row.focused.selected { outline: 1px solid ${focusAndSelectionOutline}; outline-offset: -1px;}`); + } + if (styles.listFocusOutline) { + content.push(` + .monaco-drag-image, + .monaco-list${suffix}:focus .monaco-list-row.focused { outline: 1px solid ${styles.listFocusOutline}; outline-offset: -1px; } + .monaco-workbench.context-menu-visible .monaco-list${suffix}.last-focused .monaco-list-row.focused { outline: 1px solid ${styles.listFocusOutline}; outline-offset: -1px; } + `); + } + const inactiveFocusAndSelectionOutline = asCssValueWithDefault(styles.listSelectionOutline, styles.listInactiveFocusOutline ?? ""); + if (inactiveFocusAndSelectionOutline) { + content.push(`.monaco-list${suffix} .monaco-list-row.focused.selected { outline: 1px dotted ${inactiveFocusAndSelectionOutline}; outline-offset: -1px; }`); + } + if (styles.listSelectionOutline) { + content.push(`.monaco-list${suffix} .monaco-list-row.selected { outline: 1px dotted ${styles.listSelectionOutline}; outline-offset: -1px; }`); + } + if (styles.listInactiveFocusOutline) { + content.push(`.monaco-list${suffix} .monaco-list-row.focused { outline: 1px dotted ${styles.listInactiveFocusOutline}; outline-offset: -1px; }`); + } + if (styles.listHoverOutline) { + content.push(`.monaco-list${suffix} .monaco-list-row:hover { outline: 1px dashed ${styles.listHoverOutline}; outline-offset: -1px; }`); + } + if (styles.listDropOverBackground) { + content.push(` + .monaco-list${suffix}.drop-target, + .monaco-list${suffix} .monaco-list-rows.drop-target, + .monaco-list${suffix} .monaco-list-row.drop-target { background-color: ${styles.listDropOverBackground} !important; color: inherit !important; } + `); + } + if (styles.listDropBetweenBackground) { + content.push(` + .monaco-list${suffix} .monaco-list-rows.drop-target-before .monaco-list-row:first-child::before, + .monaco-list${suffix} .monaco-list-row.drop-target-before::before { + content: ""; position: absolute; top: 0px; left: 0px; width: 100%; height: 1px; + background-color: ${styles.listDropBetweenBackground}; + }`); + content.push(` + .monaco-list${suffix} .monaco-list-rows.drop-target-after .monaco-list-row:last-child::after, + .monaco-list${suffix} .monaco-list-row.drop-target-after::after { + content: ""; position: absolute; bottom: 0px; left: 0px; width: 100%; height: 1px; + background-color: ${styles.listDropBetweenBackground}; + }`); + } + if (styles.tableColumnsBorder) { + content.push(` + .monaco-table > .monaco-split-view2, + .monaco-table > .monaco-split-view2 .monaco-sash.vertical::before, + .monaco-workbench:not(.reduce-motion) .monaco-table:hover > .monaco-split-view2, + .monaco-workbench:not(.reduce-motion) .monaco-table:hover > .monaco-split-view2 .monaco-sash.vertical::before { + border-color: ${styles.tableColumnsBorder}; + } + + .monaco-workbench:not(.reduce-motion) .monaco-table > .monaco-split-view2, + .monaco-workbench:not(.reduce-motion) .monaco-table > .monaco-split-view2 .monaco-sash.vertical::before { + border-color: transparent; + } + `); + } + if (styles.tableOddRowsBackgroundColor) { + content.push(` + .monaco-table .monaco-list-row[data-parity=odd]:not(.focused):not(.selected):not(:hover) .monaco-table-tr, + .monaco-table .monaco-list:not(:focus) .monaco-list-row[data-parity=odd].focused:not(.selected):not(:hover) .monaco-table-tr, + .monaco-table .monaco-list:not(.focused) .monaco-list-row[data-parity=odd].focused:not(.selected):not(:hover) .monaco-table-tr { + background-color: ${styles.tableOddRowsBackgroundColor}; + } + `); + } + this.styleElement.textContent = content.join("\n"); + } +}; +({ + listFocusBackground: "#7FB0D0", + listActiveSelectionBackground: "#0E639C", + listActiveSelectionForeground: "#FFFFFF", + listActiveSelectionIconForeground: "#FFFFFF", + listFocusAndSelectionOutline: "#90C2F9", + listFocusAndSelectionBackground: "#094771", + listFocusAndSelectionForeground: "#FFFFFF", + listInactiveSelectionBackground: "#3F3F46", + listInactiveSelectionIconForeground: "#FFFFFF", + listHoverBackground: "#2A2D2E", + listDropOverBackground: "#383B3D", + listDropBetweenBackground: "#EEEEEE", + treeIndentGuidesStroke: "#a9a9a9", + treeInactiveIndentGuidesStroke: Color.fromHex("#a9a9a9").transparent(0.4).toString(), + tableColumnsBorder: Color.fromHex("#cccccc").transparent(0.2).toString(), + tableOddRowsBackgroundColor: Color.fromHex("#cccccc").transparent(0.04).toString(), + listBackground: void 0, + listFocusForeground: void 0, + listInactiveSelectionForeground: void 0, + listInactiveFocusForeground: void 0, + listInactiveFocusBackground: void 0, + listHoverForeground: void 0, + listFocusOutline: void 0, + listInactiveFocusOutline: void 0, + listSelectionOutline: void 0, + listHoverOutline: void 0, + treeStickyScrollBackground: void 0, + treeStickyScrollBorder: void 0, + treeStickyScrollShadow: void 0 +}); +var DefaultOptions2 = { + keyboardSupport: true, + mouseSupport: true, + multipleSelectionSupport: true, + dnd: { + getDragURI() { + return null; + }, + onDragStart() { + }, + onDragOver() { + return false; + }, + drop() { + }, + dispose() { + } + } +}; +function getContiguousRangeContaining(range2, value) { + const index = range2.indexOf(value); + if (index === -1) { + return []; + } + const result = []; + let i = index - 1; + while (i >= 0 && range2[i] === value - (index - i)) { + result.push(range2[i--]); + } + result.reverse(); + i = index; + while (i < range2.length && range2[i] === value + (i - index)) { + result.push(range2[i++]); + } + return result; +} +function disjunction(one, other) { + const result = []; + let i = 0, j = 0; + while (i < one.length || j < other.length) { + if (i >= one.length) { + result.push(other[j++]); + } else if (j >= other.length) { + result.push(one[i++]); + } else if (one[i] === other[j]) { + result.push(one[i]); + i++; + j++; + continue; + } else if (one[i] < other[j]) { + result.push(one[i++]); + } else { + result.push(other[j++]); + } + } + return result; +} +function relativeComplement(one, other) { + const result = []; + let i = 0, j = 0; + while (i < one.length || j < other.length) { + if (i >= one.length) { + result.push(other[j++]); + } else if (j >= other.length) { + result.push(one[i++]); + } else if (one[i] === other[j]) { + i++; + j++; + continue; + } else if (one[i] < other[j]) { + result.push(one[i++]); + } else { + j++; + } + } + return result; +} +var numericSort = (a, b) => a - b; +var PipelineRenderer = class { + constructor(_templateId, renderers) { + this._templateId = _templateId; + this.renderers = renderers; + } + get templateId() { + return this._templateId; + } + renderTemplate(container) { + return this.renderers.map((r) => r.renderTemplate(container)); + } + renderElement(element, index, templateData, height) { + let i = 0; + for (const renderer of this.renderers) { + renderer.renderElement(element, index, templateData[i++], height); + } + } + disposeElement(element, index, templateData, height) { + let i = 0; + for (const renderer of this.renderers) { + renderer.disposeElement?.(element, index, templateData[i], height); + i += 1; + } + } + disposeTemplate(templateData) { + let i = 0; + for (const renderer of this.renderers) { + renderer.disposeTemplate(templateData[i++]); + } + } +}; +var AccessibiltyRenderer = class { + constructor(accessibilityProvider) { + this.accessibilityProvider = accessibilityProvider; + this.templateId = "a18n"; + } + renderTemplate(container) { + return { container, disposables: new DisposableStore() }; + } + renderElement(element, index, data) { + const ariaLabel = this.accessibilityProvider.getAriaLabel(element); + const observable = ariaLabel && typeof ariaLabel !== "string" ? ariaLabel : constObservable(ariaLabel); + data.disposables.add(autorun((reader) => { + this.setAriaLabel(reader.readObservable(observable), data.container); + })); + const ariaLevel = this.accessibilityProvider.getAriaLevel && this.accessibilityProvider.getAriaLevel(element); + if (typeof ariaLevel === "number") { + data.container.setAttribute("aria-level", `${ariaLevel}`); + } else { + data.container.removeAttribute("aria-level"); + } + } + setAriaLabel(ariaLabel, element) { + if (ariaLabel) { + element.setAttribute("aria-label", ariaLabel); + } else { + element.removeAttribute("aria-label"); + } + } + disposeElement(element, index, templateData, height) { + templateData.disposables.clear(); + } + disposeTemplate(templateData) { + templateData.disposables.dispose(); + } +}; +var ListViewDragAndDrop = class { + constructor(list, dnd) { + this.list = list; + this.dnd = dnd; + } + getDragElements(element) { + const selection = this.list.getSelectedElements(); + const elements = selection.indexOf(element) > -1 ? selection : [element]; + return elements; + } + getDragURI(element) { + return this.dnd.getDragURI(element); + } + getDragLabel(elements, originalEvent) { + if (this.dnd.getDragLabel) { + return this.dnd.getDragLabel(elements, originalEvent); + } + return void 0; + } + onDragStart(data, originalEvent) { + this.dnd.onDragStart?.(data, originalEvent); + } + onDragOver(data, targetElement, targetIndex, targetSector, originalEvent) { + return this.dnd.onDragOver(data, targetElement, targetIndex, targetSector, originalEvent); + } + onDragLeave(data, targetElement, targetIndex, originalEvent) { + this.dnd.onDragLeave?.(data, targetElement, targetIndex, originalEvent); + } + onDragEnd(originalEvent) { + this.dnd.onDragEnd?.(originalEvent); + } + drop(data, targetElement, targetIndex, targetSector, originalEvent) { + this.dnd.drop(data, targetElement, targetIndex, targetSector, originalEvent); + } + dispose() { + this.dnd.dispose(); + } +}; +var List = class { + constructor(user, container, virtualDelegate, renderers, _options = DefaultOptions2) { + this.user = user; + this._options = _options; + this.focus = new Trait("focused"); + this.anchor = new Trait("anchor"); + this.eventBufferer = new EventBufferer(); + this._ariaLabel = ""; + this.disposables = new DisposableStore(); + this._onDidDispose = new Emitter(); + this.onDidDispose = this._onDidDispose.event; + const role = this._options.accessibilityProvider && this._options.accessibilityProvider.getWidgetRole ? this._options.accessibilityProvider?.getWidgetRole() : "list"; + this.selection = new SelectionTrait(role !== "listbox"); + const baseRenderers = [this.focus.renderer, this.selection.renderer]; + this.accessibilityProvider = _options.accessibilityProvider; + if (this.accessibilityProvider) { + baseRenderers.push(new AccessibiltyRenderer(this.accessibilityProvider)); + this.accessibilityProvider.onDidChangeActiveDescendant?.(this.onDidChangeActiveDescendant, this, this.disposables); + } + renderers = renderers.map((r) => new PipelineRenderer(r.templateId, [...baseRenderers, r])); + const viewOptions = { + ..._options, + dnd: _options.dnd && new ListViewDragAndDrop(this, _options.dnd) + }; + this.view = this.createListView(container, virtualDelegate, renderers, viewOptions); + this.view.domNode.setAttribute("role", role); + if (_options.styleController) { + this.styleController = _options.styleController(this.view.domId); + } else { + const styleElement = createStyleSheet(this.view.domNode); + this.styleController = new DefaultStyleController(styleElement, this.view.domId); + } + this.spliceable = new CombinedSpliceable([ + new TraitSpliceable(this.focus, this.view, _options.identityProvider), + new TraitSpliceable(this.selection, this.view, _options.identityProvider), + new TraitSpliceable(this.anchor, this.view, _options.identityProvider), + this.view + ]); + this.disposables.add(this.focus); + this.disposables.add(this.selection); + this.disposables.add(this.anchor); + this.disposables.add(this.view); + this.disposables.add(this._onDidDispose); + this.disposables.add(new DOMFocusController(this, this.view)); + if (typeof _options.keyboardSupport !== "boolean" || _options.keyboardSupport) { + this.keyboardController = new KeyboardController(this, this.view, _options); + this.disposables.add(this.keyboardController); + } + if (_options.keyboardNavigationLabelProvider) { + const delegate = _options.keyboardNavigationDelegate || DefaultKeyboardNavigationDelegate; + this.typeNavigationController = new TypeNavigationController(this, this.view, _options.keyboardNavigationLabelProvider, _options.keyboardNavigationEventFilter ?? (() => true), delegate); + this.disposables.add(this.typeNavigationController); + } + this.mouseController = this.createMouseController(_options); + this.disposables.add(this.mouseController); + this.onDidChangeFocus(this._onFocusChange, this, this.disposables); + this.onDidChangeSelection(this._onSelectionChange, this, this.disposables); + if (this.accessibilityProvider) { + this.ariaLabel = this.accessibilityProvider.getWidgetAriaLabel(); + } + if (this._options.multipleSelectionSupport !== false) { + this.view.domNode.setAttribute("aria-multiselectable", "true"); + } + } + get onDidChangeFocus() { + return Event.map(this.eventBufferer.wrapEvent(this.focus.onChange), (e) => this.toListEvent(e), this.disposables); + } + get onDidChangeSelection() { + return Event.map(this.eventBufferer.wrapEvent(this.selection.onChange), (e) => this.toListEvent(e), this.disposables); + } + get domId() { + return this.view.domId; + } + get onDidScroll() { + return this.view.onDidScroll; + } + get onMouseClick() { + return this.view.onMouseClick; + } + get onMouseDblClick() { + return this.view.onMouseDblClick; + } + get onMouseMiddleClick() { + return this.view.onMouseMiddleClick; + } + get onPointer() { + return this.mouseController.onPointer; + } + get onMouseUp() { + return this.view.onMouseUp; + } + get onMouseDown() { + return this.view.onMouseDown; + } + get onMouseOver() { + return this.view.onMouseOver; + } + get onMouseMove() { + return this.view.onMouseMove; + } + get onMouseOut() { + return this.view.onMouseOut; + } + get onTouchStart() { + return this.view.onTouchStart; + } + get onTap() { + return this.view.onTap; + } + get onContextMenu() { + let didJustPressContextMenuKey = false; + const fromKeyDown = Event.chain(this.disposables.add(new DomEmitter(this.view.domNode, "keydown")).event, ($4) => $4.map((e) => new StandardKeyboardEvent(e)).filter((e) => didJustPressContextMenuKey = e.keyCode === 58 /* ContextMenu */ || e.shiftKey && e.keyCode === 68 /* F10 */).map((e) => EventHelper.stop(e, true)).filter(() => false)); + const fromKeyUp = Event.chain(this.disposables.add(new DomEmitter(this.view.domNode, "keyup")).event, ($4) => $4.forEach(() => didJustPressContextMenuKey = false).map((e) => new StandardKeyboardEvent(e)).filter((e) => e.keyCode === 58 /* ContextMenu */ || e.shiftKey && e.keyCode === 68 /* F10 */).map((e) => EventHelper.stop(e, true)).map(({ browserEvent }) => { + const focus = this.getFocus(); + const index = focus.length ? focus[0] : void 0; + const element = typeof index !== "undefined" ? this.view.element(index) : void 0; + const anchor = typeof index !== "undefined" ? this.view.domElement(index) : this.view.domNode; + return { index, element, anchor, browserEvent }; + })); + const fromMouse = Event.chain( + this.view.onContextMenu, + ($4) => $4.filter((_) => !didJustPressContextMenuKey).map(({ element, index, browserEvent }) => ({ element, index, anchor: new StandardMouseEvent(getWindow(this.view.domNode), browserEvent), browserEvent })) + ); + return Event.any(fromKeyDown, fromKeyUp, fromMouse); + } + get onKeyDown() { + return this.disposables.add(new DomEmitter(this.view.domNode, "keydown")).event; + } + get onKeyUp() { + return this.disposables.add(new DomEmitter(this.view.domNode, "keyup")).event; + } + get onKeyPress() { + return this.disposables.add(new DomEmitter(this.view.domNode, "keypress")).event; + } + get onDidFocus() { + return Event.signal(this.disposables.add(new DomEmitter(this.view.domNode, "focus", true)).event); + } + get onDidBlur() { + return Event.signal(this.disposables.add(new DomEmitter(this.view.domNode, "blur", true)).event); + } + createListView(container, virtualDelegate, renderers, viewOptions) { + return new ListView(container, virtualDelegate, renderers, viewOptions); + } + createMouseController(options2) { + return new MouseController(this); + } + updateOptions(optionsUpdate = {}) { + this._options = { ...this._options, ...optionsUpdate }; + this.typeNavigationController?.updateOptions(this._options); + if (this._options.multipleSelectionController !== void 0) { + if (this._options.multipleSelectionSupport) { + this.view.domNode.setAttribute("aria-multiselectable", "true"); + } else { + this.view.domNode.removeAttribute("aria-multiselectable"); + } + } + this.mouseController.updateOptions(optionsUpdate); + this.keyboardController?.updateOptions(optionsUpdate); + this.view.updateOptions(optionsUpdate); + } + get options() { + return this._options; + } + splice(start, deleteCount, elements = []) { + if (start < 0 || start > this.view.length) { + throw new ListError(this.user, `Invalid start index: ${start}`); + } + if (deleteCount < 0) { + throw new ListError(this.user, `Invalid delete count: ${deleteCount}`); + } + if (deleteCount === 0 && elements.length === 0) { + return; + } + this.eventBufferer.bufferEvents(() => this.spliceable.splice(start, deleteCount, elements)); + } + updateWidth(index) { + this.view.updateWidth(index); + } + updateElementHeight(index, size) { + this.view.updateElementHeight(index, size, null); + } + rerender() { + this.view.rerender(); + } + element(index) { + return this.view.element(index); + } + indexOf(element) { + return this.view.indexOf(element); + } + indexAt(position) { + return this.view.indexAt(position); + } + get length() { + return this.view.length; + } + get contentHeight() { + return this.view.contentHeight; + } + get contentWidth() { + return this.view.contentWidth; + } + get onDidChangeContentHeight() { + return this.view.onDidChangeContentHeight; + } + get onDidChangeContentWidth() { + return this.view.onDidChangeContentWidth; + } + get scrollTop() { + return this.view.getScrollTop(); + } + set scrollTop(scrollTop) { + this.view.setScrollTop(scrollTop); + } + get scrollLeft() { + return this.view.getScrollLeft(); + } + set scrollLeft(scrollLeft) { + this.view.setScrollLeft(scrollLeft); + } + get scrollHeight() { + return this.view.scrollHeight; + } + get renderHeight() { + return this.view.renderHeight; + } + get firstVisibleIndex() { + return this.view.firstVisibleIndex; + } + get firstMostlyVisibleIndex() { + return this.view.firstMostlyVisibleIndex; + } + get lastVisibleIndex() { + return this.view.lastVisibleIndex; + } + get ariaLabel() { + return this._ariaLabel; + } + set ariaLabel(value) { + this._ariaLabel = value; + this.view.domNode.setAttribute("aria-label", value); + } + domFocus() { + this.view.domNode.focus({ preventScroll: true }); + } + layout(height, width) { + this.view.layout(height, width); + } + triggerTypeNavigation() { + this.typeNavigationController?.trigger(); + } + setSelection(indexes, browserEvent) { + for (const index of indexes) { + if (index < 0 || index >= this.length) { + throw new ListError(this.user, `Invalid index ${index}`); + } + } + this.selection.set(indexes, browserEvent); + } + getSelection() { + return this.selection.get(); + } + getSelectedElements() { + return this.getSelection().map((i) => this.view.element(i)); + } + setAnchor(index) { + if (typeof index === "undefined") { + this.anchor.set([]); + return; + } + if (index < 0 || index >= this.length) { + throw new ListError(this.user, `Invalid index ${index}`); + } + this.anchor.set([index]); + } + getAnchor() { + return this.anchor.get().at(0); + } + getAnchorElement() { + const anchor = this.getAnchor(); + return typeof anchor === "undefined" ? void 0 : this.element(anchor); + } + setFocus(indexes, browserEvent) { + for (const index of indexes) { + if (index < 0 || index >= this.length) { + throw new ListError(this.user, `Invalid index ${index}`); + } + } + this.focus.set(indexes, browserEvent); + } + focusNext(n = 1, loop = false, browserEvent, filter) { + if (this.length === 0) { + return; + } + const focus = this.focus.get(); + const index = this.findNextIndex(focus.length > 0 ? focus[0] + n : 0, loop, filter); + if (index > -1) { + this.setFocus([index], browserEvent); + } + } + focusPrevious(n = 1, loop = false, browserEvent, filter) { + if (this.length === 0) { + return; + } + const focus = this.focus.get(); + const index = this.findPreviousIndex(focus.length > 0 ? focus[0] - n : 0, loop, filter); + if (index > -1) { + this.setFocus([index], browserEvent); + } + } + async focusNextPage(browserEvent, filter) { + let lastPageIndex = this.view.indexAt(this.view.getScrollTop() + this.view.renderHeight); + lastPageIndex = lastPageIndex === 0 ? 0 : lastPageIndex - 1; + const currentlyFocusedElementIndex = this.getFocus()[0]; + if (currentlyFocusedElementIndex !== lastPageIndex && (currentlyFocusedElementIndex === void 0 || lastPageIndex > currentlyFocusedElementIndex)) { + const lastGoodPageIndex = this.findPreviousIndex(lastPageIndex, false, filter); + if (lastGoodPageIndex > -1 && currentlyFocusedElementIndex !== lastGoodPageIndex) { + this.setFocus([lastGoodPageIndex], browserEvent); + } else { + this.setFocus([lastPageIndex], browserEvent); + } + } else { + const previousScrollTop = this.view.getScrollTop(); + let nextpageScrollTop = previousScrollTop + this.view.renderHeight; + if (lastPageIndex > currentlyFocusedElementIndex) { + nextpageScrollTop -= this.view.elementHeight(lastPageIndex); + } + this.view.setScrollTop(nextpageScrollTop); + if (this.view.getScrollTop() !== previousScrollTop) { + this.setFocus([]); + await timeout(0); + await this.focusNextPage(browserEvent, filter); + } + } + } + async focusPreviousPage(browserEvent, filter, getPaddingTop = () => 0) { + let firstPageIndex; + const paddingTop = getPaddingTop(); + const scrollTop = this.view.getScrollTop() + paddingTop; + if (scrollTop === 0) { + firstPageIndex = this.view.indexAt(scrollTop); + } else { + firstPageIndex = this.view.indexAfter(scrollTop - 1); + } + const currentlyFocusedElementIndex = this.getFocus()[0]; + if (currentlyFocusedElementIndex !== firstPageIndex && (currentlyFocusedElementIndex === void 0 || currentlyFocusedElementIndex >= firstPageIndex)) { + const firstGoodPageIndex = this.findNextIndex(firstPageIndex, false, filter); + if (firstGoodPageIndex > -1 && currentlyFocusedElementIndex !== firstGoodPageIndex) { + this.setFocus([firstGoodPageIndex], browserEvent); + } else { + this.setFocus([firstPageIndex], browserEvent); + } + } else { + const previousScrollTop = scrollTop; + this.view.setScrollTop(scrollTop - this.view.renderHeight - paddingTop); + if (this.view.getScrollTop() + getPaddingTop() !== previousScrollTop) { + this.setFocus([]); + await timeout(0); + await this.focusPreviousPage(browserEvent, filter, getPaddingTop); + } + } + } + focusLast(browserEvent, filter) { + if (this.length === 0) { + return; + } + const index = this.findPreviousIndex(this.length - 1, false, filter); + if (index > -1) { + this.setFocus([index], browserEvent); + } + } + focusFirst(browserEvent, filter) { + this.focusNth(0, browserEvent, filter); + } + focusNth(n, browserEvent, filter) { + if (this.length === 0) { + return; + } + const index = this.findNextIndex(n, false, filter); + if (index > -1) { + this.setFocus([index], browserEvent); + } + } + findNextIndex(index, loop = false, filter) { + for (let i = 0; i < this.length; i++) { + if (index >= this.length && !loop) { + return -1; + } + index = index % this.length; + if (!filter || filter(this.element(index))) { + return index; + } + index++; + } + return -1; + } + findPreviousIndex(index, loop = false, filter) { + for (let i = 0; i < this.length; i++) { + if (index < 0 && !loop) { + return -1; + } + index = (this.length + index % this.length) % this.length; + if (!filter || filter(this.element(index))) { + return index; + } + index--; + } + return -1; + } + getFocus() { + return this.focus.get(); + } + getFocusedElements() { + return this.getFocus().map((i) => this.view.element(i)); + } + reveal(index, relativeTop, paddingTop = 0) { + if (index < 0 || index >= this.length) { + throw new ListError(this.user, `Invalid index ${index}`); + } + const scrollTop = this.view.getScrollTop(); + const elementTop = this.view.elementTop(index); + const elementHeight = this.view.elementHeight(index); + if (isNumber(relativeTop)) { + const m = elementHeight - this.view.renderHeight + paddingTop; + this.view.setScrollTop(m * clamp(relativeTop, 0, 1) + elementTop - paddingTop); + } else { + const viewItemBottom = elementTop + elementHeight; + const scrollBottom = scrollTop + this.view.renderHeight; + if (elementTop < scrollTop + paddingTop && viewItemBottom >= scrollBottom) ; else if (elementTop < scrollTop + paddingTop || viewItemBottom >= scrollBottom && elementHeight >= this.view.renderHeight) { + this.view.setScrollTop(elementTop - paddingTop); + } else if (viewItemBottom >= scrollBottom) { + this.view.setScrollTop(viewItemBottom - this.view.renderHeight); + } + } + } + /** + * Returns the relative position of an element rendered in the list. + * Returns `null` if the element isn't *entirely* in the visible viewport. + */ + getRelativeTop(index, paddingTop = 0) { + if (index < 0 || index >= this.length) { + throw new ListError(this.user, `Invalid index ${index}`); + } + const scrollTop = this.view.getScrollTop(); + const elementTop = this.view.elementTop(index); + const elementHeight = this.view.elementHeight(index); + if (elementTop < scrollTop + paddingTop || elementTop + elementHeight > scrollTop + this.view.renderHeight) { + return null; + } + const m = elementHeight - this.view.renderHeight + paddingTop; + return Math.abs((scrollTop + paddingTop - elementTop) / m); + } + isDOMFocused() { + return isActiveElement(this.view.domNode); + } + getHTMLElement() { + return this.view.domNode; + } + getScrollableElement() { + return this.view.scrollableElementDomNode; + } + getElementID(index) { + return this.view.getElementDomId(index); + } + getElementTop(index) { + return this.view.elementTop(index); + } + style(styles) { + this.styleController.style(styles); + } + toListEvent({ indexes, browserEvent }) { + return { indexes, elements: indexes.map((i) => this.view.element(i)), browserEvent }; + } + _onFocusChange() { + const focus = this.focus.get(); + this.view.domNode.classList.toggle("element-focused", focus.length > 0); + this.onDidChangeActiveDescendant(); + } + onDidChangeActiveDescendant() { + const focus = this.focus.get(); + if (focus.length > 0) { + let id2; + if (this.accessibilityProvider?.getActiveDescendantId) { + id2 = this.accessibilityProvider.getActiveDescendantId(this.view.element(focus[0])); + } + this.view.domNode.setAttribute("aria-activedescendant", id2 || this.view.getElementDomId(focus[0])); + } else { + this.view.domNode.removeAttribute("aria-activedescendant"); + } + } + _onSelectionChange() { + const selection = this.selection.get(); + this.view.domNode.classList.toggle("selection-none", selection.length === 0); + this.view.domNode.classList.toggle("selection-single", selection.length === 1); + this.view.domNode.classList.toggle("selection-multiple", selection.length > 1); + } + dispose() { + this._onDidDispose.fire(); + this.disposables.dispose(); + this._onDidDispose.dispose(); + } +}; +__decorateClass([ + memoize +], List.prototype, "onDidChangeFocus", 1); +__decorateClass([ + memoize +], List.prototype, "onDidChangeSelection", 1); +__decorateClass([ + memoize +], List.prototype, "onContextMenu", 1); +__decorateClass([ + memoize +], List.prototype, "onKeyDown", 1); +__decorateClass([ + memoize +], List.prototype, "onKeyUp", 1); +__decorateClass([ + memoize +], List.prototype, "onKeyPress", 1); +__decorateClass([ + memoize +], List.prototype, "onDidFocus", 1); +__decorateClass([ + memoize +], List.prototype, "onDidBlur", 1); + +// ../../../../../base/browser/formattedTextRenderer.ts +function renderText(text2, options2 = {}) { + const element = createElement(options2); + element.textContent = text2; + return element; +} +function renderFormattedText(formattedText, options2 = {}) { + const element = createElement(options2); + _renderFormattedText(element, parseFormattedText(formattedText, !!options2.renderCodeSegments), options2.actionHandler, options2.renderCodeSegments); + return element; +} +function createElement(options2) { + const tagName = options2.inline ? "span" : "div"; + const element = document.createElement(tagName); + if (options2.className) { + element.className = options2.className; + } + return element; +} +var StringStream = class { + constructor(source) { + this.source = source; + this.index = 0; + } + eos() { + return this.index >= this.source.length; + } + next() { + const next = this.peek(); + this.advance(); + return next; + } + peek() { + return this.source[this.index]; + } + advance() { + this.index++; + } +}; +function _renderFormattedText(element, treeNode, actionHandler, renderCodeSegments) { + let child; + if (treeNode.type === 2 /* Text */) { + child = document.createTextNode(treeNode.content || ""); + } else if (treeNode.type === 3 /* Bold */) { + child = document.createElement("b"); + } else if (treeNode.type === 4 /* Italics */) { + child = document.createElement("i"); + } else if (treeNode.type === 7 /* Code */ && renderCodeSegments) { + child = document.createElement("code"); + } else if (treeNode.type === 5 /* Action */ && actionHandler) { + const a = document.createElement("a"); + actionHandler.disposables.add(addStandardDisposableListener(a, "click", (event) => { + actionHandler.callback(String(treeNode.index), event); + })); + child = a; + } else if (treeNode.type === 8 /* NewLine */) { + child = document.createElement("br"); + } else if (treeNode.type === 1 /* Root */) { + child = element; + } + if (child && element !== child) { + element.appendChild(child); + } + if (child && Array.isArray(treeNode.children)) { + treeNode.children.forEach((nodeChild) => { + _renderFormattedText(child, nodeChild, actionHandler, renderCodeSegments); + }); + } +} +function parseFormattedText(content, parseCodeSegments) { + const root = { + type: 1 /* Root */, + children: [] + }; + let actionViewItemIndex = 0; + let current = root; + const stack = []; + const stream = new StringStream(content); + while (!stream.eos()) { + let next = stream.next(); + const isEscapedFormatType = next === "\\" && formatTagType(stream.peek(), parseCodeSegments) !== 0 /* Invalid */; + if (isEscapedFormatType) { + next = stream.next(); + } + if (!isEscapedFormatType && isFormatTag(next, parseCodeSegments) && next === stream.peek()) { + stream.advance(); + if (current.type === 2 /* Text */) { + current = stack.pop(); + } + const type = formatTagType(next, parseCodeSegments); + if (current.type === type || current.type === 5 /* Action */ && type === 6 /* ActionClose */) { + current = stack.pop(); + } else { + const newCurrent = { + type, + children: [] + }; + if (type === 5 /* Action */) { + newCurrent.index = actionViewItemIndex; + actionViewItemIndex++; + } + current.children.push(newCurrent); + stack.push(current); + current = newCurrent; + } + } else if (next === "\n") { + if (current.type === 2 /* Text */) { + current = stack.pop(); + } + current.children.push({ + type: 8 /* NewLine */ + }); + } else { + if (current.type !== 2 /* Text */) { + const textCurrent = { + type: 2 /* Text */, + content: next + }; + current.children.push(textCurrent); + stack.push(current); + current = textCurrent; + } else { + current.content += next; + } + } + } + if (current.type === 2 /* Text */) { + current = stack.pop(); + } + return root; +} +function isFormatTag(char, supportCodeSegments) { + return formatTagType(char, supportCodeSegments) !== 0 /* Invalid */; +} +function formatTagType(char, supportCodeSegments) { + switch (char) { + case "*": + return 3 /* Bold */; + case "_": + return 4 /* Italics */; + case "[": + return 5 /* Action */; + case "]": + return 6 /* ActionClose */; + case "`": + return supportCodeSegments ? 7 /* Code */ : 0 /* Invalid */; + default: + return 0 /* Invalid */; + } +} + +// ../../../../../base/browser/ui/iconLabel/iconLabels.ts +var labelWithIconsRegex = new RegExp(`(\\\\)?\\$\\((${ThemeIcon.iconNameExpression}(?:${ThemeIcon.iconModifierExpression})?)\\)`, "g"); +function renderLabelWithIcons(text2) { + const elements = new Array(); + let match; + let textStart = 0, textStop = 0; + while ((match = labelWithIconsRegex.exec(text2)) !== null) { + textStop = match.index || 0; + if (textStart < textStop) { + elements.push(text2.substring(textStart, textStop)); + } + textStart = (match.index || 0) + match[0].length; + const [, escaped, codicon] = match; + elements.push(escaped ? `$(${codicon})` : renderIcon({ id: codicon })); + } + if (textStart < text2.length) { + elements.push(text2.substring(textStart)); + } + return elements; +} +function renderIcon(icon) { + const node = $(`span`); + node.classList.add(...ThemeIcon.asClassNameArray(icon)); + return node; +} + +// ../../../../../base/common/iconLabels.ts +var iconsRegex = new RegExp(`\\$\\(${ThemeIcon.iconNameExpression}(?:${ThemeIcon.iconModifierExpression})?\\)`, "g"); +var escapeIconsRegex = new RegExp(`(\\\\)?${iconsRegex.source}`, "g"); +function escapeIcons(text2) { + return text2.replace(escapeIconsRegex, (match, escaped) => escaped ? match : `\\${match}`); +} +var markdownEscapedIconsRegex = new RegExp(`\\\\${iconsRegex.source}`, "g"); +function markdownEscapeEscapedIcons(text2) { + return text2.replace(markdownEscapedIconsRegex, (match) => `\\${match}`); +} +new RegExp(`(\\s)?(\\\\)?${iconsRegex.source}(\\s)?`, "g"); +new RegExp(`\\$\\(${ThemeIcon.iconNameCharacter}+\\)`, "g"); + +// ../../../../../base/common/htmlContent.ts +var MarkdownString = class { + constructor(value = "", isTrustedOrOptions = false) { + this.value = value; + if (typeof this.value !== "string") { + throw illegalArgument("value"); + } + if (typeof isTrustedOrOptions === "boolean") { + this.isTrusted = isTrustedOrOptions; + this.supportThemeIcons = false; + this.supportHtml = false; + } else { + this.isTrusted = isTrustedOrOptions.isTrusted ?? void 0; + this.supportThemeIcons = isTrustedOrOptions.supportThemeIcons ?? false; + this.supportHtml = isTrustedOrOptions.supportHtml ?? false; + } + } + appendText(value, newlineStyle = 0 /* Paragraph */) { + this.value += escapeMarkdownSyntaxTokens(this.supportThemeIcons ? escapeIcons(value) : value).replace(/([ \t]+)/g, (_match, g1) => " ".repeat(g1.length)).replace(/\>/gm, "\\>").replace(/\n/g, newlineStyle === 1 /* Break */ ? "\\\n" : "\n\n"); + return this; + } + appendMarkdown(value) { + this.value += value; + return this; + } + appendCodeblock(langId, code) { + this.value += ` +${appendEscapedMarkdownCodeBlockFence(code, langId)} +`; + return this; + } + appendLink(target, label, title) { + this.value += "["; + this.value += this._escape(label, "]"); + this.value += "]("; + this.value += this._escape(String(target), ")"); + if (title) { + this.value += ` "${this._escape(this._escape(title, '"'), ")")}"`; + } + this.value += ")"; + return this; + } + _escape(value, ch) { + const r = new RegExp(escapeRegExpCharacters(ch), "g"); + return value.replace(r, (match, offset) => { + if (value.charAt(offset - 1) !== "\\") { + return `\\${match}`; + } else { + return match; + } + }); + } +}; +function isMarkdownString(thing) { + if (thing instanceof MarkdownString) { + return true; + } else if (thing && typeof thing === "object") { + return typeof thing.value === "string" && (typeof thing.isTrusted === "boolean" || typeof thing.isTrusted === "object" || thing.isTrusted === void 0) && (typeof thing.supportThemeIcons === "boolean" || thing.supportThemeIcons === void 0); + } + return false; +} +function markdownStringEqual(a, b) { + if (a === b) { + return true; + } else if (!a || !b) { + return false; + } else { + return a.value === b.value && a.isTrusted === b.isTrusted && a.supportThemeIcons === b.supportThemeIcons && a.supportHtml === b.supportHtml && (a.baseUri === b.baseUri || !!a.baseUri && !!b.baseUri && isEqual(URI.from(a.baseUri), URI.from(b.baseUri))); + } +} +function escapeMarkdownSyntaxTokens(text2) { + return text2.replace(/[\\`*_{}[\]()#+\-!~]/g, "\\$&"); +} +function appendEscapedMarkdownCodeBlockFence(code, langId) { + const longestFenceLength = code.match(/^`+/gm)?.reduce((a, b) => a.length > b.length ? a : b).length ?? 0; + const desiredFenceLength = longestFenceLength >= 3 ? longestFenceLength + 1 : 3; + return [ + `${"`".repeat(desiredFenceLength)}${langId}`, + code, + `${"`".repeat(desiredFenceLength)}` + ].join("\n"); +} +function escapeDoubleQuotes(input) { + return input.replace(/"/g, """); +} +function removeMarkdownEscapes(text2) { + if (!text2) { + return text2; + } + return text2.replace(/\\([\\`*_{}[\]()#+\-.!~])/g, "$1"); +} +function parseHrefAndDimensions(href) { + const dimensions = []; + const splitted = href.split("|").map((s) => s.trim()); + href = splitted[0]; + const parameters = splitted[1]; + if (parameters) { + const heightFromParams = /height=(\d+)/.exec(parameters); + const widthFromParams = /width=(\d+)/.exec(parameters); + const height = heightFromParams ? heightFromParams[1] : ""; + const width = widthFromParams ? widthFromParams[1] : ""; + const widthIsFinite = isFinite(parseInt(width)); + const heightIsFinite = isFinite(parseInt(height)); + if (widthIsFinite) { + dimensions.push(`width="${width}"`); + } + if (heightIsFinite) { + dimensions.push(`height="${height}"`); + } + } + return { href, dimensions }; +} + +// ../../../../../base/common/idGenerator.ts +var IdGenerator = class { + constructor(prefix) { + this._prefix = prefix; + this._lastId = 0; + } + nextId() { + return this._prefix + ++this._lastId; + } +}; +var defaultGenerator = new IdGenerator("id#"); + +// ../../../../../base/common/marked/marked.js +var __marked_exports = {}; +(function() { + function define2(deps, factory) { + factory(__marked_exports); + } + define2.amd = true; + (function(global2, factory) { + typeof define2 === "function" && define2.amd ? define2(["exports"], factory) : typeof exports === "object" && typeof module !== "undefined" ? factory(exports) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, factory(global2.marked = {})); + })(this, function(exports2) { + function _getDefaults() { + return { + async: false, + breaks: false, + extensions: null, + gfm: true, + hooks: null, + pedantic: false, + renderer: null, + silent: false, + tokenizer: null, + walkTokens: null + }; + } + exports2.defaults = _getDefaults(); + function changeDefaults(newDefaults) { + exports2.defaults = newDefaults; + } + const escapeTest = /[&<>"']/; + const escapeReplace = new RegExp(escapeTest.source, "g"); + const escapeTestNoEncode = /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/; + const escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, "g"); + const escapeReplacements = { + "&": "&", + "<": "<", + ">": ">", + '"': """, + "'": "'" + }; + const getEscapeReplacement = (ch) => escapeReplacements[ch]; + function escape$1(html3, encode) { + if (encode) { + if (escapeTest.test(html3)) { + return html3.replace(escapeReplace, getEscapeReplacement); + } + } else { + if (escapeTestNoEncode.test(html3)) { + return html3.replace(escapeReplaceNoEncode, getEscapeReplacement); + } + } + return html3; + } + const caret = /(^|[^\[])\^/g; + function edit(regex, opt) { + let source = typeof regex === "string" ? regex : regex.source; + opt = opt || ""; + const obj = { + replace: (name, val) => { + let valSource = typeof val === "string" ? val : val.source; + valSource = valSource.replace(caret, "$1"); + source = source.replace(name, valSource); + return obj; + }, + getRegex: () => { + return new RegExp(source, opt); + } + }; + return obj; + } + function cleanUrl(href) { + try { + href = encodeURI(href).replace(/%25/g, "%"); + } catch { + return null; + } + return href; + } + const noopTest = { exec: () => null }; + function splitCells(tableRow, count) { + const row = tableRow.replace(/\|/g, (match, offset, str) => { + let escaped = false; + let curr = offset; + while (--curr >= 0 && str[curr] === "\\") + escaped = !escaped; + if (escaped) { + return "|"; + } else { + return " |"; + } + }), cells = row.split(/ \|/); + let i = 0; + if (!cells[0].trim()) { + cells.shift(); + } + if (cells.length > 0 && !cells[cells.length - 1].trim()) { + cells.pop(); + } + if (count) { + if (cells.length > count) { + cells.splice(count); + } else { + while (cells.length < count) + cells.push(""); + } + } + for (; i < cells.length; i++) { + cells[i] = cells[i].trim().replace(/\\\|/g, "|"); + } + return cells; + } + function rtrim2(str, c, invert) { + const l = str.length; + if (l === 0) { + return ""; + } + let suffLen = 0; + while (suffLen < l) { + const currChar = str.charAt(l - suffLen - 1); + if (currChar === c && !invert) { + suffLen++; + } else if (currChar !== c && invert) { + suffLen++; + } else { + break; + } + } + return str.slice(0, l - suffLen); + } + function findClosingBracket(str, b) { + if (str.indexOf(b[1]) === -1) { + return -1; + } + let level = 0; + for (let i = 0; i < str.length; i++) { + if (str[i] === "\\") { + i++; + } else if (str[i] === b[0]) { + level++; + } else if (str[i] === b[1]) { + level--; + if (level < 0) { + return i; + } + } + } + return -1; + } + function outputLink(cap, link2, raw, lexer3) { + const href = link2.href; + const title = link2.title ? escape$1(link2.title) : null; + const text2 = cap[1].replace(/\\([\[\]])/g, "$1"); + if (cap[0].charAt(0) !== "!") { + lexer3.state.inLink = true; + const token = { + type: "link", + raw, + href, + title, + text: text2, + tokens: lexer3.inlineTokens(text2) + }; + lexer3.state.inLink = false; + return token; + } + return { + type: "image", + raw, + href, + title, + text: escape$1(text2) + }; + } + function indentCodeCompensation(raw, text2) { + const matchIndentToCode = raw.match(/^(\s+)(?:```)/); + if (matchIndentToCode === null) { + return text2; + } + const indentToCode = matchIndentToCode[1]; + return text2.split("\n").map((node) => { + const matchIndentInNode = node.match(/^\s+/); + if (matchIndentInNode === null) { + return node; + } + const [indentInNode] = matchIndentInNode; + if (indentInNode.length >= indentToCode.length) { + return node.slice(indentToCode.length); + } + return node; + }).join("\n"); + } + class _Tokenizer { + options; + rules; + // set by the lexer + lexer; + // set by the lexer + constructor(options3) { + this.options = options3 || exports2.defaults; + } + space(src) { + const cap = this.rules.block.newline.exec(src); + if (cap && cap[0].length > 0) { + return { + type: "space", + raw: cap[0] + }; + } + } + code(src) { + const cap = this.rules.block.code.exec(src); + if (cap) { + const text2 = cap[0].replace(/^ {1,4}/gm, ""); + return { + type: "code", + raw: cap[0], + codeBlockStyle: "indented", + text: !this.options.pedantic ? rtrim2(text2, "\n") : text2 + }; + } + } + fences(src) { + const cap = this.rules.block.fences.exec(src); + if (cap) { + const raw = cap[0]; + const text2 = indentCodeCompensation(raw, cap[3] || ""); + return { + type: "code", + raw, + lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, "$1") : cap[2], + text: text2 + }; + } + } + heading(src) { + const cap = this.rules.block.heading.exec(src); + if (cap) { + let text2 = cap[2].trim(); + if (/#$/.test(text2)) { + const trimmed = rtrim2(text2, "#"); + if (this.options.pedantic) { + text2 = trimmed.trim(); + } else if (!trimmed || / $/.test(trimmed)) { + text2 = trimmed.trim(); + } + } + return { + type: "heading", + raw: cap[0], + depth: cap[1].length, + text: text2, + tokens: this.lexer.inline(text2) + }; + } + } + hr(src) { + const cap = this.rules.block.hr.exec(src); + if (cap) { + return { + type: "hr", + raw: rtrim2(cap[0], "\n") + }; + } + } + blockquote(src) { + const cap = this.rules.block.blockquote.exec(src); + if (cap) { + let lines = rtrim2(cap[0], "\n").split("\n"); + let raw = ""; + let text2 = ""; + const tokens = []; + while (lines.length > 0) { + let inBlockquote = false; + const currentLines = []; + let i; + for (i = 0; i < lines.length; i++) { + if (/^ {0,3}>/.test(lines[i])) { + currentLines.push(lines[i]); + inBlockquote = true; + } else if (!inBlockquote) { + currentLines.push(lines[i]); + } else { + break; + } + } + lines = lines.slice(i); + const currentRaw = currentLines.join("\n"); + const currentText = currentRaw.replace(/\n {0,3}((?:=+|-+) *)(?=\n|$)/g, "\n $1").replace(/^ {0,3}>[ \t]?/gm, ""); + raw = raw ? `${raw} +${currentRaw}` : currentRaw; + text2 = text2 ? `${text2} +${currentText}` : currentText; + const top = this.lexer.state.top; + this.lexer.state.top = true; + this.lexer.blockTokens(currentText, tokens, true); + this.lexer.state.top = top; + if (lines.length === 0) { + break; + } + const lastToken = tokens[tokens.length - 1]; + if (lastToken?.type === "code") { + break; + } else if (lastToken?.type === "blockquote") { + const oldToken = lastToken; + const newText = oldToken.raw + "\n" + lines.join("\n"); + const newToken = this.blockquote(newText); + tokens[tokens.length - 1] = newToken; + raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw; + text2 = text2.substring(0, text2.length - oldToken.text.length) + newToken.text; + break; + } else if (lastToken?.type === "list") { + const oldToken = lastToken; + const newText = oldToken.raw + "\n" + lines.join("\n"); + const newToken = this.list(newText); + tokens[tokens.length - 1] = newToken; + raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw; + text2 = text2.substring(0, text2.length - oldToken.raw.length) + newToken.raw; + lines = newText.substring(tokens[tokens.length - 1].raw.length).split("\n"); + continue; + } + } + return { + type: "blockquote", + raw, + tokens, + text: text2 + }; + } + } + list(src) { + let cap = this.rules.block.list.exec(src); + if (cap) { + let bull = cap[1].trim(); + const isordered = bull.length > 1; + const list2 = { + type: "list", + raw: "", + ordered: isordered, + start: isordered ? +bull.slice(0, -1) : "", + loose: false, + items: [] + }; + bull = isordered ? `\\d{1,9}\\${bull.slice(-1)}` : `\\${bull}`; + if (this.options.pedantic) { + bull = isordered ? bull : "[*+-]"; + } + const itemRegex = new RegExp(`^( {0,3}${bull})((?:[ ][^\\n]*)?(?:\\n|$))`); + let endsWithBlankLine = false; + while (src) { + let endEarly = false; + let raw = ""; + let itemContents = ""; + if (!(cap = itemRegex.exec(src))) { + break; + } + if (this.rules.block.hr.test(src)) { + break; + } + raw = cap[0]; + src = src.substring(raw.length); + let line = cap[2].split("\n", 1)[0].replace(/^\t+/, (t) => " ".repeat(3 * t.length)); + let nextLine = src.split("\n", 1)[0]; + let blankLine = !line.trim(); + let indent = 0; + if (this.options.pedantic) { + indent = 2; + itemContents = line.trimStart(); + } else if (blankLine) { + indent = cap[1].length + 1; + } else { + indent = cap[2].search(/[^ ]/); + indent = indent > 4 ? 1 : indent; + itemContents = line.slice(indent); + indent += cap[1].length; + } + if (blankLine && /^ *$/.test(nextLine)) { + raw += nextLine + "\n"; + src = src.substring(nextLine.length + 1); + endEarly = true; + } + if (!endEarly) { + const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`); + const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`); + const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\`\`\`|~~~)`); + const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`); + while (src) { + const rawLine = src.split("\n", 1)[0]; + nextLine = rawLine; + if (this.options.pedantic) { + nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, " "); + } + if (fencesBeginRegex.test(nextLine)) { + break; + } + if (headingBeginRegex.test(nextLine)) { + break; + } + if (nextBulletRegex.test(nextLine)) { + break; + } + if (hrRegex.test(src)) { + break; + } + if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { + itemContents += "\n" + nextLine.slice(indent); + } else { + if (blankLine) { + break; + } + if (line.search(/[^ ]/) >= 4) { + break; + } + if (fencesBeginRegex.test(line)) { + break; + } + if (headingBeginRegex.test(line)) { + break; + } + if (hrRegex.test(line)) { + break; + } + itemContents += "\n" + nextLine; + } + if (!blankLine && !nextLine.trim()) { + blankLine = true; + } + raw += rawLine + "\n"; + src = src.substring(rawLine.length + 1); + line = nextLine.slice(indent); + } + } + if (!list2.loose) { + if (endsWithBlankLine) { + list2.loose = true; + } else if (/\n *\n *$/.test(raw)) { + endsWithBlankLine = true; + } + } + let istask = null; + let ischecked; + if (this.options.gfm) { + istask = /^\[[ xX]\] /.exec(itemContents); + if (istask) { + ischecked = istask[0] !== "[ ] "; + itemContents = itemContents.replace(/^\[[ xX]\] +/, ""); + } + } + list2.items.push({ + type: "list_item", + raw, + task: !!istask, + checked: ischecked, + loose: false, + text: itemContents, + tokens: [] + }); + list2.raw += raw; + } + list2.items[list2.items.length - 1].raw = list2.items[list2.items.length - 1].raw.trimEnd(); + list2.items[list2.items.length - 1].text = list2.items[list2.items.length - 1].text.trimEnd(); + list2.raw = list2.raw.trimEnd(); + for (let i = 0; i < list2.items.length; i++) { + this.lexer.state.top = false; + list2.items[i].tokens = this.lexer.blockTokens(list2.items[i].text, []); + if (!list2.loose) { + const spacers = list2.items[i].tokens.filter((t) => t.type === "space"); + const hasMultipleLineBreaks = spacers.length > 0 && spacers.some((t) => /\n.*\n/.test(t.raw)); + list2.loose = hasMultipleLineBreaks; + } + } + if (list2.loose) { + for (let i = 0; i < list2.items.length; i++) { + list2.items[i].loose = true; + } + } + return list2; + } + } + html(src) { + const cap = this.rules.block.html.exec(src); + if (cap) { + const token = { + type: "html", + block: true, + raw: cap[0], + pre: cap[1] === "pre" || cap[1] === "script" || cap[1] === "style", + text: cap[0] + }; + return token; + } + } + def(src) { + const cap = this.rules.block.def.exec(src); + if (cap) { + const tag2 = cap[1].toLowerCase().replace(/\s+/g, " "); + const href = cap[2] ? cap[2].replace(/^<(.*)>$/, "$1").replace(this.rules.inline.anyPunctuation, "$1") : ""; + const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, "$1") : cap[3]; + return { + type: "def", + tag: tag2, + raw: cap[0], + href, + title + }; + } + } + table(src) { + const cap = this.rules.block.table.exec(src); + if (!cap) { + return; + } + if (!/[:|]/.test(cap[2])) { + return; + } + const headers = splitCells(cap[1]); + const aligns = cap[2].replace(/^\||\| *$/g, "").split("|"); + const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\n[ \t]*$/, "").split("\n") : []; + const item = { + type: "table", + raw: cap[0], + header: [], + align: [], + rows: [] + }; + if (headers.length !== aligns.length) { + return; + } + for (const align of aligns) { + if (/^ *-+: *$/.test(align)) { + item.align.push("right"); + } else if (/^ *:-+: *$/.test(align)) { + item.align.push("center"); + } else if (/^ *:-+ *$/.test(align)) { + item.align.push("left"); + } else { + item.align.push(null); + } + } + for (let i = 0; i < headers.length; i++) { + item.header.push({ + text: headers[i], + tokens: this.lexer.inline(headers[i]), + header: true, + align: item.align[i] + }); + } + for (const row of rows) { + item.rows.push(splitCells(row, item.header.length).map((cell, i) => { + return { + text: cell, + tokens: this.lexer.inline(cell), + header: false, + align: item.align[i] + }; + })); + } + return item; + } + lheading(src) { + const cap = this.rules.block.lheading.exec(src); + if (cap) { + return { + type: "heading", + raw: cap[0], + depth: cap[2].charAt(0) === "=" ? 1 : 2, + text: cap[1], + tokens: this.lexer.inline(cap[1]) + }; + } + } + paragraph(src) { + const cap = this.rules.block.paragraph.exec(src); + if (cap) { + const text2 = cap[1].charAt(cap[1].length - 1) === "\n" ? cap[1].slice(0, -1) : cap[1]; + return { + type: "paragraph", + raw: cap[0], + text: text2, + tokens: this.lexer.inline(text2) + }; + } + } + text(src) { + const cap = this.rules.block.text.exec(src); + if (cap) { + return { + type: "text", + raw: cap[0], + text: cap[0], + tokens: this.lexer.inline(cap[0]) + }; + } + } + escape(src) { + const cap = this.rules.inline.escape.exec(src); + if (cap) { + return { + type: "escape", + raw: cap[0], + text: escape$1(cap[1]) + }; + } + } + tag(src) { + const cap = this.rules.inline.tag.exec(src); + if (cap) { + if (!this.lexer.state.inLink && /^/i.test(cap[0])) { + this.lexer.state.inLink = false; + } + if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\s|>)/i.test(cap[0])) { + this.lexer.state.inRawBlock = true; + } else if (this.lexer.state.inRawBlock && /^<\/(pre|code|kbd|script)(\s|>)/i.test(cap[0])) { + this.lexer.state.inRawBlock = false; + } + return { + type: "html", + raw: cap[0], + inLink: this.lexer.state.inLink, + inRawBlock: this.lexer.state.inRawBlock, + block: false, + text: cap[0] + }; + } + } + link(src) { + const cap = this.rules.inline.link.exec(src); + if (cap) { + const trimmedUrl = cap[2].trim(); + if (!this.options.pedantic && /^$/.test(trimmedUrl)) { + return; + } + const rtrimSlash = rtrim2(trimmedUrl.slice(0, -1), "\\"); + if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) { + return; + } + } else { + const lastParenIndex = findClosingBracket(cap[2], "()"); + if (lastParenIndex > -1) { + const start = cap[0].indexOf("!") === 0 ? 5 : 4; + const linkLen = start + cap[1].length + lastParenIndex; + cap[2] = cap[2].substring(0, lastParenIndex); + cap[0] = cap[0].substring(0, linkLen).trim(); + cap[3] = ""; + } + } + let href = cap[2]; + let title = ""; + if (this.options.pedantic) { + const link2 = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(href); + if (link2) { + href = link2[1]; + title = link2[3]; + } + } else { + title = cap[3] ? cap[3].slice(1, -1) : ""; + } + href = href.trim(); + if (/^$/.test(trimmedUrl)) { + href = href.slice(1); + } else { + href = href.slice(1, -1); + } + } + return outputLink(cap, { + href: href ? href.replace(this.rules.inline.anyPunctuation, "$1") : href, + title: title ? title.replace(this.rules.inline.anyPunctuation, "$1") : title + }, cap[0], this.lexer); + } + } + reflink(src, links) { + let cap; + if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) { + const linkString = (cap[2] || cap[1]).replace(/\s+/g, " "); + const link2 = links[linkString.toLowerCase()]; + if (!link2) { + const text2 = cap[0].charAt(0); + return { + type: "text", + raw: text2, + text: text2 + }; + } + return outputLink(cap, link2, cap[0], this.lexer); + } + } + emStrong(src, maskedSrc, prevChar = "") { + let match = this.rules.inline.emStrongLDelim.exec(src); + if (!match) + return; + if (match[3] && prevChar.match(/[\p{L}\p{N}]/u)) + return; + const nextChar = match[1] || match[2] || ""; + if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) { + const lLength = [...match[0]].length - 1; + let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0; + const endReg = match[0][0] === "*" ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd; + endReg.lastIndex = 0; + maskedSrc = maskedSrc.slice(-1 * src.length + lLength); + while ((match = endReg.exec(maskedSrc)) != null) { + rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6]; + if (!rDelim) + continue; + rLength = [...rDelim].length; + if (match[3] || match[4]) { + delimTotal += rLength; + continue; + } else if (match[5] || match[6]) { + if (lLength % 3 && !((lLength + rLength) % 3)) { + midDelimTotal += rLength; + continue; + } + } + delimTotal -= rLength; + if (delimTotal > 0) + continue; + rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal); + const lastCharLength = [...match[0]][0].length; + const raw = src.slice(0, lLength + match.index + lastCharLength + rLength); + if (Math.min(lLength, rLength) % 2) { + const text3 = raw.slice(1, -1); + return { + type: "em", + raw, + text: text3, + tokens: this.lexer.inlineTokens(text3) + }; + } + const text2 = raw.slice(2, -2); + return { + type: "strong", + raw, + text: text2, + tokens: this.lexer.inlineTokens(text2) + }; + } + } + } + codespan(src) { + const cap = this.rules.inline.code.exec(src); + if (cap) { + let text2 = cap[2].replace(/\n/g, " "); + const hasNonSpaceChars = /[^ ]/.test(text2); + const hasSpaceCharsOnBothEnds = /^ /.test(text2) && / $/.test(text2); + if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) { + text2 = text2.substring(1, text2.length - 1); + } + text2 = escape$1(text2, true); + return { + type: "codespan", + raw: cap[0], + text: text2 + }; + } + } + br(src) { + const cap = this.rules.inline.br.exec(src); + if (cap) { + return { + type: "br", + raw: cap[0] + }; + } + } + del(src) { + const cap = this.rules.inline.del.exec(src); + if (cap) { + return { + type: "del", + raw: cap[0], + text: cap[2], + tokens: this.lexer.inlineTokens(cap[2]) + }; + } + } + autolink(src) { + const cap = this.rules.inline.autolink.exec(src); + if (cap) { + let text2, href; + if (cap[2] === "@") { + text2 = escape$1(cap[1]); + href = "mailto:" + text2; + } else { + text2 = escape$1(cap[1]); + href = text2; + } + return { + type: "link", + raw: cap[0], + text: text2, + href, + tokens: [ + { + type: "text", + raw: text2, + text: text2 + } + ] + }; + } + } + url(src) { + let cap; + if (cap = this.rules.inline.url.exec(src)) { + let text2, href; + if (cap[2] === "@") { + text2 = escape$1(cap[0]); + href = "mailto:" + text2; + } else { + let prevCapZero; + do { + prevCapZero = cap[0]; + cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? ""; + } while (prevCapZero !== cap[0]); + text2 = escape$1(cap[0]); + if (cap[1] === "www.") { + href = "http://" + cap[0]; + } else { + href = cap[0]; + } + } + return { + type: "link", + raw: cap[0], + text: text2, + href, + tokens: [ + { + type: "text", + raw: text2, + text: text2 + } + ] + }; + } + } + inlineText(src) { + const cap = this.rules.inline.text.exec(src); + if (cap) { + let text2; + if (this.lexer.state.inRawBlock) { + text2 = cap[0]; + } else { + text2 = escape$1(cap[0]); + } + return { + type: "text", + raw: cap[0], + text: text2 + }; + } + } + } + const newline = /^(?: *(?:\n|$))+/; + const blockCode = /^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/; + const fences = /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/; + const hr = /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/; + const heading = /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/; + const bullet = /(?:[*+-]|\d{1,9}[.)])/; + const lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html))+?)\n {0,3}(=+|-+) *(?:\n+|$)/).replace(/bull/g, bullet).replace(/blockCode/g, / {4}/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\n>]+>\n/).getRegex(); + const _paragraph = /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/; + const blockText = /^[^\n]+/; + const _blockLabel = /(?!\s*\])(?:\\.|[^\[\]\\])+/; + const def = edit(/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/).replace("label", _blockLabel).replace("title", /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(); + const list = edit(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g, bullet).getRegex(); + const _tag = "address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul"; + const _comment = /|$))/; + const html2 = edit("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))", "i").replace("comment", _comment).replace("tag", _tag).replace("attribute", / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(); + const paragraph = edit(_paragraph).replace("hr", hr).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("|table", "").replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", ")|<(?:script|pre|style|textarea|!--)").replace("tag", _tag).getRegex(); + const blockquote = edit(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph", paragraph).getRegex(); + const blockNormal = { + blockquote, + code: blockCode, + def, + fences, + heading, + hr, + html: html2, + lheading, + list, + newline, + paragraph, + table: noopTest, + text: blockText + }; + const gfmTable = edit("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr", hr).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("blockquote", " {0,3}>").replace("code", " {4}[^\\n]").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", ")|<(?:script|pre|style|textarea|!--)").replace("tag", _tag).getRegex(); + const blockGfm = { + ...blockNormal, + table: gfmTable, + paragraph: edit(_paragraph).replace("hr", hr).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("table", gfmTable).replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", ")|<(?:script|pre|style|textarea|!--)").replace("tag", _tag).getRegex() + }; + const blockPedantic = { + ...blockNormal, + html: edit(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment", _comment).replace(/tag/g, "(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(), + def: /^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/, + heading: /^(#{1,6})(.*)(?:\n+|$)/, + fences: noopTest, + // fences not supported + lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/, + paragraph: edit(_paragraph).replace("hr", hr).replace("heading", " *#{1,6} *[^\n]").replace("lheading", lheading).replace("|table", "").replace("blockquote", " {0,3}>").replace("|fences", "").replace("|list", "").replace("|html", "").replace("|tag", "").getRegex() + }; + const escape2 = /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/; + const inlineCode = /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/; + const br = /^( {2,}|\\)\n(?!\s*$)/; + const inlineText = /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\]*?>/g; + const emStrongLDelim = edit(/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/, "u").replace(/punct/g, _punctuation).getRegex(); + const emStrongRDelimAst = edit("^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])", "gu").replace(/punct/g, _punctuation).getRegex(); + const emStrongRDelimUnd = edit("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])", "gu").replace(/punct/g, _punctuation).getRegex(); + const anyPunctuation = edit(/\\([punct])/, "gu").replace(/punct/g, _punctuation).getRegex(); + const autolink = edit(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme", /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email", /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(); + const _inlineComment = edit(_comment).replace("(?:-->|$)", "-->").getRegex(); + const tag = edit("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment", _inlineComment).replace("attribute", /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(); + const _inlineLabel = /(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/; + const link = edit(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/).replace("label", _inlineLabel).replace("href", /<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/).replace("title", /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(); + const reflink = edit(/^!?\[(label)\]\[(ref)\]/).replace("label", _inlineLabel).replace("ref", _blockLabel).getRegex(); + const nolink = edit(/^!?\[(ref)\](?:\[\])?/).replace("ref", _blockLabel).getRegex(); + const reflinkSearch = edit("reflink|nolink(?!\\()", "g").replace("reflink", reflink).replace("nolink", nolink).getRegex(); + const inlineNormal = { + _backpedal: noopTest, + // only used for GFM url + anyPunctuation, + autolink, + blockSkip, + br, + code: inlineCode, + del: noopTest, + emStrongLDelim, + emStrongRDelimAst, + emStrongRDelimUnd, + escape: escape2, + link, + nolink, + punctuation, + reflink, + reflinkSearch, + tag, + text: inlineText, + url: noopTest + }; + const inlinePedantic = { + ...inlineNormal, + link: edit(/^!?\[(label)\]\((.*?)\)/).replace("label", _inlineLabel).getRegex(), + reflink: edit(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label", _inlineLabel).getRegex() + }; + const inlineGfm = { + ...inlineNormal, + escape: edit(escape2).replace("])", "~|])").getRegex(), + url: edit(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/, "i").replace("email", /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(), + _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/, + del: /^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/, + text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\ { + return leading + " ".repeat(tabs.length); + }); + } + let token; + let lastToken; + let cutSrc; + while (src) { + if (this.options.extensions && this.options.extensions.block && this.options.extensions.block.some((extTokenizer) => { + if (token = extTokenizer.call({ lexer: this }, src, tokens)) { + src = src.substring(token.raw.length); + tokens.push(token); + return true; + } + return false; + })) { + continue; + } + if (token = this.tokenizer.space(src)) { + src = src.substring(token.raw.length); + if (token.raw.length === 1 && tokens.length > 0) { + tokens[tokens.length - 1].raw += "\n"; + } else { + tokens.push(token); + } + continue; + } + if (token = this.tokenizer.code(src)) { + src = src.substring(token.raw.length); + lastToken = tokens[tokens.length - 1]; + if (lastToken && (lastToken.type === "paragraph" || lastToken.type === "text")) { + lastToken.raw += "\n" + token.raw; + lastToken.text += "\n" + token.text; + this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; + } else { + tokens.push(token); + } + continue; + } + if (token = this.tokenizer.fences(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + if (token = this.tokenizer.heading(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + if (token = this.tokenizer.hr(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + if (token = this.tokenizer.blockquote(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + if (token = this.tokenizer.list(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + if (token = this.tokenizer.html(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + if (token = this.tokenizer.def(src)) { + src = src.substring(token.raw.length); + lastToken = tokens[tokens.length - 1]; + if (lastToken && (lastToken.type === "paragraph" || lastToken.type === "text")) { + lastToken.raw += "\n" + token.raw; + lastToken.text += "\n" + token.raw; + this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; + } else if (!this.tokens.links[token.tag]) { + this.tokens.links[token.tag] = { + href: token.href, + title: token.title + }; + } + continue; + } + if (token = this.tokenizer.table(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + if (token = this.tokenizer.lheading(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + cutSrc = src; + if (this.options.extensions && this.options.extensions.startBlock) { + let startIndex = Infinity; + const tempSrc = src.slice(1); + let tempStart; + this.options.extensions.startBlock.forEach((getStartIndex) => { + tempStart = getStartIndex.call({ lexer: this }, tempSrc); + if (typeof tempStart === "number" && tempStart >= 0) { + startIndex = Math.min(startIndex, tempStart); + } + }); + if (startIndex < Infinity && startIndex >= 0) { + cutSrc = src.substring(0, startIndex + 1); + } + } + if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) { + lastToken = tokens[tokens.length - 1]; + if (lastParagraphClipped && lastToken?.type === "paragraph") { + lastToken.raw += "\n" + token.raw; + lastToken.text += "\n" + token.text; + this.inlineQueue.pop(); + this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; + } else { + tokens.push(token); + } + lastParagraphClipped = cutSrc.length !== src.length; + src = src.substring(token.raw.length); + continue; + } + if (token = this.tokenizer.text(src)) { + src = src.substring(token.raw.length); + lastToken = tokens[tokens.length - 1]; + if (lastToken && lastToken.type === "text") { + lastToken.raw += "\n" + token.raw; + lastToken.text += "\n" + token.text; + this.inlineQueue.pop(); + this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; + } else { + tokens.push(token); + } + continue; + } + if (src) { + const errMsg = "Infinite loop on byte: " + src.charCodeAt(0); + if (this.options.silent) { + console.error(errMsg); + break; + } else { + throw new Error(errMsg); + } + } + } + this.state.top = true; + return tokens; + } + inline(src, tokens = []) { + this.inlineQueue.push({ src, tokens }); + return tokens; + } + /** + * Lexing/Compiling + */ + inlineTokens(src, tokens = []) { + let token, lastToken, cutSrc; + let maskedSrc = src; + let match; + let keepPrevChar, prevChar; + if (this.tokens.links) { + const links = Object.keys(this.tokens.links); + if (links.length > 0) { + while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) { + if (links.includes(match[0].slice(match[0].lastIndexOf("[") + 1, -1))) { + maskedSrc = maskedSrc.slice(0, match.index) + "[" + "a".repeat(match[0].length - 2) + "]" + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex); + } + } + } + } + while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) { + maskedSrc = maskedSrc.slice(0, match.index) + "[" + "a".repeat(match[0].length - 2) + "]" + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex); + } + while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) { + maskedSrc = maskedSrc.slice(0, match.index) + "++" + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex); + } + while (src) { + if (!keepPrevChar) { + prevChar = ""; + } + keepPrevChar = false; + if (this.options.extensions && this.options.extensions.inline && this.options.extensions.inline.some((extTokenizer) => { + if (token = extTokenizer.call({ lexer: this }, src, tokens)) { + src = src.substring(token.raw.length); + tokens.push(token); + return true; + } + return false; + })) { + continue; + } + if (token = this.tokenizer.escape(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + if (token = this.tokenizer.tag(src)) { + src = src.substring(token.raw.length); + lastToken = tokens[tokens.length - 1]; + if (lastToken && token.type === "text" && lastToken.type === "text") { + lastToken.raw += token.raw; + lastToken.text += token.text; + } else { + tokens.push(token); + } + continue; + } + if (token = this.tokenizer.link(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + if (token = this.tokenizer.reflink(src, this.tokens.links)) { + src = src.substring(token.raw.length); + lastToken = tokens[tokens.length - 1]; + if (lastToken && token.type === "text" && lastToken.type === "text") { + lastToken.raw += token.raw; + lastToken.text += token.text; + } else { + tokens.push(token); + } + continue; + } + if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + if (token = this.tokenizer.codespan(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + if (token = this.tokenizer.br(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + if (token = this.tokenizer.del(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + if (token = this.tokenizer.autolink(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + if (!this.state.inLink && (token = this.tokenizer.url(src))) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + cutSrc = src; + if (this.options.extensions && this.options.extensions.startInline) { + let startIndex = Infinity; + const tempSrc = src.slice(1); + let tempStart; + this.options.extensions.startInline.forEach((getStartIndex) => { + tempStart = getStartIndex.call({ lexer: this }, tempSrc); + if (typeof tempStart === "number" && tempStart >= 0) { + startIndex = Math.min(startIndex, tempStart); + } + }); + if (startIndex < Infinity && startIndex >= 0) { + cutSrc = src.substring(0, startIndex + 1); + } + } + if (token = this.tokenizer.inlineText(cutSrc)) { + src = src.substring(token.raw.length); + if (token.raw.slice(-1) !== "_") { + prevChar = token.raw.slice(-1); + } + keepPrevChar = true; + lastToken = tokens[tokens.length - 1]; + if (lastToken && lastToken.type === "text") { + lastToken.raw += token.raw; + lastToken.text += token.text; + } else { + tokens.push(token); + } + continue; + } + if (src) { + const errMsg = "Infinite loop on byte: " + src.charCodeAt(0); + if (this.options.silent) { + console.error(errMsg); + break; + } else { + throw new Error(errMsg); + } + } + } + return tokens; + } + } + class _Renderer { + options; + parser; + // set by the parser + constructor(options3) { + this.options = options3 || exports2.defaults; + } + space(token) { + return ""; + } + code({ text: text2, lang, escaped }) { + const langString = (lang || "").match(/^\S*/)?.[0]; + const code = text2.replace(/\n$/, "") + "\n"; + if (!langString) { + return "
" + (escaped ? code : escape$1(code, true)) + "
\n"; + } + return '
' + (escaped ? code : escape$1(code, true)) + "
\n"; + } + blockquote({ tokens }) { + const body = this.parser.parse(tokens); + return `
+${body}
+`; + } + html({ text: text2 }) { + return text2; + } + heading({ tokens, depth }) { + return `${this.parser.parseInline(tokens)} +`; + } + hr(token) { + return "
\n"; + } + list(token) { + const ordered = token.ordered; + const start = token.start; + let body = ""; + for (let j = 0; j < token.items.length; j++) { + const item = token.items[j]; + body += this.listitem(item); + } + const type = ordered ? "ol" : "ul"; + const startAttr = ordered && start !== 1 ? ' start="' + start + '"' : ""; + return "<" + type + startAttr + ">\n" + body + "\n"; + } + listitem(item) { + let itemBody = ""; + if (item.task) { + const checkbox = this.checkbox({ checked: !!item.checked }); + if (item.loose) { + if (item.tokens.length > 0 && item.tokens[0].type === "paragraph") { + item.tokens[0].text = checkbox + " " + item.tokens[0].text; + if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === "text") { + item.tokens[0].tokens[0].text = checkbox + " " + item.tokens[0].tokens[0].text; + } + } else { + item.tokens.unshift({ + type: "text", + raw: checkbox + " ", + text: checkbox + " " + }); + } + } else { + itemBody += checkbox + " "; + } + } + itemBody += this.parser.parse(item.tokens, !!item.loose); + return `
  • ${itemBody}
  • +`; + } + checkbox({ checked }) { + return "'; + } + paragraph({ tokens }) { + return `

    ${this.parser.parseInline(tokens)}

    +`; + } + table(token) { + let header = ""; + let cell = ""; + for (let j = 0; j < token.header.length; j++) { + cell += this.tablecell(token.header[j]); + } + header += this.tablerow({ text: cell }); + let body = ""; + for (let j = 0; j < token.rows.length; j++) { + const row = token.rows[j]; + cell = ""; + for (let k = 0; k < row.length; k++) { + cell += this.tablecell(row[k]); + } + body += this.tablerow({ text: cell }); + } + if (body) + body = `${body}`; + return "\n\n" + header + "\n" + body + "
    \n"; + } + tablerow({ text: text2 }) { + return ` +${text2} +`; + } + tablecell(token) { + const content = this.parser.parseInline(token.tokens); + const type = token.header ? "th" : "td"; + const tag2 = token.align ? `<${type} align="${token.align}">` : `<${type}>`; + return tag2 + content + ` +`; + } + /** + * span level renderer + */ + strong({ tokens }) { + return `${this.parser.parseInline(tokens)}`; + } + em({ tokens }) { + return `${this.parser.parseInline(tokens)}`; + } + codespan({ text: text2 }) { + return `${text2}`; + } + br(token) { + return "
    "; + } + del({ tokens }) { + return `${this.parser.parseInline(tokens)}`; + } + link({ href, title, tokens }) { + const text2 = this.parser.parseInline(tokens); + const cleanHref = cleanUrl(href); + if (cleanHref === null) { + return text2; + } + href = cleanHref; + let out = '
    "; + return out; + } + image({ href, title, text: text2 }) { + const cleanHref = cleanUrl(href); + if (cleanHref === null) { + return text2; + } + href = cleanHref; + let out = `${text2} { + const tokens2 = genericToken[childTokens].flat(Infinity); + values = values.concat(this.walkTokens(tokens2, callback)); + }); + } else if (genericToken.tokens) { + values = values.concat(this.walkTokens(genericToken.tokens, callback)); + } + } + } + } + return values; + } + use(...args) { + const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} }; + args.forEach((pack) => { + const opts = { ...pack }; + opts.async = this.defaults.async || opts.async || false; + if (pack.extensions) { + pack.extensions.forEach((ext) => { + if (!ext.name) { + throw new Error("extension name required"); + } + if ("renderer" in ext) { + const prevRenderer = extensions.renderers[ext.name]; + if (prevRenderer) { + extensions.renderers[ext.name] = function(...args2) { + let ret = ext.renderer.apply(this, args2); + if (ret === false) { + ret = prevRenderer.apply(this, args2); + } + return ret; + }; + } else { + extensions.renderers[ext.name] = ext.renderer; + } + } + if ("tokenizer" in ext) { + if (!ext.level || ext.level !== "block" && ext.level !== "inline") { + throw new Error("extension level must be 'block' or 'inline'"); + } + const extLevel = extensions[ext.level]; + if (extLevel) { + extLevel.unshift(ext.tokenizer); + } else { + extensions[ext.level] = [ext.tokenizer]; + } + if (ext.start) { + if (ext.level === "block") { + if (extensions.startBlock) { + extensions.startBlock.push(ext.start); + } else { + extensions.startBlock = [ext.start]; + } + } else if (ext.level === "inline") { + if (extensions.startInline) { + extensions.startInline.push(ext.start); + } else { + extensions.startInline = [ext.start]; + } + } + } + } + if ("childTokens" in ext && ext.childTokens) { + extensions.childTokens[ext.name] = ext.childTokens; + } + }); + opts.extensions = extensions; + } + if (pack.renderer) { + const renderer = this.defaults.renderer || new _Renderer(this.defaults); + for (const prop in pack.renderer) { + if (!(prop in renderer)) { + throw new Error(`renderer '${prop}' does not exist`); + } + if (["options", "parser"].includes(prop)) { + continue; + } + const rendererProp = prop; + const rendererFunc = pack.renderer[rendererProp]; + const prevRenderer = renderer[rendererProp]; + renderer[rendererProp] = (...args2) => { + let ret = rendererFunc.apply(renderer, args2); + if (ret === false) { + ret = prevRenderer.apply(renderer, args2); + } + return ret || ""; + }; + } + opts.renderer = renderer; + } + if (pack.tokenizer) { + const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults); + for (const prop in pack.tokenizer) { + if (!(prop in tokenizer)) { + throw new Error(`tokenizer '${prop}' does not exist`); + } + if (["options", "rules", "lexer"].includes(prop)) { + continue; + } + const tokenizerProp = prop; + const tokenizerFunc = pack.tokenizer[tokenizerProp]; + const prevTokenizer = tokenizer[tokenizerProp]; + tokenizer[tokenizerProp] = (...args2) => { + let ret = tokenizerFunc.apply(tokenizer, args2); + if (ret === false) { + ret = prevTokenizer.apply(tokenizer, args2); + } + return ret; + }; + } + opts.tokenizer = tokenizer; + } + if (pack.hooks) { + const hooks = this.defaults.hooks || new _Hooks(); + for (const prop in pack.hooks) { + if (!(prop in hooks)) { + throw new Error(`hook '${prop}' does not exist`); + } + if (prop === "options") { + continue; + } + const hooksProp = prop; + const hooksFunc = pack.hooks[hooksProp]; + const prevHook = hooks[hooksProp]; + if (_Hooks.passThroughHooks.has(prop)) { + hooks[hooksProp] = (arg) => { + if (this.defaults.async) { + return Promise.resolve(hooksFunc.call(hooks, arg)).then((ret2) => { + return prevHook.call(hooks, ret2); + }); + } + const ret = hooksFunc.call(hooks, arg); + return prevHook.call(hooks, ret); + }; + } else { + hooks[hooksProp] = (...args2) => { + let ret = hooksFunc.apply(hooks, args2); + if (ret === false) { + ret = prevHook.apply(hooks, args2); + } + return ret; + }; + } + } + opts.hooks = hooks; + } + if (pack.walkTokens) { + const walkTokens3 = this.defaults.walkTokens; + const packWalktokens = pack.walkTokens; + opts.walkTokens = function(token) { + let values = []; + values.push(packWalktokens.call(this, token)); + if (walkTokens3) { + values = values.concat(walkTokens3.call(this, token)); + } + return values; + }; + } + this.defaults = { ...this.defaults, ...opts }; + }); + return this; + } + setOptions(opt) { + this.defaults = { ...this.defaults, ...opt }; + return this; + } + lexer(src, options3) { + return _Lexer.lex(src, options3 ?? this.defaults); + } + parser(tokens, options3) { + return _Parser.parse(tokens, options3 ?? this.defaults); + } + parseMarkdown(lexer3, parser3) { + const parse5 = (src, options3) => { + const origOpt = { ...options3 }; + const opt = { ...this.defaults, ...origOpt }; + const throwError = this.onError(!!opt.silent, !!opt.async); + if (this.defaults.async === true && origOpt.async === false) { + return throwError(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.")); + } + if (typeof src === "undefined" || src === null) { + return throwError(new Error("marked(): input parameter is undefined or null")); + } + if (typeof src !== "string") { + return throwError(new Error("marked(): input parameter is of type " + Object.prototype.toString.call(src) + ", string expected")); + } + if (opt.hooks) { + opt.hooks.options = opt; + } + if (opt.async) { + return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src).then((src2) => lexer3(src2, opt)).then((tokens) => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens).then((tokens) => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens).then((tokens) => parser3(tokens, opt)).then((html3) => opt.hooks ? opt.hooks.postprocess(html3) : html3).catch(throwError); + } + try { + if (opt.hooks) { + src = opt.hooks.preprocess(src); + } + let tokens = lexer3(src, opt); + if (opt.hooks) { + tokens = opt.hooks.processAllTokens(tokens); + } + if (opt.walkTokens) { + this.walkTokens(tokens, opt.walkTokens); + } + let html3 = parser3(tokens, opt); + if (opt.hooks) { + html3 = opt.hooks.postprocess(html3); + } + return html3; + } catch (e) { + return throwError(e); + } + }; + return parse5; + } + onError(silent, async) { + return (e) => { + e.message += "\nPlease report this to https://github.com/markedjs/marked."; + if (silent) { + const msg = "

    An error occurred:

    " + escape$1(e.message + "", true) + "
    "; + if (async) { + return Promise.resolve(msg); + } + return msg; + } + if (async) { + return Promise.reject(e); + } + throw e; + }; + } + } + const markedInstance = new Marked2(); + function marked2(src, opt) { + return markedInstance.parse(src, opt); + } + marked2.options = marked2.setOptions = function(options3) { + markedInstance.setOptions(options3); + marked2.defaults = markedInstance.defaults; + changeDefaults(marked2.defaults); + return marked2; + }; + marked2.getDefaults = _getDefaults; + marked2.defaults = exports2.defaults; + marked2.use = function(...args) { + markedInstance.use(...args); + marked2.defaults = markedInstance.defaults; + changeDefaults(marked2.defaults); + return marked2; + }; + marked2.walkTokens = function(tokens, callback) { + return markedInstance.walkTokens(tokens, callback); + }; + marked2.parseInline = markedInstance.parseInline; + marked2.Parser = _Parser; + marked2.parser = _Parser.parse; + marked2.Renderer = _Renderer; + marked2.TextRenderer = _TextRenderer; + marked2.Lexer = _Lexer; + marked2.lexer = _Lexer.lex; + marked2.Tokenizer = _Tokenizer; + marked2.Hooks = _Hooks; + marked2.parse = marked2; + const options2 = marked2.options; + const setOptions2 = marked2.setOptions; + const use2 = marked2.use; + const walkTokens2 = marked2.walkTokens; + const parseInline2 = marked2.parseInline; + const parse4 = marked2; + const parser2 = _Parser.parse; + const lexer2 = _Lexer.lex; + exports2.Hooks = _Hooks; + exports2.Lexer = _Lexer; + exports2.Marked = Marked2; + exports2.Parser = _Parser; + exports2.Renderer = _Renderer; + exports2.TextRenderer = _TextRenderer; + exports2.Tokenizer = _Tokenizer; + exports2.getDefaults = _getDefaults; + exports2.lexer = lexer2; + exports2.marked = marked2; + exports2.options = options2; + exports2.parse = parse4; + exports2.parseInline = parseInline2; + exports2.parser = parser2; + exports2.setOptions = setOptions2; + exports2.use = use2; + exports2.walkTokens = walkTokens2; + }); +})(); +__marked_exports.Hooks || exports.Hooks; +__marked_exports.Lexer || exports.Lexer; +__marked_exports.Marked || exports.Marked; +__marked_exports.Parser || exports.Parser; +var Renderer = __marked_exports.Renderer || exports.Renderer; +__marked_exports.TextRenderer || exports.TextRenderer; +__marked_exports.Tokenizer || exports.Tokenizer; +var defaults = __marked_exports.defaults || exports.defaults; +__marked_exports.getDefaults || exports.getDefaults; +var lexer = __marked_exports.lexer || exports.lexer; +__marked_exports.marked || exports.marked; +__marked_exports.options || exports.options; +var parse2 = __marked_exports.parse || exports.parse; +__marked_exports.parseInline || exports.parseInline; +var parser = __marked_exports.parser || exports.parser; +__marked_exports.setOptions || exports.setOptions; +__marked_exports.use || exports.use; +__marked_exports.walkTokens || exports.walkTokens; + +// ../../../../../base/common/buffer.ts +var hasBuffer = typeof Buffer !== "undefined"; +var indexOfTable = new Lazy(() => new Uint8Array(256)); +var textEncoder; +var textDecoder; +var VSBuffer = class _VSBuffer { + /** + * When running in a nodejs context, the backing store for the returned `VSBuffer` instance + * might use a nodejs Buffer allocated from node's Buffer pool, which is not transferrable. + */ + static alloc(byteLength) { + if (hasBuffer) { + return new _VSBuffer(Buffer.allocUnsafe(byteLength)); + } else { + return new _VSBuffer(new Uint8Array(byteLength)); + } + } + /** + * When running in a nodejs context, if `actual` is not a nodejs Buffer, the backing store for + * the returned `VSBuffer` instance might use a nodejs Buffer allocated from node's Buffer pool, + * which is not transferrable. + */ + static wrap(actual) { + if (hasBuffer && !Buffer.isBuffer(actual)) { + actual = Buffer.from(actual.buffer, actual.byteOffset, actual.byteLength); + } + return new _VSBuffer(actual); + } + /** + * When running in a nodejs context, the backing store for the returned `VSBuffer` instance + * might use a nodejs Buffer allocated from node's Buffer pool, which is not transferrable. + */ + static fromString(source, options2) { + const dontUseNodeBuffer = options2?.dontUseNodeBuffer || false; + if (!dontUseNodeBuffer && hasBuffer) { + return new _VSBuffer(Buffer.from(source)); + } else { + if (!textEncoder) { + textEncoder = new TextEncoder(); + } + return new _VSBuffer(textEncoder.encode(source)); + } + } + /** + * When running in a nodejs context, the backing store for the returned `VSBuffer` instance + * might use a nodejs Buffer allocated from node's Buffer pool, which is not transferrable. + */ + static fromByteArray(source) { + const result = _VSBuffer.alloc(source.length); + for (let i = 0, len = source.length; i < len; i++) { + result.buffer[i] = source[i]; + } + return result; + } + /** + * When running in a nodejs context, the backing store for the returned `VSBuffer` instance + * might use a nodejs Buffer allocated from node's Buffer pool, which is not transferrable. + */ + static concat(buffers, totalLength) { + if (typeof totalLength === "undefined") { + totalLength = 0; + for (let i = 0, len = buffers.length; i < len; i++) { + totalLength += buffers[i].byteLength; + } + } + const ret = _VSBuffer.alloc(totalLength); + let offset = 0; + for (let i = 0, len = buffers.length; i < len; i++) { + const element = buffers[i]; + ret.set(element, offset); + offset += element.byteLength; + } + return ret; + } + constructor(buffer) { + this.buffer = buffer; + this.byteLength = this.buffer.byteLength; + } + /** + * When running in a nodejs context, the backing store for the returned `VSBuffer` instance + * might use a nodejs Buffer allocated from node's Buffer pool, which is not transferrable. + */ + clone() { + const result = _VSBuffer.alloc(this.byteLength); + result.set(this); + return result; + } + toString() { + if (hasBuffer) { + return this.buffer.toString(); + } else { + if (!textDecoder) { + textDecoder = new TextDecoder(); + } + return textDecoder.decode(this.buffer); + } + } + slice(start, end) { + return new _VSBuffer(this.buffer.subarray(start, end)); + } + set(array, offset) { + if (array instanceof _VSBuffer) { + this.buffer.set(array.buffer, offset); + } else if (array instanceof Uint8Array) { + this.buffer.set(array, offset); + } else if (array instanceof ArrayBuffer) { + this.buffer.set(new Uint8Array(array), offset); + } else if (ArrayBuffer.isView(array)) { + this.buffer.set(new Uint8Array(array.buffer, array.byteOffset, array.byteLength), offset); + } else { + throw new Error(`Unknown argument 'array'`); + } + } + readUInt32BE(offset) { + return readUInt32BE(this.buffer, offset); + } + writeUInt32BE(value, offset) { + writeUInt32BE(this.buffer, value, offset); + } + readUInt32LE(offset) { + return readUInt32LE(this.buffer, offset); + } + writeUInt32LE(value, offset) { + writeUInt32LE(this.buffer, value, offset); + } + readUInt8(offset) { + return readUInt8(this.buffer, offset); + } + writeUInt8(value, offset) { + writeUInt8(this.buffer, value, offset); + } + indexOf(subarray, offset = 0) { + return binaryIndexOf(this.buffer, subarray instanceof _VSBuffer ? subarray.buffer : subarray, offset); + } +}; +function binaryIndexOf(haystack, needle, offset = 0) { + const needleLen = needle.byteLength; + const haystackLen = haystack.byteLength; + if (needleLen === 0) { + return 0; + } + if (needleLen === 1) { + return haystack.indexOf(needle[0]); + } + if (needleLen > haystackLen - offset) { + return -1; + } + const table = indexOfTable.value; + table.fill(needle.length); + for (let i2 = 0; i2 < needle.length; i2++) { + table[needle[i2]] = needle.length - i2 - 1; + } + let i = offset + needle.length - 1; + let j = i; + let result = -1; + while (i < haystackLen) { + if (haystack[i] === needle[j]) { + if (j === 0) { + result = i; + break; + } + i--; + j--; + } else { + i += Math.max(needle.length - j, table[haystack[i]]); + j = needle.length - 1; + } + } + return result; +} +function readUInt32BE(source, offset) { + return source[offset] * 2 ** 24 + source[offset + 1] * 2 ** 16 + source[offset + 2] * 2 ** 8 + source[offset + 3]; +} +function writeUInt32BE(destination, value, offset) { + destination[offset + 3] = value; + value = value >>> 8; + destination[offset + 2] = value; + value = value >>> 8; + destination[offset + 1] = value; + value = value >>> 8; + destination[offset] = value; +} +function readUInt32LE(source, offset) { + return source[offset + 0] << 0 >>> 0 | source[offset + 1] << 8 >>> 0 | source[offset + 2] << 16 >>> 0 | source[offset + 3] << 24 >>> 0; +} +function writeUInt32LE(destination, value, offset) { + destination[offset + 0] = value & 255; + value = value >>> 8; + destination[offset + 1] = value & 255; + value = value >>> 8; + destination[offset + 2] = value & 255; + value = value >>> 8; + destination[offset + 3] = value & 255; +} +function readUInt8(source, offset) { + return source[offset]; +} +function writeUInt8(destination, value, offset) { + destination[offset] = value; +} + +// ../../../../../base/common/marshalling.ts +function stringify(obj) { + return JSON.stringify(obj, replacer); +} +function parse3(text2) { + let data = JSON.parse(text2); + data = revive(data); + return data; +} +function replacer(key, value) { + if (value instanceof RegExp) { + return { + $mid: 2 /* Regexp */, + source: value.source, + flags: value.flags + }; + } + return value; +} +function revive(obj, depth = 0) { + if (!obj || depth > 200) { + return obj; + } + if (typeof obj === "object") { + switch (obj.$mid) { + case 1 /* Uri */: + return URI.revive(obj); + case 2 /* Regexp */: + return new RegExp(obj.source, obj.flags); + case 17 /* Date */: + return new Date(obj.source); + } + if (obj instanceof VSBuffer || obj instanceof Uint8Array) { + return obj; + } + if (Array.isArray(obj)) { + for (let i = 0; i < obj.length; ++i) { + obj[i] = revive(obj[i], depth + 1); + } + } else { + for (const key in obj) { + if (Object.hasOwnProperty.call(obj, key)) { + obj[key] = revive(obj[key], depth + 1); + } + } + } + } + return obj; +} + +// ../../../../../base/common/objects.ts +var _hasOwnProperty = Object.prototype.hasOwnProperty; +function cloneAndChange(obj, changer) { + return _cloneAndChange(obj, changer, /* @__PURE__ */ new Set()); +} +function _cloneAndChange(obj, changer, seen) { + if (isUndefinedOrNull(obj)) { + return obj; + } + const changed = changer(obj); + if (typeof changed !== "undefined") { + return changed; + } + if (Array.isArray(obj)) { + const r1 = []; + for (const e of obj) { + r1.push(_cloneAndChange(e, changer, seen)); + } + return r1; + } + if (isObject(obj)) { + if (seen.has(obj)) { + throw new Error("Cannot clone recursive data-structure"); + } + seen.add(obj); + const r2 = {}; + for (const i2 in obj) { + if (_hasOwnProperty.call(obj, i2)) { + r2[i2] = _cloneAndChange(obj[i2], changer, seen); + } + } + seen.delete(obj); + return r2; + } + return obj; +} +function equals2(one, other) { + if (one === other) { + return true; + } + if (one === null || one === void 0 || other === null || other === void 0) { + return false; + } + if (typeof one !== typeof other) { + return false; + } + if (typeof one !== "object") { + return false; + } + if (Array.isArray(one) !== Array.isArray(other)) { + return false; + } + let i; + let key; + if (Array.isArray(one)) { + if (one.length !== other.length) { + return false; + } + for (i = 0; i < one.length; i++) { + if (!equals2(one[i], other[i])) { + return false; + } + } + } else { + const oneKeys = []; + for (key in one) { + oneKeys.push(key); + } + oneKeys.sort(); + const otherKeys = []; + for (key in other) { + otherKeys.push(key); + } + otherKeys.sort(); + if (!equals2(oneKeys, otherKeys)) { + return false; + } + for (i = 0; i < oneKeys.length; i++) { + if (!equals2(one[oneKeys[i]], other[oneKeys[i]])) { + return false; + } + } + } + return true; +} + +// ../../../../../base/browser/markdownRenderer.ts +var defaultMarkedRenderers = Object.freeze({ + image: ({ href, title, text: text2 }) => { + let dimensions = []; + let attributes = []; + if (href) { + ({ href, dimensions } = parseHrefAndDimensions(href)); + attributes.push(`src="${escapeDoubleQuotes(href)}"`); + } + if (text2) { + attributes.push(`alt="${escapeDoubleQuotes(text2)}"`); + } + if (title) { + attributes.push(`title="${escapeDoubleQuotes(title)}"`); + } + if (dimensions.length) { + attributes = attributes.concat(dimensions); + } + return ""; + }, + paragraph({ tokens }) { + return `

    ${this.parser.parseInline(tokens)}

    `; + }, + link({ href, title, tokens }) { + let text2 = this.parser.parseInline(tokens); + if (typeof href !== "string") { + return ""; + } + if (href === text2) { + text2 = removeMarkdownEscapes(text2); + } + title = typeof title === "string" ? escapeDoubleQuotes(removeMarkdownEscapes(title)) : ""; + href = removeMarkdownEscapes(href); + href = href.replace(/&/g, "&").replace(//g, ">").replace(/"/g, """).replace(/'/g, "'"); + return `
    ${text2}`; + } +}); +function renderMarkdown(markdown, options2 = {}, markedOptions = {}) { + const disposables = new DisposableStore(); + let isDisposed = false; + const element = createElement(options2); + const _uriMassage = function(part) { + let data; + try { + data = parse3(decodeURIComponent(part)); + } catch (e) { + } + if (!data) { + return part; + } + data = cloneAndChange(data, (value2) => { + if (markdown.uris && markdown.uris[value2]) { + return URI.revive(markdown.uris[value2]); + } else { + return void 0; + } + }); + return encodeURIComponent(JSON.stringify(data)); + }; + const _href = function(href, isDomUri) { + const data = markdown.uris && markdown.uris[href]; + let uri = URI.revive(data); + if (isDomUri) { + if (href.startsWith(Schemas.data + ":")) { + return href; + } + if (!uri) { + uri = URI.parse(href); + } + return FileAccess.uriToBrowserUri(uri).toString(true); + } + if (!uri) { + return href; + } + if (URI.parse(href).toString() === uri.toString()) { + return href; + } + if (uri.query) { + uri = uri.with({ query: _uriMassage(uri.query) }); + } + return uri.toString(); + }; + const renderer = new Renderer(); + renderer.image = defaultMarkedRenderers.image; + renderer.link = defaultMarkedRenderers.link; + renderer.paragraph = defaultMarkedRenderers.paragraph; + const codeBlocks = []; + const syncCodeBlocks = []; + if (options2.codeBlockRendererSync) { + renderer.code = ({ text: text2, lang }) => { + const id2 = defaultGenerator.nextId(); + const value2 = options2.codeBlockRendererSync(postProcessCodeBlockLanguageId(lang), text2); + syncCodeBlocks.push([id2, value2]); + return `
    ${escape(text2)}
    `; + }; + } else if (options2.codeBlockRenderer) { + renderer.code = ({ text: text2, lang }) => { + const id2 = defaultGenerator.nextId(); + const value2 = options2.codeBlockRenderer(postProcessCodeBlockLanguageId(lang), text2); + codeBlocks.push(value2.then((element2) => [id2, element2])); + return `
    ${escape(text2)}
    `; + }; + } + if (options2.actionHandler) { + const _activateLink = function(event) { + const target = event.target.closest("a[data-href]"); + if (!isHTMLElement(target)) { + return; + } + try { + let href = target.dataset["href"]; + if (href) { + if (markdown.baseUri) { + href = resolveWithBaseUri(URI.from(markdown.baseUri), href); + } + options2.actionHandler.callback(href, event); + } + } catch (err) { + onUnexpectedError(err); + } finally { + event.preventDefault(); + } + }; + const onClick = options2.actionHandler.disposables.add(new DomEmitter(element, "click")); + const onAuxClick = options2.actionHandler.disposables.add(new DomEmitter(element, "auxclick")); + options2.actionHandler.disposables.add(Event.any(onClick.event, onAuxClick.event)((e) => { + const mouseEvent = new StandardMouseEvent(getWindow(element), e); + if (!mouseEvent.leftButton && !mouseEvent.middleButton) { + return; + } + _activateLink(mouseEvent); + })); + options2.actionHandler.disposables.add(addDisposableListener(element, "keydown", (e) => { + const keyboardEvent = new StandardKeyboardEvent(e); + if (!keyboardEvent.equals(10 /* Space */) && !keyboardEvent.equals(3 /* Enter */)) { + return; + } + _activateLink(keyboardEvent); + })); + } + if (!markdown.supportHtml) { + renderer.html = ({ text: text2 }) => { + if (options2.sanitizerOptions?.replaceWithPlaintext) { + return escape(text2); + } + const match = markdown.isTrusted ? text2.match(/^(]+>)|(<\/\s*span>)$/) : void 0; + return match ? text2 : ""; + }; + } + markedOptions.renderer = renderer; + let value = markdown.value ?? ""; + if (value.length > 1e5) { + value = `${value.substr(0, 1e5)}\u2026`; + } + if (markdown.supportThemeIcons) { + value = markdownEscapeEscapedIcons(value); + } + let renderedMarkdown; + if (options2.fillInIncompleteTokens) { + const opts = { + ...defaults, + ...markedOptions + }; + const tokens = lexer(value, opts); + const newTokens = fillInIncompleteTokens(tokens); + renderedMarkdown = parser(newTokens, opts); + } else { + renderedMarkdown = parse2(value, { ...markedOptions, async: false }); + } + if (markdown.supportThemeIcons) { + const elements = renderLabelWithIcons(renderedMarkdown); + renderedMarkdown = elements.map((e) => typeof e === "string" ? e : e.outerHTML).join(""); + } + const htmlParser = new DOMParser(); + const markdownHtmlDoc = htmlParser.parseFromString(sanitizeRenderedMarkdown({ isTrusted: markdown.isTrusted, ...options2.sanitizerOptions }, renderedMarkdown), "text/html"); + markdownHtmlDoc.body.querySelectorAll("img, audio, video, source").forEach((img) => { + const src = img.getAttribute("src"); + if (src) { + let href = src; + try { + if (markdown.baseUri) { + href = resolveWithBaseUri(URI.from(markdown.baseUri), href); + } + } catch (err) { + } + img.setAttribute("src", _href(href, true)); + if (options2.remoteImageIsAllowed) { + const uri = URI.parse(href); + if (uri.scheme !== Schemas.file && uri.scheme !== Schemas.data && !options2.remoteImageIsAllowed(uri)) { + img.replaceWith($("", void 0, img.outerHTML)); + } + } + } + }); + markdownHtmlDoc.body.querySelectorAll("a").forEach((a) => { + const href = a.getAttribute("href"); + a.setAttribute("href", ""); + if (!href || /^data:|javascript:/i.test(href) || /^command:/i.test(href) && !markdown.isTrusted || /^command:(\/\/\/)?_workbench\.downloadResource/i.test(href)) { + a.replaceWith(...a.childNodes); + } else { + let resolvedHref = _href(href, false); + if (markdown.baseUri) { + resolvedHref = resolveWithBaseUri(URI.from(markdown.baseUri), href); + } + a.dataset.href = resolvedHref; + } + }); + element.innerHTML = sanitizeRenderedMarkdown({ isTrusted: markdown.isTrusted, ...options2.sanitizerOptions }, markdownHtmlDoc.body.innerHTML); + if (codeBlocks.length > 0) { + Promise.all(codeBlocks).then((tuples) => { + if (isDisposed) { + return; + } + const renderedElements = new Map(tuples); + const placeholderElements = element.querySelectorAll(`div[data-code]`); + for (const placeholderElement of placeholderElements) { + const renderedElement = renderedElements.get(placeholderElement.dataset["code"] ?? ""); + if (renderedElement) { + reset(placeholderElement, renderedElement); + } + } + options2.asyncRenderCallback?.(); + }); + } else if (syncCodeBlocks.length > 0) { + const renderedElements = new Map(syncCodeBlocks); + const placeholderElements = element.querySelectorAll(`div[data-code]`); + for (const placeholderElement of placeholderElements) { + const renderedElement = renderedElements.get(placeholderElement.dataset["code"] ?? ""); + if (renderedElement) { + reset(placeholderElement, renderedElement); + } + } + } + if (options2.asyncRenderCallback) { + for (const img of element.getElementsByTagName("img")) { + const listener = disposables.add(addDisposableListener(img, "load", () => { + listener.dispose(); + options2.asyncRenderCallback(); + })); + } + } + return { + element, + dispose: () => { + isDisposed = true; + disposables.dispose(); + } + }; +} +function postProcessCodeBlockLanguageId(lang) { + if (!lang) { + return ""; + } + const parts = lang.split(/[\s+|:|,|\{|\?]/, 1); + if (parts.length) { + return parts[0]; + } + return lang; +} +function resolveWithBaseUri(baseUri, href) { + const hasScheme = /^\w[\w\d+.-]*:/.test(href); + if (hasScheme) { + return href; + } + if (baseUri.path.endsWith("/")) { + return resolvePath(baseUri, href).toString(); + } else { + return resolvePath(dirname2(baseUri), href).toString(); + } +} +var selfClosingTags = ["area", "base", "br", "col", "command", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr"]; +function sanitizeRenderedMarkdown(options2, renderedMarkdown) { + const { config, allowedSchemes } = getSanitizerOptions(options2); + const store = new DisposableStore(); + store.add(addDompurifyHook("uponSanitizeAttribute", (element, e) => { + if (e.attrName === "style" || e.attrName === "class") { + if (element.tagName === "SPAN") { + if (e.attrName === "style") { + e.keepAttr = /^(color\:(#[0-9a-fA-F]+|var\(--vscode(-[a-zA-Z0-9]+)+\));)?(background-color\:(#[0-9a-fA-F]+|var\(--vscode(-[a-zA-Z0-9]+)+\));)?(border-radius:[0-9]+px;)?$/.test(e.attrValue); + return; + } else if (e.attrName === "class") { + e.keepAttr = /^codicon codicon-[a-z\-]+( codicon-modifier-[a-z\-]+)?$/.test(e.attrValue); + return; + } + } + e.keepAttr = false; + return; + } else if (element.tagName === "INPUT" && element.attributes.getNamedItem("type")?.value === "checkbox") { + if (e.attrName === "type" && e.attrValue === "checkbox" || e.attrName === "disabled" || e.attrName === "checked") { + e.keepAttr = true; + return; + } + e.keepAttr = false; + } + })); + store.add(addDompurifyHook("uponSanitizeElement", (element, e) => { + if (e.tagName === "input") { + if (element.attributes.getNamedItem("type")?.value === "checkbox") { + element.setAttribute("disabled", ""); + } else if (!options2.replaceWithPlaintext) { + element.remove(); + } + } + if (options2.replaceWithPlaintext && !e.allowedTags[e.tagName] && e.tagName !== "body") { + if (element.parentElement) { + let startTagText; + let endTagText; + if (e.tagName === "#comment") { + startTagText = ``; + } else { + const isSelfClosing = selfClosingTags.includes(e.tagName); + const attrString = element.attributes.length ? " " + Array.from(element.attributes).map((attr) => `${attr.name}="${attr.value}"`).join(" ") : ""; + startTagText = `<${e.tagName}${attrString}>`; + if (!isSelfClosing) { + endTagText = ``; + } + } + const fragment = document.createDocumentFragment(); + const textNode = element.parentElement.ownerDocument.createTextNode(startTagText); + fragment.appendChild(textNode); + const endTagTextNode = endTagText ? element.parentElement.ownerDocument.createTextNode(endTagText) : void 0; + while (element.firstChild) { + fragment.appendChild(element.firstChild); + } + if (endTagTextNode) { + fragment.appendChild(endTagTextNode); + } + element.parentElement.replaceChild(fragment, element); + } + } + })); + store.add(hookDomPurifyHrefAndSrcSanitizer(allowedSchemes)); + try { + return sanitize(renderedMarkdown, { ...config, RETURN_TRUSTED_TYPE: true }); + } finally { + store.dispose(); + } +} +var allowedMarkdownAttr = [ + "align", + "autoplay", + "alt", + "checked", + "class", + "colspan", + "controls", + "data-code", + "data-href", + "disabled", + "draggable", + "height", + "href", + "loop", + "muted", + "playsinline", + "poster", + "rowspan", + "src", + "style", + "target", + "title", + "type", + "width", + "start" +]; +function getSanitizerOptions(options2) { + const allowedSchemes = [ + Schemas.http, + Schemas.https, + Schemas.mailto, + Schemas.data, + Schemas.file, + Schemas.vscodeFileResource, + Schemas.vscodeRemote, + Schemas.vscodeRemoteResource + ]; + if (options2.isTrusted) { + allowedSchemes.push(Schemas.command); + } + return { + config: { + // allowedTags should included everything that markdown renders to. + // Since we have our own sanitize function for marked, it's possible we missed some tag so let dompurify make sure. + // HTML tags that can result from markdown are from reading https://spec.commonmark.org/0.29/ + // HTML table tags that can result from markdown are from https://github.github.com/gfm/#tables-extension- + ALLOWED_TAGS: options2.allowedTags ?? [...basicMarkupHtmlTags], + ALLOWED_ATTR: allowedMarkdownAttr, + ALLOW_UNKNOWN_PROTOCOLS: true + }, + allowedSchemes + }; +} +function renderStringAsPlaintext(string) { + return typeof string === "string" ? string : renderMarkdownAsPlaintext(string); +} +function renderMarkdownAsPlaintext(markdown, withCodeBlocks) { + let value = markdown.value ?? ""; + if (value.length > 1e5) { + value = `${value.substr(0, 1e5)}\u2026`; + } + const html2 = parse2(value, { async: false, renderer: plainTextRenderer.value }); + return sanitizeRenderedMarkdown({ isTrusted: false }, html2).toString().replace(/&(#\d+|[a-zA-Z]+);/g, (m) => unescapeInfo.get(m) ?? m); +} +var unescapeInfo = /* @__PURE__ */ new Map([ + [""", '"'], + [" ", " "], + ["&", "&"], + ["'", "'"], + ["<", "<"], + [">", ">"] +]); +function createRenderer() { + const renderer = new Renderer(); + renderer.code = ({ text: text2 }) => { + return text2; + }; + renderer.blockquote = ({ text: text2 }) => { + return text2 + "\n"; + }; + renderer.html = (_) => { + return ""; + }; + renderer.heading = function({ tokens }) { + return this.parser.parseInline(tokens) + "\n"; + }; + renderer.hr = () => { + return ""; + }; + renderer.list = function({ items }) { + return items.map((x) => this.listitem(x)).join("\n") + "\n"; + }; + renderer.listitem = ({ text: text2 }) => { + return text2 + "\n"; + }; + renderer.paragraph = function({ tokens }) { + return this.parser.parseInline(tokens) + "\n"; + }; + renderer.table = function({ header, rows }) { + return header.map((cell) => this.tablecell(cell)).join(" ") + "\n" + rows.map((cells) => cells.map((cell) => this.tablecell(cell)).join(" ")).join("\n") + "\n"; + }; + renderer.tablerow = ({ text: text2 }) => { + return text2; + }; + renderer.tablecell = function({ tokens }) { + return this.parser.parseInline(tokens); + }; + renderer.strong = ({ text: text2 }) => { + return text2; + }; + renderer.em = ({ text: text2 }) => { + return text2; + }; + renderer.codespan = ({ text: text2 }) => { + return text2; + }; + renderer.br = (_) => { + return "\n"; + }; + renderer.del = ({ text: text2 }) => { + return text2; + }; + renderer.image = (_) => { + return ""; + }; + renderer.text = ({ text: text2 }) => { + return text2; + }; + renderer.link = ({ text: text2 }) => { + return text2; + }; + return renderer; +} +var plainTextRenderer = new Lazy((withCodeBlocks) => createRenderer()); +function mergeRawTokenText(tokens) { + let mergedTokenText = ""; + tokens.forEach((token) => { + mergedTokenText += token.raw; + }); + return mergedTokenText; +} +function completeSingleLinePattern(token) { + if (!token.tokens) { + return void 0; + } + for (let i = token.tokens.length - 1; i >= 0; i--) { + const subtoken = token.tokens[i]; + if (subtoken.type === "text") { + const lines = subtoken.raw.split("\n"); + const lastLine = lines[lines.length - 1]; + if (lastLine.includes("`")) { + return completeCodespan(token); + } else if (lastLine.includes("**")) { + return completeDoublestar(token); + } else if (lastLine.match(/\*\w/)) { + return completeStar(token); + } else if (lastLine.match(/(^|\s)__\w/)) { + return completeDoubleUnderscore(token); + } else if (lastLine.match(/(^|\s)_\w/)) { + return completeUnderscore(token); + } else if ( + // Text with start of link target + hasLinkTextAndStartOfLinkTarget(lastLine) || // This token doesn't have the link text, eg if it contains other markdown constructs that are in other subtokens. + // But some preceding token does have an unbalanced [ at least + hasStartOfLinkTargetAndNoLinkText(lastLine) && token.tokens.slice(0, i).some((t) => t.type === "text" && t.raw.match(/\[[^\]]*$/)) + ) { + const nextTwoSubTokens = token.tokens.slice(i + 1); + if ( + // If the link was parsed as a link, then look for a link token and a text token with a quote + nextTwoSubTokens[0]?.type === "link" && nextTwoSubTokens[1]?.type === "text" && nextTwoSubTokens[1].raw.match(/^ *"[^"]*$/) || // And if the link was not parsed as a link (eg command link), just look for a single quote in this token + lastLine.match(/^[^"]* +"[^"]*$/) + ) { + return completeLinkTargetArg(token); + } + return completeLinkTarget(token); + } else if (lastLine.match(/(^|\s)\[\w*/)) { + return completeLinkText(token); + } + } + } + return void 0; +} +function hasLinkTextAndStartOfLinkTarget(str) { + return !!str.match(/(^|\s)\[.*\]\(\w*/); +} +function hasStartOfLinkTargetAndNoLinkText(str) { + return !!str.match(/^[^\[]*\]\([^\)]*$/); +} +function completeListItemPattern(list) { + const lastListItem = list.items[list.items.length - 1]; + const lastListSubToken = lastListItem.tokens ? lastListItem.tokens[lastListItem.tokens.length - 1] : void 0; + let newToken; + if (lastListSubToken?.type === "text" && !("inRawBlock" in lastListItem)) { + newToken = completeSingleLinePattern(lastListSubToken); + } + if (!newToken || newToken.type !== "paragraph") { + return; + } + const previousListItemsText = mergeRawTokenText(list.items.slice(0, -1)); + const lastListItemLead = lastListItem.raw.match(/^(\s*(-|\d+\.|\*) +)/)?.[0]; + if (!lastListItemLead) { + return; + } + const newListItemText = lastListItemLead + mergeRawTokenText(lastListItem.tokens.slice(0, -1)) + newToken.raw; + const newList = lexer(previousListItemsText + newListItemText)[0]; + if (newList.type !== "list") { + return; + } + return newList; +} +var maxIncompleteTokensFixRounds = 3; +function fillInIncompleteTokens(tokens) { + for (let i = 0; i < maxIncompleteTokensFixRounds; i++) { + const newTokens = fillInIncompleteTokensOnce(tokens); + if (newTokens) { + tokens = newTokens; + } else { + break; + } + } + return tokens; +} +function fillInIncompleteTokensOnce(tokens) { + let i; + let newTokens; + for (i = 0; i < tokens.length; i++) { + const token = tokens[i]; + if (token.type === "paragraph" && token.raw.match(/(\n|^)\|/)) { + newTokens = completeTable(tokens.slice(i)); + break; + } + if (i === tokens.length - 1 && token.type === "list") { + const newListToken = completeListItemPattern(token); + if (newListToken) { + newTokens = [newListToken]; + break; + } + } + if (i === tokens.length - 1 && token.type === "paragraph") { + const newToken = completeSingleLinePattern(token); + if (newToken) { + newTokens = [newToken]; + break; + } + } + } + if (newTokens) { + const newTokensList = [ + ...tokens.slice(0, i), + ...newTokens + ]; + newTokensList.links = tokens.links; + return newTokensList; + } + return null; +} +function completeCodespan(token) { + return completeWithString(token, "`"); +} +function completeStar(tokens) { + return completeWithString(tokens, "*"); +} +function completeUnderscore(tokens) { + return completeWithString(tokens, "_"); +} +function completeLinkTarget(tokens) { + return completeWithString(tokens, ")"); +} +function completeLinkTargetArg(tokens) { + return completeWithString(tokens, '")'); +} +function completeLinkText(tokens) { + return completeWithString(tokens, "](https://microsoft.com)"); +} +function completeDoublestar(tokens) { + return completeWithString(tokens, "**"); +} +function completeDoubleUnderscore(tokens) { + return completeWithString(tokens, "__"); +} +function completeWithString(tokens, closingString) { + const mergedRawText = mergeRawTokenText(Array.isArray(tokens) ? tokens : [tokens]); + return lexer(mergedRawText + closingString)[0]; +} +function completeTable(tokens) { + const mergedRawText = mergeRawTokenText(tokens); + const lines = mergedRawText.split("\n"); + let numCols; + let hasSeparatorRow = false; + for (let i = 0; i < lines.length; i++) { + const line = lines[i].trim(); + if (typeof numCols === "undefined" && line.match(/^\s*\|/)) { + const line1Matches = line.match(/(\|[^\|]+)(?=\||$)/g); + if (line1Matches) { + numCols = line1Matches.length; + } + } else if (typeof numCols === "number") { + if (line.match(/^\s*\|/)) { + if (i !== lines.length - 1) { + return void 0; + } + hasSeparatorRow = true; + } else { + return void 0; + } + } + } + if (typeof numCols === "number" && numCols > 0) { + const prefixText = hasSeparatorRow ? lines.slice(0, -1).join("\n") : mergedRawText; + const line1EndsInPipe = !!prefixText.match(/\|\s*$/); + const newRawText = prefixText + (line1EndsInPipe ? "" : "|") + ` +|${" --- |".repeat(numCols)}`; + return lexer(newRawText); + } + return void 0; +} +function addDompurifyHook(hook, cb) { + addHook(hook, cb); + return toDisposable(() => removeHook(hook)); +} + +// ../../../../../base/browser/ui/contextview/contextview.ts +function isAnchor(obj) { + const anchor = obj; + return !!anchor && typeof anchor.x === "number" && typeof anchor.y === "number"; +} +function layout(viewportSize, viewSize, anchor) { + const layoutAfterAnchorBoundary = anchor.mode === 1 /* ALIGN */ ? anchor.offset : anchor.offset + anchor.size; + const layoutBeforeAnchorBoundary = anchor.mode === 1 /* ALIGN */ ? anchor.offset + anchor.size : anchor.offset; + if (anchor.position === 0 /* Before */) { + if (viewSize <= viewportSize - layoutAfterAnchorBoundary) { + return layoutAfterAnchorBoundary; + } + if (viewSize <= layoutBeforeAnchorBoundary) { + return layoutBeforeAnchorBoundary - viewSize; + } + return Math.max(viewportSize - viewSize, 0); + } else { + if (viewSize <= layoutBeforeAnchorBoundary) { + return layoutBeforeAnchorBoundary - viewSize; + } + if (viewSize <= viewportSize - layoutAfterAnchorBoundary) { + return layoutAfterAnchorBoundary; + } + return 0; + } +} +(class _ContextView extends Disposable { + constructor(container, domPosition) { + super(); + this.container = null; + this.useFixedPosition = false; + this.useShadowDOM = false; + this.delegate = null; + this.toDisposeOnClean = Disposable.None; + this.toDisposeOnSetContainer = Disposable.None; + this.shadowRoot = null; + this.shadowRootHostElement = null; + this.view = $(".context-view"); + hide(this.view); + this.setContainer(container, domPosition); + this._register(toDisposable(() => this.setContainer(null, 1 /* ABSOLUTE */))); + } + static { + this.BUBBLE_UP_EVENTS = ["click", "keydown", "focus", "blur"]; + } + static { + this.BUBBLE_DOWN_EVENTS = ["click"]; + } + setContainer(container, domPosition) { + this.useFixedPosition = domPosition !== 1 /* ABSOLUTE */; + const usedShadowDOM = this.useShadowDOM; + this.useShadowDOM = domPosition === 3 /* FIXED_SHADOW */; + if (container === this.container && usedShadowDOM === this.useShadowDOM) { + return; + } + if (this.container) { + this.toDisposeOnSetContainer.dispose(); + this.view.remove(); + if (this.shadowRoot) { + this.shadowRoot = null; + this.shadowRootHostElement?.remove(); + this.shadowRootHostElement = null; + } + this.container = null; + } + if (container) { + this.container = container; + if (this.useShadowDOM) { + this.shadowRootHostElement = $(".shadow-root-host"); + this.container.appendChild(this.shadowRootHostElement); + this.shadowRoot = this.shadowRootHostElement.attachShadow({ mode: "open" }); + const style = document.createElement("style"); + style.textContent = SHADOW_ROOT_CSS; + this.shadowRoot.appendChild(style); + this.shadowRoot.appendChild(this.view); + this.shadowRoot.appendChild($("slot")); + } else { + this.container.appendChild(this.view); + } + const toDisposeOnSetContainer = new DisposableStore(); + _ContextView.BUBBLE_UP_EVENTS.forEach((event) => { + toDisposeOnSetContainer.add(addStandardDisposableListener(this.container, event, (e) => { + this.onDOMEvent(e, false); + })); + }); + _ContextView.BUBBLE_DOWN_EVENTS.forEach((event) => { + toDisposeOnSetContainer.add(addStandardDisposableListener(this.container, event, (e) => { + this.onDOMEvent(e, true); + }, true)); + }); + this.toDisposeOnSetContainer = toDisposeOnSetContainer; + } + } + show(delegate) { + if (this.isVisible()) { + this.hide(); + } + clearNode(this.view); + this.view.className = "context-view monaco-component"; + this.view.style.top = "0px"; + this.view.style.left = "0px"; + this.view.style.zIndex = `${2575 + (delegate.layer ?? 0)}`; + this.view.style.position = this.useFixedPosition ? "fixed" : "absolute"; + show(this.view); + this.toDisposeOnClean = delegate.render(this.view) || Disposable.None; + this.delegate = delegate; + this.doLayout(); + this.delegate.focus?.(); + } + getViewElement() { + return this.view; + } + layout() { + if (!this.isVisible()) { + return; + } + if (this.delegate.canRelayout === false && !(isIOS && BrowserFeatures.pointerEvents)) { + this.hide(); + return; + } + this.delegate?.layout?.(); + this.doLayout(); + } + doLayout() { + if (!this.isVisible()) { + return; + } + const anchor = this.delegate.getAnchor(); + let around; + if (isHTMLElement(anchor)) { + const elementPosition = getDomNodePagePosition(anchor); + const zoom = getDomNodeZoomLevel(anchor); + around = { + top: elementPosition.top * zoom, + left: elementPosition.left * zoom, + width: elementPosition.width * zoom, + height: elementPosition.height * zoom + }; + } else if (isAnchor(anchor)) { + around = { + top: anchor.y, + left: anchor.x, + width: anchor.width || 1, + height: anchor.height || 2 + }; + } else { + around = { + top: anchor.posy, + left: anchor.posx, + // We are about to position the context view where the mouse + // cursor is. To prevent the view being exactly under the mouse + // when showing and thus potentially triggering an action within, + // we treat the mouse location like a small sized block element. + width: 2, + height: 2 + }; + } + const viewSizeWidth = getTotalWidth(this.view); + const viewSizeHeight = getTotalHeight(this.view); + const anchorPosition = this.delegate.anchorPosition || 0 /* BELOW */; + const anchorAlignment = this.delegate.anchorAlignment || 0 /* LEFT */; + const anchorAxisAlignment = this.delegate.anchorAxisAlignment || 0 /* VERTICAL */; + let top; + let left; + const activeWindow = getActiveWindow(); + if (anchorAxisAlignment === 0 /* VERTICAL */) { + const verticalAnchor = { offset: around.top - activeWindow.pageYOffset, size: around.height, position: anchorPosition === 0 /* BELOW */ ? 0 /* Before */ : 1 /* After */ }; + const horizontalAnchor = { offset: around.left, size: around.width, position: anchorAlignment === 0 /* LEFT */ ? 0 /* Before */ : 1 /* After */, mode: 1 /* ALIGN */ }; + top = layout(activeWindow.innerHeight, viewSizeHeight, verticalAnchor) + activeWindow.pageYOffset; + if (Range.intersects({ start: top, end: top + viewSizeHeight }, { start: verticalAnchor.offset, end: verticalAnchor.offset + verticalAnchor.size })) { + horizontalAnchor.mode = 0 /* AVOID */; + } + left = layout(activeWindow.innerWidth, viewSizeWidth, horizontalAnchor); + } else { + const horizontalAnchor = { offset: around.left, size: around.width, position: anchorAlignment === 0 /* LEFT */ ? 0 /* Before */ : 1 /* After */ }; + const verticalAnchor = { offset: around.top, size: around.height, position: anchorPosition === 0 /* BELOW */ ? 0 /* Before */ : 1 /* After */, mode: 1 /* ALIGN */ }; + left = layout(activeWindow.innerWidth, viewSizeWidth, horizontalAnchor); + if (Range.intersects({ start: left, end: left + viewSizeWidth }, { start: horizontalAnchor.offset, end: horizontalAnchor.offset + horizontalAnchor.size })) { + verticalAnchor.mode = 0 /* AVOID */; + } + top = layout(activeWindow.innerHeight, viewSizeHeight, verticalAnchor) + activeWindow.pageYOffset; + } + this.view.classList.remove("top", "bottom", "left", "right"); + this.view.classList.add(anchorPosition === 0 /* BELOW */ ? "bottom" : "top"); + this.view.classList.add(anchorAlignment === 0 /* LEFT */ ? "left" : "right"); + this.view.classList.toggle("fixed", this.useFixedPosition); + const containerPosition = getDomNodePagePosition(this.container); + this.view.style.top = `${top - (this.useFixedPosition ? getDomNodePagePosition(this.view).top : containerPosition.top)}px`; + this.view.style.left = `${left - (this.useFixedPosition ? getDomNodePagePosition(this.view).left : containerPosition.left)}px`; + this.view.style.width = "initial"; + } + hide(data) { + const delegate = this.delegate; + this.delegate = null; + if (delegate?.onHide) { + delegate.onHide(data); + } + this.toDisposeOnClean.dispose(); + hide(this.view); + } + isVisible() { + return !!this.delegate; + } + onDOMEvent(e, onCapture) { + if (this.delegate) { + if (this.delegate.onDOMEvent) { + this.delegate.onDOMEvent(e, getWindow(e).document.activeElement); + } else if (onCapture && !isAncestor(e.target, this.container)) { + this.hide(); + } + } + } + dispose() { + this.hide(); + super.dispose(); + } +}); +var SHADOW_ROOT_CSS = ( + /* css */ + ` + :host { + all: initial; /* 1st rule so subsequent properties are reset. */ + } + + .codicon[class*='codicon-'] { + font: normal normal normal 16px/1 codicon; + display: inline-block; + text-decoration: none; + text-rendering: auto; + text-align: center; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + } + + :host { + font-family: -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "HelveticaNeue-Light", system-ui, "Ubuntu", "Droid Sans", sans-serif; + } + + :host-context(.mac) { font-family: -apple-system, BlinkMacSystemFont, sans-serif; } + :host-context(.mac:lang(zh-Hans)) { font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", sans-serif; } + :host-context(.mac:lang(zh-Hant)) { font-family: -apple-system, BlinkMacSystemFont, "PingFang TC", sans-serif; } + :host-context(.mac:lang(ja)) { font-family: -apple-system, BlinkMacSystemFont, "Hiragino Kaku Gothic Pro", sans-serif; } + :host-context(.mac:lang(ko)) { font-family: -apple-system, BlinkMacSystemFont, "Nanum Gothic", "Apple SD Gothic Neo", "AppleGothic", sans-serif; } + + :host-context(.windows) { font-family: "Segoe WPC", "Segoe UI", sans-serif; } + :host-context(.windows:lang(zh-Hans)) { font-family: "Segoe WPC", "Segoe UI", "Microsoft YaHei", sans-serif; } + :host-context(.windows:lang(zh-Hant)) { font-family: "Segoe WPC", "Segoe UI", "Microsoft Jhenghei", sans-serif; } + :host-context(.windows:lang(ja)) { font-family: "Segoe WPC", "Segoe UI", "Yu Gothic UI", "Meiryo UI", sans-serif; } + :host-context(.windows:lang(ko)) { font-family: "Segoe WPC", "Segoe UI", "Malgun Gothic", "Dotom", sans-serif; } + + :host-context(.linux) { font-family: system-ui, "Ubuntu", "Droid Sans", sans-serif; } + :host-context(.linux:lang(zh-Hans)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans SC", "Source Han Sans CN", "Source Han Sans", sans-serif; } + :host-context(.linux:lang(zh-Hant)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans TC", "Source Han Sans TW", "Source Han Sans", sans-serif; } + :host-context(.linux:lang(ja)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans J", "Source Han Sans JP", "Source Han Sans", sans-serif; } + :host-context(.linux:lang(ko)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans K", "Source Han Sans JR", "Source Han Sans", "UnDotum", "FBaekmuk Gulim", sans-serif; } +` +); + +// ../../../../../base/browser/ui/hover/hoverDelegate2.ts +var baseHoverDelegate = { + showHover: () => void 0, + hideHover: () => void 0, + showAndFocusLastHover: () => void 0, + setupManagedHover: () => null, + showManagedHover: () => void 0 +}; +function getBaseLayerHoverDelegate() { + return baseHoverDelegate; +} + +// ../../../../../base/browser/ui/selectBox/selectBoxCustom.ts +var $2 = $; +var SELECT_OPTION_ENTRY_TEMPLATE_ID = "selectOption.entry.template"; +var SelectListRenderer = class { + get templateId() { + return SELECT_OPTION_ENTRY_TEMPLATE_ID; + } + renderTemplate(container) { + const data = /* @__PURE__ */ Object.create(null); + data.root = container; + data.text = append(container, $2(".option-text")); + data.detail = append(container, $2(".option-detail")); + data.decoratorRight = append(container, $2(".option-decorator-right")); + return data; + } + renderElement(element, index, templateData) { + const data = templateData; + const text2 = element.text; + const detail = element.detail; + const decoratorRight = element.decoratorRight; + const isDisabled = element.isDisabled; + data.text.textContent = text2; + data.detail.textContent = !!detail ? detail : ""; + data.decoratorRight.innerText = !!decoratorRight ? decoratorRight : ""; + if (isDisabled) { + data.root.classList.add("option-disabled"); + } else { + data.root.classList.remove("option-disabled"); + } + } + disposeTemplate(_templateData) { + } +}; +var SelectBoxList = class _SelectBoxList extends Disposable { + // for dev purposes only + constructor(options2, selected, contextViewProvider, styles, selectBoxOptions) { + super(); + this.options = []; + this._currentSelection = 0; + this._hasDetails = false; + this._skipLayout = false; + this._sticky = false; + this._isVisible = false; + this.styles = styles; + this.selectBoxOptions = selectBoxOptions || /* @__PURE__ */ Object.create(null); + if (typeof this.selectBoxOptions.minBottomMargin !== "number") { + this.selectBoxOptions.minBottomMargin = _SelectBoxList.DEFAULT_DROPDOWN_MINIMUM_BOTTOM_MARGIN; + } else if (this.selectBoxOptions.minBottomMargin < 0) { + this.selectBoxOptions.minBottomMargin = 0; + } + this.selectElement = document.createElement("select"); + this.selectElement.className = "monaco-select-box monaco-select-box-dropdown-padding"; + if (typeof this.selectBoxOptions.ariaLabel === "string") { + this.selectElement.setAttribute("aria-label", this.selectBoxOptions.ariaLabel); + } + if (typeof this.selectBoxOptions.ariaDescription === "string") { + this.selectElement.setAttribute("aria-description", this.selectBoxOptions.ariaDescription); + } + this._onDidSelect = new Emitter(); + this._register(this._onDidSelect); + this.registerListeners(); + this.constructSelectDropDown(contextViewProvider); + this.selected = selected || 0; + if (options2) { + this.setOptions(options2, selected); + } + this.initStyleSheet(); + } + static { + this.DEFAULT_DROPDOWN_MINIMUM_BOTTOM_MARGIN = 32; + } + static { + this.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN = 2; + } + static { + this.DEFAULT_MINIMUM_VISIBLE_OPTIONS = 3; + } + setTitle(title) { + if (!this._hover && title) { + this._hover = this._register(getBaseLayerHoverDelegate().setupManagedHover(getDefaultHoverDelegate("mouse"), this.selectElement, title)); + } else if (this._hover) { + this._hover.update(title); + } + } + // IDelegate - List renderer + getHeight() { + return 22; + } + getTemplateId() { + return SELECT_OPTION_ENTRY_TEMPLATE_ID; + } + constructSelectDropDown(contextViewProvider) { + this.contextViewProvider = contextViewProvider; + this.selectDropDownContainer = $(".monaco-select-box-dropdown-container"); + this.selectDropDownContainer.classList.add("monaco-select-box-dropdown-padding"); + this.selectionDetailsPane = append(this.selectDropDownContainer, $2(".select-box-details-pane")); + const widthControlOuterDiv = append(this.selectDropDownContainer, $2(".select-box-dropdown-container-width-control")); + const widthControlInnerDiv = append(widthControlOuterDiv, $2(".width-control-div")); + this.widthControlElement = document.createElement("span"); + this.widthControlElement.className = "option-text-width-control"; + append(widthControlInnerDiv, this.widthControlElement); + this._dropDownPosition = 0 /* BELOW */; + this.styleElement = createStyleSheet(this.selectDropDownContainer); + this.selectDropDownContainer.setAttribute("draggable", "true"); + this._register(addDisposableListener(this.selectDropDownContainer, EventType.DRAG_START, (e) => { + EventHelper.stop(e, true); + })); + } + registerListeners() { + this._register(addStandardDisposableListener(this.selectElement, "change", (e) => { + this.selected = e.target.selectedIndex; + this._onDidSelect.fire({ + index: e.target.selectedIndex, + selected: e.target.value + }); + if (!!this.options[this.selected] && !!this.options[this.selected].text) { + this.setTitle(this.options[this.selected].text); + } + })); + this._register(addDisposableListener(this.selectElement, EventType.CLICK, (e) => { + EventHelper.stop(e); + if (this._isVisible) { + this.hideSelectDropDown(true); + } else { + this.showSelectDropDown(); + } + })); + this._register(addDisposableListener(this.selectElement, EventType.MOUSE_DOWN, (e) => { + EventHelper.stop(e); + })); + let listIsVisibleOnTouchStart; + this._register(addDisposableListener(this.selectElement, "touchstart", (e) => { + listIsVisibleOnTouchStart = this._isVisible; + })); + this._register(addDisposableListener(this.selectElement, "touchend", (e) => { + EventHelper.stop(e); + if (listIsVisibleOnTouchStart) { + this.hideSelectDropDown(true); + } else { + this.showSelectDropDown(); + } + })); + this._register(addDisposableListener(this.selectElement, EventType.KEY_DOWN, (e) => { + const event = new StandardKeyboardEvent(e); + let showDropDown = false; + if (isMacintosh) { + if (event.keyCode === 18 /* DownArrow */ || event.keyCode === 16 /* UpArrow */ || event.keyCode === 10 /* Space */ || event.keyCode === 3 /* Enter */) { + showDropDown = true; + } + } else { + if (event.keyCode === 18 /* DownArrow */ && event.altKey || event.keyCode === 16 /* UpArrow */ && event.altKey || event.keyCode === 10 /* Space */ || event.keyCode === 3 /* Enter */) { + showDropDown = true; + } + } + if (showDropDown) { + this.showSelectDropDown(); + EventHelper.stop(e, true); + } + })); + } + get onDidSelect() { + return this._onDidSelect.event; + } + setOptions(options2, selected) { + if (!equals(this.options, options2)) { + this.options = options2; + this.selectElement.options.length = 0; + this._hasDetails = false; + this._cachedMaxDetailsHeight = void 0; + this.options.forEach((option, index) => { + this.selectElement.add(this.createOption(option.text, index, option.isDisabled)); + if (typeof option.description === "string") { + this._hasDetails = true; + } + }); + } + if (selected !== void 0) { + this.select(selected); + this._currentSelection = this.selected; + } + } + setEnabled(enable) { + this.selectElement.disabled = !enable; + } + setOptionsList() { + this.selectList?.splice(0, this.selectList.length, this.options); + } + select(index) { + if (index >= 0 && index < this.options.length) { + this.selected = index; + } else if (index > this.options.length - 1) { + this.select(this.options.length - 1); + } else if (this.selected < 0) { + this.selected = 0; + } + this.selectElement.selectedIndex = this.selected; + if (!!this.options[this.selected] && !!this.options[this.selected].text) { + this.setTitle(this.options[this.selected].text); + } + } + setAriaLabel(label) { + this.selectBoxOptions.ariaLabel = label; + this.selectElement.setAttribute("aria-label", this.selectBoxOptions.ariaLabel); + } + focus() { + if (this.selectElement) { + this.selectElement.tabIndex = 0; + this.selectElement.focus(); + } + } + blur() { + if (this.selectElement) { + this.selectElement.tabIndex = -1; + this.selectElement.blur(); + } + } + setFocusable(focusable) { + this.selectElement.tabIndex = focusable ? 0 : -1; + } + render(container) { + this.container = container; + container.classList.add("select-container"); + container.appendChild(this.selectElement); + this.styleSelectElement(); + } + initStyleSheet() { + const content = []; + if (this.styles.listFocusBackground) { + content.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { background-color: ${this.styles.listFocusBackground} !important; }`); + } + if (this.styles.listFocusForeground) { + content.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { color: ${this.styles.listFocusForeground} !important; }`); + } + if (this.styles.decoratorRightForeground) { + content.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.focused) .option-decorator-right { color: ${this.styles.decoratorRightForeground}; }`); + } + if (this.styles.selectBackground && this.styles.selectBorder && this.styles.selectBorder !== this.styles.selectBackground) { + content.push(`.monaco-select-box-dropdown-container { border: 1px solid ${this.styles.selectBorder} } `); + content.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-top { border-top: 1px solid ${this.styles.selectBorder} } `); + content.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-bottom { border-bottom: 1px solid ${this.styles.selectBorder} } `); + } else if (this.styles.selectListBorder) { + content.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-top { border-top: 1px solid ${this.styles.selectListBorder} } `); + content.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-bottom { border-bottom: 1px solid ${this.styles.selectListBorder} } `); + } + if (this.styles.listHoverForeground) { + content.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { color: ${this.styles.listHoverForeground} !important; }`); + } + if (this.styles.listHoverBackground) { + content.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { background-color: ${this.styles.listHoverBackground} !important; }`); + } + if (this.styles.listFocusOutline) { + content.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { outline: 1.6px dotted ${this.styles.listFocusOutline} !important; outline-offset: -1.6px !important; }`); + } + if (this.styles.listHoverOutline) { + content.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { outline: 1.6px dashed ${this.styles.listHoverOutline} !important; outline-offset: -1.6px !important; }`); + } + content.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.option-disabled.focused { background-color: transparent !important; color: inherit !important; outline: none !important; }`); + content.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.option-disabled:hover { background-color: transparent !important; color: inherit !important; outline: none !important; }`); + this.styleElement.textContent = content.join("\n"); + } + styleSelectElement() { + const background = this.styles.selectBackground ?? ""; + const foreground2 = this.styles.selectForeground ?? ""; + const border = this.styles.selectBorder ?? ""; + this.selectElement.style.backgroundColor = background; + this.selectElement.style.color = foreground2; + this.selectElement.style.borderColor = border; + } + styleList() { + const background = this.styles.selectBackground ?? ""; + const listBackground = asCssValueWithDefault(this.styles.selectListBackground, background); + this.selectDropDownListContainer.style.backgroundColor = listBackground; + this.selectionDetailsPane.style.backgroundColor = listBackground; + const optionsBorder = this.styles.focusBorder ?? ""; + this.selectDropDownContainer.style.outlineColor = optionsBorder; + this.selectDropDownContainer.style.outlineOffset = "-1px"; + this.selectList.style(this.styles); + } + createOption(value, index, disabled) { + const option = document.createElement("option"); + option.value = value; + option.text = value; + option.disabled = !!disabled; + return option; + } + // ContextView dropdown methods + showSelectDropDown() { + this.selectionDetailsPane.innerText = ""; + if (!this.contextViewProvider || this._isVisible) { + return; + } + this.createSelectList(this.selectDropDownContainer); + this.setOptionsList(); + this.contextViewProvider.showContextView({ + getAnchor: () => this.selectElement, + render: (container) => this.renderSelectDropDown(container, true), + layout: () => { + this.layoutSelectDropDown(); + }, + onHide: () => { + this.selectDropDownContainer.classList.remove("visible"); + this.selectElement.classList.remove("synthetic-focus"); + }, + anchorPosition: this._dropDownPosition + }, this.selectBoxOptions.optionsAsChildren ? this.container : void 0); + this._isVisible = true; + this.hideSelectDropDown(false); + this.contextViewProvider.showContextView({ + getAnchor: () => this.selectElement, + render: (container) => this.renderSelectDropDown(container), + layout: () => this.layoutSelectDropDown(), + onHide: () => { + this.selectDropDownContainer.classList.remove("visible"); + this.selectElement.classList.remove("synthetic-focus"); + }, + anchorPosition: this._dropDownPosition + }, this.selectBoxOptions.optionsAsChildren ? this.container : void 0); + this._currentSelection = this.selected; + this._isVisible = true; + this.selectElement.setAttribute("aria-expanded", "true"); + } + hideSelectDropDown(focusSelect) { + if (!this.contextViewProvider || !this._isVisible) { + return; + } + this._isVisible = false; + this.selectElement.setAttribute("aria-expanded", "false"); + if (focusSelect) { + this.selectElement.focus(); + } + this.contextViewProvider.hideContextView(); + } + renderSelectDropDown(container, preLayoutPosition) { + container.appendChild(this.selectDropDownContainer); + this.layoutSelectDropDown(preLayoutPosition); + return { + dispose: () => { + this.selectDropDownContainer.remove(); + } + }; + } + // Iterate over detailed descriptions, find max height + measureMaxDetailsHeight() { + let maxDetailsPaneHeight = 0; + this.options.forEach((_option, index) => { + this.updateDetail(index); + if (this.selectionDetailsPane.offsetHeight > maxDetailsPaneHeight) { + maxDetailsPaneHeight = this.selectionDetailsPane.offsetHeight; + } + }); + return maxDetailsPaneHeight; + } + layoutSelectDropDown(preLayoutPosition) { + if (this._skipLayout) { + return false; + } + if (this.selectList) { + this.selectDropDownContainer.classList.add("visible"); + const window2 = getWindow(this.selectElement); + const selectPosition = getDomNodePagePosition(this.selectElement); + const styles = getWindow(this.selectElement).getComputedStyle(this.selectElement); + const verticalPadding = parseFloat(styles.getPropertyValue("--dropdown-padding-top")) + parseFloat(styles.getPropertyValue("--dropdown-padding-bottom")); + const maxSelectDropDownHeightBelow = window2.innerHeight - selectPosition.top - selectPosition.height - (this.selectBoxOptions.minBottomMargin || 0); + const maxSelectDropDownHeightAbove = selectPosition.top - _SelectBoxList.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN; + const selectWidth = this.selectElement.offsetWidth; + const selectMinWidth = this.setWidthControlElement(this.widthControlElement); + const selectOptimalWidth = Math.max(selectMinWidth, Math.round(selectWidth)).toString() + "px"; + this.selectDropDownContainer.style.width = selectOptimalWidth; + this.selectList.getHTMLElement().style.height = ""; + this.selectList.layout(); + let listHeight = this.selectList.contentHeight; + if (this._hasDetails && this._cachedMaxDetailsHeight === void 0) { + this._cachedMaxDetailsHeight = this.measureMaxDetailsHeight(); + } + const maxDetailsPaneHeight = this._hasDetails ? this._cachedMaxDetailsHeight : 0; + const minRequiredDropDownHeight = listHeight + verticalPadding + maxDetailsPaneHeight; + const maxVisibleOptionsBelow = Math.floor((maxSelectDropDownHeightBelow - verticalPadding - maxDetailsPaneHeight) / this.getHeight()); + const maxVisibleOptionsAbove = Math.floor((maxSelectDropDownHeightAbove - verticalPadding - maxDetailsPaneHeight) / this.getHeight()); + if (preLayoutPosition) { + if (selectPosition.top + selectPosition.height > window2.innerHeight - 22 || selectPosition.top < _SelectBoxList.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN || maxVisibleOptionsBelow < 1 && maxVisibleOptionsAbove < 1) { + return false; + } + if (maxVisibleOptionsBelow < _SelectBoxList.DEFAULT_MINIMUM_VISIBLE_OPTIONS && maxVisibleOptionsAbove > maxVisibleOptionsBelow && this.options.length > maxVisibleOptionsBelow) { + this._dropDownPosition = 1 /* ABOVE */; + this.selectDropDownListContainer.remove(); + this.selectionDetailsPane.remove(); + this.selectDropDownContainer.appendChild(this.selectionDetailsPane); + this.selectDropDownContainer.appendChild(this.selectDropDownListContainer); + this.selectionDetailsPane.classList.remove("border-top"); + this.selectionDetailsPane.classList.add("border-bottom"); + } else { + this._dropDownPosition = 0 /* BELOW */; + this.selectDropDownListContainer.remove(); + this.selectionDetailsPane.remove(); + this.selectDropDownContainer.appendChild(this.selectDropDownListContainer); + this.selectDropDownContainer.appendChild(this.selectionDetailsPane); + this.selectionDetailsPane.classList.remove("border-bottom"); + this.selectionDetailsPane.classList.add("border-top"); + } + return true; + } + if (selectPosition.top + selectPosition.height > window2.innerHeight - 22 || selectPosition.top < _SelectBoxList.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN || this._dropDownPosition === 0 /* BELOW */ && maxVisibleOptionsBelow < 1 || this._dropDownPosition === 1 /* ABOVE */ && maxVisibleOptionsAbove < 1) { + this.hideSelectDropDown(true); + return false; + } + if (this._dropDownPosition === 0 /* BELOW */) { + if (this._isVisible && maxVisibleOptionsBelow + maxVisibleOptionsAbove < 1) { + this.hideSelectDropDown(true); + return false; + } + if (minRequiredDropDownHeight > maxSelectDropDownHeightBelow) { + listHeight = maxVisibleOptionsBelow * this.getHeight(); + } + } else { + if (minRequiredDropDownHeight > maxSelectDropDownHeightAbove) { + listHeight = maxVisibleOptionsAbove * this.getHeight(); + } + } + this.selectList.layout(listHeight); + this.selectList.domFocus(); + if (this.selectList.length > 0) { + this.selectList.setFocus([this.selected || 0]); + this.selectList.reveal(this.selectList.getFocus()[0] || 0); + } + if (this._hasDetails) { + this.selectList.getHTMLElement().style.height = listHeight + verticalPadding + "px"; + this.selectDropDownContainer.style.height = ""; + } else { + this.selectDropDownContainer.style.height = listHeight + verticalPadding + "px"; + } + this.updateDetail(this.selected); + this.selectDropDownContainer.style.width = selectOptimalWidth; + this.selectDropDownListContainer.setAttribute("tabindex", "0"); + this.selectElement.classList.add("synthetic-focus"); + this.selectDropDownContainer.classList.add("synthetic-focus"); + return true; + } else { + return false; + } + } + setWidthControlElement(container) { + let elementWidth = 0; + if (container) { + let longest = 0; + let longestLength = 0; + this.options.forEach((option, index) => { + const detailLength = !!option.detail ? option.detail.length : 0; + const rightDecoratorLength = !!option.decoratorRight ? option.decoratorRight.length : 0; + const len = option.text.length + detailLength + rightDecoratorLength; + if (len > longestLength) { + longest = index; + longestLength = len; + } + }); + container.textContent = this.options[longest].text + (!!this.options[longest].decoratorRight ? this.options[longest].decoratorRight + " " : ""); + elementWidth = getTotalWidth(container); + } + return elementWidth; + } + createSelectList(parent) { + if (this.selectList) { + return; + } + this.selectDropDownListContainer = append(parent, $2(".select-box-dropdown-list-container")); + this.listRenderer = new SelectListRenderer(); + this.selectList = this._register(new List("SelectBoxCustom", this.selectDropDownListContainer, this, [this.listRenderer], { + useShadows: false, + verticalScrollMode: 3 /* Visible */, + keyboardSupport: false, + mouseSupport: false, + accessibilityProvider: { + getAriaLabel: (element) => { + let label = element.text; + if (element.detail) { + label += `. ${element.detail}`; + } + if (element.decoratorRight) { + label += `. ${element.decoratorRight}`; + } + if (element.description) { + label += `. ${element.description}`; + } + return label; + }, + getWidgetAriaLabel: () => localize({ key: "selectBox", comment: ["Behave like native select dropdown element."] }, "Select Box"), + getRole: () => isMacintosh ? "" : "option", + getWidgetRole: () => "listbox" + } + })); + if (this.selectBoxOptions.ariaLabel) { + this.selectList.ariaLabel = this.selectBoxOptions.ariaLabel; + } + const onKeyDown = this._register(new DomEmitter(this.selectDropDownListContainer, "keydown")); + const onSelectDropDownKeyDown = Event.chain( + onKeyDown.event, + ($4) => $4.filter(() => this.selectList.length > 0).map((e) => new StandardKeyboardEvent(e)) + ); + this._register(Event.chain(onSelectDropDownKeyDown, ($4) => $4.filter((e) => e.keyCode === 3 /* Enter */))(this.onEnter, this)); + this._register(Event.chain(onSelectDropDownKeyDown, ($4) => $4.filter((e) => e.keyCode === 2 /* Tab */))(this.onEnter, this)); + this._register(Event.chain(onSelectDropDownKeyDown, ($4) => $4.filter((e) => e.keyCode === 9 /* Escape */))(this.onEscape, this)); + this._register(Event.chain(onSelectDropDownKeyDown, ($4) => $4.filter((e) => e.keyCode === 16 /* UpArrow */))(this.onUpArrow, this)); + this._register(Event.chain(onSelectDropDownKeyDown, ($4) => $4.filter((e) => e.keyCode === 18 /* DownArrow */))(this.onDownArrow, this)); + this._register(Event.chain(onSelectDropDownKeyDown, ($4) => $4.filter((e) => e.keyCode === 12 /* PageDown */))(this.onPageDown, this)); + this._register(Event.chain(onSelectDropDownKeyDown, ($4) => $4.filter((e) => e.keyCode === 11 /* PageUp */))(this.onPageUp, this)); + this._register(Event.chain(onSelectDropDownKeyDown, ($4) => $4.filter((e) => e.keyCode === 14 /* Home */))(this.onHome, this)); + this._register(Event.chain(onSelectDropDownKeyDown, ($4) => $4.filter((e) => e.keyCode === 13 /* End */))(this.onEnd, this)); + this._register(Event.chain(onSelectDropDownKeyDown, ($4) => $4.filter((e) => e.keyCode >= 21 /* Digit0 */ && e.keyCode <= 56 /* KeyZ */ || e.keyCode >= 85 /* Semicolon */ && e.keyCode <= 113 /* NumpadDivide */))(this.onCharacter, this)); + this._register(addDisposableListener(this.selectList.getHTMLElement(), EventType.POINTER_UP, (e) => this.onPointerUp(e))); + this._register(this.selectList.onMouseOver((e) => typeof e.index !== "undefined" && this.selectList.setFocus([e.index]))); + this._register(this.selectList.onDidChangeFocus((e) => this.onListFocus(e))); + this._register(addDisposableListener(this.selectDropDownContainer, EventType.FOCUS_OUT, (e) => { + if (!this._isVisible || isAncestor(e.relatedTarget, this.selectDropDownContainer)) { + return; + } + this.onListBlur(); + })); + this.selectList.getHTMLElement().setAttribute("aria-label", this.selectBoxOptions.ariaLabel || ""); + this.selectList.getHTMLElement().setAttribute("aria-expanded", "true"); + this.styleList(); + } + // List methods + // List mouse controller - active exit, select option, fire onDidSelect if change, return focus to parent select + // Also takes in touchend events + onPointerUp(e) { + if (!this.selectList.length) { + return; + } + EventHelper.stop(e); + const target = e.target; + if (!target) { + return; + } + if (target.classList.contains("slider")) { + return; + } + const listRowElement = target.closest(".monaco-list-row"); + if (!listRowElement) { + return; + } + const index = Number(listRowElement.getAttribute("data-index")); + const disabled = listRowElement.classList.contains("option-disabled"); + if (index >= 0 && index < this.options.length && !disabled) { + this.selected = index; + this.select(this.selected); + this.selectList.setFocus([this.selected]); + this.selectList.reveal(this.selectList.getFocus()[0]); + if (this.selected !== this._currentSelection) { + this._currentSelection = this.selected; + this._onDidSelect.fire({ + index: this.selectElement.selectedIndex, + selected: this.options[this.selected].text + }); + if (!!this.options[this.selected] && !!this.options[this.selected].text) { + this.setTitle(this.options[this.selected].text); + } + } + this.hideSelectDropDown(true); + } + } + // List Exit - passive - implicit no selection change, hide drop-down + onListBlur() { + if (this._sticky) { + return; + } + if (this.selected !== this._currentSelection) { + this.select(this._currentSelection); + } + this.hideSelectDropDown(false); + } + renderDescriptionMarkdown(text2, actionHandler) { + const cleanRenderedMarkdown = (element) => { + for (let i = 0; i < element.childNodes.length; i++) { + const child = element.childNodes.item(i); + const tagName = child.tagName && child.tagName.toLowerCase(); + if (tagName === "img") { + child.remove(); + } else { + cleanRenderedMarkdown(child); + } + } + }; + const rendered = renderMarkdown({ value: text2, supportThemeIcons: true }, { actionHandler }); + rendered.element.classList.add("select-box-description-markdown"); + cleanRenderedMarkdown(rendered.element); + return rendered.element; + } + // List Focus Change - passive - update details pane with newly focused element's data + onListFocus(e) { + if (!this._isVisible || !this._hasDetails) { + return; + } + this.updateDetail(e.indexes[0]); + } + updateDetail(selectedIndex) { + this.selectionDetailsPane.innerText = ""; + const option = this.options[selectedIndex]; + const description = option?.description ?? ""; + const descriptionIsMarkdown = option?.descriptionIsMarkdown ?? false; + if (description) { + if (descriptionIsMarkdown) { + const actionHandler = option.descriptionMarkdownActionHandler; + this.selectionDetailsPane.appendChild(this.renderDescriptionMarkdown(description, actionHandler)); + } else { + this.selectionDetailsPane.innerText = description; + } + this.selectionDetailsPane.style.display = "block"; + } else { + this.selectionDetailsPane.style.display = "none"; + } + this._skipLayout = true; + this.contextViewProvider.layout(); + this._skipLayout = false; + } + // List keyboard controller + // List exit - active - hide ContextView dropdown, reset selection, return focus to parent select + onEscape(e) { + EventHelper.stop(e); + this.select(this._currentSelection); + this.hideSelectDropDown(true); + } + // List exit - active - hide ContextView dropdown, return focus to parent select, fire onDidSelect if change + onEnter(e) { + EventHelper.stop(e); + if (this.selected !== this._currentSelection) { + this._currentSelection = this.selected; + this._onDidSelect.fire({ + index: this.selectElement.selectedIndex, + selected: this.options[this.selected].text + }); + if (!!this.options[this.selected] && !!this.options[this.selected].text) { + this.setTitle(this.options[this.selected].text); + } + } + this.hideSelectDropDown(true); + } + // List navigation - have to handle a disabled option (jump over) + onDownArrow(e) { + if (this.selected < this.options.length - 1) { + EventHelper.stop(e, true); + const nextOptionDisabled = this.options[this.selected + 1].isDisabled; + if (nextOptionDisabled && this.options.length > this.selected + 2) { + this.selected += 2; + } else if (nextOptionDisabled) { + return; + } else { + this.selected++; + } + this.select(this.selected); + this.selectList.setFocus([this.selected]); + this.selectList.reveal(this.selectList.getFocus()[0]); + } + } + onUpArrow(e) { + if (this.selected > 0) { + EventHelper.stop(e, true); + const previousOptionDisabled = this.options[this.selected - 1].isDisabled; + if (previousOptionDisabled && this.selected > 1) { + this.selected -= 2; + } else { + this.selected--; + } + this.select(this.selected); + this.selectList.setFocus([this.selected]); + this.selectList.reveal(this.selectList.getFocus()[0]); + } + } + onPageUp(e) { + EventHelper.stop(e); + this.selectList.focusPreviousPage(); + setTimeout(() => { + this.selected = this.selectList.getFocus()[0]; + if (this.options[this.selected].isDisabled && this.selected < this.options.length - 1) { + this.selected++; + this.selectList.setFocus([this.selected]); + } + this.selectList.reveal(this.selected); + this.select(this.selected); + }, 1); + } + onPageDown(e) { + EventHelper.stop(e); + this.selectList.focusNextPage(); + setTimeout(() => { + this.selected = this.selectList.getFocus()[0]; + if (this.options[this.selected].isDisabled && this.selected > 0) { + this.selected--; + this.selectList.setFocus([this.selected]); + } + this.selectList.reveal(this.selected); + this.select(this.selected); + }, 1); + } + onHome(e) { + EventHelper.stop(e); + if (this.options.length < 2) { + return; + } + this.selected = 0; + if (this.options[this.selected].isDisabled && this.selected > 1) { + this.selected++; + } + this.selectList.setFocus([this.selected]); + this.selectList.reveal(this.selected); + this.select(this.selected); + } + onEnd(e) { + EventHelper.stop(e); + if (this.options.length < 2) { + return; + } + this.selected = this.options.length - 1; + if (this.options[this.selected].isDisabled && this.selected > 1) { + this.selected--; + } + this.selectList.setFocus([this.selected]); + this.selectList.reveal(this.selected); + this.select(this.selected); + } + // Mimic option first character navigation of native select + onCharacter(e) { + const ch = KeyCodeUtils.toString(e.keyCode); + let optionIndex = -1; + for (let i = 0; i < this.options.length - 1; i++) { + optionIndex = (i + this.selected + 1) % this.options.length; + if (this.options[optionIndex].text.charAt(0).toUpperCase() === ch && !this.options[optionIndex].isDisabled) { + this.select(optionIndex); + this.selectList.setFocus([optionIndex]); + this.selectList.reveal(this.selectList.getFocus()[0]); + EventHelper.stop(e); + break; + } + } + } + dispose() { + this.hideSelectDropDown(false); + super.dispose(); + } +}; + +// ../../../../../base/browser/ui/selectBox/selectBoxNative.ts +var SelectBoxNative = class extends Disposable { + constructor(options2, selected, styles, selectBoxOptions) { + super(); + this.selected = 0; + this.selectBoxOptions = selectBoxOptions || /* @__PURE__ */ Object.create(null); + this.options = []; + this.selectElement = document.createElement("select"); + this.selectElement.className = "monaco-select-box"; + if (typeof this.selectBoxOptions.ariaLabel === "string") { + this.selectElement.setAttribute("aria-label", this.selectBoxOptions.ariaLabel); + } + if (typeof this.selectBoxOptions.ariaDescription === "string") { + this.selectElement.setAttribute("aria-description", this.selectBoxOptions.ariaDescription); + } + this._onDidSelect = this._register(new Emitter()); + this.styles = styles; + this.registerListeners(); + this.setOptions(options2, selected); + } + registerListeners() { + this._register(Gesture.addTarget(this.selectElement)); + [EventType2.Tap].forEach((eventType) => { + this._register(addDisposableListener(this.selectElement, eventType, (e) => { + this.selectElement.focus(); + })); + }); + this._register(addStandardDisposableListener(this.selectElement, "click", (e) => { + EventHelper.stop(e, true); + })); + this._register(addStandardDisposableListener(this.selectElement, "change", (e) => { + this.selectElement.title = e.target.value; + this._onDidSelect.fire({ + index: e.target.selectedIndex, + selected: e.target.value + }); + })); + this._register(addStandardDisposableListener(this.selectElement, "keydown", (e) => { + let showSelect = false; + if (isMacintosh) { + if (e.keyCode === 18 /* DownArrow */ || e.keyCode === 16 /* UpArrow */ || e.keyCode === 10 /* Space */) { + showSelect = true; + } + } else { + if (e.keyCode === 18 /* DownArrow */ && e.altKey || e.keyCode === 10 /* Space */ || e.keyCode === 3 /* Enter */) { + showSelect = true; + } + } + if (showSelect) { + e.stopPropagation(); + } + })); + } + get onDidSelect() { + return this._onDidSelect.event; + } + setOptions(options2, selected) { + if (!this.options || !equals(this.options, options2)) { + this.options = options2; + this.selectElement.options.length = 0; + this.options.forEach((option, index) => { + this.selectElement.add(this.createOption(option.text, index, option.isDisabled)); + }); + } + if (selected !== void 0) { + this.select(selected); + } + } + select(index) { + if (this.options.length === 0) { + this.selected = 0; + } else if (index >= 0 && index < this.options.length) { + this.selected = index; + } else if (index > this.options.length - 1) { + this.select(this.options.length - 1); + } else if (this.selected < 0) { + this.selected = 0; + } + this.selectElement.selectedIndex = this.selected; + if (this.selected < this.options.length && typeof this.options[this.selected].text === "string") { + this.selectElement.title = this.options[this.selected].text; + } else { + this.selectElement.title = ""; + } + } + setAriaLabel(label) { + this.selectBoxOptions.ariaLabel = label; + this.selectElement.setAttribute("aria-label", label); + } + focus() { + if (this.selectElement) { + this.selectElement.tabIndex = 0; + this.selectElement.focus(); + } + } + blur() { + if (this.selectElement) { + this.selectElement.tabIndex = -1; + this.selectElement.blur(); + } + } + setEnabled(enable) { + this.selectElement.disabled = !enable; + } + setFocusable(focusable) { + this.selectElement.tabIndex = focusable ? 0 : -1; + } + render(container) { + container.classList.add("select-container"); + container.appendChild(this.selectElement); + this.setOptions(this.options, this.selected); + this.applyStyles(); + } + style(styles) { + this.styles = styles; + this.applyStyles(); + } + applyStyles() { + if (this.selectElement) { + this.selectElement.style.backgroundColor = this.styles.selectBackground ?? ""; + this.selectElement.style.color = this.styles.selectForeground ?? ""; + this.selectElement.style.borderColor = this.styles.selectBorder ?? ""; + } + } + createOption(value, index, disabled) { + const option = document.createElement("option"); + option.value = value; + option.text = value; + option.disabled = !!disabled; + return option; + } +}; +var SelectBox = class extends Widget { + constructor(options2, selected, contextViewProvider, styles, selectBoxOptions) { + super(); + if (isMacintosh && !selectBoxOptions?.useCustomDrawn) { + this.selectBoxDelegate = new SelectBoxNative(options2, selected, styles, selectBoxOptions); + } else { + this.selectBoxDelegate = new SelectBoxList(options2, selected, contextViewProvider, styles, selectBoxOptions); + } + this._register(this.selectBoxDelegate); + } + // Public SelectBox Methods - routed through delegate interface + get onDidSelect() { + return this.selectBoxDelegate.onDidSelect; + } + setOptions(options2, selected) { + this.selectBoxDelegate.setOptions(options2, selected); + } + select(index) { + this.selectBoxDelegate.select(index); + } + setAriaLabel(label) { + this.selectBoxDelegate.setAriaLabel(label); + } + focus() { + this.selectBoxDelegate.focus(); + } + blur() { + this.selectBoxDelegate.blur(); + } + setFocusable(focusable) { + this.selectBoxDelegate.setFocusable(focusable); + } + setEnabled(enabled) { + this.selectBoxDelegate.setEnabled(enabled); + } + render(container) { + this.selectBoxDelegate.render(container); + } +}; + +// ../../../../../base/browser/ui/actionbar/actionViewItems.ts +var BaseActionViewItem = class extends Disposable { + constructor(context, action, options2 = {}) { + super(); + this.options = options2; + this._context = context || this; + this._action = action; + if (action instanceof Action) { + this._register(action.onDidChange((event) => { + if (!this.element) { + return; + } + this.handleActionChangeEvent(event); + })); + } + } + get action() { + return this._action; + } + handleActionChangeEvent(event) { + if (event.enabled !== void 0) { + this.updateEnabled(); + } + if (event.checked !== void 0) { + this.updateChecked(); + } + if (event.class !== void 0) { + this.updateClass(); + } + if (event.label !== void 0) { + this.updateLabel(); + this.updateTooltip(); + } + if (event.tooltip !== void 0) { + this.updateTooltip(); + } + } + get actionRunner() { + if (!this._actionRunner) { + this._actionRunner = this._register(new ActionRunner()); + } + return this._actionRunner; + } + set actionRunner(actionRunner) { + this._actionRunner = actionRunner; + } + isEnabled() { + return this._action.enabled; + } + setActionContext(newContext) { + this._context = newContext; + } + render(container) { + const element = this.element = container; + this._register(Gesture.addTarget(container)); + const enableDragging = this.options && this.options.draggable; + if (enableDragging) { + container.draggable = true; + if (isFirefox2) { + this._register(addDisposableListener(container, EventType.DRAG_START, (e) => e.dataTransfer?.setData(DataTransfers.TEXT, this._action.label))); + } + } + this._register(addDisposableListener(element, EventType2.Tap, (e) => this.onClick(e, true))); + this._register(addDisposableListener(element, EventType.MOUSE_DOWN, (e) => { + if (!enableDragging) { + EventHelper.stop(e, true); + } + if (this._action.enabled && e.button === 0) { + element.classList.add("active"); + } + })); + if (isMacintosh) { + this._register(addDisposableListener(element, EventType.CONTEXT_MENU, (e) => { + if (e.button === 0 && e.ctrlKey === true) { + this.onClick(e); + } + })); + } + this._register(addDisposableListener(element, EventType.CLICK, (e) => { + EventHelper.stop(e, true); + if (!(this.options && this.options.isMenu)) { + this.onClick(e); + } + })); + this._register(addDisposableListener(element, EventType.DBLCLICK, (e) => { + EventHelper.stop(e, true); + })); + [EventType.MOUSE_UP, EventType.MOUSE_OUT].forEach((event) => { + this._register(addDisposableListener(element, event, (e) => { + EventHelper.stop(e); + element.classList.remove("active"); + })); + }); + } + onClick(event, preserveFocus = false) { + EventHelper.stop(event, true); + const context = isUndefinedOrNull(this._context) ? this.options?.useEventAsContext ? event : { preserveFocus } : this._context; + this.actionRunner.run(this._action, context); + } + // Only set the tabIndex on the element once it is about to get focused + // That way this element wont be a tab stop when it is not needed #106441 + focus() { + if (this.element) { + this.element.tabIndex = 0; + this.element.focus(); + this.element.classList.add("focused"); + } + } + isFocused() { + return !!this.element?.classList.contains("focused"); + } + blur() { + if (this.element) { + this.element.blur(); + this.element.tabIndex = -1; + this.element.classList.remove("focused"); + } + } + setFocusable(focusable) { + if (this.element) { + this.element.tabIndex = focusable ? 0 : -1; + } + } + get trapsArrowNavigation() { + return false; + } + updateEnabled() { + } + updateLabel() { + } + getClass() { + return this.action.class; + } + getTooltip() { + return this.action.tooltip; + } + updateTooltip() { + if (!this.element) { + return; + } + const title = this.getTooltip() ?? ""; + this.updateAriaLabel(); + if (this.options.hoverDelegate?.showNativeHover) { + this.element.title = title; + } else { + if (!this.customHover && title !== "") { + const hoverDelegate = this.options.hoverDelegate ?? getDefaultHoverDelegate("element"); + this.customHover = this._store.add(getBaseLayerHoverDelegate().setupManagedHover(hoverDelegate, this.element, title)); + } else if (this.customHover) { + this.customHover.update(title); + } + } + } + updateAriaLabel() { + if (this.element) { + const title = this.getTooltip() ?? ""; + this.element.setAttribute("aria-label", title); + } + } + updateClass() { + } + updateChecked() { + } + dispose() { + if (this.element) { + this.element.remove(); + this.element = void 0; + } + this._context = void 0; + super.dispose(); + } +}; +var ActionViewItem = class extends BaseActionViewItem { + constructor(context, action, options2) { + super(context, action, options2); + this.options = options2; + this.options.icon = options2.icon !== void 0 ? options2.icon : false; + this.options.label = options2.label !== void 0 ? options2.label : true; + this.cssClass = ""; + } + render(container) { + super.render(container); + assertType(this.element); + const label = document.createElement("a"); + label.classList.add("action-label"); + label.setAttribute("role", this.getDefaultAriaRole()); + this.label = label; + this.element.appendChild(label); + if (this.options.label && this.options.keybinding) { + const kbLabel = document.createElement("span"); + kbLabel.classList.add("keybinding"); + kbLabel.textContent = this.options.keybinding; + this.element.appendChild(kbLabel); + } + this.updateClass(); + this.updateLabel(); + this.updateTooltip(); + this.updateEnabled(); + this.updateChecked(); + } + getDefaultAriaRole() { + if (this._action.id === Separator.ID) { + return "presentation"; + } else { + if (this.options.isMenu) { + return "menuitem"; + } else if (this.options.isTabList) { + return "tab"; + } else { + return "button"; + } + } + } + // Only set the tabIndex on the element once it is about to get focused + // That way this element wont be a tab stop when it is not needed #106441 + focus() { + if (this.label) { + this.label.tabIndex = 0; + this.label.focus(); + } + } + isFocused() { + return !!this.label && this.label?.tabIndex === 0; + } + blur() { + if (this.label) { + this.label.tabIndex = -1; + } + } + setFocusable(focusable) { + if (this.label) { + this.label.tabIndex = focusable ? 0 : -1; + } + } + updateLabel() { + if (this.options.label && this.label) { + this.label.textContent = this.action.label; + } + } + getTooltip() { + let title = null; + if (this.action.tooltip) { + title = this.action.tooltip; + } else if (!this.options.label && this.action.label && this.options.icon) { + title = this.action.label; + if (this.options.keybinding) { + title = localize({ key: "titleLabel", comment: ["action title", "action keybinding"] }, "{0} ({1})", title, this.options.keybinding); + } + } + return title ?? void 0; + } + updateClass() { + if (this.cssClass && this.label) { + this.label.classList.remove(...this.cssClass.split(" ")); + } + if (this.options.icon) { + this.cssClass = this.getClass(); + if (this.label) { + this.label.classList.add("codicon"); + if (this.cssClass) { + this.label.classList.add(...this.cssClass.split(" ")); + } + } + this.updateEnabled(); + } else { + this.label?.classList.remove("codicon"); + } + } + updateEnabled() { + if (this.action.enabled) { + if (this.label) { + this.label.removeAttribute("aria-disabled"); + this.label.classList.remove("disabled"); + } + this.element?.classList.remove("disabled"); + } else { + if (this.label) { + this.label.setAttribute("aria-disabled", "true"); + this.label.classList.add("disabled"); + } + this.element?.classList.add("disabled"); + } + } + updateAriaLabel() { + if (this.label) { + const title = this.getTooltip() ?? ""; + this.label.setAttribute("aria-label", title); + } + } + updateChecked() { + if (this.label) { + if (this.action.checked !== void 0) { + this.label.classList.toggle("checked", this.action.checked); + if (this.options.isTabList) { + this.label.setAttribute("aria-selected", this.action.checked ? "true" : "false"); + } else { + this.label.setAttribute("aria-checked", this.action.checked ? "true" : "false"); + this.label.setAttribute("role", "checkbox"); + } + } else { + this.label.classList.remove("checked"); + this.label.removeAttribute(this.options.isTabList ? "aria-selected" : "aria-checked"); + this.label.setAttribute("role", this.getDefaultAriaRole()); + } + } + } +}; +var SelectActionViewItem = class extends BaseActionViewItem { + constructor(ctx, action, options2, selected, contextViewProvider, styles, selectBoxOptions) { + super(ctx, action); + this.selectBox = new SelectBox(options2, selected, contextViewProvider, styles, selectBoxOptions); + this.selectBox.setFocusable(false); + this._register(this.selectBox); + this.registerListeners(); + } + setOptions(options2, selected) { + this.selectBox.setOptions(options2, selected); + } + select(index) { + this.selectBox.select(index); + } + registerListeners() { + this._register(this.selectBox.onDidSelect((e) => this.runAction(e.selected, e.index))); + } + runAction(option, index) { + this.actionRunner.run(this._action, this.getActionContext(option, index)); + } + getActionContext(option, index) { + return option; + } + setFocusable(focusable) { + this.selectBox.setFocusable(focusable); + } + focus() { + this.selectBox?.focus(); + } + blur() { + this.selectBox?.blur(); + } + render(container) { + this.selectBox.render(container); + } +}; + +// ../../../../../base/browser/ui/actionbar/actionbar.ts +var ActionBar = class extends Disposable { + constructor(container, options2 = {}) { + super(); + this._actionRunnerDisposables = this._register(new DisposableStore()); + this.viewItemDisposables = this._register(new DisposableMap()); + // Trigger Key Tracking + this.triggerKeyDown = false; + this.focusable = true; + this._onDidBlur = this._register(new Emitter()); + this.onDidBlur = this._onDidBlur.event; + this._onDidCancel = this._register(new Emitter({ onWillAddFirstListener: () => this.cancelHasListener = true })); + this.onDidCancel = this._onDidCancel.event; + this.cancelHasListener = false; + this._onDidRun = this._register(new Emitter()); + this.onDidRun = this._onDidRun.event; + this._onWillRun = this._register(new Emitter()); + this.onWillRun = this._onWillRun.event; + this.options = options2; + this._context = options2.context ?? null; + this._orientation = this.options.orientation ?? 0 /* HORIZONTAL */; + this._triggerKeys = { + keyDown: this.options.triggerKeys?.keyDown ?? false, + keys: this.options.triggerKeys?.keys ?? [3 /* Enter */, 10 /* Space */] + }; + this._hoverDelegate = options2.hoverDelegate ?? this._register(createInstantHoverDelegate()); + if (this.options.actionRunner) { + this._actionRunner = this.options.actionRunner; + } else { + this._actionRunner = new ActionRunner(); + this._actionRunnerDisposables.add(this._actionRunner); + } + this._actionRunnerDisposables.add(this._actionRunner.onDidRun((e) => this._onDidRun.fire(e))); + this._actionRunnerDisposables.add(this._actionRunner.onWillRun((e) => this._onWillRun.fire(e))); + this.viewItems = []; + this.focusedItem = void 0; + this.domNode = document.createElement("div"); + this.domNode.className = "monaco-action-bar"; + let previousKeys; + let nextKeys; + switch (this._orientation) { + case 0 /* HORIZONTAL */: + previousKeys = [15 /* LeftArrow */]; + nextKeys = [17 /* RightArrow */]; + break; + case 1 /* VERTICAL */: + previousKeys = [16 /* UpArrow */]; + nextKeys = [18 /* DownArrow */]; + this.domNode.className += " vertical"; + break; + } + this._register(addDisposableListener(this.domNode, EventType.KEY_DOWN, (e) => { + const event = new StandardKeyboardEvent(e); + let eventHandled = true; + const focusedItem = typeof this.focusedItem === "number" ? this.viewItems[this.focusedItem] : void 0; + if (previousKeys && (event.equals(previousKeys[0]) || event.equals(previousKeys[1]))) { + eventHandled = this.focusPrevious(); + } else if (nextKeys && (event.equals(nextKeys[0]) || event.equals(nextKeys[1]))) { + eventHandled = this.focusNext(); + } else if (event.equals(9 /* Escape */) && this.cancelHasListener) { + this._onDidCancel.fire(); + } else if (event.equals(14 /* Home */)) { + eventHandled = this.focusFirst(); + } else if (event.equals(13 /* End */)) { + eventHandled = this.focusLast(); + } else if (event.equals(2 /* Tab */) && focusedItem instanceof BaseActionViewItem && focusedItem.trapsArrowNavigation) { + eventHandled = this.focusNext(void 0, true); + } else if (this.isTriggerKeyEvent(event)) { + if (this._triggerKeys.keyDown) { + this.doTrigger(event); + } else { + this.triggerKeyDown = true; + } + } else { + eventHandled = false; + } + if (eventHandled) { + event.preventDefault(); + event.stopPropagation(); + } + })); + this._register(addDisposableListener(this.domNode, EventType.KEY_UP, (e) => { + const event = new StandardKeyboardEvent(e); + if (this.isTriggerKeyEvent(event)) { + if (!this._triggerKeys.keyDown && this.triggerKeyDown) { + this.triggerKeyDown = false; + this.doTrigger(event); + } + event.preventDefault(); + event.stopPropagation(); + } else if (event.equals(2 /* Tab */) || event.equals(1024 /* Shift */ | 2 /* Tab */) || event.equals(16 /* UpArrow */) || event.equals(18 /* DownArrow */) || event.equals(15 /* LeftArrow */) || event.equals(17 /* RightArrow */)) { + this.updateFocusedItem(); + } + })); + this.focusTracker = this._register(trackFocus(this.domNode)); + this._register(this.focusTracker.onDidBlur(() => { + if (getActiveElement() === this.domNode || !isAncestor(getActiveElement(), this.domNode)) { + this._onDidBlur.fire(); + this.previouslyFocusedItem = this.focusedItem; + this.focusedItem = void 0; + this.triggerKeyDown = false; + } + })); + this._register(this.focusTracker.onDidFocus(() => this.updateFocusedItem())); + this.actionsList = document.createElement("ul"); + this.actionsList.className = "actions-container"; + if (this.options.highlightToggledItems) { + this.actionsList.classList.add("highlight-toggled"); + } + this.actionsList.setAttribute("role", this.options.ariaRole || "toolbar"); + if (this.options.ariaLabel) { + this.actionsList.setAttribute("aria-label", this.options.ariaLabel); + } + this.domNode.appendChild(this.actionsList); + container.appendChild(this.domNode); + } + refreshRole() { + if (this.length() >= 1) { + this.actionsList.setAttribute("role", this.options.ariaRole || "toolbar"); + } else { + this.actionsList.setAttribute("role", "presentation"); + } + } + setAriaLabel(label) { + if (label) { + this.actionsList.setAttribute("aria-label", label); + } else { + this.actionsList.removeAttribute("aria-label"); + } + } + // Some action bars should not be focusable at times + // When an action bar is not focusable make sure to make all the elements inside it not focusable + // When an action bar is focusable again, make sure the first item can be focused + setFocusable(focusable) { + this.focusable = focusable; + if (this.focusable) { + const firstEnabled = this.viewItems.find((vi) => vi instanceof BaseActionViewItem && vi.isEnabled()); + if (firstEnabled instanceof BaseActionViewItem) { + firstEnabled.setFocusable(true); + } + } else { + this.viewItems.forEach((vi) => { + if (vi instanceof BaseActionViewItem) { + vi.setFocusable(false); + } + }); + } + } + isTriggerKeyEvent(event) { + let ret = false; + this._triggerKeys.keys.forEach((keyCode) => { + ret = ret || event.equals(keyCode); + }); + return ret; + } + updateFocusedItem() { + for (let i = 0; i < this.actionsList.children.length; i++) { + const elem = this.actionsList.children[i]; + if (isAncestor(getActiveElement(), elem)) { + this.focusedItem = i; + this.viewItems[this.focusedItem]?.showHover?.(); + break; + } + } + } + get context() { + return this._context; + } + set context(context) { + this._context = context; + this.viewItems.forEach((i) => i.setActionContext(context)); + } + get actionRunner() { + return this._actionRunner; + } + set actionRunner(actionRunner) { + this._actionRunner = actionRunner; + this._actionRunnerDisposables.clear(); + this._actionRunnerDisposables.add(this._actionRunner.onDidRun((e) => this._onDidRun.fire(e))); + this._actionRunnerDisposables.add(this._actionRunner.onWillRun((e) => this._onWillRun.fire(e))); + this.viewItems.forEach((item) => item.actionRunner = actionRunner); + } + getContainer() { + return this.domNode; + } + hasAction(action) { + return this.viewItems.findIndex((candidate) => candidate.action.id === action.id) !== -1; + } + getAction(indexOrElement) { + if (typeof indexOrElement === "number") { + return this.viewItems[indexOrElement]?.action; + } + if (isHTMLElement(indexOrElement)) { + while (indexOrElement.parentElement !== this.actionsList) { + if (!indexOrElement.parentElement) { + return void 0; + } + indexOrElement = indexOrElement.parentElement; + } + for (let i = 0; i < this.actionsList.childNodes.length; i++) { + if (this.actionsList.childNodes[i] === indexOrElement) { + return this.viewItems[i].action; + } + } + } + return void 0; + } + push(arg, options2 = {}) { + const actions = Array.isArray(arg) ? arg : [arg]; + let index = isNumber(options2.index) ? options2.index : null; + actions.forEach((action) => { + const actionViewItemElement = document.createElement("li"); + actionViewItemElement.className = "action-item"; + actionViewItemElement.setAttribute("role", "presentation"); + let item; + const viewItemOptions = { hoverDelegate: this._hoverDelegate, ...options2, isTabList: this.options.ariaRole === "tablist" }; + if (this.options.actionViewItemProvider) { + item = this.options.actionViewItemProvider(action, viewItemOptions); + } + if (!item) { + item = new ActionViewItem(this.context, action, viewItemOptions); + } + if (!this.options.allowContextMenu) { + this.viewItemDisposables.set(item, addDisposableListener(actionViewItemElement, EventType.CONTEXT_MENU, (e) => { + EventHelper.stop(e, true); + })); + } + item.actionRunner = this._actionRunner; + item.setActionContext(this.context); + item.render(actionViewItemElement); + if (this.focusable && item instanceof BaseActionViewItem && this.viewItems.length === 0) { + item.setFocusable(true); + } + if (index === null || index < 0 || index >= this.actionsList.children.length) { + this.actionsList.appendChild(actionViewItemElement); + this.viewItems.push(item); + } else { + this.actionsList.insertBefore(actionViewItemElement, this.actionsList.children[index]); + this.viewItems.splice(index, 0, item); + index++; + } + }); + if (typeof this.focusedItem === "number") { + this.focus(this.focusedItem); + } + this.refreshRole(); + } + getWidth(index) { + if (index >= 0 && index < this.actionsList.children.length) { + const item = this.actionsList.children.item(index); + if (item) { + return item.clientWidth; + } + } + return 0; + } + getHeight(index) { + if (index >= 0 && index < this.actionsList.children.length) { + const item = this.actionsList.children.item(index); + if (item) { + return item.clientHeight; + } + } + return 0; + } + pull(index) { + if (index >= 0 && index < this.viewItems.length) { + this.actionsList.childNodes[index].remove(); + this.viewItemDisposables.deleteAndDispose(this.viewItems[index]); + dispose(this.viewItems.splice(index, 1)); + this.refreshRole(); + } + } + clear() { + if (this.isEmpty()) { + return; + } + this.viewItems = dispose(this.viewItems); + this.viewItemDisposables.clearAndDisposeAll(); + clearNode(this.actionsList); + this.refreshRole(); + } + length() { + return this.viewItems.length; + } + isEmpty() { + return this.viewItems.length === 0; + } + focus(arg) { + let selectFirst = false; + let index = void 0; + if (arg === void 0) { + selectFirst = true; + } else if (typeof arg === "number") { + index = arg; + } else if (typeof arg === "boolean") { + selectFirst = arg; + } + if (selectFirst && typeof this.focusedItem === "undefined") { + const firstEnabled = this.viewItems.findIndex((item) => item.isEnabled()); + this.focusedItem = firstEnabled === -1 ? void 0 : firstEnabled; + this.updateFocus(void 0, void 0, true); + } else { + if (index !== void 0) { + this.focusedItem = index; + } + this.updateFocus(void 0, void 0, true); + } + } + focusFirst() { + this.focusedItem = this.length() - 1; + return this.focusNext(true); + } + focusLast() { + this.focusedItem = 0; + return this.focusPrevious(true); + } + focusNext(forceLoop, forceFocus) { + if (typeof this.focusedItem === "undefined") { + this.focusedItem = this.viewItems.length - 1; + } else if (this.viewItems.length <= 1) { + return false; + } + const startIndex = this.focusedItem; + let item; + do { + if (!forceLoop && this.options.preventLoopNavigation && this.focusedItem + 1 >= this.viewItems.length) { + this.focusedItem = startIndex; + return false; + } + this.focusedItem = (this.focusedItem + 1) % this.viewItems.length; + item = this.viewItems[this.focusedItem]; + } while (this.focusedItem !== startIndex && (this.options.focusOnlyEnabledItems && !item.isEnabled() || item.action.id === Separator.ID)); + this.updateFocus(void 0, void 0, forceFocus); + return true; + } + focusPrevious(forceLoop) { + if (typeof this.focusedItem === "undefined") { + this.focusedItem = 0; + } else if (this.viewItems.length <= 1) { + return false; + } + const startIndex = this.focusedItem; + let item; + do { + this.focusedItem = this.focusedItem - 1; + if (this.focusedItem < 0) { + if (!forceLoop && this.options.preventLoopNavigation) { + this.focusedItem = startIndex; + return false; + } + this.focusedItem = this.viewItems.length - 1; + } + item = this.viewItems[this.focusedItem]; + } while (this.focusedItem !== startIndex && (this.options.focusOnlyEnabledItems && !item.isEnabled() || item.action.id === Separator.ID)); + this.updateFocus(true); + return true; + } + updateFocus(fromRight, preventScroll, forceFocus = false) { + if (typeof this.focusedItem === "undefined") { + this.actionsList.focus({ preventScroll }); + } + if (this.previouslyFocusedItem !== void 0 && this.previouslyFocusedItem !== this.focusedItem) { + this.viewItems[this.previouslyFocusedItem]?.blur(); + } + const actionViewItem = this.focusedItem !== void 0 ? this.viewItems[this.focusedItem] : void 0; + if (actionViewItem) { + let focusItem = true; + if (!isFunction(actionViewItem.focus)) { + focusItem = false; + } + if (this.options.focusOnlyEnabledItems && isFunction(actionViewItem.isEnabled) && !actionViewItem.isEnabled()) { + focusItem = false; + } + if (actionViewItem.action.id === Separator.ID) { + focusItem = false; + } + if (!focusItem) { + this.actionsList.focus({ preventScroll }); + this.previouslyFocusedItem = void 0; + } else if (forceFocus || this.previouslyFocusedItem !== this.focusedItem) { + actionViewItem.focus(fromRight); + this.previouslyFocusedItem = this.focusedItem; + } + if (focusItem) { + actionViewItem.showHover?.(); + } + } + } + doTrigger(event) { + if (typeof this.focusedItem === "undefined") { + return; + } + const actionViewItem = this.viewItems[this.focusedItem]; + if (actionViewItem instanceof BaseActionViewItem) { + const context = actionViewItem._context === null || actionViewItem._context === void 0 ? event : actionViewItem._context; + this.run(actionViewItem._action, context); + } + } + async run(action, context) { + await this._actionRunner.run(action, context); + } + dispose() { + this._context = void 0; + this.viewItems = dispose(this.viewItems); + this.getContainer().remove(); + super.dispose(); + } +}; +function prepareActions(actions) { + if (!actions.length) { + return actions; + } + let firstIndexOfAction = -1; + for (let i = 0; i < actions.length; i++) { + if (actions[i].id === Separator.ID) { + continue; + } + firstIndexOfAction = i; + break; + } + if (firstIndexOfAction === -1) { + return []; + } + actions = actions.slice(firstIndexOfAction); + for (let h2 = actions.length - 1; h2 >= 0; h2--) { + const isSeparator = actions[h2].id === Separator.ID; + if (isSeparator) { + actions.splice(h2, 1); + } else { + break; + } + } + let foundAction = false; + for (let k = actions.length - 1; k >= 0; k--) { + const isSeparator = actions[k].id === Separator.ID; + if (isSeparator && !foundAction) { + actions.splice(k, 1); + } else if (!isSeparator) { + foundAction = true; + } else if (isSeparator) { + foundAction = false; + } + } + return actions; +} + +// ../../../../../platform/instantiation/common/instantiation.ts +var _util; +((_util2) => { + _util2.serviceIds = /* @__PURE__ */ new Map(); + _util2.DI_TARGET = "$di$target"; + _util2.DI_DEPENDENCIES = "$di$dependencies"; + function getServiceDependencies(ctor) { + return ctor[_util2.DI_DEPENDENCIES] || []; + } + _util2.getServiceDependencies = getServiceDependencies; +})(_util || (_util = {})); +var IInstantiationService = createDecorator("instantiationService"); +function storeServiceDependency(id2, target, index) { + if (target[_util.DI_TARGET] === target) { + target[_util.DI_DEPENDENCIES].push({ id: id2, index }); + } else { + target[_util.DI_DEPENDENCIES] = [{ id: id2, index }]; + target[_util.DI_TARGET] = target; + } +} +function createDecorator(serviceId) { + if (_util.serviceIds.has(serviceId)) { + return _util.serviceIds.get(serviceId); + } + const id2 = function(target, key, index) { + if (arguments.length !== 3) { + throw new Error("@IServiceName-decorator can only be used to decorate a parameter"); + } + storeServiceDependency(id2, target, index); + }; + id2.toString = () => serviceId; + _util.serviceIds.set(serviceId, id2); + return id2; +} + +// ../../../../../platform/keybinding/common/keybinding.ts +var IKeybindingService = createDecorator("keybindingService"); + +// ../../../../../platform/contextview/browser/contextView.ts +var IContextViewService = createDecorator("contextViewService"); +var IContextMenuService = createDecorator("contextMenuService"); + +// ../../../../../platform/telemetry/common/telemetry.ts +var ITelemetryService = createDecorator("telemetryService"); +createDecorator("customEndpointTelemetryService"); + +// ../../../../../platform/theme/common/theme.ts +function isDark(scheme) { + return scheme === "dark" /* DARK */ || scheme === "hcDark" /* HIGH_CONTRAST_DARK */; +} + +// ../../../../../platform/theme/common/themeService.ts +var IThemeService = createDecorator("themeService"); +var Extensions3 = { + ThemingContribution: "base.contributions.theming" +}; +var ThemingRegistry = class { + constructor() { + this.themingParticipants = []; + this.themingParticipants = []; + this.onThemingParticipantAddedEmitter = new Emitter(); + } + onColorThemeChange(participant) { + this.themingParticipants.push(participant); + this.onThemingParticipantAddedEmitter.fire(participant); + return toDisposable(() => { + const idx = this.themingParticipants.indexOf(participant); + this.themingParticipants.splice(idx, 1); + }); + } + get onThemingParticipantAdded() { + return this.onThemingParticipantAddedEmitter.event; + } + getThemingParticipants() { + return this.themingParticipants; + } +}; +var themingRegistry = new ThemingRegistry(); +Registry.add(Extensions3.ThemingContribution, themingRegistry); + +// ../../../../../base/browser/ui/sash/sash.ts +new Emitter(); +new Emitter(); +var MouseEventFactory = class { + constructor(el) { + this.el = el; + this.disposables = new DisposableStore(); + } + get onPointerMove() { + return this.disposables.add(new DomEmitter(getWindow(this.el), "mousemove")).event; + } + get onPointerUp() { + return this.disposables.add(new DomEmitter(getWindow(this.el), "mouseup")).event; + } + dispose() { + this.disposables.dispose(); + } +}; +__decorateClass([ + memoize +], MouseEventFactory.prototype, "onPointerMove", 1); +__decorateClass([ + memoize +], MouseEventFactory.prototype, "onPointerUp", 1); +var GestureEventFactory = class { + constructor(el) { + this.el = el; + this.disposables = new DisposableStore(); + } + get onPointerMove() { + return this.disposables.add(new DomEmitter(this.el, EventType2.Change)).event; + } + get onPointerUp() { + return this.disposables.add(new DomEmitter(this.el, EventType2.End)).event; + } + dispose() { + this.disposables.dispose(); + } +}; +__decorateClass([ + memoize +], GestureEventFactory.prototype, "onPointerMove", 1); +__decorateClass([ + memoize +], GestureEventFactory.prototype, "onPointerUp", 1); +var OrthogonalPointerEventFactory = class { + constructor(factory) { + this.factory = factory; + } + get onPointerMove() { + return this.factory.onPointerMove; + } + get onPointerUp() { + return this.factory.onPointerUp; + } + dispose() { + } +}; +__decorateClass([ + memoize +], OrthogonalPointerEventFactory.prototype, "onPointerMove", 1); +__decorateClass([ + memoize +], OrthogonalPointerEventFactory.prototype, "onPointerUp", 1); + +// ../../../../../base/browser/ui/splitview/splitview.ts +({ + separatorBorder: Color.transparent +}); +var Sizing; +((Sizing2) => { + Sizing2.Distribute = { type: "distribute" }; + function Split(index) { + return { type: "split", index }; + } + Sizing2.Split = Split; + function Auto(index) { + return { type: "auto", index }; + } + Sizing2.Auto = Auto; + function Invisible(cachedVisibleSize) { + return { type: "invisible", cachedVisibleSize }; + } + Sizing2.Invisible = Invisible; +})(Sizing || (Sizing = {})); + +// ../../../../../base/browser/ui/splitview/paneview.ts +var Pane = class _Pane extends Disposable { + constructor(options2) { + super(); + this.expandedSize = void 0; + this._headerVisible = true; + this._collapsible = true; + this._bodyRendered = false; + this.styles = { + dropBackground: void 0, + headerBackground: void 0, + headerBorder: void 0, + headerForeground: void 0, + leftBorder: void 0 + }; + this.animationTimer = void 0; + this._onDidChange = this._register(new Emitter()); + this.onDidChange = this._onDidChange.event; + this._onDidChangeExpansionState = this._register(new Emitter()); + this.onDidChangeExpansionState = this._onDidChangeExpansionState.event; + this.orthogonalSize = 0; + this._expanded = typeof options2.expanded === "undefined" ? true : !!options2.expanded; + this._orientation = typeof options2.orientation === "undefined" ? 0 /* VERTICAL */ : options2.orientation; + this._ariaHeaderLabel = localize("viewSection", "{0} Section", options2.title); + this._minimumBodySize = typeof options2.minimumBodySize === "number" ? options2.minimumBodySize : this._orientation === 1 /* HORIZONTAL */ ? 200 : 120; + this._maximumBodySize = typeof options2.maximumBodySize === "number" ? options2.maximumBodySize : Number.POSITIVE_INFINITY; + this.element = $(".pane"); + } + static { + this.HEADER_SIZE = 22; + } + get ariaHeaderLabel() { + return this._ariaHeaderLabel; + } + set ariaHeaderLabel(newLabel) { + this._ariaHeaderLabel = newLabel; + this.header.setAttribute("aria-label", this.ariaHeaderLabel); + } + get draggableElement() { + return this.header; + } + get dropTargetElement() { + return this.element; + } + get dropBackground() { + return this.styles.dropBackground; + } + get minimumBodySize() { + return this._minimumBodySize; + } + set minimumBodySize(size) { + this._minimumBodySize = size; + this._onDidChange.fire(void 0); + } + get maximumBodySize() { + return this._maximumBodySize; + } + set maximumBodySize(size) { + this._maximumBodySize = size; + this._onDidChange.fire(void 0); + } + get headerSize() { + return this.headerVisible ? _Pane.HEADER_SIZE : 0; + } + get minimumSize() { + const headerSize = this.headerSize; + const expanded = !this.headerVisible || this.isExpanded(); + const minimumBodySize = expanded ? this.minimumBodySize : 0; + return headerSize + minimumBodySize; + } + get maximumSize() { + const headerSize = this.headerSize; + const expanded = !this.headerVisible || this.isExpanded(); + const maximumBodySize = expanded ? this.maximumBodySize : 0; + return headerSize + maximumBodySize; + } + isExpanded() { + return this._expanded; + } + setExpanded(expanded) { + if (!expanded && !this.collapsible) { + return false; + } + if (this._expanded === !!expanded) { + return false; + } + this.element?.classList.toggle("expanded", expanded); + this._expanded = !!expanded; + this.updateHeader(); + if (expanded) { + if (!this._bodyRendered) { + this.renderBody(this.body); + this._bodyRendered = true; + } + if (typeof this.animationTimer === "number") { + getWindow(this.element).clearTimeout(this.animationTimer); + } + append(this.element, this.body); + } else { + this.animationTimer = getWindow(this.element).setTimeout(() => { + this.body.remove(); + }, 200); + } + this._onDidChangeExpansionState.fire(expanded); + this._onDidChange.fire(expanded ? this.expandedSize : void 0); + return true; + } + get headerVisible() { + return this._headerVisible; + } + set headerVisible(visible) { + if (this._headerVisible === !!visible) { + return; + } + this._headerVisible = !!visible; + this.updateHeader(); + this._onDidChange.fire(void 0); + } + get collapsible() { + return this._collapsible; + } + set collapsible(collapsible) { + if (this._collapsible === !!collapsible) { + return; + } + this._collapsible = !!collapsible; + this.updateHeader(); + } + get orientation() { + return this._orientation; + } + set orientation(orientation) { + if (this._orientation === orientation) { + return; + } + this._orientation = orientation; + if (this.element) { + this.element.classList.toggle("horizontal", this.orientation === 1 /* HORIZONTAL */); + this.element.classList.toggle("vertical", this.orientation === 0 /* VERTICAL */); + } + if (this.header) { + this.updateHeader(); + } + } + render() { + this.element.classList.toggle("expanded", this.isExpanded()); + this.element.classList.toggle("horizontal", this.orientation === 1 /* HORIZONTAL */); + this.element.classList.toggle("vertical", this.orientation === 0 /* VERTICAL */); + this.header = $(".pane-header"); + append(this.element, this.header); + this.header.setAttribute("tabindex", "0"); + this.header.setAttribute("role", "button"); + this.header.setAttribute("aria-label", this.ariaHeaderLabel); + this.renderHeader(this.header); + const focusTracker = trackFocus(this.header); + this._register(focusTracker); + this._register(focusTracker.onDidFocus(() => this.header.classList.add("focused"), null)); + this._register(focusTracker.onDidBlur(() => this.header.classList.remove("focused"), null)); + this.updateHeader(); + const eventDisposables = this._register(new DisposableStore()); + const onKeyDown = this._register(new DomEmitter(this.header, "keydown")); + const onHeaderKeyDown = Event.map(onKeyDown.event, (e) => new StandardKeyboardEvent(e), eventDisposables); + this._register(Event.filter(onHeaderKeyDown, (e) => e.keyCode === 3 /* Enter */ || e.keyCode === 10 /* Space */, eventDisposables)(() => this.setExpanded(!this.isExpanded()), null)); + this._register(Event.filter(onHeaderKeyDown, (e) => e.keyCode === 15 /* LeftArrow */, eventDisposables)(() => this.setExpanded(false), null)); + this._register(Event.filter(onHeaderKeyDown, (e) => e.keyCode === 17 /* RightArrow */, eventDisposables)(() => this.setExpanded(true), null)); + this._register(Gesture.addTarget(this.header)); + [EventType.CLICK, EventType2.Tap].forEach((eventType) => { + this._register(addDisposableListener(this.header, eventType, (e) => { + if (!e.defaultPrevented) { + this.setExpanded(!this.isExpanded()); + } + })); + }); + this.body = append(this.element, $(".pane-body")); + if (!this._bodyRendered && this.isExpanded()) { + this.renderBody(this.body); + this._bodyRendered = true; + } + if (!this.isExpanded()) { + this.body.remove(); + } + } + layout(size) { + const headerSize = this.headerVisible ? _Pane.HEADER_SIZE : 0; + const width = this._orientation === 0 /* VERTICAL */ ? this.orthogonalSize : size; + const height = this._orientation === 0 /* VERTICAL */ ? size - headerSize : this.orthogonalSize - headerSize; + if (this.isExpanded()) { + this.body.classList.toggle("wide", width >= 600); + this.layoutBody(height, width); + this.expandedSize = size; + } + } + style(styles) { + this.styles = styles; + if (!this.header) { + return; + } + this.updateHeader(); + } + updateHeader() { + const expanded = !this.headerVisible || this.isExpanded(); + if (this.collapsible) { + this.header.setAttribute("tabindex", "0"); + this.header.setAttribute("role", "button"); + } else { + this.header.removeAttribute("tabindex"); + this.header.removeAttribute("role"); + } + this.header.style.lineHeight = `${this.headerSize}px`; + this.header.classList.toggle("hidden", !this.headerVisible); + this.header.classList.toggle("expanded", expanded); + this.header.classList.toggle("not-collapsible", !this.collapsible); + this.header.setAttribute("aria-expanded", String(expanded)); + this.header.style.color = this.collapsible ? this.styles.headerForeground ?? "" : ""; + this.header.style.backgroundColor = (this.collapsible ? this.styles.headerBackground : "transparent") ?? ""; + this.header.style.borderTop = this.styles.headerBorder && this.orientation === 0 /* VERTICAL */ ? `1px solid ${this.styles.headerBorder}` : ""; + this.element.style.borderLeft = this.styles.leftBorder && this.orientation === 1 /* HORIZONTAL */ ? `1px solid ${this.styles.leftBorder}` : ""; + } +}; +(class _PaneDraggable extends Disposable { + constructor(pane, dnd, context) { + super(); + this.pane = pane; + this.dnd = dnd; + this.context = context; + this.dragOverCounter = 0; + // see https://github.com/microsoft/vscode/issues/14470 + this._onDidDrop = this._register(new Emitter()); + this.onDidDrop = this._onDidDrop.event; + pane.draggableElement.draggable = true; + this._register(addDisposableListener(pane.draggableElement, "dragstart", (e) => this.onDragStart(e))); + this._register(addDisposableListener(pane.dropTargetElement, "dragenter", (e) => this.onDragEnter(e))); + this._register(addDisposableListener(pane.dropTargetElement, "dragleave", (e) => this.onDragLeave(e))); + this._register(addDisposableListener(pane.dropTargetElement, "dragend", (e) => this.onDragEnd(e))); + this._register(addDisposableListener(pane.dropTargetElement, "drop", (e) => this.onDrop(e))); + } + static { + this.DefaultDragOverBackgroundColor = new Color(new RGBA(128, 128, 128, 0.5)); + } + onDragStart(e) { + if (!this.dnd.canDrag(this.pane) || !e.dataTransfer) { + e.preventDefault(); + e.stopPropagation(); + return; + } + e.dataTransfer.effectAllowed = "move"; + if (isFirefox2) { + e.dataTransfer?.setData(DataTransfers.TEXT, this.pane.draggableElement.textContent || ""); + } + const dragImage = append(this.pane.element.ownerDocument.body, $(".monaco-drag-image", {}, this.pane.draggableElement.textContent || "")); + e.dataTransfer.setDragImage(dragImage, -10, -10); + setTimeout(() => dragImage.remove(), 0); + this.context.draggable = this; + } + onDragEnter(e) { + if (!this.context.draggable || this.context.draggable === this) { + return; + } + if (!this.dnd.canDrop(this.context.draggable.pane, this.pane)) { + return; + } + this.dragOverCounter++; + this.render(); + } + onDragLeave(e) { + if (!this.context.draggable || this.context.draggable === this) { + return; + } + if (!this.dnd.canDrop(this.context.draggable.pane, this.pane)) { + return; + } + this.dragOverCounter--; + if (this.dragOverCounter === 0) { + this.render(); + } + } + onDragEnd(e) { + if (!this.context.draggable) { + return; + } + this.dragOverCounter = 0; + this.render(); + this.context.draggable = null; + } + onDrop(e) { + if (!this.context.draggable) { + return; + } + EventHelper.stop(e); + this.dragOverCounter = 0; + this.render(); + if (this.dnd.canDrop(this.context.draggable.pane, this.pane) && this.context.draggable !== this) { + this._onDidDrop.fire({ from: this.context.draggable.pane, to: this.pane }); + } + this.context.draggable = null; + } + render() { + let backgroundColor = null; + if (this.dragOverCounter > 0) { + backgroundColor = this.pane.dropBackground ?? _PaneDraggable.DefaultDragOverBackgroundColor.toString(); + } + this.pane.dropTargetElement.style.backgroundColor = backgroundColor || ""; + } +}); + +// ../../../../../platform/configuration/common/configuration.ts +var IConfigurationService = createDecorator("configurationService"); + +// ../../../../../platform/theme/common/iconRegistry.ts +var Extensions4 = { + IconContribution: "base.contributions.icons" +}; +var IconContribution; +((IconContribution2) => { + function getDefinition(contribution, registry) { + let definition = contribution.defaults; + while (ThemeIcon.isThemeIcon(definition)) { + const c = iconRegistry.getIcon(definition.id); + if (!c) { + return void 0; + } + definition = c.defaults; + } + return definition; + } + IconContribution2.getDefinition = getDefinition; +})(IconContribution || (IconContribution = {})); +var IconFontDefinition; +((IconFontDefinition2) => { + function toJSONObject(iconFont) { + return { + weight: iconFont.weight, + style: iconFont.style, + src: iconFont.src.map((s) => ({ format: s.format, location: s.location.toString() })) + }; + } + IconFontDefinition2.toJSONObject = toJSONObject; + function fromJSONObject(json) { + const stringOrUndef = (s) => isString(s) ? s : void 0; + if (json && Array.isArray(json.src) && json.src.every((s) => isString(s.format) && isString(s.location))) { + return { + weight: stringOrUndef(json.weight), + style: stringOrUndef(json.style), + src: json.src.map((s) => ({ format: s.format, location: URI.parse(s.location) })) + }; + } + return void 0; + } + IconFontDefinition2.fromJSONObject = fromJSONObject; +})(IconFontDefinition || (IconFontDefinition = {})); +var IconRegistry = class { + constructor() { + this._onDidChange = new Emitter(); + this.onDidChange = this._onDidChange.event; + this.iconSchema = { + definitions: { + icons: { + type: "object", + properties: { + fontId: { type: "string", description: localize("iconDefinition.fontId", "The id of the font to use. If not set, the font that is defined first is used.") }, + fontCharacter: { type: "string", description: localize("iconDefinition.fontCharacter", "The font character associated with the icon definition.") } + }, + additionalProperties: false, + defaultSnippets: [{ body: { fontCharacter: "\\\\e030" } }] + } + }, + type: "object", + properties: {} + }; + this.iconReferenceSchema = { type: "string", pattern: `^${ThemeIcon.iconNameExpression}$`, enum: [], enumDescriptions: [] }; + this.iconsById = {}; + this.iconFontsById = {}; + } + registerIcon(id2, defaults2, description, deprecationMessage) { + const existing = this.iconsById[id2]; + if (existing) { + if (description && !existing.description) { + existing.description = description; + this.iconSchema.properties[id2].markdownDescription = `${description} $(${id2})`; + const enumIndex = this.iconReferenceSchema.enum.indexOf(id2); + if (enumIndex !== -1) { + this.iconReferenceSchema.enumDescriptions[enumIndex] = description; + } + this._onDidChange.fire(); + } + return existing; + } + const iconContribution = { id: id2, description, defaults: defaults2, deprecationMessage }; + this.iconsById[id2] = iconContribution; + const propertySchema = { $ref: "#/definitions/icons" }; + if (deprecationMessage) { + propertySchema.deprecationMessage = deprecationMessage; + } + if (description) { + propertySchema.markdownDescription = `${description}: $(${id2})`; + } + this.iconSchema.properties[id2] = propertySchema; + this.iconReferenceSchema.enum.push(id2); + this.iconReferenceSchema.enumDescriptions.push(description || ""); + this._onDidChange.fire(); + return { id: id2 }; + } + deregisterIcon(id2) { + delete this.iconsById[id2]; + delete this.iconSchema.properties[id2]; + const index = this.iconReferenceSchema.enum.indexOf(id2); + if (index !== -1) { + this.iconReferenceSchema.enum.splice(index, 1); + this.iconReferenceSchema.enumDescriptions.splice(index, 1); + } + this._onDidChange.fire(); + } + getIcons() { + return Object.keys(this.iconsById).map((id2) => this.iconsById[id2]); + } + getIcon(id2) { + return this.iconsById[id2]; + } + getIconSchema() { + return this.iconSchema; + } + getIconReferenceSchema() { + return this.iconReferenceSchema; + } + registerIconFont(id2, definition) { + const existing = this.iconFontsById[id2]; + if (existing) { + return existing; + } + this.iconFontsById[id2] = definition; + this._onDidChange.fire(); + return definition; + } + deregisterIconFont(id2) { + delete this.iconFontsById[id2]; + } + getIconFont(id2) { + return this.iconFontsById[id2]; + } + toString() { + const sorter2 = (i1, i2) => { + return i1.id.localeCompare(i2.id); + }; + const classNames = (i) => { + while (ThemeIcon.isThemeIcon(i.defaults)) { + i = this.iconsById[i.defaults.id]; + } + return `codicon codicon-${i ? i.id : ""}`; + }; + const reference = []; + reference.push(`| preview | identifier | default codicon ID | description`); + reference.push(`| ----------- | --------------------------------- | --------------------------------- | --------------------------------- |`); + const contributions = Object.keys(this.iconsById).map((key) => this.iconsById[key]); + for (const i of contributions.filter((i2) => !!i2.description).sort(sorter2)) { + reference.push(`||${i.id}|${ThemeIcon.isThemeIcon(i.defaults) ? i.defaults.id : i.id}|${i.description || ""}|`); + } + reference.push(`| preview | identifier `); + reference.push(`| ----------- | --------------------------------- |`); + for (const i of contributions.filter((i2) => !ThemeIcon.isThemeIcon(i2.defaults)).sort(sorter2)) { + reference.push(`||${i.id}|`); + } + return reference.join("\n"); + } +}; +var iconRegistry = new IconRegistry(); +Registry.add(Extensions4.IconContribution, iconRegistry); +function registerIcon(id2, defaults2, description, deprecationMessage) { + return iconRegistry.registerIcon(id2, defaults2, description, deprecationMessage); +} +function initialize() { + const codiconFontCharacters = getCodiconFontCharacters(); + for (const icon in codiconFontCharacters) { + const fontCharacter = "\\" + codiconFontCharacters[icon].toString(16); + iconRegistry.registerIcon(icon, { fontCharacter }); + } +} +initialize(); +var iconsSchemaId = "vscode://schemas/icons"; +var schemaRegistry2 = Registry.as(Extensions.JSONContribution); +schemaRegistry2.registerSchema(iconsSchemaId, iconRegistry.getIconSchema()); +var delayer2 = new RunOnceScheduler(() => schemaRegistry2.notifySchemaChanged(iconsSchemaId), 200); +iconRegistry.onDidChange(() => { + if (!delayer2.isScheduled()) { + delayer2.schedule(); + } +}); +registerIcon("widget-close", Codicon.close, localize("widgetClose", "Icon for the close action in widgets.")); +registerIcon("goto-previous-location", Codicon.arrowUp, localize("previousChangeIcon", "Icon for goto previous editor location.")); +registerIcon("goto-next-location", Codicon.arrowDown, localize("nextChangeIcon", "Icon for goto next editor location.")); +ThemeIcon.modify(Codicon.sync, "spin"); +ThemeIcon.modify(Codicon.loading, "spin"); + +// ../../../../common/views.ts +localize("views log", "Views"); +var defaultViewIcon = registerIcon("default-view-icon", Codicon.window, localize("defaultViewIcon", "Default view icon.")); +var Extensions5; +((Extensions7) => { + Extensions7.ViewContainersRegistry = "workbench.registry.view.containers"; + Extensions7.ViewsRegistry = "workbench.registry.view"; +})(Extensions5 || (Extensions5 = {})); +function ViewContainerLocationToString(viewContainerLocation) { + switch (viewContainerLocation) { + case 0 /* Sidebar */: + return "sidebar"; + case 1 /* Panel */: + return "panel"; + case 2 /* AuxiliaryBar */: + return "auxiliarybar"; + } +} +var ViewContainersRegistryImpl = class extends Disposable { + constructor() { + super(...arguments); + this._onDidRegister = this._register(new Emitter()); + this.onDidRegister = this._onDidRegister.event; + this._onDidDeregister = this._register(new Emitter()); + this.onDidDeregister = this._onDidDeregister.event; + this.viewContainers = /* @__PURE__ */ new Map(); + this.defaultViewContainers = []; + } + get all() { + return [...this.viewContainers.values()].flat(); + } + registerViewContainer(viewContainerDescriptor, viewContainerLocation, options2) { + const existing = this.get(viewContainerDescriptor.id); + if (existing) { + return existing; + } + const viewContainer = viewContainerDescriptor; + viewContainer.openCommandActionDescriptor = options2?.doNotRegisterOpenCommand ? void 0 : viewContainer.openCommandActionDescriptor ?? { id: viewContainer.id }; + const viewContainers = getOrSet(this.viewContainers, viewContainerLocation, []); + viewContainers.push(viewContainer); + if (options2?.isDefault) { + this.defaultViewContainers.push(viewContainer); + } + this._onDidRegister.fire({ viewContainer, viewContainerLocation }); + return viewContainer; + } + deregisterViewContainer(viewContainer) { + for (const viewContainerLocation of this.viewContainers.keys()) { + const viewContainers = this.viewContainers.get(viewContainerLocation); + const index = viewContainers?.indexOf(viewContainer); + if (index !== -1) { + viewContainers?.splice(index, 1); + if (viewContainers.length === 0) { + this.viewContainers.delete(viewContainerLocation); + } + this._onDidDeregister.fire({ viewContainer, viewContainerLocation }); + return; + } + } + } + get(id2) { + return this.all.filter((viewContainer) => viewContainer.id === id2)[0]; + } + getViewContainers(location) { + return [...this.viewContainers.get(location) || []]; + } + getViewContainerLocation(container) { + return [...this.viewContainers.keys()].filter((location) => this.getViewContainers(location).filter((viewContainer) => viewContainer?.id === container.id).length > 0)[0]; + } + getDefaultViewContainer(location) { + return this.defaultViewContainers.find((viewContainer) => this.getViewContainerLocation(viewContainer) === location); + } +}; +Registry.add(Extensions5.ViewContainersRegistry, new ViewContainersRegistryImpl()); +function compareViewContentDescriptors(a, b) { + const aGroup = a.group ?? "9_more" /* More */; + const bGroup = b.group ?? "9_more" /* More */; + if (aGroup !== bGroup) { + return aGroup.localeCompare(bGroup); + } + return (a.order ?? 5) - (b.order ?? 5); +} +var ViewsRegistry = class extends Disposable { + constructor() { + super(...arguments); + this._onViewsRegistered = this._register(new Emitter()); + this.onViewsRegistered = this._onViewsRegistered.event; + this._onViewsDeregistered = this._register(new Emitter()); + this.onViewsDeregistered = this._onViewsDeregistered.event; + this._onDidChangeContainer = this._register(new Emitter()); + this.onDidChangeContainer = this._onDidChangeContainer.event; + this._onDidChangeViewWelcomeContent = this._register(new Emitter()); + this.onDidChangeViewWelcomeContent = this._onDidChangeViewWelcomeContent.event; + this._viewContainers = []; + this._views = /* @__PURE__ */ new Map(); + this._viewWelcomeContents = new SetMap(); + } + registerViews(views, viewContainer) { + this.registerViews2([{ views, viewContainer }]); + } + registerViews2(views) { + views.forEach(({ views: views2, viewContainer }) => this.addViews(views2, viewContainer)); + this._onViewsRegistered.fire(views); + } + deregisterViews(viewDescriptors, viewContainer) { + const views = this.removeViews(viewDescriptors, viewContainer); + if (views.length) { + this._onViewsDeregistered.fire({ views, viewContainer }); + } + } + moveViews(viewsToMove, viewContainer) { + for (const container of this._views.keys()) { + if (container !== viewContainer) { + const views = this.removeViews(viewsToMove, container); + if (views.length) { + this.addViews(views, viewContainer); + this._onDidChangeContainer.fire({ views, from: container, to: viewContainer }); + } + } + } + } + getViews(loc) { + return this._views.get(loc) || []; + } + getView(id2) { + for (const viewContainer of this._viewContainers) { + const viewDescriptor = (this._views.get(viewContainer) || []).filter((v) => v.id === id2)[0]; + if (viewDescriptor) { + return viewDescriptor; + } + } + return null; + } + getViewContainer(viewId) { + for (const viewContainer of this._viewContainers) { + const viewDescriptor = (this._views.get(viewContainer) || []).filter((v) => v.id === viewId)[0]; + if (viewDescriptor) { + return viewContainer; + } + } + return null; + } + registerViewWelcomeContent(id2, viewContent) { + this._viewWelcomeContents.add(id2, viewContent); + this._onDidChangeViewWelcomeContent.fire(id2); + return toDisposable(() => { + this._viewWelcomeContents.delete(id2, viewContent); + this._onDidChangeViewWelcomeContent.fire(id2); + }); + } + registerViewWelcomeContent2(id2, viewContentMap) { + const disposables = /* @__PURE__ */ new Map(); + for (const [key, content] of viewContentMap) { + this._viewWelcomeContents.add(id2, content); + disposables.set(key, toDisposable(() => { + this._viewWelcomeContents.delete(id2, content); + this._onDidChangeViewWelcomeContent.fire(id2); + })); + } + this._onDidChangeViewWelcomeContent.fire(id2); + return disposables; + } + getViewWelcomeContent(id2) { + const result = []; + this._viewWelcomeContents.forEach(id2, (descriptor) => result.push(descriptor)); + return result.sort(compareViewContentDescriptors); + } + addViews(viewDescriptors, viewContainer) { + let views = this._views.get(viewContainer); + if (!views) { + views = []; + this._views.set(viewContainer, views); + this._viewContainers.push(viewContainer); + } + for (const viewDescriptor of viewDescriptors) { + if (this.getView(viewDescriptor.id) !== null) { + throw new Error(localize("duplicateId", "A view with id '{0}' is already registered", viewDescriptor.id)); + } + views.push(viewDescriptor); + } + } + removeViews(viewDescriptors, viewContainer) { + const views = this._views.get(viewContainer); + if (!views) { + return []; + } + const viewsToDeregister = []; + const remaningViews = []; + for (const view of views) { + if (!viewDescriptors.includes(view)) { + remaningViews.push(view); + } else { + viewsToDeregister.push(view); + } + } + if (viewsToDeregister.length) { + if (remaningViews.length) { + this._views.set(viewContainer, remaningViews); + } else { + this._views.delete(viewContainer); + this._viewContainers.splice(this._viewContainers.indexOf(viewContainer), 1); + } + } + return viewsToDeregister; + } +}; +Registry.add(Extensions5.ViewsRegistry, new ViewsRegistry()); +var IViewDescriptorService = createDecorator("viewDescriptorService"); + +// ../../../../services/views/common/viewsService.ts +createDecorator("viewsService"); + +// ../../../../../platform/contextkey/common/scanner.ts +function hintDidYouMean(...meant) { + switch (meant.length) { + case 1: + return localize("contextkey.scanner.hint.didYouMean1", "Did you mean {0}?", meant[0]); + case 2: + return localize("contextkey.scanner.hint.didYouMean2", "Did you mean {0} or {1}?", meant[0], meant[1]); + case 3: + return localize("contextkey.scanner.hint.didYouMean3", "Did you mean {0}, {1} or {2}?", meant[0], meant[1], meant[2]); + default: + return void 0; + } +} +var hintDidYouForgetToOpenOrCloseQuote = localize("contextkey.scanner.hint.didYouForgetToOpenOrCloseQuote", "Did you forget to open or close the quote?"); +var hintDidYouForgetToEscapeSlash = localize("contextkey.scanner.hint.didYouForgetToEscapeSlash", "Did you forget to escape the '/' (slash) character? Put two backslashes before it to escape, e.g., '\\\\/'."); +var Scanner = class _Scanner { + constructor() { + this._input = ""; + this._start = 0; + this._current = 0; + this._tokens = []; + this._errors = []; + // u - unicode, y - sticky // TODO@ulugbekna: we accept double quotes as part of the string rather than as a delimiter (to preserve old parser's behavior) + this.stringRe = /[a-zA-Z0-9_<>\-\./\\:\*\?\+\[\]\^,#@;"%\$\p{L}-]+/uy; + } + static getLexeme(token) { + switch (token.type) { + case 0 /* LParen */: + return "("; + case 1 /* RParen */: + return ")"; + case 2 /* Neg */: + return "!"; + case 3 /* Eq */: + return token.isTripleEq ? "===" : "=="; + case 4 /* NotEq */: + return token.isTripleEq ? "!==" : "!="; + case 5 /* Lt */: + return "<"; + case 6 /* LtEq */: + return "<="; + case 7 /* Gt */: + return ">="; + case 8 /* GtEq */: + return ">="; + case 9 /* RegexOp */: + return "=~"; + case 10 /* RegexStr */: + return token.lexeme; + case 11 /* True */: + return "true"; + case 12 /* False */: + return "false"; + case 13 /* In */: + return "in"; + case 14 /* Not */: + return "not"; + case 15 /* And */: + return "&&"; + case 16 /* Or */: + return "||"; + case 17 /* Str */: + return token.lexeme; + case 18 /* QuotedStr */: + return token.lexeme; + case 19 /* Error */: + return token.lexeme; + case 20 /* EOF */: + return "EOF"; + default: + throw illegalState(`unhandled token type: ${JSON.stringify(token)}; have you forgotten to add a case?`); + } + } + static { + this._regexFlags = new Set(["i", "g", "s", "m", "y", "u"].map((ch) => ch.charCodeAt(0))); + } + static { + this._keywords = /* @__PURE__ */ new Map([ + ["not", 14 /* Not */], + ["in", 13 /* In */], + ["false", 12 /* False */], + ["true", 11 /* True */] + ]); + } + get errors() { + return this._errors; + } + reset(value) { + this._input = value; + this._start = 0; + this._current = 0; + this._tokens = []; + this._errors = []; + return this; + } + scan() { + while (!this._isAtEnd()) { + this._start = this._current; + const ch = this._advance(); + switch (ch) { + case 40 /* OpenParen */: + this._addToken(0 /* LParen */); + break; + case 41 /* CloseParen */: + this._addToken(1 /* RParen */); + break; + case 33 /* ExclamationMark */: + if (this._match(61 /* Equals */)) { + const isTripleEq = this._match(61 /* Equals */); + this._tokens.push({ type: 4 /* NotEq */, offset: this._start, isTripleEq }); + } else { + this._addToken(2 /* Neg */); + } + break; + case 39 /* SingleQuote */: + this._quotedString(); + break; + case 47 /* Slash */: + this._regex(); + break; + case 61 /* Equals */: + if (this._match(61 /* Equals */)) { + const isTripleEq = this._match(61 /* Equals */); + this._tokens.push({ type: 3 /* Eq */, offset: this._start, isTripleEq }); + } else if (this._match(126 /* Tilde */)) { + this._addToken(9 /* RegexOp */); + } else { + this._error(hintDidYouMean("==", "=~")); + } + break; + case 60 /* LessThan */: + this._addToken(this._match(61 /* Equals */) ? 6 /* LtEq */ : 5 /* Lt */); + break; + case 62 /* GreaterThan */: + this._addToken(this._match(61 /* Equals */) ? 8 /* GtEq */ : 7 /* Gt */); + break; + case 38 /* Ampersand */: + if (this._match(38 /* Ampersand */)) { + this._addToken(15 /* And */); + } else { + this._error(hintDidYouMean("&&")); + } + break; + case 124 /* Pipe */: + if (this._match(124 /* Pipe */)) { + this._addToken(16 /* Or */); + } else { + this._error(hintDidYouMean("||")); + } + break; + // TODO@ulugbekna: 1) rewrite using a regex 2) reconsider what characters are considered whitespace, including unicode, nbsp, etc. + case 32 /* Space */: + case 13 /* CarriageReturn */: + case 9 /* Tab */: + case 10 /* LineFeed */: + case 160 /* NoBreakSpace */: + break; + default: + this._string(); + } + } + this._start = this._current; + this._addToken(20 /* EOF */); + return Array.from(this._tokens); + } + _match(expected) { + if (this._isAtEnd()) { + return false; + } + if (this._input.charCodeAt(this._current) !== expected) { + return false; + } + this._current++; + return true; + } + _advance() { + return this._input.charCodeAt(this._current++); + } + _peek() { + return this._isAtEnd() ? 0 /* Null */ : this._input.charCodeAt(this._current); + } + _addToken(type) { + this._tokens.push({ type, offset: this._start }); + } + _error(additional) { + const offset = this._start; + const lexeme = this._input.substring(this._start, this._current); + const errToken = { type: 19 /* Error */, offset: this._start, lexeme }; + this._errors.push({ offset, lexeme, additionalInfo: additional }); + this._tokens.push(errToken); + } + _string() { + this.stringRe.lastIndex = this._start; + const match = this.stringRe.exec(this._input); + if (match) { + this._current = this._start + match[0].length; + const lexeme = this._input.substring(this._start, this._current); + const keyword = _Scanner._keywords.get(lexeme); + if (keyword) { + this._addToken(keyword); + } else { + this._tokens.push({ type: 17 /* Str */, lexeme, offset: this._start }); + } + } + } + // captures the lexeme without the leading and trailing ' + _quotedString() { + while (this._peek() !== 39 /* SingleQuote */ && !this._isAtEnd()) { + this._advance(); + } + if (this._isAtEnd()) { + this._error(hintDidYouForgetToOpenOrCloseQuote); + return; + } + this._advance(); + this._tokens.push({ type: 18 /* QuotedStr */, lexeme: this._input.substring(this._start + 1, this._current - 1), offset: this._start + 1 }); + } + /* + * Lexing a regex expression: /.../[igsmyu]* + * Based on https://github.com/microsoft/TypeScript/blob/9247ef115e617805983740ba795d7a8164babf89/src/compiler/scanner.ts#L2129-L2181 + * + * Note that we want slashes within a regex to be escaped, e.g., /file:\\/\\/\\// should match `file:///` + */ + _regex() { + let p = this._current; + let inEscape = false; + let inCharacterClass = false; + while (true) { + if (p >= this._input.length) { + this._current = p; + this._error(hintDidYouForgetToEscapeSlash); + return; + } + const ch = this._input.charCodeAt(p); + if (inEscape) { + inEscape = false; + } else if (ch === 47 /* Slash */ && !inCharacterClass) { + p++; + break; + } else if (ch === 91 /* OpenSquareBracket */) { + inCharacterClass = true; + } else if (ch === 92 /* Backslash */) { + inEscape = true; + } else if (ch === 93 /* CloseSquareBracket */) { + inCharacterClass = false; + } + p++; + } + while (p < this._input.length && _Scanner._regexFlags.has(this._input.charCodeAt(p))) { + p++; + } + this._current = p; + const lexeme = this._input.substring(this._start, this._current); + this._tokens.push({ type: 10 /* RegexStr */, lexeme, offset: this._start }); + } + _isAtEnd() { + return this._current >= this._input.length; + } +}; + +// ../../../../../platform/contextkey/common/contextkey.ts +var CONSTANT_VALUES = /* @__PURE__ */ new Map(); +CONSTANT_VALUES.set("false", false); +CONSTANT_VALUES.set("true", true); +CONSTANT_VALUES.set("isMac", isMacintosh); +CONSTANT_VALUES.set("isLinux", isLinux); +CONSTANT_VALUES.set("isWindows", isWindows); +CONSTANT_VALUES.set("isWeb", isWeb); +CONSTANT_VALUES.set("isMacNative", isMacintosh && !isWeb); +CONSTANT_VALUES.set("isEdge", isEdge); +CONSTANT_VALUES.set("isFirefox", isFirefox); +CONSTANT_VALUES.set("isChrome", isChrome); +CONSTANT_VALUES.set("isSafari", isSafari); +var hasOwnProperty = Object.prototype.hasOwnProperty; +var defaultConfig = { + regexParsingWithErrorRecovery: true +}; +var errorEmptyString = localize("contextkey.parser.error.emptyString", "Empty context key expression"); +var hintEmptyString = localize("contextkey.parser.error.emptyString.hint", "Did you forget to write an expression? You can also put 'false' or 'true' to always evaluate to false or true, respectively."); +var errorNoInAfterNot = localize("contextkey.parser.error.noInAfterNot", "'in' after 'not'."); +var errorClosingParenthesis = localize("contextkey.parser.error.closingParenthesis", "closing parenthesis ')'"); +var errorUnexpectedToken = localize("contextkey.parser.error.unexpectedToken", "Unexpected token"); +var hintUnexpectedToken = localize("contextkey.parser.error.unexpectedToken.hint", "Did you forget to put && or || before the token?"); +var errorUnexpectedEOF = localize("contextkey.parser.error.unexpectedEOF", "Unexpected end of expression"); +var hintUnexpectedEOF = localize("contextkey.parser.error.unexpectedEOF.hint", "Did you forget to put a context key?"); +var Parser2 = class _Parser { + constructor(_config = defaultConfig) { + this._config = _config; + // lifetime note: `_scanner` lives as long as the parser does, i.e., is not reset between calls to `parse` + this._scanner = new Scanner(); + // lifetime note: `_tokens`, `_current`, and `_parsingErrors` must be reset between calls to `parse` + this._tokens = []; + this._current = 0; + // invariant: 0 <= this._current < this._tokens.length ; any incrementation of this value must first call `_isAtEnd` + this._parsingErrors = []; + this._flagsGYRe = /g|y/g; + } + static { + // Note: this doesn't produce an exact syntax tree but a normalized one + // ContextKeyExpression's that we use as AST nodes do not expose constructors that do not normalize + this._parseError = new Error(); + } + get lexingErrors() { + return this._scanner.errors; + } + get parsingErrors() { + return this._parsingErrors; + } + /** + * Parse a context key expression. + * + * @param input the expression to parse + * @returns the parsed expression or `undefined` if there's an error - call `lexingErrors` and `parsingErrors` to see the errors + */ + parse(input) { + if (input === "") { + this._parsingErrors.push({ message: errorEmptyString, offset: 0, lexeme: "", additionalInfo: hintEmptyString }); + return void 0; + } + this._tokens = this._scanner.reset(input).scan(); + this._current = 0; + this._parsingErrors = []; + try { + const expr = this._expr(); + if (!this._isAtEnd()) { + const peek = this._peek(); + const additionalInfo = peek.type === 17 /* Str */ ? hintUnexpectedToken : void 0; + this._parsingErrors.push({ message: errorUnexpectedToken, offset: peek.offset, lexeme: Scanner.getLexeme(peek), additionalInfo }); + throw _Parser._parseError; + } + return expr; + } catch (e) { + if (!(e === _Parser._parseError)) { + throw e; + } + return void 0; + } + } + _expr() { + return this._or(); + } + _or() { + const expr = [this._and()]; + while (this._matchOne(16 /* Or */)) { + const right = this._and(); + expr.push(right); + } + return expr.length === 1 ? expr[0] : ContextKeyExpr.or(...expr); + } + _and() { + const expr = [this._term()]; + while (this._matchOne(15 /* And */)) { + const right = this._term(); + expr.push(right); + } + return expr.length === 1 ? expr[0] : ContextKeyExpr.and(...expr); + } + _term() { + if (this._matchOne(2 /* Neg */)) { + const peek = this._peek(); + switch (peek.type) { + case 11 /* True */: + this._advance(); + return ContextKeyFalseExpr.INSTANCE; + case 12 /* False */: + this._advance(); + return ContextKeyTrueExpr.INSTANCE; + case 0 /* LParen */: { + this._advance(); + const expr = this._expr(); + this._consume(1 /* RParen */, errorClosingParenthesis); + return expr?.negate(); + } + case 17 /* Str */: + this._advance(); + return ContextKeyNotExpr.create(peek.lexeme); + default: + throw this._errExpectedButGot(`KEY | true | false | '(' expression ')'`, peek); + } + } + return this._primary(); + } + _primary() { + const peek = this._peek(); + switch (peek.type) { + case 11 /* True */: + this._advance(); + return ContextKeyExpr.true(); + case 12 /* False */: + this._advance(); + return ContextKeyExpr.false(); + case 0 /* LParen */: { + this._advance(); + const expr = this._expr(); + this._consume(1 /* RParen */, errorClosingParenthesis); + return expr; + } + case 17 /* Str */: { + const key = peek.lexeme; + this._advance(); + if (this._matchOne(9 /* RegexOp */)) { + const expr = this._peek(); + if (!this._config.regexParsingWithErrorRecovery) { + this._advance(); + if (expr.type !== 10 /* RegexStr */) { + throw this._errExpectedButGot(`REGEX`, expr); + } + const regexLexeme = expr.lexeme; + const closingSlashIndex = regexLexeme.lastIndexOf("/"); + const flags = closingSlashIndex === regexLexeme.length - 1 ? void 0 : this._removeFlagsGY(regexLexeme.substring(closingSlashIndex + 1)); + let regexp; + try { + regexp = new RegExp(regexLexeme.substring(1, closingSlashIndex), flags); + } catch (e) { + throw this._errExpectedButGot(`REGEX`, expr); + } + return ContextKeyRegexExpr.create(key, regexp); + } + switch (expr.type) { + case 10 /* RegexStr */: + case 19 /* Error */: { + const lexemeReconstruction = [expr.lexeme]; + this._advance(); + let followingToken = this._peek(); + let parenBalance = 0; + for (let i = 0; i < expr.lexeme.length; i++) { + if (expr.lexeme.charCodeAt(i) === 40 /* OpenParen */) { + parenBalance++; + } else if (expr.lexeme.charCodeAt(i) === 41 /* CloseParen */) { + parenBalance--; + } + } + while (!this._isAtEnd() && followingToken.type !== 15 /* And */ && followingToken.type !== 16 /* Or */) { + switch (followingToken.type) { + case 0 /* LParen */: + parenBalance++; + break; + case 1 /* RParen */: + parenBalance--; + break; + case 10 /* RegexStr */: + case 18 /* QuotedStr */: + for (let i = 0; i < followingToken.lexeme.length; i++) { + if (followingToken.lexeme.charCodeAt(i) === 40 /* OpenParen */) { + parenBalance++; + } else if (expr.lexeme.charCodeAt(i) === 41 /* CloseParen */) { + parenBalance--; + } + } + } + if (parenBalance < 0) { + break; + } + lexemeReconstruction.push(Scanner.getLexeme(followingToken)); + this._advance(); + followingToken = this._peek(); + } + const regexLexeme = lexemeReconstruction.join(""); + const closingSlashIndex = regexLexeme.lastIndexOf("/"); + const flags = closingSlashIndex === regexLexeme.length - 1 ? void 0 : this._removeFlagsGY(regexLexeme.substring(closingSlashIndex + 1)); + let regexp; + try { + regexp = new RegExp(regexLexeme.substring(1, closingSlashIndex), flags); + } catch (e) { + throw this._errExpectedButGot(`REGEX`, expr); + } + return ContextKeyExpr.regex(key, regexp); + } + case 18 /* QuotedStr */: { + const serializedValue = expr.lexeme; + this._advance(); + let regex = null; + if (!isFalsyOrWhitespace(serializedValue)) { + const start = serializedValue.indexOf("/"); + const end = serializedValue.lastIndexOf("/"); + if (start !== end && start >= 0) { + const value = serializedValue.slice(start + 1, end); + const caseIgnoreFlag = serializedValue[end + 1] === "i" ? "i" : ""; + try { + regex = new RegExp(value, caseIgnoreFlag); + } catch (_e) { + throw this._errExpectedButGot(`REGEX`, expr); + } + } + } + if (regex === null) { + throw this._errExpectedButGot("REGEX", expr); + } + return ContextKeyRegexExpr.create(key, regex); + } + default: + throw this._errExpectedButGot("REGEX", this._peek()); + } + } + if (this._matchOne(14 /* Not */)) { + this._consume(13 /* In */, errorNoInAfterNot); + const right = this._value(); + return ContextKeyExpr.notIn(key, right); + } + const maybeOp = this._peek().type; + switch (maybeOp) { + case 3 /* Eq */: { + this._advance(); + const right = this._value(); + if (this._previous().type === 18 /* QuotedStr */) { + return ContextKeyExpr.equals(key, right); + } + switch (right) { + case "true": + return ContextKeyExpr.has(key); + case "false": + return ContextKeyExpr.not(key); + default: + return ContextKeyExpr.equals(key, right); + } + } + case 4 /* NotEq */: { + this._advance(); + const right = this._value(); + if (this._previous().type === 18 /* QuotedStr */) { + return ContextKeyExpr.notEquals(key, right); + } + switch (right) { + case "true": + return ContextKeyExpr.not(key); + case "false": + return ContextKeyExpr.has(key); + default: + return ContextKeyExpr.notEquals(key, right); + } + } + // TODO: ContextKeyExpr.smaller(key, right) accepts only `number` as `right` AND during eval of this node, we just eval to `false` if `right` is not a number + // consequently, package.json linter should _warn_ the user if they're passing undesired things to ops + case 5 /* Lt */: + this._advance(); + return ContextKeySmallerExpr.create(key, this._value()); + case 6 /* LtEq */: + this._advance(); + return ContextKeySmallerEqualsExpr.create(key, this._value()); + case 7 /* Gt */: + this._advance(); + return ContextKeyGreaterExpr.create(key, this._value()); + case 8 /* GtEq */: + this._advance(); + return ContextKeyGreaterEqualsExpr.create(key, this._value()); + case 13 /* In */: + this._advance(); + return ContextKeyExpr.in(key, this._value()); + default: + return ContextKeyExpr.has(key); + } + } + case 20 /* EOF */: + this._parsingErrors.push({ message: errorUnexpectedEOF, offset: peek.offset, lexeme: "", additionalInfo: hintUnexpectedEOF }); + throw _Parser._parseError; + default: + throw this._errExpectedButGot(`true | false | KEY + | KEY '=~' REGEX + | KEY ('==' | '!=' | '<' | '<=' | '>' | '>=' | 'in' | 'not' 'in') value`, this._peek()); + } + } + _value() { + const token = this._peek(); + switch (token.type) { + case 17 /* Str */: + case 18 /* QuotedStr */: + this._advance(); + return token.lexeme; + case 11 /* True */: + this._advance(); + return "true"; + case 12 /* False */: + this._advance(); + return "false"; + case 13 /* In */: + this._advance(); + return "in"; + default: + return ""; + } + } + _removeFlagsGY(flags) { + return flags.replaceAll(this._flagsGYRe, ""); + } + // careful: this can throw if current token is the initial one (ie index = 0) + _previous() { + return this._tokens[this._current - 1]; + } + _matchOne(token) { + if (this._check(token)) { + this._advance(); + return true; + } + return false; + } + _advance() { + if (!this._isAtEnd()) { + this._current++; + } + return this._previous(); + } + _consume(type, message) { + if (this._check(type)) { + return this._advance(); + } + throw this._errExpectedButGot(message, this._peek()); + } + _errExpectedButGot(expected, got, additionalInfo) { + const message = localize("contextkey.parser.error.expectedButGot", "Expected: {0}\nReceived: '{1}'.", expected, Scanner.getLexeme(got)); + const offset = got.offset; + const lexeme = Scanner.getLexeme(got); + this._parsingErrors.push({ message, offset, lexeme, additionalInfo }); + return _Parser._parseError; + } + _check(type) { + return this._peek().type === type; + } + _peek() { + return this._tokens[this._current]; + } + _isAtEnd() { + return this._peek().type === 20 /* EOF */; + } +}; +var ContextKeyExpr = class { + static false() { + return ContextKeyFalseExpr.INSTANCE; + } + static true() { + return ContextKeyTrueExpr.INSTANCE; + } + static has(key) { + return ContextKeyDefinedExpr.create(key); + } + static equals(key, value) { + return ContextKeyEqualsExpr.create(key, value); + } + static notEquals(key, value) { + return ContextKeyNotEqualsExpr.create(key, value); + } + static regex(key, value) { + return ContextKeyRegexExpr.create(key, value); + } + static in(key, value) { + return ContextKeyInExpr.create(key, value); + } + static notIn(key, value) { + return ContextKeyNotInExpr.create(key, value); + } + static not(key) { + return ContextKeyNotExpr.create(key); + } + static and(...expr) { + return ContextKeyAndExpr.create(expr, null, true); + } + static or(...expr) { + return ContextKeyOrExpr.create(expr, null, true); + } + static greater(key, value) { + return ContextKeyGreaterExpr.create(key, value); + } + static greaterEquals(key, value) { + return ContextKeyGreaterEqualsExpr.create(key, value); + } + static smaller(key, value) { + return ContextKeySmallerExpr.create(key, value); + } + static smallerEquals(key, value) { + return ContextKeySmallerEqualsExpr.create(key, value); + } + static { + this._parser = new Parser2({ regexParsingWithErrorRecovery: false }); + } + static deserialize(serialized) { + if (serialized === void 0 || serialized === null) { + return void 0; + } + const expr = this._parser.parse(serialized); + return expr; + } +}; +function cmp(a, b) { + return a.cmp(b); +} +var ContextKeyFalseExpr = class _ContextKeyFalseExpr { + constructor() { + this.type = 0 /* False */; + } + static { + this.INSTANCE = new _ContextKeyFalseExpr(); + } + cmp(other) { + return this.type - other.type; + } + equals(other) { + return other.type === this.type; + } + substituteConstants() { + return this; + } + evaluate(context) { + return false; + } + serialize() { + return "false"; + } + keys() { + return []; + } + map(mapFnc) { + return this; + } + negate() { + return ContextKeyTrueExpr.INSTANCE; + } +}; +var ContextKeyTrueExpr = class _ContextKeyTrueExpr { + constructor() { + this.type = 1 /* True */; + } + static { + this.INSTANCE = new _ContextKeyTrueExpr(); + } + cmp(other) { + return this.type - other.type; + } + equals(other) { + return other.type === this.type; + } + substituteConstants() { + return this; + } + evaluate(context) { + return true; + } + serialize() { + return "true"; + } + keys() { + return []; + } + map(mapFnc) { + return this; + } + negate() { + return ContextKeyFalseExpr.INSTANCE; + } +}; +var ContextKeyDefinedExpr = class _ContextKeyDefinedExpr { + constructor(key, negated) { + this.key = key; + this.negated = negated; + this.type = 2 /* Defined */; + } + static create(key, negated = null) { + const constantValue = CONSTANT_VALUES.get(key); + if (typeof constantValue === "boolean") { + return constantValue ? ContextKeyTrueExpr.INSTANCE : ContextKeyFalseExpr.INSTANCE; + } + return new _ContextKeyDefinedExpr(key, negated); + } + cmp(other) { + if (other.type !== this.type) { + return this.type - other.type; + } + return cmp1(this.key, other.key); + } + equals(other) { + if (other.type === this.type) { + return this.key === other.key; + } + return false; + } + substituteConstants() { + const constantValue = CONSTANT_VALUES.get(this.key); + if (typeof constantValue === "boolean") { + return constantValue ? ContextKeyTrueExpr.INSTANCE : ContextKeyFalseExpr.INSTANCE; + } + return this; + } + evaluate(context) { + return !!context.getValue(this.key); + } + serialize() { + return this.key; + } + keys() { + return [this.key]; + } + map(mapFnc) { + return mapFnc.mapDefined(this.key); + } + negate() { + if (!this.negated) { + this.negated = ContextKeyNotExpr.create(this.key, this); + } + return this.negated; + } +}; +var ContextKeyEqualsExpr = class _ContextKeyEqualsExpr { + constructor(key, value, negated) { + this.key = key; + this.value = value; + this.negated = negated; + this.type = 4 /* Equals */; + } + static create(key, value, negated = null) { + if (typeof value === "boolean") { + return value ? ContextKeyDefinedExpr.create(key, negated) : ContextKeyNotExpr.create(key, negated); + } + const constantValue = CONSTANT_VALUES.get(key); + if (typeof constantValue === "boolean") { + const trueValue = constantValue ? "true" : "false"; + return value === trueValue ? ContextKeyTrueExpr.INSTANCE : ContextKeyFalseExpr.INSTANCE; + } + return new _ContextKeyEqualsExpr(key, value, negated); + } + cmp(other) { + if (other.type !== this.type) { + return this.type - other.type; + } + return cmp2(this.key, this.value, other.key, other.value); + } + equals(other) { + if (other.type === this.type) { + return this.key === other.key && this.value === other.value; + } + return false; + } + substituteConstants() { + const constantValue = CONSTANT_VALUES.get(this.key); + if (typeof constantValue === "boolean") { + const trueValue = constantValue ? "true" : "false"; + return this.value === trueValue ? ContextKeyTrueExpr.INSTANCE : ContextKeyFalseExpr.INSTANCE; + } + return this; + } + evaluate(context) { + return context.getValue(this.key) == this.value; + } + serialize() { + return `${this.key} == '${this.value}'`; + } + keys() { + return [this.key]; + } + map(mapFnc) { + return mapFnc.mapEquals(this.key, this.value); + } + negate() { + if (!this.negated) { + this.negated = ContextKeyNotEqualsExpr.create(this.key, this.value, this); + } + return this.negated; + } +}; +var ContextKeyInExpr = class _ContextKeyInExpr { + constructor(key, valueKey) { + this.key = key; + this.valueKey = valueKey; + this.type = 10 /* In */; + this.negated = null; + } + static create(key, valueKey) { + return new _ContextKeyInExpr(key, valueKey); + } + cmp(other) { + if (other.type !== this.type) { + return this.type - other.type; + } + return cmp2(this.key, this.valueKey, other.key, other.valueKey); + } + equals(other) { + if (other.type === this.type) { + return this.key === other.key && this.valueKey === other.valueKey; + } + return false; + } + substituteConstants() { + return this; + } + evaluate(context) { + const source = context.getValue(this.valueKey); + const item = context.getValue(this.key); + if (Array.isArray(source)) { + return source.includes(item); + } + if (typeof item === "string" && typeof source === "object" && source !== null) { + return hasOwnProperty.call(source, item); + } + return false; + } + serialize() { + return `${this.key} in '${this.valueKey}'`; + } + keys() { + return [this.key, this.valueKey]; + } + map(mapFnc) { + return mapFnc.mapIn(this.key, this.valueKey); + } + negate() { + if (!this.negated) { + this.negated = ContextKeyNotInExpr.create(this.key, this.valueKey); + } + return this.negated; + } +}; +var ContextKeyNotInExpr = class _ContextKeyNotInExpr { + constructor(key, valueKey) { + this.key = key; + this.valueKey = valueKey; + this.type = 11 /* NotIn */; + this._negated = ContextKeyInExpr.create(key, valueKey); + } + static create(key, valueKey) { + return new _ContextKeyNotInExpr(key, valueKey); + } + cmp(other) { + if (other.type !== this.type) { + return this.type - other.type; + } + return this._negated.cmp(other._negated); + } + equals(other) { + if (other.type === this.type) { + return this._negated.equals(other._negated); + } + return false; + } + substituteConstants() { + return this; + } + evaluate(context) { + return !this._negated.evaluate(context); + } + serialize() { + return `${this.key} not in '${this.valueKey}'`; + } + keys() { + return this._negated.keys(); + } + map(mapFnc) { + return mapFnc.mapNotIn(this.key, this.valueKey); + } + negate() { + return this._negated; + } +}; +var ContextKeyNotEqualsExpr = class _ContextKeyNotEqualsExpr { + constructor(key, value, negated) { + this.key = key; + this.value = value; + this.negated = negated; + this.type = 5 /* NotEquals */; + } + static create(key, value, negated = null) { + if (typeof value === "boolean") { + if (value) { + return ContextKeyNotExpr.create(key, negated); + } + return ContextKeyDefinedExpr.create(key, negated); + } + const constantValue = CONSTANT_VALUES.get(key); + if (typeof constantValue === "boolean") { + const falseValue = constantValue ? "true" : "false"; + return value === falseValue ? ContextKeyFalseExpr.INSTANCE : ContextKeyTrueExpr.INSTANCE; + } + return new _ContextKeyNotEqualsExpr(key, value, negated); + } + cmp(other) { + if (other.type !== this.type) { + return this.type - other.type; + } + return cmp2(this.key, this.value, other.key, other.value); + } + equals(other) { + if (other.type === this.type) { + return this.key === other.key && this.value === other.value; + } + return false; + } + substituteConstants() { + const constantValue = CONSTANT_VALUES.get(this.key); + if (typeof constantValue === "boolean") { + const falseValue = constantValue ? "true" : "false"; + return this.value === falseValue ? ContextKeyFalseExpr.INSTANCE : ContextKeyTrueExpr.INSTANCE; + } + return this; + } + evaluate(context) { + return context.getValue(this.key) != this.value; + } + serialize() { + return `${this.key} != '${this.value}'`; + } + keys() { + return [this.key]; + } + map(mapFnc) { + return mapFnc.mapNotEquals(this.key, this.value); + } + negate() { + if (!this.negated) { + this.negated = ContextKeyEqualsExpr.create(this.key, this.value, this); + } + return this.negated; + } +}; +var ContextKeyNotExpr = class _ContextKeyNotExpr { + constructor(key, negated) { + this.key = key; + this.negated = negated; + this.type = 3 /* Not */; + } + static create(key, negated = null) { + const constantValue = CONSTANT_VALUES.get(key); + if (typeof constantValue === "boolean") { + return constantValue ? ContextKeyFalseExpr.INSTANCE : ContextKeyTrueExpr.INSTANCE; + } + return new _ContextKeyNotExpr(key, negated); + } + cmp(other) { + if (other.type !== this.type) { + return this.type - other.type; + } + return cmp1(this.key, other.key); + } + equals(other) { + if (other.type === this.type) { + return this.key === other.key; + } + return false; + } + substituteConstants() { + const constantValue = CONSTANT_VALUES.get(this.key); + if (typeof constantValue === "boolean") { + return constantValue ? ContextKeyFalseExpr.INSTANCE : ContextKeyTrueExpr.INSTANCE; + } + return this; + } + evaluate(context) { + return !context.getValue(this.key); + } + serialize() { + return `!${this.key}`; + } + keys() { + return [this.key]; + } + map(mapFnc) { + return mapFnc.mapNot(this.key); + } + negate() { + if (!this.negated) { + this.negated = ContextKeyDefinedExpr.create(this.key, this); + } + return this.negated; + } +}; +function withFloatOrStr(value, callback) { + if (typeof value === "string") { + const n = parseFloat(value); + if (!isNaN(n)) { + value = n; + } + } + if (typeof value === "string" || typeof value === "number") { + return callback(value); + } + return ContextKeyFalseExpr.INSTANCE; +} +var ContextKeyGreaterExpr = class _ContextKeyGreaterExpr { + constructor(key, value, negated) { + this.key = key; + this.value = value; + this.negated = negated; + this.type = 12 /* Greater */; + } + static create(key, _value, negated = null) { + return withFloatOrStr(_value, (value) => new _ContextKeyGreaterExpr(key, value, negated)); + } + cmp(other) { + if (other.type !== this.type) { + return this.type - other.type; + } + return cmp2(this.key, this.value, other.key, other.value); + } + equals(other) { + if (other.type === this.type) { + return this.key === other.key && this.value === other.value; + } + return false; + } + substituteConstants() { + return this; + } + evaluate(context) { + if (typeof this.value === "string") { + return false; + } + return parseFloat(context.getValue(this.key)) > this.value; + } + serialize() { + return `${this.key} > ${this.value}`; + } + keys() { + return [this.key]; + } + map(mapFnc) { + return mapFnc.mapGreater(this.key, this.value); + } + negate() { + if (!this.negated) { + this.negated = ContextKeySmallerEqualsExpr.create(this.key, this.value, this); + } + return this.negated; + } +}; +var ContextKeyGreaterEqualsExpr = class _ContextKeyGreaterEqualsExpr { + constructor(key, value, negated) { + this.key = key; + this.value = value; + this.negated = negated; + this.type = 13 /* GreaterEquals */; + } + static create(key, _value, negated = null) { + return withFloatOrStr(_value, (value) => new _ContextKeyGreaterEqualsExpr(key, value, negated)); + } + cmp(other) { + if (other.type !== this.type) { + return this.type - other.type; + } + return cmp2(this.key, this.value, other.key, other.value); + } + equals(other) { + if (other.type === this.type) { + return this.key === other.key && this.value === other.value; + } + return false; + } + substituteConstants() { + return this; + } + evaluate(context) { + if (typeof this.value === "string") { + return false; + } + return parseFloat(context.getValue(this.key)) >= this.value; + } + serialize() { + return `${this.key} >= ${this.value}`; + } + keys() { + return [this.key]; + } + map(mapFnc) { + return mapFnc.mapGreaterEquals(this.key, this.value); + } + negate() { + if (!this.negated) { + this.negated = ContextKeySmallerExpr.create(this.key, this.value, this); + } + return this.negated; + } +}; +var ContextKeySmallerExpr = class _ContextKeySmallerExpr { + constructor(key, value, negated) { + this.key = key; + this.value = value; + this.negated = negated; + this.type = 14 /* Smaller */; + } + static create(key, _value, negated = null) { + return withFloatOrStr(_value, (value) => new _ContextKeySmallerExpr(key, value, negated)); + } + cmp(other) { + if (other.type !== this.type) { + return this.type - other.type; + } + return cmp2(this.key, this.value, other.key, other.value); + } + equals(other) { + if (other.type === this.type) { + return this.key === other.key && this.value === other.value; + } + return false; + } + substituteConstants() { + return this; + } + evaluate(context) { + if (typeof this.value === "string") { + return false; + } + return parseFloat(context.getValue(this.key)) < this.value; + } + serialize() { + return `${this.key} < ${this.value}`; + } + keys() { + return [this.key]; + } + map(mapFnc) { + return mapFnc.mapSmaller(this.key, this.value); + } + negate() { + if (!this.negated) { + this.negated = ContextKeyGreaterEqualsExpr.create(this.key, this.value, this); + } + return this.negated; + } +}; +var ContextKeySmallerEqualsExpr = class _ContextKeySmallerEqualsExpr { + constructor(key, value, negated) { + this.key = key; + this.value = value; + this.negated = negated; + this.type = 15 /* SmallerEquals */; + } + static create(key, _value, negated = null) { + return withFloatOrStr(_value, (value) => new _ContextKeySmallerEqualsExpr(key, value, negated)); + } + cmp(other) { + if (other.type !== this.type) { + return this.type - other.type; + } + return cmp2(this.key, this.value, other.key, other.value); + } + equals(other) { + if (other.type === this.type) { + return this.key === other.key && this.value === other.value; + } + return false; + } + substituteConstants() { + return this; + } + evaluate(context) { + if (typeof this.value === "string") { + return false; + } + return parseFloat(context.getValue(this.key)) <= this.value; + } + serialize() { + return `${this.key} <= ${this.value}`; + } + keys() { + return [this.key]; + } + map(mapFnc) { + return mapFnc.mapSmallerEquals(this.key, this.value); + } + negate() { + if (!this.negated) { + this.negated = ContextKeyGreaterExpr.create(this.key, this.value, this); + } + return this.negated; + } +}; +var ContextKeyRegexExpr = class _ContextKeyRegexExpr { + constructor(key, regexp) { + this.key = key; + this.regexp = regexp; + this.type = 7 /* Regex */; + this.negated = null; + } + static create(key, regexp) { + return new _ContextKeyRegexExpr(key, regexp); + } + cmp(other) { + if (other.type !== this.type) { + return this.type - other.type; + } + if (this.key < other.key) { + return -1; + } + if (this.key > other.key) { + return 1; + } + const thisSource = this.regexp ? this.regexp.source : ""; + const otherSource = other.regexp ? other.regexp.source : ""; + if (thisSource < otherSource) { + return -1; + } + if (thisSource > otherSource) { + return 1; + } + return 0; + } + equals(other) { + if (other.type === this.type) { + const thisSource = this.regexp ? this.regexp.source : ""; + const otherSource = other.regexp ? other.regexp.source : ""; + return this.key === other.key && thisSource === otherSource; + } + return false; + } + substituteConstants() { + return this; + } + evaluate(context) { + const value = context.getValue(this.key); + return this.regexp ? this.regexp.test(value) : false; + } + serialize() { + const value = this.regexp ? `/${this.regexp.source}/${this.regexp.flags}` : "/invalid/"; + return `${this.key} =~ ${value}`; + } + keys() { + return [this.key]; + } + map(mapFnc) { + return mapFnc.mapRegex(this.key, this.regexp); + } + negate() { + if (!this.negated) { + this.negated = ContextKeyNotRegexExpr.create(this); + } + return this.negated; + } +}; +var ContextKeyNotRegexExpr = class _ContextKeyNotRegexExpr { + constructor(_actual) { + this._actual = _actual; + this.type = 8 /* NotRegex */; + } + static create(actual) { + return new _ContextKeyNotRegexExpr(actual); + } + cmp(other) { + if (other.type !== this.type) { + return this.type - other.type; + } + return this._actual.cmp(other._actual); + } + equals(other) { + if (other.type === this.type) { + return this._actual.equals(other._actual); + } + return false; + } + substituteConstants() { + return this; + } + evaluate(context) { + return !this._actual.evaluate(context); + } + serialize() { + return `!(${this._actual.serialize()})`; + } + keys() { + return this._actual.keys(); + } + map(mapFnc) { + return new _ContextKeyNotRegexExpr(this._actual.map(mapFnc)); + } + negate() { + return this._actual; + } +}; +function eliminateConstantsInArray(arr) { + let newArr = null; + for (let i = 0, len = arr.length; i < len; i++) { + const newExpr = arr[i].substituteConstants(); + if (arr[i] !== newExpr) { + if (newArr === null) { + newArr = []; + for (let j = 0; j < i; j++) { + newArr[j] = arr[j]; + } + } + } + if (newArr !== null) { + newArr[i] = newExpr; + } + } + if (newArr === null) { + return arr; + } + return newArr; +} +var ContextKeyAndExpr = class _ContextKeyAndExpr { + constructor(expr, negated) { + this.expr = expr; + this.negated = negated; + this.type = 6 /* And */; + } + static create(_expr, negated, extraRedundantCheck) { + return _ContextKeyAndExpr._normalizeArr(_expr, negated, extraRedundantCheck); + } + cmp(other) { + if (other.type !== this.type) { + return this.type - other.type; + } + if (this.expr.length < other.expr.length) { + return -1; + } + if (this.expr.length > other.expr.length) { + return 1; + } + for (let i = 0, len = this.expr.length; i < len; i++) { + const r = cmp(this.expr[i], other.expr[i]); + if (r !== 0) { + return r; + } + } + return 0; + } + equals(other) { + if (other.type === this.type) { + if (this.expr.length !== other.expr.length) { + return false; + } + for (let i = 0, len = this.expr.length; i < len; i++) { + if (!this.expr[i].equals(other.expr[i])) { + return false; + } + } + return true; + } + return false; + } + substituteConstants() { + const exprArr = eliminateConstantsInArray(this.expr); + if (exprArr === this.expr) { + return this; + } + return _ContextKeyAndExpr.create(exprArr, this.negated, false); + } + evaluate(context) { + for (let i = 0, len = this.expr.length; i < len; i++) { + if (!this.expr[i].evaluate(context)) { + return false; + } + } + return true; + } + static _normalizeArr(arr, negated, extraRedundantCheck) { + const expr = []; + let hasTrue = false; + for (const e of arr) { + if (!e) { + continue; + } + if (e.type === 1 /* True */) { + hasTrue = true; + continue; + } + if (e.type === 0 /* False */) { + return ContextKeyFalseExpr.INSTANCE; + } + if (e.type === 6 /* And */) { + expr.push(...e.expr); + continue; + } + expr.push(e); + } + if (expr.length === 0 && hasTrue) { + return ContextKeyTrueExpr.INSTANCE; + } + if (expr.length === 0) { + return void 0; + } + if (expr.length === 1) { + return expr[0]; + } + expr.sort(cmp); + for (let i = 1; i < expr.length; i++) { + if (expr[i - 1].equals(expr[i])) { + expr.splice(i, 1); + i--; + } + } + if (expr.length === 1) { + return expr[0]; + } + while (expr.length > 1) { + const lastElement = expr[expr.length - 1]; + if (lastElement.type !== 9 /* Or */) { + break; + } + expr.pop(); + const secondToLastElement = expr.pop(); + const isFinished = expr.length === 0; + const resultElement = ContextKeyOrExpr.create( + lastElement.expr.map((el) => _ContextKeyAndExpr.create([el, secondToLastElement], null, extraRedundantCheck)), + null, + isFinished + ); + if (resultElement) { + expr.push(resultElement); + expr.sort(cmp); + } + } + if (expr.length === 1) { + return expr[0]; + } + if (extraRedundantCheck) { + for (let i = 0; i < expr.length; i++) { + for (let j = i + 1; j < expr.length; j++) { + if (expr[i].negate().equals(expr[j])) { + return ContextKeyFalseExpr.INSTANCE; + } + } + } + if (expr.length === 1) { + return expr[0]; + } + } + return new _ContextKeyAndExpr(expr, negated); + } + serialize() { + return this.expr.map((e) => e.serialize()).join(" && "); + } + keys() { + const result = []; + for (const expr of this.expr) { + result.push(...expr.keys()); + } + return result; + } + map(mapFnc) { + return new _ContextKeyAndExpr(this.expr.map((expr) => expr.map(mapFnc)), null); + } + negate() { + if (!this.negated) { + const result = []; + for (const expr of this.expr) { + result.push(expr.negate()); + } + this.negated = ContextKeyOrExpr.create(result, this, true); + } + return this.negated; + } +}; +var ContextKeyOrExpr = class _ContextKeyOrExpr { + constructor(expr, negated) { + this.expr = expr; + this.negated = negated; + this.type = 9 /* Or */; + } + static create(_expr, negated, extraRedundantCheck) { + return _ContextKeyOrExpr._normalizeArr(_expr, negated, extraRedundantCheck); + } + cmp(other) { + if (other.type !== this.type) { + return this.type - other.type; + } + if (this.expr.length < other.expr.length) { + return -1; + } + if (this.expr.length > other.expr.length) { + return 1; + } + for (let i = 0, len = this.expr.length; i < len; i++) { + const r = cmp(this.expr[i], other.expr[i]); + if (r !== 0) { + return r; + } + } + return 0; + } + equals(other) { + if (other.type === this.type) { + if (this.expr.length !== other.expr.length) { + return false; + } + for (let i = 0, len = this.expr.length; i < len; i++) { + if (!this.expr[i].equals(other.expr[i])) { + return false; + } + } + return true; + } + return false; + } + substituteConstants() { + const exprArr = eliminateConstantsInArray(this.expr); + if (exprArr === this.expr) { + return this; + } + return _ContextKeyOrExpr.create(exprArr, this.negated, false); + } + evaluate(context) { + for (let i = 0, len = this.expr.length; i < len; i++) { + if (this.expr[i].evaluate(context)) { + return true; + } + } + return false; + } + static _normalizeArr(arr, negated, extraRedundantCheck) { + let expr = []; + let hasFalse = false; + if (arr) { + for (let i = 0, len = arr.length; i < len; i++) { + const e = arr[i]; + if (!e) { + continue; + } + if (e.type === 0 /* False */) { + hasFalse = true; + continue; + } + if (e.type === 1 /* True */) { + return ContextKeyTrueExpr.INSTANCE; + } + if (e.type === 9 /* Or */) { + expr = expr.concat(e.expr); + continue; + } + expr.push(e); + } + if (expr.length === 0 && hasFalse) { + return ContextKeyFalseExpr.INSTANCE; + } + expr.sort(cmp); + } + if (expr.length === 0) { + return void 0; + } + if (expr.length === 1) { + return expr[0]; + } + for (let i = 1; i < expr.length; i++) { + if (expr[i - 1].equals(expr[i])) { + expr.splice(i, 1); + i--; + } + } + if (expr.length === 1) { + return expr[0]; + } + if (extraRedundantCheck) { + for (let i = 0; i < expr.length; i++) { + for (let j = i + 1; j < expr.length; j++) { + if (expr[i].negate().equals(expr[j])) { + return ContextKeyTrueExpr.INSTANCE; + } + } + } + if (expr.length === 1) { + return expr[0]; + } + } + return new _ContextKeyOrExpr(expr, negated); + } + serialize() { + return this.expr.map((e) => e.serialize()).join(" || "); + } + keys() { + const result = []; + for (const expr of this.expr) { + result.push(...expr.keys()); + } + return result; + } + map(mapFnc) { + return new _ContextKeyOrExpr(this.expr.map((expr) => expr.map(mapFnc)), null); + } + negate() { + if (!this.negated) { + const result = []; + for (const expr of this.expr) { + result.push(expr.negate()); + } + while (result.length > 1) { + const LEFT = result.shift(); + const RIGHT = result.shift(); + const all = []; + for (const left of getTerminals(LEFT)) { + for (const right of getTerminals(RIGHT)) { + all.push(ContextKeyAndExpr.create([left, right], null, false)); + } + } + result.unshift(_ContextKeyOrExpr.create(all, null, false)); + } + this.negated = _ContextKeyOrExpr.create(result, this, true); + } + return this.negated; + } +}; +var RawContextKey = class _RawContextKey extends ContextKeyDefinedExpr { + static { + this._info = []; + } + static all() { + return _RawContextKey._info.values(); + } + constructor(key, defaultValue, metaOrHide) { + super(key, null); + this._defaultValue = defaultValue; + if (typeof metaOrHide === "object") { + _RawContextKey._info.push({ ...metaOrHide, key }); + } else if (metaOrHide !== true) { + _RawContextKey._info.push({ key, description: metaOrHide, type: defaultValue !== null && defaultValue !== void 0 ? typeof defaultValue : void 0 }); + } + } + bindTo(target) { + return target.createKey(this.key, this._defaultValue); + } + getValue(target) { + return target.getContextKeyValue(this.key); + } + toNegated() { + return this.negate(); + } + isEqualTo(value) { + return ContextKeyEqualsExpr.create(this.key, value); + } + notEqualsTo(value) { + return ContextKeyNotEqualsExpr.create(this.key, value); + } +}; +var IContextKeyService = createDecorator("contextKeyService"); +function cmp1(key1, key2) { + if (key1 < key2) { + return -1; + } + if (key1 > key2) { + return 1; + } + return 0; +} +function cmp2(key1, value1, key2, value2) { + if (key1 < key2) { + return -1; + } + if (key1 > key2) { + return 1; + } + if (value1 < value2) { + return -1; + } + if (value1 > value2) { + return 1; + } + return 0; +} +function getTerminals(node) { + if (node.type === 9 /* Or */) { + return node.expr; + } + return [node]; +} + +// ../../../../../platform/commands/common/commands.ts +var ICommandService = createDecorator("commandService"); +var CommandsRegistry = new class { + constructor() { + this._commands = /* @__PURE__ */ new Map(); + this._onDidRegisterCommand = new Emitter(); + this.onDidRegisterCommand = this._onDidRegisterCommand.event; + } + registerCommand(idOrCommand, handler) { + if (!idOrCommand) { + throw new Error(`invalid command`); + } + if (typeof idOrCommand === "string") { + if (!handler) { + throw new Error(`invalid command`); + } + return this.registerCommand({ id: idOrCommand, handler }); + } + if (idOrCommand.metadata && Array.isArray(idOrCommand.metadata.args)) { + const constraints = []; + for (const arg of idOrCommand.metadata.args) { + constraints.push(arg.constraint); + } + const actualHandler = idOrCommand.handler; + idOrCommand.handler = function(accessor, ...args) { + validateConstraints(args, constraints); + return actualHandler(accessor, ...args); + }; + } + const { id: id2 } = idOrCommand; + let commands = this._commands.get(id2); + if (!commands) { + commands = new LinkedList(); + this._commands.set(id2, commands); + } + const removeFn = commands.unshift(idOrCommand); + const ret = toDisposable(() => { + removeFn(); + const command = this._commands.get(id2); + if (command?.isEmpty()) { + this._commands.delete(id2); + } + }); + this._onDidRegisterCommand.fire(id2); + return ret; + } + registerCommandAlias(oldId, newId) { + return CommandsRegistry.registerCommand(oldId, (accessor, ...args) => accessor.get(ICommandService).executeCommand(newId, ...args)); + } + getCommand(id2) { + const list = this._commands.get(id2); + if (!list || list.isEmpty()) { + return void 0; + } + return Iterable.first(list); + } + getCommands() { + const result = /* @__PURE__ */ new Map(); + for (const key of this._commands.keys()) { + const command = this.getCommand(key); + if (command) { + result.set(key, command); + } + } + return result; + } +}(); +CommandsRegistry.registerCommand("noop", () => { +}); + +// ../../../../../platform/keybinding/common/keybindingsRegistry.ts +var KeybindingsRegistryImpl = class _KeybindingsRegistryImpl { + constructor() { + this._coreKeybindings = new LinkedList(); + this._extensionKeybindings = []; + this._cachedMergedKeybindings = null; + } + /** + * Take current platform into account and reduce to primary & secondary. + */ + static bindToCurrentPlatform(kb) { + if (OS === 1 /* Windows */) { + if (kb && kb.win) { + return kb.win; + } + } else if (OS === 2 /* Macintosh */) { + if (kb && kb.mac) { + return kb.mac; + } + } else { + if (kb && kb.linux) { + return kb.linux; + } + } + return kb; + } + registerKeybindingRule(rule) { + const actualKb = _KeybindingsRegistryImpl.bindToCurrentPlatform(rule); + const result = new DisposableStore(); + if (actualKb && actualKb.primary) { + const kk = decodeKeybinding(actualKb.primary, OS); + if (kk) { + result.add(this._registerDefaultKeybinding(kk, rule.id, rule.args, rule.weight, 0, rule.when)); + } + } + if (actualKb && Array.isArray(actualKb.secondary)) { + for (let i = 0, len = actualKb.secondary.length; i < len; i++) { + const k = actualKb.secondary[i]; + const kk = decodeKeybinding(k, OS); + if (kk) { + result.add(this._registerDefaultKeybinding(kk, rule.id, rule.args, rule.weight, -i - 1, rule.when)); + } + } + } + return result; + } + setExtensionKeybindings(rules) { + const result = []; + let keybindingsLen = 0; + for (const rule of rules) { + if (rule.keybinding) { + result[keybindingsLen++] = { + keybinding: rule.keybinding, + command: rule.id, + commandArgs: rule.args, + when: rule.when, + weight1: rule.weight, + weight2: 0, + extensionId: rule.extensionId || null, + isBuiltinExtension: rule.isBuiltinExtension || false + }; + } + } + this._extensionKeybindings = result; + this._cachedMergedKeybindings = null; + } + registerCommandAndKeybindingRule(desc) { + return combinedDisposable( + this.registerKeybindingRule(desc), + CommandsRegistry.registerCommand(desc) + ); + } + _registerDefaultKeybinding(keybinding, commandId, commandArgs, weight1, weight2, when) { + const remove = this._coreKeybindings.push({ + keybinding, + command: commandId, + commandArgs, + when, + weight1, + weight2, + extensionId: null, + isBuiltinExtension: false + }); + this._cachedMergedKeybindings = null; + return toDisposable(() => { + remove(); + this._cachedMergedKeybindings = null; + }); + } + getDefaultKeybindings() { + if (!this._cachedMergedKeybindings) { + this._cachedMergedKeybindings = Array.from(this._coreKeybindings).concat(this._extensionKeybindings); + this._cachedMergedKeybindings.sort(sorter); + } + return this._cachedMergedKeybindings.slice(0); + } +}; +var KeybindingsRegistry = new KeybindingsRegistryImpl(); +var Extensions6 = { + EditorModes: "platform.keybindingsRegistry" +}; +Registry.add(Extensions6.EditorModes, KeybindingsRegistry); +function sorter(a, b) { + if (a.weight1 !== b.weight1) { + return a.weight1 - b.weight1; + } + if (a.command && b.command) { + if (a.command < b.command) { + return -1; + } + if (a.command > b.command) { + return 1; + } + } + return a.weight2 - b.weight2; +} + +// ../../../../../platform/actions/common/actions.ts +function isIMenuItem(item) { + return item.command !== void 0; +} +function isISubmenuItem(item) { + return item.submenu !== void 0; +} +var MenuId = class _MenuId { + static { + this._instances = /* @__PURE__ */ new Map(); + } + static { + this.CommandPalette = new _MenuId("CommandPalette"); + } + static { + this.DebugBreakpointsContext = new _MenuId("DebugBreakpointsContext"); + } + static { + this.DebugCallStackContext = new _MenuId("DebugCallStackContext"); + } + static { + this.DebugConsoleContext = new _MenuId("DebugConsoleContext"); + } + static { + this.DebugVariablesContext = new _MenuId("DebugVariablesContext"); + } + static { + this.NotebookVariablesContext = new _MenuId("NotebookVariablesContext"); + } + static { + this.DebugHoverContext = new _MenuId("DebugHoverContext"); + } + static { + this.DebugWatchContext = new _MenuId("DebugWatchContext"); + } + static { + this.DebugToolBar = new _MenuId("DebugToolBar"); + } + static { + this.DebugToolBarStop = new _MenuId("DebugToolBarStop"); + } + static { + this.DebugCallStackToolbar = new _MenuId("DebugCallStackToolbar"); + } + static { + this.DebugCreateConfiguration = new _MenuId("DebugCreateConfiguration"); + } + static { + this.EditorContext = new _MenuId("EditorContext"); + } + static { + this.SimpleEditorContext = new _MenuId("SimpleEditorContext"); + } + static { + this.EditorContent = new _MenuId("EditorContent"); + } + static { + this.EditorLineNumberContext = new _MenuId("EditorLineNumberContext"); + } + static { + this.EditorContextCopy = new _MenuId("EditorContextCopy"); + } + static { + this.EditorContextPeek = new _MenuId("EditorContextPeek"); + } + static { + this.EditorContextShare = new _MenuId("EditorContextShare"); + } + static { + this.EditorTitle = new _MenuId("EditorTitle"); + } + static { + this.EditorTitleRun = new _MenuId("EditorTitleRun"); + } + static { + this.EditorTitleContext = new _MenuId("EditorTitleContext"); + } + static { + this.EditorTitleContextShare = new _MenuId("EditorTitleContextShare"); + } + static { + this.EmptyEditorGroup = new _MenuId("EmptyEditorGroup"); + } + static { + this.EmptyEditorGroupContext = new _MenuId("EmptyEditorGroupContext"); + } + static { + this.EditorTabsBarContext = new _MenuId("EditorTabsBarContext"); + } + static { + this.EditorTabsBarShowTabsSubmenu = new _MenuId("EditorTabsBarShowTabsSubmenu"); + } + static { + this.EditorTabsBarShowTabsZenModeSubmenu = new _MenuId("EditorTabsBarShowTabsZenModeSubmenu"); + } + static { + this.EditorActionsPositionSubmenu = new _MenuId("EditorActionsPositionSubmenu"); + } + static { + this.ExplorerContext = new _MenuId("ExplorerContext"); + } + static { + this.ExplorerContextShare = new _MenuId("ExplorerContextShare"); + } + static { + this.ExtensionContext = new _MenuId("ExtensionContext"); + } + static { + this.ExtensionEditorContextMenu = new _MenuId("ExtensionEditorContextMenu"); + } + static { + this.GlobalActivity = new _MenuId("GlobalActivity"); + } + static { + this.CommandCenter = new _MenuId("CommandCenter"); + } + static { + this.CommandCenterCenter = new _MenuId("CommandCenterCenter"); + } + static { + this.LayoutControlMenuSubmenu = new _MenuId("LayoutControlMenuSubmenu"); + } + static { + this.LayoutControlMenu = new _MenuId("LayoutControlMenu"); + } + static { + this.MenubarMainMenu = new _MenuId("MenubarMainMenu"); + } + static { + this.MenubarAppearanceMenu = new _MenuId("MenubarAppearanceMenu"); + } + static { + this.MenubarDebugMenu = new _MenuId("MenubarDebugMenu"); + } + static { + this.MenubarEditMenu = new _MenuId("MenubarEditMenu"); + } + static { + this.MenubarCopy = new _MenuId("MenubarCopy"); + } + static { + this.MenubarFileMenu = new _MenuId("MenubarFileMenu"); + } + static { + this.MenubarGoMenu = new _MenuId("MenubarGoMenu"); + } + static { + this.MenubarHelpMenu = new _MenuId("MenubarHelpMenu"); + } + static { + this.MenubarLayoutMenu = new _MenuId("MenubarLayoutMenu"); + } + static { + this.MenubarNewBreakpointMenu = new _MenuId("MenubarNewBreakpointMenu"); + } + static { + this.PanelAlignmentMenu = new _MenuId("PanelAlignmentMenu"); + } + static { + this.PanelPositionMenu = new _MenuId("PanelPositionMenu"); + } + static { + this.ActivityBarPositionMenu = new _MenuId("ActivityBarPositionMenu"); + } + static { + this.MenubarPreferencesMenu = new _MenuId("MenubarPreferencesMenu"); + } + static { + this.MenubarRecentMenu = new _MenuId("MenubarRecentMenu"); + } + static { + this.MenubarSelectionMenu = new _MenuId("MenubarSelectionMenu"); + } + static { + this.MenubarShare = new _MenuId("MenubarShare"); + } + static { + this.MenubarSwitchEditorMenu = new _MenuId("MenubarSwitchEditorMenu"); + } + static { + this.MenubarSwitchGroupMenu = new _MenuId("MenubarSwitchGroupMenu"); + } + static { + this.MenubarTerminalMenu = new _MenuId("MenubarTerminalMenu"); + } + static { + this.MenubarViewMenu = new _MenuId("MenubarViewMenu"); + } + static { + this.MenubarHomeMenu = new _MenuId("MenubarHomeMenu"); + } + static { + this.OpenEditorsContext = new _MenuId("OpenEditorsContext"); + } + static { + this.OpenEditorsContextShare = new _MenuId("OpenEditorsContextShare"); + } + static { + this.ProblemsPanelContext = new _MenuId("ProblemsPanelContext"); + } + static { + this.SCMInputBox = new _MenuId("SCMInputBox"); + } + static { + this.SCMChangesContext = new _MenuId("SCMChangesContext"); + } + static { + this.SCMChangeContext = new _MenuId("SCMChangeContext"); + } + static { + this.SCMResourceContext = new _MenuId("SCMResourceContext"); + } + static { + this.SCMResourceContextShare = new _MenuId("SCMResourceContextShare"); + } + static { + this.SCMResourceFolderContext = new _MenuId("SCMResourceFolderContext"); + } + static { + this.SCMResourceGroupContext = new _MenuId("SCMResourceGroupContext"); + } + static { + this.SCMSourceControl = new _MenuId("SCMSourceControl"); + } + static { + this.SCMSourceControlInline = new _MenuId("SCMSourceControlInline"); + } + static { + this.SCMSourceControlTitle = new _MenuId("SCMSourceControlTitle"); + } + static { + this.SCMHistoryTitle = new _MenuId("SCMHistoryTitle"); + } + static { + this.SCMTitle = new _MenuId("SCMTitle"); + } + static { + this.SearchContext = new _MenuId("SearchContext"); + } + static { + this.SearchActionMenu = new _MenuId("SearchActionContext"); + } + static { + this.StatusBarWindowIndicatorMenu = new _MenuId("StatusBarWindowIndicatorMenu"); + } + static { + this.StatusBarRemoteIndicatorMenu = new _MenuId("StatusBarRemoteIndicatorMenu"); + } + static { + this.StickyScrollContext = new _MenuId("StickyScrollContext"); + } + static { + this.TestItem = new _MenuId("TestItem"); + } + static { + this.TestItemGutter = new _MenuId("TestItemGutter"); + } + static { + this.TestProfilesContext = new _MenuId("TestProfilesContext"); + } + static { + this.TestMessageContext = new _MenuId("TestMessageContext"); + } + static { + this.TestMessageContent = new _MenuId("TestMessageContent"); + } + static { + this.TestPeekElement = new _MenuId("TestPeekElement"); + } + static { + this.TestPeekTitle = new _MenuId("TestPeekTitle"); + } + static { + this.TestCallStack = new _MenuId("TestCallStack"); + } + static { + this.TouchBarContext = new _MenuId("TouchBarContext"); + } + static { + this.TitleBarContext = new _MenuId("TitleBarContext"); + } + static { + this.TitleBarTitleContext = new _MenuId("TitleBarTitleContext"); + } + static { + this.TunnelContext = new _MenuId("TunnelContext"); + } + static { + this.TunnelPrivacy = new _MenuId("TunnelPrivacy"); + } + static { + this.TunnelProtocol = new _MenuId("TunnelProtocol"); + } + static { + this.TunnelPortInline = new _MenuId("TunnelInline"); + } + static { + this.TunnelTitle = new _MenuId("TunnelTitle"); + } + static { + this.TunnelLocalAddressInline = new _MenuId("TunnelLocalAddressInline"); + } + static { + this.TunnelOriginInline = new _MenuId("TunnelOriginInline"); + } + static { + this.ViewItemContext = new _MenuId("ViewItemContext"); + } + static { + this.ViewContainerTitle = new _MenuId("ViewContainerTitle"); + } + static { + this.ViewContainerTitleContext = new _MenuId("ViewContainerTitleContext"); + } + static { + this.ViewTitle = new _MenuId("ViewTitle"); + } + static { + this.ViewTitleContext = new _MenuId("ViewTitleContext"); + } + static { + this.CommentEditorActions = new _MenuId("CommentEditorActions"); + } + static { + this.CommentThreadTitle = new _MenuId("CommentThreadTitle"); + } + static { + this.CommentThreadActions = new _MenuId("CommentThreadActions"); + } + static { + this.CommentThreadAdditionalActions = new _MenuId("CommentThreadAdditionalActions"); + } + static { + this.CommentThreadTitleContext = new _MenuId("CommentThreadTitleContext"); + } + static { + this.CommentThreadCommentContext = new _MenuId("CommentThreadCommentContext"); + } + static { + this.CommentTitle = new _MenuId("CommentTitle"); + } + static { + this.CommentActions = new _MenuId("CommentActions"); + } + static { + this.CommentsViewThreadActions = new _MenuId("CommentsViewThreadActions"); + } + static { + this.InteractiveToolbar = new _MenuId("InteractiveToolbar"); + } + static { + this.InteractiveCellTitle = new _MenuId("InteractiveCellTitle"); + } + static { + this.InteractiveCellDelete = new _MenuId("InteractiveCellDelete"); + } + static { + this.InteractiveCellExecute = new _MenuId("InteractiveCellExecute"); + } + static { + this.InteractiveInputExecute = new _MenuId("InteractiveInputExecute"); + } + static { + this.InteractiveInputConfig = new _MenuId("InteractiveInputConfig"); + } + static { + this.ReplInputExecute = new _MenuId("ReplInputExecute"); + } + static { + this.IssueReporter = new _MenuId("IssueReporter"); + } + static { + this.NotebookToolbar = new _MenuId("NotebookToolbar"); + } + static { + this.NotebookStickyScrollContext = new _MenuId("NotebookStickyScrollContext"); + } + static { + this.NotebookCellTitle = new _MenuId("NotebookCellTitle"); + } + static { + this.NotebookCellDelete = new _MenuId("NotebookCellDelete"); + } + static { + this.NotebookCellInsert = new _MenuId("NotebookCellInsert"); + } + static { + this.NotebookCellBetween = new _MenuId("NotebookCellBetween"); + } + static { + this.NotebookCellListTop = new _MenuId("NotebookCellTop"); + } + static { + this.NotebookCellExecute = new _MenuId("NotebookCellExecute"); + } + static { + this.NotebookCellExecuteGoTo = new _MenuId("NotebookCellExecuteGoTo"); + } + static { + this.NotebookCellExecutePrimary = new _MenuId("NotebookCellExecutePrimary"); + } + static { + this.NotebookDiffCellInputTitle = new _MenuId("NotebookDiffCellInputTitle"); + } + static { + this.NotebookDiffDocumentMetadata = new _MenuId("NotebookDiffDocumentMetadata"); + } + static { + this.NotebookDiffCellMetadataTitle = new _MenuId("NotebookDiffCellMetadataTitle"); + } + static { + this.NotebookDiffCellOutputsTitle = new _MenuId("NotebookDiffCellOutputsTitle"); + } + static { + this.NotebookOutputToolbar = new _MenuId("NotebookOutputToolbar"); + } + static { + this.NotebookOutlineFilter = new _MenuId("NotebookOutlineFilter"); + } + static { + this.NotebookOutlineActionMenu = new _MenuId("NotebookOutlineActionMenu"); + } + static { + this.NotebookEditorLayoutConfigure = new _MenuId("NotebookEditorLayoutConfigure"); + } + static { + this.NotebookKernelSource = new _MenuId("NotebookKernelSource"); + } + static { + this.BulkEditTitle = new _MenuId("BulkEditTitle"); + } + static { + this.BulkEditContext = new _MenuId("BulkEditContext"); + } + static { + this.TimelineItemContext = new _MenuId("TimelineItemContext"); + } + static { + this.TimelineTitle = new _MenuId("TimelineTitle"); + } + static { + this.TimelineTitleContext = new _MenuId("TimelineTitleContext"); + } + static { + this.TimelineFilterSubMenu = new _MenuId("TimelineFilterSubMenu"); + } + static { + this.AccountsContext = new _MenuId("AccountsContext"); + } + static { + this.SidebarTitle = new _MenuId("SidebarTitle"); + } + static { + this.PanelTitle = new _MenuId("PanelTitle"); + } + static { + this.AuxiliaryBarTitle = new _MenuId("AuxiliaryBarTitle"); + } + static { + this.AuxiliaryBarHeader = new _MenuId("AuxiliaryBarHeader"); + } + static { + this.TerminalInstanceContext = new _MenuId("TerminalInstanceContext"); + } + static { + this.TerminalEditorInstanceContext = new _MenuId("TerminalEditorInstanceContext"); + } + static { + this.TerminalNewDropdownContext = new _MenuId("TerminalNewDropdownContext"); + } + static { + this.TerminalTabContext = new _MenuId("TerminalTabContext"); + } + static { + this.TerminalTabEmptyAreaContext = new _MenuId("TerminalTabEmptyAreaContext"); + } + static { + this.TerminalStickyScrollContext = new _MenuId("TerminalStickyScrollContext"); + } + static { + this.WebviewContext = new _MenuId("WebviewContext"); + } + static { + this.InlineCompletionsActions = new _MenuId("InlineCompletionsActions"); + } + static { + this.InlineEditsActions = new _MenuId("InlineEditsActions"); + } + static { + this.InlineEditActions = new _MenuId("InlineEditActions"); + } + static { + this.NewFile = new _MenuId("NewFile"); + } + static { + this.MergeInput1Toolbar = new _MenuId("MergeToolbar1Toolbar"); + } + static { + this.MergeInput2Toolbar = new _MenuId("MergeToolbar2Toolbar"); + } + static { + this.MergeBaseToolbar = new _MenuId("MergeBaseToolbar"); + } + static { + this.MergeInputResultToolbar = new _MenuId("MergeToolbarResultToolbar"); + } + static { + this.InlineSuggestionToolbar = new _MenuId("InlineSuggestionToolbar"); + } + static { + this.InlineEditToolbar = new _MenuId("InlineEditToolbar"); + } + static { + this.ChatContext = new _MenuId("ChatContext"); + } + static { + this.ChatCodeBlock = new _MenuId("ChatCodeblock"); + } + static { + this.ChatCompareBlock = new _MenuId("ChatCompareBlock"); + } + static { + this.ChatMessageTitle = new _MenuId("ChatMessageTitle"); + } + static { + this.ChatMessageFooter = new _MenuId("ChatMessageFooter"); + } + static { + this.ChatExecute = new _MenuId("ChatExecute"); + } + static { + this.ChatExecuteSecondary = new _MenuId("ChatExecuteSecondary"); + } + static { + this.ChatInput = new _MenuId("ChatInput"); + } + static { + this.ChatInputSide = new _MenuId("ChatInputSide"); + } + static { + this.ChatInlineResourceAnchorContext = new _MenuId("ChatInlineResourceAnchorContext"); + } + static { + this.ChatInlineSymbolAnchorContext = new _MenuId("ChatInlineSymbolAnchorContext"); + } + static { + this.ChatCommandCenter = new _MenuId("ChatCommandCenter"); + } + static { + this.AccessibleView = new _MenuId("AccessibleView"); + } + static { + this.MultiDiffEditorFileToolbar = new _MenuId("MultiDiffEditorFileToolbar"); + } + static { + this.DiffEditorHunkToolbar = new _MenuId("DiffEditorHunkToolbar"); + } + static { + this.DiffEditorSelectionToolbar = new _MenuId("DiffEditorSelectionToolbar"); + } + /** + * Create or reuse a `MenuId` with the given identifier + */ + static for(identifier) { + return _MenuId._instances.get(identifier) ?? new _MenuId(identifier); + } + /** + * Create a new `MenuId` with the unique identifier. Will throw if a menu + * with the identifier already exists, use `MenuId.for(ident)` or a unique + * identifier + */ + constructor(identifier) { + if (_MenuId._instances.has(identifier)) { + throw new TypeError(`MenuId with identifier '${identifier}' already exists. Use MenuId.for(ident) or a unique identifier`); + } + _MenuId._instances.set(identifier, this); + this.id = identifier; + } +}; +var IMenuService = createDecorator("menuService"); +var MenuRegistryChangeEvent = class _MenuRegistryChangeEvent { + constructor(id2) { + this.id = id2; + this.has = (candidate) => candidate === id2; + } + static { + this._all = /* @__PURE__ */ new Map(); + } + static for(id2) { + let value = this._all.get(id2); + if (!value) { + value = new _MenuRegistryChangeEvent(id2); + this._all.set(id2, value); + } + return value; + } + static merge(events) { + const ids = /* @__PURE__ */ new Set(); + for (const item of events) { + if (item instanceof _MenuRegistryChangeEvent) { + ids.add(item.id); + } + } + return ids; + } +}; +var MenuRegistry = new class { + constructor() { + this._commands = /* @__PURE__ */ new Map(); + this._menuItems = /* @__PURE__ */ new Map(); + this._onDidChangeMenu = new MicrotaskEmitter({ + merge: MenuRegistryChangeEvent.merge + }); + this.onDidChangeMenu = this._onDidChangeMenu.event; + } + addCommand(command) { + this._commands.set(command.id, command); + this._onDidChangeMenu.fire(MenuRegistryChangeEvent.for(MenuId.CommandPalette)); + return toDisposable(() => { + if (this._commands.delete(command.id)) { + this._onDidChangeMenu.fire(MenuRegistryChangeEvent.for(MenuId.CommandPalette)); + } + }); + } + getCommand(id2) { + return this._commands.get(id2); + } + getCommands() { + const map = /* @__PURE__ */ new Map(); + this._commands.forEach((value, key) => map.set(key, value)); + return map; + } + appendMenuItem(id2, item) { + let list = this._menuItems.get(id2); + if (!list) { + list = new LinkedList(); + this._menuItems.set(id2, list); + } + const rm = list.push(item); + this._onDidChangeMenu.fire(MenuRegistryChangeEvent.for(id2)); + return toDisposable(() => { + rm(); + this._onDidChangeMenu.fire(MenuRegistryChangeEvent.for(id2)); + }); + } + appendMenuItems(items) { + const result = new DisposableStore(); + for (const { id: id2, item } of items) { + result.add(this.appendMenuItem(id2, item)); + } + return result; + } + getMenuItems(id2) { + let result; + if (this._menuItems.has(id2)) { + result = [...this._menuItems.get(id2)]; + } else { + result = []; + } + if (id2 === MenuId.CommandPalette) { + this._appendImplicitItems(result); + } + return result; + } + _appendImplicitItems(result) { + const set = /* @__PURE__ */ new Set(); + for (const item of result) { + if (isIMenuItem(item)) { + set.add(item.command.id); + if (item.alt) { + set.add(item.alt.id); + } + } + } + this._commands.forEach((command, id2) => { + if (!set.has(id2)) { + result.push({ command }); + } + }); + } +}(); +var SubmenuItemAction = class extends SubmenuAction { + constructor(item, hideActions, actions) { + super(`submenuitem.${item.submenu.id}`, typeof item.title === "string" ? item.title : item.title.value, actions, "submenu"); + this.item = item; + this.hideActions = hideActions; + } +}; +var MenuItemAction = class { + constructor(item, alt, options2, hideActions, menuKeybinding, contextKeyService, _commandService) { + this.hideActions = hideActions; + this.menuKeybinding = menuKeybinding; + this._commandService = _commandService; + this.id = item.id; + this.label = MenuItemAction.label(item, options2); + this.tooltip = (typeof item.tooltip === "string" ? item.tooltip : item.tooltip?.value) ?? ""; + this.enabled = !item.precondition || contextKeyService.contextMatchesRules(item.precondition); + this.checked = void 0; + let icon; + if (item.toggled) { + const toggled = item.toggled.condition ? item.toggled : { condition: item.toggled }; + this.checked = contextKeyService.contextMatchesRules(toggled.condition); + if (this.checked && toggled.tooltip) { + this.tooltip = typeof toggled.tooltip === "string" ? toggled.tooltip : toggled.tooltip.value; + } + if (this.checked && ThemeIcon.isThemeIcon(toggled.icon)) { + icon = toggled.icon; + } + if (this.checked && toggled.title) { + this.label = typeof toggled.title === "string" ? toggled.title : toggled.title.value; + } + } + if (!icon) { + icon = ThemeIcon.isThemeIcon(item.icon) ? item.icon : void 0; + } + this.item = item; + this.alt = alt ? new MenuItemAction(alt, void 0, options2, hideActions, void 0, contextKeyService, _commandService) : void 0; + this._options = options2; + this.class = icon && ThemeIcon.asClassName(icon); + } + static label(action, options2) { + return options2?.renderShortTitle && action.shortTitle ? typeof action.shortTitle === "string" ? action.shortTitle : action.shortTitle.value : typeof action.title === "string" ? action.title : action.title.value; + } + run(...args) { + let runArgs = []; + if (this._options?.arg) { + runArgs = [...runArgs, this._options.arg]; + } + if (this._options?.shouldForwardArgs) { + runArgs = [...runArgs, ...args]; + } + return this._commandService.executeCommand(this.id, ...runArgs); + } +}; +MenuItemAction = __decorateClass([ + __decorateParam(5, IContextKeyService), + __decorateParam(6, ICommandService) +], MenuItemAction); + +// ../../../../../base/browser/ui/dropdown/dropdown.ts +var BaseDropdown = class extends ActionRunner { + constructor(container, options2) { + super(); + this._onDidChangeVisibility = this._register(new Emitter()); + this.onDidChangeVisibility = this._onDidChangeVisibility.event; + this._element = append(container, $(".monaco-dropdown")); + this._label = append(this._element, $(".dropdown-label")); + let labelRenderer = options2.labelRenderer; + if (!labelRenderer) { + labelRenderer = (container2) => { + container2.textContent = options2.label || ""; + return null; + }; + } + for (const event of [EventType.CLICK, EventType.MOUSE_DOWN, EventType2.Tap]) { + this._register(addDisposableListener(this.element, event, (e) => EventHelper.stop(e, true))); + } + for (const event of [EventType.MOUSE_DOWN, EventType2.Tap]) { + this._register(addDisposableListener(this._label, event, (e) => { + if (isMouseEvent(e) && (e.detail > 1 || e.button !== 0)) { + return; + } + if (this.visible) { + this.hide(); + } else { + this.show(); + } + })); + } + this._register(addDisposableListener(this._label, EventType.KEY_UP, (e) => { + const event = new StandardKeyboardEvent(e); + if (event.equals(3 /* Enter */) || event.equals(10 /* Space */)) { + EventHelper.stop(e, true); + if (this.visible) { + this.hide(); + } else { + this.show(); + } + } + })); + const cleanupFn = labelRenderer(this._label); + if (cleanupFn) { + this._register(cleanupFn); + } + this._register(Gesture.addTarget(this._label)); + } + get element() { + return this._element; + } + get label() { + return this._label; + } + set tooltip(tooltip) { + if (this._label) { + if (!this.hover && tooltip !== "") { + this.hover = this._register(getBaseLayerHoverDelegate().setupManagedHover(getDefaultHoverDelegate("mouse"), this._label, tooltip)); + } else if (this.hover) { + this.hover.update(tooltip); + } + } + } + show() { + if (!this.visible) { + this.visible = true; + this._onDidChangeVisibility.fire(true); + } + } + hide() { + if (this.visible) { + this.visible = false; + this._onDidChangeVisibility.fire(false); + } + } + isVisible() { + return !!this.visible; + } + onEvent(_e, activeElement) { + this.hide(); + } + dispose() { + super.dispose(); + this.hide(); + if (this.boxContainer) { + this.boxContainer.remove(); + this.boxContainer = void 0; + } + if (this.contents) { + this.contents.remove(); + this.contents = void 0; + } + if (this._label) { + this._label.remove(); + this._label = void 0; + } + } +}; +var DropdownMenu = class extends BaseDropdown { + constructor(container, _options) { + super(container, _options); + this._options = _options; + this._actions = []; + this.actions = _options.actions || []; + } + set menuOptions(options2) { + this._menuOptions = options2; + } + get menuOptions() { + return this._menuOptions; + } + get actions() { + if (this._options.actionProvider) { + return this._options.actionProvider.getActions(); + } + return this._actions; + } + set actions(actions) { + this._actions = actions; + } + show() { + super.show(); + this.element.classList.add("active"); + this._options.contextMenuProvider.showContextMenu({ + getAnchor: () => this.element, + getActions: () => this.actions, + getActionsContext: () => this.menuOptions ? this.menuOptions.context : null, + getActionViewItem: (action, options2) => this.menuOptions && this.menuOptions.actionViewItemProvider ? this.menuOptions.actionViewItemProvider(action, options2) : void 0, + getKeyBinding: (action) => this.menuOptions && this.menuOptions.getKeyBinding ? this.menuOptions.getKeyBinding(action) : void 0, + getMenuClassName: () => this._options.menuClassName || "", + onHide: () => this.onHide(), + actionRunner: this.menuOptions ? this.menuOptions.actionRunner : void 0, + anchorAlignment: this.menuOptions ? this.menuOptions.anchorAlignment : 0 /* LEFT */, + domForShadowRoot: this._options.menuAsChild ? this.element : void 0, + skipTelemetry: this._options.skipTelemetry + }); + } + hide() { + super.hide(); + } + onHide() { + this.hide(); + this.element.classList.remove("active"); + } +}; + +// ../../../../../base/browser/ui/dropdown/dropdownActionViewItem.ts +var DropdownMenuActionViewItem = class extends BaseActionViewItem { + constructor(action, menuActionsOrProvider, contextMenuProvider, options2 = /* @__PURE__ */ Object.create(null)) { + super(null, action, options2); + this.actionItem = null; + this._onDidChangeVisibility = this._register(new Emitter()); + this.onDidChangeVisibility = this._onDidChangeVisibility.event; + this.menuActionsOrProvider = menuActionsOrProvider; + this.contextMenuProvider = contextMenuProvider; + this.options = options2; + if (this.options.actionRunner) { + this.actionRunner = this.options.actionRunner; + } + } + render(container) { + this.actionItem = container; + const labelRenderer = (el) => { + this.element = append(el, $("a.action-label")); + let classNames = []; + if (typeof this.options.classNames === "string") { + classNames = this.options.classNames.split(/\s+/g).filter((s) => !!s); + } else if (this.options.classNames) { + classNames = this.options.classNames; + } + if (!classNames.find((c) => c === "icon")) { + classNames.push("codicon"); + } + this.element.classList.add(...classNames); + this.element.setAttribute("role", "button"); + this.element.setAttribute("aria-haspopup", "true"); + this.element.setAttribute("aria-expanded", "false"); + if (this._action.label) { + this._register(getBaseLayerHoverDelegate().setupManagedHover(this.options.hoverDelegate ?? getDefaultHoverDelegate("mouse"), this.element, this._action.label)); + } + this.element.ariaLabel = this._action.label || ""; + return null; + }; + const isActionsArray = Array.isArray(this.menuActionsOrProvider); + const options2 = { + contextMenuProvider: this.contextMenuProvider, + labelRenderer, + menuAsChild: this.options.menuAsChild, + actions: isActionsArray ? this.menuActionsOrProvider : void 0, + actionProvider: isActionsArray ? void 0 : this.menuActionsOrProvider, + skipTelemetry: this.options.skipTelemetry + }; + this.dropdownMenu = this._register(new DropdownMenu(container, options2)); + this._register(this.dropdownMenu.onDidChangeVisibility((visible) => { + this.element?.setAttribute("aria-expanded", `${visible}`); + this._onDidChangeVisibility.fire(visible); + })); + this.dropdownMenu.menuOptions = { + actionViewItemProvider: this.options.actionViewItemProvider, + actionRunner: this.actionRunner, + getKeyBinding: this.options.keybindingProvider, + context: this._context + }; + if (this.options.anchorAlignmentProvider) { + const that = this; + this.dropdownMenu.menuOptions = { + ...this.dropdownMenu.menuOptions, + get anchorAlignment() { + return that.options.anchorAlignmentProvider(); + } + }; + } + this.updateTooltip(); + this.updateEnabled(); + } + getTooltip() { + let title = null; + if (this.action.tooltip) { + title = this.action.tooltip; + } else if (this.action.label) { + title = this.action.label; + } + return title ?? void 0; + } + setActionContext(newContext) { + super.setActionContext(newContext); + if (this.dropdownMenu) { + if (this.dropdownMenu.menuOptions) { + this.dropdownMenu.menuOptions.context = newContext; + } else { + this.dropdownMenu.menuOptions = { context: newContext }; + } + } + } + show() { + this.dropdownMenu?.show(); + } + updateEnabled() { + const disabled = !this.action.enabled; + this.actionItem?.classList.toggle("disabled", disabled); + this.element?.classList.toggle("disabled", disabled); + } +}; + +// ../../../../../base/common/keybindingLabels.ts +var ModifierLabelProvider = class { + constructor(mac, windows, linux = windows) { + this.modifierLabels = [null]; + this.modifierLabels[2 /* Macintosh */] = mac; + this.modifierLabels[1 /* Windows */] = windows; + this.modifierLabels[3 /* Linux */] = linux; + } + toLabel(OS2, chords, keyLabelProvider) { + if (chords.length === 0) { + return null; + } + const result = []; + for (let i = 0, len = chords.length; i < len; i++) { + const chord = chords[i]; + const keyLabel = keyLabelProvider(chord); + if (keyLabel === null) { + return null; + } + result[i] = _simpleAsString(chord, keyLabel, this.modifierLabels[OS2]); + } + return result.join(" "); + } +}; +var UILabelProvider = new ModifierLabelProvider( + { + ctrlKey: "\u2303", + shiftKey: "\u21E7", + altKey: "\u2325", + metaKey: "\u2318", + separator: "" + }, + { + ctrlKey: localize({ key: "ctrlKey", comment: ["This is the short form for the Control key on the keyboard"] }, "Ctrl"), + shiftKey: localize({ key: "shiftKey", comment: ["This is the short form for the Shift key on the keyboard"] }, "Shift"), + altKey: localize({ key: "altKey", comment: ["This is the short form for the Alt key on the keyboard"] }, "Alt"), + metaKey: localize({ key: "windowsKey", comment: ["This is the short form for the Windows key on the keyboard"] }, "Windows"), + separator: "+" + }, + { + ctrlKey: localize({ key: "ctrlKey", comment: ["This is the short form for the Control key on the keyboard"] }, "Ctrl"), + shiftKey: localize({ key: "shiftKey", comment: ["This is the short form for the Shift key on the keyboard"] }, "Shift"), + altKey: localize({ key: "altKey", comment: ["This is the short form for the Alt key on the keyboard"] }, "Alt"), + metaKey: localize({ key: "superKey", comment: ["This is the short form for the Super key on the keyboard"] }, "Super"), + separator: "+" + } +); +new ModifierLabelProvider( + { + ctrlKey: localize({ key: "ctrlKey.long", comment: ["This is the long form for the Control key on the keyboard"] }, "Control"), + shiftKey: localize({ key: "shiftKey.long", comment: ["This is the long form for the Shift key on the keyboard"] }, "Shift"), + altKey: localize({ key: "optKey.long", comment: ["This is the long form for the Alt/Option key on the keyboard"] }, "Option"), + metaKey: localize({ key: "cmdKey.long", comment: ["This is the long form for the Command key on the keyboard"] }, "Command"), + separator: "+" + }, + { + ctrlKey: localize({ key: "ctrlKey.long", comment: ["This is the long form for the Control key on the keyboard"] }, "Control"), + shiftKey: localize({ key: "shiftKey.long", comment: ["This is the long form for the Shift key on the keyboard"] }, "Shift"), + altKey: localize({ key: "altKey.long", comment: ["This is the long form for the Alt key on the keyboard"] }, "Alt"), + metaKey: localize({ key: "windowsKey.long", comment: ["This is the long form for the Windows key on the keyboard"] }, "Windows"), + separator: "+" + }, + { + ctrlKey: localize({ key: "ctrlKey.long", comment: ["This is the long form for the Control key on the keyboard"] }, "Control"), + shiftKey: localize({ key: "shiftKey.long", comment: ["This is the long form for the Shift key on the keyboard"] }, "Shift"), + altKey: localize({ key: "altKey.long", comment: ["This is the long form for the Alt key on the keyboard"] }, "Alt"), + metaKey: localize({ key: "superKey.long", comment: ["This is the long form for the Super key on the keyboard"] }, "Super"), + separator: "+" + } +); +new ModifierLabelProvider( + { + ctrlKey: "Ctrl", + shiftKey: "Shift", + altKey: "Alt", + metaKey: "Cmd", + separator: "+" + }, + { + ctrlKey: "Ctrl", + shiftKey: "Shift", + altKey: "Alt", + metaKey: "Super", + separator: "+" + } +); +new ModifierLabelProvider( + { + ctrlKey: "ctrl", + shiftKey: "shift", + altKey: "alt", + metaKey: "cmd", + separator: "+" + }, + { + ctrlKey: "ctrl", + shiftKey: "shift", + altKey: "alt", + metaKey: "win", + separator: "+" + }, + { + ctrlKey: "ctrl", + shiftKey: "shift", + altKey: "alt", + metaKey: "meta", + separator: "+" + } +); +function _simpleAsString(modifiers, key, labels) { + if (key === null) { + return ""; + } + const result = []; + if (modifiers.ctrlKey) { + result.push(labels.ctrlKey); + } + if (modifiers.shiftKey) { + result.push(labels.shiftKey); + } + if (modifiers.altKey) { + result.push(labels.altKey); + } + if (modifiers.metaKey) { + result.push(labels.metaKey); + } + if (key !== "") { + result.push(key); + } + return result.join(labels.separator); +} + +// ../../../../../platform/action/common/action.ts +function isICommandActionToggleInfo(thing) { + return thing ? thing.condition !== void 0 : false; +} + +// ../../../../../base/common/severity.ts +var Severity = /* @__PURE__ */ ((Severity2) => { + Severity2[Severity2["Ignore"] = 0] = "Ignore"; + Severity2[Severity2["Info"] = 1] = "Info"; + Severity2[Severity2["Warning"] = 2] = "Warning"; + Severity2[Severity2["Error"] = 3] = "Error"; + return Severity2; +})(Severity || {}); +((Severity2) => { + const _error = "error"; + const _warning = "warning"; + const _warn = "warn"; + const _info = "info"; + const _ignore = "ignore"; + function fromValue(value) { + if (!value) { + return 0 /* Ignore */; + } + if (equalsIgnoreCase(_error, value)) { + return 3 /* Error */; + } + if (equalsIgnoreCase(_warning, value) || equalsIgnoreCase(_warn, value)) { + return 2 /* Warning */; + } + if (equalsIgnoreCase(_info, value)) { + return 1 /* Info */; + } + return 0 /* Ignore */; + } + Severity2.fromValue = fromValue; + function toString(severity) { + switch (severity) { + case 3 /* Error */: + return _error; + case 2 /* Warning */: + return _warning; + case 1 /* Info */: + return _info; + default: + return _ignore; + } + } + Severity2.toString = toString; +})(Severity || (Severity = {})); + +// ../../../../../platform/notification/common/notification.ts +var INotificationService = createDecorator("notificationService"); + +// ../../../../../base/common/performance.js +var module2 = { exports: {} }; +(function() { + function _definePolyfillMarks(timeOrigin) { + const _data = []; + if (typeof timeOrigin === "number") { + _data.push("code/timeOrigin", timeOrigin); + } + function mark2(name) { + _data.push(name, Date.now()); + } + function getMarks2() { + const result = []; + for (let i = 0; i < _data.length; i += 2) { + result.push({ + name: _data[i], + startTime: _data[i + 1] + }); + } + return result; + } + return { mark: mark2, getMarks: getMarks2 }; + } + function _define() { + if (typeof performance === "object" && typeof performance.mark === "function" && !performance.nodeTiming) { + if (typeof performance.timeOrigin !== "number" && !performance.timing) { + return _definePolyfillMarks(); + } else { + return { + mark(name) { + performance.mark(name); + }, + getMarks() { + let timeOrigin = performance.timeOrigin; + if (typeof timeOrigin !== "number") { + timeOrigin = performance.timing.navigationStart || performance.timing.redirectStart || performance.timing.fetchStart; + } + const result = [{ name: "code/timeOrigin", startTime: Math.round(timeOrigin) }]; + for (const entry of performance.getEntriesByType("mark")) { + result.push({ + name: entry.name, + startTime: Math.round(timeOrigin + entry.startTime) + }); + } + return result; + } + }; + } + } else if (typeof process === "object") { + const timeOrigin = performance?.timeOrigin; + return _definePolyfillMarks(timeOrigin); + } else { + console.trace("perf-util loaded in UNKNOWN environment"); + return _definePolyfillMarks(); + } + } + function _factory(sharedObj2) { + if (!sharedObj2.MonacoPerformanceMarks) { + sharedObj2.MonacoPerformanceMarks = _define(); + } + return sharedObj2.MonacoPerformanceMarks; + } + var sharedObj; + if (typeof global === "object") { + sharedObj = global; + } else if (typeof self === "object") { + sharedObj = self; + } else { + sharedObj = {}; + } + if (typeof module2 === "object" && typeof module2.exports === "object") { + module2.exports = _factory(sharedObj); + } else { + console.trace("perf-util defined in UNKNOWN context (neither requirejs or commonjs)"); + sharedObj.perf = _factory(sharedObj); + } +})(); +var mark = module2.exports.mark; +module2.exports.getMarks; + +// ../../../../../base/parts/storage/common/storage.ts +(class _Storage extends Disposable { + constructor(database, options2 = /* @__PURE__ */ Object.create(null)) { + super(); + this.database = database; + this.options = options2; + this._onDidChangeStorage = this._register(new PauseableEmitter()); + this.onDidChangeStorage = this._onDidChangeStorage.event; + this.state = 0 /* None */; + this.cache = /* @__PURE__ */ new Map(); + this.flushDelayer = this._register(new ThrottledDelayer(_Storage.DEFAULT_FLUSH_DELAY)); + this.pendingDeletes = /* @__PURE__ */ new Set(); + this.pendingInserts = /* @__PURE__ */ new Map(); + this.pendingClose = void 0; + this.whenFlushedCallbacks = []; + this.registerListeners(); + } + static { + this.DEFAULT_FLUSH_DELAY = 100; + } + registerListeners() { + this._register(this.database.onDidChangeItemsExternal((e) => this.onDidChangeItemsExternal(e))); + } + onDidChangeItemsExternal(e) { + this._onDidChangeStorage.pause(); + try { + e.changed?.forEach((value, key) => this.acceptExternal(key, value)); + e.deleted?.forEach((key) => this.acceptExternal(key, void 0)); + } finally { + this._onDidChangeStorage.resume(); + } + } + acceptExternal(key, value) { + if (this.state === 2 /* Closed */) { + return; + } + let changed = false; + if (isUndefinedOrNull(value)) { + changed = this.cache.delete(key); + } else { + const currentValue = this.cache.get(key); + if (currentValue !== value) { + this.cache.set(key, value); + changed = true; + } + } + if (changed) { + this._onDidChangeStorage.fire({ key, external: true }); + } + } + get items() { + return this.cache; + } + get size() { + return this.cache.size; + } + async init() { + if (this.state !== 0 /* None */) { + return; + } + this.state = 1 /* Initialized */; + if (this.options.hint === 0 /* STORAGE_DOES_NOT_EXIST */) { + return; + } + this.cache = await this.database.getItems(); + } + get(key, fallbackValue) { + const value = this.cache.get(key); + if (isUndefinedOrNull(value)) { + return fallbackValue; + } + return value; + } + getBoolean(key, fallbackValue) { + const value = this.get(key); + if (isUndefinedOrNull(value)) { + return fallbackValue; + } + return value === "true"; + } + getNumber(key, fallbackValue) { + const value = this.get(key); + if (isUndefinedOrNull(value)) { + return fallbackValue; + } + return parseInt(value, 10); + } + getObject(key, fallbackValue) { + const value = this.get(key); + if (isUndefinedOrNull(value)) { + return fallbackValue; + } + return parse3(value); + } + async set(key, value, external = false) { + if (this.state === 2 /* Closed */) { + return; + } + if (isUndefinedOrNull(value)) { + return this.delete(key, external); + } + const valueStr = isObject(value) || Array.isArray(value) ? stringify(value) : String(value); + const currentValue = this.cache.get(key); + if (currentValue === valueStr) { + return; + } + this.cache.set(key, valueStr); + this.pendingInserts.set(key, valueStr); + this.pendingDeletes.delete(key); + this._onDidChangeStorage.fire({ key, external }); + return this.doFlush(); + } + async delete(key, external = false) { + if (this.state === 2 /* Closed */) { + return; + } + const wasDeleted = this.cache.delete(key); + if (!wasDeleted) { + return; + } + if (!this.pendingDeletes.has(key)) { + this.pendingDeletes.add(key); + } + this.pendingInserts.delete(key); + this._onDidChangeStorage.fire({ key, external }); + return this.doFlush(); + } + async optimize() { + if (this.state === 2 /* Closed */) { + return; + } + await this.flush(0); + return this.database.optimize(); + } + async close() { + if (!this.pendingClose) { + this.pendingClose = this.doClose(); + } + return this.pendingClose; + } + async doClose() { + this.state = 2 /* Closed */; + try { + await this.doFlush( + 0 + /* as soon as possible */ + ); + } catch (error) { + } + await this.database.close(() => this.cache); + } + get hasPending() { + return this.pendingInserts.size > 0 || this.pendingDeletes.size > 0; + } + async flushPending() { + if (!this.hasPending) { + return; + } + const updateRequest = { insert: this.pendingInserts, delete: this.pendingDeletes }; + this.pendingDeletes = /* @__PURE__ */ new Set(); + this.pendingInserts = /* @__PURE__ */ new Map(); + return this.database.updateItems(updateRequest).finally(() => { + if (!this.hasPending) { + while (this.whenFlushedCallbacks.length) { + this.whenFlushedCallbacks.pop()?.(); + } + } + }); + } + async flush(delay) { + if (this.state === 2 /* Closed */ || // Return early if we are already closed + this.pendingClose) { + return; + } + return this.doFlush(delay); + } + async doFlush(delay) { + if (this.options.hint === 1 /* STORAGE_IN_MEMORY */) { + return this.flushPending(); + } + return this.flushDelayer.trigger(() => this.flushPending(), delay); + } + async whenFlushed() { + if (!this.hasPending) { + return; + } + return new Promise((resolve2) => this.whenFlushedCallbacks.push(resolve2)); + } + isInMemory() { + return this.options.hint === 1 /* STORAGE_IN_MEMORY */; + } +}); + +// ../../../../../platform/environment/common/environment.ts +var IEnvironmentService = createDecorator("environmentService"); + +// ../../../../../platform/files/common/files.ts +var IFileService = createDecorator("fileService"); +var FileSystemProviderError = class _FileSystemProviderError extends Error { + constructor(message, code) { + super(message); + this.code = code; + } + static create(error, code) { + const providerError = new _FileSystemProviderError(error.toString(), code); + markAsFileSystemProviderError(providerError, code); + return providerError; + } +}; +function markAsFileSystemProviderError(error, code) { + error.name = code ? `${code} (FileSystemError)` : `FileSystemError`; + return error; +} +function toFileSystemProviderErrorCode(error) { + if (!error) { + return "Unknown" /* Unknown */; + } + if (error instanceof FileSystemProviderError) { + return error.code; + } + const match = /^(.+) \(FileSystemError\)$/.exec(error.name); + if (!match) { + return "Unknown" /* Unknown */; + } + switch (match[1]) { + case "EntryExists" /* FileExists */: + return "EntryExists" /* FileExists */; + case "EntryIsADirectory" /* FileIsADirectory */: + return "EntryIsADirectory" /* FileIsADirectory */; + case "EntryNotADirectory" /* FileNotADirectory */: + return "EntryNotADirectory" /* FileNotADirectory */; + case "EntryNotFound" /* FileNotFound */: + return "EntryNotFound" /* FileNotFound */; + case "EntryTooLarge" /* FileTooLarge */: + return "EntryTooLarge" /* FileTooLarge */; + case "EntryWriteLocked" /* FileWriteLocked */: + return "EntryWriteLocked" /* FileWriteLocked */; + case "NoPermissions" /* NoPermissions */: + return "NoPermissions" /* NoPermissions */; + case "Unavailable" /* Unavailable */: + return "Unavailable" /* Unavailable */; + } + return "Unknown" /* Unknown */; +} +function toFileOperationResult(error) { + if (error instanceof FileOperationError) { + return error.fileOperationResult; + } + switch (toFileSystemProviderErrorCode(error)) { + case "EntryNotFound" /* FileNotFound */: + return 1 /* FILE_NOT_FOUND */; + case "EntryIsADirectory" /* FileIsADirectory */: + return 0 /* FILE_IS_DIRECTORY */; + case "EntryNotADirectory" /* FileNotADirectory */: + return 9 /* FILE_NOT_DIRECTORY */; + case "EntryWriteLocked" /* FileWriteLocked */: + return 5 /* FILE_WRITE_LOCKED */; + case "NoPermissions" /* NoPermissions */: + return 6 /* FILE_PERMISSION_DENIED */; + case "EntryExists" /* FileExists */: + return 4 /* FILE_MOVE_CONFLICT */; + case "EntryTooLarge" /* FileTooLarge */: + return 7 /* FILE_TOO_LARGE */; + default: + return 10 /* FILE_OTHER_ERROR */; + } +} +var FileOperationError = class extends Error { + constructor(message, fileOperationResult, options2) { + super(message); + this.fileOperationResult = fileOperationResult; + this.options = options2; + } +}; +(class _ByteSize { + static { + this.KB = 1024; + } + static { + this.MB = _ByteSize.KB * _ByteSize.KB; + } + static { + this.GB = _ByteSize.MB * _ByteSize.KB; + } + static { + this.TB = _ByteSize.GB * _ByteSize.KB; + } + static formatSize(size) { + if (!isNumber(size)) { + size = 0; + } + if (size < _ByteSize.KB) { + return localize("sizeB", "{0}B", size.toFixed(0)); + } + if (size < _ByteSize.MB) { + return localize("sizeKB", "{0}KB", (size / _ByteSize.KB).toFixed(2)); + } + if (size < _ByteSize.GB) { + return localize("sizeMB", "{0}MB", (size / _ByteSize.MB).toFixed(2)); + } + if (size < _ByteSize.TB) { + return localize("sizeGB", "{0}GB", (size / _ByteSize.GB).toFixed(2)); + } + return localize("sizeTB", "{0}TB", (size / _ByteSize.TB).toFixed(2)); + } +}); + +// ../../../../../platform/log/common/log.ts +var ILogService = createDecorator("logService"); +createDecorator("loggerService"); +function LogLevelToString(logLevel) { + switch (logLevel) { + case 1 /* Trace */: + return "trace"; + case 2 /* Debug */: + return "debug"; + case 3 /* Info */: + return "info"; + case 4 /* Warning */: + return "warn"; + case 5 /* Error */: + return "error"; + case 0 /* Off */: + return "off"; + } +} +new RawContextKey("logLevel", LogLevelToString(3 /* Info */)); + +// ../../../../../platform/workspace/common/workspace.ts +createDecorator("contextService"); +function isSingleFolderWorkspaceIdentifier(obj) { + const singleFolderIdentifier = obj; + return typeof singleFolderIdentifier?.id === "string" && URI.isUri(singleFolderIdentifier.uri); +} +function isWorkspaceIdentifier(obj) { + const workspaceIdentifier = obj; + return typeof workspaceIdentifier?.id === "string" && URI.isUri(workspaceIdentifier.configPath); +} +var WORKSPACE_EXTENSION = "code-workspace"; +[{ name: localize("codeWorkspace", "Code Workspace"), extensions: [WORKSPACE_EXTENSION] }]; + +// ../../../../../platform/uriIdentity/common/uriIdentity.ts +var IUriIdentityService = createDecorator("IUriIdentityService"); + +// ../../../../../base/common/uuid.ts +var generateUuid = function() { + if (typeof crypto === "object" && typeof crypto.randomUUID === "function") { + return crypto.randomUUID.bind(crypto); + } + let getRandomValues; + if (typeof crypto === "object" && typeof crypto.getRandomValues === "function") { + getRandomValues = crypto.getRandomValues.bind(crypto); + } else { + getRandomValues = function(bucket) { + for (let i = 0; i < bucket.length; i++) { + bucket[i] = Math.floor(Math.random() * 256); + } + return bucket; + }; + } + const _data = new Uint8Array(16); + const _hex = []; + for (let i = 0; i < 256; i++) { + _hex.push(i.toString(16).padStart(2, "0")); + } + return function generateUuid2() { + getRandomValues(_data); + _data[6] = _data[6] & 15 | 64; + _data[8] = _data[8] & 63 | 128; + let i = 0; + let result = ""; + result += _hex[_data[i++]]; + result += _hex[_data[i++]]; + result += _hex[_data[i++]]; + result += _hex[_data[i++]]; + result += "-"; + result += _hex[_data[i++]]; + result += _hex[_data[i++]]; + result += "-"; + result += _hex[_data[i++]]; + result += _hex[_data[i++]]; + result += "-"; + result += _hex[_data[i++]]; + result += _hex[_data[i++]]; + result += "-"; + result += _hex[_data[i++]]; + result += _hex[_data[i++]]; + result += _hex[_data[i++]]; + result += _hex[_data[i++]]; + result += _hex[_data[i++]]; + result += _hex[_data[i++]]; + return result; + }; +}(); + +// ../../../../../platform/userDataProfile/common/userDataProfile.ts +function isUserDataProfile(thing) { + const candidate = thing; + return !!(candidate && typeof candidate === "object" && typeof candidate.id === "string" && typeof candidate.isDefault === "boolean" && typeof candidate.name === "string" && URI.isUri(candidate.location) && URI.isUri(candidate.globalStorageHome) && URI.isUri(candidate.settingsResource) && URI.isUri(candidate.keybindingsResource) && URI.isUri(candidate.tasksResource) && URI.isUri(candidate.snippetsHome) && URI.isUri(candidate.extensionsResource)); +} +createDecorator("IUserDataProfilesService"); +function toUserDataProfile(id2, name, location, profilesCacheHome, options2, defaultProfile) { + return { + id: id2, + name, + location, + isDefault: false, + shortName: options2?.shortName, + icon: options2?.icon, + globalStorageHome: defaultProfile && options2?.useDefaultFlags?.globalState ? defaultProfile.globalStorageHome : joinPath(location, "globalStorage"), + settingsResource: defaultProfile && options2?.useDefaultFlags?.settings ? defaultProfile.settingsResource : joinPath(location, "settings.json"), + keybindingsResource: defaultProfile && options2?.useDefaultFlags?.keybindings ? defaultProfile.keybindingsResource : joinPath(location, "keybindings.json"), + tasksResource: defaultProfile && options2?.useDefaultFlags?.tasks ? defaultProfile.tasksResource : joinPath(location, "tasks.json"), + snippetsHome: defaultProfile && options2?.useDefaultFlags?.snippets ? defaultProfile.snippetsHome : joinPath(location, "snippets"), + extensionsResource: defaultProfile && options2?.useDefaultFlags?.extensions ? defaultProfile.extensionsResource : joinPath(location, "extensions.json"), + cacheHome: joinPath(profilesCacheHome, id2), + useDefaultFlags: options2?.useDefaultFlags, + isTransient: options2?.transient, + workspaces: options2?.workspaces + }; +} +var UserDataProfilesService = class extends Disposable { + constructor(environmentService, fileService, uriIdentityService, logService) { + super(); + this.environmentService = environmentService; + this.fileService = fileService; + this.uriIdentityService = uriIdentityService; + this.logService = logService; + this.enabled = true; + this._onDidChangeProfiles = this._register(new Emitter()); + this.onDidChangeProfiles = this._onDidChangeProfiles.event; + this._onWillCreateProfile = this._register(new Emitter()); + this.onWillCreateProfile = this._onWillCreateProfile.event; + this._onWillRemoveProfile = this._register(new Emitter()); + this.onWillRemoveProfile = this._onWillRemoveProfile.event; + this._onDidResetWorkspaces = this._register(new Emitter()); + this.onDidResetWorkspaces = this._onDidResetWorkspaces.event; + this.profileCreationPromises = /* @__PURE__ */ new Map(); + this.transientProfilesObject = { + profiles: [], + emptyWindows: /* @__PURE__ */ new Map() + }; + this.profilesHome = joinPath(this.environmentService.userRoamingDataHome, "profiles"); + this.profilesCacheHome = joinPath(this.environmentService.cacheHome, "CachedProfilesData"); + } + static { + this.PROFILES_KEY = "userDataProfiles"; + } + static { + this.PROFILE_ASSOCIATIONS_KEY = "profileAssociations"; + } + get defaultProfile() { + return this.profiles[0]; + } + get profiles() { + return [...this.profilesObject.profiles, ...this.transientProfilesObject.profiles]; + } + init() { + this._profilesObject = void 0; + } + setEnablement(enabled) { + if (this.enabled !== enabled) { + this._profilesObject = void 0; + this.enabled = enabled; + } + } + isEnabled() { + return this.enabled; + } + get profilesObject() { + if (!this._profilesObject) { + const defaultProfile = this.createDefaultProfile(); + const profiles = [defaultProfile]; + if (this.enabled) { + try { + for (const storedProfile of this.getStoredProfiles()) { + if (!storedProfile.name || !isString(storedProfile.name) || !storedProfile.location) { + this.logService.warn("Skipping the invalid stored profile", storedProfile.location || storedProfile.name); + continue; + } + profiles.push(toUserDataProfile(basename2(storedProfile.location), storedProfile.name, storedProfile.location, this.profilesCacheHome, { shortName: storedProfile.shortName, icon: storedProfile.icon, useDefaultFlags: storedProfile.useDefaultFlags }, defaultProfile)); + } + } catch (error) { + this.logService.error(error); + } + } + const emptyWindows = /* @__PURE__ */ new Map(); + if (profiles.length) { + try { + const profileAssociaitions = this.getStoredProfileAssociations(); + if (profileAssociaitions.workspaces) { + for (const [workspacePath, profileId] of Object.entries(profileAssociaitions.workspaces)) { + const workspace = URI.parse(workspacePath); + const profile = profiles.find((p) => p.id === profileId); + if (profile) { + const workspaces = profile.workspaces ? profile.workspaces.slice(0) : []; + workspaces.push(workspace); + profile.workspaces = workspaces; + } + } + } + if (profileAssociaitions.emptyWindows) { + for (const [windowId, profileId] of Object.entries(profileAssociaitions.emptyWindows)) { + const profile = profiles.find((p) => p.id === profileId); + if (profile) { + emptyWindows.set(windowId, profile); + } + } + } + } catch (error) { + this.logService.error(error); + } + } + this._profilesObject = { profiles, emptyWindows }; + } + return this._profilesObject; + } + createDefaultProfile() { + const defaultProfile = toUserDataProfile("__default__profile__", localize("defaultProfile", "Default"), this.environmentService.userRoamingDataHome, this.profilesCacheHome); + return { ...defaultProfile, extensionsResource: this.getDefaultProfileExtensionsLocation() ?? defaultProfile.extensionsResource, isDefault: true }; + } + async createTransientProfile(workspaceIdentifier) { + const namePrefix = `Temp`; + const nameRegEx = new RegExp(`${escapeRegExpCharacters(namePrefix)}\\s(\\d+)`); + let nameIndex = 0; + for (const profile of this.profiles) { + const matches = nameRegEx.exec(profile.name); + const index = matches ? parseInt(matches[1]) : 0; + nameIndex = index > nameIndex ? index : nameIndex; + } + const name = `${namePrefix} ${nameIndex + 1}`; + return this.createProfile(hash(generateUuid()).toString(16), name, { transient: true }, workspaceIdentifier); + } + async createNamedProfile(name, options2, workspaceIdentifier) { + return this.createProfile(hash(generateUuid()).toString(16), name, options2, workspaceIdentifier); + } + async createProfile(id2, name, options2, workspaceIdentifier) { + if (!this.enabled) { + throw new Error(`Profiles are disabled in the current environment.`); + } + const profile = await this.doCreateProfile(id2, name, options2, workspaceIdentifier); + return profile; + } + async doCreateProfile(id2, name, options2, workspaceIdentifier) { + if (!isString(name) || !name) { + throw new Error("Name of the profile is mandatory and must be of type `string`"); + } + let profileCreationPromise = this.profileCreationPromises.get(name); + if (!profileCreationPromise) { + profileCreationPromise = (async () => { + try { + const existing = this.profiles.find((p) => p.id === id2 || !p.isTransient && !options2?.transient && p.name === name); + if (existing) { + throw new Error(`Profile with ${name} name already exists`); + } + const workspace = workspaceIdentifier ? this.getWorkspace(workspaceIdentifier) : void 0; + if (URI.isUri(workspace)) { + options2 = { ...options2, workspaces: [workspace] }; + } + const profile = toUserDataProfile(id2, name, joinPath(this.profilesHome, id2), this.profilesCacheHome, options2, this.defaultProfile); + await this.fileService.createFolder(profile.location); + const joiners = []; + this._onWillCreateProfile.fire({ + profile, + join(promise) { + joiners.push(promise); + } + }); + await Promises.settled(joiners); + if (workspace && !URI.isUri(workspace)) { + this.updateEmptyWindowAssociation(workspace, profile, !!profile.isTransient); + } + this.updateProfiles([profile], [], []); + return profile; + } finally { + this.profileCreationPromises.delete(name); + } + })(); + this.profileCreationPromises.set(name, profileCreationPromise); + } + return profileCreationPromise; + } + async updateProfile(profile, options2) { + if (!this.enabled) { + throw new Error(`Profiles are disabled in the current environment.`); + } + const profilesToUpdate = []; + for (const existing of this.profiles) { + let profileToUpdate; + if (profile.id === existing.id) { + if (!existing.isDefault) { + profileToUpdate = toUserDataProfile(existing.id, options2.name ?? existing.name, existing.location, this.profilesCacheHome, { + shortName: options2.shortName ?? existing.shortName, + icon: options2.icon === null ? void 0 : options2.icon ?? existing.icon, + transient: options2.transient ?? existing.isTransient, + useDefaultFlags: options2.useDefaultFlags ?? existing.useDefaultFlags, + workspaces: options2.workspaces ?? existing.workspaces + }, this.defaultProfile); + } else if (options2.workspaces) { + profileToUpdate = existing; + profileToUpdate.workspaces = options2.workspaces; + } + } else if (options2.workspaces) { + const workspaces = existing.workspaces?.filter((w1) => !options2.workspaces?.some((w2) => this.uriIdentityService.extUri.isEqual(w1, w2))); + if (existing.workspaces?.length !== workspaces?.length) { + profileToUpdate = existing; + profileToUpdate.workspaces = workspaces; + } + } + if (profileToUpdate) { + profilesToUpdate.push(profileToUpdate); + } + } + if (!profilesToUpdate.length) { + if (profile.isDefault) { + throw new Error("Cannot update default profile"); + } + throw new Error(`Profile '${profile.name}' does not exist`); + } + this.updateProfiles([], [], profilesToUpdate); + const updatedProfile = this.profiles.find((p) => p.id === profile.id); + if (!updatedProfile) { + throw new Error(`Profile '${profile.name}' was not updated`); + } + return updatedProfile; + } + async removeProfile(profileToRemove) { + if (!this.enabled) { + throw new Error(`Profiles are disabled in the current environment.`); + } + if (profileToRemove.isDefault) { + throw new Error("Cannot remove default profile"); + } + const profile = this.profiles.find((p) => p.id === profileToRemove.id); + if (!profile) { + throw new Error(`Profile '${profileToRemove.name}' does not exist`); + } + const joiners = []; + this._onWillRemoveProfile.fire({ + profile, + join(promise) { + joiners.push(promise); + } + }); + try { + await Promise.allSettled(joiners); + } catch (error) { + this.logService.error(error); + } + this.updateProfiles([], [profile], []); + try { + await this.fileService.del(profile.cacheHome, { recursive: true }); + } catch (error) { + if (toFileOperationResult(error) !== 1 /* FILE_NOT_FOUND */) { + this.logService.error(error); + } + } + } + async setProfileForWorkspace(workspaceIdentifier, profileToSet) { + if (!this.enabled) { + throw new Error(`Profiles are disabled in the current environment.`); + } + const profile = this.profiles.find((p) => p.id === profileToSet.id); + if (!profile) { + throw new Error(`Profile '${profileToSet.name}' does not exist`); + } + const workspace = this.getWorkspace(workspaceIdentifier); + if (URI.isUri(workspace)) { + const workspaces = profile.workspaces ? [...profile.workspaces] : []; + if (!workspaces.some((w) => this.uriIdentityService.extUri.isEqual(w, workspace))) { + workspaces.push(workspace); + await this.updateProfile(profile, { workspaces }); + } + } else { + this.updateEmptyWindowAssociation(workspace, profile, false); + this.updateStoredProfiles(this.profiles); + } + } + unsetWorkspace(workspaceIdentifier, transient = false) { + if (!this.enabled) { + throw new Error(`Profiles are disabled in the current environment.`); + } + const workspace = this.getWorkspace(workspaceIdentifier); + if (URI.isUri(workspace)) { + const currentlyAssociatedProfile = this.getProfileForWorkspace(workspaceIdentifier); + if (currentlyAssociatedProfile) { + this.updateProfile(currentlyAssociatedProfile, { workspaces: currentlyAssociatedProfile.workspaces?.filter((w) => !this.uriIdentityService.extUri.isEqual(w, workspace)) }); + } + } else { + this.updateEmptyWindowAssociation(workspace, void 0, transient); + this.updateStoredProfiles(this.profiles); + } + } + async resetWorkspaces() { + this.transientProfilesObject.emptyWindows.clear(); + this.profilesObject.emptyWindows.clear(); + for (const profile of this.profiles) { + profile.workspaces = void 0; + } + this.updateProfiles([], [], this.profiles); + this._onDidResetWorkspaces.fire(); + } + async cleanUp() { + if (!this.enabled) { + return; + } + if (await this.fileService.exists(this.profilesHome)) { + const stat = await this.fileService.resolve(this.profilesHome); + await Promise.all((stat.children || []).filter((child) => child.isDirectory && this.profiles.every((p) => !this.uriIdentityService.extUri.isEqual(p.location, child.resource))).map((child) => this.fileService.del(child.resource, { recursive: true }))); + } + } + async cleanUpTransientProfiles() { + if (!this.enabled) { + return; + } + const unAssociatedTransientProfiles = this.transientProfilesObject.profiles.filter((p) => !this.isProfileAssociatedToWorkspace(p)); + await Promise.allSettled(unAssociatedTransientProfiles.map((p) => this.removeProfile(p))); + } + getProfileForWorkspace(workspaceIdentifier) { + const workspace = this.getWorkspace(workspaceIdentifier); + return URI.isUri(workspace) ? this.profiles.find((p) => p.workspaces?.some((w) => this.uriIdentityService.extUri.isEqual(w, workspace))) : this.profilesObject.emptyWindows.get(workspace) ?? this.transientProfilesObject.emptyWindows.get(workspace); + } + getWorkspace(workspaceIdentifier) { + if (isSingleFolderWorkspaceIdentifier(workspaceIdentifier)) { + return workspaceIdentifier.uri; + } + if (isWorkspaceIdentifier(workspaceIdentifier)) { + return workspaceIdentifier.configPath; + } + return workspaceIdentifier.id; + } + isProfileAssociatedToWorkspace(profile) { + if (profile.workspaces?.length) { + return true; + } + if ([...this.profilesObject.emptyWindows.values()].some((windowProfile) => this.uriIdentityService.extUri.isEqual(windowProfile.location, profile.location))) { + return true; + } + if ([...this.transientProfilesObject.emptyWindows.values()].some((windowProfile) => this.uriIdentityService.extUri.isEqual(windowProfile.location, profile.location))) { + return true; + } + return false; + } + updateProfiles(added, removed, updated) { + const allProfiles = [...this.profiles, ...added]; + const transientProfiles = this.transientProfilesObject.profiles; + this.transientProfilesObject.profiles = []; + const profiles = []; + for (let profile of allProfiles) { + if (removed.some((p) => profile.id === p.id)) { + for (const windowId of [...this.profilesObject.emptyWindows.keys()]) { + if (profile.id === this.profilesObject.emptyWindows.get(windowId)?.id) { + this.profilesObject.emptyWindows.delete(windowId); + } + } + continue; + } + if (!profile.isDefault) { + profile = updated.find((p) => profile.id === p.id) ?? profile; + const transientProfile = transientProfiles.find((p) => profile.id === p.id); + if (profile.isTransient) { + this.transientProfilesObject.profiles.push(profile); + } else { + if (transientProfile) { + for (const [windowId, p] of this.transientProfilesObject.emptyWindows.entries()) { + if (profile.id === p.id) { + this.transientProfilesObject.emptyWindows.delete(windowId); + this.profilesObject.emptyWindows.set(windowId, profile); + break; + } + } + } + } + } + if (profile.workspaces?.length === 0) { + profile.workspaces = void 0; + } + profiles.push(profile); + } + this.updateStoredProfiles(profiles); + this.triggerProfilesChanges(added, removed, updated); + } + triggerProfilesChanges(added, removed, updated) { + this._onDidChangeProfiles.fire({ added, removed, updated, all: this.profiles }); + } + updateEmptyWindowAssociation(windowId, newProfile, transient) { + transient = newProfile?.isTransient ? true : transient; + if (transient) { + if (newProfile) { + this.transientProfilesObject.emptyWindows.set(windowId, newProfile); + } else { + this.transientProfilesObject.emptyWindows.delete(windowId); + } + } else { + this.transientProfilesObject.emptyWindows.delete(windowId); + if (newProfile) { + this.profilesObject.emptyWindows.set(windowId, newProfile); + } else { + this.profilesObject.emptyWindows.delete(windowId); + } + } + } + updateStoredProfiles(profiles) { + const storedProfiles = []; + const workspaces = {}; + const emptyWindows = {}; + for (const profile of profiles) { + if (profile.isTransient) { + continue; + } + if (!profile.isDefault) { + storedProfiles.push({ location: profile.location, name: profile.name, shortName: profile.shortName, icon: profile.icon, useDefaultFlags: profile.useDefaultFlags }); + } + if (profile.workspaces) { + for (const workspace of profile.workspaces) { + workspaces[workspace.toString()] = profile.id; + } + } + } + for (const [windowId, profile] of this.profilesObject.emptyWindows.entries()) { + emptyWindows[windowId.toString()] = profile.id; + } + this.saveStoredProfileAssociations({ workspaces, emptyWindows }); + this.saveStoredProfiles(storedProfiles); + this._profilesObject = void 0; + } + // TODO: @sandy081 Remove migration after couple of releases + migrateStoredProfileAssociations(storedProfileAssociations) { + const workspaces = {}; + const defaultProfile = this.createDefaultProfile(); + if (storedProfileAssociations.workspaces) { + for (const [workspace, location] of Object.entries(storedProfileAssociations.workspaces)) { + const uri = URI.parse(location); + workspaces[workspace] = this.uriIdentityService.extUri.isEqual(uri, defaultProfile.location) ? defaultProfile.id : this.uriIdentityService.extUri.basename(uri); + } + } + const emptyWindows = {}; + if (storedProfileAssociations.emptyWindows) { + for (const [workspace, location] of Object.entries(storedProfileAssociations.emptyWindows)) { + const uri = URI.parse(location); + emptyWindows[workspace] = this.uriIdentityService.extUri.isEqual(uri, defaultProfile.location) ? defaultProfile.id : this.uriIdentityService.extUri.basename(uri); + } + } + return { workspaces, emptyWindows }; + } + getStoredProfiles() { + return []; + } + saveStoredProfiles(storedProfiles) { + throw new Error("not implemented"); + } + getStoredProfileAssociations() { + return {}; + } + saveStoredProfileAssociations(storedProfileAssociations) { + throw new Error("not implemented"); + } + getDefaultProfileExtensionsLocation() { + return void 0; + } +}; +UserDataProfilesService = __decorateClass([ + __decorateParam(0, IEnvironmentService), + __decorateParam(1, IFileService), + __decorateParam(2, IUriIdentityService), + __decorateParam(3, ILogService) +], UserDataProfilesService); + +// ../../../../../platform/storage/common/storage.ts +var IS_NEW_KEY = "__$__isNewStorageMarker"; +var TARGET_KEY = "__$__targetStorageMarker"; +var IStorageService = createDecorator("storageService"); +function loadKeyTargets(storage) { + const keysRaw = storage.get(TARGET_KEY); + if (keysRaw) { + try { + return JSON.parse(keysRaw); + } catch (error) { + } + } + return /* @__PURE__ */ Object.create(null); +} +(class _AbstractStorageService extends Disposable { + constructor(options2 = { flushInterval: _AbstractStorageService.DEFAULT_FLUSH_INTERVAL }) { + super(); + this.options = options2; + // every minute + this._onDidChangeValue = this._register(new PauseableEmitter()); + this._onDidChangeTarget = this._register(new PauseableEmitter()); + this.onDidChangeTarget = this._onDidChangeTarget.event; + this._onWillSaveState = this._register(new Emitter()); + this.onWillSaveState = this._onWillSaveState.event; + this.flushWhenIdleScheduler = this._register(new RunOnceScheduler(() => this.doFlushWhenIdle(), this.options.flushInterval)); + this.runFlushWhenIdle = this._register(new MutableDisposable()); + this._workspaceKeyTargets = void 0; + this._profileKeyTargets = void 0; + this._applicationKeyTargets = void 0; + } + static { + this.DEFAULT_FLUSH_INTERVAL = 60 * 1e3; + } + onDidChangeValue(scope, key, disposable) { + return Event.filter(this._onDidChangeValue.event, (e) => e.scope === scope && (key === void 0 || e.key === key), disposable); + } + doFlushWhenIdle() { + this.runFlushWhenIdle.value = runWhenGlobalIdle(() => { + if (this.shouldFlushWhenIdle()) { + this.flush(); + } + this.flushWhenIdleScheduler.schedule(); + }); + } + shouldFlushWhenIdle() { + return true; + } + stopFlushWhenIdle() { + dispose([this.runFlushWhenIdle, this.flushWhenIdleScheduler]); + } + initialize() { + if (!this.initializationPromise) { + this.initializationPromise = (async () => { + mark("code/willInitStorage"); + try { + await this.doInitialize(); + } finally { + mark("code/didInitStorage"); + } + this.flushWhenIdleScheduler.schedule(); + })(); + } + return this.initializationPromise; + } + emitDidChangeValue(scope, event) { + const { key, external } = event; + if (key === TARGET_KEY) { + switch (scope) { + case -1 /* APPLICATION */: + this._applicationKeyTargets = void 0; + break; + case 0 /* PROFILE */: + this._profileKeyTargets = void 0; + break; + case 1 /* WORKSPACE */: + this._workspaceKeyTargets = void 0; + break; + } + this._onDidChangeTarget.fire({ scope }); + } else { + this._onDidChangeValue.fire({ scope, key, target: this.getKeyTargets(scope)[key], external }); + } + } + emitWillSaveState(reason) { + this._onWillSaveState.fire({ reason }); + } + get(key, scope, fallbackValue) { + return this.getStorage(scope)?.get(key, fallbackValue); + } + getBoolean(key, scope, fallbackValue) { + return this.getStorage(scope)?.getBoolean(key, fallbackValue); + } + getNumber(key, scope, fallbackValue) { + return this.getStorage(scope)?.getNumber(key, fallbackValue); + } + getObject(key, scope, fallbackValue) { + return this.getStorage(scope)?.getObject(key, fallbackValue); + } + storeAll(entries2, external) { + this.withPausedEmitters(() => { + for (const entry of entries2) { + this.store(entry.key, entry.value, entry.scope, entry.target, external); + } + }); + } + store(key, value, scope, target, external = false) { + if (isUndefinedOrNull(value)) { + this.remove(key, scope, external); + return; + } + this.withPausedEmitters(() => { + this.updateKeyTarget(key, scope, target); + this.getStorage(scope)?.set(key, value, external); + }); + } + remove(key, scope, external = false) { + this.withPausedEmitters(() => { + this.updateKeyTarget(key, scope, void 0); + this.getStorage(scope)?.delete(key, external); + }); + } + withPausedEmitters(fn) { + this._onDidChangeValue.pause(); + this._onDidChangeTarget.pause(); + try { + fn(); + } finally { + this._onDidChangeValue.resume(); + this._onDidChangeTarget.resume(); + } + } + keys(scope, target) { + const keys = []; + const keyTargets = this.getKeyTargets(scope); + for (const key of Object.keys(keyTargets)) { + const keyTarget = keyTargets[key]; + if (keyTarget === target) { + keys.push(key); + } + } + return keys; + } + updateKeyTarget(key, scope, target, external = false) { + const keyTargets = this.getKeyTargets(scope); + if (typeof target === "number") { + if (keyTargets[key] !== target) { + keyTargets[key] = target; + this.getStorage(scope)?.set(TARGET_KEY, JSON.stringify(keyTargets), external); + } + } else { + if (typeof keyTargets[key] === "number") { + delete keyTargets[key]; + this.getStorage(scope)?.set(TARGET_KEY, JSON.stringify(keyTargets), external); + } + } + } + get workspaceKeyTargets() { + if (!this._workspaceKeyTargets) { + this._workspaceKeyTargets = this.loadKeyTargets(1 /* WORKSPACE */); + } + return this._workspaceKeyTargets; + } + get profileKeyTargets() { + if (!this._profileKeyTargets) { + this._profileKeyTargets = this.loadKeyTargets(0 /* PROFILE */); + } + return this._profileKeyTargets; + } + get applicationKeyTargets() { + if (!this._applicationKeyTargets) { + this._applicationKeyTargets = this.loadKeyTargets(-1 /* APPLICATION */); + } + return this._applicationKeyTargets; + } + getKeyTargets(scope) { + switch (scope) { + case -1 /* APPLICATION */: + return this.applicationKeyTargets; + case 0 /* PROFILE */: + return this.profileKeyTargets; + default: + return this.workspaceKeyTargets; + } + } + loadKeyTargets(scope) { + const storage = this.getStorage(scope); + return storage ? loadKeyTargets(storage) : /* @__PURE__ */ Object.create(null); + } + isNew(scope) { + return this.getBoolean(IS_NEW_KEY, scope) === true; + } + async flush(reason = 0 /* NONE */) { + this._onWillSaveState.fire({ reason }); + const applicationStorage = this.getStorage(-1 /* APPLICATION */); + const profileStorage = this.getStorage(0 /* PROFILE */); + const workspaceStorage = this.getStorage(1 /* WORKSPACE */); + switch (reason) { + // Unspecific reason: just wait when data is flushed + case 0 /* NONE */: + await Promises.settled([ + applicationStorage?.whenFlushed() ?? Promise.resolve(), + profileStorage?.whenFlushed() ?? Promise.resolve(), + workspaceStorage?.whenFlushed() ?? Promise.resolve() + ]); + break; + // Shutdown: we want to flush as soon as possible + // and not hit any delays that might be there + case 1 /* SHUTDOWN */: + await Promises.settled([ + applicationStorage?.flush(0) ?? Promise.resolve(), + profileStorage?.flush(0) ?? Promise.resolve(), + workspaceStorage?.flush(0) ?? Promise.resolve() + ]); + break; + } + } + async log() { + const applicationItems = this.getStorage(-1 /* APPLICATION */)?.items ?? /* @__PURE__ */ new Map(); + const profileItems = this.getStorage(0 /* PROFILE */)?.items ?? /* @__PURE__ */ new Map(); + const workspaceItems = this.getStorage(1 /* WORKSPACE */)?.items ?? /* @__PURE__ */ new Map(); + return logStorage( + applicationItems, + profileItems, + workspaceItems, + this.getLogDetails(-1 /* APPLICATION */) ?? "", + this.getLogDetails(0 /* PROFILE */) ?? "", + this.getLogDetails(1 /* WORKSPACE */) ?? "" + ); + } + async optimize(scope) { + await this.flush(); + return this.getStorage(scope)?.optimize(); + } + async switch(to, preserveData) { + this.emitWillSaveState(0 /* NONE */); + if (isUserDataProfile(to)) { + return this.switchToProfile(to, preserveData); + } + return this.switchToWorkspace(to, preserveData); + } + canSwitchProfile(from, to) { + if (from.id === to.id) { + return false; + } + if (isProfileUsingDefaultStorage(to) && isProfileUsingDefaultStorage(from)) { + return false; + } + return true; + } + switchData(oldStorage, newStorage, scope) { + this.withPausedEmitters(() => { + const handledkeys = /* @__PURE__ */ new Set(); + for (const [key, oldValue] of oldStorage) { + handledkeys.add(key); + const newValue = newStorage.get(key); + if (newValue !== oldValue) { + this.emitDidChangeValue(scope, { key, external: true }); + } + } + for (const [key] of newStorage.items) { + if (!handledkeys.has(key)) { + this.emitDidChangeValue(scope, { key, external: true }); + } + } + }); + } +}); +function isProfileUsingDefaultStorage(profile) { + return profile.isDefault || !!profile.useDefaultFlags?.globalState; +} +async function logStorage(application, profile, workspace, applicationPath, profilePath, workspacePath) { + const safeParse = (value) => { + try { + return JSON.parse(value); + } catch (error) { + return value; + } + }; + const applicationItems = /* @__PURE__ */ new Map(); + const applicationItemsParsed = /* @__PURE__ */ new Map(); + application.forEach((value, key) => { + applicationItems.set(key, value); + applicationItemsParsed.set(key, safeParse(value)); + }); + const profileItems = /* @__PURE__ */ new Map(); + const profileItemsParsed = /* @__PURE__ */ new Map(); + profile.forEach((value, key) => { + profileItems.set(key, value); + profileItemsParsed.set(key, safeParse(value)); + }); + const workspaceItems = /* @__PURE__ */ new Map(); + const workspaceItemsParsed = /* @__PURE__ */ new Map(); + workspace.forEach((value, key) => { + workspaceItems.set(key, value); + workspaceItemsParsed.set(key, safeParse(value)); + }); + if (applicationPath !== profilePath) { + console.group(`Storage: Application (path: ${applicationPath})`); + } else { + console.group(`Storage: Application & Profile (path: ${applicationPath}, default profile)`); + } + const applicationValues = []; + applicationItems.forEach((value, key) => { + applicationValues.push({ key, value }); + }); + console.table(applicationValues); + console.groupEnd(); + console.log(applicationItemsParsed); + if (applicationPath !== profilePath) { + console.group(`Storage: Profile (path: ${profilePath}, profile specific)`); + const profileValues = []; + profileItems.forEach((value, key) => { + profileValues.push({ key, value }); + }); + console.table(profileValues); + console.groupEnd(); + console.log(profileItemsParsed); + } + console.group(`Storage: Workspace (path: ${workspacePath})`); + const workspaceValues = []; + workspaceItems.forEach((value, key) => { + workspaceValues.push({ key, value }); + }); + console.table(workspaceValues); + console.groupEnd(); + console.log(workspaceItemsParsed); +} + +// ../../../../../platform/theme/browser/defaultStyles.ts +({ + keybindingLabelBackground: asCssVariable(keybindingLabelBackground), + keybindingLabelForeground: asCssVariable(keybindingLabelForeground), + keybindingLabelBorder: asCssVariable(keybindingLabelBorder), + keybindingLabelBottomBorder: asCssVariable(keybindingLabelBottomBorder), + keybindingLabelShadow: asCssVariable(widgetShadow) +}); +var defaultButtonStyles = { + buttonForeground: asCssVariable(buttonForeground), + buttonSeparator: asCssVariable(buttonSeparator), + buttonBackground: asCssVariable(buttonBackground), + buttonHoverBackground: asCssVariable(buttonHoverBackground), + buttonSecondaryForeground: asCssVariable(buttonSecondaryForeground), + buttonSecondaryBackground: asCssVariable(buttonSecondaryBackground), + buttonSecondaryHoverBackground: asCssVariable(buttonSecondaryHoverBackground), + buttonBorder: asCssVariable(buttonBorder) +}; +var defaultProgressBarStyles = { + progressBarBackground: asCssVariable(progressBarBackground) +}; +var defaultToggleStyles = { + inputActiveOptionBorder: asCssVariable(inputActiveOptionBorder), + inputActiveOptionForeground: asCssVariable(inputActiveOptionForeground), + inputActiveOptionBackground: asCssVariable(inputActiveOptionBackground) +}; +({ + activeForeground: asCssVariable(radioActiveForeground), + activeBackground: asCssVariable(radioActiveBackground), + activeBorder: asCssVariable(radioActiveBorder), + inactiveForeground: asCssVariable(radioInactiveForeground), + inactiveBackground: asCssVariable(radioInactiveBackground), + inactiveBorder: asCssVariable(radioInactiveBorder), + inactiveHoverBackground: asCssVariable(radioInactiveHoverBackground) +}); +({ + checkboxBackground: asCssVariable(checkboxBackground), + checkboxBorder: asCssVariable(checkboxBorder), + checkboxForeground: asCssVariable(checkboxForeground) +}); +({ + dialogBackground: asCssVariable(editorWidgetBackground), + dialogForeground: asCssVariable(editorWidgetForeground), + dialogShadow: asCssVariable(widgetShadow), + dialogBorder: asCssVariable(contrastBorder), + errorIconForeground: asCssVariable(problemsErrorIconForeground), + warningIconForeground: asCssVariable(problemsWarningIconForeground), + infoIconForeground: asCssVariable(problemsInfoIconForeground), + textLinkForeground: asCssVariable(textLinkForeground) +}); +var defaultInputBoxStyles = { + inputBackground: asCssVariable(inputBackground), + inputForeground: asCssVariable(inputForeground), + inputBorder: asCssVariable(inputBorder), + inputValidationInfoBorder: asCssVariable(inputValidationInfoBorder), + inputValidationInfoBackground: asCssVariable(inputValidationInfoBackground), + inputValidationInfoForeground: asCssVariable(inputValidationInfoForeground), + inputValidationWarningBorder: asCssVariable(inputValidationWarningBorder), + inputValidationWarningBackground: asCssVariable(inputValidationWarningBackground), + inputValidationWarningForeground: asCssVariable(inputValidationWarningForeground), + inputValidationErrorBorder: asCssVariable(inputValidationErrorBorder), + inputValidationErrorBackground: asCssVariable(inputValidationErrorBackground), + inputValidationErrorForeground: asCssVariable(inputValidationErrorForeground) +}; +({ + listFilterWidgetBackground: asCssVariable(listFilterWidgetBackground), + listFilterWidgetOutline: asCssVariable(listFilterWidgetOutline), + listFilterWidgetNoMatchesOutline: asCssVariable(listFilterWidgetNoMatchesOutline), + listFilterWidgetShadow: asCssVariable(listFilterWidgetShadow), + inputBoxStyles: defaultInputBoxStyles, + toggleStyles: defaultToggleStyles +}); +({ + badgeBackground: asCssVariable(badgeBackground), + badgeForeground: asCssVariable(badgeForeground), + badgeBorder: asCssVariable(contrastBorder) +}); +({ + breadcrumbsBackground: asCssVariable(breadcrumbsBackground), + breadcrumbsForeground: asCssVariable(breadcrumbsForeground), + breadcrumbsHoverForeground: asCssVariable(breadcrumbsFocusForeground), + breadcrumbsFocusForeground: asCssVariable(breadcrumbsFocusForeground), + breadcrumbsFocusAndSelectionForeground: asCssVariable(breadcrumbsActiveSelectionForeground) +}); +({ + listBackground: void 0, + listInactiveFocusForeground: void 0, + listFocusBackground: asCssVariable(listFocusBackground), + listFocusForeground: asCssVariable(listFocusForeground), + listFocusOutline: asCssVariable(listFocusOutline), + listActiveSelectionBackground: asCssVariable(listActiveSelectionBackground), + listActiveSelectionForeground: asCssVariable(listActiveSelectionForeground), + listActiveSelectionIconForeground: asCssVariable(listActiveSelectionIconForeground), + listFocusAndSelectionOutline: asCssVariable(listFocusAndSelectionOutline), + listFocusAndSelectionBackground: asCssVariable(listActiveSelectionBackground), + listFocusAndSelectionForeground: asCssVariable(listActiveSelectionForeground), + listInactiveSelectionBackground: asCssVariable(listInactiveSelectionBackground), + listInactiveSelectionIconForeground: asCssVariable(listInactiveSelectionIconForeground), + listInactiveSelectionForeground: asCssVariable(listInactiveSelectionForeground), + listInactiveFocusBackground: asCssVariable(listInactiveFocusBackground), + listInactiveFocusOutline: asCssVariable(listInactiveFocusOutline), + listHoverBackground: asCssVariable(listHoverBackground), + listHoverForeground: asCssVariable(listHoverForeground), + listDropOverBackground: asCssVariable(listDropOverBackground), + listDropBetweenBackground: asCssVariable(listDropBetweenBackground), + listSelectionOutline: asCssVariable(activeContrastBorder), + listHoverOutline: asCssVariable(activeContrastBorder), + treeIndentGuidesStroke: asCssVariable(treeIndentGuidesStroke), + treeInactiveIndentGuidesStroke: asCssVariable(treeInactiveIndentGuidesStroke), + treeStickyScrollBackground: void 0, + treeStickyScrollBorder: void 0, + treeStickyScrollShadow: asCssVariable(scrollbarShadow), + tableColumnsBorder: asCssVariable(tableColumnsBorder), + tableOddRowsBackgroundColor: asCssVariable(tableOddRowsBackgroundColor) +}); +var defaultSelectBoxStyles = { + selectBackground: asCssVariable(selectBackground), + selectListBackground: asCssVariable(selectListBackground), + selectForeground: asCssVariable(selectForeground), + decoratorRightForeground: asCssVariable(pickerGroupForeground), + selectBorder: asCssVariable(selectBorder), + focusBorder: asCssVariable(focusBorder), + listFocusBackground: asCssVariable(quickInputListFocusBackground), + listInactiveSelectionIconForeground: asCssVariable(quickInputListFocusIconForeground), + listFocusForeground: asCssVariable(quickInputListFocusForeground), + listFocusOutline: asCssVariableWithDefault(activeContrastBorder, Color.transparent.toString()), + listHoverBackground: asCssVariable(listHoverBackground), + listHoverForeground: asCssVariable(listHoverForeground), + listHoverOutline: asCssVariable(activeContrastBorder), + selectListBorder: asCssVariable(editorWidgetBorder), + listBackground: void 0, + listActiveSelectionBackground: void 0, + listActiveSelectionForeground: void 0, + listActiveSelectionIconForeground: void 0, + listFocusAndSelectionBackground: void 0, + listDropOverBackground: void 0, + listDropBetweenBackground: void 0, + listInactiveSelectionBackground: void 0, + listInactiveSelectionForeground: void 0, + listInactiveFocusBackground: void 0, + listInactiveFocusOutline: void 0, + listSelectionOutline: void 0, + listFocusAndSelectionForeground: void 0, + listFocusAndSelectionOutline: void 0, + listInactiveFocusForeground: void 0, + tableColumnsBorder: void 0, + tableOddRowsBackgroundColor: void 0, + treeIndentGuidesStroke: void 0, + treeInactiveIndentGuidesStroke: void 0, + treeStickyScrollBackground: void 0, + treeStickyScrollBorder: void 0, + treeStickyScrollShadow: void 0 +}; +({ + shadowColor: asCssVariable(widgetShadow), + borderColor: asCssVariable(menuBorder), + foregroundColor: asCssVariable(menuForeground), + backgroundColor: asCssVariable(menuBackground), + selectionForegroundColor: asCssVariable(menuSelectionForeground), + selectionBackgroundColor: asCssVariable(menuSelectionBackground), + selectionBorderColor: asCssVariable(menuSelectionBorder), + separatorColor: asCssVariable(menuSeparatorBackground), + scrollbarShadow: asCssVariable(scrollbarShadow), + scrollbarSliderBackground: asCssVariable(scrollbarSliderBackground), + scrollbarSliderHoverBackground: asCssVariable(scrollbarSliderHoverBackground), + scrollbarSliderActiveBackground: asCssVariable(scrollbarSliderActiveBackground) +}); + +// ../../../../../platform/accessibility/common/accessibility.ts +var IAccessibilityService = createDecorator("accessibilityService"); +new RawContextKey("accessibilityModeEnabled", false); + +// ../../../../../platform/actions/browser/menuEntryActionViewItem.ts +function createAndFillInActionBarActions(menu, optionsOrTarget, targetOrPrimaryGroup, primaryGroupOrShouldInlineSubmenu, shouldInlineSubmenuOrUseSeparatorsInPrimaryActions, useSeparatorsInPrimaryActionsOrUndefined) { + let target; + let primaryGroup; + let shouldInlineSubmenu; + let useSeparatorsInPrimaryActions; + let groups; + if (Array.isArray(menu)) { + groups = menu; + target = optionsOrTarget; + primaryGroup = targetOrPrimaryGroup; + shouldInlineSubmenu = primaryGroupOrShouldInlineSubmenu; + useSeparatorsInPrimaryActions = shouldInlineSubmenuOrUseSeparatorsInPrimaryActions; + } else { + const options2 = optionsOrTarget; + groups = menu.getActions(options2); + target = targetOrPrimaryGroup; + primaryGroup = primaryGroupOrShouldInlineSubmenu; + shouldInlineSubmenu = shouldInlineSubmenuOrUseSeparatorsInPrimaryActions; + useSeparatorsInPrimaryActions = useSeparatorsInPrimaryActionsOrUndefined; + } + const isPrimaryAction = typeof primaryGroup === "string" ? (actionGroup) => actionGroup === primaryGroup : primaryGroup; + fillInActions(groups, target, false, isPrimaryAction, shouldInlineSubmenu, useSeparatorsInPrimaryActions); +} +function fillInActions(groups, target, useAlternativeActions, isPrimaryAction = (actionGroup) => actionGroup === "navigation", shouldInlineSubmenu = () => false, useSeparatorsInPrimaryActions = false) { + let primaryBucket; + let secondaryBucket; + if (Array.isArray(target)) { + primaryBucket = target; + secondaryBucket = target; + } else { + primaryBucket = target.primary; + secondaryBucket = target.secondary; + } + const submenuInfo = /* @__PURE__ */ new Set(); + for (const [group, actions] of groups) { + let target2; + if (isPrimaryAction(group)) { + target2 = primaryBucket; + if (target2.length > 0 && useSeparatorsInPrimaryActions) { + target2.push(new Separator()); + } + } else { + target2 = secondaryBucket; + if (target2.length > 0) { + target2.push(new Separator()); + } + } + for (let action of actions) { + const newLen = target2.push(action); + if (action instanceof SubmenuAction) { + submenuInfo.add({ group, action, index: newLen - 1 }); + } + } + } + for (const { group, action, index } of submenuInfo) { + const target2 = isPrimaryAction(group) ? primaryBucket : secondaryBucket; + const submenuActions = action.actions; + if (shouldInlineSubmenu(action, group, target2.length)) { + target2.splice(index, 1, ...submenuActions); + } + } +} +var MenuEntryActionViewItem = class extends ActionViewItem { + constructor(action, _options, _keybindingService, _notificationService, _contextKeyService, _themeService, _contextMenuService, _accessibilityService) { + super(void 0, action, { icon: !!(action.class || action.item.icon), label: !action.class && !action.item.icon, draggable: _options?.draggable, keybinding: _options?.keybinding, hoverDelegate: _options?.hoverDelegate }); + this._options = _options; + this._keybindingService = _keybindingService; + this._notificationService = _notificationService; + this._contextKeyService = _contextKeyService; + this._themeService = _themeService; + this._contextMenuService = _contextMenuService; + this._accessibilityService = _accessibilityService; + this._wantsAltCommand = false; + this._itemClassDispose = this._register(new MutableDisposable()); + this._altKey = ModifierKeyEmitter.getInstance(); + } + get _menuItemAction() { + return this._action; + } + get _commandAction() { + return this._wantsAltCommand && this._menuItemAction.alt || this._menuItemAction; + } + async onClick(event) { + event.preventDefault(); + event.stopPropagation(); + try { + await this.actionRunner.run(this._commandAction, this._context); + } catch (err) { + this._notificationService.error(err); + } + } + render(container) { + super.render(container); + container.classList.add("menu-entry"); + if (this.options.icon) { + this._updateItemClass(this._menuItemAction.item); + } + if (this._menuItemAction.alt) { + let isMouseOver = false; + const updateAltState = () => { + const wantsAltCommand = !!this._menuItemAction.alt?.enabled && (!this._accessibilityService.isMotionReduced() || isMouseOver) && (this._altKey.keyStatus.altKey || this._altKey.keyStatus.shiftKey && isMouseOver); + if (wantsAltCommand !== this._wantsAltCommand) { + this._wantsAltCommand = wantsAltCommand; + this.updateLabel(); + this.updateTooltip(); + this.updateClass(); + } + }; + this._register(this._altKey.event(updateAltState)); + this._register(addDisposableListener(container, "mouseleave", (_) => { + isMouseOver = false; + updateAltState(); + })); + this._register(addDisposableListener(container, "mouseenter", (_) => { + isMouseOver = true; + updateAltState(); + })); + updateAltState(); + } + } + updateLabel() { + if (this.options.label && this.label) { + this.label.textContent = this._commandAction.label; + } + } + getTooltip() { + const keybinding = this._keybindingService.lookupKeybinding(this._commandAction.id, this._contextKeyService); + const keybindingLabel = keybinding && keybinding.getLabel(); + const tooltip = this._commandAction.tooltip || this._commandAction.label; + let title = keybindingLabel ? localize("titleAndKb", "{0} ({1})", tooltip, keybindingLabel) : tooltip; + if (!this._wantsAltCommand && this._menuItemAction.alt?.enabled) { + const altTooltip = this._menuItemAction.alt.tooltip || this._menuItemAction.alt.label; + const altKeybinding = this._keybindingService.lookupKeybinding(this._menuItemAction.alt.id, this._contextKeyService); + const altKeybindingLabel = altKeybinding && altKeybinding.getLabel(); + const altTitleSection = altKeybindingLabel ? localize("titleAndKb", "{0} ({1})", altTooltip, altKeybindingLabel) : altTooltip; + title = localize("titleAndKbAndAlt", "{0}\n[{1}] {2}", title, UILabelProvider.modifierLabels[OS].altKey, altTitleSection); + } + return title; + } + updateClass() { + if (this.options.icon) { + if (this._commandAction !== this._menuItemAction) { + if (this._menuItemAction.alt) { + this._updateItemClass(this._menuItemAction.alt.item); + } + } else { + this._updateItemClass(this._menuItemAction.item); + } + } + } + _updateItemClass(item) { + this._itemClassDispose.value = void 0; + const { element, label } = this; + if (!element || !label) { + return; + } + const icon = this._commandAction.checked && isICommandActionToggleInfo(item.toggled) && item.toggled.icon ? item.toggled.icon : item.icon; + if (!icon) { + return; + } + if (ThemeIcon.isThemeIcon(icon)) { + const iconClasses = ThemeIcon.asClassNameArray(icon); + label.classList.add(...iconClasses); + this._itemClassDispose.value = toDisposable(() => { + label.classList.remove(...iconClasses); + }); + } else { + label.style.backgroundImage = isDark(this._themeService.getColorTheme().type) ? asCSSUrl(icon.dark) : asCSSUrl(icon.light); + label.classList.add("icon"); + this._itemClassDispose.value = combinedDisposable( + toDisposable(() => { + label.style.backgroundImage = ""; + label.classList.remove("icon"); + }), + this._themeService.onDidColorThemeChange(() => { + this.updateClass(); + }) + ); + } + } +}; +MenuEntryActionViewItem = __decorateClass([ + __decorateParam(2, IKeybindingService), + __decorateParam(3, INotificationService), + __decorateParam(4, IContextKeyService), + __decorateParam(5, IThemeService), + __decorateParam(6, IContextMenuService), + __decorateParam(7, IAccessibilityService) +], MenuEntryActionViewItem); +var SubmenuEntryActionViewItem = class extends DropdownMenuActionViewItem { + constructor(action, options2, _keybindingService, _contextMenuService, _themeService) { + const dropdownOptions = { + ...options2, + menuAsChild: options2?.menuAsChild ?? false, + classNames: options2?.classNames ?? (ThemeIcon.isThemeIcon(action.item.icon) ? ThemeIcon.asClassName(action.item.icon) : void 0), + keybindingProvider: options2?.keybindingProvider ?? ((action2) => _keybindingService.lookupKeybinding(action2.id)) + }; + super(action, { getActions: () => action.actions }, _contextMenuService, dropdownOptions); + this._keybindingService = _keybindingService; + this._contextMenuService = _contextMenuService; + this._themeService = _themeService; + } + render(container) { + super.render(container); + assertType(this.element); + container.classList.add("menu-entry"); + const action = this._action; + const { icon } = action.item; + if (icon && !ThemeIcon.isThemeIcon(icon)) { + this.element.classList.add("icon"); + const setBackgroundImage = () => { + if (this.element) { + this.element.style.backgroundImage = isDark(this._themeService.getColorTheme().type) ? asCSSUrl(icon.dark) : asCSSUrl(icon.light); + } + }; + setBackgroundImage(); + this._register(this._themeService.onDidColorThemeChange(() => { + setBackgroundImage(); + })); + } + } +}; +SubmenuEntryActionViewItem = __decorateClass([ + __decorateParam(2, IKeybindingService), + __decorateParam(3, IContextMenuService), + __decorateParam(4, IThemeService) +], SubmenuEntryActionViewItem); +var DropdownWithDefaultActionViewItem = class extends BaseActionViewItem { + constructor(submenuAction, options2, _keybindingService, _notificationService, _contextMenuService, _menuService, _instaService, _storageService) { + super(null, submenuAction); + this._keybindingService = _keybindingService; + this._notificationService = _notificationService; + this._contextMenuService = _contextMenuService; + this._menuService = _menuService; + this._instaService = _instaService; + this._storageService = _storageService; + this._container = null; + this._options = options2; + this._storageKey = `${submenuAction.item.submenu.id}_lastActionId`; + let defaultAction; + const defaultActionId = options2?.persistLastActionId ? _storageService.get(this._storageKey, 1 /* WORKSPACE */) : void 0; + if (defaultActionId) { + defaultAction = submenuAction.actions.find((a) => defaultActionId === a.id); + } + if (!defaultAction) { + defaultAction = submenuAction.actions[0]; + } + this._defaultAction = this._instaService.createInstance(MenuEntryActionViewItem, defaultAction, { keybinding: this._getDefaultActionKeybindingLabel(defaultAction) }); + const dropdownOptions = { + keybindingProvider: (action) => this._keybindingService.lookupKeybinding(action.id), + ...options2, + menuAsChild: options2?.menuAsChild ?? true, + classNames: options2?.classNames ?? ["codicon", "codicon-chevron-down"], + actionRunner: options2?.actionRunner ?? new ActionRunner() + }; + this._dropdown = new DropdownMenuActionViewItem(submenuAction, submenuAction.actions, this._contextMenuService, dropdownOptions); + this._register(this._dropdown.actionRunner.onDidRun((e) => { + if (e.action instanceof MenuItemAction) { + this.update(e.action); + } + })); + } + get onDidChangeDropdownVisibility() { + return this._dropdown.onDidChangeVisibility; + } + update(lastAction) { + if (this._options?.persistLastActionId) { + this._storageService.store(this._storageKey, lastAction.id, 1 /* WORKSPACE */, 1 /* MACHINE */); + } + this._defaultAction.dispose(); + this._defaultAction = this._instaService.createInstance(MenuEntryActionViewItem, lastAction, { keybinding: this._getDefaultActionKeybindingLabel(lastAction) }); + this._defaultAction.actionRunner = new class extends ActionRunner { + async runAction(action, context) { + await action.run(void 0); + } + }(); + if (this._container) { + this._defaultAction.render(prepend(this._container, $(".action-container"))); + } + } + _getDefaultActionKeybindingLabel(defaultAction) { + let defaultActionKeybinding; + if (this._options?.renderKeybindingWithDefaultActionLabel) { + const kb = this._keybindingService.lookupKeybinding(defaultAction.id); + if (kb) { + defaultActionKeybinding = `(${kb.getLabel()})`; + } + } + return defaultActionKeybinding; + } + setActionContext(newContext) { + super.setActionContext(newContext); + this._defaultAction.setActionContext(newContext); + this._dropdown.setActionContext(newContext); + } + render(container) { + this._container = container; + super.render(this._container); + this._container.classList.add("monaco-dropdown-with-default"); + const primaryContainer = $(".action-container"); + this._defaultAction.render(append(this._container, primaryContainer)); + this._register(addDisposableListener(primaryContainer, EventType.KEY_DOWN, (e) => { + const event = new StandardKeyboardEvent(e); + if (event.equals(17 /* RightArrow */)) { + this._defaultAction.element.tabIndex = -1; + this._dropdown.focus(); + event.stopPropagation(); + } + })); + const dropdownContainer = $(".dropdown-action-container"); + this._dropdown.render(append(this._container, dropdownContainer)); + this._register(addDisposableListener(dropdownContainer, EventType.KEY_DOWN, (e) => { + const event = new StandardKeyboardEvent(e); + if (event.equals(15 /* LeftArrow */)) { + this._defaultAction.element.tabIndex = 0; + this._dropdown.setFocusable(false); + this._defaultAction.element?.focus(); + event.stopPropagation(); + } + })); + } + focus(fromRight) { + if (fromRight) { + this._dropdown.focus(); + } else { + this._defaultAction.element.tabIndex = 0; + this._defaultAction.element.focus(); + } + } + blur() { + this._defaultAction.element.tabIndex = -1; + this._dropdown.blur(); + this._container.blur(); + } + setFocusable(focusable) { + if (focusable) { + this._defaultAction.element.tabIndex = 0; + } else { + this._defaultAction.element.tabIndex = -1; + this._dropdown.setFocusable(false); + } + } + dispose() { + this._defaultAction.dispose(); + this._dropdown.dispose(); + super.dispose(); + } +}; +DropdownWithDefaultActionViewItem = __decorateClass([ + __decorateParam(2, IKeybindingService), + __decorateParam(3, INotificationService), + __decorateParam(4, IContextMenuService), + __decorateParam(5, IMenuService), + __decorateParam(6, IInstantiationService), + __decorateParam(7, IStorageService) +], DropdownWithDefaultActionViewItem); +var SubmenuEntrySelectActionViewItem = class extends SelectActionViewItem { + constructor(action, contextViewService) { + super(null, action, action.actions.map((a) => ({ + text: a.id === Separator.ID ? "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500" : a.label, + isDisabled: !a.enabled + })), 0, contextViewService, defaultSelectBoxStyles, { ariaLabel: action.tooltip, optionsAsChildren: true }); + this.select(Math.max(0, action.actions.findIndex((a) => a.checked))); + } + render(container) { + super.render(container); + container.style.borderColor = asCssVariable(selectBorder); + } + runAction(option, index) { + const action = this.action.actions[index]; + if (action) { + this.actionRunner.run(action); + } + } +}; +SubmenuEntrySelectActionViewItem = __decorateClass([ + __decorateParam(1, IContextViewService) +], SubmenuEntrySelectActionViewItem); +function createActionViewItem(instaService, action, options2) { + if (action instanceof MenuItemAction) { + return instaService.createInstance(MenuEntryActionViewItem, action, options2); + } else if (action instanceof SubmenuItemAction) { + if (action.item.isSelection) { + return instaService.createInstance(SubmenuEntrySelectActionViewItem, action); + } else { + if (action.item.rememberDefaultAction) { + return instaService.createInstance(DropdownWithDefaultActionViewItem, action, { ...options2, persistLastActionId: true }); + } else { + return instaService.createInstance(SubmenuEntryActionViewItem, action, options2); + } + } + } else { + return void 0; + } +} + +// ../../../../../base/common/linkedText.ts +var LinkedText = class { + constructor(nodes) { + this.nodes = nodes; + } + toString() { + return this.nodes.map((node) => typeof node === "string" ? node : node.label).join(""); + } +}; +__decorateClass([ + memoize +], LinkedText.prototype, "toString", 1); +var LINK_REGEX = /\[([^\]]+)\]\(((?:https?:\/\/|command:|file:)[^\)\s]+)(?: (["'])(.+?)(\3))?\)/gi; +function parseLinkedText(text2) { + const result = []; + let index = 0; + let match; + while (match = LINK_REGEX.exec(text2)) { + if (match.index - index > 0) { + result.push(text2.substring(index, match.index)); + } + const [, label, href, , title] = match; + if (title) { + result.push({ label, href, title }); + } else { + result.push({ label, href }); + } + index = match.index + match[0].length; + } + if (index < text2.length) { + result.push(text2.substring(index)); + } + return new LinkedText(result); +} + +// ../../../../../platform/opener/common/opener.ts +var IOpenerService = createDecorator("openerService"); + +// ../../../../../base/browser/ui/button/button.ts +({ + buttonBackground: "#0E639C", + buttonHoverBackground: "#006BB3", + buttonSeparator: Color.white.toString(), + buttonForeground: Color.white.toString(), + buttonBorder: void 0, + buttonSecondaryBackground: void 0, + buttonSecondaryForeground: void 0, + buttonSecondaryHoverBackground: void 0 +}); +var Button = class extends Disposable { + constructor(container, options2) { + super(); + this._label = ""; + this._onDidClick = this._register(new Emitter()); + this._onDidEscape = this._register(new Emitter()); + this.options = options2; + this._element = document.createElement("a"); + this._element.classList.add("monaco-button"); + this._element.tabIndex = 0; + this._element.setAttribute("role", "button"); + this._element.classList.toggle("secondary", !!options2.secondary); + const background = options2.secondary ? options2.buttonSecondaryBackground : options2.buttonBackground; + const foreground2 = options2.secondary ? options2.buttonSecondaryForeground : options2.buttonForeground; + this._element.style.color = foreground2 || ""; + this._element.style.backgroundColor = background || ""; + if (options2.supportShortLabel) { + this._labelShortElement = document.createElement("div"); + this._labelShortElement.classList.add("monaco-button-label-short"); + this._element.appendChild(this._labelShortElement); + this._labelElement = document.createElement("div"); + this._labelElement.classList.add("monaco-button-label"); + this._element.appendChild(this._labelElement); + this._element.classList.add("monaco-text-button-with-short-label"); + } + if (typeof options2.title === "string") { + this.setTitle(options2.title); + } + if (typeof options2.ariaLabel === "string") { + this._element.setAttribute("aria-label", options2.ariaLabel); + } + container.appendChild(this._element); + this._register(Gesture.addTarget(this._element)); + [EventType.CLICK, EventType2.Tap].forEach((eventType) => { + this._register(addDisposableListener(this._element, eventType, (e) => { + if (!this.enabled) { + EventHelper.stop(e); + return; + } + this._onDidClick.fire(e); + })); + }); + this._register(addDisposableListener(this._element, EventType.KEY_DOWN, (e) => { + const event = new StandardKeyboardEvent(e); + let eventHandled = false; + if (this.enabled && (event.equals(3 /* Enter */) || event.equals(10 /* Space */))) { + this._onDidClick.fire(e); + eventHandled = true; + } else if (event.equals(9 /* Escape */)) { + this._onDidEscape.fire(e); + this._element.blur(); + eventHandled = true; + } + if (eventHandled) { + EventHelper.stop(event, true); + } + })); + this._register(addDisposableListener(this._element, EventType.MOUSE_OVER, (e) => { + if (!this._element.classList.contains("disabled")) { + this.updateBackground(true); + } + })); + this._register(addDisposableListener(this._element, EventType.MOUSE_OUT, (e) => { + this.updateBackground(false); + })); + this.focusTracker = this._register(trackFocus(this._element)); + this._register(this.focusTracker.onDidFocus(() => { + if (this.enabled) { + this.updateBackground(true); + } + })); + this._register(this.focusTracker.onDidBlur(() => { + if (this.enabled) { + this.updateBackground(false); + } + })); + } + get onDidClick() { + return this._onDidClick.event; + } + get onDidEscape() { + return this._onDidEscape.event; + } + dispose() { + super.dispose(); + this._element.remove(); + } + getContentElements(content) { + const elements = []; + for (let segment of renderLabelWithIcons(content)) { + if (typeof segment === "string") { + segment = segment.trim(); + if (segment === "") { + continue; + } + const node = document.createElement("span"); + node.textContent = segment; + elements.push(node); + } else { + elements.push(segment); + } + } + return elements; + } + updateBackground(hover) { + let background; + if (this.options.secondary) { + background = hover ? this.options.buttonSecondaryHoverBackground : this.options.buttonSecondaryBackground; + } else { + background = hover ? this.options.buttonHoverBackground : this.options.buttonBackground; + } + if (background) { + this._element.style.backgroundColor = background; + } + } + get element() { + return this._element; + } + set label(value) { + if (this._label === value) { + return; + } + if (isMarkdownString(this._label) && isMarkdownString(value) && markdownStringEqual(this._label, value)) { + return; + } + this._element.classList.add("monaco-text-button"); + const labelElement = this.options.supportShortLabel ? this._labelElement : this._element; + if (isMarkdownString(value)) { + const rendered = renderMarkdown(value, { inline: true }); + rendered.dispose(); + const root = rendered.element.querySelector("p")?.innerHTML; + if (root) { + const sanitized = sanitize(root, { ADD_TAGS: ["b", "i", "u", "code", "span"], ALLOWED_ATTR: ["class"], RETURN_TRUSTED_TYPE: true }); + labelElement.innerHTML = sanitized; + } else { + reset(labelElement); + } + } else { + if (this.options.supportIcons) { + reset(labelElement, ...this.getContentElements(value)); + } else { + labelElement.textContent = value; + } + } + let title = ""; + if (typeof this.options.title === "string") { + title = this.options.title; + } else if (this.options.title) { + title = renderStringAsPlaintext(value); + } + this.setTitle(title); + if (typeof this.options.ariaLabel === "string") { + this._element.setAttribute("aria-label", this.options.ariaLabel); + } else if (this.options.ariaLabel) { + this._element.setAttribute("aria-label", title); + } + this._label = value; + } + get label() { + return this._label; + } + set labelShort(value) { + if (!this.options.supportShortLabel || !this._labelShortElement) { + return; + } + if (this.options.supportIcons) { + reset(this._labelShortElement, ...this.getContentElements(value)); + } else { + this._labelShortElement.textContent = value; + } + } + set icon(icon) { + this._element.classList.add(...ThemeIcon.asClassNameArray(icon)); + } + set enabled(value) { + if (value) { + this._element.classList.remove("disabled"); + this._element.setAttribute("aria-disabled", String(false)); + this._element.tabIndex = 0; + } else { + this._element.classList.add("disabled"); + this._element.setAttribute("aria-disabled", String(true)); + } + } + get enabled() { + return !this._element.classList.contains("disabled"); + } + set checked(value) { + if (value) { + this._element.classList.add("checked"); + this._element.setAttribute("aria-checked", "true"); + } else { + this._element.classList.remove("checked"); + this._element.setAttribute("aria-checked", "false"); + } + } + get checked() { + return this._element.classList.contains("checked"); + } + setTitle(title) { + if (!this._hover && title !== "") { + this._hover = this._register(getBaseLayerHoverDelegate().setupManagedHover(this.options.hoverDelegate ?? getDefaultHoverDelegate("mouse"), this._element, title)); + } else if (this._hover) { + this._hover.update(title); + } + } + focus() { + this._element.focus(); + } + hasFocus() { + return isActiveElement(this._element); + } +}; + +// ../../../../../platform/hover/browser/hover.ts +var IHoverService = createDecorator("hoverService"); +var WorkbenchHoverDelegate = class extends Disposable { + constructor(placement, instantHover, overrideOptions = {}, configurationService, hoverService) { + super(); + this.placement = placement; + this.instantHover = instantHover; + this.overrideOptions = overrideOptions; + this.configurationService = configurationService; + this.hoverService = hoverService; + this.lastHoverHideTime = 0; + this.timeLimit = 200; + this.hoverDisposables = this._register(new DisposableStore()); + this._delay = this.configurationService.getValue("workbench.hover.delay"); + this._register(this.configurationService.onDidChangeConfiguration((e) => { + if (e.affectsConfiguration("workbench.hover.delay")) { + this._delay = this.configurationService.getValue("workbench.hover.delay"); + } + })); + } + get delay() { + if (this.isInstantlyHovering()) { + return 0; + } + return this._delay; + } + showHover(options2, focus) { + const overrideOptions = typeof this.overrideOptions === "function" ? this.overrideOptions(options2, focus) : this.overrideOptions; + this.hoverDisposables.clear(); + const targets = isHTMLElement(options2.target) ? [options2.target] : options2.target.targetElements; + for (const target of targets) { + this.hoverDisposables.add(addStandardDisposableListener(target, "keydown", (e) => { + if (e.equals(9 /* Escape */)) { + this.hoverService.hideHover(); + } + })); + } + const id2 = isHTMLElement(options2.content) ? void 0 : options2.content.toString(); + return this.hoverService.showHover({ + ...options2, + ...overrideOptions, + persistence: { + hideOnKeyDown: true, + ...overrideOptions.persistence + }, + id: id2, + appearance: { + ...options2.appearance, + compact: true, + skipFadeInAnimation: this.isInstantlyHovering(), + ...overrideOptions.appearance + } + }, focus); + } + isInstantlyHovering() { + return this.instantHover && Date.now() - this.lastHoverHideTime < this.timeLimit; + } + setInstantHoverTimeLimit(timeLimit) { + if (!this.instantHover) { + throw new Error("Instant hover is not enabled"); + } + this.timeLimit = timeLimit; + } + onDidHideHover() { + this.hoverDisposables.clear(); + if (this.instantHover) { + this.lastHoverHideTime = Date.now(); + } + } +}; +WorkbenchHoverDelegate = __decorateClass([ + __decorateParam(3, IConfigurationService), + __decorateParam(4, IHoverService) +], WorkbenchHoverDelegate); + +// ../../../../../platform/opener/browser/link.ts +var Link = class extends Disposable { + constructor(container, _link, options2 = {}, _hoverService, openerService) { + super(); + this._link = _link; + this._hoverService = _hoverService; + this._enabled = true; + this.el = append(container, $("a.monaco-link", { + tabIndex: _link.tabIndex ?? 0, + href: _link.href + }, _link.label)); + this.hoverDelegate = options2.hoverDelegate ?? getDefaultHoverDelegate("mouse"); + this.setTooltip(_link.title); + this.el.setAttribute("role", "button"); + const onClickEmitter = this._register(new DomEmitter(this.el, "click")); + const onKeyPress = this._register(new DomEmitter(this.el, "keypress")); + const onEnterPress = Event.chain( + onKeyPress.event, + ($4) => $4.map((e) => new StandardKeyboardEvent(e)).filter((e) => e.keyCode === 3 /* Enter */) + ); + const onTap = this._register(new DomEmitter(this.el, EventType2.Tap)).event; + this._register(Gesture.addTarget(this.el)); + const onOpen = Event.any(onClickEmitter.event, onEnterPress, onTap); + this._register(onOpen((e) => { + if (!this.enabled) { + return; + } + EventHelper.stop(e, true); + if (options2?.opener) { + options2.opener(this._link.href); + } else { + openerService.open(this._link.href, { allowCommands: true }); + } + })); + this.enabled = true; + } + get enabled() { + return this._enabled; + } + set enabled(enabled) { + if (enabled) { + this.el.setAttribute("aria-disabled", "false"); + this.el.tabIndex = 0; + this.el.style.pointerEvents = "auto"; + this.el.style.opacity = "1"; + this.el.style.cursor = "pointer"; + this._enabled = false; + } else { + this.el.setAttribute("aria-disabled", "true"); + this.el.tabIndex = -1; + this.el.style.pointerEvents = "none"; + this.el.style.opacity = "0.4"; + this.el.style.cursor = "default"; + this._enabled = true; + } + this._enabled = enabled; + } + set link(link) { + if (typeof link.label === "string") { + this.el.textContent = link.label; + } else { + clearNode(this.el); + this.el.appendChild(link.label); + } + this.el.href = link.href; + if (typeof link.tabIndex !== "undefined") { + this.el.tabIndex = link.tabIndex; + } + this.setTooltip(link.title); + this._link = link; + } + setTooltip(title) { + if (this.hoverDelegate.showNativeHover) { + this.el.title = title ?? ""; + } else if (!this.hover && title) { + this.hover = this._register(this._hoverService.setupManagedHover(this.hoverDelegate, this.el, title)); + } else if (this.hover) { + this.hover.update(title); + } + } +}; +Link = __decorateClass([ + __decorateParam(3, IHoverService), + __decorateParam(4, IOpenerService) +], Link); + +// ../../../../../base/browser/ui/progressbar/progressAccessibilitySignal.ts +var nullScopedAccessibilityProgressSignalFactory = () => ({ + msLoopTime: -1, + msDelayTime: -1, + dispose: () => { + } +}); +var progressAccessibilitySignalSchedulerFactory = nullScopedAccessibilityProgressSignalFactory; +function getProgressAcccessibilitySignalScheduler(msDelayTime, msLoopTime) { + return progressAccessibilitySignalSchedulerFactory(); +} + +// ../../../../../base/browser/ui/progressbar/progressbar.ts +var CSS_DONE = "done"; +var CSS_ACTIVE = "active"; +var CSS_INFINITE = "infinite"; +var CSS_INFINITE_LONG_RUNNING = "infinite-long-running"; +var CSS_DISCRETE = "discrete"; +var ProgressBar = class _ProgressBar extends Disposable { + constructor(container, options2) { + super(); + this.progressSignal = this._register(new MutableDisposable()); + this.workedVal = 0; + this.showDelayedScheduler = this._register(new RunOnceScheduler(() => show(this.element), 0)); + this.longRunningScheduler = this._register(new RunOnceScheduler(() => this.infiniteLongRunning(), _ProgressBar.LONG_RUNNING_INFINITE_THRESHOLD)); + this.create(container, options2); + } + static { + /** + * After a certain time of showing the progress bar, switch + * to long-running mode and throttle animations to reduce + * the pressure on the GPU process. + * + * https://github.com/microsoft/vscode/issues/97900 + * https://github.com/microsoft/vscode/issues/138396 + */ + this.LONG_RUNNING_INFINITE_THRESHOLD = 1e4; + } + static { + this.PROGRESS_SIGNAL_DEFAULT_DELAY = 3e3; + } + create(container, options2) { + this.element = document.createElement("div"); + this.element.classList.add("monaco-progress-container"); + this.element.setAttribute("role", "progressbar"); + this.element.setAttribute("aria-valuemin", "0"); + container.appendChild(this.element); + this.bit = document.createElement("div"); + this.bit.classList.add("progress-bit"); + this.bit.style.backgroundColor = options2?.progressBarBackground || "#0E70C0"; + this.element.appendChild(this.bit); + } + off() { + this.bit.style.width = "inherit"; + this.bit.style.opacity = "1"; + this.element.classList.remove(CSS_ACTIVE, CSS_INFINITE, CSS_INFINITE_LONG_RUNNING, CSS_DISCRETE); + this.workedVal = 0; + this.totalWork = void 0; + this.longRunningScheduler.cancel(); + this.progressSignal.clear(); + } + /** + * Indicates to the progress bar that all work is done. + */ + done() { + return this.doDone(true); + } + /** + * Stops the progressbar from showing any progress instantly without fading out. + */ + stop() { + return this.doDone(false); + } + doDone(delayed) { + this.element.classList.add(CSS_DONE); + if (!this.element.classList.contains(CSS_INFINITE)) { + this.bit.style.width = "inherit"; + if (delayed) { + setTimeout(() => this.off(), 200); + } else { + this.off(); + } + } else { + this.bit.style.opacity = "0"; + if (delayed) { + setTimeout(() => this.off(), 200); + } else { + this.off(); + } + } + return this; + } + /** + * Use this mode to indicate progress that has no total number of work units. + */ + infinite() { + this.bit.style.width = "2%"; + this.bit.style.opacity = "1"; + this.element.classList.remove(CSS_DISCRETE, CSS_DONE, CSS_INFINITE_LONG_RUNNING); + this.element.classList.add(CSS_ACTIVE, CSS_INFINITE); + this.longRunningScheduler.schedule(); + return this; + } + infiniteLongRunning() { + this.element.classList.add(CSS_INFINITE_LONG_RUNNING); + } + /** + * Tells the progress bar the total number of work. Use in combination with workedVal() to let + * the progress bar show the actual progress based on the work that is done. + */ + total(value) { + this.workedVal = 0; + this.totalWork = value; + this.element.setAttribute("aria-valuemax", value.toString()); + return this; + } + /** + * Finds out if this progress bar is configured with total work + */ + hasTotal() { + return isNumber(this.totalWork); + } + /** + * Tells the progress bar that an increment of work has been completed. + */ + worked(value) { + value = Math.max(1, Number(value)); + return this.doSetWorked(this.workedVal + value); + } + /** + * Tells the progress bar the total amount of work that has been completed. + */ + setWorked(value) { + value = Math.max(1, Number(value)); + return this.doSetWorked(value); + } + doSetWorked(value) { + const totalWork = this.totalWork || 100; + this.workedVal = value; + this.workedVal = Math.min(totalWork, this.workedVal); + this.element.classList.remove(CSS_INFINITE, CSS_INFINITE_LONG_RUNNING, CSS_DONE); + this.element.classList.add(CSS_ACTIVE, CSS_DISCRETE); + this.element.setAttribute("aria-valuenow", value.toString()); + this.bit.style.width = 100 * (this.workedVal / totalWork) + "%"; + return this; + } + getContainer() { + return this.element; + } + show(delay) { + this.showDelayedScheduler.cancel(); + this.progressSignal.value = getProgressAcccessibilitySignalScheduler(); + if (typeof delay === "number") { + this.showDelayedScheduler.schedule(delay); + } else { + show(this.element); + } + } + hide() { + hide(this.element); + this.showDelayedScheduler.cancel(); + this.progressSignal.clear(); + } +}; + +// ../../../../../platform/progress/common/progress.ts +var IProgressService = createDecorator("progressService"); +var UnmanagedProgress = class extends Disposable { + constructor(options2, progressService) { + super(); + this.deferred = new DeferredPromise(); + progressService.withProgress(options2, (reporter) => { + this.reporter = reporter; + if (this.lastStep) { + reporter.report(this.lastStep); + } + return this.deferred.p; + }); + this._register(toDisposable(() => this.deferred.complete())); + } + report(step) { + if (this.reporter) { + this.reporter.report(step); + } else { + this.lastStep = step; + } + } +}; +UnmanagedProgress = __decorateClass([ + __decorateParam(1, IProgressService) +], UnmanagedProgress); +createDecorator("editorProgressService"); + +// ../../../../common/editor.ts +var EditorExtensions = { + EditorPane: "workbench.contributions.editors", + EditorFactory: "workbench.contributions.editor.inputFactories" +}; +({ + id: "default", + displayName: localize("promptOpenWith.defaultEditor.displayName", "Text Editor"), + providerDisplayName: localize("builtinProviderDisplayName", "Built-in") +}); +var EditorFactoryRegistry = class { + constructor() { + this.editorSerializerConstructors = /* @__PURE__ */ new Map(); + this.editorSerializerInstances = /* @__PURE__ */ new Map(); + } + start(accessor) { + const instantiationService = this.instantiationService = accessor.get(IInstantiationService); + for (const [key, ctor] of this.editorSerializerConstructors) { + this.createEditorSerializer(key, ctor, instantiationService); + } + this.editorSerializerConstructors.clear(); + } + createEditorSerializer(editorTypeId, ctor, instantiationService) { + const instance = instantiationService.createInstance(ctor); + this.editorSerializerInstances.set(editorTypeId, instance); + } + registerFileEditorFactory(factory) { + if (this.fileEditorFactory) { + throw new Error("Can only register one file editor factory."); + } + this.fileEditorFactory = factory; + } + getFileEditorFactory() { + return assertIsDefined(this.fileEditorFactory); + } + registerEditorSerializer(editorTypeId, ctor) { + if (this.editorSerializerConstructors.has(editorTypeId) || this.editorSerializerInstances.has(editorTypeId)) { + throw new Error(`A editor serializer with type ID '${editorTypeId}' was already registered.`); + } + if (!this.instantiationService) { + this.editorSerializerConstructors.set(editorTypeId, ctor); + } else { + this.createEditorSerializer(editorTypeId, ctor, this.instantiationService); + } + return toDisposable(() => { + this.editorSerializerConstructors.delete(editorTypeId); + this.editorSerializerInstances.delete(editorTypeId); + }); + } + getEditorSerializer(arg1) { + return this.editorSerializerInstances.get(typeof arg1 === "string" ? arg1 : arg1.typeId); + } +}; +Registry.add(EditorExtensions.EditorFactory, new EditorFactoryRegistry()); + +// ../../../../services/progress/browser/progressIndicator.ts +var ProgressIndicatorState; +((ProgressIndicatorState2) => { + ((Type2) => { + Type2[Type2["None"] = 0] = "None"; + Type2[Type2["Done"] = 1] = "Done"; + Type2[Type2["Infinite"] = 2] = "Infinite"; + Type2[Type2["While"] = 3] = "While"; + Type2[Type2["Work"] = 4] = "Work"; + })(ProgressIndicatorState2.Type || (ProgressIndicatorState2.Type = {})); + ProgressIndicatorState2.None = { type: 0 /* None */ }; + ProgressIndicatorState2.Done = { type: 1 /* Done */ }; + ProgressIndicatorState2.Infinite = { type: 2 /* Infinite */ }; + class While { + constructor(whilePromise, whileStart, whileDelay) { + this.whilePromise = whilePromise; + this.whileStart = whileStart; + this.whileDelay = whileDelay; + this.type = 3 /* While */; + } + } + ProgressIndicatorState2.While = While; + class Work { + constructor(total, worked) { + this.total = total; + this.worked = worked; + this.type = 4 /* Work */; + } + } + ProgressIndicatorState2.Work = Work; +})(ProgressIndicatorState || (ProgressIndicatorState = {})); +var ScopedProgressIndicator = class extends Disposable { + constructor(progressBar, scope) { + super(); + this.progressBar = progressBar; + this.scope = scope; + this.progressState = ProgressIndicatorState.None; + this.registerListeners(); + } + registerListeners() { + this._register(this.scope.onDidChangeActive(() => { + if (this.scope.isActive) { + this.onDidScopeActivate(); + } else { + this.onDidScopeDeactivate(); + } + })); + } + onDidScopeActivate() { + if (this.progressState.type === ProgressIndicatorState.Done.type) { + return; + } + if (this.progressState.type === 3 /* While */) { + let delay; + if (this.progressState.whileDelay > 0) { + const remainingDelay = this.progressState.whileDelay - (Date.now() - this.progressState.whileStart); + if (remainingDelay > 0) { + delay = remainingDelay; + } + } + this.doShowWhile(delay); + } else if (this.progressState.type === 2 /* Infinite */) { + this.progressBar.infinite().show(); + } else if (this.progressState.type === 4 /* Work */) { + if (this.progressState.total) { + this.progressBar.total(this.progressState.total).show(); + } + if (this.progressState.worked) { + this.progressBar.worked(this.progressState.worked).show(); + } + } + } + onDidScopeDeactivate() { + this.progressBar.stop().hide(); + } + show(infiniteOrTotal, delay) { + if (typeof infiniteOrTotal === "boolean") { + this.progressState = ProgressIndicatorState.Infinite; + } else { + this.progressState = new ProgressIndicatorState.Work(infiniteOrTotal, void 0); + } + if (this.scope.isActive) { + if (this.progressState.type === 2 /* Infinite */) { + this.progressBar.infinite().show(delay); + } else if (this.progressState.type === 4 /* Work */ && typeof this.progressState.total === "number") { + this.progressBar.total(this.progressState.total).show(delay); + } + } + return { + total: (total) => { + this.progressState = new ProgressIndicatorState.Work( + total, + this.progressState.type === 4 /* Work */ ? this.progressState.worked : void 0 + ); + if (this.scope.isActive) { + this.progressBar.total(total); + } + }, + worked: (worked) => { + if (!this.scope.isActive || this.progressBar.hasTotal()) { + this.progressState = new ProgressIndicatorState.Work( + this.progressState.type === 4 /* Work */ ? this.progressState.total : void 0, + this.progressState.type === 4 /* Work */ && typeof this.progressState.worked === "number" ? this.progressState.worked + worked : worked + ); + if (this.scope.isActive) { + this.progressBar.worked(worked); + } + } else { + this.progressState = ProgressIndicatorState.Infinite; + this.progressBar.infinite().show(); + } + }, + done: () => { + this.progressState = ProgressIndicatorState.Done; + if (this.scope.isActive) { + this.progressBar.stop().hide(); + } + } + }; + } + async showWhile(promise, delay) { + if (this.progressState.type === 3 /* While */) { + promise = Promise.all([promise, this.progressState.whilePromise]); + } + this.progressState = new ProgressIndicatorState.While(promise, delay || 0, Date.now()); + try { + this.doShowWhile(delay); + await promise; + } catch (error) { + } finally { + if (this.progressState.type !== 3 /* While */ || this.progressState.whilePromise === promise) { + this.progressState = ProgressIndicatorState.None; + if (this.scope.isActive) { + this.progressBar.stop().hide(); + } + } + } + } + doShowWhile(delay) { + if (this.scope.isActive) { + this.progressBar.infinite().show(delay); + } + } +}; +var AbstractProgressScope = class extends Disposable { + constructor(scopeId, _isActive) { + super(); + this.scopeId = scopeId; + this._isActive = _isActive; + this._onDidChangeActive = this._register(new Emitter()); + this.onDidChangeActive = this._onDidChangeActive.event; + } + get isActive() { + return this._isActive; + } + onScopeOpened(scopeId) { + if (scopeId === this.scopeId) { + if (!this._isActive) { + this._isActive = true; + this._onDidChangeActive.fire(); + } + } + } + onScopeClosed(scopeId) { + if (scopeId === this.scopeId) { + if (this._isActive) { + this._isActive = false; + this._onDidChangeActive.fire(); + } + } + } +}; + +// ../../../../browser/actions.ts +var MenuActions = class extends Disposable { + constructor(menuId, options2, menuService, contextKeyService) { + super(); + this.options = options2; + this.menuService = menuService; + this.contextKeyService = contextKeyService; + this._primaryActions = []; + this._secondaryActions = []; + this._onDidChange = this._register(new Emitter()); + this.onDidChange = this._onDidChange.event; + this.disposables = this._register(new DisposableStore()); + this.menu = this._register(menuService.createMenu(menuId, contextKeyService)); + this._register(this.menu.onDidChange(() => this.updateActions())); + this.updateActions(); + } + get primaryActions() { + return this._primaryActions; + } + get secondaryActions() { + return this._secondaryActions; + } + updateActions() { + this.disposables.clear(); + this._primaryActions = []; + this._secondaryActions = []; + createAndFillInActionBarActions(this.menu, this.options, { primary: this._primaryActions, secondary: this._secondaryActions }); + this.disposables.add(this.updateSubmenus([...this._primaryActions, ...this._secondaryActions], {})); + this._onDidChange.fire(); + } + updateSubmenus(actions, submenus) { + const disposables = new DisposableStore(); + for (const action of actions) { + if (action instanceof SubmenuItemAction && !submenus[action.item.submenu.id]) { + const menu = submenus[action.item.submenu.id] = disposables.add(this.menuService.createMenu(action.item.submenu, this.contextKeyService)); + disposables.add(menu.onDidChange(() => this.updateActions())); + disposables.add(this.updateSubmenus(action.actions, submenus)); + } + } + return disposables; + } +}; +var CompositeMenuActions = class extends Disposable { + constructor(menuId, contextMenuId, options2, contextKeyService, menuService) { + super(); + this.menuId = menuId; + this.contextMenuId = contextMenuId; + this.options = options2; + this.contextKeyService = contextKeyService; + this.menuService = menuService; + this._onDidChange = this._register(new Emitter()); + this.onDidChange = this._onDidChange.event; + this.menuActions = this._register(new MenuActions(menuId, this.options, menuService, contextKeyService)); + this._register(this.menuActions.onDidChange(() => this._onDidChange.fire())); + } + getPrimaryActions() { + return this.menuActions.primaryActions; + } + getSecondaryActions() { + return this.menuActions.secondaryActions; + } + getContextMenuActions() { + const actions = []; + if (this.contextMenuId) { + const menu = this.menuService.getMenuActions(this.contextMenuId, this.contextKeyService, this.options); + createAndFillInActionBarActions(menu, { primary: [], secondary: actions }); + } + return actions; + } +}; +CompositeMenuActions = __decorateClass([ + __decorateParam(3, IContextKeyService), + __decorateParam(4, IMenuService) +], CompositeMenuActions); + +// ../../../../../base/browser/ui/toolbar/toolbar.ts +var ToolBar = class extends Disposable { + constructor(container, contextMenuProvider, options2 = { orientation: 0 /* HORIZONTAL */ }) { + super(); + this.submenuActionViewItems = []; + this.hasSecondaryActions = false; + this._onDidChangeDropdownVisibility = this._register(new EventMultiplexer()); + this.onDidChangeDropdownVisibility = this._onDidChangeDropdownVisibility.event; + this.disposables = this._register(new DisposableStore()); + options2.hoverDelegate = options2.hoverDelegate ?? this._register(createInstantHoverDelegate()); + this.options = options2; + this.toggleMenuAction = this._register(new ToggleMenuAction(() => this.toggleMenuActionViewItem?.show(), options2.toggleMenuTitle)); + this.element = document.createElement("div"); + this.element.className = "monaco-toolbar"; + container.appendChild(this.element); + this.actionBar = this._register(new ActionBar(this.element, { + orientation: options2.orientation, + ariaLabel: options2.ariaLabel, + actionRunner: options2.actionRunner, + allowContextMenu: options2.allowContextMenu, + highlightToggledItems: options2.highlightToggledItems, + hoverDelegate: options2.hoverDelegate, + actionViewItemProvider: (action, viewItemOptions) => { + if (action.id === ToggleMenuAction.ID) { + this.toggleMenuActionViewItem = new DropdownMenuActionViewItem( + action, + action.menuActions, + contextMenuProvider, + { + actionViewItemProvider: this.options.actionViewItemProvider, + actionRunner: this.actionRunner, + keybindingProvider: this.options.getKeyBinding, + classNames: ThemeIcon.asClassNameArray(options2.moreIcon ?? Codicon.toolBarMore), + anchorAlignmentProvider: this.options.anchorAlignmentProvider, + menuAsChild: !!this.options.renderDropdownAsChildElement, + skipTelemetry: this.options.skipTelemetry, + isMenu: true, + hoverDelegate: this.options.hoverDelegate + } + ); + this.toggleMenuActionViewItem.setActionContext(this.actionBar.context); + this.disposables.add(this._onDidChangeDropdownVisibility.add(this.toggleMenuActionViewItem.onDidChangeVisibility)); + return this.toggleMenuActionViewItem; + } + if (options2.actionViewItemProvider) { + const result = options2.actionViewItemProvider(action, viewItemOptions); + if (result) { + return result; + } + } + if (action instanceof SubmenuAction) { + const result = new DropdownMenuActionViewItem( + action, + action.actions, + contextMenuProvider, + { + actionViewItemProvider: this.options.actionViewItemProvider, + actionRunner: this.actionRunner, + keybindingProvider: this.options.getKeyBinding, + classNames: action.class, + anchorAlignmentProvider: this.options.anchorAlignmentProvider, + menuAsChild: !!this.options.renderDropdownAsChildElement, + skipTelemetry: this.options.skipTelemetry, + hoverDelegate: this.options.hoverDelegate + } + ); + result.setActionContext(this.actionBar.context); + this.submenuActionViewItems.push(result); + this.disposables.add(this._onDidChangeDropdownVisibility.add(result.onDidChangeVisibility)); + return result; + } + return void 0; + } + })); + } + set actionRunner(actionRunner) { + this.actionBar.actionRunner = actionRunner; + } + get actionRunner() { + return this.actionBar.actionRunner; + } + set context(context) { + this.actionBar.context = context; + this.toggleMenuActionViewItem?.setActionContext(context); + for (const actionViewItem of this.submenuActionViewItems) { + actionViewItem.setActionContext(context); + } + } + getElement() { + return this.element; + } + focus() { + this.actionBar.focus(); + } + getItemsWidth() { + let itemsWidth = 0; + for (let i = 0; i < this.actionBar.length(); i++) { + itemsWidth += this.actionBar.getWidth(i); + } + return itemsWidth; + } + getItemAction(indexOrElement) { + return this.actionBar.getAction(indexOrElement); + } + getItemWidth(index) { + return this.actionBar.getWidth(index); + } + getItemsLength() { + return this.actionBar.length(); + } + setAriaLabel(label) { + this.actionBar.setAriaLabel(label); + } + setActions(primaryActions, secondaryActions) { + this.clear(); + const primaryActionsToSet = primaryActions ? primaryActions.slice(0) : []; + this.hasSecondaryActions = !!(secondaryActions && secondaryActions.length > 0); + if (this.hasSecondaryActions && secondaryActions) { + this.toggleMenuAction.menuActions = secondaryActions.slice(0); + primaryActionsToSet.push(this.toggleMenuAction); + } + primaryActionsToSet.forEach((action) => { + this.actionBar.push(action, { icon: this.options.icon ?? true, label: this.options.label ?? false, keybinding: this.getKeybindingLabel(action) }); + }); + } + isEmpty() { + return this.actionBar.isEmpty(); + } + getKeybindingLabel(action) { + const key = this.options.getKeyBinding?.(action); + return key?.getLabel() ?? void 0; + } + clear() { + this.submenuActionViewItems = []; + this.disposables.clear(); + this.actionBar.clear(); + } + dispose() { + this.clear(); + this.disposables.dispose(); + super.dispose(); + } +}; +var ToggleMenuAction = class _ToggleMenuAction extends Action { + static { + this.ID = "toolbar.toggle.more"; + } + constructor(toggleDropdownMenu, title) { + title = title || localize("moreActions", "More Actions..."); + super(_ToggleMenuAction.ID, title, void 0, true); + this._menuActions = []; + this.toggleDropdownMenu = toggleDropdownMenu; + } + async run() { + this.toggleDropdownMenu(); + } + get menuActions() { + return this._menuActions; + } + set menuActions(actions) { + this._menuActions = actions; + } +}; + +// ../../../../../platform/actions/common/menuService.ts +var MenuService = class { + constructor(_commandService, _keybindingService, storageService) { + this._commandService = _commandService; + this._keybindingService = _keybindingService; + this._hiddenStates = new PersistedMenuHideState(storageService); + } + createMenu(id2, contextKeyService, options2) { + return new MenuImpl(id2, this._hiddenStates, { emitEventsForSubmenuChanges: false, eventDebounceDelay: 50, ...options2 }, this._commandService, this._keybindingService, contextKeyService); + } + getMenuActions(id2, contextKeyService, options2) { + const menu = new MenuImpl(id2, this._hiddenStates, { emitEventsForSubmenuChanges: false, eventDebounceDelay: 50, ...options2 }, this._commandService, this._keybindingService, contextKeyService); + const actions = menu.getActions(options2); + menu.dispose(); + return actions; + } + getMenuContexts(id2) { + const menuInfo = new MenuInfoSnapshot(id2, false); + return /* @__PURE__ */ new Set([...menuInfo.structureContextKeys, ...menuInfo.preconditionContextKeys, ...menuInfo.toggledContextKeys]); + } + resetHiddenStates(ids) { + this._hiddenStates.reset(ids); + } +}; +MenuService = __decorateClass([ + __decorateParam(0, ICommandService), + __decorateParam(1, IKeybindingService), + __decorateParam(2, IStorageService) +], MenuService); +var PersistedMenuHideState = class { + constructor(_storageService) { + this._storageService = _storageService; + this._disposables = new DisposableStore(); + this._onDidChange = new Emitter(); + this.onDidChange = this._onDidChange.event; + this._ignoreChangeEvent = false; + this._hiddenByDefaultCache = /* @__PURE__ */ new Map(); + try { + const raw = _storageService.get(PersistedMenuHideState._key, 0 /* PROFILE */, "{}"); + this._data = JSON.parse(raw); + } catch (err) { + this._data = /* @__PURE__ */ Object.create(null); + } + this._disposables.add(_storageService.onDidChangeValue(0 /* PROFILE */, PersistedMenuHideState._key, this._disposables)(() => { + if (!this._ignoreChangeEvent) { + try { + const raw = _storageService.get(PersistedMenuHideState._key, 0 /* PROFILE */, "{}"); + this._data = JSON.parse(raw); + } catch (err) { + console.log("FAILED to read storage after UPDATE", err); + } + } + this._onDidChange.fire(); + })); + } + static { + this._key = "menu.hiddenCommands"; + } + dispose() { + this._onDidChange.dispose(); + this._disposables.dispose(); + } + _isHiddenByDefault(menu, commandId) { + return this._hiddenByDefaultCache.get(`${menu.id}/${commandId}`) ?? false; + } + setDefaultState(menu, commandId, hidden) { + this._hiddenByDefaultCache.set(`${menu.id}/${commandId}`, hidden); + } + isHidden(menu, commandId) { + const hiddenByDefault = this._isHiddenByDefault(menu, commandId); + const state = this._data[menu.id]?.includes(commandId) ?? false; + return hiddenByDefault ? !state : state; + } + updateHidden(menu, commandId, hidden) { + const hiddenByDefault = this._isHiddenByDefault(menu, commandId); + if (hiddenByDefault) { + hidden = !hidden; + } + const entries2 = this._data[menu.id]; + if (!hidden) { + if (entries2) { + const idx = entries2.indexOf(commandId); + if (idx >= 0) { + removeFastWithoutKeepingOrder(entries2, idx); + } + if (entries2.length === 0) { + delete this._data[menu.id]; + } + } + } else { + if (!entries2) { + this._data[menu.id] = [commandId]; + } else { + const idx = entries2.indexOf(commandId); + if (idx < 0) { + entries2.push(commandId); + } + } + } + this._persist(); + } + reset(menus) { + if (menus === void 0) { + this._data = /* @__PURE__ */ Object.create(null); + this._persist(); + } else { + for (const { id: id2 } of menus) { + if (this._data[id2]) { + delete this._data[id2]; + } + } + this._persist(); + } + } + _persist() { + try { + this._ignoreChangeEvent = true; + const raw = JSON.stringify(this._data); + this._storageService.store(PersistedMenuHideState._key, raw, 0 /* PROFILE */, 0 /* USER */); + } finally { + this._ignoreChangeEvent = false; + } + } +}; +PersistedMenuHideState = __decorateClass([ + __decorateParam(0, IStorageService) +], PersistedMenuHideState); +var MenuInfoSnapshot = class _MenuInfoSnapshot { + constructor(_id, _collectContextKeysForSubmenus) { + this._id = _id; + this._collectContextKeysForSubmenus = _collectContextKeysForSubmenus; + this._menuGroups = []; + this._allMenuIds = /* @__PURE__ */ new Set(); + this._structureContextKeys = /* @__PURE__ */ new Set(); + this._preconditionContextKeys = /* @__PURE__ */ new Set(); + this._toggledContextKeys = /* @__PURE__ */ new Set(); + this.refresh(); + } + get allMenuIds() { + return this._allMenuIds; + } + get structureContextKeys() { + return this._structureContextKeys; + } + get preconditionContextKeys() { + return this._preconditionContextKeys; + } + get toggledContextKeys() { + return this._toggledContextKeys; + } + refresh() { + this._menuGroups.length = 0; + this._allMenuIds.clear(); + this._structureContextKeys.clear(); + this._preconditionContextKeys.clear(); + this._toggledContextKeys.clear(); + const menuItems = this._sort(MenuRegistry.getMenuItems(this._id)); + let group; + for (const item of menuItems) { + const groupName = item.group || ""; + if (!group || group[0] !== groupName) { + group = [groupName, []]; + this._menuGroups.push(group); + } + group[1].push(item); + this._collectContextKeysAndSubmenuIds(item); + } + this._allMenuIds.add(this._id); + } + _sort(menuItems) { + return menuItems; + } + _collectContextKeysAndSubmenuIds(item) { + _MenuInfoSnapshot._fillInKbExprKeys(item.when, this._structureContextKeys); + if (isIMenuItem(item)) { + if (item.command.precondition) { + _MenuInfoSnapshot._fillInKbExprKeys(item.command.precondition, this._preconditionContextKeys); + } + if (item.command.toggled) { + const toggledExpression = item.command.toggled.condition || item.command.toggled; + _MenuInfoSnapshot._fillInKbExprKeys(toggledExpression, this._toggledContextKeys); + } + } else if (this._collectContextKeysForSubmenus) { + MenuRegistry.getMenuItems(item.submenu).forEach(this._collectContextKeysAndSubmenuIds, this); + this._allMenuIds.add(item.submenu); + } + } + static _fillInKbExprKeys(exp, set) { + if (exp) { + for (const key of exp.keys()) { + set.add(key); + } + } + } +}; +var MenuInfo = class extends MenuInfoSnapshot { + constructor(_id, _hiddenStates, _collectContextKeysForSubmenus, _commandService, _keybindingService, _contextKeyService) { + super(_id, _collectContextKeysForSubmenus); + this._hiddenStates = _hiddenStates; + this._commandService = _commandService; + this._keybindingService = _keybindingService; + this._contextKeyService = _contextKeyService; + this.refresh(); + } + createActionGroups(options2) { + const result = []; + for (const group of this._menuGroups) { + const [id2, items] = group; + let activeActions; + for (const item of items) { + if (this._contextKeyService.contextMatchesRules(item.when)) { + const isMenuItem = isIMenuItem(item); + if (isMenuItem) { + this._hiddenStates.setDefaultState(this._id, item.command.id, !!item.isHiddenByDefault); + } + const menuHide = createMenuHide(this._id, isMenuItem ? item.command : item, this._hiddenStates); + if (isMenuItem) { + const menuKeybinding = createConfigureKeybindingAction(this._commandService, this._keybindingService, item.command.id, item.when); + (activeActions ??= []).push(new MenuItemAction(item.command, item.alt, options2, menuHide, menuKeybinding, this._contextKeyService, this._commandService)); + } else { + const groups = new MenuInfo(item.submenu, this._hiddenStates, this._collectContextKeysForSubmenus, this._commandService, this._keybindingService, this._contextKeyService).createActionGroups(options2); + const submenuActions = Separator.join(...groups.map((g) => g[1])); + if (submenuActions.length > 0) { + (activeActions ??= []).push(new SubmenuItemAction(item, menuHide, submenuActions)); + } + } + } + } + if (activeActions && activeActions.length > 0) { + result.push([id2, activeActions]); + } + } + return result; + } + _sort(menuItems) { + return menuItems.sort(MenuInfo._compareMenuItems); + } + static _compareMenuItems(a, b) { + const aGroup = a.group; + const bGroup = b.group; + if (aGroup !== bGroup) { + if (!aGroup) { + return 1; + } else if (!bGroup) { + return -1; + } + if (aGroup === "navigation") { + return -1; + } else if (bGroup === "navigation") { + return 1; + } + const value = aGroup.localeCompare(bGroup); + if (value !== 0) { + return value; + } + } + const aPrio = a.order || 0; + const bPrio = b.order || 0; + if (aPrio < bPrio) { + return -1; + } else if (aPrio > bPrio) { + return 1; + } + return MenuInfo._compareTitles( + isIMenuItem(a) ? a.command.title : a.title, + isIMenuItem(b) ? b.command.title : b.title + ); + } + static _compareTitles(a, b) { + const aStr = typeof a === "string" ? a : a.original; + const bStr = typeof b === "string" ? b : b.original; + return aStr.localeCompare(bStr); + } +}; +MenuInfo = __decorateClass([ + __decorateParam(3, ICommandService), + __decorateParam(4, IKeybindingService), + __decorateParam(5, IContextKeyService) +], MenuInfo); +var MenuImpl = class { + constructor(id2, hiddenStates, options2, commandService, keybindingService, contextKeyService) { + this._disposables = new DisposableStore(); + this._menuInfo = new MenuInfo(id2, hiddenStates, options2.emitEventsForSubmenuChanges, commandService, keybindingService, contextKeyService); + const rebuildMenuSoon = new RunOnceScheduler(() => { + this._menuInfo.refresh(); + this._onDidChange.fire({ menu: this, isStructuralChange: true, isEnablementChange: true, isToggleChange: true }); + }, options2.eventDebounceDelay); + this._disposables.add(rebuildMenuSoon); + this._disposables.add(MenuRegistry.onDidChangeMenu((e) => { + for (const id3 of this._menuInfo.allMenuIds) { + if (e.has(id3)) { + rebuildMenuSoon.schedule(); + break; + } + } + })); + const lazyListener = this._disposables.add(new DisposableStore()); + const merge = (events) => { + let isStructuralChange = false; + let isEnablementChange = false; + let isToggleChange = false; + for (const item of events) { + isStructuralChange = isStructuralChange || item.isStructuralChange; + isEnablementChange = isEnablementChange || item.isEnablementChange; + isToggleChange = isToggleChange || item.isToggleChange; + if (isStructuralChange && isEnablementChange && isToggleChange) { + break; + } + } + return { menu: this, isStructuralChange, isEnablementChange, isToggleChange }; + }; + const startLazyListener = () => { + lazyListener.add(contextKeyService.onDidChangeContext((e) => { + const isStructuralChange = e.affectsSome(this._menuInfo.structureContextKeys); + const isEnablementChange = e.affectsSome(this._menuInfo.preconditionContextKeys); + const isToggleChange = e.affectsSome(this._menuInfo.toggledContextKeys); + if (isStructuralChange || isEnablementChange || isToggleChange) { + this._onDidChange.fire({ menu: this, isStructuralChange, isEnablementChange, isToggleChange }); + } + })); + lazyListener.add(hiddenStates.onDidChange((e) => { + this._onDidChange.fire({ menu: this, isStructuralChange: true, isEnablementChange: false, isToggleChange: false }); + })); + }; + this._onDidChange = new DebounceEmitter({ + // start/stop context key listener + onWillAddFirstListener: startLazyListener, + onDidRemoveLastListener: lazyListener.clear.bind(lazyListener), + delay: options2.eventDebounceDelay, + merge + }); + this.onDidChange = this._onDidChange.event; + } + getActions(options2) { + return this._menuInfo.createActionGroups(options2); + } + dispose() { + this._disposables.dispose(); + this._onDidChange.dispose(); + } +}; +MenuImpl = __decorateClass([ + __decorateParam(3, ICommandService), + __decorateParam(4, IKeybindingService), + __decorateParam(5, IContextKeyService) +], MenuImpl); +function createMenuHide(menu, command, states) { + const id2 = isISubmenuItem(command) ? command.submenu.id : command.id; + const title = typeof command.title === "string" ? command.title : command.title.value; + const hide2 = toAction({ + id: `hide/${menu.id}/${id2}`, + label: localize("hide.label", "Hide '{0}'", title), + run() { + states.updateHidden(menu, id2, true); + } + }); + const toggle = toAction({ + id: `toggle/${menu.id}/${id2}`, + label: title, + get checked() { + return !states.isHidden(menu, id2); + }, + run() { + states.updateHidden(menu, id2, !!this.checked); + } + }); + return { + hide: hide2, + toggle, + get isHidden() { + return !toggle.checked; + } + }; +} +function createConfigureKeybindingAction(commandService, keybindingService, commandId, when = void 0, enabled = true) { + return toAction({ + id: `configureKeybinding/${commandId}`, + label: localize("configure keybinding", "Configure Keybinding"), + enabled, + run() { + const hasKeybinding = !!keybindingService.lookupKeybinding(commandId); + const whenValue = !hasKeybinding && when ? when.serialize() : void 0; + commandService.executeCommand("workbench.action.openGlobalKeybindings", `@command:${commandId}` + (whenValue ? ` +when:${whenValue}` : "")); + } + }); +} + +// ../../../../../platform/actions/browser/actionViewItemService.ts +var IActionViewItemService = createDecorator("IActionViewItemService"); + +// ../../../../../platform/actions/browser/toolbar.ts +var WorkbenchToolBar = class extends ToolBar { + constructor(container, _options, _menuService, _contextKeyService, _contextMenuService, _keybindingService, _commandService, telemetryService) { + super(container, _contextMenuService, { + // defaults + getKeyBinding: (action) => _keybindingService.lookupKeybinding(action.id) ?? void 0, + // options (override defaults) + ..._options, + // mandatory (overide options) + allowContextMenu: true, + skipTelemetry: typeof _options?.telemetrySource === "string" + }); + this._options = _options; + this._menuService = _menuService; + this._contextKeyService = _contextKeyService; + this._contextMenuService = _contextMenuService; + this._keybindingService = _keybindingService; + this._commandService = _commandService; + this._sessionDisposables = this._store.add(new DisposableStore()); + const telemetrySource = _options?.telemetrySource; + if (telemetrySource) { + this._store.add(this.actionBar.onDidRun( + (e) => telemetryService.publicLog2( + "workbenchActionExecuted", + { id: e.action.id, from: telemetrySource } + ) + )); + } + } + setActions(_primary, _secondary = [], menuIds) { + this._sessionDisposables.clear(); + const primary = _primary.slice(); + const secondary = _secondary.slice(); + const toggleActions = []; + let toggleActionsCheckedCount = 0; + const extraSecondary = []; + let someAreHidden = false; + if (this._options?.hiddenItemStrategy !== -1 /* NoHide */) { + for (let i = 0; i < primary.length; i++) { + const action = primary[i]; + if (!(action instanceof MenuItemAction) && !(action instanceof SubmenuItemAction)) { + continue; + } + if (!action.hideActions) { + continue; + } + toggleActions.push(action.hideActions.toggle); + if (action.hideActions.toggle.checked) { + toggleActionsCheckedCount++; + } + if (action.hideActions.isHidden) { + someAreHidden = true; + primary[i] = void 0; + if (this._options?.hiddenItemStrategy !== 0 /* Ignore */) { + extraSecondary[i] = action; + } + } + } + } + if (this._options?.overflowBehavior !== void 0) { + const exemptedIds = intersection(new Set(this._options.overflowBehavior.exempted), Iterable.map(primary, (a) => a?.id)); + const maxItems = this._options.overflowBehavior.maxItems - exemptedIds.size; + let count = 0; + for (let i = 0; i < primary.length; i++) { + const action = primary[i]; + if (!action) { + continue; + } + count++; + if (exemptedIds.has(action.id)) { + continue; + } + if (count >= maxItems) { + primary[i] = void 0; + extraSecondary[i] = action; + } + } + } + coalesceInPlace(primary); + coalesceInPlace(extraSecondary); + super.setActions(primary, Separator.join(extraSecondary, secondary)); + if (toggleActions.length > 0 || primary.length > 0) { + this._sessionDisposables.add(addDisposableListener(this.getElement(), "contextmenu", (e) => { + const event = new StandardMouseEvent(getWindow(this.getElement()), e); + const action = this.getItemAction(event.target); + if (!action) { + return; + } + event.preventDefault(); + event.stopPropagation(); + const primaryActions = []; + if (action instanceof MenuItemAction && action.menuKeybinding) { + primaryActions.push(action.menuKeybinding); + } else if (!(action instanceof SubmenuItemAction || action instanceof ToggleMenuAction)) { + const supportsKeybindings = !!this._keybindingService.lookupKeybinding(action.id); + primaryActions.push(createConfigureKeybindingAction(this._commandService, this._keybindingService, action.id, void 0, supportsKeybindings)); + } + if (toggleActions.length > 0) { + let noHide = false; + if (toggleActionsCheckedCount === 1 && this._options?.hiddenItemStrategy === 0 /* Ignore */) { + noHide = true; + for (let i = 0; i < toggleActions.length; i++) { + if (toggleActions[i].checked) { + toggleActions[i] = toAction({ + id: action.id, + label: action.label, + checked: true, + enabled: false, + run() { + } + }); + break; + } + } + } + if (!noHide && (action instanceof MenuItemAction || action instanceof SubmenuItemAction)) { + if (!action.hideActions) { + return; + } + primaryActions.push(action.hideActions.hide); + } else { + primaryActions.push(toAction({ + id: "label", + label: localize("hide", "Hide"), + enabled: false, + run() { + } + })); + } + } + const actions = Separator.join(primaryActions, toggleActions); + if (this._options?.resetMenu && !menuIds) { + menuIds = [this._options.resetMenu]; + } + if (someAreHidden && menuIds) { + actions.push(new Separator()); + actions.push(toAction({ + id: "resetThisMenu", + label: localize("resetThisMenu", "Reset Menu"), + run: () => this._menuService.resetHiddenStates(menuIds) + })); + } + if (actions.length === 0) { + return; + } + this._contextMenuService.showContextMenu({ + getAnchor: () => event, + getActions: () => actions, + // add context menu actions (iff appicable) + menuId: this._options?.contextMenu, + menuActionOptions: { renderShortTitle: true, ...this._options?.menuOptions }, + skipTelemetry: typeof this._options?.telemetrySource === "string", + contextKeyService: this._contextKeyService + }); + })); + } + } +}; +WorkbenchToolBar = __decorateClass([ + __decorateParam(2, IMenuService), + __decorateParam(3, IContextKeyService), + __decorateParam(4, IContextMenuService), + __decorateParam(5, IKeybindingService), + __decorateParam(6, ICommandService), + __decorateParam(7, ITelemetryService) +], WorkbenchToolBar); +var MenuWorkbenchToolBar = class extends WorkbenchToolBar { + constructor(container, menuId, options2, menuService, contextKeyService, contextMenuService, keybindingService, commandService, telemetryService, actionViewService, instaService) { + super(container, { + resetMenu: menuId, + ...options2, + actionViewItemProvider: (action, opts) => { + let provider = actionViewService.lookUp(menuId, action.id); + if (!provider) { + provider = options2?.actionViewItemProvider; + } + const viewItem = provider?.(action, opts); + if (viewItem) { + return viewItem; + } + return createActionViewItem(instaService, action, options2); + } + }, menuService, contextKeyService, contextMenuService, keybindingService, commandService, telemetryService); + this._onDidChangeMenuItems = this._store.add(new Emitter()); + this.onDidChangeMenuItems = this._onDidChangeMenuItems.event; + const menu = this._store.add(menuService.createMenu(menuId, contextKeyService, { emitEventsForSubmenuChanges: true, eventDebounceDelay: options2?.eventDebounceDelay })); + const updateToolbar = () => { + const primary = []; + const secondary = []; + createAndFillInActionBarActions( + menu, + options2?.menuOptions, + { primary, secondary }, + options2?.toolbarOptions?.primaryGroup, + options2?.toolbarOptions?.shouldInlineSubmenu, + options2?.toolbarOptions?.useSeparatorsInPrimaryActions + ); + container.classList.toggle("has-no-actions", primary.length === 0 && secondary.length === 0); + super.setActions(primary, secondary); + }; + this._store.add(menu.onDidChange(() => { + updateToolbar(); + this._onDidChangeMenuItems.fire(this); + })); + this._store.add(actionViewService.onDidChange((e) => { + if (e === menuId) { + updateToolbar(); + } + })); + updateToolbar(); + } + /** + * @deprecated The WorkbenchToolBar does not support this method because it works with menus. + */ + setActions() { + throw new BugIndicatingError("This toolbar is populated from a menu."); + } +}; +MenuWorkbenchToolBar = __decorateClass([ + __decorateParam(3, IMenuService), + __decorateParam(4, IContextKeyService), + __decorateParam(5, IContextMenuService), + __decorateParam(6, IKeybindingService), + __decorateParam(7, ICommandService), + __decorateParam(8, ITelemetryService), + __decorateParam(9, IActionViewItemService), + __decorateParam(10, IInstantiationService) +], MenuWorkbenchToolBar); + +// ../../../../../base/browser/ui/toggle/toggle.ts +var unthemedToggleStyles = { + inputActiveOptionBorder: "#007ACC00", + inputActiveOptionForeground: "#FFFFFF", + inputActiveOptionBackground: "#0E639C50" +}; +var Toggle = class extends Widget { + constructor(opts) { + super(); + this._onChange = this._register(new Emitter()); + this.onChange = this._onChange.event; + this._onKeyDown = this._register(new Emitter()); + this.onKeyDown = this._onKeyDown.event; + this._opts = opts; + this._checked = this._opts.isChecked; + const classes = ["monaco-custom-toggle"]; + if (this._opts.icon) { + this._icon = this._opts.icon; + classes.push(...ThemeIcon.asClassNameArray(this._icon)); + } + if (this._opts.actionClassName) { + classes.push(...this._opts.actionClassName.split(" ")); + } + if (this._checked) { + classes.push("checked"); + } + this.domNode = document.createElement("div"); + this._hover = this._register(getBaseLayerHoverDelegate().setupManagedHover(opts.hoverDelegate ?? getDefaultHoverDelegate("mouse"), this.domNode, this._opts.title)); + this.domNode.classList.add(...classes); + if (!this._opts.notFocusable) { + this.domNode.tabIndex = 0; + } + this.domNode.setAttribute("role", "checkbox"); + this.domNode.setAttribute("aria-checked", String(this._checked)); + this.domNode.setAttribute("aria-label", this._opts.title); + this.applyStyles(); + this.onclick(this.domNode, (ev) => { + if (this.enabled) { + this.checked = !this._checked; + this._onChange.fire(false); + ev.preventDefault(); + } + }); + this._register(this.ignoreGesture(this.domNode)); + this.onkeydown(this.domNode, (keyboardEvent) => { + if (keyboardEvent.keyCode === 10 /* Space */ || keyboardEvent.keyCode === 3 /* Enter */) { + this.checked = !this._checked; + this._onChange.fire(true); + keyboardEvent.preventDefault(); + keyboardEvent.stopPropagation(); + return; + } + this._onKeyDown.fire(keyboardEvent); + }); + } + get enabled() { + return this.domNode.getAttribute("aria-disabled") !== "true"; + } + focus() { + this.domNode.focus(); + } + get checked() { + return this._checked; + } + set checked(newIsChecked) { + this._checked = newIsChecked; + this.domNode.setAttribute("aria-checked", String(this._checked)); + this.domNode.classList.toggle("checked", this._checked); + this.applyStyles(); + } + setIcon(icon) { + if (this._icon) { + this.domNode.classList.remove(...ThemeIcon.asClassNameArray(this._icon)); + } + this._icon = icon; + if (this._icon) { + this.domNode.classList.add(...ThemeIcon.asClassNameArray(this._icon)); + } + } + width() { + return 2 + 2 + 2 + 16; + } + applyStyles() { + if (this.domNode) { + this.domNode.style.borderColor = this._checked && this._opts.inputActiveOptionBorder || ""; + this.domNode.style.color = this._checked && this._opts.inputActiveOptionForeground || "inherit"; + this.domNode.style.backgroundColor = this._checked && this._opts.inputActiveOptionBackground || ""; + } + } + enable() { + this.domNode.setAttribute("aria-disabled", String(false)); + } + disable() { + this.domNode.setAttribute("aria-disabled", String(true)); + } + setTitle(newTitle) { + this._hover.update(newTitle); + this.domNode.setAttribute("aria-label", newTitle); + } + set visible(visible) { + this.domNode.style.display = visible ? "" : "none"; + } + get visible() { + return this.domNode.style.display !== "none"; + } +}; +(class _Checkbox extends Widget { + constructor(title, isChecked, styles) { + super(); + this.title = title; + this.isChecked = isChecked; + this._onChange = this._register(new Emitter()); + this.onChange = this._onChange.event; + this.checkbox = this._register(new Toggle({ title: this.title, isChecked: this.isChecked, icon: Codicon.check, actionClassName: _Checkbox.CLASS_NAME, ...unthemedToggleStyles })); + this.domNode = this.checkbox.domNode; + this.styles = styles; + this.applyStyles(); + this._register(this.checkbox.onChange((keyboard) => { + this.applyStyles(); + this._onChange.fire(keyboard); + })); + } + static { + this.CLASS_NAME = "monaco-checkbox"; + } + get checked() { + return this.checkbox.checked; + } + set checked(newIsChecked) { + this.checkbox.checked = newIsChecked; + this.applyStyles(); + } + focus() { + this.domNode.focus(); + } + hasFocus() { + return isActiveElement(this.domNode); + } + enable() { + this.checkbox.enable(); + } + disable() { + this.checkbox.disable(); + } + applyStyles() { + this.domNode.style.color = this.styles.checkboxForeground || ""; + this.domNode.style.backgroundColor = this.styles.checkboxBackground || ""; + this.domNode.style.borderColor = this.styles.checkboxBorder || ""; + } +}); + +// ../../../../../base/browser/ui/findinput/findInputToggles.ts +var NLS_CASE_SENSITIVE_TOGGLE_LABEL = localize("caseDescription", "Match Case"); +var NLS_WHOLE_WORD_TOGGLE_LABEL = localize("wordsDescription", "Match Whole Word"); +var NLS_REGEX_TOGGLE_LABEL = localize("regexDescription", "Use Regular Expression"); +var CaseSensitiveToggle = class extends Toggle { + constructor(opts) { + super({ + icon: Codicon.caseSensitive, + title: NLS_CASE_SENSITIVE_TOGGLE_LABEL + opts.appendTitle, + isChecked: opts.isChecked, + hoverDelegate: opts.hoverDelegate ?? getDefaultHoverDelegate("element"), + inputActiveOptionBorder: opts.inputActiveOptionBorder, + inputActiveOptionForeground: opts.inputActiveOptionForeground, + inputActiveOptionBackground: opts.inputActiveOptionBackground + }); + } +}; +var WholeWordsToggle = class extends Toggle { + constructor(opts) { + super({ + icon: Codicon.wholeWord, + title: NLS_WHOLE_WORD_TOGGLE_LABEL + opts.appendTitle, + isChecked: opts.isChecked, + hoverDelegate: opts.hoverDelegate ?? getDefaultHoverDelegate("element"), + inputActiveOptionBorder: opts.inputActiveOptionBorder, + inputActiveOptionForeground: opts.inputActiveOptionForeground, + inputActiveOptionBackground: opts.inputActiveOptionBackground + }); + } +}; +var RegexToggle = class extends Toggle { + constructor(opts) { + super({ + icon: Codicon.regex, + title: NLS_REGEX_TOGGLE_LABEL + opts.appendTitle, + isChecked: opts.isChecked, + hoverDelegate: opts.hoverDelegate ?? getDefaultHoverDelegate("element"), + inputActiveOptionBorder: opts.inputActiveOptionBorder, + inputActiveOptionForeground: opts.inputActiveOptionForeground, + inputActiveOptionBackground: opts.inputActiveOptionBackground + }); + } +}; + +// ../../../../../base/common/navigator.ts +var ArrayNavigator = class { + constructor(items, start = 0, end = items.length, index = start - 1) { + this.items = items; + this.start = start; + this.end = end; + this.index = index; + } + current() { + if (this.index === this.start - 1 || this.index === this.end) { + return null; + } + return this.items[this.index]; + } + next() { + this.index = Math.min(this.index + 1, this.end); + return this.current(); + } + previous() { + this.index = Math.max(this.index - 1, this.start - 1); + return this.current(); + } + first() { + this.index = this.start; + return this.current(); + } + last() { + this.index = this.end - 1; + return this.current(); + } +}; + +// ../../../../../base/common/history.ts +var HistoryNavigator = class { + constructor(history = [], limit = 10) { + this._initialize(history); + this._limit = limit; + this._onChange(); + } + getHistory() { + return this._elements; + } + add(t) { + this._history.delete(t); + this._history.add(t); + this._onChange(); + } + next() { + return this._navigator.next(); + } + previous() { + if (this._currentPosition() !== 0) { + return this._navigator.previous(); + } + return null; + } + current() { + return this._navigator.current(); + } + first() { + return this._navigator.first(); + } + last() { + return this._navigator.last(); + } + isFirst() { + return this._currentPosition() === 0; + } + isLast() { + return this._currentPosition() >= this._elements.length - 1; + } + isNowhere() { + return this._navigator.current() === null; + } + has(t) { + return this._history.has(t); + } + clear() { + this._initialize([]); + this._onChange(); + } + _onChange() { + this._reduceToLimit(); + const elements = this._elements; + this._navigator = new ArrayNavigator(elements, 0, elements.length, elements.length); + } + _reduceToLimit() { + const data = this._elements; + if (data.length > this._limit) { + this._initialize(data.slice(data.length - this._limit)); + } + } + _currentPosition() { + const currentElement = this._navigator.current(); + if (!currentElement) { + return -1; + } + return this._elements.indexOf(currentElement); + } + _initialize(history) { + this._history = /* @__PURE__ */ new Set(); + for (const entry of history) { + this._history.add(entry); + } + } + get _elements() { + const elements = []; + this._history.forEach((e) => elements.push(e)); + return elements; + } +}; + +// ../../../../../base/browser/ui/inputbox/inputBox.ts +var $3 = $; +var InputBox = class extends Widget { + constructor(container, contextViewProvider, options2) { + super(); + this.state = "idle"; + this.maxHeight = Number.POSITIVE_INFINITY; + this._onDidChange = this._register(new Emitter()); + this.onDidChange = this._onDidChange.event; + this._onDidHeightChange = this._register(new Emitter()); + this.onDidHeightChange = this._onDidHeightChange.event; + this.contextViewProvider = contextViewProvider; + this.options = options2; + this.message = null; + this.placeholder = this.options.placeholder || ""; + this.tooltip = this.options.tooltip ?? (this.placeholder || ""); + this.ariaLabel = this.options.ariaLabel || ""; + if (this.options.validationOptions) { + this.validation = this.options.validationOptions.validation; + } + this.element = append(container, $3(".monaco-inputbox.idle")); + const tagName = this.options.flexibleHeight ? "textarea" : "input"; + const wrapper = append(this.element, $3(".ibwrapper")); + this.input = append(wrapper, $3(tagName + ".input.empty")); + this.input.setAttribute("autocorrect", "off"); + this.input.setAttribute("autocapitalize", "off"); + this.input.setAttribute("spellcheck", "false"); + this.onfocus(this.input, () => this.element.classList.add("synthetic-focus")); + this.onblur(this.input, () => this.element.classList.remove("synthetic-focus")); + if (this.options.flexibleHeight) { + this.maxHeight = typeof this.options.flexibleMaxHeight === "number" ? this.options.flexibleMaxHeight : Number.POSITIVE_INFINITY; + this.mirror = append(wrapper, $3("div.mirror")); + this.mirror.innerText = "\xA0"; + this.scrollableElement = new ScrollableElement(this.element, { vertical: 1 /* Auto */ }); + if (this.options.flexibleWidth) { + this.input.setAttribute("wrap", "off"); + this.mirror.style.whiteSpace = "pre"; + this.mirror.style.wordWrap = "initial"; + } + append(container, this.scrollableElement.getDomNode()); + this._register(this.scrollableElement); + this._register(this.scrollableElement.onScroll((e) => this.input.scrollTop = e.scrollTop)); + const onSelectionChange = this._register(new DomEmitter(container.ownerDocument, "selectionchange")); + const onAnchoredSelectionChange = Event.filter(onSelectionChange.event, () => { + const selection = container.ownerDocument.getSelection(); + return selection?.anchorNode === wrapper; + }); + this._register(onAnchoredSelectionChange(this.updateScrollDimensions, this)); + this._register(this.onDidHeightChange(this.updateScrollDimensions, this)); + } else { + this.input.type = this.options.type || "text"; + this.input.setAttribute("wrap", "off"); + } + if (this.ariaLabel) { + this.input.setAttribute("aria-label", this.ariaLabel); + } + if (this.placeholder && !this.options.showPlaceholderOnFocus) { + this.setPlaceHolder(this.placeholder); + } + if (this.tooltip) { + this.setTooltip(this.tooltip); + } + this.oninput(this.input, () => this.onValueChange()); + this.onblur(this.input, () => this.onBlur()); + this.onfocus(this.input, () => this.onFocus()); + this._register(this.ignoreGesture(this.input)); + setTimeout(() => this.updateMirror(), 0); + if (this.options.actions) { + this.actionbar = this._register(new ActionBar(this.element)); + this.actionbar.push(this.options.actions, { icon: true, label: false }); + } + this.applyStyles(); + } + onBlur() { + this._hideMessage(); + if (this.options.showPlaceholderOnFocus) { + this.input.setAttribute("placeholder", ""); + } + } + onFocus() { + this._showMessage(); + if (this.options.showPlaceholderOnFocus) { + this.input.setAttribute("placeholder", this.placeholder || ""); + } + } + setPlaceHolder(placeHolder) { + this.placeholder = placeHolder; + this.input.setAttribute("placeholder", placeHolder); + } + setTooltip(tooltip) { + this.tooltip = tooltip; + if (!this.hover) { + this.hover = this._register(getBaseLayerHoverDelegate().setupManagedHover(getDefaultHoverDelegate("mouse"), this.input, tooltip)); + } else { + this.hover.update(tooltip); + } + } + setAriaLabel(label) { + this.ariaLabel = label; + if (label) { + this.input.setAttribute("aria-label", this.ariaLabel); + } else { + this.input.removeAttribute("aria-label"); + } + } + getAriaLabel() { + return this.ariaLabel; + } + get mirrorElement() { + return this.mirror; + } + get inputElement() { + return this.input; + } + get value() { + return this.input.value; + } + set value(newValue) { + if (this.input.value !== newValue) { + this.input.value = newValue; + this.onValueChange(); + } + } + get step() { + return this.input.step; + } + set step(newValue) { + this.input.step = newValue; + } + get height() { + return typeof this.cachedHeight === "number" ? this.cachedHeight : getTotalHeight(this.element); + } + focus() { + this.input.focus(); + } + blur() { + this.input.blur(); + } + hasFocus() { + return isActiveElement(this.input); + } + select(range2 = null) { + this.input.select(); + if (range2) { + this.input.setSelectionRange(range2.start, range2.end); + if (range2.end === this.input.value.length) { + this.input.scrollLeft = this.input.scrollWidth; + } + } + } + isSelectionAtEnd() { + return this.input.selectionEnd === this.input.value.length && this.input.selectionStart === this.input.selectionEnd; + } + getSelection() { + const selectionStart = this.input.selectionStart; + if (selectionStart === null) { + return null; + } + const selectionEnd = this.input.selectionEnd ?? selectionStart; + return { + start: selectionStart, + end: selectionEnd + }; + } + enable() { + this.input.removeAttribute("disabled"); + } + disable() { + this.blur(); + this.input.disabled = true; + this._hideMessage(); + } + setEnabled(enabled) { + if (enabled) { + this.enable(); + } else { + this.disable(); + } + } + get width() { + return getTotalWidth(this.input); + } + set width(width) { + if (this.options.flexibleHeight && this.options.flexibleWidth) { + let horizontalPadding = 0; + if (this.mirror) { + const paddingLeft = parseFloat(this.mirror.style.paddingLeft || "") || 0; + const paddingRight = parseFloat(this.mirror.style.paddingRight || "") || 0; + horizontalPadding = paddingLeft + paddingRight; + } + this.input.style.width = width - horizontalPadding + "px"; + } else { + this.input.style.width = width + "px"; + } + if (this.mirror) { + this.mirror.style.width = width + "px"; + } + } + set paddingRight(paddingRight) { + this.input.style.width = `calc(100% - ${paddingRight}px)`; + if (this.mirror) { + this.mirror.style.paddingRight = paddingRight + "px"; + } + } + updateScrollDimensions() { + if (typeof this.cachedContentHeight !== "number" || typeof this.cachedHeight !== "number" || !this.scrollableElement) { + return; + } + const scrollHeight = this.cachedContentHeight; + const height = this.cachedHeight; + const scrollTop = this.input.scrollTop; + this.scrollableElement.setScrollDimensions({ scrollHeight, height }); + this.scrollableElement.setScrollPosition({ scrollTop }); + } + showMessage(message, force) { + if (this.state === "open" && equals2(this.message, message)) { + return; + } + this.message = message; + this.element.classList.remove("idle"); + this.element.classList.remove("info"); + this.element.classList.remove("warning"); + this.element.classList.remove("error"); + this.element.classList.add(this.classForType(message.type)); + const styles = this.stylesForType(this.message.type); + this.element.style.border = `1px solid ${asCssValueWithDefault(styles.border, "transparent")}`; + if (this.message.content && (this.hasFocus() || force)) { + this._showMessage(); + } + } + hideMessage() { + this.message = null; + this.element.classList.remove("info"); + this.element.classList.remove("warning"); + this.element.classList.remove("error"); + this.element.classList.add("idle"); + this._hideMessage(); + this.applyStyles(); + } + isInputValid() { + return !!this.validation && !this.validation(this.value); + } + validate() { + let errorMsg = null; + if (this.validation) { + errorMsg = this.validation(this.value); + if (errorMsg) { + this.inputElement.setAttribute("aria-invalid", "true"); + this.showMessage(errorMsg); + } else if (this.inputElement.hasAttribute("aria-invalid")) { + this.inputElement.removeAttribute("aria-invalid"); + this.hideMessage(); + } + } + return errorMsg?.type; + } + stylesForType(type) { + const styles = this.options.inputBoxStyles; + switch (type) { + case 1 /* INFO */: + return { border: styles.inputValidationInfoBorder, background: styles.inputValidationInfoBackground, foreground: styles.inputValidationInfoForeground }; + case 2 /* WARNING */: + return { border: styles.inputValidationWarningBorder, background: styles.inputValidationWarningBackground, foreground: styles.inputValidationWarningForeground }; + default: + return { border: styles.inputValidationErrorBorder, background: styles.inputValidationErrorBackground, foreground: styles.inputValidationErrorForeground }; + } + } + classForType(type) { + switch (type) { + case 1 /* INFO */: + return "info"; + case 2 /* WARNING */: + return "warning"; + default: + return "error"; + } + } + _showMessage() { + if (!this.contextViewProvider || !this.message) { + return; + } + let div; + const layout2 = () => div.style.width = getTotalWidth(this.element) + "px"; + this.contextViewProvider.showContextView({ + getAnchor: () => this.element, + anchorAlignment: 1 /* RIGHT */, + render: (container) => { + if (!this.message) { + return null; + } + div = append(container, $3(".monaco-inputbox-container")); + layout2(); + const renderOptions = { + inline: true, + className: "monaco-inputbox-message" + }; + const spanElement = this.message.formatContent ? renderFormattedText(this.message.content, renderOptions) : renderText(this.message.content, renderOptions); + spanElement.classList.add(this.classForType(this.message.type)); + const styles = this.stylesForType(this.message.type); + spanElement.style.backgroundColor = styles.background ?? ""; + spanElement.style.color = styles.foreground ?? ""; + spanElement.style.border = styles.border ? `1px solid ${styles.border}` : ""; + append(div, spanElement); + return null; + }, + onHide: () => { + this.state = "closed"; + }, + layout: layout2 + }); + if (this.message.type === 3 /* ERROR */) { + localize("alertErrorMessage", "Error: {0}", this.message.content); + } else if (this.message.type === 2 /* WARNING */) { + localize("alertWarningMessage", "Warning: {0}", this.message.content); + } else { + localize("alertInfoMessage", "Info: {0}", this.message.content); + } + this.state = "open"; + } + _hideMessage() { + if (!this.contextViewProvider) { + return; + } + if (this.state === "open") { + this.contextViewProvider.hideContextView(); + } + this.state = "idle"; + } + onValueChange() { + this._onDidChange.fire(this.value); + this.validate(); + this.updateMirror(); + this.input.classList.toggle("empty", !this.value); + if (this.state === "open" && this.contextViewProvider) { + this.contextViewProvider.layout(); + } + } + updateMirror() { + if (!this.mirror) { + return; + } + const value = this.value; + const lastCharCode = value.charCodeAt(value.length - 1); + const suffix = lastCharCode === 10 ? " " : ""; + const mirrorTextContent = (value + suffix).replace(/\u000c/g, ""); + if (mirrorTextContent) { + this.mirror.textContent = value + suffix; + } else { + this.mirror.innerText = "\xA0"; + } + this.layout(); + } + applyStyles() { + const styles = this.options.inputBoxStyles; + const background = styles.inputBackground ?? ""; + const foreground2 = styles.inputForeground ?? ""; + const border = styles.inputBorder ?? ""; + this.element.style.backgroundColor = background; + this.element.style.color = foreground2; + this.input.style.backgroundColor = "inherit"; + this.input.style.color = foreground2; + this.element.style.border = `1px solid ${asCssValueWithDefault(border, "transparent")}`; + } + layout() { + if (!this.mirror) { + return; + } + const previousHeight = this.cachedContentHeight; + this.cachedContentHeight = getTotalHeight(this.mirror); + if (previousHeight !== this.cachedContentHeight) { + this.cachedHeight = Math.min(this.cachedContentHeight, this.maxHeight); + this.input.style.height = this.cachedHeight + "px"; + this._onDidHeightChange.fire(this.cachedContentHeight); + } + } + insertAtCursor(text2) { + const inputElement = this.inputElement; + const start = inputElement.selectionStart; + const end = inputElement.selectionEnd; + const content = inputElement.value; + if (start !== null && end !== null) { + this.value = content.substr(0, start) + text2 + content.substr(end); + inputElement.setSelectionRange(start + 1, start + 1); + this.layout(); + } + } + dispose() { + this._hideMessage(); + this.message = null; + this.actionbar?.dispose(); + super.dispose(); + } +}; +var HistoryInputBox = class extends InputBox { + constructor(container, contextViewProvider, options2) { + const NLS_PLACEHOLDER_HISTORY_HINT_SUFFIX_NO_PARENS = localize({ + key: "history.inputbox.hint.suffix.noparens", + comment: ['Text is the suffix of an input field placeholder coming after the action the input field performs, this will be used when the input field ends in a closing parenthesis ")", for example "Filter (e.g. text, !exclude)". The character inserted into the final string is \u21C5 to represent the up and down arrow keys.'] + }, " or {0} for history", `\u21C5`); + const NLS_PLACEHOLDER_HISTORY_HINT_SUFFIX_IN_PARENS = localize({ + key: "history.inputbox.hint.suffix.inparens", + comment: ['Text is the suffix of an input field placeholder coming after the action the input field performs, this will be used when the input field does NOT end in a closing parenthesis (eg. "Find"). The character inserted into the final string is \u21C5 to represent the up and down arrow keys.'] + }, " ({0} for history)", `\u21C5`); + super(container, contextViewProvider, options2); + this._onDidFocus = this._register(new Emitter()); + this.onDidFocus = this._onDidFocus.event; + this._onDidBlur = this._register(new Emitter()); + this.onDidBlur = this._onDidBlur.event; + this.history = new HistoryNavigator(options2.history, 100); + const addSuffix = () => { + if (options2.showHistoryHint && options2.showHistoryHint() && !this.placeholder.endsWith(NLS_PLACEHOLDER_HISTORY_HINT_SUFFIX_NO_PARENS) && !this.placeholder.endsWith(NLS_PLACEHOLDER_HISTORY_HINT_SUFFIX_IN_PARENS) && this.history.getHistory().length) { + const suffix = this.placeholder.endsWith(")") ? NLS_PLACEHOLDER_HISTORY_HINT_SUFFIX_NO_PARENS : NLS_PLACEHOLDER_HISTORY_HINT_SUFFIX_IN_PARENS; + const suffixedPlaceholder = this.placeholder + suffix; + if (options2.showPlaceholderOnFocus && !isActiveElement(this.input)) { + this.placeholder = suffixedPlaceholder; + } else { + this.setPlaceHolder(suffixedPlaceholder); + } + } + }; + this.observer = new MutationObserver((mutationList, observer) => { + mutationList.forEach((mutation) => { + if (!mutation.target.textContent) { + addSuffix(); + } + }); + }); + this.observer.observe(this.input, { attributeFilter: ["class"] }); + this.onfocus(this.input, () => addSuffix()); + this.onblur(this.input, () => { + const resetPlaceholder = (historyHint) => { + if (!this.placeholder.endsWith(historyHint)) { + return false; + } else { + const revertedPlaceholder = this.placeholder.slice(0, this.placeholder.length - historyHint.length); + if (options2.showPlaceholderOnFocus) { + this.placeholder = revertedPlaceholder; + } else { + this.setPlaceHolder(revertedPlaceholder); + } + return true; + } + }; + if (!resetPlaceholder(NLS_PLACEHOLDER_HISTORY_HINT_SUFFIX_IN_PARENS)) { + resetPlaceholder(NLS_PLACEHOLDER_HISTORY_HINT_SUFFIX_NO_PARENS); + } + }); + } + dispose() { + super.dispose(); + if (this.observer) { + this.observer.disconnect(); + this.observer = void 0; + } + } + addToHistory(always) { + if (this.value && (always || this.value !== this.getCurrentValue())) { + this.history.add(this.value); + } + } + prependHistory(restoredHistory) { + const newHistory = this.getHistory(); + this.clearHistory(); + restoredHistory.forEach((item) => { + this.history.add(item); + }); + newHistory.forEach((item) => { + this.history.add(item); + }); + } + getHistory() { + return this.history.getHistory(); + } + isAtFirstInHistory() { + return this.history.isFirst(); + } + isAtLastInHistory() { + return this.history.isLast(); + } + isNowhereInHistory() { + return this.history.isNowhere(); + } + showNextValue() { + if (!this.history.has(this.value)) { + this.addToHistory(); + } + let next = this.getNextValue(); + if (next) { + next = next === this.value ? this.getNextValue() : next; + } + this.value = next ?? ""; + status(this.value ? this.value : localize("clearedInput", "Cleared Input")); + } + showPreviousValue() { + if (!this.history.has(this.value)) { + this.addToHistory(); + } + let previous = this.getPreviousValue(); + if (previous) { + previous = previous === this.value ? this.getPreviousValue() : previous; + } + if (previous) { + this.value = previous; + status(this.value); + } + } + clearHistory() { + this.history.clear(); + } + setPlaceHolder(placeHolder) { + super.setPlaceHolder(placeHolder); + this.setTooltip(placeHolder); + } + onBlur() { + super.onBlur(); + this._onDidBlur.fire(); + } + onFocus() { + super.onFocus(); + this._onDidFocus.fire(); + } + getCurrentValue() { + let currentValue = this.history.current(); + if (!currentValue) { + currentValue = this.history.last(); + this.history.next(); + } + return currentValue; + } + getPreviousValue() { + return this.history.previous() || this.history.first(); + } + getNextValue() { + return this.history.next(); + } +}; + +// ../../../../../base/browser/ui/findinput/findInput.ts +var NLS_DEFAULT_LABEL = localize("defaultLabel", "input"); +var FindInput = class extends Widget { + constructor(parent, contextViewProvider, options2) { + super(); + this.fixFocusOnOptionClickEnabled = true; + this.imeSessionInProgress = false; + this.additionalTogglesDisposables = this._register(new MutableDisposable()); + this.additionalToggles = []; + this._onDidOptionChange = this._register(new Emitter()); + this.onDidOptionChange = this._onDidOptionChange.event; + this._onKeyDown = this._register(new Emitter()); + this.onKeyDown = this._onKeyDown.event; + this._onMouseDown = this._register(new Emitter()); + this.onMouseDown = this._onMouseDown.event; + this._onInput = this._register(new Emitter()); + this.onInput = this._onInput.event; + this._onKeyUp = this._register(new Emitter()); + this.onKeyUp = this._onKeyUp.event; + this._onCaseSensitiveKeyDown = this._register(new Emitter()); + this.onCaseSensitiveKeyDown = this._onCaseSensitiveKeyDown.event; + this._onRegexKeyDown = this._register(new Emitter()); + this.onRegexKeyDown = this._onRegexKeyDown.event; + this._lastHighlightFindOptions = 0; + this.placeholder = options2.placeholder || ""; + this.validation = options2.validation; + this.label = options2.label || NLS_DEFAULT_LABEL; + this.showCommonFindToggles = !!options2.showCommonFindToggles; + const appendCaseSensitiveLabel = options2.appendCaseSensitiveLabel || ""; + const appendWholeWordsLabel = options2.appendWholeWordsLabel || ""; + const appendRegexLabel = options2.appendRegexLabel || ""; + const history = options2.history || []; + const flexibleHeight = !!options2.flexibleHeight; + const flexibleWidth = !!options2.flexibleWidth; + const flexibleMaxHeight = options2.flexibleMaxHeight; + this.domNode = document.createElement("div"); + this.domNode.classList.add("monaco-findInput"); + this.inputBox = this._register(new HistoryInputBox(this.domNode, contextViewProvider, { + placeholder: this.placeholder || "", + ariaLabel: this.label || "", + validationOptions: { + validation: this.validation + }, + history, + showHistoryHint: options2.showHistoryHint, + flexibleHeight, + flexibleWidth, + flexibleMaxHeight, + inputBoxStyles: options2.inputBoxStyles + })); + const hoverDelegate = this._register(createInstantHoverDelegate()); + if (this.showCommonFindToggles) { + this.regex = this._register(new RegexToggle({ + appendTitle: appendRegexLabel, + isChecked: false, + hoverDelegate, + ...options2.toggleStyles + })); + this._register(this.regex.onChange((viaKeyboard) => { + this._onDidOptionChange.fire(viaKeyboard); + if (!viaKeyboard && this.fixFocusOnOptionClickEnabled) { + this.inputBox.focus(); + } + this.validate(); + })); + this._register(this.regex.onKeyDown((e) => { + this._onRegexKeyDown.fire(e); + })); + this.wholeWords = this._register(new WholeWordsToggle({ + appendTitle: appendWholeWordsLabel, + isChecked: false, + hoverDelegate, + ...options2.toggleStyles + })); + this._register(this.wholeWords.onChange((viaKeyboard) => { + this._onDidOptionChange.fire(viaKeyboard); + if (!viaKeyboard && this.fixFocusOnOptionClickEnabled) { + this.inputBox.focus(); + } + this.validate(); + })); + this.caseSensitive = this._register(new CaseSensitiveToggle({ + appendTitle: appendCaseSensitiveLabel, + isChecked: false, + hoverDelegate, + ...options2.toggleStyles + })); + this._register(this.caseSensitive.onChange((viaKeyboard) => { + this._onDidOptionChange.fire(viaKeyboard); + if (!viaKeyboard && this.fixFocusOnOptionClickEnabled) { + this.inputBox.focus(); + } + this.validate(); + })); + this._register(this.caseSensitive.onKeyDown((e) => { + this._onCaseSensitiveKeyDown.fire(e); + })); + const indexes = [this.caseSensitive.domNode, this.wholeWords.domNode, this.regex.domNode]; + this.onkeydown(this.domNode, (event) => { + if (event.equals(15 /* LeftArrow */) || event.equals(17 /* RightArrow */) || event.equals(9 /* Escape */)) { + const index = indexes.indexOf(this.domNode.ownerDocument.activeElement); + if (index >= 0) { + let newIndex = -1; + if (event.equals(17 /* RightArrow */)) { + newIndex = (index + 1) % indexes.length; + } else if (event.equals(15 /* LeftArrow */)) { + if (index === 0) { + newIndex = indexes.length - 1; + } else { + newIndex = index - 1; + } + } + if (event.equals(9 /* Escape */)) { + indexes[index].blur(); + this.inputBox.focus(); + } else if (newIndex >= 0) { + indexes[newIndex].focus(); + } + EventHelper.stop(event, true); + } + } + }); + } + this.controls = document.createElement("div"); + this.controls.className = "controls"; + this.controls.style.display = this.showCommonFindToggles ? "" : "none"; + if (this.caseSensitive) { + this.controls.append(this.caseSensitive.domNode); + } + if (this.wholeWords) { + this.controls.appendChild(this.wholeWords.domNode); + } + if (this.regex) { + this.controls.appendChild(this.regex.domNode); + } + this.setAdditionalToggles(options2?.additionalToggles); + if (this.controls) { + this.domNode.appendChild(this.controls); + } + parent?.appendChild(this.domNode); + this._register(addDisposableListener(this.inputBox.inputElement, "compositionstart", (e) => { + this.imeSessionInProgress = true; + })); + this._register(addDisposableListener(this.inputBox.inputElement, "compositionend", (e) => { + this.imeSessionInProgress = false; + this._onInput.fire(); + })); + this.onkeydown(this.inputBox.inputElement, (e) => this._onKeyDown.fire(e)); + this.onkeyup(this.inputBox.inputElement, (e) => this._onKeyUp.fire(e)); + this.oninput(this.inputBox.inputElement, (e) => this._onInput.fire()); + this.onmousedown(this.inputBox.inputElement, (e) => this._onMouseDown.fire(e)); + } + static { + this.OPTION_CHANGE = "optionChange"; + } + get isImeSessionInProgress() { + return this.imeSessionInProgress; + } + get onDidChange() { + return this.inputBox.onDidChange; + } + layout(style) { + this.inputBox.layout(); + this.updateInputBoxPadding(style.collapsedFindWidget); + } + enable() { + this.domNode.classList.remove("disabled"); + this.inputBox.enable(); + this.regex?.enable(); + this.wholeWords?.enable(); + this.caseSensitive?.enable(); + for (const toggle of this.additionalToggles) { + toggle.enable(); + } + } + disable() { + this.domNode.classList.add("disabled"); + this.inputBox.disable(); + this.regex?.disable(); + this.wholeWords?.disable(); + this.caseSensitive?.disable(); + for (const toggle of this.additionalToggles) { + toggle.disable(); + } + } + setFocusInputOnOptionClick(value) { + this.fixFocusOnOptionClickEnabled = value; + } + setEnabled(enabled) { + if (enabled) { + this.enable(); + } else { + this.disable(); + } + } + setAdditionalToggles(toggles) { + for (const currentToggle of this.additionalToggles) { + currentToggle.domNode.remove(); + } + this.additionalToggles = []; + this.additionalTogglesDisposables.value = new DisposableStore(); + for (const toggle of toggles ?? []) { + this.additionalTogglesDisposables.value.add(toggle); + this.controls.appendChild(toggle.domNode); + this.additionalTogglesDisposables.value.add(toggle.onChange((viaKeyboard) => { + this._onDidOptionChange.fire(viaKeyboard); + if (!viaKeyboard && this.fixFocusOnOptionClickEnabled) { + this.inputBox.focus(); + } + })); + this.additionalToggles.push(toggle); + } + if (this.additionalToggles.length > 0) { + this.controls.style.display = ""; + } + this.updateInputBoxPadding(); + } + updateInputBoxPadding(controlsHidden = false) { + if (controlsHidden) { + this.inputBox.paddingRight = 0; + } else { + this.inputBox.paddingRight = (this.caseSensitive?.width() ?? 0) + (this.wholeWords?.width() ?? 0) + (this.regex?.width() ?? 0) + this.additionalToggles.reduce((r, t) => r + t.width(), 0); + } + } + clear() { + this.clearValidation(); + this.setValue(""); + this.focus(); + } + getValue() { + return this.inputBox.value; + } + setValue(value) { + if (this.inputBox.value !== value) { + this.inputBox.value = value; + } + } + onSearchSubmit() { + this.inputBox.addToHistory(); + } + select() { + this.inputBox.select(); + } + focus() { + this.inputBox.focus(); + } + getCaseSensitive() { + return this.caseSensitive?.checked ?? false; + } + setCaseSensitive(value) { + if (this.caseSensitive) { + this.caseSensitive.checked = value; + } + } + getWholeWords() { + return this.wholeWords?.checked ?? false; + } + setWholeWords(value) { + if (this.wholeWords) { + this.wholeWords.checked = value; + } + } + getRegex() { + return this.regex?.checked ?? false; + } + setRegex(value) { + if (this.regex) { + this.regex.checked = value; + this.validate(); + } + } + focusOnCaseSensitive() { + this.caseSensitive?.focus(); + } + focusOnRegex() { + this.regex?.focus(); + } + highlightFindOptions() { + this.domNode.classList.remove("highlight-" + this._lastHighlightFindOptions); + this._lastHighlightFindOptions = 1 - this._lastHighlightFindOptions; + this.domNode.classList.add("highlight-" + this._lastHighlightFindOptions); + } + validate() { + this.inputBox.validate(); + } + showMessage(message) { + this.inputBox.showMessage(message); + } + clearMessage() { + this.inputBox.hideMessage(); + } + clearValidation() { + this.inputBox.hideMessage(); + } +}; + +// ../../../../../base/browser/ui/findinput/replaceInput.ts +var NLS_DEFAULT_LABEL2 = localize("defaultLabel", "input"); +var NLS_PRESERVE_CASE_LABEL = localize("label.preserveCaseToggle", "Preserve Case"); +var PreserveCaseToggle = class extends Toggle { + constructor(opts) { + super({ + // TODO: does this need its own icon? + icon: Codicon.preserveCase, + title: NLS_PRESERVE_CASE_LABEL + opts.appendTitle, + isChecked: opts.isChecked, + hoverDelegate: opts.hoverDelegate ?? getDefaultHoverDelegate("element"), + inputActiveOptionBorder: opts.inputActiveOptionBorder, + inputActiveOptionForeground: opts.inputActiveOptionForeground, + inputActiveOptionBackground: opts.inputActiveOptionBackground + }); + } +}; +var ReplaceInput = class extends Widget { + constructor(parent, contextViewProvider, _showOptionButtons, options2) { + super(); + this._showOptionButtons = _showOptionButtons; + this.fixFocusOnOptionClickEnabled = true; + this.cachedOptionsWidth = 0; + this._onDidOptionChange = this._register(new Emitter()); + this.onDidOptionChange = this._onDidOptionChange.event; + this._onKeyDown = this._register(new Emitter()); + this.onKeyDown = this._onKeyDown.event; + this._onMouseDown = this._register(new Emitter()); + this.onMouseDown = this._onMouseDown.event; + this._onInput = this._register(new Emitter()); + this.onInput = this._onInput.event; + this._onKeyUp = this._register(new Emitter()); + this.onKeyUp = this._onKeyUp.event; + this._onPreserveCaseKeyDown = this._register(new Emitter()); + this.onPreserveCaseKeyDown = this._onPreserveCaseKeyDown.event; + this._lastHighlightFindOptions = 0; + this.contextViewProvider = contextViewProvider; + this.placeholder = options2.placeholder || ""; + this.validation = options2.validation; + this.label = options2.label || NLS_DEFAULT_LABEL2; + const appendPreserveCaseLabel = options2.appendPreserveCaseLabel || ""; + const history = options2.history || []; + const flexibleHeight = !!options2.flexibleHeight; + const flexibleWidth = !!options2.flexibleWidth; + const flexibleMaxHeight = options2.flexibleMaxHeight; + this.domNode = document.createElement("div"); + this.domNode.classList.add("monaco-findInput"); + this.inputBox = this._register(new HistoryInputBox(this.domNode, this.contextViewProvider, { + ariaLabel: this.label || "", + placeholder: this.placeholder || "", + validationOptions: { + validation: this.validation + }, + history, + showHistoryHint: options2.showHistoryHint, + flexibleHeight, + flexibleWidth, + flexibleMaxHeight, + inputBoxStyles: options2.inputBoxStyles + })); + this.preserveCase = this._register(new PreserveCaseToggle({ + appendTitle: appendPreserveCaseLabel, + isChecked: false, + ...options2.toggleStyles + })); + this._register(this.preserveCase.onChange((viaKeyboard) => { + this._onDidOptionChange.fire(viaKeyboard); + if (!viaKeyboard && this.fixFocusOnOptionClickEnabled) { + this.inputBox.focus(); + } + this.validate(); + })); + this._register(this.preserveCase.onKeyDown((e) => { + this._onPreserveCaseKeyDown.fire(e); + })); + if (this._showOptionButtons) { + this.cachedOptionsWidth = this.preserveCase.width(); + } else { + this.cachedOptionsWidth = 0; + } + const indexes = [this.preserveCase.domNode]; + this.onkeydown(this.domNode, (event) => { + if (event.equals(15 /* LeftArrow */) || event.equals(17 /* RightArrow */) || event.equals(9 /* Escape */)) { + const index = indexes.indexOf(this.domNode.ownerDocument.activeElement); + if (index >= 0) { + let newIndex = -1; + if (event.equals(17 /* RightArrow */)) { + newIndex = (index + 1) % indexes.length; + } else if (event.equals(15 /* LeftArrow */)) { + if (index === 0) { + newIndex = indexes.length - 1; + } else { + newIndex = index - 1; + } + } + if (event.equals(9 /* Escape */)) { + indexes[index].blur(); + this.inputBox.focus(); + } else if (newIndex >= 0) { + indexes[newIndex].focus(); + } + EventHelper.stop(event, true); + } + } + }); + const controls = document.createElement("div"); + controls.className = "controls"; + controls.style.display = this._showOptionButtons ? "block" : "none"; + controls.appendChild(this.preserveCase.domNode); + this.domNode.appendChild(controls); + parent?.appendChild(this.domNode); + this.onkeydown(this.inputBox.inputElement, (e) => this._onKeyDown.fire(e)); + this.onkeyup(this.inputBox.inputElement, (e) => this._onKeyUp.fire(e)); + this.oninput(this.inputBox.inputElement, (e) => this._onInput.fire()); + this.onmousedown(this.inputBox.inputElement, (e) => this._onMouseDown.fire(e)); + } + static { + this.OPTION_CHANGE = "optionChange"; + } + enable() { + this.domNode.classList.remove("disabled"); + this.inputBox.enable(); + this.preserveCase.enable(); + } + disable() { + this.domNode.classList.add("disabled"); + this.inputBox.disable(); + this.preserveCase.disable(); + } + setFocusInputOnOptionClick(value) { + this.fixFocusOnOptionClickEnabled = value; + } + setEnabled(enabled) { + if (enabled) { + this.enable(); + } else { + this.disable(); + } + } + clear() { + this.clearValidation(); + this.setValue(""); + this.focus(); + } + getValue() { + return this.inputBox.value; + } + setValue(value) { + if (this.inputBox.value !== value) { + this.inputBox.value = value; + } + } + onSearchSubmit() { + this.inputBox.addToHistory(); + } + applyStyles() { + } + select() { + this.inputBox.select(); + } + focus() { + this.inputBox.focus(); + } + getPreserveCase() { + return this.preserveCase.checked; + } + setPreserveCase(value) { + this.preserveCase.checked = value; + } + focusOnPreserve() { + this.preserveCase.focus(); + } + highlightFindOptions() { + this.domNode.classList.remove("highlight-" + this._lastHighlightFindOptions); + this._lastHighlightFindOptions = 1 - this._lastHighlightFindOptions; + this.domNode.classList.add("highlight-" + this._lastHighlightFindOptions); + } + validate() { + this.inputBox?.validate(); + } + showMessage(message) { + this.inputBox?.showMessage(message); + } + clearMessage() { + this.inputBox?.hideMessage(); + } + clearValidation() { + this.inputBox?.hideMessage(); + } + set width(newWidth) { + this.inputBox.paddingRight = this.cachedOptionsWidth; + this.domNode.style.width = newWidth + "px"; + } + dispose() { + super.dispose(); + } +}; + +// ../../../../../platform/history/browser/contextScopedHistoryWidget.ts +var historyNavigationVisible = new RawContextKey("suggestWidgetVisible", false, localize("suggestWidgetVisible", "Whether suggestion are visible")); +var HistoryNavigationWidgetFocusContext = "historyNavigationWidgetFocus"; +var HistoryNavigationForwardsEnablementContext = "historyNavigationForwardsEnabled"; +var HistoryNavigationBackwardsEnablementContext = "historyNavigationBackwardsEnabled"; +var lastFocusedWidget = void 0; +var widgets = []; +function registerAndCreateHistoryNavigationContext(scopedContextKeyService, widget) { + if (widgets.includes(widget)) { + throw new Error("Cannot register the same widget multiple times"); + } + widgets.push(widget); + const disposableStore = new DisposableStore(); + const historyNavigationWidgetFocus = new RawContextKey(HistoryNavigationWidgetFocusContext, false).bindTo(scopedContextKeyService); + const historyNavigationForwardsEnablement = new RawContextKey(HistoryNavigationForwardsEnablementContext, true).bindTo(scopedContextKeyService); + const historyNavigationBackwardsEnablement = new RawContextKey(HistoryNavigationBackwardsEnablementContext, true).bindTo(scopedContextKeyService); + const onDidFocus = () => { + historyNavigationWidgetFocus.set(true); + lastFocusedWidget = widget; + }; + const onDidBlur = () => { + historyNavigationWidgetFocus.set(false); + if (lastFocusedWidget === widget) { + lastFocusedWidget = void 0; + } + }; + if (isActiveElement(widget.element)) { + onDidFocus(); + } + disposableStore.add(widget.onDidFocus(() => onDidFocus())); + disposableStore.add(widget.onDidBlur(() => onDidBlur())); + disposableStore.add(toDisposable(() => { + widgets.splice(widgets.indexOf(widget), 1); + onDidBlur(); + })); + return { + historyNavigationForwardsEnablement, + historyNavigationBackwardsEnablement, + dispose() { + disposableStore.dispose(); + } + }; +} +var ContextScopedHistoryInputBox = class extends HistoryInputBox { + constructor(container, contextViewProvider, options2, contextKeyService) { + super(container, contextViewProvider, options2); + const scopedContextKeyService = this._register(contextKeyService.createScoped(this.element)); + this._register(registerAndCreateHistoryNavigationContext(scopedContextKeyService, this)); + } +}; +ContextScopedHistoryInputBox = __decorateClass([ + __decorateParam(3, IContextKeyService) +], ContextScopedHistoryInputBox); +var ContextScopedFindInput = class extends FindInput { + constructor(container, contextViewProvider, options2, contextKeyService) { + super(container, contextViewProvider, options2); + const scopedContextKeyService = this._register(contextKeyService.createScoped(this.inputBox.element)); + this._register(registerAndCreateHistoryNavigationContext(scopedContextKeyService, this.inputBox)); + } +}; +ContextScopedFindInput = __decorateClass([ + __decorateParam(3, IContextKeyService) +], ContextScopedFindInput); +var ContextScopedReplaceInput = class extends ReplaceInput { + constructor(container, contextViewProvider, options2, contextKeyService, showReplaceOptions = false) { + super(container, contextViewProvider, showReplaceOptions, options2); + const scopedContextKeyService = this._register(contextKeyService.createScoped(this.inputBox.element)); + this._register(registerAndCreateHistoryNavigationContext(scopedContextKeyService, this.inputBox)); + } +}; +ContextScopedReplaceInput = __decorateClass([ + __decorateParam(3, IContextKeyService) +], ContextScopedReplaceInput); +KeybindingsRegistry.registerCommandAndKeybindingRule({ + id: "history.showPrevious", + weight: 200 /* WorkbenchContrib */, + when: ContextKeyExpr.and( + ContextKeyExpr.has(HistoryNavigationWidgetFocusContext), + ContextKeyExpr.equals(HistoryNavigationBackwardsEnablementContext, true), + ContextKeyExpr.not("isComposing"), + historyNavigationVisible.isEqualTo(false) + ), + primary: 16 /* UpArrow */, + secondary: [512 /* Alt */ | 16 /* UpArrow */], + handler: (accessor) => { + lastFocusedWidget?.showPreviousValue(); + } +}); +KeybindingsRegistry.registerCommandAndKeybindingRule({ + id: "history.showNext", + weight: 200 /* WorkbenchContrib */, + when: ContextKeyExpr.and( + ContextKeyExpr.has(HistoryNavigationWidgetFocusContext), + ContextKeyExpr.equals(HistoryNavigationForwardsEnablementContext, true), + ContextKeyExpr.not("isComposing"), + historyNavigationVisible.isEqualTo(false) + ), + primary: 18 /* DownArrow */, + secondary: [512 /* Alt */ | 18 /* DownArrow */], + handler: (accessor) => { + lastFocusedWidget?.showNextValue(); + } +}); + +// ../../../../../platform/history/browser/historyWidgetKeybindingHint.ts +function showHistoryKeybindingHint(keybindingService) { + return keybindingService.lookupKeybinding("history.showPrevious")?.getElectronAccelerator() === "Up" && keybindingService.lookupKeybinding("history.showNext")?.getElectronAccelerator() === "Down"; +} + +// ../../../../browser/parts/views/viewFilter.ts +var viewFilterMenu = new MenuId("menu.view.filter"); +var viewFilterSubmenu = new MenuId("submenu.view.filter"); +MenuRegistry.appendMenuItem(viewFilterMenu, { + submenu: viewFilterSubmenu, + title: localize("more filters", "More Filters..."), + group: "navigation", + icon: Codicon.filter +}); +var MoreFiltersActionViewItem = class extends SubmenuEntryActionViewItem { + constructor() { + super(...arguments); + this._checked = false; + } + set checked(checked) { + if (this._checked !== checked) { + this._checked = checked; + this.updateChecked(); + } + } + updateChecked() { + if (this.element) { + this.element.classList.toggle("checked", this._checked); + } + } + render(container) { + super.render(container); + this.updateChecked(); + } +}; +var FilterWidget = class extends Widget { + constructor(options2, instantiationService, contextViewService, contextKeyService, keybindingService) { + super(); + this.options = options2; + this.instantiationService = instantiationService; + this.contextViewService = contextViewService; + this.keybindingService = keybindingService; + this._onDidChangeFilterText = this._register(new Emitter()); + this.onDidChangeFilterText = this._onDidChangeFilterText.event; + this.isMoreFiltersChecked = false; + this.delayedFilterUpdate = new Delayer(400); + this._register(toDisposable(() => this.delayedFilterUpdate.cancel())); + if (options2.focusContextKey) { + this.focusContextKey = new RawContextKey(options2.focusContextKey, false).bindTo(contextKeyService); + } + this.element = $(".viewpane-filter"); + [this.filterInputBox, this.focusTracker] = this.createInput(this.element); + this._register(this.filterInputBox); + this._register(this.focusTracker); + const controlsContainer = append(this.element, $(".viewpane-filter-controls")); + this.filterBadge = this.createBadge(controlsContainer); + this.toolbar = this._register(this.createToolBar(controlsContainer)); + this.adjustInputBox(); + } + get onDidFocus() { + return this.focusTracker.onDidFocus; + } + get onDidBlur() { + return this.focusTracker.onDidBlur; + } + hasFocus() { + return this.filterInputBox.hasFocus(); + } + focus() { + this.filterInputBox.focus(); + } + blur() { + this.filterInputBox.blur(); + } + updateBadge(message) { + this.filterBadge.classList.toggle("hidden", !message); + this.filterBadge.textContent = message || ""; + this.adjustInputBox(); + } + setFilterText(filterText) { + this.filterInputBox.value = filterText; + } + getFilterText() { + return this.filterInputBox.value; + } + getHistory() { + return this.filterInputBox.getHistory(); + } + layout(width) { + this.element.parentElement?.classList.toggle("grow", width > 700); + this.element.classList.toggle("small", width < 400); + this.adjustInputBox(); + this.lastWidth = width; + } + relayout() { + if (this.lastWidth) { + this.layout(this.lastWidth); + } + } + checkMoreFilters(checked) { + this.isMoreFiltersChecked = checked; + if (this.moreFiltersActionViewItem) { + this.moreFiltersActionViewItem.checked = checked; + } + } + createInput(container) { + const inputBox = this._register(this.instantiationService.createInstance(ContextScopedHistoryInputBox, container, this.contextViewService, { + placeholder: this.options.placeholder, + ariaLabel: this.options.ariaLabel, + history: this.options.history || [], + showHistoryHint: () => showHistoryKeybindingHint(this.keybindingService), + inputBoxStyles: defaultInputBoxStyles + })); + if (this.options.text) { + inputBox.value = this.options.text; + } + this._register(inputBox.onDidChange((filter) => this.delayedFilterUpdate.trigger(() => this.onDidInputChange(inputBox)))); + this._register(addStandardDisposableListener(inputBox.inputElement, EventType.KEY_DOWN, (e) => this.onInputKeyDown(e, inputBox))); + this._register(addStandardDisposableListener(container, EventType.KEY_DOWN, this.handleKeyboardEvent)); + this._register(addStandardDisposableListener(container, EventType.KEY_UP, this.handleKeyboardEvent)); + this._register(addStandardDisposableListener(inputBox.inputElement, EventType.CLICK, (e) => { + e.stopPropagation(); + e.preventDefault(); + })); + const focusTracker = this._register(trackFocus(inputBox.inputElement)); + if (this.focusContextKey) { + this._register(focusTracker.onDidFocus(() => this.focusContextKey.set(true))); + this._register(focusTracker.onDidBlur(() => this.focusContextKey.set(false))); + this._register(toDisposable(() => this.focusContextKey.reset())); + } + return [inputBox, focusTracker]; + } + createBadge(container) { + const filterBadge = append(container, $(".viewpane-filter-badge.hidden")); + filterBadge.style.backgroundColor = asCssVariable(badgeBackground); + filterBadge.style.color = asCssVariable(badgeForeground); + filterBadge.style.border = `1px solid ${asCssVariable(contrastBorder)}`; + return filterBadge; + } + createToolBar(container) { + return this.instantiationService.createInstance( + MenuWorkbenchToolBar, + container, + viewFilterMenu, + { + hiddenItemStrategy: -1 /* NoHide */, + actionViewItemProvider: (action, options2) => { + if (action instanceof SubmenuItemAction && action.item.submenu.id === viewFilterSubmenu.id) { + this.moreFiltersActionViewItem = this.instantiationService.createInstance(MoreFiltersActionViewItem, action, options2); + this.moreFiltersActionViewItem.checked = this.isMoreFiltersChecked; + return this.moreFiltersActionViewItem; + } + return void 0; + } + } + ); + } + onDidInputChange(inputbox) { + inputbox.addToHistory(); + this._onDidChangeFilterText.fire(inputbox.value); + } + adjustInputBox() { + this.filterInputBox.inputElement.style.paddingRight = this.element.classList.contains("small") || this.filterBadge.classList.contains("hidden") ? "25px" : "150px"; + } + // Action toolbar is swallowing some keys for action items which should not be for an input box + handleKeyboardEvent(event) { + if (event.equals(10 /* Space */) || event.equals(15 /* LeftArrow */) || event.equals(17 /* RightArrow */) || event.equals(14 /* Home */) || event.equals(13 /* End */)) { + event.stopPropagation(); + } + } + onInputKeyDown(event, filterInputBox) { + let handled = false; + if (event.equals(2 /* Tab */) && !this.toolbar.isEmpty()) { + this.toolbar.focus(); + handled = true; + } + if (handled) { + event.stopPropagation(); + event.preventDefault(); + } + } +}; +FilterWidget = __decorateClass([ + __decorateParam(1, IInstantiationService), + __decorateParam(2, IContextViewService), + __decorateParam(3, IContextKeyService), + __decorateParam(4, IKeybindingService) +], FilterWidget); + +// ../../../../../platform/instantiation/common/serviceCollection.ts +var ServiceCollection = class { + constructor(...entries2) { + this._entries = /* @__PURE__ */ new Map(); + for (const [id2, service] of entries2) { + this.set(id2, service); + } + } + set(id2, instanceOrDescriptor) { + const result = this._entries.get(id2); + this._entries.set(id2, instanceOrDescriptor); + return result; + } + has(id2) { + return this._entries.has(id2); + } + get(id2) { + return this._entries.get(id2); + } +}; + +// ../../../../services/lifecycle/common/lifecycle.ts +var ILifecycleService = createDecorator("lifecycleService"); + +// ../../../../common/theme.ts +var TAB_ACTIVE_BACKGROUND = registerColor("tab.activeBackground", editorBackground, localize("tabActiveBackground", "Active tab background color in an active group. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.")); +registerColor("tab.unfocusedActiveBackground", TAB_ACTIVE_BACKGROUND, localize("tabUnfocusedActiveBackground", "Active tab background color in an unfocused group. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.")); +var TAB_INACTIVE_BACKGROUND = registerColor("tab.inactiveBackground", { + dark: "#2D2D2D", + light: "#ECECEC", + hcDark: null, + hcLight: null +}, localize("tabInactiveBackground", "Inactive tab background color in an active group. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.")); +registerColor("tab.unfocusedInactiveBackground", TAB_INACTIVE_BACKGROUND, localize("tabUnfocusedInactiveBackground", "Inactive tab background color in an unfocused group. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.")); +var TAB_ACTIVE_FOREGROUND = registerColor("tab.activeForeground", { + dark: Color.white, + light: "#333333", + hcDark: Color.white, + hcLight: "#292929" +}, localize("tabActiveForeground", "Active tab foreground color in an active group. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.")); +var TAB_INACTIVE_FOREGROUND = registerColor("tab.inactiveForeground", { + dark: transparent(TAB_ACTIVE_FOREGROUND, 0.5), + light: transparent(TAB_ACTIVE_FOREGROUND, 0.7), + hcDark: Color.white, + hcLight: "#292929" +}, localize("tabInactiveForeground", "Inactive tab foreground color in an active group. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.")); +registerColor("tab.unfocusedActiveForeground", { + dark: transparent(TAB_ACTIVE_FOREGROUND, 0.5), + light: transparent(TAB_ACTIVE_FOREGROUND, 0.7), + hcDark: Color.white, + hcLight: "#292929" +}, localize("tabUnfocusedActiveForeground", "Active tab foreground color in an unfocused group. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.")); +registerColor("tab.unfocusedInactiveForeground", { + dark: transparent(TAB_INACTIVE_FOREGROUND, 0.5), + light: transparent(TAB_INACTIVE_FOREGROUND, 0.5), + hcDark: Color.white, + hcLight: "#292929" +}, localize("tabUnfocusedInactiveForeground", "Inactive tab foreground color in an unfocused group. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.")); +var TAB_HOVER_BACKGROUND = registerColor("tab.hoverBackground", null, localize("tabHoverBackground", "Tab background color when hovering. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.")); +registerColor("tab.unfocusedHoverBackground", { + dark: transparent(TAB_HOVER_BACKGROUND, 0.5), + light: transparent(TAB_HOVER_BACKGROUND, 0.7), + hcDark: null, + hcLight: null +}, localize("tabUnfocusedHoverBackground", "Tab background color in an unfocused group when hovering. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.")); +var TAB_HOVER_FOREGROUND = registerColor("tab.hoverForeground", null, localize("tabHoverForeground", "Tab foreground color when hovering. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.")); +registerColor("tab.unfocusedHoverForeground", { + dark: transparent(TAB_HOVER_FOREGROUND, 0.5), + light: transparent(TAB_HOVER_FOREGROUND, 0.5), + hcDark: null, + hcLight: null +}, localize("tabUnfocusedHoverForeground", "Tab foreground color in an unfocused group when hovering. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.")); +registerColor("tab.border", { + dark: "#252526", + light: "#F3F3F3", + hcDark: contrastBorder, + hcLight: contrastBorder +}, localize("tabBorder", "Border to separate tabs from each other. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.")); +registerColor("tab.lastPinnedBorder", { + dark: treeIndentGuidesStroke, + light: treeIndentGuidesStroke, + hcDark: contrastBorder, + hcLight: contrastBorder +}, localize("lastPinnedTabBorder", "Border to separate pinned tabs from other tabs. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.")); +var TAB_ACTIVE_BORDER = registerColor("tab.activeBorder", null, localize("tabActiveBorder", "Border on the bottom of an active tab. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.")); +registerColor("tab.unfocusedActiveBorder", { + dark: transparent(TAB_ACTIVE_BORDER, 0.5), + light: transparent(TAB_ACTIVE_BORDER, 0.7), + hcDark: null, + hcLight: null +}, localize("tabActiveUnfocusedBorder", "Border on the bottom of an active tab in an unfocused group. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.")); +var TAB_ACTIVE_BORDER_TOP = registerColor("tab.activeBorderTop", { + dark: null, + light: null, + hcDark: null, + hcLight: "#B5200D" +}, localize("tabActiveBorderTop", "Border to the top of an active tab. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.")); +registerColor("tab.unfocusedActiveBorderTop", { + dark: transparent(TAB_ACTIVE_BORDER_TOP, 0.5), + light: transparent(TAB_ACTIVE_BORDER_TOP, 0.7), + hcDark: null, + hcLight: "#B5200D" +}, localize("tabActiveUnfocusedBorderTop", "Border to the top of an active tab in an unfocused group. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.")); +registerColor("tab.selectedBorderTop", TAB_ACTIVE_BORDER_TOP, localize("tabSelectedBorderTop", "Border to the top of a selected tab. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.")); +registerColor("tab.selectedBackground", TAB_ACTIVE_BACKGROUND, localize("tabSelectedBackground", "Background of a selected tab. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.")); +registerColor("tab.selectedForeground", TAB_ACTIVE_FOREGROUND, localize("tabSelectedForeground", "Foreground of a selected tab. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.")); +var TAB_HOVER_BORDER = registerColor("tab.hoverBorder", null, localize("tabHoverBorder", "Border to highlight tabs when hovering. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.")); +registerColor("tab.unfocusedHoverBorder", { + dark: transparent(TAB_HOVER_BORDER, 0.5), + light: transparent(TAB_HOVER_BORDER, 0.7), + hcDark: null, + hcLight: contrastBorder +}, localize("tabUnfocusedHoverBorder", "Border to highlight tabs in an unfocused group when hovering. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.")); +registerColor("tab.dragAndDropBorder", { + dark: TAB_ACTIVE_FOREGROUND, + light: TAB_ACTIVE_FOREGROUND, + hcDark: activeContrastBorder, + hcLight: activeContrastBorder +}, localize("tabDragAndDropBorder", "Border between tabs to indicate that a tab can be inserted between two tabs. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.")); +var TAB_ACTIVE_MODIFIED_BORDER = registerColor("tab.activeModifiedBorder", { + dark: "#3399CC", + light: "#33AAEE", + hcDark: null, + hcLight: contrastBorder +}, localize("tabActiveModifiedBorder", "Border on the top of modified active tabs in an active group. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.")); +var TAB_INACTIVE_MODIFIED_BORDER = registerColor("tab.inactiveModifiedBorder", { + dark: transparent(TAB_ACTIVE_MODIFIED_BORDER, 0.5), + light: transparent(TAB_ACTIVE_MODIFIED_BORDER, 0.5), + hcDark: Color.white, + hcLight: contrastBorder +}, localize("tabInactiveModifiedBorder", "Border on the top of modified inactive tabs in an active group. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.")); +registerColor("tab.unfocusedActiveModifiedBorder", { + dark: transparent(TAB_ACTIVE_MODIFIED_BORDER, 0.5), + light: transparent(TAB_ACTIVE_MODIFIED_BORDER, 0.7), + hcDark: Color.white, + hcLight: contrastBorder +}, localize("unfocusedActiveModifiedBorder", "Border on the top of modified active tabs in an unfocused group. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.")); +registerColor("tab.unfocusedInactiveModifiedBorder", { + dark: transparent(TAB_INACTIVE_MODIFIED_BORDER, 0.5), + light: transparent(TAB_INACTIVE_MODIFIED_BORDER, 0.5), + hcDark: Color.white, + hcLight: contrastBorder +}, localize("unfocusedINactiveModifiedBorder", "Border on the top of modified inactive tabs in an unfocused group. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.")); +registerColor("editorPane.background", editorBackground, localize("editorPaneBackground", "Background color of the editor pane visible on the left and right side of the centered editor layout.")); +registerColor("editorGroup.emptyBackground", null, localize("editorGroupEmptyBackground", "Background color of an empty editor group. Editor groups are the containers of editors.")); +registerColor("editorGroup.focusedEmptyBorder", { + dark: null, + light: null, + hcDark: focusBorder, + hcLight: focusBorder +}, localize("editorGroupFocusedEmptyBorder", "Border color of an empty editor group that is focused. Editor groups are the containers of editors.")); +registerColor("editorGroupHeader.tabsBackground", { + dark: "#252526", + light: "#F3F3F3", + hcDark: null, + hcLight: null +}, localize("tabsContainerBackground", "Background color of the editor group title header when tabs are enabled. Editor groups are the containers of editors.")); +registerColor("editorGroupHeader.tabsBorder", null, localize("tabsContainerBorder", "Border color of the editor group title header when tabs are enabled. Editor groups are the containers of editors.")); +registerColor("editorGroupHeader.noTabsBackground", editorBackground, localize("editorGroupHeaderBackground", 'Background color of the editor group title header when (`"workbench.editor.showTabs": "single"`). Editor groups are the containers of editors.')); +registerColor("editorGroupHeader.border", { + dark: null, + light: null, + hcDark: contrastBorder, + hcLight: contrastBorder +}, localize("editorTitleContainerBorder", "Border color of the editor group title header. Editor groups are the containers of editors.")); +var EDITOR_GROUP_BORDER = registerColor("editorGroup.border", { + dark: "#444444", + light: "#E7E7E7", + hcDark: contrastBorder, + hcLight: contrastBorder +}, localize("editorGroupBorder", "Color to separate multiple editor groups from each other. Editor groups are the containers of editors.")); +var EDITOR_DRAG_AND_DROP_BACKGROUND = registerColor("editorGroup.dropBackground", { + dark: Color.fromHex("#53595D").transparent(0.5), + light: Color.fromHex("#2677CB").transparent(0.18), + hcDark: null, + hcLight: Color.fromHex("#0F4A85").transparent(0.5) +}, localize("editorDragAndDropBackground", "Background color when dragging editors around. The color should have transparency so that the editor contents can still shine through.")); +registerColor("editorGroup.dropIntoPromptForeground", editorWidgetForeground, localize("editorDropIntoPromptForeground", "Foreground color of text shown over editors when dragging files. This text informs the user that they can hold shift to drop into the editor.")); +registerColor("editorGroup.dropIntoPromptBackground", editorWidgetBackground, localize("editorDropIntoPromptBackground", "Background color of text shown over editors when dragging files. This text informs the user that they can hold shift to drop into the editor.")); +registerColor("editorGroup.dropIntoPromptBorder", { + dark: null, + light: null, + hcDark: contrastBorder, + hcLight: contrastBorder +}, localize("editorDropIntoPromptBorder", "Border color of text shown over editors when dragging files. This text informs the user that they can hold shift to drop into the editor.")); +registerColor("sideBySideEditor.horizontalBorder", EDITOR_GROUP_BORDER, localize("sideBySideEditor.horizontalBorder", "Color to separate two editors from each other when shown side by side in an editor group from top to bottom.")); +registerColor("sideBySideEditor.verticalBorder", EDITOR_GROUP_BORDER, localize("sideBySideEditor.verticalBorder", "Color to separate two editors from each other when shown side by side in an editor group from left to right.")); +var PANEL_BACKGROUND = registerColor("panel.background", editorBackground, localize("panelBackground", "Panel background color. Panels are shown below the editor area and contain views like output and integrated terminal.")); +var PANEL_BORDER = registerColor("panel.border", { + dark: Color.fromHex("#808080").transparent(0.35), + light: Color.fromHex("#808080").transparent(0.35), + hcDark: contrastBorder, + hcLight: contrastBorder +}, localize("panelBorder", "Panel border color to separate the panel from the editor. Panels are shown below the editor area and contain views like output and integrated terminal.")); +var PANEL_ACTIVE_TITLE_FOREGROUND = registerColor("panelTitle.activeForeground", { + dark: "#E7E7E7", + light: "#424242", + hcDark: Color.white, + hcLight: editorForeground +}, localize("panelActiveTitleForeground", "Title color for the active panel. Panels are shown below the editor area and contain views like output and integrated terminal.")); +registerColor("panelTitle.inactiveForeground", { + dark: transparent(PANEL_ACTIVE_TITLE_FOREGROUND, 0.6), + light: transparent(PANEL_ACTIVE_TITLE_FOREGROUND, 0.75), + hcDark: Color.white, + hcLight: editorForeground +}, localize("panelInactiveTitleForeground", "Title color for the inactive panel. Panels are shown below the editor area and contain views like output and integrated terminal.")); +registerColor("panelTitle.activeBorder", { + dark: PANEL_ACTIVE_TITLE_FOREGROUND, + light: PANEL_ACTIVE_TITLE_FOREGROUND, + hcDark: contrastBorder, + hcLight: "#B5200D" +}, localize("panelActiveTitleBorder", "Border color for the active panel title. Panels are shown below the editor area and contain views like output and integrated terminal.")); +registerColor("panelInput.border", { + dark: inputBorder, + light: Color.fromHex("#ddd"), + hcDark: inputBorder, + hcLight: inputBorder +}, localize("panelInputBorder", "Input box border for inputs in the panel.")); +registerColor("panel.dropBorder", PANEL_ACTIVE_TITLE_FOREGROUND, localize("panelDragAndDropBorder", "Drag and drop feedback color for the panel titles. Panels are shown below the editor area and contain views like output and integrated terminal.")); +var PANEL_SECTION_DRAG_AND_DROP_BACKGROUND = registerColor("panelSection.dropBackground", EDITOR_DRAG_AND_DROP_BACKGROUND, localize("panelSectionDragAndDropBackground", "Drag and drop feedback color for the panel sections. The color should have transparency so that the panel sections can still shine through. Panels are shown below the editor area and contain views like output and integrated terminal. Panel sections are views nested within the panels.")); +registerColor("panelSectionHeader.background", { + dark: Color.fromHex("#808080").transparent(0.2), + light: Color.fromHex("#808080").transparent(0.2), + hcDark: null, + hcLight: null +}, localize("panelSectionHeaderBackground", "Panel section header background color. Panels are shown below the editor area and contain views like output and integrated terminal. Panel sections are views nested within the panels.")); +registerColor("panelSectionHeader.foreground", null, localize("panelSectionHeaderForeground", "Panel section header foreground color. Panels are shown below the editor area and contain views like output and integrated terminal. Panel sections are views nested within the panels.")); +registerColor("panelSectionHeader.border", contrastBorder, localize("panelSectionHeaderBorder", "Panel section header border color used when multiple views are stacked vertically in the panel. Panels are shown below the editor area and contain views like output and integrated terminal. Panel sections are views nested within the panels.")); +registerColor("panelSection.border", PANEL_BORDER, localize("panelSectionBorder", "Panel section border color used when multiple views are stacked horizontally in the panel. Panels are shown below the editor area and contain views like output and integrated terminal. Panel sections are views nested within the panels.")); +var PANEL_STICKY_SCROLL_BACKGROUND = registerColor("panelStickyScroll.background", PANEL_BACKGROUND, localize("panelStickyScrollBackground", "Background color of sticky scroll in the panel.")); +var PANEL_STICKY_SCROLL_BORDER = registerColor("panelStickyScroll.border", null, localize("panelStickyScrollBorder", "Border color of sticky scroll in the panel.")); +var PANEL_STICKY_SCROLL_SHADOW = registerColor("panelStickyScroll.shadow", scrollbarShadow, localize("panelStickyScrollShadow", "Shadow color of sticky scroll in the panel.")); +var OUTPUT_VIEW_BACKGROUND = registerColor("outputView.background", null, localize("outputViewBackground", "Output view background color.")); +registerColor("outputViewStickyScroll.background", OUTPUT_VIEW_BACKGROUND, localize("outputViewStickyScrollBackground", "Output view sticky scroll background color.")); +registerColor("banner.background", { + dark: listActiveSelectionBackground, + light: darken(listActiveSelectionBackground, 0.3), + hcDark: listActiveSelectionBackground, + hcLight: listActiveSelectionBackground +}, localize("banner.background", "Banner background color. The banner is shown under the title bar of the window.")); +registerColor("banner.foreground", listActiveSelectionForeground, localize("banner.foreground", "Banner foreground color. The banner is shown under the title bar of the window.")); +registerColor("banner.iconForeground", editorInfoForeground, localize("banner.iconForeground", "Banner icon color. The banner is shown under the title bar of the window.")); +var STATUS_BAR_FOREGROUND = registerColor("statusBar.foreground", { + dark: "#FFFFFF", + light: "#FFFFFF", + hcDark: "#FFFFFF", + hcLight: editorForeground +}, localize("statusBarForeground", "Status bar foreground color when a workspace or folder is opened. The status bar is shown in the bottom of the window.")); +registerColor("statusBar.noFolderForeground", STATUS_BAR_FOREGROUND, localize("statusBarNoFolderForeground", "Status bar foreground color when no folder is opened. The status bar is shown in the bottom of the window.")); +registerColor("statusBar.background", { + dark: "#007ACC", + light: "#007ACC", + hcDark: null, + hcLight: null +}, localize("statusBarBackground", "Status bar background color when a workspace or folder is opened. The status bar is shown in the bottom of the window.")); +registerColor("statusBar.noFolderBackground", { + dark: "#68217A", + light: "#68217A", + hcDark: null, + hcLight: null +}, localize("statusBarNoFolderBackground", "Status bar background color when no folder is opened. The status bar is shown in the bottom of the window.")); +var STATUS_BAR_BORDER = registerColor("statusBar.border", { + dark: null, + light: null, + hcDark: contrastBorder, + hcLight: contrastBorder +}, localize("statusBarBorder", "Status bar border color separating to the sidebar and editor. The status bar is shown in the bottom of the window.")); +registerColor("statusBar.focusBorder", { + dark: STATUS_BAR_FOREGROUND, + light: STATUS_BAR_FOREGROUND, + hcDark: null, + hcLight: STATUS_BAR_FOREGROUND +}, localize("statusBarFocusBorder", "Status bar border color when focused on keyboard navigation. The status bar is shown in the bottom of the window.")); +registerColor("statusBar.noFolderBorder", STATUS_BAR_BORDER, localize("statusBarNoFolderBorder", "Status bar border color separating to the sidebar and editor when no folder is opened. The status bar is shown in the bottom of the window.")); +registerColor("statusBarItem.activeBackground", { + dark: Color.white.transparent(0.18), + light: Color.white.transparent(0.18), + hcDark: Color.white.transparent(0.18), + hcLight: Color.black.transparent(0.18) +}, localize("statusBarItemActiveBackground", "Status bar item background color when clicking. The status bar is shown in the bottom of the window.")); +registerColor("statusBarItem.focusBorder", { + dark: STATUS_BAR_FOREGROUND, + light: STATUS_BAR_FOREGROUND, + hcDark: null, + hcLight: activeContrastBorder +}, localize("statusBarItemFocusBorder", "Status bar item border color when focused on keyboard navigation. The status bar is shown in the bottom of the window.")); +var STATUS_BAR_ITEM_HOVER_BACKGROUND = registerColor("statusBarItem.hoverBackground", { + dark: Color.white.transparent(0.12), + light: Color.white.transparent(0.12), + hcDark: Color.white.transparent(0.12), + hcLight: Color.black.transparent(0.12) +}, localize("statusBarItemHoverBackground", "Status bar item background color when hovering. The status bar is shown in the bottom of the window.")); +var STATUS_BAR_ITEM_HOVER_FOREGROUND = registerColor("statusBarItem.hoverForeground", STATUS_BAR_FOREGROUND, localize("statusBarItemHoverForeground", "Status bar item foreground color when hovering. The status bar is shown in the bottom of the window.")); +registerColor("statusBarItem.compactHoverBackground", { + dark: Color.white.transparent(0.2), + light: Color.white.transparent(0.2), + hcDark: Color.white.transparent(0.2), + hcLight: Color.black.transparent(0.2) +}, localize("statusBarItemCompactHoverBackground", "Status bar item background color when hovering an item that contains two hovers. The status bar is shown in the bottom of the window.")); +registerColor("statusBarItem.prominentForeground", STATUS_BAR_FOREGROUND, localize("statusBarProminentItemForeground", "Status bar prominent items foreground color. Prominent items stand out from other status bar entries to indicate importance. The status bar is shown in the bottom of the window.")); +registerColor("statusBarItem.prominentBackground", Color.black.transparent(0.5), localize("statusBarProminentItemBackground", "Status bar prominent items background color. Prominent items stand out from other status bar entries to indicate importance. The status bar is shown in the bottom of the window.")); +registerColor("statusBarItem.prominentHoverForeground", STATUS_BAR_ITEM_HOVER_FOREGROUND, localize("statusBarProminentItemHoverForeground", "Status bar prominent items foreground color when hovering. Prominent items stand out from other status bar entries to indicate importance. The status bar is shown in the bottom of the window.")); +registerColor("statusBarItem.prominentHoverBackground", { + dark: Color.black.transparent(0.3), + light: Color.black.transparent(0.3), + hcDark: Color.black.transparent(0.3), + hcLight: null +}, localize("statusBarProminentItemHoverBackground", "Status bar prominent items background color when hovering. Prominent items stand out from other status bar entries to indicate importance. The status bar is shown in the bottom of the window.")); +registerColor("statusBarItem.errorBackground", { + dark: darken(errorForeground, 0.4), + light: darken(errorForeground, 0.4), + hcDark: null, + hcLight: "#B5200D" +}, localize("statusBarErrorItemBackground", "Status bar error items background color. Error items stand out from other status bar entries to indicate error conditions. The status bar is shown in the bottom of the window.")); +registerColor("statusBarItem.errorForeground", Color.white, localize("statusBarErrorItemForeground", "Status bar error items foreground color. Error items stand out from other status bar entries to indicate error conditions. The status bar is shown in the bottom of the window.")); +registerColor("statusBarItem.errorHoverForeground", STATUS_BAR_ITEM_HOVER_FOREGROUND, localize("statusBarErrorItemHoverForeground", "Status bar error items foreground color when hovering. Error items stand out from other status bar entries to indicate error conditions. The status bar is shown in the bottom of the window.")); +registerColor("statusBarItem.errorHoverBackground", STATUS_BAR_ITEM_HOVER_BACKGROUND, localize("statusBarErrorItemHoverBackground", "Status bar error items background color when hovering. Error items stand out from other status bar entries to indicate error conditions. The status bar is shown in the bottom of the window.")); +registerColor("statusBarItem.warningBackground", { + dark: darken(editorWarningForeground, 0.4), + light: darken(editorWarningForeground, 0.4), + hcDark: null, + hcLight: "#895503" +}, localize("statusBarWarningItemBackground", "Status bar warning items background color. Warning items stand out from other status bar entries to indicate warning conditions. The status bar is shown in the bottom of the window.")); +registerColor("statusBarItem.warningForeground", Color.white, localize("statusBarWarningItemForeground", "Status bar warning items foreground color. Warning items stand out from other status bar entries to indicate warning conditions. The status bar is shown in the bottom of the window.")); +registerColor("statusBarItem.warningHoverForeground", STATUS_BAR_ITEM_HOVER_FOREGROUND, localize("statusBarWarningItemHoverForeground", "Status bar warning items foreground color when hovering. Warning items stand out from other status bar entries to indicate warning conditions. The status bar is shown in the bottom of the window.")); +registerColor("statusBarItem.warningHoverBackground", STATUS_BAR_ITEM_HOVER_BACKGROUND, localize("statusBarWarningItemHoverBackground", "Status bar warning items background color when hovering. Warning items stand out from other status bar entries to indicate warning conditions. The status bar is shown in the bottom of the window.")); +registerColor("activityBar.background", { + dark: "#333333", + light: "#2C2C2C", + hcDark: "#000000", + hcLight: "#FFFFFF" +}, localize("activityBarBackground", "Activity bar background color. The activity bar is showing on the far left or right and allows to switch between views of the side bar.")); +var ACTIVITY_BAR_FOREGROUND = registerColor("activityBar.foreground", { + dark: Color.white, + light: Color.white, + hcDark: Color.white, + hcLight: editorForeground +}, localize("activityBarForeground", "Activity bar item foreground color when it is active. The activity bar is showing on the far left or right and allows to switch between views of the side bar.")); +registerColor("activityBar.inactiveForeground", { + dark: transparent(ACTIVITY_BAR_FOREGROUND, 0.4), + light: transparent(ACTIVITY_BAR_FOREGROUND, 0.4), + hcDark: Color.white, + hcLight: editorForeground +}, localize("activityBarInActiveForeground", "Activity bar item foreground color when it is inactive. The activity bar is showing on the far left or right and allows to switch between views of the side bar.")); +registerColor("activityBar.border", { + dark: null, + light: null, + hcDark: contrastBorder, + hcLight: contrastBorder +}, localize("activityBarBorder", "Activity bar border color separating to the side bar. The activity bar is showing on the far left or right and allows to switch between views of the side bar.")); +registerColor("activityBar.activeBorder", { + dark: ACTIVITY_BAR_FOREGROUND, + light: ACTIVITY_BAR_FOREGROUND, + hcDark: contrastBorder, + hcLight: contrastBorder +}, localize("activityBarActiveBorder", "Activity bar border color for the active item. The activity bar is showing on the far left or right and allows to switch between views of the side bar.")); +registerColor("activityBar.activeFocusBorder", { + dark: null, + light: null, + hcDark: null, + hcLight: "#B5200D" +}, localize("activityBarActiveFocusBorder", "Activity bar focus border color for the active item. The activity bar is showing on the far left or right and allows to switch between views of the side bar.")); +registerColor("activityBar.activeBackground", null, localize("activityBarActiveBackground", "Activity bar background color for the active item. The activity bar is showing on the far left or right and allows to switch between views of the side bar.")); +registerColor("activityBar.dropBorder", { + dark: ACTIVITY_BAR_FOREGROUND, + light: ACTIVITY_BAR_FOREGROUND, + hcDark: null, + hcLight: null +}, localize("activityBarDragAndDropBorder", "Drag and drop feedback color for the activity bar items. The activity bar is showing on the far left or right and allows to switch between views of the side bar.")); +var ACTIVITY_BAR_BADGE_BACKGROUND = registerColor("activityBarBadge.background", { + dark: "#007ACC", + light: "#007ACC", + hcDark: "#000000", + hcLight: "#0F4A85" +}, localize("activityBarBadgeBackground", "Activity notification badge background color. The activity bar is showing on the far left or right and allows to switch between views of the side bar.")); +var ACTIVITY_BAR_BADGE_FOREGROUND = registerColor("activityBarBadge.foreground", Color.white, localize("activityBarBadgeForeground", "Activity notification badge foreground color. The activity bar is showing on the far left or right and allows to switch between views of the side bar.")); +var ACTIVITY_BAR_TOP_FOREGROUND = registerColor("activityBarTop.foreground", { + dark: "#E7E7E7", + light: "#424242", + hcDark: Color.white, + hcLight: editorForeground +}, localize("activityBarTop", "Active foreground color of the item in the Activity bar when it is on top / bottom. The activity allows to switch between views of the side bar.")); +registerColor("activityBarTop.activeBorder", { + dark: ACTIVITY_BAR_TOP_FOREGROUND, + light: ACTIVITY_BAR_TOP_FOREGROUND, + hcDark: contrastBorder, + hcLight: "#B5200D" +}, localize("activityBarTopActiveFocusBorder", "Focus border color for the active item in the Activity bar when it is on top / bottom. The activity allows to switch between views of the side bar.")); +registerColor("activityBarTop.activeBackground", null, localize("activityBarTopActiveBackground", "Background color for the active item in the Activity bar when it is on top / bottom. The activity allows to switch between views of the side bar.")); +registerColor("activityBarTop.inactiveForeground", { + dark: transparent(ACTIVITY_BAR_TOP_FOREGROUND, 0.6), + light: transparent(ACTIVITY_BAR_TOP_FOREGROUND, 0.75), + hcDark: Color.white, + hcLight: editorForeground +}, localize("activityBarTopInActiveForeground", "Inactive foreground color of the item in the Activity bar when it is on top / bottom. The activity allows to switch between views of the side bar.")); +registerColor("activityBarTop.dropBorder", ACTIVITY_BAR_TOP_FOREGROUND, localize("activityBarTopDragAndDropBorder", "Drag and drop feedback color for the items in the Activity bar when it is on top / bottom. The activity allows to switch between views of the side bar.")); +registerColor("activityBarTop.background", null, localize("activityBarTopBackground", "Background color of the activity bar when set to top / bottom.")); +registerColor("profileBadge.background", { + dark: "#4D4D4D", + light: "#C4C4C4", + hcDark: Color.white, + hcLight: Color.black +}, localize("profileBadgeBackground", "Profile badge background color. The profile badge shows on top of the settings gear icon in the activity bar.")); +registerColor("profileBadge.foreground", { + dark: Color.white, + light: "#333333", + hcDark: Color.black, + hcLight: Color.white +}, localize("profileBadgeForeground", "Profile badge foreground color. The profile badge shows on top of the settings gear icon in the activity bar.")); +registerColor("statusBarItem.remoteBackground", ACTIVITY_BAR_BADGE_BACKGROUND, localize("statusBarItemHostBackground", "Background color for the remote indicator on the status bar.")); +var STATUS_BAR_REMOTE_ITEM_FOREGROUND = registerColor("statusBarItem.remoteForeground", ACTIVITY_BAR_BADGE_FOREGROUND, localize("statusBarItemHostForeground", "Foreground color for the remote indicator on the status bar.")); +registerColor("statusBarItem.remoteHoverForeground", STATUS_BAR_ITEM_HOVER_FOREGROUND, localize("statusBarRemoteItemHoverForeground", "Foreground color for the remote indicator on the status bar when hovering.")); +registerColor("statusBarItem.remoteHoverBackground", { + dark: STATUS_BAR_ITEM_HOVER_BACKGROUND, + light: STATUS_BAR_ITEM_HOVER_BACKGROUND, + hcDark: STATUS_BAR_ITEM_HOVER_BACKGROUND, + hcLight: null +}, localize("statusBarRemoteItemHoverBackground", "Background color for the remote indicator on the status bar when hovering.")); +registerColor("statusBarItem.offlineBackground", "#6c1717", localize("statusBarItemOfflineBackground", "Status bar item background color when the workbench is offline.")); +registerColor("statusBarItem.offlineForeground", STATUS_BAR_REMOTE_ITEM_FOREGROUND, localize("statusBarItemOfflineForeground", "Status bar item foreground color when the workbench is offline.")); +registerColor("statusBarItem.offlineHoverForeground", STATUS_BAR_ITEM_HOVER_FOREGROUND, localize("statusBarOfflineItemHoverForeground", "Status bar item foreground hover color when the workbench is offline.")); +registerColor("statusBarItem.offlineHoverBackground", { + dark: STATUS_BAR_ITEM_HOVER_BACKGROUND, + light: STATUS_BAR_ITEM_HOVER_BACKGROUND, + hcDark: STATUS_BAR_ITEM_HOVER_BACKGROUND, + hcLight: null +}, localize("statusBarOfflineItemHoverBackground", "Status bar item background hover color when the workbench is offline.")); +registerColor("extensionBadge.remoteBackground", ACTIVITY_BAR_BADGE_BACKGROUND, localize("extensionBadge.remoteBackground", "Background color for the remote badge in the extensions view.")); +registerColor("extensionBadge.remoteForeground", ACTIVITY_BAR_BADGE_FOREGROUND, localize("extensionBadge.remoteForeground", "Foreground color for the remote badge in the extensions view.")); +var SIDE_BAR_BACKGROUND = registerColor("sideBar.background", { + dark: "#252526", + light: "#F3F3F3", + hcDark: "#000000", + hcLight: "#FFFFFF" +}, localize("sideBarBackground", "Side bar background color. The side bar is the container for views like explorer and search.")); +var SIDE_BAR_FOREGROUND = registerColor("sideBar.foreground", null, localize("sideBarForeground", "Side bar foreground color. The side bar is the container for views like explorer and search.")); +registerColor("sideBar.border", { + dark: null, + light: null, + hcDark: contrastBorder, + hcLight: contrastBorder +}, localize("sideBarBorder", "Side bar border color on the side separating to the editor. The side bar is the container for views like explorer and search.")); +registerColor("sideBarTitle.background", SIDE_BAR_BACKGROUND, localize("sideBarTitleBackground", "Side bar title background color. The side bar is the container for views like explorer and search.")); +registerColor("sideBarTitle.foreground", SIDE_BAR_FOREGROUND, localize("sideBarTitleForeground", "Side bar title foreground color. The side bar is the container for views like explorer and search.")); +var SIDE_BAR_DRAG_AND_DROP_BACKGROUND = registerColor("sideBar.dropBackground", EDITOR_DRAG_AND_DROP_BACKGROUND, localize("sideBarDragAndDropBackground", "Drag and drop feedback color for the side bar sections. The color should have transparency so that the side bar sections can still shine through. The side bar is the container for views like explorer and search. Side bar sections are views nested within the side bar.")); +registerColor("sideBarSectionHeader.background", { + dark: Color.fromHex("#808080").transparent(0.2), + light: Color.fromHex("#808080").transparent(0.2), + hcDark: null, + hcLight: null +}, localize("sideBarSectionHeaderBackground", "Side bar section header background color. The side bar is the container for views like explorer and search. Side bar sections are views nested within the side bar.")); +registerColor("sideBarSectionHeader.foreground", SIDE_BAR_FOREGROUND, localize("sideBarSectionHeaderForeground", "Side bar section header foreground color. The side bar is the container for views like explorer and search. Side bar sections are views nested within the side bar.")); +var SIDE_BAR_SECTION_HEADER_BORDER = registerColor("sideBarSectionHeader.border", contrastBorder, localize("sideBarSectionHeaderBorder", "Side bar section header border color. The side bar is the container for views like explorer and search. Side bar sections are views nested within the side bar.")); +registerColor("sideBarActivityBarTop.border", SIDE_BAR_SECTION_HEADER_BORDER, localize("sideBarActivityBarTopBorder", "Border color between the activity bar at the top/bottom and the views.")); +var SIDE_BAR_STICKY_SCROLL_BACKGROUND = registerColor("sideBarStickyScroll.background", SIDE_BAR_BACKGROUND, localize("sideBarStickyScrollBackground", "Background color of sticky scroll in the side bar.")); +var SIDE_BAR_STICKY_SCROLL_BORDER = registerColor("sideBarStickyScroll.border", null, localize("sideBarStickyScrollBorder", "Border color of sticky scroll in the side bar.")); +var SIDE_BAR_STICKY_SCROLL_SHADOW = registerColor("sideBarStickyScroll.shadow", scrollbarShadow, localize("sideBarStickyScrollShadow", "Shadow color of sticky scroll in the side bar.")); +var TITLE_BAR_ACTIVE_FOREGROUND = registerColor("titleBar.activeForeground", { + dark: "#CCCCCC", + light: "#333333", + hcDark: "#FFFFFF", + hcLight: "#292929" +}, localize("titleBarActiveForeground", "Title bar foreground when the window is active.")); +var TITLE_BAR_INACTIVE_FOREGROUND = registerColor("titleBar.inactiveForeground", { + dark: transparent(TITLE_BAR_ACTIVE_FOREGROUND, 0.6), + light: transparent(TITLE_BAR_ACTIVE_FOREGROUND, 0.6), + hcDark: null, + hcLight: "#292929" +}, localize("titleBarInactiveForeground", "Title bar foreground when the window is inactive.")); +var TITLE_BAR_ACTIVE_BACKGROUND = registerColor("titleBar.activeBackground", { + dark: "#3C3C3C", + light: "#DDDDDD", + hcDark: "#000000", + hcLight: "#FFFFFF" +}, localize("titleBarActiveBackground", "Title bar background when the window is active.")); +registerColor("titleBar.inactiveBackground", { + dark: transparent(TITLE_BAR_ACTIVE_BACKGROUND, 0.6), + light: transparent(TITLE_BAR_ACTIVE_BACKGROUND, 0.6), + hcDark: null, + hcLight: null +}, localize("titleBarInactiveBackground", "Title bar background when the window is inactive.")); +registerColor("titleBar.border", { + dark: null, + light: null, + hcDark: contrastBorder, + hcLight: contrastBorder +}, localize("titleBarBorder", "Title bar border color.")); +var MENUBAR_SELECTION_FOREGROUND = registerColor("menubar.selectionForeground", TITLE_BAR_ACTIVE_FOREGROUND, localize("menubarSelectionForeground", "Foreground color of the selected menu item in the menubar.")); +var MENUBAR_SELECTION_BACKGROUND = registerColor("menubar.selectionBackground", { + dark: toolbarHoverBackground, + light: toolbarHoverBackground, + hcDark: null, + hcLight: null +}, localize("menubarSelectionBackground", "Background color of the selected menu item in the menubar.")); +registerColor("menubar.selectionBorder", { + dark: null, + light: null, + hcDark: activeContrastBorder, + hcLight: activeContrastBorder +}, localize("menubarSelectionBorder", "Border color of the selected menu item in the menubar.")); +registerColor( + "commandCenter.foreground", + TITLE_BAR_ACTIVE_FOREGROUND, + localize("commandCenter-foreground", "Foreground color of the command center"), + false +); +registerColor( + "commandCenter.activeForeground", + MENUBAR_SELECTION_FOREGROUND, + localize("commandCenter-activeForeground", "Active foreground color of the command center"), + false +); +registerColor( + "commandCenter.inactiveForeground", + TITLE_BAR_INACTIVE_FOREGROUND, + localize("commandCenter-inactiveForeground", "Foreground color of the command center when the window is inactive"), + false +); +registerColor( + "commandCenter.background", + { dark: Color.white.transparent(0.05), hcDark: null, light: Color.black.transparent(0.05), hcLight: null }, + localize("commandCenter-background", "Background color of the command center"), + false +); +registerColor( + "commandCenter.activeBackground", + { dark: Color.white.transparent(0.08), hcDark: MENUBAR_SELECTION_BACKGROUND, light: Color.black.transparent(0.08), hcLight: MENUBAR_SELECTION_BACKGROUND }, + localize("commandCenter-activeBackground", "Active background color of the command center"), + false +); +registerColor( + "commandCenter.border", + { dark: transparent(TITLE_BAR_ACTIVE_FOREGROUND, 0.2), hcDark: contrastBorder, light: transparent(TITLE_BAR_ACTIVE_FOREGROUND, 0.2), hcLight: contrastBorder }, + localize("commandCenter-border", "Border color of the command center"), + false +); +registerColor( + "commandCenter.activeBorder", + { dark: transparent(TITLE_BAR_ACTIVE_FOREGROUND, 0.3), hcDark: TITLE_BAR_ACTIVE_FOREGROUND, light: transparent(TITLE_BAR_ACTIVE_FOREGROUND, 0.3), hcLight: TITLE_BAR_ACTIVE_FOREGROUND }, + localize("commandCenter-activeBorder", "Active border color of the command center"), + false +); +registerColor( + "commandCenter.inactiveBorder", + transparent(TITLE_BAR_INACTIVE_FOREGROUND, 0.25), + localize("commandCenter-inactiveBorder", "Border color of the command center when the window is inactive"), + false +); +registerColor("notificationCenter.border", { + dark: widgetBorder, + light: widgetBorder, + hcDark: contrastBorder, + hcLight: contrastBorder +}, localize("notificationCenterBorder", "Notifications center border color. Notifications slide in from the bottom right of the window.")); +registerColor("notificationToast.border", { + dark: widgetBorder, + light: widgetBorder, + hcDark: contrastBorder, + hcLight: contrastBorder +}, localize("notificationToastBorder", "Notification toast border color. Notifications slide in from the bottom right of the window.")); +registerColor("notifications.foreground", editorWidgetForeground, localize("notificationsForeground", "Notifications foreground color. Notifications slide in from the bottom right of the window.")); +var NOTIFICATIONS_BACKGROUND = registerColor("notifications.background", editorWidgetBackground, localize("notificationsBackground", "Notifications background color. Notifications slide in from the bottom right of the window.")); +registerColor("notificationLink.foreground", textLinkForeground, localize("notificationsLink", "Notification links foreground color. Notifications slide in from the bottom right of the window.")); +registerColor("notificationCenterHeader.foreground", null, localize("notificationCenterHeaderForeground", "Notifications center header foreground color. Notifications slide in from the bottom right of the window.")); +var NOTIFICATIONS_CENTER_HEADER_BACKGROUND = registerColor("notificationCenterHeader.background", { + dark: lighten(NOTIFICATIONS_BACKGROUND, 0.3), + light: darken(NOTIFICATIONS_BACKGROUND, 0.05), + hcDark: NOTIFICATIONS_BACKGROUND, + hcLight: NOTIFICATIONS_BACKGROUND +}, localize("notificationCenterHeaderBackground", "Notifications center header background color. Notifications slide in from the bottom right of the window.")); +registerColor("notifications.border", NOTIFICATIONS_CENTER_HEADER_BACKGROUND, localize("notificationsBorder", "Notifications border color separating from other notifications in the notifications center. Notifications slide in from the bottom right of the window.")); +registerColor("notificationsErrorIcon.foreground", editorErrorForeground, localize("notificationsErrorIconForeground", "The color used for the icon of error notifications. Notifications slide in from the bottom right of the window.")); +registerColor("notificationsWarningIcon.foreground", editorWarningForeground, localize("notificationsWarningIconForeground", "The color used for the icon of warning notifications. Notifications slide in from the bottom right of the window.")); +registerColor("notificationsInfoIcon.foreground", editorInfoForeground, localize("notificationsInfoIconForeground", "The color used for the icon of info notifications. Notifications slide in from the bottom right of the window.")); +registerColor("window.activeBorder", { + dark: null, + light: null, + hcDark: contrastBorder, + hcLight: contrastBorder +}, localize("windowActiveBorder", "The color used for the border of the window when it is active. Only supported in the macOS and Linux desktop client when using the custom title bar.")); +registerColor("window.inactiveBorder", { + dark: null, + light: null, + hcDark: contrastBorder, + hcLight: contrastBorder +}, localize("windowInactiveBorder", "The color used for the border of the window when it is inactive. Only supported in the macOS and Linux desktop client when using the custom title bar.")); + +// ../../../../browser/parts/views/viewPane.ts +var VIEWPANE_FILTER_ACTION = new Action("viewpane.action.filter"); +var viewPaneContainerExpandedIcon = registerIcon("view-pane-container-expanded", Codicon.chevronDown, localize("viewPaneContainerExpandedIcon", "Icon for an expanded view pane container.")); +var viewPaneContainerCollapsedIcon = registerIcon("view-pane-container-collapsed", Codicon.chevronRight, localize("viewPaneContainerCollapsedIcon", "Icon for a collapsed view pane container.")); +var viewsRegistry = Registry.as(Extensions5.ViewsRegistry); +var ViewWelcomeController = class { + constructor(container, delegate, instantiationService, openerService, telemetryService, contextKeyService, lifecycleService) { + this.container = container; + this.delegate = delegate; + this.instantiationService = instantiationService; + this.openerService = openerService; + this.telemetryService = telemetryService; + this.contextKeyService = contextKeyService; + this.items = []; + this._enabled = false; + this.disposables = new DisposableStore(); + this.enabledDisposables = this.disposables.add(new DisposableStore()); + this.renderDisposables = this.disposables.add(new DisposableStore()); + this.disposables.add(Event.runAndSubscribe(this.delegate.onDidChangeViewWelcomeState, () => this.onDidChangeViewWelcomeState())); + this.disposables.add(lifecycleService.onWillShutdown(() => this.dispose())); + } + get enabled() { + return this._enabled; + } + layout(height, width) { + if (!this._enabled) { + return; + } + this.element.style.height = `${height}px`; + this.element.style.width = `${width}px`; + this.element.classList.toggle("wide", width > 640); + this.scrollableElement.scanDomNode(); + } + focus() { + if (!this._enabled) { + return; + } + this.element.focus(); + } + onDidChangeViewWelcomeState() { + const enabled = this.delegate.shouldShowWelcome(); + if (this._enabled === enabled) { + return; + } + this._enabled = enabled; + if (!enabled) { + this.enabledDisposables.clear(); + return; + } + this.container.classList.add("welcome"); + const viewWelcomeContainer = append(this.container, $(".welcome-view")); + this.element = $(".welcome-view-content", { tabIndex: 0 }); + this.scrollableElement = new DomScrollableElement(this.element, { alwaysConsumeMouseWheel: true, horizontal: 2 /* Hidden */, vertical: 3 /* Visible */ }); + append(viewWelcomeContainer, this.scrollableElement.getDomNode()); + this.enabledDisposables.add(toDisposable(() => { + this.container.classList.remove("welcome"); + this.scrollableElement.dispose(); + viewWelcomeContainer.remove(); + this.scrollableElement = void 0; + this.element = void 0; + })); + this.contextKeyService.onDidChangeContext(this.onDidChangeContext, this, this.enabledDisposables); + Event.chain(viewsRegistry.onDidChangeViewWelcomeContent, ($4) => $4.filter((id2) => id2 === this.delegate.id))(this.onDidChangeViewWelcomeContent, this, this.enabledDisposables); + this.onDidChangeViewWelcomeContent(); + } + onDidChangeViewWelcomeContent() { + const descriptors = viewsRegistry.getViewWelcomeContent(this.delegate.id); + this.items = []; + for (const descriptor of descriptors) { + if (descriptor.when === "default") { + this.defaultItem = { descriptor, visible: true }; + } else { + const visible = descriptor.when ? this.contextKeyService.contextMatchesRules(descriptor.when) : true; + this.items.push({ descriptor, visible }); + } + } + this.render(); + } + onDidChangeContext() { + let didChange = false; + for (const item of this.items) { + if (!item.descriptor.when || item.descriptor.when === "default") { + continue; + } + const visible = this.contextKeyService.contextMatchesRules(item.descriptor.when); + if (item.visible === visible) { + continue; + } + item.visible = visible; + didChange = true; + } + if (didChange) { + this.render(); + } + } + render() { + this.renderDisposables.clear(); + this.element.innerText = ""; + const contents = this.getContentDescriptors(); + if (contents.length === 0) { + this.container.classList.remove("welcome"); + this.scrollableElement.scanDomNode(); + return; + } + for (const { content, precondition } of contents) { + const lines = content.split("\n"); + for (let line of lines) { + line = line.trim(); + if (!line) { + continue; + } + const linkedText = parseLinkedText(line); + if (linkedText.nodes.length === 1 && typeof linkedText.nodes[0] !== "string") { + const node = linkedText.nodes[0]; + const buttonContainer = append(this.element, $(".button-container")); + const button = new Button(buttonContainer, { title: node.title, supportIcons: true, ...defaultButtonStyles }); + button.label = node.label; + button.onDidClick((_) => { + this.telemetryService.publicLog2("views.welcomeAction", { viewId: this.delegate.id, uri: node.href }); + this.openerService.open(node.href, { allowCommands: true }); + }, null, this.renderDisposables); + this.renderDisposables.add(button); + if (precondition) { + const updateEnablement = () => button.enabled = this.contextKeyService.contextMatchesRules(precondition); + updateEnablement(); + const keys = new Set(precondition.keys()); + const onDidChangeContext = Event.filter(this.contextKeyService.onDidChangeContext, (e) => e.affectsSome(keys)); + onDidChangeContext(updateEnablement, null, this.renderDisposables); + } + } else { + const p = append(this.element, $("p")); + for (const node of linkedText.nodes) { + if (typeof node === "string") { + append(p, document.createTextNode(node)); + } else { + const link = this.renderDisposables.add(this.instantiationService.createInstance(Link, p, node, {})); + if (precondition && node.href.startsWith("command:")) { + const updateEnablement = () => link.enabled = this.contextKeyService.contextMatchesRules(precondition); + updateEnablement(); + const keys = new Set(precondition.keys()); + const onDidChangeContext = Event.filter(this.contextKeyService.onDidChangeContext, (e) => e.affectsSome(keys)); + onDidChangeContext(updateEnablement, null, this.renderDisposables); + } + } + } + } + } + } + this.container.classList.add("welcome"); + this.scrollableElement.scanDomNode(); + } + getContentDescriptors() { + const visibleItems = this.items.filter((v) => v.visible); + if (visibleItems.length === 0 && this.defaultItem) { + return [this.defaultItem.descriptor]; + } + return visibleItems.map((v) => v.descriptor); + } + dispose() { + this.disposables.dispose(); + } +}; +ViewWelcomeController = __decorateClass([ + __decorateParam(2, IInstantiationService), + __decorateParam(3, IOpenerService), + __decorateParam(4, ITelemetryService), + __decorateParam(5, IContextKeyService), + __decorateParam(6, ILifecycleService) +], ViewWelcomeController); +var ViewPane = class extends Pane { + constructor(options2, keybindingService, contextMenuService, configurationService, contextKeyService, viewDescriptorService, instantiationService, openerService, themeService, telemetryService, hoverService, accessibleViewInformationService) { + super({ ...options2, ...{ orientation: viewDescriptorService.getViewLocationById(options2.id) === 1 /* Panel */ ? 1 /* HORIZONTAL */ : 0 /* VERTICAL */ } }); + this.keybindingService = keybindingService; + this.contextMenuService = contextMenuService; + this.configurationService = configurationService; + this.contextKeyService = contextKeyService; + this.viewDescriptorService = viewDescriptorService; + this.instantiationService = instantiationService; + this.openerService = openerService; + this.themeService = themeService; + this.telemetryService = telemetryService; + this.hoverService = hoverService; + this.accessibleViewInformationService = accessibleViewInformationService; + this._onDidFocus = this._register(new Emitter()); + this.onDidFocus = this._onDidFocus.event; + this._onDidBlur = this._register(new Emitter()); + this.onDidBlur = this._onDidBlur.event; + this._onDidChangeBodyVisibility = this._register(new Emitter()); + this.onDidChangeBodyVisibility = this._onDidChangeBodyVisibility.event; + this._onDidChangeTitleArea = this._register(new Emitter()); + this.onDidChangeTitleArea = this._onDidChangeTitleArea.event; + this._onDidChangeViewWelcomeState = this._register(new Emitter()); + this.onDidChangeViewWelcomeState = this._onDidChangeViewWelcomeState.event; + this._isVisible = false; + this.id = options2.id; + this._title = options2.title; + this._titleDescription = options2.titleDescription; + this._singleViewPaneContainerTitle = options2.singleViewPaneContainerTitle; + this.showActions = options2.showActions ?? 0 /* Default */; + this.scopedContextKeyService = this._register(contextKeyService.createScoped(this.element)); + this.scopedContextKeyService.createKey("view", this.id); + const viewLocationKey = this.scopedContextKeyService.createKey("viewLocation", ViewContainerLocationToString(viewDescriptorService.getViewLocationById(this.id))); + this._register(Event.filter(viewDescriptorService.onDidChangeLocation, (e) => e.views.some((view) => view.id === this.id))(() => viewLocationKey.set(ViewContainerLocationToString(viewDescriptorService.getViewLocationById(this.id))))); + const childInstantiationService = this._register(this.instantiationService.createChild(new ServiceCollection([IContextKeyService, this.scopedContextKeyService]))); + this.menuActions = this._register(childInstantiationService.createInstance(CompositeMenuActions, options2.titleMenuId ?? MenuId.ViewTitle, MenuId.ViewTitleContext, { shouldForwardArgs: !options2.donotForwardArgs, renderShortTitle: true })); + this._register(this.menuActions.onDidChange(() => this.updateActions())); + } + static { + this.AlwaysShowActionsConfig = "workbench.view.alwaysShowHeaderActions"; + } + get title() { + return this._title; + } + get titleDescription() { + return this._titleDescription; + } + get singleViewPaneContainerTitle() { + return this._singleViewPaneContainerTitle; + } + get headerVisible() { + return super.headerVisible; + } + set headerVisible(visible) { + super.headerVisible = visible; + this.element.classList.toggle("merged-header", !visible); + } + setVisible(visible) { + if (this._isVisible !== visible) { + this._isVisible = visible; + if (this.isExpanded()) { + this._onDidChangeBodyVisibility.fire(visible); + } + } + } + isVisible() { + return this._isVisible; + } + isBodyVisible() { + return this._isVisible && this.isExpanded(); + } + setExpanded(expanded) { + const changed = super.setExpanded(expanded); + if (changed) { + this._onDidChangeBodyVisibility.fire(expanded); + } + this.updateTwistyIcon(); + return changed; + } + render() { + super.render(); + const focusTracker = trackFocus(this.element); + this._register(focusTracker); + this._register(focusTracker.onDidFocus(() => this._onDidFocus.fire())); + this._register(focusTracker.onDidBlur(() => this._onDidBlur.fire())); + } + renderHeader(container) { + this.headerContainer = container; + this.twistiesContainer = append(container, $(`.twisty-container${ThemeIcon.asCSSSelector(this.getTwistyIcon(this.isExpanded()))}`)); + this.renderHeaderTitle(container, this.title); + const actions = append(container, $(".actions")); + actions.classList.toggle("show-always", this.showActions === 2 /* Always */); + actions.classList.toggle("show-expanded", this.showActions === 1 /* WhenExpanded */); + this.toolbar = this.instantiationService.createInstance(WorkbenchToolBar, actions, { + orientation: 0 /* HORIZONTAL */, + actionViewItemProvider: (action, options2) => this.getActionViewItem(action, options2), + ariaLabel: localize("viewToolbarAriaLabel", "{0} actions", this.title), + getKeyBinding: (action) => this.keybindingService.lookupKeybinding(action.id), + renderDropdownAsChildElement: true, + actionRunner: this.getActionRunner(), + resetMenu: this.menuActions.menuId + }); + this._register(this.toolbar); + this.setActions(); + this._register(addDisposableListener(actions, EventType.CLICK, (e) => e.preventDefault())); + const viewContainerModel = this.viewDescriptorService.getViewContainerByViewId(this.id); + if (viewContainerModel) { + this._register(this.viewDescriptorService.getViewContainerModel(viewContainerModel).onDidChangeContainerInfo(({ title }) => this.updateTitle(this.title))); + } else { + console.error(`View container model not found for view ${this.id}`); + } + const onDidRelevantConfigurationChange = Event.filter(this.configurationService.onDidChangeConfiguration, (e) => e.affectsConfiguration(ViewPane.AlwaysShowActionsConfig)); + this._register(onDidRelevantConfigurationChange(this.updateActionsVisibility, this)); + this.updateActionsVisibility(); + } + updateHeader() { + super.updateHeader(); + this.updateTwistyIcon(); + } + updateTwistyIcon() { + if (this.twistiesContainer) { + this.twistiesContainer.classList.remove(...ThemeIcon.asClassNameArray(this.getTwistyIcon(!this._expanded))); + this.twistiesContainer.classList.add(...ThemeIcon.asClassNameArray(this.getTwistyIcon(this._expanded))); + } + } + getTwistyIcon(expanded) { + return expanded ? viewPaneContainerExpandedIcon : viewPaneContainerCollapsedIcon; + } + style(styles) { + super.style(styles); + const icon = this.getIcon(); + if (this.iconContainer) { + const fgColor = asCssValueWithDefault(styles.headerForeground, asCssVariable(foreground)); + if (URI.isUri(icon)) { + this.iconContainer.style.backgroundColor = fgColor; + this.iconContainer.style.color = ""; + } else { + this.iconContainer.style.color = fgColor; + this.iconContainer.style.backgroundColor = ""; + } + } + } + getIcon() { + return this.viewDescriptorService.getViewDescriptorById(this.id)?.containerIcon || defaultViewIcon; + } + renderHeaderTitle(container, title) { + this.iconContainer = append(container, $(".icon", void 0)); + const icon = this.getIcon(); + let cssClass = void 0; + if (URI.isUri(icon)) { + cssClass = `view-${this.id.replace(/[\.\:]/g, "-")}`; + const iconClass = `.pane-header .icon.${cssClass}`; + createCSSRule(iconClass, ` + mask: ${asCSSUrl(icon)} no-repeat 50% 50%; + mask-size: 24px; + -webkit-mask: ${asCSSUrl(icon)} no-repeat 50% 50%; + -webkit-mask-size: 16px; + `); + } else if (ThemeIcon.isThemeIcon(icon)) { + cssClass = ThemeIcon.asClassName(icon); + } + if (cssClass) { + this.iconContainer.classList.add(...cssClass.split(" ")); + } + const calculatedTitle = this.calculateTitle(title); + this.titleContainer = append(container, $("h3.title", {}, calculatedTitle)); + this.titleContainerHover = this._register(this.hoverService.setupManagedHover(getDefaultHoverDelegate("mouse"), this.titleContainer, calculatedTitle)); + if (this._titleDescription) { + this.setTitleDescription(this._titleDescription); + } + this.iconContainerHover = this._register(this.hoverService.setupManagedHover(getDefaultHoverDelegate("mouse"), this.iconContainer, calculatedTitle)); + this.iconContainer.setAttribute("aria-label", this._getAriaLabel(calculatedTitle)); + } + _getAriaLabel(title) { + const viewHasAccessibilityHelpContent = this.viewDescriptorService.getViewDescriptorById(this.id)?.accessibilityHelpContent; + const accessibleViewHasShownForView = this.accessibleViewInformationService?.hasShownAccessibleView(this.id); + if (!viewHasAccessibilityHelpContent || accessibleViewHasShownForView) { + return title; + } + return localize("viewAccessibilityHelp", "Use Alt+F1 for accessibility help {0}", title); + } + updateTitle(title) { + const calculatedTitle = this.calculateTitle(title); + if (this.titleContainer) { + this.titleContainer.textContent = calculatedTitle; + this.titleContainerHover?.update(calculatedTitle); + } + if (this.iconContainer) { + this.iconContainerHover?.update(calculatedTitle); + this.iconContainer.setAttribute("aria-label", this._getAriaLabel(calculatedTitle)); + } + this._title = title; + this._onDidChangeTitleArea.fire(); + } + setTitleDescription(description) { + if (this.titleDescriptionContainer) { + this.titleDescriptionContainer.textContent = description ?? ""; + this.titleDescriptionContainerHover?.update(description ?? ""); + } else if (description && this.titleContainer) { + this.titleDescriptionContainer = after(this.titleContainer, $("span.description", {}, description)); + this.titleDescriptionContainerHover = this._register(this.hoverService.setupManagedHover(getDefaultHoverDelegate("mouse"), this.titleDescriptionContainer, description)); + } + } + updateTitleDescription(description) { + this.setTitleDescription(description); + this._titleDescription = description; + this._onDidChangeTitleArea.fire(); + } + calculateTitle(title) { + const viewContainer = this.viewDescriptorService.getViewContainerByViewId(this.id); + const model = this.viewDescriptorService.getViewContainerModel(viewContainer); + const viewDescriptor = this.viewDescriptorService.getViewDescriptorById(this.id); + const isDefault = this.viewDescriptorService.getDefaultContainerById(this.id) === viewContainer; + if (!isDefault && viewDescriptor?.containerTitle && model.title !== viewDescriptor.containerTitle) { + return `${viewDescriptor.containerTitle}: ${title}`; + } + return title; + } + renderBody(container) { + this.viewWelcomeController = this._register(this.instantiationService.createInstance(ViewWelcomeController, container, this)); + } + layoutBody(height, width) { + this.viewWelcomeController.layout(height, width); + } + onDidScrollRoot() { + } + getProgressIndicator() { + if (this.progressBar === void 0) { + this.progressBar = this._register(new ProgressBar(this.element, defaultProgressBarStyles)); + this.progressBar.hide(); + } + if (this.progressIndicator === void 0) { + const that = this; + this.progressIndicator = this._register(new ScopedProgressIndicator(assertIsDefined(this.progressBar), new class extends AbstractProgressScope { + constructor() { + super(that.id, that.isBodyVisible()); + this._register(that.onDidChangeBodyVisibility((isVisible) => isVisible ? this.onScopeOpened(that.id) : this.onScopeClosed(that.id))); + } + }())); + } + return this.progressIndicator; + } + getProgressLocation() { + return this.viewDescriptorService.getViewContainerByViewId(this.id).id; + } + getLocationBasedColors() { + return getLocationBasedViewColors(this.viewDescriptorService.getViewLocationById(this.id)); + } + focus() { + if (this.viewWelcomeController.enabled) { + this.viewWelcomeController.focus(); + } else if (this.element) { + this.element.focus(); + this._onDidFocus.fire(); + } + } + setActions() { + if (this.toolbar) { + const primaryActions = [...this.menuActions.getPrimaryActions()]; + if (this.shouldShowFilterInHeader()) { + primaryActions.unshift(VIEWPANE_FILTER_ACTION); + } + this.toolbar.setActions(prepareActions(primaryActions), prepareActions(this.menuActions.getSecondaryActions())); + this.toolbar.context = this.getActionsContext(); + } + } + updateActionsVisibility() { + if (!this.headerContainer) { + return; + } + const shouldAlwaysShowActions = this.configurationService.getValue("workbench.view.alwaysShowHeaderActions"); + this.headerContainer.classList.toggle("actions-always-visible", shouldAlwaysShowActions); + } + updateActions() { + this.setActions(); + this._onDidChangeTitleArea.fire(); + } + getActionViewItem(action, options2) { + if (action.id === VIEWPANE_FILTER_ACTION.id) { + const that = this; + return new class extends BaseActionViewItem { + constructor() { + super(null, action); + } + setFocusable() { + } + get trapsArrowNavigation() { + return true; + } + render(container) { + container.classList.add("viewpane-filter-container"); + const filter = that.getFilterWidget(); + append(container, filter.element); + filter.relayout(); + } + }(); + } + return createActionViewItem(this.instantiationService, action, { ...options2, ...{ menuAsChild: action instanceof SubmenuItemAction } }); + } + getActionsContext() { + return void 0; + } + getActionRunner() { + return void 0; + } + getOptimalWidth() { + return 0; + } + saveState() { + } + shouldShowWelcome() { + return false; + } + getFilterWidget() { + return void 0; + } + shouldShowFilterInHeader() { + return false; + } +}; +ViewPane = __decorateClass([ + __decorateParam(1, IKeybindingService), + __decorateParam(2, IContextMenuService), + __decorateParam(3, IConfigurationService), + __decorateParam(4, IContextKeyService), + __decorateParam(5, IViewDescriptorService), + __decorateParam(6, IInstantiationService), + __decorateParam(7, IOpenerService), + __decorateParam(8, IThemeService), + __decorateParam(9, ITelemetryService), + __decorateParam(10, IHoverService) +], ViewPane); +var FilterViewPane = class extends ViewPane { + constructor(options2, keybindingService, contextMenuService, configurationService, contextKeyService, viewDescriptorService, instantiationService, openerService, themeService, telemetryService, hoverService, accessibleViewService) { + super(options2, keybindingService, contextMenuService, configurationService, contextKeyService, viewDescriptorService, instantiationService, openerService, themeService, telemetryService, hoverService, accessibleViewService); + const childInstantiationService = this._register(instantiationService.createChild(new ServiceCollection([IContextKeyService, this.scopedContextKeyService]))); + this.filterWidget = this._register(childInstantiationService.createInstance(FilterWidget, options2.filterOptions)); + } + getFilterWidget() { + return this.filterWidget; + } + renderBody(container) { + super.renderBody(container); + this.filterContainer = append(container, $(".viewpane-filter-container")); + } + layoutBody(height, width) { + super.layoutBody(height, width); + this.dimension = new Dimension(width, height); + const wasFilterShownInHeader = !this.filterContainer?.hasChildNodes(); + const shouldShowFilterInHeader = this.shouldShowFilterInHeader(); + if (wasFilterShownInHeader !== shouldShowFilterInHeader) { + if (shouldShowFilterInHeader) { + reset(this.filterContainer); + } + this.updateActions(); + if (!shouldShowFilterInHeader) { + append(this.filterContainer, this.filterWidget.element); + } + } + if (!shouldShowFilterInHeader) { + height = height - 44; + } + this.filterWidget.layout(width); + this.layoutBodyContent(height, width); + } + shouldShowFilterInHeader() { + return !(this.dimension && this.dimension.width < 600 && this.dimension.height > 100); + } +}; +FilterViewPane = __decorateClass([ + __decorateParam(1, IKeybindingService), + __decorateParam(2, IContextMenuService), + __decorateParam(3, IConfigurationService), + __decorateParam(4, IContextKeyService), + __decorateParam(5, IViewDescriptorService), + __decorateParam(6, IInstantiationService), + __decorateParam(7, IOpenerService), + __decorateParam(8, IThemeService), + __decorateParam(9, ITelemetryService), + __decorateParam(10, IHoverService) +], FilterViewPane); +function getLocationBasedViewColors(location) { + let background, overlayBackground, stickyScrollBackground, stickyScrollBorder, stickyScrollShadow; + switch (location) { + case 1 /* Panel */: + background = PANEL_BACKGROUND; + overlayBackground = PANEL_SECTION_DRAG_AND_DROP_BACKGROUND; + stickyScrollBackground = PANEL_STICKY_SCROLL_BACKGROUND; + stickyScrollBorder = PANEL_STICKY_SCROLL_BORDER; + stickyScrollShadow = PANEL_STICKY_SCROLL_SHADOW; + break; + case 0 /* Sidebar */: + case 2 /* AuxiliaryBar */: + default: + background = SIDE_BAR_BACKGROUND; + overlayBackground = SIDE_BAR_DRAG_AND_DROP_BACKGROUND; + stickyScrollBackground = SIDE_BAR_STICKY_SCROLL_BACKGROUND; + stickyScrollBorder = SIDE_BAR_STICKY_SCROLL_BORDER; + stickyScrollShadow = SIDE_BAR_STICKY_SCROLL_SHADOW; + } + return { + background, + overlayBackground, + listOverrideStyles: { + listBackground: background, + treeStickyScrollBackground: stickyScrollBackground, + treeStickyScrollBorder: stickyScrollBorder, + treeStickyScrollShadow: stickyScrollShadow + } + }; +} + +// sidebar-tsx/Sidebar.tsx console.log("!!filteraction", VIEWPANE_FILTER_ACTION); var Sidebar = () => { const [tab, setTab] = (0, import_react2.useState)("chat"); @@ -23561,6 +57258,7 @@ var Sidebar = () => { }; var mountFn = mountFnGenerator(Sidebar); var Sidebar_default = mountFn; +/*! @license DOMPurify 3.0.5 | (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.5/LICENSE */ /*! Bundled license information: react/cjs/react.development.js: diff --git a/src/vs/workbench/contrib/void/browser/react/out/Sidebar.js.map b/src/vs/workbench/contrib/void/browser/react/out/Sidebar.js.map index bb9e8a60..0ad21d46 100644 --- a/src/vs/workbench/contrib/void/browser/react/out/Sidebar.js.map +++ b/src/vs/workbench/contrib/void/browser/react/out/Sidebar.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../../../../../node_modules/react/cjs/react.development.js","../../../../../../../../node_modules/react/index.js","../../../../../../../../node_modules/scheduler/cjs/scheduler.development.js","../../../../../../../../node_modules/scheduler/index.js","../../../../../../../../node_modules/react-dom/cjs/react-dom.development.js","../../../../../../../../node_modules/react-dom/index.js","../../../../../../../../node_modules/react-dom/client.js","../sidebar-tsx/Sidebar.tsx","../util/mountFnGenerator.tsx"],"names":["ReactDebugCurrentFrame","moduleObject","error","useState","Component","returnValue","initialTime","startTime","React","prefix","sanitizeURL","workInProgress","get","set","isHydrating","options","style","registrationNameDependencies","possibleRegistrationNames","callCallback","current","root","index","renderLanes","queuedEvent","prefixes","has","updateFragment","child","reconcileChildFibers","error$1","render","subtreeRenderLanes","hasContextChanged","commitTime","hydrate","currentHook","ReactCurrentDispatcher","createRoot","import_react"],"mappings":"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","file":"Sidebar.js","sourcesContent":["/**\n * @license React\n * react.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n\n 'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n var ReactVersion = '18.3.1';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable !== 'object') {\n return null;\n }\n\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n if (typeof maybeIterator === 'function') {\n return maybeIterator;\n }\n\n return null;\n}\n\n/**\n * Keeps track of the current dispatcher.\n */\nvar ReactCurrentDispatcher = {\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n};\n\n/**\n * Keeps track of the current batch's configuration such as how long an update\n * should suspend for if it needs to.\n */\nvar ReactCurrentBatchConfig = {\n transition: null\n};\n\nvar ReactCurrentActQueue = {\n current: null,\n // Used to reproduce behavior of `batchedUpdates` in legacy mode.\n isBatchingLegacy: false,\n didScheduleLegacyUpdate: false\n};\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */\nvar ReactCurrentOwner = {\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n};\n\nvar ReactDebugCurrentFrame = {};\nvar currentExtraStackFrame = null;\nfunction setExtraStackFrame(stack) {\n {\n currentExtraStackFrame = stack;\n }\n}\n\n{\n ReactDebugCurrentFrame.setExtraStackFrame = function (stack) {\n {\n currentExtraStackFrame = stack;\n }\n }; // Stack implementation injected by the current renderer.\n\n\n ReactDebugCurrentFrame.getCurrentStack = null;\n\n ReactDebugCurrentFrame.getStackAddendum = function () {\n var stack = ''; // Add an extra top frame while an element is being validated\n\n if (currentExtraStackFrame) {\n stack += currentExtraStackFrame;\n } // Delegate to the injected renderer-specific implementation\n\n\n var impl = ReactDebugCurrentFrame.getCurrentStack;\n\n if (impl) {\n stack += impl() || '';\n }\n\n return stack;\n };\n}\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar ReactSharedInternals = {\n ReactCurrentDispatcher: ReactCurrentDispatcher,\n ReactCurrentBatchConfig: ReactCurrentBatchConfig,\n ReactCurrentOwner: ReactCurrentOwner\n};\n\n{\n ReactSharedInternals.ReactDebugCurrentFrame = ReactDebugCurrentFrame;\n ReactSharedInternals.ReactCurrentActQueue = ReactCurrentActQueue;\n}\n\n// by calls to these methods by a Babel plugin.\n//\n// In PROD (or in packages without access to React internals),\n// they are left as they are instead.\n\nfunction warn(format) {\n {\n {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n printWarning('warn', format, args);\n }\n }\n}\nfunction error(format) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\nvar didWarnStateUpdateForUnmountedComponent = {};\n\nfunction warnNoop(publicInstance, callerName) {\n {\n var _constructor = publicInstance.constructor;\n var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass';\n var warningKey = componentName + \".\" + callerName;\n\n if (didWarnStateUpdateForUnmountedComponent[warningKey]) {\n return;\n }\n\n error(\"Can't call %s on a component that is not yet mounted. \" + 'This is a no-op, but it might indicate a bug in your application. ' + 'Instead, assign to `this.state` directly or define a `state = {};` ' + 'class property with the desired state in the %s component.', callerName, componentName);\n\n didWarnStateUpdateForUnmountedComponent[warningKey] = true;\n }\n}\n/**\n * This is the abstract API for an update queue.\n */\n\n\nvar ReactNoopUpdateQueue = {\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n return false;\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance, callback, callerName) {\n warnNoop(publicInstance, 'forceUpdate');\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState, callback, callerName) {\n warnNoop(publicInstance, 'replaceState');\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} Name of the calling function in the public API.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState, callback, callerName) {\n warnNoop(publicInstance, 'setState');\n }\n};\n\nvar assign = Object.assign;\n\nvar emptyObject = {};\n\n{\n Object.freeze(emptyObject);\n}\n/**\n * Base class helpers for the updating state of a component.\n */\n\n\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context; // If a component has string refs, we will assign a different object later.\n\n this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the\n // renderer.\n\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nComponent.prototype.isReactComponent = {};\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\n\nComponent.prototype.setState = function (partialState, callback) {\n if (typeof partialState !== 'object' && typeof partialState !== 'function' && partialState != null) {\n throw new Error('setState(...): takes an object of state variables to update or a ' + 'function which returns an object of state variables.');\n }\n\n this.updater.enqueueSetState(this, partialState, callback, 'setState');\n};\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\n\n\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, 'forceUpdate');\n};\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\n\n\n{\n var deprecatedAPIs = {\n isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n };\n\n var defineDeprecationWarning = function (methodName, info) {\n Object.defineProperty(Component.prototype, methodName, {\n get: function () {\n warn('%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);\n\n return undefined;\n }\n });\n };\n\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\nfunction ComponentDummy() {}\n\nComponentDummy.prototype = Component.prototype;\n/**\n * Convenience component with default shallow equality check for sCU.\n */\n\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context; // If a component has string refs, we will assign a different object later.\n\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nvar pureComponentPrototype = PureComponent.prototype = new ComponentDummy();\npureComponentPrototype.constructor = PureComponent; // Avoid an extra prototype jump for these methods.\n\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = true;\n\n// an immutable object with a single mutable value\nfunction createRef() {\n var refObject = {\n current: null\n };\n\n {\n Object.seal(refObject);\n }\n\n return refObject;\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n {\n // toStringTag is needed for namespaced types like Temporal.Instant\n var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n return type;\n }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n {\n try {\n testStringCoercion(value);\n return false;\n } catch (e) {\n return true;\n }\n }\n}\n\nfunction testStringCoercion(value) {\n // If you ended up here by following an exception call stack, here's what's\n // happened: you supplied an object or symbol value to React (as a prop, key,\n // DOM attribute, CSS property, string ref, etc.) and when React tried to\n // coerce it to a string using `'' + value`, an exception was thrown.\n //\n // The most common types that will cause this exception are `Symbol` instances\n // and Temporal objects like `Temporal.Instant`. But any object that has a\n // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n // exception. (Library authors do this to prevent users from using built-in\n // numeric operators like `+` or comparison operators like `>=` because custom\n // methods are needed to perform accurate arithmetic or comparison.)\n //\n // To fix the problem, coerce this object or symbol value to a string before\n // passing it to React. The most reliable way is usually `String(value)`.\n //\n // To find which value is throwing, check the browser or debugger console.\n // Before this exception was thrown, there should be `console.error` output\n // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n // problem and how that type was used: key, atrribute, input value prop, etc.\n // In most cases, this console output also shows the component and its\n // ancestor components where the exception happened.\n //\n // eslint-disable-next-line react-internal/safe-string-coercion\n return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n {\n if (willCoercionThrow(value)) {\n error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n }\n }\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var displayName = outerType.displayName;\n\n if (displayName) {\n return displayName;\n }\n\n var functionName = innerType.displayName || innerType.name || '';\n return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n\n {\n if (typeof type.tag === 'number') {\n error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n }\n }\n\n if (typeof type === 'function') {\n return type.displayName || type.name || null;\n }\n\n if (typeof type === 'string') {\n return type;\n }\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return 'Fragment';\n\n case REACT_PORTAL_TYPE:\n return 'Portal';\n\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n\n case REACT_SUSPENSE_LIST_TYPE:\n return 'SuspenseList';\n\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n var context = type;\n return getContextName(context) + '.Consumer';\n\n case REACT_PROVIDER_TYPE:\n var provider = type;\n return getContextName(provider._context) + '.Provider';\n\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, 'ForwardRef');\n\n case REACT_MEMO_TYPE:\n var outerName = type.displayName || null;\n\n if (outerName !== null) {\n return outerName;\n }\n\n return getComponentNameFromType(type.type) || 'Memo';\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n return getComponentNameFromType(init(payload));\n } catch (x) {\n return null;\n }\n }\n\n // eslint-disable-next-line no-fallthrough\n }\n }\n\n return null;\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\nvar specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs;\n\n{\n didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n var warnAboutAccessingKey = function () {\n {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n\n error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n }\n };\n\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n var warnAboutAccessingRef = function () {\n {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n\n error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n }\n };\n\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config) {\n {\n if (typeof config.ref === 'string' && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) {\n var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (!didWarnAboutStringRefs[componentName]) {\n error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', componentName, config.ref);\n\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // self and source are DEV only properties.\n\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n }); // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n/**\n * Create and return a new ReactElement of the given type.\n * See https://reactjs.org/docs/react-api.html#createelement\n */\n\nfunction createElement(type, config, children) {\n var propName; // Reserved names are extracted\n\n var props = {};\n var key = null;\n var ref = null;\n var self = null;\n var source = null;\n\n if (config != null) {\n if (hasValidRef(config)) {\n ref = config.ref;\n\n {\n warnIfStringRefCannotBeAutoConverted(config);\n }\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n }\n\n self = config.__self === undefined ? null : config.__self;\n source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n } // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n\n\n var childrenLength = arguments.length - 2;\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n\n {\n if (Object.freeze) {\n Object.freeze(childArray);\n }\n }\n\n props.children = childArray;\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n {\n if (key || ref) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n }\n\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n return newElement;\n}\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://reactjs.org/docs/react-api.html#cloneelement\n */\n\nfunction cloneElement(element, config, children) {\n if (element === null || element === undefined) {\n throw new Error(\"React.cloneElement(...): The argument must be a React element, but you passed \" + element + \".\");\n }\n\n var propName; // Original props are copied\n\n var props = assign({}, element.props); // Reserved names are extracted\n\n var key = element.key;\n var ref = element.ref; // Self is preserved since the owner is preserved.\n\n var self = element._self; // Source is preserved since cloneElement is unlikely to be targeted by a\n // transpiler, and the original source is probably a better indicator of the\n // true owner.\n\n var source = element._source; // Owner will be preserved, unless ref is overridden\n\n var owner = element._owner;\n\n if (config != null) {\n if (hasValidRef(config)) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n } // Remaining properties override existing props\n\n\n var defaultProps;\n\n if (element.type && element.type.defaultProps) {\n defaultProps = element.type.defaultProps;\n }\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n if (config[propName] === undefined && defaultProps !== undefined) {\n // Resolve default props\n props[propName] = defaultProps[propName];\n } else {\n props[propName] = config[propName];\n }\n }\n }\n } // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n\n\n var childrenLength = arguments.length - 2;\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n\n props.children = childArray;\n }\n\n return ReactElement(element.type, key, ref, self, source, owner, props);\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\nfunction isValidElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = key.replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n return '$' + escapedString;\n}\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\n\nvar didWarnAboutMaps = false;\nvar userProvidedKeyEscapeRegex = /\\/+/g;\n\nfunction escapeUserProvidedKey(text) {\n return text.replace(userProvidedKeyEscapeRegex, '$&/');\n}\n/**\n * Generate a key string that identifies a element within a set.\n *\n * @param {*} element A element that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\n\n\nfunction getElementKey(element, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (typeof element === 'object' && element !== null && element.key != null) {\n // Explicit key\n {\n checkKeyStringCoercion(element.key);\n }\n\n return escape('' + element.key);\n } // Implicit key determined by the index in the set\n\n\n return index.toString(36);\n}\n\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n var invokeCallback = false;\n\n if (children === null) {\n invokeCallback = true;\n } else {\n switch (type) {\n case 'string':\n case 'number':\n invokeCallback = true;\n break;\n\n case 'object':\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = true;\n }\n\n }\n }\n\n if (invokeCallback) {\n var _child = children;\n var mappedChild = callback(_child); // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows:\n\n var childKey = nameSoFar === '' ? SEPARATOR + getElementKey(_child, 0) : nameSoFar;\n\n if (isArray(mappedChild)) {\n var escapedChildKey = '';\n\n if (childKey != null) {\n escapedChildKey = escapeUserProvidedKey(childKey) + '/';\n }\n\n mapIntoArray(mappedChild, array, escapedChildKey, '', function (c) {\n return c;\n });\n } else if (mappedChild != null) {\n if (isValidElement(mappedChild)) {\n {\n // The `if` statement here prevents auto-disabling of the safe\n // coercion ESLint rule, so we must manually disable it below.\n // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key\n if (mappedChild.key && (!_child || _child.key !== mappedChild.key)) {\n checkKeyStringCoercion(mappedChild.key);\n }\n }\n\n mappedChild = cloneAndReplaceKey(mappedChild, // Keep both the (mapped) and old keys if they differ, just as\n // traverseAllChildren used to do for objects as children\n escapedPrefix + ( // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key\n mappedChild.key && (!_child || _child.key !== mappedChild.key) ? // $FlowFixMe Flow incorrectly thinks existing element's key can be a number\n // eslint-disable-next-line react-internal/safe-string-coercion\n escapeUserProvidedKey('' + mappedChild.key) + '/' : '') + childKey);\n }\n\n array.push(mappedChild);\n }\n\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getElementKey(child, i);\n subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n\n if (typeof iteratorFn === 'function') {\n var iterableChildren = children;\n\n {\n // Warn about using Maps as children\n if (iteratorFn === iterableChildren.entries) {\n if (!didWarnAboutMaps) {\n warn('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.');\n }\n\n didWarnAboutMaps = true;\n }\n }\n\n var iterator = iteratorFn.call(iterableChildren);\n var step;\n var ii = 0;\n\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getElementKey(child, ii++);\n subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n }\n } else if (type === 'object') {\n // eslint-disable-next-line react-internal/safe-string-coercion\n var childrenString = String(children);\n throw new Error(\"Objects are not valid as a React child (found: \" + (childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString) + \"). \" + 'If you meant to render a collection of children, use an array ' + 'instead.');\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenmap\n *\n * The provided mapFunction(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n\n var result = [];\n var count = 0;\n mapIntoArray(children, result, '', '', function (child) {\n return func.call(context, child, count++);\n });\n return result;\n}\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrencount\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\n\n\nfunction countChildren(children) {\n var n = 0;\n mapChildren(children, function () {\n n++; // Don't return anything\n });\n return n;\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenforeach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n mapChildren(children, function () {\n forEachFunc.apply(this, arguments); // Don't return anything.\n }, forEachContext);\n}\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrentoarray\n */\n\n\nfunction toArray(children) {\n return mapChildren(children, function (child) {\n return child;\n }) || [];\n}\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenonly\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\n\n\nfunction onlyChild(children) {\n if (!isValidElement(children)) {\n throw new Error('React.Children.only expected to receive a single React element child.');\n }\n\n return children;\n}\n\nfunction createContext(defaultValue) {\n // TODO: Second argument used to be an optional `calculateChangedBits`\n // function. Warn to reserve for future use?\n var context = {\n $$typeof: REACT_CONTEXT_TYPE,\n // As a workaround to support multiple concurrent renderers, we categorize\n // some renderers as primary and others as secondary. We only expect\n // there to be two concurrent renderers at most: React Native (primary) and\n // Fabric (secondary); React DOM (primary) and React ART (secondary).\n // Secondary renderers store their context values on separate fields.\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n // Used to track how many concurrent renderers this context currently\n // supports within in a single renderer. Such as parallel server rendering.\n _threadCount: 0,\n // These are circular\n Provider: null,\n Consumer: null,\n // Add these to use same hidden class in VM as ServerContext\n _defaultValue: null,\n _globalName: null\n };\n context.Provider = {\n $$typeof: REACT_PROVIDER_TYPE,\n _context: context\n };\n var hasWarnedAboutUsingNestedContextConsumers = false;\n var hasWarnedAboutUsingConsumerProvider = false;\n var hasWarnedAboutDisplayNameOnConsumer = false;\n\n {\n // A separate object, but proxies back to the original context object for\n // backwards compatibility. It has a different $$typeof, so we can properly\n // warn for the incorrect usage of Context as a Consumer.\n var Consumer = {\n $$typeof: REACT_CONTEXT_TYPE,\n _context: context\n }; // $FlowFixMe: Flow complains about not setting a value, which is intentional here\n\n Object.defineProperties(Consumer, {\n Provider: {\n get: function () {\n if (!hasWarnedAboutUsingConsumerProvider) {\n hasWarnedAboutUsingConsumerProvider = true;\n\n error('Rendering is not supported and will be removed in ' + 'a future major release. Did you mean to render instead?');\n }\n\n return context.Provider;\n },\n set: function (_Provider) {\n context.Provider = _Provider;\n }\n },\n _currentValue: {\n get: function () {\n return context._currentValue;\n },\n set: function (_currentValue) {\n context._currentValue = _currentValue;\n }\n },\n _currentValue2: {\n get: function () {\n return context._currentValue2;\n },\n set: function (_currentValue2) {\n context._currentValue2 = _currentValue2;\n }\n },\n _threadCount: {\n get: function () {\n return context._threadCount;\n },\n set: function (_threadCount) {\n context._threadCount = _threadCount;\n }\n },\n Consumer: {\n get: function () {\n if (!hasWarnedAboutUsingNestedContextConsumers) {\n hasWarnedAboutUsingNestedContextConsumers = true;\n\n error('Rendering is not supported and will be removed in ' + 'a future major release. Did you mean to render instead?');\n }\n\n return context.Consumer;\n }\n },\n displayName: {\n get: function () {\n return context.displayName;\n },\n set: function (displayName) {\n if (!hasWarnedAboutDisplayNameOnConsumer) {\n warn('Setting `displayName` on Context.Consumer has no effect. ' + \"You should set it directly on the context with Context.displayName = '%s'.\", displayName);\n\n hasWarnedAboutDisplayNameOnConsumer = true;\n }\n }\n }\n }); // $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty\n\n context.Consumer = Consumer;\n }\n\n {\n context._currentRenderer = null;\n context._currentRenderer2 = null;\n }\n\n return context;\n}\n\nvar Uninitialized = -1;\nvar Pending = 0;\nvar Resolved = 1;\nvar Rejected = 2;\n\nfunction lazyInitializer(payload) {\n if (payload._status === Uninitialized) {\n var ctor = payload._result;\n var thenable = ctor(); // Transition to the next state.\n // This might throw either because it's missing or throws. If so, we treat it\n // as still uninitialized and try again next time. Which is the same as what\n // happens if the ctor or any wrappers processing the ctor throws. This might\n // end up fixing it if the resolution was a concurrency bug.\n\n thenable.then(function (moduleObject) {\n if (payload._status === Pending || payload._status === Uninitialized) {\n // Transition to the next state.\n var resolved = payload;\n resolved._status = Resolved;\n resolved._result = moduleObject;\n }\n }, function (error) {\n if (payload._status === Pending || payload._status === Uninitialized) {\n // Transition to the next state.\n var rejected = payload;\n rejected._status = Rejected;\n rejected._result = error;\n }\n });\n\n if (payload._status === Uninitialized) {\n // In case, we're still uninitialized, then we're waiting for the thenable\n // to resolve. Set it as pending in the meantime.\n var pending = payload;\n pending._status = Pending;\n pending._result = thenable;\n }\n }\n\n if (payload._status === Resolved) {\n var moduleObject = payload._result;\n\n {\n if (moduleObject === undefined) {\n error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\\n\\nYour code should look like: \\n ' + // Break up imports to avoid accidentally parsing them as dependencies.\n 'const MyComponent = lazy(() => imp' + \"ort('./MyComponent'))\\n\\n\" + 'Did you accidentally put curly braces around the import?', moduleObject);\n }\n }\n\n {\n if (!('default' in moduleObject)) {\n error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\\n\\nYour code should look like: \\n ' + // Break up imports to avoid accidentally parsing them as dependencies.\n 'const MyComponent = lazy(() => imp' + \"ort('./MyComponent'))\", moduleObject);\n }\n }\n\n return moduleObject.default;\n } else {\n throw payload._result;\n }\n}\n\nfunction lazy(ctor) {\n var payload = {\n // We use these fields to store the result.\n _status: Uninitialized,\n _result: ctor\n };\n var lazyType = {\n $$typeof: REACT_LAZY_TYPE,\n _payload: payload,\n _init: lazyInitializer\n };\n\n {\n // In production, this would just set it on the object.\n var defaultProps;\n var propTypes; // $FlowFixMe\n\n Object.defineProperties(lazyType, {\n defaultProps: {\n configurable: true,\n get: function () {\n return defaultProps;\n },\n set: function (newDefaultProps) {\n error('React.lazy(...): It is not supported to assign `defaultProps` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');\n\n defaultProps = newDefaultProps; // Match production behavior more closely:\n // $FlowFixMe\n\n Object.defineProperty(lazyType, 'defaultProps', {\n enumerable: true\n });\n }\n },\n propTypes: {\n configurable: true,\n get: function () {\n return propTypes;\n },\n set: function (newPropTypes) {\n error('React.lazy(...): It is not supported to assign `propTypes` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');\n\n propTypes = newPropTypes; // Match production behavior more closely:\n // $FlowFixMe\n\n Object.defineProperty(lazyType, 'propTypes', {\n enumerable: true\n });\n }\n }\n });\n }\n\n return lazyType;\n}\n\nfunction forwardRef(render) {\n {\n if (render != null && render.$$typeof === REACT_MEMO_TYPE) {\n error('forwardRef requires a render function but received a `memo` ' + 'component. Instead of forwardRef(memo(...)), use ' + 'memo(forwardRef(...)).');\n } else if (typeof render !== 'function') {\n error('forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render);\n } else {\n if (render.length !== 0 && render.length !== 2) {\n error('forwardRef render functions accept exactly two parameters: props and ref. %s', render.length === 1 ? 'Did you forget to use the ref parameter?' : 'Any additional parameter will be undefined.');\n }\n }\n\n if (render != null) {\n if (render.defaultProps != null || render.propTypes != null) {\n error('forwardRef render functions do not support propTypes or defaultProps. ' + 'Did you accidentally pass a React component?');\n }\n }\n }\n\n var elementType = {\n $$typeof: REACT_FORWARD_REF_TYPE,\n render: render\n };\n\n {\n var ownName;\n Object.defineProperty(elementType, 'displayName', {\n enumerable: false,\n configurable: true,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name; // The inner component shouldn't inherit this display name in most cases,\n // because the component may be used elsewhere.\n // But it's nice for anonymous functions to inherit the name,\n // so that our component-stack generation logic will display their frames.\n // An anonymous function generally suggests a pattern like:\n // React.forwardRef((props, ref) => {...});\n // This kind of inner function is not used elsewhere so the side effect is okay.\n\n if (!render.name && !render.displayName) {\n render.displayName = name;\n }\n }\n });\n }\n\n return elementType;\n}\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction memo(type, compare) {\n {\n if (!isValidElementType(type)) {\n error('memo: The first argument must be a component. Instead ' + 'received: %s', type === null ? 'null' : typeof type);\n }\n }\n\n var elementType = {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: compare === undefined ? null : compare\n };\n\n {\n var ownName;\n Object.defineProperty(elementType, 'displayName', {\n enumerable: false,\n configurable: true,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name; // The inner component shouldn't inherit this display name in most cases,\n // because the component may be used elsewhere.\n // But it's nice for anonymous functions to inherit the name,\n // so that our component-stack generation logic will display their frames.\n // An anonymous function generally suggests a pattern like:\n // React.memo((props) => {...});\n // This kind of inner function is not used elsewhere so the side effect is okay.\n\n if (!type.name && !type.displayName) {\n type.displayName = name;\n }\n }\n });\n }\n\n return elementType;\n}\n\nfunction resolveDispatcher() {\n var dispatcher = ReactCurrentDispatcher.current;\n\n {\n if (dispatcher === null) {\n error('Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for' + ' one of the following reasons:\\n' + '1. You might have mismatching versions of React and the renderer (such as React DOM)\\n' + '2. You might be breaking the Rules of Hooks\\n' + '3. You might have more than one copy of React in the same app\\n' + 'See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.');\n }\n } // Will result in a null access error if accessed outside render phase. We\n // intentionally don't throw our own error because this is in a hot path.\n // Also helps ensure this is inlined.\n\n\n return dispatcher;\n}\nfunction useContext(Context) {\n var dispatcher = resolveDispatcher();\n\n {\n // TODO: add a more generic warning for invalid values.\n if (Context._context !== undefined) {\n var realContext = Context._context; // Don't deduplicate because this legitimately causes bugs\n // and nobody should be using this in existing code.\n\n if (realContext.Consumer === Context) {\n error('Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be ' + 'removed in a future major release. Did you mean to call useContext(Context) instead?');\n } else if (realContext.Provider === Context) {\n error('Calling useContext(Context.Provider) is not supported. ' + 'Did you mean to call useContext(Context) instead?');\n }\n }\n }\n\n return dispatcher.useContext(Context);\n}\nfunction useState(initialState) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useState(initialState);\n}\nfunction useReducer(reducer, initialArg, init) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useReducer(reducer, initialArg, init);\n}\nfunction useRef(initialValue) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useRef(initialValue);\n}\nfunction useEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useEffect(create, deps);\n}\nfunction useInsertionEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useInsertionEffect(create, deps);\n}\nfunction useLayoutEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useLayoutEffect(create, deps);\n}\nfunction useCallback(callback, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useCallback(callback, deps);\n}\nfunction useMemo(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useMemo(create, deps);\n}\nfunction useImperativeHandle(ref, create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useImperativeHandle(ref, create, deps);\n}\nfunction useDebugValue(value, formatterFn) {\n {\n var dispatcher = resolveDispatcher();\n return dispatcher.useDebugValue(value, formatterFn);\n }\n}\nfunction useTransition() {\n var dispatcher = resolveDispatcher();\n return dispatcher.useTransition();\n}\nfunction useDeferredValue(value) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useDeferredValue(value);\n}\nfunction useId() {\n var dispatcher = resolveDispatcher();\n return dispatcher.useId();\n}\nfunction useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n disabledDepth++;\n }\n}\nfunction reenableLogs() {\n {\n disabledDepth--;\n\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n var props = {\n configurable: true,\n enumerable: true,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n log: assign({}, props, {\n value: prevLog\n }),\n info: assign({}, props, {\n value: prevInfo\n }),\n warn: assign({}, props, {\n value: prevWarn\n }),\n error: assign({}, props, {\n value: prevError\n }),\n group: assign({}, props, {\n value: prevGroup\n }),\n groupCollapsed: assign({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: assign({}, props, {\n value: prevGroupEnd\n })\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n if (disabledDepth < 0) {\n error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n }\n }\n}\n\nvar ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || '';\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n return '\\n' + prefix + name;\n }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if ( !fn || reentry) {\n return '';\n }\n\n {\n var frame = componentFrameCache.get(fn);\n\n if (frame !== undefined) {\n return frame;\n }\n }\n\n var control;\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n Error.prepareStackTrace = undefined;\n var previousDispatcher;\n\n {\n previousDispatcher = ReactCurrentDispatcher$1.current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n\n ReactCurrentDispatcher$1.current = null;\n disableLogs();\n }\n\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n var Fake = function () {\n throw Error();\n }; // $FlowFixMe\n\n\n Object.defineProperty(Fake.prototype, 'props', {\n set: function () {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n\n if (typeof Reflect === 'object' && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n }\n\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n }\n\n fn();\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === 'string') {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n var sampleLines = sample.stack.split('\\n');\n var controlLines = control.stack.split('\\n');\n var s = sampleLines.length - 1;\n var c = controlLines.length - 1;\n\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n\n for (; s >= 1 && c >= 0; s--, c--) {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"\"\n // but we have a user-provided \"displayName\"\n // splice it in to make the stack more readable.\n\n\n if (fn.displayName && _frame.includes('')) {\n _frame = _frame.replace('', fn.displayName);\n }\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, _frame);\n }\n } // Return the line we found.\n\n\n return _frame;\n }\n } while (s >= 1 && c >= 0);\n }\n\n break;\n }\n }\n }\n } finally {\n reentry = false;\n\n {\n ReactCurrentDispatcher$1.current = previousDispatcher;\n reenableLogs();\n }\n\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n\n\n var name = fn ? fn.displayName || fn.name : '';\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n\n return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n}\n\nfunction shouldConstruct(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n if (type == null) {\n return '';\n }\n\n if (typeof type === 'function') {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n\n if (typeof type === 'string') {\n return describeBuiltInComponentFrame(type);\n }\n\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame('Suspense');\n\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame('SuspenseList');\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n\n case REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n } catch (x) {}\n }\n }\n }\n\n return '';\n}\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n }\n }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n {\n // $FlowFixMe This is okay but Flow doesn't know it.\n var has = Function.call.bind(hasOwnProperty);\n\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n // eslint-disable-next-line react-internal/prod-error-codes\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n\n error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n } catch (ex) {\n error$1 = ex;\n }\n\n if (error$1 && !(error$1 instanceof Error)) {\n setCurrentlyValidatingElement(element);\n\n error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n setCurrentlyValidatingElement(null);\n }\n\n if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error$1.message] = true;\n setCurrentlyValidatingElement(element);\n\n error('Failed %s type: %s', location, error$1.message);\n\n setCurrentlyValidatingElement(null);\n }\n }\n }\n }\n}\n\nfunction setCurrentlyValidatingElement$1(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n setExtraStackFrame(stack);\n } else {\n setExtraStackFrame(null);\n }\n }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n propTypesMisspellWarningShown = false;\n}\n\nfunction getDeclarationErrorAddendum() {\n if (ReactCurrentOwner.current) {\n var name = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (name) {\n return '\\n\\nCheck the render method of `' + name + '`.';\n }\n }\n\n return '';\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n if (source !== undefined) {\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n var lineNumber = source.lineNumber;\n return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n }\n\n return '';\n}\n\nfunction getSourceInfoErrorAddendumForProps(elementProps) {\n if (elementProps !== null && elementProps !== undefined) {\n return getSourceInfoErrorAddendum(elementProps.__source);\n }\n\n return '';\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n if (parentName) {\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n }\n }\n\n return info;\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n\n element._store.validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n\n var childOwner = '';\n\n if (element && element._owner && element._owner !== ReactCurrentOwner.current) {\n // Give the component that originally created this child.\n childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n }\n\n {\n setCurrentlyValidatingElement$1(element);\n\n error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n setCurrentlyValidatingElement$1(null);\n }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n if (typeof node !== 'object') {\n return;\n }\n\n if (isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n\n if (typeof iteratorFn === 'function') {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n {\n var type = element.type;\n\n if (type === null || type === undefined || typeof type === 'string') {\n return;\n }\n\n var propTypes;\n\n if (typeof type === 'function') {\n propTypes = type.propTypes;\n } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler.\n type.$$typeof === REACT_MEMO_TYPE)) {\n propTypes = type.propTypes;\n } else {\n return;\n }\n\n if (propTypes) {\n // Intentionally inside to avoid triggering lazy initializers:\n var name = getComponentNameFromType(type);\n checkPropTypes(propTypes, element.props, 'prop', name, element);\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n var _name = getComponentNameFromType(type);\n\n error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n }\n\n if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n }\n }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n {\n var keys = Object.keys(fragment.props);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (key !== 'children' && key !== 'key') {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n setCurrentlyValidatingElement$1(null);\n break;\n }\n }\n\n if (fragment.ref !== null) {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n setCurrentlyValidatingElement$1(null);\n }\n }\n}\nfunction createElementWithValidation(type, props, children) {\n var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n\n if (!validType) {\n var info = '';\n\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n\n var sourceInfo = getSourceInfoErrorAddendumForProps(props);\n\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n\n var typeString;\n\n if (type === null) {\n typeString = 'null';\n } else if (isArray(type)) {\n typeString = 'array';\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n info = ' Did you accidentally export a JSX literal instead of a component?';\n } else {\n typeString = typeof type;\n }\n\n {\n error('React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n }\n }\n\n var element = createElement.apply(this, arguments); // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n\n if (element == null) {\n return element;\n } // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n\n\n if (validType) {\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], type);\n }\n }\n\n if (type === REACT_FRAGMENT_TYPE) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n\n return element;\n}\nvar didWarnAboutDeprecatedCreateFactory = false;\nfunction createFactoryWithValidation(type) {\n var validatedFactory = createElementWithValidation.bind(null, type);\n validatedFactory.type = type;\n\n {\n if (!didWarnAboutDeprecatedCreateFactory) {\n didWarnAboutDeprecatedCreateFactory = true;\n\n warn('React.createFactory() is deprecated and will be removed in ' + 'a future major release. Consider using JSX ' + 'or use React.createElement() directly instead.');\n } // Legacy hook: remove it\n\n\n Object.defineProperty(validatedFactory, 'type', {\n enumerable: false,\n get: function () {\n warn('Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.');\n\n Object.defineProperty(this, 'type', {\n value: type\n });\n return type;\n }\n });\n }\n\n return validatedFactory;\n}\nfunction cloneElementWithValidation(element, props, children) {\n var newElement = cloneElement.apply(this, arguments);\n\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], newElement.type);\n }\n\n validatePropTypes(newElement);\n return newElement;\n}\n\nfunction startTransition(scope, options) {\n var prevTransition = ReactCurrentBatchConfig.transition;\n ReactCurrentBatchConfig.transition = {};\n var currentTransition = ReactCurrentBatchConfig.transition;\n\n {\n ReactCurrentBatchConfig.transition._updatedFibers = new Set();\n }\n\n try {\n scope();\n } finally {\n ReactCurrentBatchConfig.transition = prevTransition;\n\n {\n if (prevTransition === null && currentTransition._updatedFibers) {\n var updatedFibersCount = currentTransition._updatedFibers.size;\n\n if (updatedFibersCount > 10) {\n warn('Detected a large number of updates inside startTransition. ' + 'If this is due to a subscription please re-write it to use React provided hooks. ' + 'Otherwise concurrent mode guarantees are off the table.');\n }\n\n currentTransition._updatedFibers.clear();\n }\n }\n }\n}\n\nvar didWarnAboutMessageChannel = false;\nvar enqueueTaskImpl = null;\nfunction enqueueTask(task) {\n if (enqueueTaskImpl === null) {\n try {\n // read require off the module object to get around the bundlers.\n // we don't want them to detect a require and bundle a Node polyfill.\n var requireString = ('require' + Math.random()).slice(0, 7);\n var nodeRequire = module && module[requireString]; // assuming we're in node, let's try to get node's\n // version of setImmediate, bypassing fake timers if any.\n\n enqueueTaskImpl = nodeRequire.call(module, 'timers').setImmediate;\n } catch (_err) {\n // we're in a browser\n // we can't use regular timers because they may still be faked\n // so we try MessageChannel+postMessage instead\n enqueueTaskImpl = function (callback) {\n {\n if (didWarnAboutMessageChannel === false) {\n didWarnAboutMessageChannel = true;\n\n if (typeof MessageChannel === 'undefined') {\n error('This browser does not have a MessageChannel implementation, ' + 'so enqueuing tasks via await act(async () => ...) will fail. ' + 'Please file an issue at https://github.com/facebook/react/issues ' + 'if you encounter this warning.');\n }\n }\n }\n\n var channel = new MessageChannel();\n channel.port1.onmessage = callback;\n channel.port2.postMessage(undefined);\n };\n }\n }\n\n return enqueueTaskImpl(task);\n}\n\nvar actScopeDepth = 0;\nvar didWarnNoAwaitAct = false;\nfunction act(callback) {\n {\n // `act` calls can be nested, so we track the depth. This represents the\n // number of `act` scopes on the stack.\n var prevActScopeDepth = actScopeDepth;\n actScopeDepth++;\n\n if (ReactCurrentActQueue.current === null) {\n // This is the outermost `act` scope. Initialize the queue. The reconciler\n // will detect the queue and use it instead of Scheduler.\n ReactCurrentActQueue.current = [];\n }\n\n var prevIsBatchingLegacy = ReactCurrentActQueue.isBatchingLegacy;\n var result;\n\n try {\n // Used to reproduce behavior of `batchedUpdates` in legacy mode. Only\n // set to `true` while the given callback is executed, not for updates\n // triggered during an async event, because this is how the legacy\n // implementation of `act` behaved.\n ReactCurrentActQueue.isBatchingLegacy = true;\n result = callback(); // Replicate behavior of original `act` implementation in legacy mode,\n // which flushed updates immediately after the scope function exits, even\n // if it's an async function.\n\n if (!prevIsBatchingLegacy && ReactCurrentActQueue.didScheduleLegacyUpdate) {\n var queue = ReactCurrentActQueue.current;\n\n if (queue !== null) {\n ReactCurrentActQueue.didScheduleLegacyUpdate = false;\n flushActQueue(queue);\n }\n }\n } catch (error) {\n popActScope(prevActScopeDepth);\n throw error;\n } finally {\n ReactCurrentActQueue.isBatchingLegacy = prevIsBatchingLegacy;\n }\n\n if (result !== null && typeof result === 'object' && typeof result.then === 'function') {\n var thenableResult = result; // The callback is an async function (i.e. returned a promise). Wait\n // for it to resolve before exiting the current scope.\n\n var wasAwaited = false;\n var thenable = {\n then: function (resolve, reject) {\n wasAwaited = true;\n thenableResult.then(function (returnValue) {\n popActScope(prevActScopeDepth);\n\n if (actScopeDepth === 0) {\n // We've exited the outermost act scope. Recursively flush the\n // queue until there's no remaining work.\n recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n } else {\n resolve(returnValue);\n }\n }, function (error) {\n // The callback threw an error.\n popActScope(prevActScopeDepth);\n reject(error);\n });\n }\n };\n\n {\n if (!didWarnNoAwaitAct && typeof Promise !== 'undefined') {\n // eslint-disable-next-line no-undef\n Promise.resolve().then(function () {}).then(function () {\n if (!wasAwaited) {\n didWarnNoAwaitAct = true;\n\n error('You called act(async () => ...) without await. ' + 'This could lead to unexpected testing behaviour, ' + 'interleaving multiple act calls and mixing their ' + 'scopes. ' + 'You should - await act(async () => ...);');\n }\n });\n }\n }\n\n return thenable;\n } else {\n var returnValue = result; // The callback is not an async function. Exit the current scope\n // immediately, without awaiting.\n\n popActScope(prevActScopeDepth);\n\n if (actScopeDepth === 0) {\n // Exiting the outermost act scope. Flush the queue.\n var _queue = ReactCurrentActQueue.current;\n\n if (_queue !== null) {\n flushActQueue(_queue);\n ReactCurrentActQueue.current = null;\n } // Return a thenable. If the user awaits it, we'll flush again in\n // case additional work was scheduled by a microtask.\n\n\n var _thenable = {\n then: function (resolve, reject) {\n // Confirm we haven't re-entered another `act` scope, in case\n // the user does something weird like await the thenable\n // multiple times.\n if (ReactCurrentActQueue.current === null) {\n // Recursively flush the queue until there's no remaining work.\n ReactCurrentActQueue.current = [];\n recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n } else {\n resolve(returnValue);\n }\n }\n };\n return _thenable;\n } else {\n // Since we're inside a nested `act` scope, the returned thenable\n // immediately resolves. The outer scope will flush the queue.\n var _thenable2 = {\n then: function (resolve, reject) {\n resolve(returnValue);\n }\n };\n return _thenable2;\n }\n }\n }\n}\n\nfunction popActScope(prevActScopeDepth) {\n {\n if (prevActScopeDepth !== actScopeDepth - 1) {\n error('You seem to have overlapping act() calls, this is not supported. ' + 'Be sure to await previous act() calls before making a new one. ');\n }\n\n actScopeDepth = prevActScopeDepth;\n }\n}\n\nfunction recursivelyFlushAsyncActWork(returnValue, resolve, reject) {\n {\n var queue = ReactCurrentActQueue.current;\n\n if (queue !== null) {\n try {\n flushActQueue(queue);\n enqueueTask(function () {\n if (queue.length === 0) {\n // No additional work was scheduled. Finish.\n ReactCurrentActQueue.current = null;\n resolve(returnValue);\n } else {\n // Keep flushing work until there's none left.\n recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n }\n });\n } catch (error) {\n reject(error);\n }\n } else {\n resolve(returnValue);\n }\n }\n}\n\nvar isFlushing = false;\n\nfunction flushActQueue(queue) {\n {\n if (!isFlushing) {\n // Prevent re-entrance.\n isFlushing = true;\n var i = 0;\n\n try {\n for (; i < queue.length; i++) {\n var callback = queue[i];\n\n do {\n callback = callback(true);\n } while (callback !== null);\n }\n\n queue.length = 0;\n } catch (error) {\n // If something throws, leave the remaining callbacks on the queue.\n queue = queue.slice(i + 1);\n throw error;\n } finally {\n isFlushing = false;\n }\n }\n }\n}\n\nvar createElement$1 = createElementWithValidation ;\nvar cloneElement$1 = cloneElementWithValidation ;\nvar createFactory = createFactoryWithValidation ;\nvar Children = {\n map: mapChildren,\n forEach: forEachChildren,\n count: countChildren,\n toArray: toArray,\n only: onlyChild\n};\n\nexports.Children = Children;\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals;\nexports.act = act;\nexports.cloneElement = cloneElement$1;\nexports.createContext = createContext;\nexports.createElement = createElement$1;\nexports.createFactory = createFactory;\nexports.createRef = createRef;\nexports.forwardRef = forwardRef;\nexports.isValidElement = isValidElement;\nexports.lazy = lazy;\nexports.memo = memo;\nexports.startTransition = startTransition;\nexports.unstable_act = act;\nexports.useCallback = useCallback;\nexports.useContext = useContext;\nexports.useDebugValue = useDebugValue;\nexports.useDeferredValue = useDeferredValue;\nexports.useEffect = useEffect;\nexports.useId = useId;\nexports.useImperativeHandle = useImperativeHandle;\nexports.useInsertionEffect = useInsertionEffect;\nexports.useLayoutEffect = useLayoutEffect;\nexports.useMemo = useMemo;\nexports.useReducer = useReducer;\nexports.useRef = useRef;\nexports.useState = useState;\nexports.useSyncExternalStore = useSyncExternalStore;\nexports.useTransition = useTransition;\nexports.version = ReactVersion;\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n \n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/**\n * @license React\n * scheduler.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n\n 'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n var enableSchedulerDebugging = false;\nvar enableProfiling = false;\nvar frameYieldMs = 5;\n\nfunction push(heap, node) {\n var index = heap.length;\n heap.push(node);\n siftUp(heap, node, index);\n}\nfunction peek(heap) {\n return heap.length === 0 ? null : heap[0];\n}\nfunction pop(heap) {\n if (heap.length === 0) {\n return null;\n }\n\n var first = heap[0];\n var last = heap.pop();\n\n if (last !== first) {\n heap[0] = last;\n siftDown(heap, last, 0);\n }\n\n return first;\n}\n\nfunction siftUp(heap, node, i) {\n var index = i;\n\n while (index > 0) {\n var parentIndex = index - 1 >>> 1;\n var parent = heap[parentIndex];\n\n if (compare(parent, node) > 0) {\n // The parent is larger. Swap positions.\n heap[parentIndex] = node;\n heap[index] = parent;\n index = parentIndex;\n } else {\n // The parent is smaller. Exit.\n return;\n }\n }\n}\n\nfunction siftDown(heap, node, i) {\n var index = i;\n var length = heap.length;\n var halfLength = length >>> 1;\n\n while (index < halfLength) {\n var leftIndex = (index + 1) * 2 - 1;\n var left = heap[leftIndex];\n var rightIndex = leftIndex + 1;\n var right = heap[rightIndex]; // If the left or right node is smaller, swap with the smaller of those.\n\n if (compare(left, node) < 0) {\n if (rightIndex < length && compare(right, left) < 0) {\n heap[index] = right;\n heap[rightIndex] = node;\n index = rightIndex;\n } else {\n heap[index] = left;\n heap[leftIndex] = node;\n index = leftIndex;\n }\n } else if (rightIndex < length && compare(right, node) < 0) {\n heap[index] = right;\n heap[rightIndex] = node;\n index = rightIndex;\n } else {\n // Neither child is smaller. Exit.\n return;\n }\n }\n}\n\nfunction compare(a, b) {\n // Compare sort index first, then task id.\n var diff = a.sortIndex - b.sortIndex;\n return diff !== 0 ? diff : a.id - b.id;\n}\n\n// TODO: Use symbols?\nvar ImmediatePriority = 1;\nvar UserBlockingPriority = 2;\nvar NormalPriority = 3;\nvar LowPriority = 4;\nvar IdlePriority = 5;\n\nfunction markTaskErrored(task, ms) {\n}\n\n/* eslint-disable no-var */\n\nvar hasPerformanceNow = typeof performance === 'object' && typeof performance.now === 'function';\n\nif (hasPerformanceNow) {\n var localPerformance = performance;\n\n exports.unstable_now = function () {\n return localPerformance.now();\n };\n} else {\n var localDate = Date;\n var initialTime = localDate.now();\n\n exports.unstable_now = function () {\n return localDate.now() - initialTime;\n };\n} // Max 31 bit integer. The max integer size in V8 for 32-bit systems.\n// Math.pow(2, 30) - 1\n// 0b111111111111111111111111111111\n\n\nvar maxSigned31BitInt = 1073741823; // Times out immediately\n\nvar IMMEDIATE_PRIORITY_TIMEOUT = -1; // Eventually times out\n\nvar USER_BLOCKING_PRIORITY_TIMEOUT = 250;\nvar NORMAL_PRIORITY_TIMEOUT = 5000;\nvar LOW_PRIORITY_TIMEOUT = 10000; // Never times out\n\nvar IDLE_PRIORITY_TIMEOUT = maxSigned31BitInt; // Tasks are stored on a min heap\n\nvar taskQueue = [];\nvar timerQueue = []; // Incrementing id counter. Used to maintain insertion order.\n\nvar taskIdCounter = 1; // Pausing the scheduler is useful for debugging.\nvar currentTask = null;\nvar currentPriorityLevel = NormalPriority; // This is set while performing work, to prevent re-entrance.\n\nvar isPerformingWork = false;\nvar isHostCallbackScheduled = false;\nvar isHostTimeoutScheduled = false; // Capture local references to native APIs, in case a polyfill overrides them.\n\nvar localSetTimeout = typeof setTimeout === 'function' ? setTimeout : null;\nvar localClearTimeout = typeof clearTimeout === 'function' ? clearTimeout : null;\nvar localSetImmediate = typeof setImmediate !== 'undefined' ? setImmediate : null; // IE and Node.js + jsdom\n\nvar isInputPending = typeof navigator !== 'undefined' && navigator.scheduling !== undefined && navigator.scheduling.isInputPending !== undefined ? navigator.scheduling.isInputPending.bind(navigator.scheduling) : null;\n\nfunction advanceTimers(currentTime) {\n // Check for tasks that are no longer delayed and add them to the queue.\n var timer = peek(timerQueue);\n\n while (timer !== null) {\n if (timer.callback === null) {\n // Timer was cancelled.\n pop(timerQueue);\n } else if (timer.startTime <= currentTime) {\n // Timer fired. Transfer to the task queue.\n pop(timerQueue);\n timer.sortIndex = timer.expirationTime;\n push(taskQueue, timer);\n } else {\n // Remaining timers are pending.\n return;\n }\n\n timer = peek(timerQueue);\n }\n}\n\nfunction handleTimeout(currentTime) {\n isHostTimeoutScheduled = false;\n advanceTimers(currentTime);\n\n if (!isHostCallbackScheduled) {\n if (peek(taskQueue) !== null) {\n isHostCallbackScheduled = true;\n requestHostCallback(flushWork);\n } else {\n var firstTimer = peek(timerQueue);\n\n if (firstTimer !== null) {\n requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n }\n }\n }\n}\n\nfunction flushWork(hasTimeRemaining, initialTime) {\n\n\n isHostCallbackScheduled = false;\n\n if (isHostTimeoutScheduled) {\n // We scheduled a timeout but it's no longer needed. Cancel it.\n isHostTimeoutScheduled = false;\n cancelHostTimeout();\n }\n\n isPerformingWork = true;\n var previousPriorityLevel = currentPriorityLevel;\n\n try {\n if (enableProfiling) {\n try {\n return workLoop(hasTimeRemaining, initialTime);\n } catch (error) {\n if (currentTask !== null) {\n var currentTime = exports.unstable_now();\n markTaskErrored(currentTask, currentTime);\n currentTask.isQueued = false;\n }\n\n throw error;\n }\n } else {\n // No catch in prod code path.\n return workLoop(hasTimeRemaining, initialTime);\n }\n } finally {\n currentTask = null;\n currentPriorityLevel = previousPriorityLevel;\n isPerformingWork = false;\n }\n}\n\nfunction workLoop(hasTimeRemaining, initialTime) {\n var currentTime = initialTime;\n advanceTimers(currentTime);\n currentTask = peek(taskQueue);\n\n while (currentTask !== null && !(enableSchedulerDebugging )) {\n if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {\n // This currentTask hasn't expired, and we've reached the deadline.\n break;\n }\n\n var callback = currentTask.callback;\n\n if (typeof callback === 'function') {\n currentTask.callback = null;\n currentPriorityLevel = currentTask.priorityLevel;\n var didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n\n var continuationCallback = callback(didUserCallbackTimeout);\n currentTime = exports.unstable_now();\n\n if (typeof continuationCallback === 'function') {\n currentTask.callback = continuationCallback;\n } else {\n\n if (currentTask === peek(taskQueue)) {\n pop(taskQueue);\n }\n }\n\n advanceTimers(currentTime);\n } else {\n pop(taskQueue);\n }\n\n currentTask = peek(taskQueue);\n } // Return whether there's additional work\n\n\n if (currentTask !== null) {\n return true;\n } else {\n var firstTimer = peek(timerQueue);\n\n if (firstTimer !== null) {\n requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n }\n\n return false;\n }\n}\n\nfunction unstable_runWithPriority(priorityLevel, eventHandler) {\n switch (priorityLevel) {\n case ImmediatePriority:\n case UserBlockingPriority:\n case NormalPriority:\n case LowPriority:\n case IdlePriority:\n break;\n\n default:\n priorityLevel = NormalPriority;\n }\n\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n}\n\nfunction unstable_next(eventHandler) {\n var priorityLevel;\n\n switch (currentPriorityLevel) {\n case ImmediatePriority:\n case UserBlockingPriority:\n case NormalPriority:\n // Shift down to normal priority\n priorityLevel = NormalPriority;\n break;\n\n default:\n // Anything lower than normal priority should remain at the current level.\n priorityLevel = currentPriorityLevel;\n break;\n }\n\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n}\n\nfunction unstable_wrapCallback(callback) {\n var parentPriorityLevel = currentPriorityLevel;\n return function () {\n // This is a fork of runWithPriority, inlined for performance.\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = parentPriorityLevel;\n\n try {\n return callback.apply(this, arguments);\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n };\n}\n\nfunction unstable_scheduleCallback(priorityLevel, callback, options) {\n var currentTime = exports.unstable_now();\n var startTime;\n\n if (typeof options === 'object' && options !== null) {\n var delay = options.delay;\n\n if (typeof delay === 'number' && delay > 0) {\n startTime = currentTime + delay;\n } else {\n startTime = currentTime;\n }\n } else {\n startTime = currentTime;\n }\n\n var timeout;\n\n switch (priorityLevel) {\n case ImmediatePriority:\n timeout = IMMEDIATE_PRIORITY_TIMEOUT;\n break;\n\n case UserBlockingPriority:\n timeout = USER_BLOCKING_PRIORITY_TIMEOUT;\n break;\n\n case IdlePriority:\n timeout = IDLE_PRIORITY_TIMEOUT;\n break;\n\n case LowPriority:\n timeout = LOW_PRIORITY_TIMEOUT;\n break;\n\n case NormalPriority:\n default:\n timeout = NORMAL_PRIORITY_TIMEOUT;\n break;\n }\n\n var expirationTime = startTime + timeout;\n var newTask = {\n id: taskIdCounter++,\n callback: callback,\n priorityLevel: priorityLevel,\n startTime: startTime,\n expirationTime: expirationTime,\n sortIndex: -1\n };\n\n if (startTime > currentTime) {\n // This is a delayed task.\n newTask.sortIndex = startTime;\n push(timerQueue, newTask);\n\n if (peek(taskQueue) === null && newTask === peek(timerQueue)) {\n // All tasks are delayed, and this is the task with the earliest delay.\n if (isHostTimeoutScheduled) {\n // Cancel an existing timeout.\n cancelHostTimeout();\n } else {\n isHostTimeoutScheduled = true;\n } // Schedule a timeout.\n\n\n requestHostTimeout(handleTimeout, startTime - currentTime);\n }\n } else {\n newTask.sortIndex = expirationTime;\n push(taskQueue, newTask);\n // wait until the next time we yield.\n\n\n if (!isHostCallbackScheduled && !isPerformingWork) {\n isHostCallbackScheduled = true;\n requestHostCallback(flushWork);\n }\n }\n\n return newTask;\n}\n\nfunction unstable_pauseExecution() {\n}\n\nfunction unstable_continueExecution() {\n\n if (!isHostCallbackScheduled && !isPerformingWork) {\n isHostCallbackScheduled = true;\n requestHostCallback(flushWork);\n }\n}\n\nfunction unstable_getFirstCallbackNode() {\n return peek(taskQueue);\n}\n\nfunction unstable_cancelCallback(task) {\n // remove from the queue because you can't remove arbitrary nodes from an\n // array based heap, only the first one.)\n\n\n task.callback = null;\n}\n\nfunction unstable_getCurrentPriorityLevel() {\n return currentPriorityLevel;\n}\n\nvar isMessageLoopRunning = false;\nvar scheduledHostCallback = null;\nvar taskTimeoutID = -1; // Scheduler periodically yields in case there is other work on the main\n// thread, like user events. By default, it yields multiple times per frame.\n// It does not attempt to align with frame boundaries, since most tasks don't\n// need to be frame aligned; for those that do, use requestAnimationFrame.\n\nvar frameInterval = frameYieldMs;\nvar startTime = -1;\n\nfunction shouldYieldToHost() {\n var timeElapsed = exports.unstable_now() - startTime;\n\n if (timeElapsed < frameInterval) {\n // The main thread has only been blocked for a really short amount of time;\n // smaller than a single frame. Don't yield yet.\n return false;\n } // The main thread has been blocked for a non-negligible amount of time. We\n\n\n return true;\n}\n\nfunction requestPaint() {\n\n}\n\nfunction forceFrameRate(fps) {\n if (fps < 0 || fps > 125) {\n // Using console['error'] to evade Babel and ESLint\n console['error']('forceFrameRate takes a positive int between 0 and 125, ' + 'forcing frame rates higher than 125 fps is not supported');\n return;\n }\n\n if (fps > 0) {\n frameInterval = Math.floor(1000 / fps);\n } else {\n // reset the framerate\n frameInterval = frameYieldMs;\n }\n}\n\nvar performWorkUntilDeadline = function () {\n if (scheduledHostCallback !== null) {\n var currentTime = exports.unstable_now(); // Keep track of the start time so we can measure how long the main thread\n // has been blocked.\n\n startTime = currentTime;\n var hasTimeRemaining = true; // If a scheduler task throws, exit the current browser task so the\n // error can be observed.\n //\n // Intentionally not using a try-catch, since that makes some debugging\n // techniques harder. Instead, if `scheduledHostCallback` errors, then\n // `hasMoreWork` will remain true, and we'll continue the work loop.\n\n var hasMoreWork = true;\n\n try {\n hasMoreWork = scheduledHostCallback(hasTimeRemaining, currentTime);\n } finally {\n if (hasMoreWork) {\n // If there's more work, schedule the next message event at the end\n // of the preceding one.\n schedulePerformWorkUntilDeadline();\n } else {\n isMessageLoopRunning = false;\n scheduledHostCallback = null;\n }\n }\n } else {\n isMessageLoopRunning = false;\n } // Yielding to the browser will give it a chance to paint, so we can\n};\n\nvar schedulePerformWorkUntilDeadline;\n\nif (typeof localSetImmediate === 'function') {\n // Node.js and old IE.\n // There's a few reasons for why we prefer setImmediate.\n //\n // Unlike MessageChannel, it doesn't prevent a Node.js process from exiting.\n // (Even though this is a DOM fork of the Scheduler, you could get here\n // with a mix of Node.js 15+, which has a MessageChannel, and jsdom.)\n // https://github.com/facebook/react/issues/20756\n //\n // But also, it runs earlier which is the semantic we want.\n // If other browsers ever implement it, it's better to use it.\n // Although both of these would be inferior to native scheduling.\n schedulePerformWorkUntilDeadline = function () {\n localSetImmediate(performWorkUntilDeadline);\n };\n} else if (typeof MessageChannel !== 'undefined') {\n // DOM and Worker environments.\n // We prefer MessageChannel because of the 4ms setTimeout clamping.\n var channel = new MessageChannel();\n var port = channel.port2;\n channel.port1.onmessage = performWorkUntilDeadline;\n\n schedulePerformWorkUntilDeadline = function () {\n port.postMessage(null);\n };\n} else {\n // We should only fallback here in non-browser environments.\n schedulePerformWorkUntilDeadline = function () {\n localSetTimeout(performWorkUntilDeadline, 0);\n };\n}\n\nfunction requestHostCallback(callback) {\n scheduledHostCallback = callback;\n\n if (!isMessageLoopRunning) {\n isMessageLoopRunning = true;\n schedulePerformWorkUntilDeadline();\n }\n}\n\nfunction requestHostTimeout(callback, ms) {\n taskTimeoutID = localSetTimeout(function () {\n callback(exports.unstable_now());\n }, ms);\n}\n\nfunction cancelHostTimeout() {\n localClearTimeout(taskTimeoutID);\n taskTimeoutID = -1;\n}\n\nvar unstable_requestPaint = requestPaint;\nvar unstable_Profiling = null;\n\nexports.unstable_IdlePriority = IdlePriority;\nexports.unstable_ImmediatePriority = ImmediatePriority;\nexports.unstable_LowPriority = LowPriority;\nexports.unstable_NormalPriority = NormalPriority;\nexports.unstable_Profiling = unstable_Profiling;\nexports.unstable_UserBlockingPriority = UserBlockingPriority;\nexports.unstable_cancelCallback = unstable_cancelCallback;\nexports.unstable_continueExecution = unstable_continueExecution;\nexports.unstable_forceFrameRate = forceFrameRate;\nexports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel;\nexports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode;\nexports.unstable_next = unstable_next;\nexports.unstable_pauseExecution = unstable_pauseExecution;\nexports.unstable_requestPaint = unstable_requestPaint;\nexports.unstable_runWithPriority = unstable_runWithPriority;\nexports.unstable_scheduleCallback = unstable_scheduleCallback;\nexports.unstable_shouldYield = shouldYieldToHost;\nexports.unstable_wrapCallback = unstable_wrapCallback;\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n \n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * react-dom.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n\n 'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n var React = require('react');\nvar Scheduler = require('scheduler');\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nvar suppressWarning = false;\nfunction setSuppressWarning(newSuppressWarning) {\n {\n suppressWarning = newSuppressWarning;\n }\n} // In DEV, calls to console.warn and console.error get replaced\n// by calls to these methods by a Babel plugin.\n//\n// In PROD (or in packages without access to React internals),\n// they are left as they are instead.\n\nfunction warn(format) {\n {\n if (!suppressWarning) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n printWarning('warn', format, args);\n }\n }\n}\nfunction error(format) {\n {\n if (!suppressWarning) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\nvar FunctionComponent = 0;\nvar ClassComponent = 1;\nvar IndeterminateComponent = 2; // Before we know whether it is function or class\n\nvar HostRoot = 3; // Root of a host tree. Could be nested inside another node.\n\nvar HostPortal = 4; // A subtree. Could be an entry point to a different renderer.\n\nvar HostComponent = 5;\nvar HostText = 6;\nvar Fragment = 7;\nvar Mode = 8;\nvar ContextConsumer = 9;\nvar ContextProvider = 10;\nvar ForwardRef = 11;\nvar Profiler = 12;\nvar SuspenseComponent = 13;\nvar MemoComponent = 14;\nvar SimpleMemoComponent = 15;\nvar LazyComponent = 16;\nvar IncompleteClassComponent = 17;\nvar DehydratedFragment = 18;\nvar SuspenseListComponent = 19;\nvar ScopeComponent = 21;\nvar OffscreenComponent = 22;\nvar LegacyHiddenComponent = 23;\nvar CacheComponent = 24;\nvar TracingMarkerComponent = 25;\n\n// -----------------------------------------------------------------------------\n\nvar enableClientRenderFallbackOnTextMismatch = true; // TODO: Need to review this code one more time before landing\n// the react-reconciler package.\n\nvar enableNewReconciler = false; // Support legacy Primer support on internal FB www\n\nvar enableLazyContextPropagation = false; // FB-only usage. The new API has different semantics.\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n\nvar enableSuspenseAvoidThisFallback = false; // Enables unstable_avoidThisFallback feature in Fizz\n// React DOM Chopping Block\n//\n// Similar to main Chopping Block but only flags related to React DOM. These are\n// grouped because we will likely batch all of them into a single major release.\n// -----------------------------------------------------------------------------\n// Disable support for comment nodes as React DOM containers. Already disabled\n// in open source, but www codebase still relies on it. Need to remove.\n\nvar disableCommentsAsDOMContainers = true; // Disable javascript: URL strings in href for XSS protection.\n// and client rendering, mostly to allow JSX attributes to apply to the custom\n// element's object properties instead of only HTML attributes.\n// https://github.com/facebook/react/issues/11347\n\nvar enableCustomElementPropertySupport = false; // Disables children for