dockview 1.8.3 → 1.8.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"dockview.amd.min.js","sources":["../../dockview-core/dist/esm/lifecycle.js","../../../node_modules/style-inject/dist/style-inject.es.js","../../dockview-core/dist/esm/dnd/dataTransfer.js","../../dockview-core/dist/esm/events.js","../../dockview-core/dist/esm/panel/componentFactory.js","../../dockview-core/dist/esm/dom.js","../../dockview-core/dist/esm/array.js","../../dockview-core/dist/esm/math.js","../../dockview-core/dist/esm/splitview/viewItem.js","../../dockview-core/dist/esm/splitview/splitview.js","../../dockview-core/dist/esm/paneview/paneview.js","../../dockview-core/dist/esm/gridview/leafNode.js","../../dockview-core/dist/esm/gridview/branchNode.js","../../dockview-core/dist/esm/gridview/gridview.js","../../dockview-core/dist/esm/api/component.api.js","../../dockview-core/dist/esm/dnd/dnd.js","../../dockview-core/dist/esm/dnd/droptarget.js","../../dockview-core/dist/esm/dockview/components/panel/content.js","../../dockview-core/dist/esm/dockview/types.js","../../dockview-core/dist/esm/dnd/abstractDragHandler.js","../../dockview-core/dist/esm/dockview/components/tab/tab.js","../../dockview-core/dist/esm/dnd/groupDragHandler.js","../../dockview-core/dist/esm/dnd/ghost.js","../../dockview-core/dist/esm/dockview/components/titlebar/voidContainer.js","../../dockview-core/dist/esm/dockview/components/titlebar/tabsContainer.js","../../dockview-core/dist/esm/dockview/dockviewGroupPanelModel.js","../../dockview-core/dist/esm/resizable.js","../../dockview-core/dist/esm/gridview/baseComponentGridview.js","../../dockview-core/dist/esm/api/panelApi.js","../../dockview-core/dist/esm/api/splitviewPanelApi.js","../../dockview-core/dist/esm/api/paneviewPanelApi.js","../../dockview-core/dist/esm/gridview/basePanelView.js","../../dockview-core/dist/esm/paneview/paneviewPanel.js","../../dockview-core/dist/esm/paneview/draggablePaneviewPanel.js","../../dockview-core/dist/esm/api/gridviewPanelApi.js","../../dockview-core/dist/esm/gridview/gridviewPanel.js","../../dockview-core/dist/esm/api/dockviewGroupPanelApi.js","../../dockview-core/dist/esm/dockview/dockviewGroupPanel.js","../../dockview-core/dist/esm/dockview/options.js","../../dockview-core/dist/esm/api/dockviewPanelApi.js","../../dockview-core/dist/esm/dockview/dockviewPanel.js","../../dockview-core/dist/esm/svg.js","../../dockview-core/dist/esm/dockview/components/tab/defaultTab.js","../../dockview-core/dist/esm/dockview/dockviewPanelModel.js","../../dockview-core/dist/esm/dockview/deserializer.js","../../dockview-core/dist/esm/dockview/components/watermark/watermark.js","../../dockview-core/dist/esm/dnd/overlay.js","../../dockview-core/dist/esm/dockview/dockviewFloatingGroupPanel.js","../../dockview-core/dist/esm/dockview/dockviewComponent.js","../../dockview-core/dist/esm/gridview/gridviewComponent.js","../../dockview-core/dist/esm/splitview/splitviewComponent.js","../../dockview-core/dist/esm/paneview/defaultPaneviewHeader.js","../../dockview-core/dist/esm/paneview/paneviewComponent.js","../../dockview-core/dist/esm/splitview/splitviewPanel.js","../../src/react.ts","../../src/dockview/reactContentPart.ts","../../src/dockview/reactHeaderPart.ts","../../src/dockview/reactWatermarkPart.ts","../../src/dockview/headerActionsRenderer.ts","../../src/dockview/dockview.tsx","../../../node_modules/tslib/tslib.es6.js","../../src/svg.tsx","../../src/splitview/view.ts","../../src/splitview/splitview.tsx","../../src/gridview/view.ts","../../src/gridview/gridview.tsx","../../src/paneview/view.tsx","../../src/paneview/paneview.tsx","../../src/dockview/defaultTab.tsx"],"sourcesContent":["export var Disposable;\r\n(function (Disposable) {\r\n Disposable.NONE = {\r\n dispose: () => {\r\n // noop\r\n },\r\n };\r\n})(Disposable || (Disposable = {}));\r\nexport class CompositeDisposable {\r\n get isDisposed() {\r\n return this._isDisposed;\r\n }\r\n constructor(...args) {\r\n this._isDisposed = false;\r\n this._disposables = args;\r\n }\r\n addDisposables(...args) {\r\n args.forEach((arg) => this._disposables.push(arg));\r\n }\r\n dispose() {\r\n this._disposables.forEach((arg) => arg.dispose());\r\n this._isDisposed = true;\r\n }\r\n}\r\nexport class MutableDisposable {\r\n constructor() {\r\n this._disposable = Disposable.NONE;\r\n }\r\n set value(disposable) {\r\n if (this._disposable) {\r\n this._disposable.dispose();\r\n }\r\n this._disposable = disposable;\r\n }\r\n dispose() {\r\n if (this._disposable) {\r\n this._disposable.dispose();\r\n this._disposable = Disposable.NONE;\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=lifecycle.js.map","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","class TransferObject {\r\n constructor() {\r\n //\r\n }\r\n}\r\nexport class PanelTransfer extends TransferObject {\r\n constructor(viewId, groupId, panelId) {\r\n super();\r\n this.viewId = viewId;\r\n this.groupId = groupId;\r\n this.panelId = panelId;\r\n }\r\n}\r\nexport class PaneTransfer extends TransferObject {\r\n constructor(viewId, paneId) {\r\n super();\r\n this.viewId = viewId;\r\n this.paneId = paneId;\r\n }\r\n}\r\n/**\r\n * A singleton to store transfer data during drag & drop operations that are only valid within the application.\r\n */\r\nexport class LocalSelectionTransfer {\r\n constructor() {\r\n // protect against external instantiation\r\n }\r\n static getInstance() {\r\n return LocalSelectionTransfer.INSTANCE;\r\n }\r\n hasData(proto) {\r\n return proto && proto === this.proto;\r\n }\r\n clearData(proto) {\r\n if (this.hasData(proto)) {\r\n this.proto = undefined;\r\n this.data = undefined;\r\n }\r\n }\r\n getData(proto) {\r\n if (this.hasData(proto)) {\r\n return this.data;\r\n }\r\n return undefined;\r\n }\r\n setData(data, proto) {\r\n if (proto) {\r\n this.data = data;\r\n this.proto = proto;\r\n }\r\n }\r\n}\r\nLocalSelectionTransfer.INSTANCE = new LocalSelectionTransfer();\r\nexport function getPanelData() {\r\n const panelTransfer = LocalSelectionTransfer.getInstance();\r\n const isPanelEvent = panelTransfer.hasData(PanelTransfer.prototype);\r\n if (!isPanelEvent) {\r\n return undefined;\r\n }\r\n return panelTransfer.getData(PanelTransfer.prototype)[0];\r\n}\r\nexport function getPaneData() {\r\n const paneTransfer = LocalSelectionTransfer.getInstance();\r\n const isPanelEvent = paneTransfer.hasData(PaneTransfer.prototype);\r\n if (!isPanelEvent) {\r\n return undefined;\r\n }\r\n return paneTransfer.getData(PaneTransfer.prototype)[0];\r\n}\r\n//# sourceMappingURL=dataTransfer.js.map","export var Event;\r\n(function (Event) {\r\n Event.any = (...children) => {\r\n return (listener) => {\r\n const disposables = children.map((child) => child(listener));\r\n return {\r\n dispose: () => {\r\n disposables.forEach((d) => {\r\n d.dispose();\r\n });\r\n },\r\n };\r\n };\r\n };\r\n})(Event || (Event = {}));\r\nclass LeakageMonitor {\r\n constructor() {\r\n this.events = new Map();\r\n }\r\n get size() {\r\n return this.events.size;\r\n }\r\n add(event, stacktrace) {\r\n this.events.set(event, stacktrace);\r\n }\r\n delete(event) {\r\n this.events.delete(event);\r\n }\r\n clear() {\r\n this.events.clear();\r\n }\r\n}\r\nclass Stacktrace {\r\n static create() {\r\n var _a;\r\n return new Stacktrace((_a = new Error().stack) !== null && _a !== void 0 ? _a : '');\r\n }\r\n constructor(value) {\r\n this.value = value;\r\n }\r\n print() {\r\n console.warn(this.value);\r\n }\r\n}\r\nclass Listener {\r\n constructor(callback, stacktrace) {\r\n this.callback = callback;\r\n this.stacktrace = stacktrace;\r\n }\r\n}\r\n// relatively simple event emitter taken from https://github.com/microsoft/vscode/blob/master/src/vs/base/common/event.ts\r\nexport class Emitter {\r\n static setLeakageMonitorEnabled(isEnabled) {\r\n if (isEnabled !== Emitter.ENABLE_TRACKING) {\r\n Emitter.MEMORY_LEAK_WATCHER.clear();\r\n }\r\n Emitter.ENABLE_TRACKING = isEnabled;\r\n }\r\n constructor(options) {\r\n this.options = options;\r\n this._listeners = [];\r\n this._disposed = false;\r\n }\r\n get event() {\r\n if (!this._event) {\r\n this._event = (callback) => {\r\n var _a;\r\n if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.replay) && this._last !== undefined) {\r\n callback(this._last);\r\n }\r\n const listener = new Listener(callback, Emitter.ENABLE_TRACKING ? Stacktrace.create() : undefined);\r\n this._listeners.push(listener);\r\n return {\r\n dispose: () => {\r\n const index = this._listeners.indexOf(listener);\r\n if (index > -1) {\r\n this._listeners.splice(index, 1);\r\n }\r\n else if (Emitter.ENABLE_TRACKING) {\r\n // console.warn(\r\n // `Listener already disposed`,\r\n // Stacktrace.create().print()\r\n // );\r\n }\r\n },\r\n };\r\n };\r\n if (Emitter.ENABLE_TRACKING) {\r\n Emitter.MEMORY_LEAK_WATCHER.add(this._event, Stacktrace.create());\r\n }\r\n }\r\n return this._event;\r\n }\r\n fire(e) {\r\n this._last = e;\r\n for (const listener of this._listeners) {\r\n listener.callback(e);\r\n }\r\n }\r\n dispose() {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n if (this._listeners.length > 0) {\r\n if (Emitter.ENABLE_TRACKING) {\r\n queueMicrotask(() => {\r\n var _a;\r\n // don't check until stack of execution is completed to allow for out-of-order disposals within the same execution block\r\n for (const listener of this._listeners) {\r\n console.warn((_a = listener.stacktrace) === null || _a === void 0 ? void 0 : _a.print());\r\n }\r\n });\r\n }\r\n this._listeners = [];\r\n }\r\n if (Emitter.ENABLE_TRACKING && this._event) {\r\n Emitter.MEMORY_LEAK_WATCHER.delete(this._event);\r\n }\r\n }\r\n }\r\n}\r\nEmitter.ENABLE_TRACKING = false;\r\nEmitter.MEMORY_LEAK_WATCHER = new LeakageMonitor();\r\nexport function addDisposableWindowListener(element, type, listener, options) {\r\n element.addEventListener(type, listener, options);\r\n return {\r\n dispose: () => {\r\n element.removeEventListener(type, listener, options);\r\n },\r\n };\r\n}\r\nexport function addDisposableListener(element, type, listener, options) {\r\n element.addEventListener(type, listener, options);\r\n return {\r\n dispose: () => {\r\n element.removeEventListener(type, listener, options);\r\n },\r\n };\r\n}\r\nexport class TickDelayedEvent {\r\n constructor() {\r\n this._onFired = new Emitter();\r\n this.onEvent = this._onFired.event;\r\n }\r\n fire() {\r\n if (this.timer) {\r\n clearTimeout(this.timer);\r\n }\r\n this.timer = setTimeout(() => {\r\n this._onFired.fire();\r\n clearTimeout(this.timer);\r\n });\r\n }\r\n dispose() {\r\n this._onFired.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=events.js.map","export function createComponent(id, componentName, components = {}, frameworkComponents = {}, createFrameworkComponent, fallback) {\r\n const Component = typeof componentName === 'string'\r\n ? components[componentName]\r\n : undefined;\r\n const FrameworkComponent = typeof componentName === 'string'\r\n ? frameworkComponents[componentName]\r\n : undefined;\r\n if (Component && FrameworkComponent) {\r\n throw new Error(`Cannot create '${id}'. component '${componentName}' registered as both a component and frameworkComponent`);\r\n }\r\n if (FrameworkComponent) {\r\n if (!createFrameworkComponent) {\r\n throw new Error(`Cannot create '${id}' for framework component '${componentName}'. you must register a frameworkPanelWrapper to use framework components`);\r\n }\r\n return createFrameworkComponent.createComponent(id, componentName, FrameworkComponent);\r\n }\r\n if (!Component) {\r\n if (fallback) {\r\n return fallback();\r\n }\r\n throw new Error(`Cannot create '${id}', no component '${componentName}' provided`);\r\n }\r\n return new Component(id, componentName);\r\n}\r\n//# sourceMappingURL=componentFactory.js.map","import { Emitter, addDisposableListener, addDisposableWindowListener, } from './events';\r\nimport { CompositeDisposable } from './lifecycle';\r\nexport function watchElementResize(element, cb) {\r\n const observer = new ResizeObserver((entires) => {\r\n /**\r\n * Fast browser window resize produces Error: ResizeObserver loop limit exceeded.\r\n * The error isn't visible in browser console, doesn't affect functionality, but degrades performance.\r\n * See https://stackoverflow.com/questions/49384120/resizeobserver-loop-limit-exceeded/58701523#58701523\r\n */\r\n requestAnimationFrame(() => {\r\n const firstEntry = entires[0];\r\n cb(firstEntry);\r\n });\r\n });\r\n observer.observe(element);\r\n return {\r\n dispose: () => {\r\n observer.unobserve(element);\r\n observer.disconnect();\r\n },\r\n };\r\n}\r\nexport const removeClasses = (element, ...classes) => {\r\n for (const classname of classes) {\r\n if (element.classList.contains(classname)) {\r\n element.classList.remove(classname);\r\n }\r\n }\r\n};\r\nexport const addClasses = (element, ...classes) => {\r\n for (const classname of classes) {\r\n if (!element.classList.contains(classname)) {\r\n element.classList.add(classname);\r\n }\r\n }\r\n};\r\nexport const toggleClass = (element, className, isToggled) => {\r\n const hasClass = element.classList.contains(className);\r\n if (isToggled && !hasClass) {\r\n element.classList.add(className);\r\n }\r\n if (!isToggled && hasClass) {\r\n element.classList.remove(className);\r\n }\r\n};\r\nexport function isAncestor(testChild, testAncestor) {\r\n while (testChild) {\r\n if (testChild === testAncestor) {\r\n return true;\r\n }\r\n testChild = testChild.parentNode;\r\n }\r\n return false;\r\n}\r\nexport function getElementsByTagName(tag) {\r\n return Array.prototype.slice.call(document.getElementsByTagName(tag), 0);\r\n}\r\nexport function trackFocus(element) {\r\n return new FocusTracker(element);\r\n}\r\n/**\r\n * Track focus on an element. Ensure tabIndex is set when an HTMLElement is not focusable by default\r\n */\r\nclass FocusTracker extends CompositeDisposable {\r\n constructor(element) {\r\n super();\r\n this._onDidFocus = new Emitter();\r\n this.onDidFocus = this._onDidFocus.event;\r\n this._onDidBlur = new Emitter();\r\n this.onDidBlur = this._onDidBlur.event;\r\n this.addDisposables(this._onDidFocus, this._onDidBlur);\r\n let hasFocus = isAncestor(document.activeElement, element);\r\n let loosingFocus = false;\r\n const onFocus = () => {\r\n loosingFocus = false;\r\n if (!hasFocus) {\r\n hasFocus = true;\r\n this._onDidFocus.fire();\r\n }\r\n };\r\n const onBlur = () => {\r\n if (hasFocus) {\r\n loosingFocus = true;\r\n window.setTimeout(() => {\r\n if (loosingFocus) {\r\n loosingFocus = false;\r\n hasFocus = false;\r\n this._onDidBlur.fire();\r\n }\r\n }, 0);\r\n }\r\n };\r\n this._refreshStateHandler = () => {\r\n const currentNodeHasFocus = isAncestor(document.activeElement, element);\r\n if (currentNodeHasFocus !== hasFocus) {\r\n if (hasFocus) {\r\n onBlur();\r\n }\r\n else {\r\n onFocus();\r\n }\r\n }\r\n };\r\n if (element instanceof HTMLElement) {\r\n this.addDisposables(addDisposableListener(element, 'focus', onFocus, true));\r\n this.addDisposables(addDisposableListener(element, 'blur', onBlur, true));\r\n }\r\n else {\r\n this.addDisposables(addDisposableWindowListener(element, 'focus', onFocus, true));\r\n this.addDisposables(addDisposableWindowListener(element, 'blur', onBlur, true));\r\n }\r\n }\r\n refreshState() {\r\n this._refreshStateHandler();\r\n }\r\n}\r\n// quasi: apparently, but not really; seemingly\r\nconst QUASI_PREVENT_DEFAULT_KEY = 'dv-quasiPreventDefault';\r\n// mark an event directly for other listeners to check\r\nexport function quasiPreventDefault(event) {\r\n event[QUASI_PREVENT_DEFAULT_KEY] = true;\r\n}\r\n// check if this event has been marked\r\nexport function quasiDefaultPrevented(event) {\r\n return event[QUASI_PREVENT_DEFAULT_KEY];\r\n}\r\n//# sourceMappingURL=dom.js.map","export function tail(arr) {\r\n if (arr.length === 0) {\r\n throw new Error('Invalid tail call');\r\n }\r\n return [arr.slice(0, arr.length - 1), arr[arr.length - 1]];\r\n}\r\nexport function last(arr) {\r\n return arr.length > 0 ? arr[arr.length - 1] : undefined;\r\n}\r\nexport function sequenceEquals(arr1, arr2) {\r\n if (arr1.length !== arr2.length) {\r\n return false;\r\n }\r\n for (let i = 0; i < arr1.length; i++) {\r\n if (arr1[i] !== arr2[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * Pushes an element to the start of the array, if found.\r\n */\r\nexport function pushToStart(arr, value) {\r\n const index = arr.indexOf(value);\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n arr.unshift(value);\r\n }\r\n}\r\n/**\r\n * Pushes an element to the end of the array, if found.\r\n */\r\nexport function pushToEnd(arr, value) {\r\n const index = arr.indexOf(value);\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n arr.push(value);\r\n }\r\n}\r\nexport function firstIndex(array, fn) {\r\n for (let i = 0; i < array.length; i++) {\r\n const element = array[i];\r\n if (fn(element)) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\nexport function remove(array, value) {\r\n const index = array.findIndex((t) => t === value);\r\n if (index > -1) {\r\n array.splice(index, 1);\r\n return true;\r\n }\r\n return false;\r\n}\r\n//# sourceMappingURL=array.js.map","export const clamp = (value, min, max) => {\r\n if (min > max) {\r\n throw new Error(`${min} > ${max} is an invalid condition`);\r\n }\r\n return Math.min(max, Math.max(value, min));\r\n};\r\nexport const sequentialNumberGenerator = () => {\r\n let value = 1;\r\n return { next: () => (value++).toString() };\r\n};\r\nexport const range = (from, to) => {\r\n const result = [];\r\n if (typeof to !== 'number') {\r\n to = from;\r\n from = 0;\r\n }\r\n if (from <= to) {\r\n for (let i = from; i < to; i++) {\r\n result.push(i);\r\n }\r\n }\r\n else {\r\n for (let i = from; i > to; i--) {\r\n result.push(i);\r\n }\r\n }\r\n return result;\r\n};\r\n//# sourceMappingURL=math.js.map","import { clamp } from '../math';\r\nexport class ViewItem {\r\n set size(size) {\r\n this._size = size;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n get cachedVisibleSize() {\r\n return this._cachedVisibleSize;\r\n }\r\n get visible() {\r\n return typeof this._cachedVisibleSize === 'undefined';\r\n }\r\n get minimumSize() {\r\n return this.visible ? this.view.minimumSize : 0;\r\n }\r\n get viewMinimumSize() {\r\n return this.view.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.visible ? this.view.maximumSize : 0;\r\n }\r\n get viewMaximumSize() {\r\n return this.view.maximumSize;\r\n }\r\n get priority() {\r\n return this.view.priority;\r\n }\r\n get snap() {\r\n return !!this.view.snap;\r\n }\r\n set enabled(enabled) {\r\n this.container.style.pointerEvents = enabled ? '' : 'none';\r\n }\r\n constructor(container, view, size, disposable) {\r\n this.container = container;\r\n this.view = view;\r\n this.disposable = disposable;\r\n this._cachedVisibleSize = undefined;\r\n if (typeof size === 'number') {\r\n this._size = size;\r\n this._cachedVisibleSize = undefined;\r\n container.classList.add('visible');\r\n }\r\n else {\r\n this._size = 0;\r\n this._cachedVisibleSize = size.cachedVisibleSize;\r\n }\r\n }\r\n setVisible(visible, size) {\r\n var _a;\r\n if (visible === this.visible) {\r\n return;\r\n }\r\n if (visible) {\r\n this.size = clamp((_a = this._cachedVisibleSize) !== null && _a !== void 0 ? _a : 0, this.viewMinimumSize, this.viewMaximumSize);\r\n this._cachedVisibleSize = undefined;\r\n }\r\n else {\r\n this._cachedVisibleSize =\r\n typeof size === 'number' ? size : this.size;\r\n this.size = 0;\r\n }\r\n this.container.classList.toggle('visible', visible);\r\n if (this.view.setVisible) {\r\n this.view.setVisible(visible);\r\n }\r\n }\r\n dispose() {\r\n this.disposable.dispose();\r\n return this.view;\r\n }\r\n}\r\n//# sourceMappingURL=viewItem.js.map","/*---------------------------------------------------------------------------------------------\r\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\r\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/splitview\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { removeClasses, addClasses, toggleClass, getElementsByTagName, } from '../dom';\r\nimport { Emitter } from '../events';\r\nimport { pushToStart, pushToEnd, firstIndex } from '../array';\r\nimport { range, clamp } from '../math';\r\nimport { ViewItem } from './viewItem';\r\nexport var Orientation;\r\n(function (Orientation) {\r\n Orientation[\"HORIZONTAL\"] = \"HORIZONTAL\";\r\n Orientation[\"VERTICAL\"] = \"VERTICAL\";\r\n})(Orientation || (Orientation = {}));\r\nexport var SashState;\r\n(function (SashState) {\r\n SashState[SashState[\"MAXIMUM\"] = 0] = \"MAXIMUM\";\r\n SashState[SashState[\"MINIMUM\"] = 1] = \"MINIMUM\";\r\n SashState[SashState[\"DISABLED\"] = 2] = \"DISABLED\";\r\n SashState[SashState[\"ENABLED\"] = 3] = \"ENABLED\";\r\n})(SashState || (SashState = {}));\r\nexport var LayoutPriority;\r\n(function (LayoutPriority) {\r\n LayoutPriority[\"Low\"] = \"low\";\r\n LayoutPriority[\"High\"] = \"high\";\r\n LayoutPriority[\"Normal\"] = \"normal\";\r\n})(LayoutPriority || (LayoutPriority = {}));\r\nexport var Sizing;\r\n(function (Sizing) {\r\n Sizing.Distribute = { type: 'distribute' };\r\n function Split(index) {\r\n return { type: 'split', index };\r\n }\r\n Sizing.Split = Split;\r\n function Invisible(cachedVisibleSize) {\r\n return { type: 'invisible', cachedVisibleSize };\r\n }\r\n Sizing.Invisible = Invisible;\r\n})(Sizing || (Sizing = {}));\r\nexport class Splitview {\r\n get size() {\r\n return this._size;\r\n }\r\n set size(value) {\r\n this._size = value;\r\n }\r\n get orthogonalSize() {\r\n return this._orthogonalSize;\r\n }\r\n set orthogonalSize(value) {\r\n this._orthogonalSize = value;\r\n }\r\n get length() {\r\n return this.viewItems.length;\r\n }\r\n get proportions() {\r\n return this._proportions ? [...this._proportions] : undefined;\r\n }\r\n get orientation() {\r\n return this._orientation;\r\n }\r\n set orientation(value) {\r\n this._orientation = value;\r\n const tmp = this.size;\r\n this.size = this.orthogonalSize;\r\n this.orthogonalSize = tmp;\r\n removeClasses(this.element, 'horizontal', 'vertical');\r\n this.element.classList.add(this.orientation == Orientation.HORIZONTAL\r\n ? 'horizontal'\r\n : 'vertical');\r\n }\r\n get minimumSize() {\r\n return this.viewItems.reduce((r, item) => r + item.minimumSize, 0);\r\n }\r\n get maximumSize() {\r\n return this.length === 0\r\n ? Number.POSITIVE_INFINITY\r\n : this.viewItems.reduce((r, item) => r + item.maximumSize, 0);\r\n }\r\n get startSnappingEnabled() {\r\n return this._startSnappingEnabled;\r\n }\r\n set startSnappingEnabled(startSnappingEnabled) {\r\n if (this._startSnappingEnabled === startSnappingEnabled) {\r\n return;\r\n }\r\n this._startSnappingEnabled = startSnappingEnabled;\r\n this.updateSashEnablement();\r\n }\r\n get endSnappingEnabled() {\r\n return this._endSnappingEnabled;\r\n }\r\n set endSnappingEnabled(endSnappingEnabled) {\r\n if (this._endSnappingEnabled === endSnappingEnabled) {\r\n return;\r\n }\r\n this._endSnappingEnabled = endSnappingEnabled;\r\n this.updateSashEnablement();\r\n }\r\n constructor(container, options) {\r\n this.container = container;\r\n this.viewItems = [];\r\n this.sashes = [];\r\n this._size = 0;\r\n this._orthogonalSize = 0;\r\n this.contentSize = 0;\r\n this._proportions = undefined;\r\n this._startSnappingEnabled = true;\r\n this._endSnappingEnabled = true;\r\n this._onDidSashEnd = new Emitter();\r\n this.onDidSashEnd = this._onDidSashEnd.event;\r\n this._onDidAddView = new Emitter();\r\n this.onDidAddView = this._onDidAddView.event;\r\n this._onDidRemoveView = new Emitter();\r\n this.onDidRemoveView = this._onDidRemoveView.event;\r\n this.resize = (index, delta, sizes = this.viewItems.map((x) => x.size), lowPriorityIndexes, highPriorityIndexes, overloadMinDelta = Number.NEGATIVE_INFINITY, overloadMaxDelta = Number.POSITIVE_INFINITY, snapBefore, snapAfter) => {\r\n if (index < 0 || index > this.viewItems.length) {\r\n return 0;\r\n }\r\n const upIndexes = range(index, -1);\r\n const downIndexes = range(index + 1, this.viewItems.length);\r\n //\r\n if (highPriorityIndexes) {\r\n for (const i of highPriorityIndexes) {\r\n pushToStart(upIndexes, i);\r\n pushToStart(downIndexes, i);\r\n }\r\n }\r\n if (lowPriorityIndexes) {\r\n for (const i of lowPriorityIndexes) {\r\n pushToEnd(upIndexes, i);\r\n pushToEnd(downIndexes, i);\r\n }\r\n }\r\n //\r\n const upItems = upIndexes.map((i) => this.viewItems[i]);\r\n const upSizes = upIndexes.map((i) => sizes[i]);\r\n //\r\n const downItems = downIndexes.map((i) => this.viewItems[i]);\r\n const downSizes = downIndexes.map((i) => sizes[i]);\r\n //\r\n const minDeltaUp = upIndexes.reduce((_, i) => _ + this.viewItems[i].minimumSize - sizes[i], 0);\r\n const maxDeltaUp = upIndexes.reduce((_, i) => _ + this.viewItems[i].maximumSize - sizes[i], 0);\r\n //\r\n const maxDeltaDown = downIndexes.length === 0\r\n ? Number.POSITIVE_INFINITY\r\n : downIndexes.reduce((_, i) => _ + sizes[i] - this.viewItems[i].minimumSize, 0);\r\n const minDeltaDown = downIndexes.length === 0\r\n ? Number.NEGATIVE_INFINITY\r\n : downIndexes.reduce((_, i) => _ + sizes[i] - this.viewItems[i].maximumSize, 0);\r\n //\r\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\r\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\r\n //\r\n let snapped = false;\r\n if (snapBefore) {\r\n const snapView = this.viewItems[snapBefore.index];\r\n const visible = delta >= snapBefore.limitDelta;\r\n snapped = visible !== snapView.visible;\r\n snapView.setVisible(visible, snapBefore.size);\r\n }\r\n if (!snapped && snapAfter) {\r\n const snapView = this.viewItems[snapAfter.index];\r\n const visible = delta < snapAfter.limitDelta;\r\n snapped = visible !== snapView.visible;\r\n snapView.setVisible(visible, snapAfter.size);\r\n }\r\n if (snapped) {\r\n return this.resize(index, delta, sizes, lowPriorityIndexes, highPriorityIndexes, overloadMinDelta, overloadMaxDelta);\r\n }\r\n //\r\n const tentativeDelta = clamp(delta, minDelta, maxDelta);\r\n let actualDelta = 0;\r\n //\r\n let deltaUp = tentativeDelta;\r\n for (let i = 0; i < upItems.length; i++) {\r\n const item = upItems[i];\r\n const size = clamp(upSizes[i] + deltaUp, item.minimumSize, item.maximumSize);\r\n const viewDelta = size - upSizes[i];\r\n actualDelta += viewDelta;\r\n deltaUp -= viewDelta;\r\n item.size = size;\r\n }\r\n //\r\n let deltaDown = actualDelta;\r\n for (let i = 0; i < downItems.length; i++) {\r\n const item = downItems[i];\r\n const size = clamp(downSizes[i] - deltaDown, item.minimumSize, item.maximumSize);\r\n const viewDelta = size - downSizes[i];\r\n deltaDown += viewDelta;\r\n item.size = size;\r\n }\r\n //\r\n return delta;\r\n };\r\n this._orientation = options.orientation;\r\n this.element = this.createContainer();\r\n this.proportionalLayout =\r\n options.proportionalLayout === undefined\r\n ? true\r\n : !!options.proportionalLayout;\r\n this.viewContainer = this.createViewContainer();\r\n this.sashContainer = this.createSashContainer();\r\n this.element.appendChild(this.sashContainer);\r\n this.element.appendChild(this.viewContainer);\r\n this.container.appendChild(this.element);\r\n this.style(options.styles);\r\n // We have an existing set of view, add them now\r\n if (options.descriptor) {\r\n this._size = options.descriptor.size;\r\n options.descriptor.views.forEach((viewDescriptor, index) => {\r\n const sizing = viewDescriptor.visible === undefined ||\r\n viewDescriptor.visible\r\n ? viewDescriptor.size\r\n : {\r\n type: 'invisible',\r\n cachedVisibleSize: viewDescriptor.size,\r\n };\r\n const view = viewDescriptor.view;\r\n this.addView(view, sizing, index, true\r\n // true skip layout\r\n );\r\n });\r\n // Initialize content size and proportions for first layout\r\n this.contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n this.saveProportions();\r\n }\r\n }\r\n style(styles) {\r\n if ((styles === null || styles === void 0 ? void 0 : styles.separatorBorder) === 'transparent') {\r\n removeClasses(this.element, 'separator-border');\r\n this.element.style.removeProperty('--dv-separator-border');\r\n }\r\n else {\r\n addClasses(this.element, 'separator-border');\r\n if (styles === null || styles === void 0 ? void 0 : styles.separatorBorder) {\r\n this.element.style.setProperty('--dv-separator-border', styles.separatorBorder);\r\n }\r\n }\r\n }\r\n isViewVisible(index) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n throw new Error('Index out of bounds');\r\n }\r\n const viewItem = this.viewItems[index];\r\n return viewItem.visible;\r\n }\r\n setViewVisible(index, visible) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n throw new Error('Index out of bounds');\r\n }\r\n toggleClass(this.container, 'visible', visible);\r\n const viewItem = this.viewItems[index];\r\n toggleClass(this.container, 'visible', visible);\r\n viewItem.setVisible(visible, viewItem.size);\r\n this.distributeEmptySpace(index);\r\n this.layoutViews();\r\n this.saveProportions();\r\n }\r\n getViewSize(index) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n return -1;\r\n }\r\n return this.viewItems[index].size;\r\n }\r\n resizeView(index, size) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n return;\r\n }\r\n const indexes = range(this.viewItems.length).filter((i) => i !== index);\r\n const lowPriorityIndexes = [\r\n ...indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low),\r\n index,\r\n ];\r\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\r\n const item = this.viewItems[index];\r\n size = Math.round(size);\r\n size = clamp(size, item.minimumSize, Math.min(item.maximumSize, this._size));\r\n item.size = size;\r\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\r\n }\r\n getViews() {\r\n return this.viewItems.map((x) => x.view);\r\n }\r\n onDidChange(item, size) {\r\n const index = this.viewItems.indexOf(item);\r\n if (index < 0 || index >= this.viewItems.length) {\r\n return;\r\n }\r\n size = typeof size === 'number' ? size : item.size;\r\n size = clamp(size, item.minimumSize, item.maximumSize);\r\n item.size = size;\r\n this.relayout([index]);\r\n }\r\n addView(view, size = { type: 'distribute' }, index = this.viewItems.length, skipLayout) {\r\n const container = document.createElement('div');\r\n container.className = 'view';\r\n container.appendChild(view.element);\r\n let viewSize;\r\n if (typeof size === 'number') {\r\n viewSize = size;\r\n }\r\n else if (size.type === 'split') {\r\n viewSize = this.getViewSize(size.index) / 2;\r\n }\r\n else if (size.type === 'invisible') {\r\n viewSize = { cachedVisibleSize: size.cachedVisibleSize };\r\n }\r\n else {\r\n viewSize = view.minimumSize;\r\n }\r\n const disposable = view.onDidChange((newSize) => this.onDidChange(viewItem, newSize.size));\r\n const viewItem = new ViewItem(container, view, viewSize, {\r\n dispose: () => {\r\n disposable.dispose();\r\n this.viewContainer.removeChild(container);\r\n },\r\n });\r\n if (index === this.viewItems.length) {\r\n this.viewContainer.appendChild(container);\r\n }\r\n else {\r\n this.viewContainer.insertBefore(container, this.viewContainer.children.item(index));\r\n }\r\n this.viewItems.splice(index, 0, viewItem);\r\n if (this.viewItems.length > 1) {\r\n //add sash\r\n const sash = document.createElement('div');\r\n sash.className = 'sash';\r\n const onPointerStart = (event) => {\r\n for (const item of this.viewItems) {\r\n item.enabled = false;\r\n }\r\n const iframes = [\r\n ...getElementsByTagName('iframe'),\r\n ...getElementsByTagName('webview'),\r\n ];\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'none';\r\n }\r\n const start = this._orientation === Orientation.HORIZONTAL\r\n ? event.clientX\r\n : event.clientY;\r\n const sashIndex = firstIndex(this.sashes, (s) => s.container === sash);\r\n //\r\n const sizes = this.viewItems.map((x) => x.size);\r\n //\r\n let snapBefore;\r\n let snapAfter;\r\n const upIndexes = range(sashIndex, -1);\r\n const downIndexes = range(sashIndex + 1, this.viewItems.length);\r\n const minDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].minimumSize - sizes[i]), 0);\r\n const maxDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].viewMaximumSize - sizes[i]), 0);\r\n const maxDeltaDown = downIndexes.length === 0\r\n ? Number.POSITIVE_INFINITY\r\n : downIndexes.reduce((r, i) => r +\r\n (sizes[i] - this.viewItems[i].minimumSize), 0);\r\n const minDeltaDown = downIndexes.length === 0\r\n ? Number.NEGATIVE_INFINITY\r\n : downIndexes.reduce((r, i) => r +\r\n (sizes[i] -\r\n this.viewItems[i].viewMaximumSize), 0);\r\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\r\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\r\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\r\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\r\n if (typeof snapBeforeIndex === 'number') {\r\n const snappedViewItem = this.viewItems[snapBeforeIndex];\r\n const halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);\r\n snapBefore = {\r\n index: snapBeforeIndex,\r\n limitDelta: snappedViewItem.visible\r\n ? minDelta - halfSize\r\n : minDelta + halfSize,\r\n size: snappedViewItem.size,\r\n };\r\n }\r\n if (typeof snapAfterIndex === 'number') {\r\n const snappedViewItem = this.viewItems[snapAfterIndex];\r\n const halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);\r\n snapAfter = {\r\n index: snapAfterIndex,\r\n limitDelta: snappedViewItem.visible\r\n ? maxDelta + halfSize\r\n : maxDelta - halfSize,\r\n size: snappedViewItem.size,\r\n };\r\n }\r\n const onPointerMove = (event) => {\r\n const current = this._orientation === Orientation.HORIZONTAL\r\n ? event.clientX\r\n : event.clientY;\r\n const delta = current - start;\r\n this.resize(sashIndex, delta, sizes, undefined, undefined, minDelta, maxDelta, snapBefore, snapAfter);\r\n this.distributeEmptySpace();\r\n this.layoutViews();\r\n };\r\n const end = () => {\r\n for (const item of this.viewItems) {\r\n item.enabled = true;\r\n }\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'auto';\r\n }\r\n this.saveProportions();\r\n document.removeEventListener('pointermove', onPointerMove);\r\n document.removeEventListener('pointerup', end);\r\n document.removeEventListener('pointercancel', end);\r\n this._onDidSashEnd.fire(undefined);\r\n };\r\n document.addEventListener('pointermove', onPointerMove);\r\n document.addEventListener('pointerup', end);\r\n document.addEventListener('pointercancel', end);\r\n };\r\n sash.addEventListener('pointerdown', onPointerStart);\r\n const sashItem = {\r\n container: sash,\r\n disposable: () => {\r\n sash.removeEventListener('pointerdown', onPointerStart);\r\n this.sashContainer.removeChild(sash);\r\n },\r\n };\r\n this.sashContainer.appendChild(sash);\r\n this.sashes.push(sashItem);\r\n }\r\n if (!skipLayout) {\r\n this.relayout([index]);\r\n }\r\n if (!skipLayout &&\r\n typeof size !== 'number' &&\r\n size.type === 'distribute') {\r\n this.distributeViewSizes();\r\n }\r\n this._onDidAddView.fire(view);\r\n }\r\n distributeViewSizes() {\r\n const flexibleViewItems = [];\r\n let flexibleSize = 0;\r\n for (const item of this.viewItems) {\r\n if (item.maximumSize - item.minimumSize > 0) {\r\n flexibleViewItems.push(item);\r\n flexibleSize += item.size;\r\n }\r\n }\r\n const size = Math.floor(flexibleSize / flexibleViewItems.length);\r\n for (const item of flexibleViewItems) {\r\n item.size = clamp(size, item.minimumSize, item.maximumSize);\r\n }\r\n const indexes = range(this.viewItems.length);\r\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\r\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\r\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\r\n }\r\n removeView(index, sizing, skipLayout = false) {\r\n // Remove view\r\n const viewItem = this.viewItems.splice(index, 1)[0];\r\n viewItem.dispose();\r\n // Remove sash\r\n if (this.viewItems.length >= 1) {\r\n const sashIndex = Math.max(index - 1, 0);\r\n const sashItem = this.sashes.splice(sashIndex, 1)[0];\r\n sashItem.disposable();\r\n }\r\n if (!skipLayout) {\r\n this.relayout();\r\n }\r\n if (sizing && sizing.type === 'distribute') {\r\n this.distributeViewSizes();\r\n }\r\n this._onDidRemoveView.fire(viewItem.view);\r\n return viewItem.view;\r\n }\r\n getViewCachedVisibleSize(index) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n throw new Error('Index out of bounds');\r\n }\r\n const viewItem = this.viewItems[index];\r\n return viewItem.cachedVisibleSize;\r\n }\r\n moveView(from, to) {\r\n const cachedVisibleSize = this.getViewCachedVisibleSize(from);\r\n const sizing = typeof cachedVisibleSize === 'undefined'\r\n ? this.getViewSize(from)\r\n : Sizing.Invisible(cachedVisibleSize);\r\n const view = this.removeView(from, undefined, true);\r\n this.addView(view, sizing, to);\r\n }\r\n layout(size, orthogonalSize) {\r\n const previousSize = Math.max(this.size, this.contentSize);\r\n this.size = size;\r\n this.orthogonalSize = orthogonalSize;\r\n if (!this.proportions) {\r\n const indexes = range(this.viewItems.length);\r\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\r\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\r\n this.resize(this.viewItems.length - 1, size - previousSize, undefined, lowPriorityIndexes, highPriorityIndexes);\r\n }\r\n else {\r\n for (let i = 0; i < this.viewItems.length; i++) {\r\n const item = this.viewItems[i];\r\n item.size = clamp(Math.round(this.proportions[i] * size), item.minimumSize, item.maximumSize);\r\n }\r\n }\r\n this.distributeEmptySpace();\r\n this.layoutViews();\r\n }\r\n relayout(lowPriorityIndexes, highPriorityIndexes) {\r\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n this.resize(this.viewItems.length - 1, this._size - contentSize, undefined, lowPriorityIndexes, highPriorityIndexes);\r\n this.distributeEmptySpace();\r\n this.layoutViews();\r\n this.saveProportions();\r\n }\r\n distributeEmptySpace(lowPriorityIndex) {\r\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n let emptyDelta = this.size - contentSize;\r\n const indexes = range(this.viewItems.length - 1, -1);\r\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\r\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\r\n for (const index of highPriorityIndexes) {\r\n pushToStart(indexes, index);\r\n }\r\n for (const index of lowPriorityIndexes) {\r\n pushToEnd(indexes, index);\r\n }\r\n if (typeof lowPriorityIndex === 'number') {\r\n pushToEnd(indexes, lowPriorityIndex);\r\n }\r\n for (let i = 0; emptyDelta !== 0 && i < indexes.length; i++) {\r\n const item = this.viewItems[indexes[i]];\r\n const size = clamp(item.size + emptyDelta, item.minimumSize, item.maximumSize);\r\n const viewDelta = size - item.size;\r\n emptyDelta -= viewDelta;\r\n item.size = size;\r\n }\r\n }\r\n saveProportions() {\r\n if (this.proportionalLayout && this.contentSize > 0) {\r\n this._proportions = this.viewItems.map((i) => i.size / this.contentSize);\r\n }\r\n }\r\n layoutViews() {\r\n this.contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n let sum = 0;\r\n const x = [];\r\n this.updateSashEnablement();\r\n for (let i = 0; i < this.viewItems.length - 1; i++) {\r\n sum += this.viewItems[i].size;\r\n x.push(sum);\r\n const offset = Math.min(Math.max(0, sum - 2), this.size - 4);\r\n if (this._orientation === Orientation.HORIZONTAL) {\r\n this.sashes[i].container.style.left = `${offset}px`;\r\n this.sashes[i].container.style.top = `0px`;\r\n }\r\n if (this._orientation === Orientation.VERTICAL) {\r\n this.sashes[i].container.style.left = `0px`;\r\n this.sashes[i].container.style.top = `${offset}px`;\r\n }\r\n }\r\n this.viewItems.forEach((view, i) => {\r\n if (this._orientation === Orientation.HORIZONTAL) {\r\n view.container.style.width = `${view.size}px`;\r\n view.container.style.left = i == 0 ? '0px' : `${x[i - 1]}px`;\r\n view.container.style.top = '';\r\n view.container.style.height = '';\r\n }\r\n if (this._orientation === Orientation.VERTICAL) {\r\n view.container.style.height = `${view.size}px`;\r\n view.container.style.top = i == 0 ? '0px' : `${x[i - 1]}px`;\r\n view.container.style.width = '';\r\n view.container.style.left = '';\r\n }\r\n view.view.layout(view.size, this._orthogonalSize);\r\n });\r\n }\r\n findFirstSnapIndex(indexes) {\r\n // visible views first\r\n for (const index of indexes) {\r\n const viewItem = this.viewItems[index];\r\n if (!viewItem.visible) {\r\n continue;\r\n }\r\n if (viewItem.snap) {\r\n return index;\r\n }\r\n }\r\n // then, hidden views\r\n for (const index of indexes) {\r\n const viewItem = this.viewItems[index];\r\n if (viewItem.visible &&\r\n viewItem.maximumSize - viewItem.minimumSize > 0) {\r\n return undefined;\r\n }\r\n if (!viewItem.visible && viewItem.snap) {\r\n return index;\r\n }\r\n }\r\n return undefined;\r\n }\r\n updateSashEnablement() {\r\n let previous = false;\r\n const collapsesDown = this.viewItems.map((i) => (previous = i.size - i.minimumSize > 0 || previous));\r\n previous = false;\r\n const expandsDown = this.viewItems.map((i) => (previous = i.maximumSize - i.size > 0 || previous));\r\n const reverseViews = [...this.viewItems].reverse();\r\n previous = false;\r\n const collapsesUp = reverseViews\r\n .map((i) => (previous = i.size - i.minimumSize > 0 || previous))\r\n .reverse();\r\n previous = false;\r\n const expandsUp = reverseViews\r\n .map((i) => (previous = i.maximumSize - i.size > 0 || previous))\r\n .reverse();\r\n let position = 0;\r\n for (let index = 0; index < this.sashes.length; index++) {\r\n const sash = this.sashes[index];\r\n const viewItem = this.viewItems[index];\r\n position += viewItem.size;\r\n const min = !(collapsesDown[index] && expandsUp[index + 1]);\r\n const max = !(expandsDown[index] && collapsesUp[index + 1]);\r\n if (min && max) {\r\n const upIndexes = range(index, -1);\r\n const downIndexes = range(index + 1, this.viewItems.length);\r\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\r\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\r\n const snappedBefore = typeof snapBeforeIndex === 'number' &&\r\n !this.viewItems[snapBeforeIndex].visible;\r\n const snappedAfter = typeof snapAfterIndex === 'number' &&\r\n !this.viewItems[snapAfterIndex].visible;\r\n if (snappedBefore &&\r\n collapsesUp[index] &&\r\n (position > 0 || this.startSnappingEnabled)) {\r\n this.updateSash(sash, SashState.MINIMUM);\r\n }\r\n else if (snappedAfter &&\r\n collapsesDown[index] &&\r\n (position < this.contentSize || this.endSnappingEnabled)) {\r\n this.updateSash(sash, SashState.MAXIMUM);\r\n }\r\n else {\r\n this.updateSash(sash, SashState.DISABLED);\r\n }\r\n }\r\n else if (min && !max) {\r\n this.updateSash(sash, SashState.MINIMUM);\r\n }\r\n else if (!min && max) {\r\n this.updateSash(sash, SashState.MAXIMUM);\r\n }\r\n else {\r\n this.updateSash(sash, SashState.ENABLED);\r\n }\r\n }\r\n }\r\n updateSash(sash, state) {\r\n toggleClass(sash.container, 'disabled', state === SashState.DISABLED);\r\n toggleClass(sash.container, 'enabled', state === SashState.ENABLED);\r\n toggleClass(sash.container, 'maximum', state === SashState.MAXIMUM);\r\n toggleClass(sash.container, 'minimum', state === SashState.MINIMUM);\r\n }\r\n createViewContainer() {\r\n const element = document.createElement('div');\r\n element.className = 'view-container';\r\n return element;\r\n }\r\n createSashContainer() {\r\n const element = document.createElement('div');\r\n element.className = 'sash-container';\r\n return element;\r\n }\r\n createContainer() {\r\n const element = document.createElement('div');\r\n const orientationClassname = this._orientation === Orientation.HORIZONTAL\r\n ? 'horizontal'\r\n : 'vertical';\r\n element.className = `split-view-container ${orientationClassname}`;\r\n return element;\r\n }\r\n dispose() {\r\n this._onDidSashEnd.dispose();\r\n this._onDidAddView.dispose();\r\n this._onDidRemoveView.dispose();\r\n for (let i = 0; i < this.element.children.length; i++) {\r\n if (this.element.children.item(i) === this.element) {\r\n this.element.removeChild(this.element);\r\n break;\r\n }\r\n }\r\n for (const viewItem of this.viewItems) {\r\n viewItem.dispose();\r\n }\r\n this.element.remove();\r\n }\r\n}\r\n//# sourceMappingURL=splitview.js.map","import { Splitview, Orientation, } from '../splitview/splitview';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nimport { Emitter } from '../events';\r\nimport { addClasses, removeClasses } from '../dom';\r\nexport class Paneview extends CompositeDisposable {\r\n get onDidAddView() {\r\n return this.splitview.onDidAddView;\r\n }\r\n get onDidRemoveView() {\r\n return this.splitview.onDidRemoveView;\r\n }\r\n get minimumSize() {\r\n return this.splitview.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.splitview.maximumSize;\r\n }\r\n get orientation() {\r\n return this.splitview.orientation;\r\n }\r\n get size() {\r\n return this.splitview.size;\r\n }\r\n get orthogonalSize() {\r\n return this.splitview.orthogonalSize;\r\n }\r\n constructor(container, options) {\r\n var _a;\r\n super();\r\n this.paneItems = [];\r\n this.skipAnimation = false;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._orientation = (_a = options.orientation) !== null && _a !== void 0 ? _a : Orientation.VERTICAL;\r\n this.element = document.createElement('div');\r\n this.element.className = 'pane-container';\r\n container.appendChild(this.element);\r\n this.splitview = new Splitview(this.element, {\r\n orientation: this._orientation,\r\n proportionalLayout: false,\r\n descriptor: options.descriptor,\r\n });\r\n // if we've added views from the descriptor we need to\r\n // add the panes to our Pane array and setup animation\r\n this.getPanes().forEach((pane) => {\r\n const disposable = new CompositeDisposable(pane.onDidChangeExpansionState(() => {\r\n this.setupAnimation();\r\n this._onDidChange.fire(undefined);\r\n }));\r\n const paneItem = {\r\n pane,\r\n disposable: {\r\n dispose: () => {\r\n disposable.dispose();\r\n },\r\n },\r\n };\r\n this.paneItems.push(paneItem);\r\n pane.orthogonalSize = this.splitview.orthogonalSize;\r\n });\r\n this.addDisposables(this._onDidChange, this.splitview.onDidSashEnd(() => {\r\n this._onDidChange.fire(undefined);\r\n }), this.splitview.onDidAddView(() => {\r\n this._onDidChange.fire();\r\n }), this.splitview.onDidRemoveView(() => {\r\n this._onDidChange.fire();\r\n }));\r\n }\r\n addPane(pane, size, index = this.splitview.length, skipLayout = false) {\r\n const disposable = pane.onDidChangeExpansionState(() => {\r\n this.setupAnimation();\r\n this._onDidChange.fire(undefined);\r\n });\r\n const paneItem = {\r\n pane,\r\n disposable: {\r\n dispose: () => {\r\n disposable.dispose();\r\n },\r\n },\r\n };\r\n this.paneItems.splice(index, 0, paneItem);\r\n pane.orthogonalSize = this.splitview.orthogonalSize;\r\n this.splitview.addView(pane, size, index, skipLayout);\r\n }\r\n getViewSize(index) {\r\n return this.splitview.getViewSize(index);\r\n }\r\n getPanes() {\r\n return this.splitview.getViews();\r\n }\r\n removePane(index, options = { skipDispose: false }) {\r\n const paneItem = this.paneItems.splice(index, 1)[0];\r\n this.splitview.removeView(index);\r\n if (!options.skipDispose) {\r\n paneItem.disposable.dispose();\r\n paneItem.pane.dispose();\r\n }\r\n return paneItem;\r\n }\r\n moveView(from, to) {\r\n if (from === to) {\r\n return;\r\n }\r\n const view = this.removePane(from, { skipDispose: true });\r\n this.skipAnimation = true;\r\n try {\r\n this.addPane(view.pane, view.pane.size, to, false);\r\n }\r\n finally {\r\n this.skipAnimation = false;\r\n }\r\n }\r\n layout(size, orthogonalSize) {\r\n this.splitview.layout(size, orthogonalSize);\r\n }\r\n setupAnimation() {\r\n if (this.skipAnimation) {\r\n return;\r\n }\r\n if (this.animationTimer) {\r\n clearTimeout(this.animationTimer);\r\n this.animationTimer = undefined;\r\n }\r\n addClasses(this.element, 'animated');\r\n this.animationTimer = setTimeout(() => {\r\n this.animationTimer = undefined;\r\n removeClasses(this.element, 'animated');\r\n }, 200);\r\n }\r\n dispose() {\r\n super.dispose();\r\n if (this.animationTimer) {\r\n clearTimeout(this.animationTimer);\r\n this.animationTimer = undefined;\r\n }\r\n this.paneItems.forEach((paneItem) => {\r\n paneItem.disposable.dispose();\r\n paneItem.pane.dispose();\r\n });\r\n this.paneItems = [];\r\n this.splitview.dispose();\r\n this.element.remove();\r\n }\r\n}\r\n//# sourceMappingURL=paneview.js.map","/*---------------------------------------------------------------------------------------------\r\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\r\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Orientation } from '../splitview/splitview';\r\nimport { Emitter } from '../events';\r\nexport class LeafNode {\r\n get minimumWidth() {\r\n return this.view.minimumWidth;\r\n }\r\n get maximumWidth() {\r\n return this.view.maximumWidth;\r\n }\r\n get minimumHeight() {\r\n return this.view.minimumHeight;\r\n }\r\n get maximumHeight() {\r\n return this.view.maximumHeight;\r\n }\r\n get priority() {\r\n return this.view.priority;\r\n }\r\n get snap() {\r\n return this.view.snap;\r\n }\r\n get minimumSize() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.minimumHeight\r\n : this.minimumWidth;\r\n }\r\n get maximumSize() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.maximumHeight\r\n : this.maximumWidth;\r\n }\r\n get minimumOrthogonalSize() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.minimumWidth\r\n : this.minimumHeight;\r\n }\r\n get maximumOrthogonalSize() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.maximumWidth\r\n : this.maximumHeight;\r\n }\r\n get orthogonalSize() {\r\n return this._orthogonalSize;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n get element() {\r\n return this.view.element;\r\n }\r\n get width() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.orthogonalSize\r\n : this.size;\r\n }\r\n get height() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.size\r\n : this.orthogonalSize;\r\n }\r\n constructor(view, orientation, orthogonalSize, size = 0) {\r\n this.view = view;\r\n this.orientation = orientation;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._orthogonalSize = orthogonalSize;\r\n this._size = size;\r\n this._disposable = this.view.onDidChange((event) => {\r\n if (event) {\r\n this._onDidChange.fire({\r\n size: this.orientation === Orientation.VERTICAL\r\n ? event.width\r\n : event.height,\r\n orthogonalSize: this.orientation === Orientation.VERTICAL\r\n ? event.height\r\n : event.width,\r\n });\r\n }\r\n else {\r\n this._onDidChange.fire({});\r\n }\r\n });\r\n }\r\n setVisible(visible) {\r\n if (this.view.setVisible) {\r\n this.view.setVisible(visible);\r\n this._onDidChange.fire({});\r\n }\r\n }\r\n layout(size, orthogonalSize) {\r\n this._size = size;\r\n this._orthogonalSize = orthogonalSize;\r\n this.view.layout(this.width, this.height);\r\n }\r\n dispose() {\r\n this._onDidChange.dispose();\r\n this._disposable.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=leafNode.js.map","/*---------------------------------------------------------------------------------------------\r\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\r\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Splitview, Orientation, LayoutPriority, } from '../splitview/splitview';\r\nimport { Emitter, Event } from '../events';\r\nimport { LeafNode } from './leafNode';\r\nimport { CompositeDisposable, Disposable } from '../lifecycle';\r\nexport class BranchNode extends CompositeDisposable {\r\n get width() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.size\r\n : this.orthogonalSize;\r\n }\r\n get height() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.orthogonalSize\r\n : this.size;\r\n }\r\n get minimumSize() {\r\n return this.children.length === 0\r\n ? 0\r\n : Math.max(...this.children.map((c) => c.minimumOrthogonalSize));\r\n }\r\n get maximumSize() {\r\n return Math.min(...this.children.map((c) => c.maximumOrthogonalSize));\r\n }\r\n get minimumOrthogonalSize() {\r\n return this.splitview.minimumSize;\r\n }\r\n get maximumOrthogonalSize() {\r\n return this.splitview.maximumSize;\r\n }\r\n get orthogonalSize() {\r\n return this._orthogonalSize;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n get minimumWidth() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.minimumOrthogonalSize\r\n : this.minimumSize;\r\n }\r\n get minimumHeight() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.minimumSize\r\n : this.minimumOrthogonalSize;\r\n }\r\n get maximumWidth() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.maximumOrthogonalSize\r\n : this.maximumSize;\r\n }\r\n get maximumHeight() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.maximumSize\r\n : this.maximumOrthogonalSize;\r\n }\r\n get priority() {\r\n if (this.children.length === 0) {\r\n return LayoutPriority.Normal;\r\n }\r\n const priorities = this.children.map((c) => typeof c.priority === 'undefined'\r\n ? LayoutPriority.Normal\r\n : c.priority);\r\n if (priorities.some((p) => p === LayoutPriority.High)) {\r\n return LayoutPriority.High;\r\n }\r\n else if (priorities.some((p) => p === LayoutPriority.Low)) {\r\n return LayoutPriority.Low;\r\n }\r\n return LayoutPriority.Normal;\r\n }\r\n constructor(orientation, proportionalLayout, styles, size, orthogonalSize, childDescriptors) {\r\n super();\r\n this.orientation = orientation;\r\n this.proportionalLayout = proportionalLayout;\r\n this.styles = styles;\r\n this._childrenDisposable = Disposable.NONE;\r\n this.children = [];\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._orthogonalSize = orthogonalSize;\r\n this._size = size;\r\n this.element = document.createElement('div');\r\n this.element.className = 'branch-node';\r\n if (!childDescriptors) {\r\n this.splitview = new Splitview(this.element, {\r\n orientation: this.orientation,\r\n proportionalLayout,\r\n styles,\r\n });\r\n this.splitview.layout(this.size, this.orthogonalSize);\r\n }\r\n else {\r\n const descriptor = {\r\n views: childDescriptors.map((childDescriptor) => {\r\n return {\r\n view: childDescriptor.node,\r\n size: childDescriptor.node.size,\r\n visible: childDescriptor.node instanceof LeafNode &&\r\n childDescriptor.visible !== undefined\r\n ? childDescriptor.visible\r\n : true,\r\n };\r\n }),\r\n size: this.orthogonalSize,\r\n };\r\n this.children = childDescriptors.map((c) => c.node);\r\n this.splitview = new Splitview(this.element, {\r\n orientation: this.orientation,\r\n descriptor,\r\n proportionalLayout,\r\n });\r\n }\r\n this.addDisposables(this._onDidChange, this.splitview.onDidSashEnd(() => {\r\n this._onDidChange.fire({});\r\n }));\r\n this.setupChildrenEvents();\r\n }\r\n setVisible(visible) {\r\n for (const child of this.children) {\r\n child.setVisible(visible);\r\n }\r\n }\r\n isChildVisible(index) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n return this.splitview.isViewVisible(index);\r\n }\r\n setChildVisible(index, visible) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n if (this.splitview.isViewVisible(index) === visible) {\r\n return;\r\n }\r\n this.splitview.setViewVisible(index, visible);\r\n }\r\n moveChild(from, to) {\r\n if (from === to) {\r\n return;\r\n }\r\n if (from < 0 || from >= this.children.length) {\r\n throw new Error('Invalid from index');\r\n }\r\n if (from < to) {\r\n to--;\r\n }\r\n this.splitview.moveView(from, to);\r\n const child = this._removeChild(from);\r\n this._addChild(child, to);\r\n }\r\n getChildSize(index) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n return this.splitview.getViewSize(index);\r\n }\r\n resizeChild(index, size) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n this.splitview.resizeView(index, size);\r\n }\r\n layout(size, orthogonalSize) {\r\n this._size = orthogonalSize;\r\n this._orthogonalSize = size;\r\n this.splitview.layout(orthogonalSize, size);\r\n }\r\n addChild(node, size, index, skipLayout) {\r\n if (index < 0 || index > this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n this.splitview.addView(node, size, index, skipLayout);\r\n this._addChild(node, index);\r\n }\r\n getChildCachedVisibleSize(index) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n return this.splitview.getViewCachedVisibleSize(index);\r\n }\r\n removeChild(index, sizing) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n this.splitview.removeView(index, sizing);\r\n return this._removeChild(index);\r\n }\r\n _addChild(node, index) {\r\n this.children.splice(index, 0, node);\r\n this.setupChildrenEvents();\r\n }\r\n _removeChild(index) {\r\n const [child] = this.children.splice(index, 1);\r\n this.setupChildrenEvents();\r\n return child;\r\n }\r\n setupChildrenEvents() {\r\n this._childrenDisposable.dispose();\r\n this._childrenDisposable = Event.any(...this.children.map((c) => c.onDidChange))((e) => {\r\n /**\r\n * indicate a change has occured to allows any re-rendering but don't bubble\r\n * event because that was specific to this branch\r\n */\r\n this._onDidChange.fire({ size: e.orthogonalSize });\r\n });\r\n }\r\n dispose() {\r\n this._childrenDisposable.dispose();\r\n this.splitview.dispose();\r\n this.children.forEach((child) => child.dispose());\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=branchNode.js.map","/*---------------------------------------------------------------------------------------------\r\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\r\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Orientation, Sizing, } from '../splitview/splitview';\r\nimport { tail } from '../array';\r\nimport { LeafNode } from './leafNode';\r\nimport { BranchNode } from './branchNode';\r\nimport { Emitter } from '../events';\r\nimport { MutableDisposable } from '../lifecycle';\r\nfunction findLeaf(candiateNode, last) {\r\n if (candiateNode instanceof LeafNode) {\r\n return candiateNode;\r\n }\r\n if (candiateNode instanceof BranchNode) {\r\n return findLeaf(candiateNode.children[last ? candiateNode.children.length - 1 : 0], last);\r\n }\r\n throw new Error('invalid node');\r\n}\r\nfunction flipNode(node, size, orthogonalSize) {\r\n if (node instanceof BranchNode) {\r\n const result = new BranchNode(orthogonal(node.orientation), node.proportionalLayout, node.styles, size, orthogonalSize);\r\n let totalSize = 0;\r\n for (let i = node.children.length - 1; i >= 0; i--) {\r\n const child = node.children[i];\r\n const childSize = child instanceof BranchNode ? child.orthogonalSize : child.size;\r\n let newSize = node.size === 0\r\n ? 0\r\n : Math.round((size * childSize) / node.size);\r\n totalSize += newSize;\r\n // The last view to add should adjust to rounding errors\r\n if (i === 0) {\r\n newSize += size - totalSize;\r\n }\r\n result.addChild(flipNode(child, orthogonalSize, newSize), newSize, 0, true);\r\n }\r\n return result;\r\n }\r\n else {\r\n return new LeafNode(node.view, orthogonal(node.orientation), orthogonalSize);\r\n }\r\n}\r\nexport function indexInParent(element) {\r\n const parentElement = element.parentElement;\r\n if (!parentElement) {\r\n throw new Error('Invalid grid element');\r\n }\r\n let el = parentElement.firstElementChild;\r\n let index = 0;\r\n while (el !== element && el !== parentElement.lastElementChild && el) {\r\n el = el.nextElementSibling;\r\n index++;\r\n }\r\n return index;\r\n}\r\n/**\r\n * Find the grid location of a specific DOM element by traversing the parent\r\n * chain and finding each child index on the way.\r\n *\r\n * This will break as soon as DOM structures of the Splitview or Gridview change.\r\n */\r\nexport function getGridLocation(element) {\r\n const parentElement = element.parentElement;\r\n if (!parentElement) {\r\n throw new Error('Invalid grid element');\r\n }\r\n if (/\\bgrid-view\\b/.test(parentElement.className)) {\r\n return [];\r\n }\r\n const index = indexInParent(parentElement);\r\n const ancestor = parentElement.parentElement.parentElement.parentElement;\r\n return [...getGridLocation(ancestor), index];\r\n}\r\nexport function getRelativeLocation(rootOrientation, location, direction) {\r\n const orientation = getLocationOrientation(rootOrientation, location);\r\n const directionOrientation = getDirectionOrientation(direction);\r\n if (orientation === directionOrientation) {\r\n const [rest, _index] = tail(location);\r\n let index = _index;\r\n if (direction === 'right' || direction === 'bottom') {\r\n index += 1;\r\n }\r\n return [...rest, index];\r\n }\r\n else {\r\n const index = direction === 'right' || direction === 'bottom' ? 1 : 0;\r\n return [...location, index];\r\n }\r\n}\r\nexport function getDirectionOrientation(direction) {\r\n return direction === 'top' || direction === 'bottom'\r\n ? Orientation.VERTICAL\r\n : Orientation.HORIZONTAL;\r\n}\r\nexport function getLocationOrientation(rootOrientation, location) {\r\n return location.length % 2 === 0\r\n ? orthogonal(rootOrientation)\r\n : rootOrientation;\r\n}\r\nexport const orthogonal = (orientation) => orientation === Orientation.HORIZONTAL\r\n ? Orientation.VERTICAL\r\n : Orientation.HORIZONTAL;\r\nexport function isGridBranchNode(node) {\r\n return !!node.children;\r\n}\r\nconst serializeBranchNode = (node, orientation) => {\r\n const size = orientation === Orientation.VERTICAL ? node.box.width : node.box.height;\r\n if (!isGridBranchNode(node)) {\r\n if (typeof node.cachedVisibleSize === 'number') {\r\n return {\r\n type: 'leaf',\r\n data: node.view.toJSON(),\r\n size: node.cachedVisibleSize,\r\n visible: false,\r\n };\r\n }\r\n return { type: 'leaf', data: node.view.toJSON(), size };\r\n }\r\n return {\r\n type: 'branch',\r\n data: node.children.map((c) => serializeBranchNode(c, orthogonal(orientation))),\r\n size,\r\n };\r\n};\r\nexport class Gridview {\r\n get length() {\r\n return this._root ? this._root.children.length : 0;\r\n }\r\n get orientation() {\r\n return this.root.orientation;\r\n }\r\n set orientation(orientation) {\r\n if (this.root.orientation === orientation) {\r\n return;\r\n }\r\n const { size, orthogonalSize } = this.root;\r\n this.root = flipNode(this.root, orthogonalSize, size);\r\n this.root.layout(size, orthogonalSize);\r\n }\r\n get width() {\r\n return this.root.width;\r\n }\r\n get height() {\r\n return this.root.height;\r\n }\r\n get minimumWidth() {\r\n return this.root.minimumWidth;\r\n }\r\n get minimumHeight() {\r\n return this.root.minimumHeight;\r\n }\r\n get maximumWidth() {\r\n return this.root.maximumHeight;\r\n }\r\n get maximumHeight() {\r\n return this.root.maximumHeight;\r\n }\r\n serialize() {\r\n const root = serializeBranchNode(this.getView(), this.orientation);\r\n return {\r\n root,\r\n width: this.width,\r\n height: this.height,\r\n orientation: this.orientation,\r\n };\r\n }\r\n dispose() {\r\n this.disposable.dispose();\r\n this._onDidChange.dispose();\r\n this.root.dispose();\r\n this.element.remove();\r\n }\r\n clear() {\r\n const orientation = this.root.orientation;\r\n this.root = new BranchNode(orientation, this.proportionalLayout, this.styles, this.root.size, this.root.orthogonalSize);\r\n }\r\n deserialize(json, deserializer) {\r\n const orientation = json.orientation;\r\n const height = orientation === Orientation.VERTICAL ? json.height : json.width;\r\n this._deserialize(json.root, orientation, deserializer, height);\r\n }\r\n _deserialize(root, orientation, deserializer, orthogonalSize) {\r\n this.root = this._deserializeNode(root, orientation, deserializer, orthogonalSize);\r\n }\r\n _deserializeNode(node, orientation, deserializer, orthogonalSize) {\r\n let result;\r\n if (node.type === 'branch') {\r\n const serializedChildren = node.data;\r\n const children = serializedChildren.map((serializedChild) => {\r\n return {\r\n node: this._deserializeNode(serializedChild, orthogonal(orientation), deserializer, node.size),\r\n visible: serializedChild.visible,\r\n };\r\n });\r\n result = new BranchNode(orientation, this.proportionalLayout, this.styles, node.size, // <- orthogonal size - flips at each depth\r\n orthogonalSize, // <- size - flips at each depth\r\n children);\r\n }\r\n else {\r\n result = new LeafNode(deserializer.fromJSON(node), orientation, orthogonalSize, node.size);\r\n }\r\n return result;\r\n }\r\n get root() {\r\n return this._root;\r\n }\r\n set root(root) {\r\n const oldRoot = this._root;\r\n if (oldRoot) {\r\n oldRoot.dispose();\r\n this.element.removeChild(oldRoot.element);\r\n }\r\n this._root = root;\r\n this.element.appendChild(this._root.element);\r\n this.disposable.value = this._root.onDidChange((e) => {\r\n this._onDidChange.fire(e);\r\n });\r\n }\r\n /**\r\n * If the root is orientated as a VERTICAL node then nest the existing root within a new HORIZIONTAL root node\r\n * If the root is orientated as a HORIZONTAL node then nest the existing root within a new VERITCAL root node\r\n */\r\n insertOrthogonalSplitviewAtRoot() {\r\n if (!this._root) {\r\n return;\r\n }\r\n const oldRoot = this.root;\r\n oldRoot.element.remove();\r\n this._root = new BranchNode(orthogonal(oldRoot.orientation), this.proportionalLayout, this.styles, this.root.orthogonalSize, this.root.size);\r\n if (oldRoot.children.length === 0) {\r\n // no data so no need to add anything back in\r\n }\r\n else if (oldRoot.children.length === 1) {\r\n // can remove one level of redundant branching if there is only a single child\r\n const childReference = oldRoot.children[0];\r\n const child = oldRoot.removeChild(0); // remove to prevent disposal when disposing of unwanted root\r\n child.dispose();\r\n oldRoot.dispose();\r\n this._root.addChild(\r\n /**\r\n * the child node will have the same orientation as the new root since\r\n * we are removing the inbetween node.\r\n * the entire 'tree' must be flipped recursively to ensure that the orientation\r\n * flips at each level\r\n */\r\n flipNode(childReference, childReference.orthogonalSize, childReference.size), Sizing.Distribute, 0);\r\n }\r\n else {\r\n this._root.addChild(oldRoot, Sizing.Distribute, 0);\r\n }\r\n this.element.appendChild(this._root.element);\r\n this.disposable.value = this._root.onDidChange((e) => {\r\n this._onDidChange.fire(e);\r\n });\r\n }\r\n next(location) {\r\n return this.progmaticSelect(location);\r\n }\r\n previous(location) {\r\n return this.progmaticSelect(location, true);\r\n }\r\n getView(location) {\r\n const node = location ? this.getNode(location)[1] : this.root;\r\n return this._getViews(node, this.orientation);\r\n }\r\n _getViews(node, orientation, cachedVisibleSize) {\r\n const box = { height: node.height, width: node.width };\r\n if (node instanceof LeafNode) {\r\n return { box, view: node.view, cachedVisibleSize };\r\n }\r\n const children = [];\r\n for (let i = 0; i < node.children.length; i++) {\r\n const child = node.children[i];\r\n const nodeCachedVisibleSize = node.getChildCachedVisibleSize(i);\r\n children.push(this._getViews(child, orthogonal(orientation), nodeCachedVisibleSize));\r\n }\r\n return { box, children };\r\n }\r\n progmaticSelect(location, reverse = false) {\r\n const [path, node] = this.getNode(location);\r\n if (!(node instanceof LeafNode)) {\r\n throw new Error('invalid location');\r\n }\r\n for (let i = path.length - 1; i > -1; i--) {\r\n const n = path[i];\r\n const l = location[i] || 0;\r\n const canProgressInCurrentLevel = reverse\r\n ? l - 1 > -1\r\n : l + 1 < n.children.length;\r\n if (canProgressInCurrentLevel) {\r\n return findLeaf(n.children[reverse ? l - 1 : l + 1], reverse);\r\n }\r\n }\r\n return findLeaf(this.root, reverse);\r\n }\r\n constructor(proportionalLayout, styles, orientation) {\r\n this.proportionalLayout = proportionalLayout;\r\n this.styles = styles;\r\n this.disposable = new MutableDisposable();\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this.element = document.createElement('div');\r\n this.element.className = 'grid-view';\r\n this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0);\r\n }\r\n isViewVisible(location) {\r\n const [rest, index] = tail(location);\r\n const [, parent] = this.getNode(rest);\r\n if (!(parent instanceof BranchNode)) {\r\n throw new Error('Invalid from location');\r\n }\r\n return parent.isChildVisible(index);\r\n }\r\n setViewVisible(location, visible) {\r\n const [rest, index] = tail(location);\r\n const [, parent] = this.getNode(rest);\r\n if (!(parent instanceof BranchNode)) {\r\n throw new Error('Invalid from location');\r\n }\r\n parent.setChildVisible(index, visible);\r\n }\r\n moveView(parentLocation, from, to) {\r\n const [, parent] = this.getNode(parentLocation);\r\n if (!(parent instanceof BranchNode)) {\r\n throw new Error('Invalid location');\r\n }\r\n parent.moveChild(from, to);\r\n }\r\n addView(view, size, location) {\r\n const [rest, index] = tail(location);\r\n const [pathToParent, parent] = this.getNode(rest);\r\n if (parent instanceof BranchNode) {\r\n const node = new LeafNode(view, orthogonal(parent.orientation), parent.orthogonalSize);\r\n parent.addChild(node, size, index);\r\n }\r\n else {\r\n const [grandParent, ..._] = [...pathToParent].reverse();\r\n const [parentIndex, ...__] = [...rest].reverse();\r\n let newSiblingSize = 0;\r\n const newSiblingCachedVisibleSize = grandParent.getChildCachedVisibleSize(parentIndex);\r\n if (typeof newSiblingCachedVisibleSize === 'number') {\r\n newSiblingSize = Sizing.Invisible(newSiblingCachedVisibleSize);\r\n }\r\n const child = grandParent.removeChild(parentIndex);\r\n child.dispose();\r\n const newParent = new BranchNode(parent.orientation, this.proportionalLayout, this.styles, parent.size, parent.orthogonalSize);\r\n grandParent.addChild(newParent, parent.size, parentIndex);\r\n const newSibling = new LeafNode(parent.view, grandParent.orientation, parent.size);\r\n newParent.addChild(newSibling, newSiblingSize, 0);\r\n if (typeof size !== 'number' && size.type === 'split') {\r\n size = { type: 'split', index: 0 };\r\n }\r\n const node = new LeafNode(view, grandParent.orientation, parent.size);\r\n newParent.addChild(node, size, index);\r\n }\r\n }\r\n remove(view, sizing) {\r\n const location = getGridLocation(view.element);\r\n return this.removeView(location, sizing);\r\n }\r\n removeView(location, sizing) {\r\n const [rest, index] = tail(location);\r\n const [pathToParent, parent] = this.getNode(rest);\r\n if (!(parent instanceof BranchNode)) {\r\n throw new Error('Invalid location');\r\n }\r\n const nodeToRemove = parent.children[index];\r\n if (!(nodeToRemove instanceof LeafNode)) {\r\n throw new Error('Invalid location');\r\n }\r\n parent.removeChild(index, sizing);\r\n nodeToRemove.dispose();\r\n if (parent.children.length !== 1) {\r\n return nodeToRemove.view;\r\n }\r\n // if the parent has only one child and we know the parent is a BranchNode we can make the tree\r\n // more efficiently spaced by replacing the parent BranchNode with the child.\r\n // if that child is a LeafNode then we simply replace the BranchNode with the child otherwise if the child\r\n // is a BranchNode too we should spread it's children into the grandparent.\r\n // refer to the remaining child as the sibling\r\n const sibling = parent.children[0];\r\n if (pathToParent.length === 0) {\r\n // if the parent is root\r\n if (sibling instanceof LeafNode) {\r\n // if the sibling is a leaf node no action is required\r\n return nodeToRemove.view;\r\n }\r\n // otherwise the sibling is a branch node. since the parent is the root and the root has only one child\r\n // which is a branch node we can just set this branch node to be the new root node\r\n // for good housekeeping we'll removing the sibling from it's existing tree\r\n parent.removeChild(0, sizing);\r\n // and set that sibling node to be root\r\n this.root = sibling;\r\n return nodeToRemove.view;\r\n }\r\n // otherwise the parent is apart of a large sub-tree\r\n const [grandParent, ..._] = [...pathToParent].reverse();\r\n const [parentIndex, ...__] = [...rest].reverse();\r\n const isSiblingVisible = parent.isChildVisible(0);\r\n // either way we need to remove the sibling from it's existing tree\r\n parent.removeChild(0, sizing);\r\n // note the sizes of all of the grandparents children\r\n const sizes = grandParent.children.map((_size, i) => grandParent.getChildSize(i));\r\n // remove the parent from the grandparent since we are moving the sibling to take the parents place\r\n // this parent is no longer used and can be disposed of\r\n grandParent.removeChild(parentIndex, sizing).dispose();\r\n if (sibling instanceof BranchNode) {\r\n // replace the parent with the siblings children\r\n sizes.splice(parentIndex, 1, ...sibling.children.map((c) => c.size));\r\n // and add those siblings to the grandparent\r\n for (let i = 0; i < sibling.children.length; i++) {\r\n const child = sibling.children[i];\r\n grandParent.addChild(child, child.size, parentIndex + i);\r\n }\r\n }\r\n else {\r\n // otherwise create a new leaf node and add that to the grandparent\r\n const newSibling = new LeafNode(sibling.view, orthogonal(sibling.orientation), sibling.size);\r\n const siblingSizing = isSiblingVisible\r\n ? sibling.orthogonalSize\r\n : Sizing.Invisible(sibling.orthogonalSize);\r\n grandParent.addChild(newSibling, siblingSizing, parentIndex);\r\n }\r\n // the containing node of the sibling is no longer required and can be disposed of\r\n sibling.dispose();\r\n // resize everything\r\n for (let i = 0; i < sizes.length; i++) {\r\n grandParent.resizeChild(i, sizes[i]);\r\n }\r\n return nodeToRemove.view;\r\n }\r\n layout(width, height) {\r\n const [size, orthogonalSize] = this.root.orientation === Orientation.HORIZONTAL\r\n ? [height, width]\r\n : [width, height];\r\n this.root.layout(size, orthogonalSize);\r\n }\r\n getNode(location, node = this.root, path = []) {\r\n if (location.length === 0) {\r\n return [path, node];\r\n }\r\n if (!(node instanceof BranchNode)) {\r\n throw new Error('Invalid location');\r\n }\r\n const [index, ...rest] = location;\r\n if (index < 0 || index >= node.children.length) {\r\n throw new Error('Invalid location');\r\n }\r\n const child = node.children[index];\r\n path.push(node);\r\n return this.getNode(rest, child, path);\r\n }\r\n}\r\n//# sourceMappingURL=gridview.js.map","import { Emitter } from '../events';\r\nexport class SplitviewApi {\r\n get minimumSize() {\r\n return this.component.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.component.maximumSize;\r\n }\r\n get height() {\r\n return this.component.height;\r\n }\r\n get width() {\r\n return this.component.width;\r\n }\r\n get length() {\r\n return this.component.length;\r\n }\r\n get orientation() {\r\n return this.component.orientation;\r\n }\r\n get panels() {\r\n return this.component.panels;\r\n }\r\n get onDidLayoutFromJSON() {\r\n return this.component.onDidLayoutFromJSON;\r\n }\r\n get onDidLayoutChange() {\r\n return this.component.onDidLayoutChange;\r\n }\r\n get onDidAddView() {\r\n return this.component.onDidAddView;\r\n }\r\n get onDidRemoveView() {\r\n return this.component.onDidRemoveView;\r\n }\r\n constructor(component) {\r\n this.component = component;\r\n }\r\n updateOptions(options) {\r\n this.component.updateOptions(options);\r\n }\r\n removePanel(panel, sizing) {\r\n this.component.removePanel(panel, sizing);\r\n }\r\n focus() {\r\n this.component.focus();\r\n }\r\n getPanel(id) {\r\n return this.component.getPanel(id);\r\n }\r\n layout(width, height) {\r\n return this.component.layout(width, height);\r\n }\r\n addPanel(options) {\r\n return this.component.addPanel(options);\r\n }\r\n movePanel(from, to) {\r\n this.component.movePanel(from, to);\r\n }\r\n fromJSON(data) {\r\n this.component.fromJSON(data);\r\n }\r\n toJSON() {\r\n return this.component.toJSON();\r\n }\r\n clear() {\r\n this.component.clear();\r\n }\r\n}\r\nexport class PaneviewApi {\r\n get minimumSize() {\r\n return this.component.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.component.maximumSize;\r\n }\r\n get height() {\r\n return this.component.height;\r\n }\r\n get width() {\r\n return this.component.width;\r\n }\r\n get panels() {\r\n return this.component.panels;\r\n }\r\n get onDidLayoutChange() {\r\n return this.component.onDidLayoutChange;\r\n }\r\n get onDidLayoutFromJSON() {\r\n return this.component.onDidLayoutFromJSON;\r\n }\r\n get onDidAddView() {\r\n return this.component.onDidAddView;\r\n }\r\n get onDidRemoveView() {\r\n return this.component.onDidRemoveView;\r\n }\r\n get onDidDrop() {\r\n const emitter = new Emitter();\r\n const disposable = this.component.onDidDrop((e) => {\r\n emitter.fire(Object.assign(Object.assign({}, e), { api: this }));\r\n });\r\n emitter.dispose = () => {\r\n disposable.dispose();\r\n emitter.dispose();\r\n };\r\n return emitter.event;\r\n }\r\n constructor(component) {\r\n this.component = component;\r\n }\r\n removePanel(panel) {\r\n this.component.removePanel(panel);\r\n }\r\n getPanel(id) {\r\n return this.component.getPanel(id);\r\n }\r\n movePanel(from, to) {\r\n this.component.movePanel(from, to);\r\n }\r\n focus() {\r\n this.component.focus();\r\n }\r\n layout(width, height) {\r\n this.component.layout(width, height);\r\n }\r\n addPanel(options) {\r\n return this.component.addPanel(options);\r\n }\r\n fromJSON(data) {\r\n this.component.fromJSON(data);\r\n }\r\n toJSON() {\r\n return this.component.toJSON();\r\n }\r\n clear() {\r\n this.component.clear();\r\n }\r\n}\r\nexport class GridviewApi {\r\n get minimumHeight() {\r\n return this.component.minimumHeight;\r\n }\r\n get maximumHeight() {\r\n return this.component.maximumHeight;\r\n }\r\n get minimumWidth() {\r\n return this.component.minimumWidth;\r\n }\r\n get maximumWidth() {\r\n return this.component.maximumWidth;\r\n }\r\n get width() {\r\n return this.component.width;\r\n }\r\n get height() {\r\n return this.component.height;\r\n }\r\n get onDidLayoutChange() {\r\n return this.component.onDidLayoutChange;\r\n }\r\n get onDidAddPanel() {\r\n return this.component.onDidAddGroup;\r\n }\r\n get onDidRemovePanel() {\r\n return this.component.onDidRemoveGroup;\r\n }\r\n get onDidActivePanelChange() {\r\n return this.component.onDidActiveGroupChange;\r\n }\r\n get onDidLayoutFromJSON() {\r\n return this.component.onDidLayoutFromJSON;\r\n }\r\n get panels() {\r\n return this.component.groups;\r\n }\r\n get orientation() {\r\n return this.component.orientation;\r\n }\r\n set orientation(value) {\r\n this.component.updateOptions({ orientation: value });\r\n }\r\n constructor(component) {\r\n this.component = component;\r\n }\r\n focus() {\r\n this.component.focus();\r\n }\r\n layout(width, height, force = false) {\r\n this.component.layout(width, height, force);\r\n }\r\n addPanel(options) {\r\n return this.component.addPanel(options);\r\n }\r\n removePanel(panel, sizing) {\r\n this.component.removePanel(panel, sizing);\r\n }\r\n movePanel(panel, options) {\r\n this.component.movePanel(panel, options);\r\n }\r\n getPanel(id) {\r\n return this.component.getPanel(id);\r\n }\r\n fromJSON(data) {\r\n return this.component.fromJSON(data);\r\n }\r\n toJSON() {\r\n return this.component.toJSON();\r\n }\r\n clear() {\r\n this.component.clear();\r\n }\r\n}\r\nexport class DockviewApi {\r\n get id() {\r\n return this.component.id;\r\n }\r\n get width() {\r\n return this.component.width;\r\n }\r\n get height() {\r\n return this.component.height;\r\n }\r\n get minimumHeight() {\r\n return this.component.minimumHeight;\r\n }\r\n get maximumHeight() {\r\n return this.component.maximumHeight;\r\n }\r\n get minimumWidth() {\r\n return this.component.minimumWidth;\r\n }\r\n get maximumWidth() {\r\n return this.component.maximumWidth;\r\n }\r\n get size() {\r\n return this.component.size;\r\n }\r\n get totalPanels() {\r\n return this.component.totalPanels;\r\n }\r\n get onDidActiveGroupChange() {\r\n return this.component.onDidActiveGroupChange;\r\n }\r\n get onDidAddGroup() {\r\n return this.component.onDidAddGroup;\r\n }\r\n get onDidRemoveGroup() {\r\n return this.component.onDidRemoveGroup;\r\n }\r\n get onDidActivePanelChange() {\r\n return this.component.onDidActivePanelChange;\r\n }\r\n get onDidAddPanel() {\r\n return this.component.onDidAddPanel;\r\n }\r\n get onDidRemovePanel() {\r\n return this.component.onDidRemovePanel;\r\n }\r\n get onDidLayoutFromJSON() {\r\n return this.component.onDidLayoutFromJSON;\r\n }\r\n get onDidLayoutChange() {\r\n return this.component.onDidLayoutChange;\r\n }\r\n get onDidDrop() {\r\n return this.component.onDidDrop;\r\n }\r\n get onWillDragGroup() {\r\n return this.component.onWillDragGroup;\r\n }\r\n get onWillDragPanel() {\r\n return this.component.onWillDragPanel;\r\n }\r\n get panels() {\r\n return this.component.panels;\r\n }\r\n get groups() {\r\n return this.component.groups;\r\n }\r\n get activePanel() {\r\n return this.component.activePanel;\r\n }\r\n get activeGroup() {\r\n return this.component.activeGroup;\r\n }\r\n constructor(component) {\r\n this.component = component;\r\n }\r\n focus() {\r\n this.component.focus();\r\n }\r\n getPanel(id) {\r\n return this.component.getGroupPanel(id);\r\n }\r\n layout(width, height, force = false) {\r\n this.component.layout(width, height, force);\r\n }\r\n addPanel(options) {\r\n return this.component.addPanel(options);\r\n }\r\n removePanel(panel) {\r\n this.component.removePanel(panel);\r\n }\r\n addGroup(options) {\r\n return this.component.addGroup(options);\r\n }\r\n moveToNext(options) {\r\n this.component.moveToNext(options);\r\n }\r\n moveToPrevious(options) {\r\n this.component.moveToPrevious(options);\r\n }\r\n closeAllGroups() {\r\n return this.component.closeAllGroups();\r\n }\r\n removeGroup(group) {\r\n this.component.removeGroup(group);\r\n }\r\n getGroup(id) {\r\n return this.component.getPanel(id);\r\n }\r\n addFloatingGroup(item, coord) {\r\n return this.component.addFloatingGroup(item, coord);\r\n }\r\n fromJSON(data) {\r\n this.component.fromJSON(data);\r\n }\r\n toJSON() {\r\n return this.component.toJSON();\r\n }\r\n clear() {\r\n this.component.clear();\r\n }\r\n}\r\n//# sourceMappingURL=component.api.js.map","import { addDisposableListener } from '../events';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nexport class DragAndDropObserver extends CompositeDisposable {\r\n constructor(element, callbacks) {\r\n super();\r\n this.element = element;\r\n this.callbacks = callbacks;\r\n this.target = null;\r\n this.registerListeners();\r\n }\r\n registerListeners() {\r\n this.addDisposables(addDisposableListener(this.element, 'dragenter', (e) => {\r\n this.target = e.target;\r\n this.callbacks.onDragEnter(e);\r\n }, true));\r\n this.addDisposables(addDisposableListener(this.element, 'dragover', (e) => {\r\n e.preventDefault(); // needed so that the drop event fires (https://stackoverflow.com/questions/21339924/drop-event-not-firing-in-chrome)\r\n if (this.callbacks.onDragOver) {\r\n this.callbacks.onDragOver(e);\r\n }\r\n }, true));\r\n this.addDisposables(addDisposableListener(this.element, 'dragleave', (e) => {\r\n if (this.target === e.target) {\r\n this.target = null;\r\n this.callbacks.onDragLeave(e);\r\n }\r\n }));\r\n this.addDisposables(addDisposableListener(this.element, 'dragend', (e) => {\r\n this.target = null;\r\n this.callbacks.onDragEnd(e);\r\n }));\r\n this.addDisposables(addDisposableListener(this.element, 'drop', (e) => {\r\n this.callbacks.onDrop(e);\r\n }));\r\n }\r\n}\r\n//# sourceMappingURL=dnd.js.map","import { toggleClass } from '../dom';\r\nimport { Emitter } from '../events';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nimport { DragAndDropObserver } from './dnd';\r\nimport { clamp } from '../math';\r\nfunction numberOrFallback(maybeNumber, fallback) {\r\n return typeof maybeNumber === 'number' ? maybeNumber : fallback;\r\n}\r\nexport function directionToPosition(direction) {\r\n switch (direction) {\r\n case 'above':\r\n return 'top';\r\n case 'below':\r\n return 'bottom';\r\n case 'left':\r\n return 'left';\r\n case 'right':\r\n return 'right';\r\n case 'within':\r\n return 'center';\r\n default:\r\n throw new Error(`invalid direction '${direction}'`);\r\n }\r\n}\r\nexport function positionToDirection(position) {\r\n switch (position) {\r\n case 'top':\r\n return 'above';\r\n case 'bottom':\r\n return 'below';\r\n case 'left':\r\n return 'left';\r\n case 'right':\r\n return 'right';\r\n case 'center':\r\n return 'within';\r\n default:\r\n throw new Error(`invalid position '${position}'`);\r\n }\r\n}\r\nexport class Droptarget extends CompositeDisposable {\r\n get state() {\r\n return this._state;\r\n }\r\n constructor(element, options) {\r\n super();\r\n this.element = element;\r\n this.options = options;\r\n this._onDrop = new Emitter();\r\n this.onDrop = this._onDrop.event;\r\n // use a set to take advantage of #<set>.has\r\n this._acceptedTargetZonesSet = new Set(this.options.acceptedTargetZones);\r\n this.addDisposables(this._onDrop, new DragAndDropObserver(this.element, {\r\n onDragEnter: () => undefined,\r\n onDragOver: (e) => {\r\n if (this._acceptedTargetZonesSet.size === 0) {\r\n this.removeDropTarget();\r\n return;\r\n }\r\n const width = this.element.clientWidth;\r\n const height = this.element.clientHeight;\r\n if (width === 0 || height === 0) {\r\n return; // avoid div!0\r\n }\r\n const rect = e.currentTarget.getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n const y = e.clientY - rect.top;\r\n const quadrant = this.calculateQuadrant(this._acceptedTargetZonesSet, x, y, width, height);\r\n /**\r\n * If the event has already been used by another DropTarget instance\r\n * then don't show a second drop target, only one target should be\r\n * active at any one time\r\n */\r\n if (this.isAlreadyUsed(e) || quadrant === null) {\r\n // no drop target should be displayed\r\n this.removeDropTarget();\r\n return;\r\n }\r\n if (typeof this.options.canDisplayOverlay === 'boolean') {\r\n if (!this.options.canDisplayOverlay) {\r\n this.removeDropTarget();\r\n return;\r\n }\r\n }\r\n else if (!this.options.canDisplayOverlay(e, quadrant)) {\r\n this.removeDropTarget();\r\n return;\r\n }\r\n this.markAsUsed(e);\r\n if (!this.targetElement) {\r\n this.targetElement = document.createElement('div');\r\n this.targetElement.className = 'drop-target-dropzone';\r\n this.overlayElement = document.createElement('div');\r\n this.overlayElement.className = 'drop-target-selection';\r\n this._state = 'center';\r\n this.targetElement.appendChild(this.overlayElement);\r\n this.element.classList.add('drop-target');\r\n this.element.append(this.targetElement);\r\n }\r\n this.toggleClasses(quadrant, width, height);\r\n this.setState(quadrant);\r\n },\r\n onDragLeave: () => {\r\n this.removeDropTarget();\r\n },\r\n onDragEnd: () => {\r\n this.removeDropTarget();\r\n },\r\n onDrop: (e) => {\r\n e.preventDefault();\r\n const state = this._state;\r\n this.removeDropTarget();\r\n if (state) {\r\n // only stop the propagation of the event if we are dealing with it\r\n // which is only when the target has state\r\n e.stopPropagation();\r\n this._onDrop.fire({ position: state, nativeEvent: e });\r\n }\r\n },\r\n }));\r\n }\r\n setTargetZones(acceptedTargetZones) {\r\n this._acceptedTargetZonesSet = new Set(acceptedTargetZones);\r\n }\r\n dispose() {\r\n this.removeDropTarget();\r\n super.dispose();\r\n }\r\n /**\r\n * Add a property to the event object for other potential listeners to check\r\n */\r\n markAsUsed(event) {\r\n event[Droptarget.USED_EVENT_ID] = true;\r\n }\r\n /**\r\n * Check is the event has already been used by another instance od DropTarget\r\n */\r\n isAlreadyUsed(event) {\r\n const value = event[Droptarget.USED_EVENT_ID];\r\n return typeof value === 'boolean' && value;\r\n }\r\n toggleClasses(quadrant, width, height) {\r\n var _a, _b, _c, _d;\r\n if (!this.overlayElement) {\r\n return;\r\n }\r\n const isSmallX = width < 100;\r\n const isSmallY = height < 100;\r\n const isLeft = quadrant === 'left';\r\n const isRight = quadrant === 'right';\r\n const isTop = quadrant === 'top';\r\n const isBottom = quadrant === 'bottom';\r\n const rightClass = !isSmallX && isRight;\r\n const leftClass = !isSmallX && isLeft;\r\n const topClass = !isSmallY && isTop;\r\n const bottomClass = !isSmallY && isBottom;\r\n let size = 0.5;\r\n if (((_b = (_a = this.options.overlayModel) === null || _a === void 0 ? void 0 : _a.size) === null || _b === void 0 ? void 0 : _b.type) === 'percentage') {\r\n size = clamp(this.options.overlayModel.size.value, 0, 100) / 100;\r\n }\r\n if (((_d = (_c = this.options.overlayModel) === null || _c === void 0 ? void 0 : _c.size) === null || _d === void 0 ? void 0 : _d.type) === 'pixels') {\r\n if (rightClass || leftClass) {\r\n size =\r\n clamp(0, this.options.overlayModel.size.value, width) /\r\n width;\r\n }\r\n if (topClass || bottomClass) {\r\n size =\r\n clamp(0, this.options.overlayModel.size.value, height) /\r\n height;\r\n }\r\n }\r\n const translate = (1 - size) / 2;\r\n const scale = size;\r\n let transform;\r\n if (rightClass) {\r\n transform = `translateX(${100 * translate}%) scaleX(${scale})`;\r\n }\r\n else if (leftClass) {\r\n transform = `translateX(-${100 * translate}%) scaleX(${scale})`;\r\n }\r\n else if (topClass) {\r\n transform = `translateY(-${100 * translate}%) scaleY(${scale})`;\r\n }\r\n else if (bottomClass) {\r\n transform = `translateY(${100 * translate}%) scaleY(${scale})`;\r\n }\r\n else {\r\n transform = '';\r\n }\r\n this.overlayElement.style.transform = transform;\r\n toggleClass(this.overlayElement, 'small-right', isSmallX && isRight);\r\n toggleClass(this.overlayElement, 'small-left', isSmallX && isLeft);\r\n toggleClass(this.overlayElement, 'small-top', isSmallY && isTop);\r\n toggleClass(this.overlayElement, 'small-bottom', isSmallY && isBottom);\r\n }\r\n setState(quadrant) {\r\n switch (quadrant) {\r\n case 'top':\r\n this._state = 'top';\r\n break;\r\n case 'left':\r\n this._state = 'left';\r\n break;\r\n case 'bottom':\r\n this._state = 'bottom';\r\n break;\r\n case 'right':\r\n this._state = 'right';\r\n break;\r\n case 'center':\r\n this._state = 'center';\r\n break;\r\n }\r\n }\r\n calculateQuadrant(overlayType, x, y, width, height) {\r\n var _a, _b, _c, _d, _e, _f;\r\n const isPercentage = ((_a = this.options.overlayModel) === null || _a === void 0 ? void 0 : _a.activationSize) === undefined ||\r\n ((_c = (_b = this.options.overlayModel) === null || _b === void 0 ? void 0 : _b.activationSize) === null || _c === void 0 ? void 0 : _c.type) === 'percentage';\r\n const value = numberOrFallback((_f = (_e = (_d = this.options) === null || _d === void 0 ? void 0 : _d.overlayModel) === null || _e === void 0 ? void 0 : _e.activationSize) === null || _f === void 0 ? void 0 : _f.value, 20);\r\n if (isPercentage) {\r\n return calculateQuadrantAsPercentage(overlayType, x, y, width, height, value);\r\n }\r\n return calculateQuadrantAsPixels(overlayType, x, y, width, height, value);\r\n }\r\n removeDropTarget() {\r\n if (this.targetElement) {\r\n this._state = undefined;\r\n this.element.removeChild(this.targetElement);\r\n this.targetElement = undefined;\r\n this.overlayElement = undefined;\r\n this.element.classList.remove('drop-target');\r\n }\r\n }\r\n}\r\nDroptarget.USED_EVENT_ID = '__dockview_droptarget_event_is_used__';\r\nexport function calculateQuadrantAsPercentage(overlayType, x, y, width, height, threshold) {\r\n const xp = (100 * x) / width;\r\n const yp = (100 * y) / height;\r\n if (overlayType.has('left') && xp < threshold) {\r\n return 'left';\r\n }\r\n if (overlayType.has('right') && xp > 100 - threshold) {\r\n return 'right';\r\n }\r\n if (overlayType.has('top') && yp < threshold) {\r\n return 'top';\r\n }\r\n if (overlayType.has('bottom') && yp > 100 - threshold) {\r\n return 'bottom';\r\n }\r\n if (!overlayType.has('center')) {\r\n return null;\r\n }\r\n return 'center';\r\n}\r\nexport function calculateQuadrantAsPixels(overlayType, x, y, width, height, threshold) {\r\n if (overlayType.has('left') && x < threshold) {\r\n return 'left';\r\n }\r\n if (overlayType.has('right') && x > width - threshold) {\r\n return 'right';\r\n }\r\n if (overlayType.has('top') && y < threshold) {\r\n return 'top';\r\n }\r\n if (overlayType.has('bottom') && y > height - threshold) {\r\n return 'bottom';\r\n }\r\n if (!overlayType.has('center')) {\r\n return null;\r\n }\r\n return 'center';\r\n}\r\n//# sourceMappingURL=droptarget.js.map","import { CompositeDisposable, MutableDisposable, } from '../../../lifecycle';\r\nimport { Emitter } from '../../../events';\r\nimport { trackFocus } from '../../../dom';\r\nexport class ContentContainer extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor() {\r\n super();\r\n this.disposable = new MutableDisposable();\r\n this._onDidFocus = new Emitter();\r\n this.onDidFocus = this._onDidFocus.event;\r\n this._onDidBlur = new Emitter();\r\n this.onDidBlur = this._onDidBlur.event;\r\n this._element = document.createElement('div');\r\n this._element.className = 'content-container';\r\n this._element.tabIndex = -1;\r\n this.addDisposables(this._onDidFocus, this._onDidBlur);\r\n // for hosted containers\r\n // 1) register a drop target on the host\r\n // 2) register window dragStart events to disable pointer events\r\n // 3) register dragEnd events\r\n // 4) register mouseMove events (if no buttons are present we take this as a dragEnd event)\r\n }\r\n show() {\r\n this.element.style.display = '';\r\n }\r\n hide() {\r\n this.element.style.display = 'none';\r\n }\r\n openPanel(panel) {\r\n var _a;\r\n if (this.panel === panel) {\r\n return;\r\n }\r\n if (this.panel) {\r\n if ((_a = this.panel.view) === null || _a === void 0 ? void 0 : _a.content) {\r\n this._element.removeChild(this.panel.view.content.element);\r\n }\r\n this.panel = undefined;\r\n }\r\n this.panel = panel;\r\n const disposable = new CompositeDisposable();\r\n if (this.panel.view) {\r\n const _onDidFocus = this.panel.view.content.onDidFocus;\r\n const _onDidBlur = this.panel.view.content.onDidBlur;\r\n const focusTracker = trackFocus(this._element);\r\n disposable.addDisposables(focusTracker, focusTracker.onDidFocus(() => this._onDidFocus.fire()), focusTracker.onDidBlur(() => this._onDidBlur.fire()));\r\n if (_onDidFocus) {\r\n disposable.addDisposables(_onDidFocus(() => this._onDidFocus.fire()));\r\n }\r\n if (_onDidBlur) {\r\n disposable.addDisposables(_onDidBlur(() => this._onDidBlur.fire()));\r\n }\r\n this._element.appendChild(this.panel.view.content.element);\r\n }\r\n this.disposable.value = disposable;\r\n }\r\n layout(_width, _height) {\r\n // noop\r\n }\r\n closePanel() {\r\n var _a, _b, _c;\r\n if ((_c = (_b = (_a = this.panel) === null || _a === void 0 ? void 0 : _a.view) === null || _b === void 0 ? void 0 : _b.content) === null || _c === void 0 ? void 0 : _c.element) {\r\n this._element.removeChild(this.panel.view.content.element);\r\n this.panel = undefined;\r\n }\r\n }\r\n dispose() {\r\n this.disposable.dispose();\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=content.js.map","export var DockviewDropTargets;\r\n(function (DockviewDropTargets) {\r\n DockviewDropTargets[DockviewDropTargets[\"Tab\"] = 0] = \"Tab\";\r\n DockviewDropTargets[DockviewDropTargets[\"Panel\"] = 1] = \"Panel\";\r\n DockviewDropTargets[DockviewDropTargets[\"TabContainer\"] = 2] = \"TabContainer\";\r\n DockviewDropTargets[DockviewDropTargets[\"Edge\"] = 3] = \"Edge\";\r\n})(DockviewDropTargets || (DockviewDropTargets = {}));\r\n//# sourceMappingURL=types.js.map","import { getElementsByTagName } from '../dom';\r\nimport { addDisposableListener, Emitter } from '../events';\r\nimport { CompositeDisposable, MutableDisposable, } from '../lifecycle';\r\nexport class DragHandler extends CompositeDisposable {\r\n constructor(el) {\r\n super();\r\n this.el = el;\r\n this.dataDisposable = new MutableDisposable();\r\n this.pointerEventsDisposable = new MutableDisposable();\r\n this._onDragStart = new Emitter();\r\n this.onDragStart = this._onDragStart.event;\r\n this.addDisposables(this._onDragStart, this.dataDisposable, this.pointerEventsDisposable);\r\n this.configure();\r\n }\r\n isCancelled(_event) {\r\n return false;\r\n }\r\n configure() {\r\n this.addDisposables(this._onDragStart, addDisposableListener(this.el, 'dragstart', (event) => {\r\n if (event.defaultPrevented || this.isCancelled(event)) {\r\n event.preventDefault();\r\n return;\r\n }\r\n const iframes = [\r\n ...getElementsByTagName('iframe'),\r\n ...getElementsByTagName('webview'),\r\n ];\r\n this.pointerEventsDisposable.value = {\r\n dispose: () => {\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'auto';\r\n }\r\n },\r\n };\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'none';\r\n }\r\n this.el.classList.add('dv-dragged');\r\n setTimeout(() => this.el.classList.remove('dv-dragged'), 0);\r\n this.dataDisposable.value = this.getData(event);\r\n this._onDragStart.fire(event);\r\n if (event.dataTransfer) {\r\n event.dataTransfer.effectAllowed = 'move';\r\n const hasData = event.dataTransfer.items.length > 0;\r\n if (!hasData) {\r\n /**\r\n * Although this is not used by dockview many third party dnd libraries will check\r\n * dataTransfer.types to determine valid drag events.\r\n *\r\n * For example: in react-dnd if dataTransfer.types is not set then the dragStart event will be cancelled\r\n * through .preventDefault(). Since this is applied globally to all drag events this would break dockviews\r\n * dnd logic. You can see the code at\r\n * https://github.com/react-dnd/react-dnd/blob/main/packages/backend-html5/src/HTML5BackendImpl.ts#L542\r\n */\r\n event.dataTransfer.setData('text/plain', '__dockview_internal_drag_event__');\r\n }\r\n }\r\n }), addDisposableListener(this.el, 'dragend', () => {\r\n this.pointerEventsDisposable.dispose();\r\n this.dataDisposable.dispose();\r\n }));\r\n }\r\n}\r\n//# sourceMappingURL=abstractDragHandler.js.map","import { addDisposableListener, Emitter } from '../../../events';\r\nimport { CompositeDisposable } from '../../../lifecycle';\r\nimport { getPanelData, LocalSelectionTransfer, PanelTransfer, } from '../../../dnd/dataTransfer';\r\nimport { toggleClass } from '../../../dom';\r\nimport { DockviewDropTargets } from '../../types';\r\nimport { Droptarget } from '../../../dnd/droptarget';\r\nimport { DragHandler } from '../../../dnd/abstractDragHandler';\r\nclass TabDragHandler extends DragHandler {\r\n constructor(element, accessor, group, panel) {\r\n super(element);\r\n this.accessor = accessor;\r\n this.group = group;\r\n this.panel = panel;\r\n this.panelTransfer = LocalSelectionTransfer.getInstance();\r\n }\r\n getData(event) {\r\n this.panelTransfer.setData([new PanelTransfer(this.accessor.id, this.group.id, this.panel.id)], PanelTransfer.prototype);\r\n return {\r\n dispose: () => {\r\n this.panelTransfer.clearData(PanelTransfer.prototype);\r\n },\r\n };\r\n }\r\n}\r\nexport class Tab extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor(panel, accessor, group) {\r\n super();\r\n this.panel = panel;\r\n this.accessor = accessor;\r\n this.group = group;\r\n this.content = undefined;\r\n this._onChanged = new Emitter();\r\n this.onChanged = this._onChanged.event;\r\n this._onDropped = new Emitter();\r\n this.onDrop = this._onDropped.event;\r\n this._onDragStart = new Emitter();\r\n this.onDragStart = this._onDragStart.event;\r\n this._element = document.createElement('div');\r\n this._element.className = 'tab';\r\n this._element.tabIndex = 0;\r\n this._element.draggable = true;\r\n toggleClass(this.element, 'inactive-tab', true);\r\n const dragHandler = new TabDragHandler(this._element, this.accessor, this.group, this.panel);\r\n this.droptarget = new Droptarget(this._element, {\r\n acceptedTargetZones: ['center'],\r\n canDisplayOverlay: (event, position) => {\r\n if (this.group.locked) {\r\n return false;\r\n }\r\n const data = getPanelData();\r\n if (data && this.accessor.id === data.viewId) {\r\n if (data.panelId === null &&\r\n data.groupId === this.group.id) {\r\n // don't allow group move to drop on self\r\n return false;\r\n }\r\n return this.panel.id !== data.panelId;\r\n }\r\n return this.group.model.canDisplayOverlay(event, position, DockviewDropTargets.Tab);\r\n },\r\n });\r\n this.addDisposables(this._onChanged, this._onDropped, this._onDragStart, dragHandler.onDragStart((event) => {\r\n this._onDragStart.fire(event);\r\n }), dragHandler, addDisposableListener(this._element, 'mousedown', (event) => {\r\n if (event.defaultPrevented) {\r\n return;\r\n }\r\n this._onChanged.fire(event);\r\n }), this.droptarget.onDrop((event) => {\r\n this._onDropped.fire(event);\r\n }), this.droptarget);\r\n }\r\n setActive(isActive) {\r\n toggleClass(this.element, 'active-tab', isActive);\r\n toggleClass(this.element, 'inactive-tab', !isActive);\r\n }\r\n setContent(part) {\r\n if (this.content) {\r\n this._element.removeChild(this.content.element);\r\n }\r\n this.content = part;\r\n this._element.appendChild(this.content.element);\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=tab.js.map","import { quasiPreventDefault } from '../dom';\r\nimport { addDisposableListener } from '../events';\r\nimport { DragHandler } from './abstractDragHandler';\r\nimport { LocalSelectionTransfer, PanelTransfer } from './dataTransfer';\r\nimport { addGhostImage } from './ghost';\r\nexport class GroupDragHandler extends DragHandler {\r\n constructor(element, accessor, group) {\r\n super(element);\r\n this.accessor = accessor;\r\n this.group = group;\r\n this.panelTransfer = LocalSelectionTransfer.getInstance();\r\n this.addDisposables(addDisposableListener(element, 'mousedown', (e) => {\r\n if (e.shiftKey) {\r\n /**\r\n * You cannot call e.preventDefault() because that will prevent drag events from firing\r\n * but we also need to stop any group overlay drag events from occuring\r\n * Use a custom event marker that can be checked by the overlay drag events\r\n */\r\n quasiPreventDefault(e);\r\n }\r\n }, true));\r\n }\r\n isCancelled(_event) {\r\n if (this.group.api.isFloating && !_event.shiftKey) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n getData(dragEvent) {\r\n const dataTransfer = dragEvent.dataTransfer;\r\n this.panelTransfer.setData([new PanelTransfer(this.accessor.id, this.group.id, null)], PanelTransfer.prototype);\r\n const style = window.getComputedStyle(this.el);\r\n const bgColor = style.getPropertyValue('--dv-activegroup-visiblepanel-tab-background-color');\r\n const color = style.getPropertyValue('--dv-activegroup-visiblepanel-tab-color');\r\n if (dataTransfer) {\r\n const ghostElement = document.createElement('div');\r\n ghostElement.style.backgroundColor = bgColor;\r\n ghostElement.style.color = color;\r\n ghostElement.style.padding = '2px 8px';\r\n ghostElement.style.height = '24px';\r\n ghostElement.style.fontSize = '11px';\r\n ghostElement.style.lineHeight = '20px';\r\n ghostElement.style.borderRadius = '12px';\r\n ghostElement.style.position = 'absolute';\r\n ghostElement.textContent = `Multiple Panels (${this.group.size})`;\r\n addGhostImage(dataTransfer, ghostElement);\r\n }\r\n return {\r\n dispose: () => {\r\n this.panelTransfer.clearData(PanelTransfer.prototype);\r\n },\r\n };\r\n }\r\n}\r\n//# sourceMappingURL=groupDragHandler.js.map","import { addClasses, removeClasses } from '../dom';\r\nexport function addGhostImage(dataTransfer, ghostElement) {\r\n // class dockview provides to force ghost image to be drawn on a different layer and prevent weird rendering issues\r\n addClasses(ghostElement, 'dv-dragged');\r\n document.body.appendChild(ghostElement);\r\n dataTransfer.setDragImage(ghostElement, 0, 0);\r\n setTimeout(() => {\r\n removeClasses(ghostElement, 'dv-dragged');\r\n ghostElement.remove();\r\n }, 0);\r\n}\r\n//# sourceMappingURL=ghost.js.map","import { last } from '../../../array';\r\nimport { getPanelData } from '../../../dnd/dataTransfer';\r\nimport { Droptarget } from '../../../dnd/droptarget';\r\nimport { GroupDragHandler } from '../../../dnd/groupDragHandler';\r\nimport { addDisposableListener, Emitter } from '../../../events';\r\nimport { CompositeDisposable } from '../../../lifecycle';\r\nimport { DockviewDropTargets } from '../../types';\r\nexport class VoidContainer extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor(accessor, group) {\r\n super();\r\n this.accessor = accessor;\r\n this.group = group;\r\n this._onDrop = new Emitter();\r\n this.onDrop = this._onDrop.event;\r\n this._onDragStart = new Emitter();\r\n this.onDragStart = this._onDragStart.event;\r\n this._element = document.createElement('div');\r\n this._element.className = 'void-container';\r\n this._element.tabIndex = 0;\r\n this._element.draggable = true;\r\n this.addDisposables(this._onDrop, this._onDragStart, addDisposableListener(this._element, 'click', () => {\r\n this.accessor.doSetGroupActive(this.group);\r\n }));\r\n const handler = new GroupDragHandler(this._element, accessor, group);\r\n this.voidDropTarget = new Droptarget(this._element, {\r\n acceptedTargetZones: ['center'],\r\n canDisplayOverlay: (event, position) => {\r\n var _a;\r\n const data = getPanelData();\r\n if (data && this.accessor.id === data.viewId) {\r\n if (data.panelId === null &&\r\n data.groupId === this.group.id) {\r\n // don't allow group move to drop on self\r\n return false;\r\n }\r\n // don't show the overlay if the tab being dragged is the last panel of this group\r\n return ((_a = last(this.group.panels)) === null || _a === void 0 ? void 0 : _a.id) !== data.panelId;\r\n }\r\n return group.model.canDisplayOverlay(event, position, DockviewDropTargets.Panel);\r\n },\r\n });\r\n this.addDisposables(handler, handler.onDragStart((event) => {\r\n this._onDragStart.fire(event);\r\n }), this.voidDropTarget.onDrop((event) => {\r\n this._onDrop.fire(event);\r\n }), this.voidDropTarget);\r\n }\r\n}\r\n//# sourceMappingURL=voidContainer.js.map","import { CompositeDisposable, } from '../../../lifecycle';\r\nimport { addDisposableListener, Emitter } from '../../../events';\r\nimport { Tab } from '../tab/tab';\r\nimport { VoidContainer } from './voidContainer';\r\nimport { toggleClass } from '../../../dom';\r\nexport class TabsContainer extends CompositeDisposable {\r\n get panels() {\r\n return this.tabs.map((_) => _.value.panel.id);\r\n }\r\n get size() {\r\n return this.tabs.length;\r\n }\r\n get hidden() {\r\n return this._hidden;\r\n }\r\n set hidden(value) {\r\n this._hidden = value;\r\n this.element.style.display = value ? 'none' : '';\r\n }\r\n show() {\r\n if (!this.hidden) {\r\n this.element.style.display = '';\r\n }\r\n }\r\n hide() {\r\n this._element.style.display = 'none';\r\n }\r\n setRightActionsElement(element) {\r\n if (this.rightActions === element) {\r\n return;\r\n }\r\n if (this.rightActions) {\r\n this.rightActions.remove();\r\n this.rightActions = undefined;\r\n }\r\n if (element) {\r\n this.rightActionsContainer.appendChild(element);\r\n this.rightActions = element;\r\n }\r\n }\r\n setLeftActionsElement(element) {\r\n if (this.leftActions === element) {\r\n return;\r\n }\r\n if (this.leftActions) {\r\n this.leftActions.remove();\r\n this.leftActions = undefined;\r\n }\r\n if (element) {\r\n this.leftActionsContainer.appendChild(element);\r\n this.leftActions = element;\r\n }\r\n }\r\n get element() {\r\n return this._element;\r\n }\r\n isActive(tab) {\r\n return (this.selectedIndex > -1 &&\r\n this.tabs[this.selectedIndex].value === tab);\r\n }\r\n indexOf(id) {\r\n return this.tabs.findIndex((tab) => tab.value.panel.id === id);\r\n }\r\n constructor(accessor, group) {\r\n super();\r\n this.accessor = accessor;\r\n this.group = group;\r\n this.tabs = [];\r\n this.selectedIndex = -1;\r\n this._hidden = false;\r\n this._onDrop = new Emitter();\r\n this.onDrop = this._onDrop.event;\r\n this._onTabDragStart = new Emitter();\r\n this.onTabDragStart = this._onTabDragStart.event;\r\n this._onGroupDragStart = new Emitter();\r\n this.onGroupDragStart = this._onGroupDragStart.event;\r\n this.addDisposables(this._onDrop, this._onTabDragStart, this._onGroupDragStart);\r\n this._element = document.createElement('div');\r\n this._element.className = 'tabs-and-actions-container';\r\n toggleClass(this._element, 'dv-full-width-single-tab', this.accessor.options.singleTabMode === 'fullwidth');\r\n this.addDisposables(this.accessor.onDidAddPanel((e) => {\r\n if (e.api.group === this.group) {\r\n toggleClass(this._element, 'dv-single-tab', this.size === 1);\r\n }\r\n }), this.accessor.onDidRemovePanel((e) => {\r\n if (e.api.group === this.group) {\r\n toggleClass(this._element, 'dv-single-tab', this.size === 1);\r\n }\r\n }));\r\n this.rightActionsContainer = document.createElement('div');\r\n this.rightActionsContainer.className = 'right-actions-container';\r\n this.leftActionsContainer = document.createElement('div');\r\n this.leftActionsContainer.className = 'left-actions-container';\r\n this.tabContainer = document.createElement('div');\r\n this.tabContainer.className = 'tabs-container';\r\n this.voidContainer = new VoidContainer(this.accessor, this.group);\r\n this._element.appendChild(this.tabContainer);\r\n this._element.appendChild(this.leftActionsContainer);\r\n this._element.appendChild(this.voidContainer.element);\r\n this._element.appendChild(this.rightActionsContainer);\r\n this.addDisposables(this.voidContainer, this.voidContainer.onDragStart((event) => {\r\n this._onGroupDragStart.fire({\r\n nativeEvent: event,\r\n group: this.group,\r\n });\r\n }), this.voidContainer.onDrop((event) => {\r\n this._onDrop.fire({\r\n event: event.nativeEvent,\r\n index: this.tabs.length,\r\n });\r\n }), addDisposableListener(this.voidContainer.element, 'mousedown', (event) => {\r\n const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;\r\n if (isFloatingGroupsEnabled &&\r\n event.shiftKey &&\r\n !this.group.api.isFloating) {\r\n event.preventDefault();\r\n const { top, left } = this.element.getBoundingClientRect();\r\n const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();\r\n this.accessor.addFloatingGroup(this.group, {\r\n x: left - rootLeft + 20,\r\n y: top - rootTop + 20,\r\n }, { inDragMode: true });\r\n }\r\n }), addDisposableListener(this.tabContainer, 'mousedown', (event) => {\r\n if (event.defaultPrevented) {\r\n return;\r\n }\r\n const isLeftClick = event.button === 0;\r\n if (isLeftClick) {\r\n this.accessor.doSetGroupActive(this.group);\r\n }\r\n }));\r\n }\r\n setActive(_isGroupActive) {\r\n // noop\r\n }\r\n addTab(tab, index = this.tabs.length) {\r\n if (index < 0 || index > this.tabs.length) {\r\n throw new Error('invalid location');\r\n }\r\n this.tabContainer.insertBefore(tab.value.element, this.tabContainer.children[index]);\r\n this.tabs = [\r\n ...this.tabs.slice(0, index),\r\n tab,\r\n ...this.tabs.slice(index),\r\n ];\r\n if (this.selectedIndex < 0) {\r\n this.selectedIndex = index;\r\n }\r\n }\r\n delete(id) {\r\n const index = this.tabs.findIndex((tab) => tab.value.panel.id === id);\r\n const tabToRemove = this.tabs.splice(index, 1)[0];\r\n const { value, disposable } = tabToRemove;\r\n disposable.dispose();\r\n value.dispose();\r\n value.element.remove();\r\n }\r\n setActivePanel(panel) {\r\n this.tabs.forEach((tab) => {\r\n const isActivePanel = panel.id === tab.value.panel.id;\r\n tab.value.setActive(isActivePanel);\r\n });\r\n }\r\n openPanel(panel, index = this.tabs.length) {\r\n var _a;\r\n if (this.tabs.find((tab) => tab.value.panel.id === panel.id)) {\r\n return;\r\n }\r\n const tab = new Tab(panel, this.accessor, this.group);\r\n if (!((_a = panel.view) === null || _a === void 0 ? void 0 : _a.tab)) {\r\n throw new Error('invalid header component');\r\n }\r\n tab.setContent(panel.view.tab);\r\n const disposable = new CompositeDisposable(tab.onDragStart((event) => {\r\n this._onTabDragStart.fire({ nativeEvent: event, panel });\r\n }), tab.onChanged((event) => {\r\n var _a;\r\n const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;\r\n const isFloatingWithOnePanel = this.group.api.isFloating && this.size === 1;\r\n if (isFloatingGroupsEnabled &&\r\n !isFloatingWithOnePanel &&\r\n event.shiftKey) {\r\n event.preventDefault();\r\n const panel = this.accessor.getGroupPanel(tab.panel.id);\r\n const { top, left } = tab.element.getBoundingClientRect();\r\n const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();\r\n this.accessor.addFloatingGroup(panel, {\r\n x: left - rootLeft,\r\n y: top - rootTop,\r\n }, { inDragMode: true });\r\n return;\r\n }\r\n const alreadyFocused = panel.id === ((_a = this.group.model.activePanel) === null || _a === void 0 ? void 0 : _a.id) &&\r\n this.group.model.isContentFocused;\r\n const isLeftClick = event.button === 0;\r\n if (!isLeftClick || event.defaultPrevented) {\r\n return;\r\n }\r\n this.group.model.openPanel(panel, {\r\n skipFocus: alreadyFocused,\r\n });\r\n }), tab.onDrop((event) => {\r\n this._onDrop.fire({\r\n event: event.nativeEvent,\r\n index: this.tabs.findIndex((x) => x.value === tab),\r\n });\r\n }));\r\n const value = { value: tab, disposable };\r\n this.addTab(value, index);\r\n }\r\n closePanel(panel) {\r\n this.delete(panel.id);\r\n }\r\n dispose() {\r\n super.dispose();\r\n for (const { value, disposable } of this.tabs) {\r\n disposable.dispose();\r\n value.dispose();\r\n }\r\n this.tabs = [];\r\n }\r\n}\r\n//# sourceMappingURL=tabsContainer.js.map","import { DockviewApi } from '../api/component.api';\r\nimport { getPanelData } from '../dnd/dataTransfer';\r\nimport { Droptarget } from '../dnd/droptarget';\r\nimport { isAncestor, toggleClass } from '../dom';\r\nimport { addDisposableListener, Emitter } from '../events';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nimport { ContentContainer, } from './components/panel/content';\r\nimport { TabsContainer, } from './components/titlebar/tabsContainer';\r\nimport { DockviewDropTargets } from './types';\r\nexport class DockviewGroupPanelModel extends CompositeDisposable {\r\n get element() {\r\n throw new Error('not supported');\r\n }\r\n get activePanel() {\r\n return this._activePanel;\r\n }\r\n get locked() {\r\n return this._locked;\r\n }\r\n set locked(value) {\r\n this._locked = value;\r\n toggleClass(this.container, 'locked-groupview', value === 'no-drop-target' || value);\r\n }\r\n get isActive() {\r\n return this._isGroupActive;\r\n }\r\n get panels() {\r\n return this._panels;\r\n }\r\n get size() {\r\n return this._panels.length;\r\n }\r\n get isEmpty() {\r\n return this._panels.length === 0;\r\n }\r\n get hasWatermark() {\r\n return !!(this.watermark && this.container.contains(this.watermark.element));\r\n }\r\n get header() {\r\n return this.tabsContainer;\r\n }\r\n get isContentFocused() {\r\n if (!document.activeElement) {\r\n return false;\r\n }\r\n return isAncestor(document.activeElement, this.contentContainer.element);\r\n }\r\n get isFloating() {\r\n return this._isFloating;\r\n }\r\n set isFloating(value) {\r\n this._isFloating = value;\r\n this.dropTarget.setTargetZones(value ? ['center'] : ['top', 'bottom', 'left', 'right', 'center']);\r\n toggleClass(this.container, 'dv-groupview-floating', value);\r\n this.groupPanel.api._onDidFloatingStateChange.fire({\r\n isFloating: this.isFloating,\r\n });\r\n }\r\n constructor(container, accessor, id, options, groupPanel) {\r\n super();\r\n this.container = container;\r\n this.accessor = accessor;\r\n this.id = id;\r\n this.options = options;\r\n this.groupPanel = groupPanel;\r\n this._isGroupActive = false;\r\n this._locked = false;\r\n this._isFloating = false;\r\n this.mostRecentlyUsed = [];\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._width = 0;\r\n this._height = 0;\r\n this._panels = [];\r\n this._onMove = new Emitter();\r\n this.onMove = this._onMove.event;\r\n this._onDidDrop = new Emitter();\r\n this.onDidDrop = this._onDidDrop.event;\r\n this._onTabDragStart = new Emitter();\r\n this.onTabDragStart = this._onTabDragStart.event;\r\n this._onGroupDragStart = new Emitter();\r\n this.onGroupDragStart = this._onGroupDragStart.event;\r\n this._onDidAddPanel = new Emitter();\r\n this.onDidAddPanel = this._onDidAddPanel.event;\r\n this._onDidRemovePanel = new Emitter();\r\n this.onDidRemovePanel = this._onDidRemovePanel.event;\r\n this._onDidActivePanelChange = new Emitter();\r\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\r\n toggleClass(this.container, 'groupview', true);\r\n this.tabsContainer = new TabsContainer(this.accessor, this.groupPanel);\r\n this.contentContainer = new ContentContainer();\r\n this.dropTarget = new Droptarget(this.contentContainer.element, {\r\n acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],\r\n canDisplayOverlay: (event, position) => {\r\n if (this.locked === 'no-drop-target' ||\r\n (this.locked && position === 'center')) {\r\n return false;\r\n }\r\n const data = getPanelData();\r\n if (!data && event.shiftKey && !this.isFloating) {\r\n return false;\r\n }\r\n if (data && data.viewId === this.accessor.id) {\r\n if (data.groupId === this.id) {\r\n if (position === 'center') {\r\n // don't allow to drop on self for center position\r\n return false;\r\n }\r\n if (data.panelId === null) {\r\n // don't allow group move to drop anywhere on self\r\n return false;\r\n }\r\n }\r\n const groupHasOnePanelAndIsActiveDragElement = this._panels.length === 1 && data.groupId === this.id;\r\n return !groupHasOnePanelAndIsActiveDragElement;\r\n }\r\n return this.canDisplayOverlay(event, position, DockviewDropTargets.Panel);\r\n },\r\n });\r\n container.append(this.tabsContainer.element, this.contentContainer.element);\r\n this.header.hidden = !!options.hideHeader;\r\n this.locked = options.locked || false;\r\n this.addDisposables(this._onTabDragStart, this._onGroupDragStart, this.tabsContainer.onTabDragStart((event) => {\r\n this._onTabDragStart.fire(event);\r\n }), this.tabsContainer.onGroupDragStart((event) => {\r\n this._onGroupDragStart.fire(event);\r\n }), this.tabsContainer.onDrop((event) => {\r\n this.handleDropEvent(event.event, 'center', event.index);\r\n }), this.contentContainer.onDidFocus(() => {\r\n this.accessor.doSetGroupActive(this.groupPanel, true);\r\n }), this.contentContainer.onDidBlur(() => {\r\n // noop\r\n }), this.dropTarget.onDrop((event) => {\r\n this.handleDropEvent(event.nativeEvent, event.position);\r\n }), this._onMove, this._onDidChange, this._onDidDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange);\r\n }\r\n initialize() {\r\n var _a, _b;\r\n if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.panels) {\r\n this.options.panels.forEach((panel) => {\r\n this.doAddPanel(panel);\r\n });\r\n }\r\n if ((_b = this.options) === null || _b === void 0 ? void 0 : _b.activePanel) {\r\n this.openPanel(this.options.activePanel);\r\n }\r\n // must be run after the constructor otherwise this.parent may not be\r\n // correctly initialized\r\n this.setActive(this.isActive, true, true);\r\n this.updateContainer();\r\n if (this.accessor.options.createRightHeaderActionsElement) {\r\n this._rightHeaderActions =\r\n this.accessor.options.createRightHeaderActionsElement(this.groupPanel);\r\n this.addDisposables(this._rightHeaderActions);\r\n this._rightHeaderActions.init({\r\n containerApi: new DockviewApi(this.accessor),\r\n api: this.groupPanel.api,\r\n });\r\n this.tabsContainer.setRightActionsElement(this._rightHeaderActions.element);\r\n }\r\n if (this.accessor.options.createLeftHeaderActionsElement) {\r\n this._leftHeaderActions =\r\n this.accessor.options.createLeftHeaderActionsElement(this.groupPanel);\r\n this.addDisposables(this._leftHeaderActions);\r\n this._leftHeaderActions.init({\r\n containerApi: new DockviewApi(this.accessor),\r\n api: this.groupPanel.api,\r\n });\r\n this.tabsContainer.setLeftActionsElement(this._leftHeaderActions.element);\r\n }\r\n }\r\n indexOf(panel) {\r\n return this.tabsContainer.indexOf(panel.id);\r\n }\r\n toJSON() {\r\n var _a;\r\n const result = {\r\n views: this.tabsContainer.panels,\r\n activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,\r\n id: this.id,\r\n };\r\n if (this.locked !== false) {\r\n result.locked = this.locked;\r\n }\r\n if (this.header.hidden) {\r\n result.hideHeader = true;\r\n }\r\n return result;\r\n }\r\n moveToNext(options) {\r\n if (!options) {\r\n options = {};\r\n }\r\n if (!options.panel) {\r\n options.panel = this.activePanel;\r\n }\r\n const index = options.panel ? this.panels.indexOf(options.panel) : -1;\r\n let normalizedIndex;\r\n if (index < this.panels.length - 1) {\r\n normalizedIndex = index + 1;\r\n }\r\n else if (!options.suppressRoll) {\r\n normalizedIndex = 0;\r\n }\r\n else {\r\n return;\r\n }\r\n this.openPanel(this.panels[normalizedIndex]);\r\n }\r\n moveToPrevious(options) {\r\n if (!options) {\r\n options = {};\r\n }\r\n if (!options.panel) {\r\n options.panel = this.activePanel;\r\n }\r\n if (!options.panel) {\r\n return;\r\n }\r\n const index = this.panels.indexOf(options.panel);\r\n let normalizedIndex;\r\n if (index > 0) {\r\n normalizedIndex = index - 1;\r\n }\r\n else if (!options.suppressRoll) {\r\n normalizedIndex = this.panels.length - 1;\r\n }\r\n else {\r\n return;\r\n }\r\n this.openPanel(this.panels[normalizedIndex]);\r\n }\r\n containsPanel(panel) {\r\n return this.panels.includes(panel);\r\n }\r\n init(_params) {\r\n //noop\r\n }\r\n update(_params) {\r\n //noop\r\n }\r\n focus() {\r\n var _a, _b;\r\n (_b = (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n }\r\n openPanel(panel, options = {}) {\r\n if (typeof options.index !== 'number' ||\r\n options.index > this.panels.length) {\r\n options.index = this.panels.length;\r\n }\r\n const skipSetPanelActive = !!options.skipSetPanelActive;\r\n const skipSetGroupActive = !!options.skipSetGroupActive;\r\n // ensure the group is updated before we fire any events\r\n panel.updateParentGroup(this.groupPanel, true);\r\n if (this._activePanel === panel) {\r\n if (!skipSetGroupActive) {\r\n this.accessor.doSetGroupActive(this.groupPanel);\r\n }\r\n return;\r\n }\r\n this.doAddPanel(panel, options.index, skipSetPanelActive);\r\n if (!skipSetPanelActive) {\r\n this.doSetActivePanel(panel);\r\n }\r\n if (!skipSetGroupActive) {\r\n this.accessor.doSetGroupActive(this.groupPanel, !!options.skipFocus);\r\n }\r\n this.updateContainer();\r\n }\r\n removePanel(groupItemOrId) {\r\n const id = typeof groupItemOrId === 'string'\r\n ? groupItemOrId\r\n : groupItemOrId.id;\r\n const panelToRemove = this._panels.find((panel) => panel.id === id);\r\n if (!panelToRemove) {\r\n throw new Error('invalid operation');\r\n }\r\n return this._removePanel(panelToRemove);\r\n }\r\n closeAllPanels() {\r\n if (this.panels.length > 0) {\r\n // take a copy since we will be edting the array as we iterate through\r\n const arrPanelCpy = [...this.panels];\r\n for (const panel of arrPanelCpy) {\r\n this.doClose(panel);\r\n }\r\n }\r\n else {\r\n this.accessor.removeGroup(this.groupPanel);\r\n }\r\n }\r\n closePanel(panel) {\r\n this.doClose(panel);\r\n }\r\n doClose(panel) {\r\n this.accessor.removePanel(panel);\r\n }\r\n isPanelActive(panel) {\r\n return this._activePanel === panel;\r\n }\r\n updateActions(element) {\r\n this.tabsContainer.setRightActionsElement(element);\r\n }\r\n setActive(isGroupActive, skipFocus = false, force = false) {\r\n var _a, _b, _c, _d;\r\n if (!force && this.isActive === isGroupActive) {\r\n if (!skipFocus) {\r\n (_b = (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n }\r\n return;\r\n }\r\n this._isGroupActive = isGroupActive;\r\n toggleClass(this.container, 'active-group', isGroupActive);\r\n toggleClass(this.container, 'inactive-group', !isGroupActive);\r\n this.tabsContainer.setActive(this.isActive);\r\n if (!this._activePanel && this.panels.length > 0) {\r\n this.doSetActivePanel(this.panels[0]);\r\n }\r\n this.updateContainer();\r\n if (isGroupActive) {\r\n if (!skipFocus) {\r\n (_d = (_c = this._activePanel) === null || _c === void 0 ? void 0 : _c.focus) === null || _d === void 0 ? void 0 : _d.call(_c);\r\n }\r\n }\r\n }\r\n layout(width, height) {\r\n var _a;\r\n this._width = width;\r\n this._height = height;\r\n this.contentContainer.layout(this._width, this._height);\r\n if ((_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.layout) {\r\n this._activePanel.layout(this._width, this._height);\r\n }\r\n }\r\n _removePanel(panel) {\r\n const isActivePanel = this._activePanel === panel;\r\n this.doRemovePanel(panel);\r\n if (isActivePanel && this.panels.length > 0) {\r\n const nextPanel = this.mostRecentlyUsed[0];\r\n this.openPanel(nextPanel);\r\n }\r\n if (this._activePanel && this.panels.length === 0) {\r\n this.doSetActivePanel(undefined);\r\n }\r\n this.updateContainer();\r\n return panel;\r\n }\r\n doRemovePanel(panel) {\r\n const index = this.panels.indexOf(panel);\r\n if (this._activePanel === panel) {\r\n this.contentContainer.closePanel();\r\n }\r\n this.tabsContainer.delete(panel.id);\r\n this._panels.splice(index, 1);\r\n if (this.mostRecentlyUsed.includes(panel)) {\r\n this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);\r\n }\r\n this._onDidRemovePanel.fire({ panel });\r\n }\r\n doAddPanel(panel, index = this.panels.length, skipSetActive = false) {\r\n const existingPanel = this._panels.indexOf(panel);\r\n const hasExistingPanel = existingPanel > -1;\r\n this.tabsContainer.openPanel(panel, index);\r\n if (!skipSetActive) {\r\n this.contentContainer.openPanel(panel);\r\n }\r\n this.tabsContainer.show();\r\n this.contentContainer.show();\r\n if (hasExistingPanel) {\r\n // TODO - need to ensure ordering hasn't changed and if it has need to re-order this.panels\r\n return;\r\n }\r\n this.updateMru(panel);\r\n this.panels.splice(index, 0, panel);\r\n this._onDidAddPanel.fire({ panel });\r\n }\r\n doSetActivePanel(panel) {\r\n this._activePanel = panel;\r\n if (panel) {\r\n this.tabsContainer.setActivePanel(panel);\r\n panel.layout(this._width, this._height);\r\n this.updateMru(panel);\r\n this._onDidActivePanelChange.fire({ panel });\r\n }\r\n }\r\n updateMru(panel) {\r\n if (this.mostRecentlyUsed.includes(panel)) {\r\n this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);\r\n }\r\n this.mostRecentlyUsed = [panel, ...this.mostRecentlyUsed];\r\n }\r\n updateContainer() {\r\n var _a, _b;\r\n toggleClass(this.container, 'empty', this.isEmpty);\r\n this.panels.forEach((panel) => panel.updateParentGroup(this.groupPanel, this.isActive));\r\n if (this.isEmpty && !this.watermark) {\r\n const watermark = this.accessor.createWatermarkComponent();\r\n watermark.init({\r\n containerApi: new DockviewApi(this.accessor),\r\n group: this.groupPanel,\r\n });\r\n this.watermark = watermark;\r\n addDisposableListener(this.watermark.element, 'click', () => {\r\n if (!this.isActive) {\r\n this.accessor.doSetGroupActive(this.groupPanel);\r\n }\r\n });\r\n this.tabsContainer.hide();\r\n this.contentContainer.element.appendChild(this.watermark.element);\r\n this.watermark.updateParentGroup(this.groupPanel, true);\r\n }\r\n if (!this.isEmpty && this.watermark) {\r\n this.watermark.element.remove();\r\n (_b = (_a = this.watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n this.watermark = undefined;\r\n this.tabsContainer.show();\r\n }\r\n }\r\n canDisplayOverlay(event, position, target) {\r\n // custom overlay handler\r\n if (this.accessor.options.showDndOverlay) {\r\n return this.accessor.options.showDndOverlay({\r\n nativeEvent: event,\r\n target,\r\n group: this.accessor.getPanel(this.id),\r\n position,\r\n getData: getPanelData,\r\n });\r\n }\r\n return false;\r\n }\r\n handleDropEvent(event, position, index) {\r\n if (this.locked === 'no-drop-target') {\r\n return;\r\n }\r\n const data = getPanelData();\r\n if (data && data.viewId === this.accessor.id) {\r\n if (data.panelId === null) {\r\n // this is a group move dnd event\r\n const { groupId } = data;\r\n this._onMove.fire({\r\n target: position,\r\n groupId: groupId,\r\n index,\r\n });\r\n return;\r\n }\r\n const fromSameGroup = this.tabsContainer.indexOf(data.panelId) !== -1;\r\n if (fromSameGroup && this.tabsContainer.size === 1) {\r\n return;\r\n }\r\n const { groupId, panelId } = data;\r\n const isSameGroup = this.id === groupId;\r\n if (isSameGroup && !position) {\r\n const oldIndex = this.tabsContainer.indexOf(panelId);\r\n if (oldIndex === index) {\r\n return;\r\n }\r\n }\r\n this._onMove.fire({\r\n target: position,\r\n groupId: data.groupId,\r\n itemId: data.panelId,\r\n index,\r\n });\r\n }\r\n else {\r\n this._onDidDrop.fire({\r\n nativeEvent: event,\r\n position,\r\n index,\r\n getData: () => getPanelData(),\r\n });\r\n }\r\n }\r\n dispose() {\r\n var _a, _b, _c;\r\n super.dispose();\r\n (_a = this.watermark) === null || _a === void 0 ? void 0 : _a.element.remove();\r\n (_c = (_b = this.watermark) === null || _b === void 0 ? void 0 : _b.dispose) === null || _c === void 0 ? void 0 : _c.call(_b);\r\n for (const panel of this.panels) {\r\n panel.dispose();\r\n }\r\n this.dropTarget.dispose();\r\n this.tabsContainer.dispose();\r\n this.contentContainer.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=dockviewGroupPanelModel.js.map","import { watchElementResize } from './dom';\r\nimport { CompositeDisposable } from './lifecycle';\r\nexport class Resizable extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor(parentElement) {\r\n super();\r\n if (parentElement) {\r\n this._element = parentElement;\r\n }\r\n else {\r\n this._element = document.createElement('div');\r\n this._element.style.height = '100%';\r\n this._element.style.width = '100%';\r\n this._element.className = 'dv-resizable-container';\r\n }\r\n this.addDisposables(watchElementResize(this._element, (entry) => {\r\n if (this.isDisposed) {\r\n /**\r\n * resize is delayed through requestAnimationFrame so there is a small chance\r\n * the component has already been disposed of\r\n */\r\n return;\r\n }\r\n const { width, height } = entry.contentRect;\r\n this.layout(width, height);\r\n }));\r\n }\r\n}\r\n//# sourceMappingURL=resizable.js.map","import { Emitter, Event, TickDelayedEvent } from '../events';\r\nimport { getGridLocation, Gridview } from './gridview';\r\nimport { sequentialNumberGenerator } from '../math';\r\nimport { Sizing } from '../splitview/splitview';\r\nimport { Resizable } from '../resizable';\r\nconst nextLayoutId = sequentialNumberGenerator();\r\nexport function toTarget(direction) {\r\n switch (direction) {\r\n case 'left':\r\n return 'left';\r\n case 'right':\r\n return 'right';\r\n case 'above':\r\n return 'top';\r\n case 'below':\r\n return 'bottom';\r\n case 'within':\r\n default:\r\n return 'center';\r\n }\r\n}\r\nexport class BaseGrid extends Resizable {\r\n get id() {\r\n return this._id;\r\n }\r\n get size() {\r\n return this._groups.size;\r\n }\r\n get groups() {\r\n return Array.from(this._groups.values()).map((_) => _.value);\r\n }\r\n get width() {\r\n return this.gridview.width;\r\n }\r\n get height() {\r\n return this.gridview.height;\r\n }\r\n get minimumHeight() {\r\n return this.gridview.minimumHeight;\r\n }\r\n get maximumHeight() {\r\n return this.gridview.maximumHeight;\r\n }\r\n get minimumWidth() {\r\n return this.gridview.minimumWidth;\r\n }\r\n get maximumWidth() {\r\n return this.gridview.maximumWidth;\r\n }\r\n get activeGroup() {\r\n return this._activeGroup;\r\n }\r\n constructor(options) {\r\n super(options.parentElement);\r\n this._id = nextLayoutId.next();\r\n this._groups = new Map();\r\n this._onDidLayoutChange = new Emitter();\r\n this.onDidLayoutChange = this._onDidLayoutChange.event;\r\n this._onDidRemoveGroup = new Emitter();\r\n this.onDidRemoveGroup = this._onDidRemoveGroup.event;\r\n this._onDidAddGroup = new Emitter();\r\n this.onDidAddGroup = this._onDidAddGroup.event;\r\n this._onDidActiveGroupChange = new Emitter();\r\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\r\n this._bufferOnDidLayoutChange = new TickDelayedEvent();\r\n this.gridview = new Gridview(!!options.proportionalLayout, options.styles, options.orientation);\r\n this.element.appendChild(this.gridview.element);\r\n this.layout(0, 0, true); // set some elements height/widths\r\n this.addDisposables(this.gridview.onDidChange(() => {\r\n this._bufferOnDidLayoutChange.fire();\r\n }), Event.any(this.onDidAddGroup, this.onDidRemoveGroup, this.onDidActiveGroupChange)(() => {\r\n this._bufferOnDidLayoutChange.fire();\r\n }), this._bufferOnDidLayoutChange.onEvent(() => {\r\n this._onDidLayoutChange.fire();\r\n }), this._bufferOnDidLayoutChange);\r\n }\r\n setVisible(panel, visible) {\r\n this.gridview.setViewVisible(getGridLocation(panel.element), visible);\r\n this._onDidLayoutChange.fire();\r\n }\r\n isVisible(panel) {\r\n return this.gridview.isViewVisible(getGridLocation(panel.element));\r\n }\r\n doAddGroup(group, location = [0], size) {\r\n this.gridview.addView(group, size !== null && size !== void 0 ? size : Sizing.Distribute, location);\r\n this._onDidAddGroup.fire(group);\r\n this.doSetGroupActive(group);\r\n }\r\n doRemoveGroup(group, options) {\r\n if (!this._groups.has(group.id)) {\r\n throw new Error('invalid operation');\r\n }\r\n const item = this._groups.get(group.id);\r\n const view = this.gridview.remove(group, Sizing.Distribute);\r\n if (item && !(options === null || options === void 0 ? void 0 : options.skipDispose)) {\r\n item.disposable.dispose();\r\n item.value.dispose();\r\n this._groups.delete(group.id);\r\n }\r\n this._onDidRemoveGroup.fire(group);\r\n if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {\r\n const groups = Array.from(this._groups.values());\r\n this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);\r\n }\r\n return view;\r\n }\r\n getPanel(id) {\r\n var _a;\r\n return (_a = this._groups.get(id)) === null || _a === void 0 ? void 0 : _a.value;\r\n }\r\n doSetGroupActive(group, skipFocus) {\r\n var _a, _b, _c;\r\n if (this._activeGroup === group) {\r\n return;\r\n }\r\n if (this._activeGroup) {\r\n this._activeGroup.setActive(false);\r\n if (!skipFocus) {\r\n (_b = (_a = this._activeGroup).focus) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n }\r\n }\r\n if (group) {\r\n group.setActive(true);\r\n if (!skipFocus) {\r\n (_c = group.focus) === null || _c === void 0 ? void 0 : _c.call(group);\r\n }\r\n }\r\n this._activeGroup = group;\r\n this._onDidActiveGroupChange.fire(group);\r\n }\r\n removeGroup(group) {\r\n this.doRemoveGroup(group);\r\n }\r\n moveToNext(options) {\r\n var _a;\r\n if (!options) {\r\n options = {};\r\n }\r\n if (!options.group) {\r\n if (!this.activeGroup) {\r\n return;\r\n }\r\n options.group = this.activeGroup;\r\n }\r\n const location = getGridLocation(options.group.element);\r\n const next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;\r\n this.doSetGroupActive(next);\r\n }\r\n moveToPrevious(options) {\r\n var _a;\r\n if (!options) {\r\n options = {};\r\n }\r\n if (!options.group) {\r\n if (!this.activeGroup) {\r\n return;\r\n }\r\n options.group = this.activeGroup;\r\n }\r\n const location = getGridLocation(options.group.element);\r\n const next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;\r\n this.doSetGroupActive(next);\r\n }\r\n layout(width, height, forceResize) {\r\n const different = forceResize || width !== this.width || height !== this.height;\r\n if (!different) {\r\n return;\r\n }\r\n this.gridview.element.style.height = `${height}px`;\r\n this.gridview.element.style.width = `${width}px`;\r\n this.gridview.layout(width, height);\r\n }\r\n dispose() {\r\n this._onDidActiveGroupChange.dispose();\r\n this._onDidAddGroup.dispose();\r\n this._onDidRemoveGroup.dispose();\r\n this._onDidLayoutChange.dispose();\r\n for (const group of this.groups) {\r\n group.dispose();\r\n }\r\n this.gridview.dispose();\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=baseComponentGridview.js.map","import { Emitter } from '../events';\r\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\r\n/**\r\n * A core api implementation that should be used across all panel-like objects\r\n */\r\nexport class PanelApiImpl extends CompositeDisposable {\r\n //\r\n get isFocused() {\r\n return this._isFocused;\r\n }\r\n get isActive() {\r\n return this._isActive;\r\n }\r\n get isVisible() {\r\n return this._isVisible;\r\n }\r\n get width() {\r\n return this._width;\r\n }\r\n get height() {\r\n return this._height;\r\n }\r\n constructor(id) {\r\n super();\r\n this.id = id;\r\n this._isFocused = false;\r\n this._isActive = false;\r\n this._isVisible = true;\r\n this._width = 0;\r\n this._height = 0;\r\n this.panelUpdatesDisposable = new MutableDisposable();\r\n this._onDidDimensionChange = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidDimensionsChange = this._onDidDimensionChange.event;\r\n //\r\n this._onDidChangeFocus = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidFocusChange = this._onDidChangeFocus.event;\r\n //\r\n this._onFocusEvent = new Emitter();\r\n this.onFocusEvent = this._onFocusEvent.event;\r\n //\r\n this._onDidVisibilityChange = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidVisibilityChange = this._onDidVisibilityChange.event;\r\n //\r\n this._onVisibilityChange = new Emitter();\r\n this.onVisibilityChange = this._onVisibilityChange.event;\r\n //\r\n this._onDidActiveChange = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidActiveChange = this._onDidActiveChange.event;\r\n //\r\n this._onActiveChange = new Emitter();\r\n this.onActiveChange = this._onActiveChange.event;\r\n //\r\n this._onUpdateParameters = new Emitter();\r\n this.onUpdateParameters = this._onUpdateParameters.event;\r\n this.addDisposables(this.onDidFocusChange((event) => {\r\n this._isFocused = event.isFocused;\r\n }), this.onDidActiveChange((event) => {\r\n this._isActive = event.isActive;\r\n }), this.onDidVisibilityChange((event) => {\r\n this._isVisible = event.isVisible;\r\n }), this.onDidDimensionsChange((event) => {\r\n this._width = event.width;\r\n this._height = event.height;\r\n }), this.panelUpdatesDisposable, this._onDidDimensionChange, this._onDidChangeFocus, this._onDidVisibilityChange, this._onDidActiveChange, this._onFocusEvent, this._onActiveChange, this._onVisibilityChange, this._onUpdateParameters);\r\n }\r\n initialize(panel) {\r\n this.panelUpdatesDisposable.value = this._onUpdateParameters.event((parameters) => {\r\n panel.update({\r\n params: parameters,\r\n });\r\n });\r\n }\r\n setVisible(isVisible) {\r\n this._onVisibilityChange.fire({ isVisible });\r\n }\r\n setActive() {\r\n this._onActiveChange.fire();\r\n }\r\n updateParameters(parameters) {\r\n this._onUpdateParameters.fire(parameters);\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=panelApi.js.map","import { Emitter } from '../events';\r\nimport { PanelApiImpl } from './panelApi';\r\nexport class SplitviewPanelApiImpl extends PanelApiImpl {\r\n //\r\n constructor(id) {\r\n super(id);\r\n this._onDidConstraintsChangeInternal = new Emitter();\r\n this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;\r\n //\r\n this._onDidConstraintsChange = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidConstraintsChange = this._onDidConstraintsChange.event;\r\n //\r\n this._onDidSizeChange = new Emitter();\r\n this.onDidSizeChange = this._onDidSizeChange.event;\r\n this.addDisposables(this._onDidConstraintsChangeInternal, this._onDidConstraintsChange, this._onDidSizeChange);\r\n }\r\n setConstraints(value) {\r\n this._onDidConstraintsChangeInternal.fire(value);\r\n }\r\n setSize(event) {\r\n this._onDidSizeChange.fire(event);\r\n }\r\n}\r\n//# sourceMappingURL=splitviewPanelApi.js.map","import { Emitter } from '../events';\r\nimport { SplitviewPanelApiImpl } from './splitviewPanelApi';\r\nexport class PaneviewPanelApiImpl extends SplitviewPanelApiImpl {\r\n set pane(pane) {\r\n this._pane = pane;\r\n }\r\n constructor(id) {\r\n super(id);\r\n this._onDidExpansionChange = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidExpansionChange = this._onDidExpansionChange.event;\r\n this._onMouseEnter = new Emitter({});\r\n this.onMouseEnter = this._onMouseEnter.event;\r\n this._onMouseLeave = new Emitter({});\r\n this.onMouseLeave = this._onMouseLeave.event;\r\n this.addDisposables(this._onDidExpansionChange, this._onMouseEnter, this._onMouseLeave);\r\n }\r\n setExpanded(isExpanded) {\r\n var _a;\r\n (_a = this._pane) === null || _a === void 0 ? void 0 : _a.setExpanded(isExpanded);\r\n }\r\n get isExpanded() {\r\n var _a;\r\n return !!((_a = this._pane) === null || _a === void 0 ? void 0 : _a.isExpanded());\r\n }\r\n}\r\n//# sourceMappingURL=paneviewPanelApi.js.map","import { trackFocus } from '../dom';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nexport class BasePanelView extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n get width() {\r\n return this._width;\r\n }\r\n get height() {\r\n return this._height;\r\n }\r\n get params() {\r\n var _a;\r\n return (_a = this._params) === null || _a === void 0 ? void 0 : _a.params;\r\n }\r\n constructor(id, component, api) {\r\n super();\r\n this.id = id;\r\n this.component = component;\r\n this.api = api;\r\n this._height = 0;\r\n this._width = 0;\r\n this._element = document.createElement('div');\r\n this._element.tabIndex = -1;\r\n this._element.style.outline = 'none';\r\n this._element.style.height = '100%';\r\n this._element.style.width = '100%';\r\n this._element.style.overflow = 'hidden';\r\n const focusTracker = trackFocus(this._element);\r\n this.addDisposables(this.api, focusTracker.onDidFocus(() => {\r\n this.api._onDidChangeFocus.fire({ isFocused: true });\r\n }), focusTracker.onDidBlur(() => {\r\n this.api._onDidChangeFocus.fire({ isFocused: false });\r\n }), focusTracker);\r\n }\r\n focus() {\r\n this.api._onFocusEvent.fire();\r\n }\r\n layout(width, height) {\r\n this._width = width;\r\n this._height = height;\r\n this.api._onDidDimensionChange.fire({ width, height });\r\n if (this.part) {\r\n if (this._params) {\r\n this.part.update(this._params.params);\r\n }\r\n }\r\n }\r\n init(parameters) {\r\n this._params = parameters;\r\n this.part = this.getComponent();\r\n }\r\n update(event) {\r\n var _a, _b;\r\n // merge the new parameters with the existing parameters\r\n this._params = Object.assign(Object.assign({}, this._params), { params: Object.assign(Object.assign({}, (_a = this._params) === null || _a === void 0 ? void 0 : _a.params), event.params) });\r\n /**\r\n * delete new keys that have a value of undefined,\r\n * allow values of null\r\n */\r\n for (const key of Object.keys(event.params)) {\r\n if (event.params[key] === undefined) {\r\n delete this._params.params[key];\r\n }\r\n }\r\n // update the view with the updated props\r\n (_b = this.part) === null || _b === void 0 ? void 0 : _b.update({ params: this._params.params });\r\n }\r\n toJSON() {\r\n var _a, _b;\r\n const params = (_b = (_a = this._params) === null || _a === void 0 ? void 0 : _a.params) !== null && _b !== void 0 ? _b : {};\r\n return {\r\n id: this.id,\r\n component: this.component,\r\n params: Object.keys(params).length > 0 ? params : undefined,\r\n };\r\n }\r\n dispose() {\r\n var _a;\r\n this.api.dispose();\r\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=basePanelView.js.map","import { PaneviewPanelApiImpl } from '../api/paneviewPanelApi';\r\nimport { addClasses, removeClasses } from '../dom';\r\nimport { addDisposableListener, Emitter } from '../events';\r\nimport { BasePanelView, } from '../gridview/basePanelView';\r\nimport { Orientation } from '../splitview/splitview';\r\nexport class PaneviewPanel extends BasePanelView {\r\n set orientation(value) {\r\n this._orientation = value;\r\n }\r\n get orientation() {\r\n return this._orientation;\r\n }\r\n get minimumSize() {\r\n const headerSize = this.headerSize;\r\n const expanded = this.isExpanded();\r\n const minimumBodySize = expanded ? this._minimumBodySize : 0;\r\n return headerSize + minimumBodySize;\r\n }\r\n get maximumSize() {\r\n const headerSize = this.headerSize;\r\n const expanded = this.isExpanded();\r\n const maximumBodySize = expanded ? this._maximumBodySize : 0;\r\n return headerSize + maximumBodySize;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n get orthogonalSize() {\r\n return this._orthogonalSize;\r\n }\r\n set orthogonalSize(size) {\r\n this._orthogonalSize = size;\r\n }\r\n get minimumBodySize() {\r\n return this._minimumBodySize;\r\n }\r\n set minimumBodySize(value) {\r\n this._minimumBodySize = typeof value === 'number' ? value : 0;\r\n }\r\n get maximumBodySize() {\r\n return this._maximumBodySize;\r\n }\r\n set maximumBodySize(value) {\r\n this._maximumBodySize =\r\n typeof value === 'number' ? value : Number.POSITIVE_INFINITY;\r\n }\r\n get headerVisible() {\r\n return this._headerVisible;\r\n }\r\n set headerVisible(value) {\r\n this._headerVisible = value;\r\n this.header.style.display = value ? '' : 'none';\r\n }\r\n constructor(id, component, headerComponent, orientation, isExpanded, isHeaderVisible) {\r\n super(id, component, new PaneviewPanelApiImpl(id));\r\n this.headerComponent = headerComponent;\r\n this._onDidChangeExpansionState = new Emitter({ replay: true });\r\n this.onDidChangeExpansionState = this._onDidChangeExpansionState.event;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this.headerSize = 22;\r\n this._orthogonalSize = 0;\r\n this._size = 0;\r\n this._minimumBodySize = 100;\r\n this._maximumBodySize = Number.POSITIVE_INFINITY;\r\n this._isExpanded = false;\r\n this.expandedSize = 0;\r\n this.api.pane = this; // TODO cannot use 'this' before 'super'\r\n this.api.initialize(this);\r\n this._isExpanded = isExpanded;\r\n this._headerVisible = isHeaderVisible;\r\n this._onDidChangeExpansionState.fire(this.isExpanded()); // initialize value\r\n this._orientation = orientation;\r\n this.element.classList.add('pane');\r\n this.addDisposables(this.api.onDidSizeChange((event) => {\r\n this._onDidChange.fire({ size: event.size });\r\n }), addDisposableListener(this.element, 'mouseenter', (ev) => {\r\n this.api._onMouseEnter.fire(ev);\r\n }), addDisposableListener(this.element, 'mouseleave', (ev) => {\r\n this.api._onMouseLeave.fire(ev);\r\n }));\r\n this.addDisposables(this._onDidChangeExpansionState, this.onDidChangeExpansionState((isPanelExpanded) => {\r\n this.api._onDidExpansionChange.fire({\r\n isExpanded: isPanelExpanded,\r\n });\r\n }), this.api.onDidFocusChange((e) => {\r\n if (!this.header) {\r\n return;\r\n }\r\n if (e.isFocused) {\r\n addClasses(this.header, 'focused');\r\n }\r\n else {\r\n removeClasses(this.header, 'focused');\r\n }\r\n }));\r\n this.renderOnce();\r\n }\r\n setVisible(isVisible) {\r\n this.api._onDidVisibilityChange.fire({ isVisible });\r\n }\r\n setActive(isActive) {\r\n this.api._onDidActiveChange.fire({ isActive });\r\n }\r\n isExpanded() {\r\n return this._isExpanded;\r\n }\r\n setExpanded(expanded) {\r\n if (this._isExpanded === expanded) {\r\n return;\r\n }\r\n this._isExpanded = expanded;\r\n if (expanded) {\r\n if (this.animationTimer) {\r\n clearTimeout(this.animationTimer);\r\n }\r\n if (this.body) {\r\n this.element.appendChild(this.body);\r\n }\r\n }\r\n else {\r\n this.animationTimer = setTimeout(() => {\r\n var _a;\r\n (_a = this.body) === null || _a === void 0 ? void 0 : _a.remove();\r\n }, 200);\r\n }\r\n this._onDidChange.fire(expanded ? { size: this.width } : {});\r\n this._onDidChangeExpansionState.fire(expanded);\r\n }\r\n layout(size, orthogonalSize) {\r\n this._size = size;\r\n this._orthogonalSize = orthogonalSize;\r\n const [width, height] = this.orientation === Orientation.HORIZONTAL\r\n ? [size, orthogonalSize]\r\n : [orthogonalSize, size];\r\n if (this.isExpanded()) {\r\n this.expandedSize = width;\r\n }\r\n super.layout(width, height);\r\n }\r\n init(parameters) {\r\n var _a, _b;\r\n super.init(parameters);\r\n if (typeof parameters.minimumBodySize === 'number') {\r\n this.minimumBodySize = parameters.minimumBodySize;\r\n }\r\n if (typeof parameters.maximumBodySize === 'number') {\r\n this.maximumBodySize = parameters.maximumBodySize;\r\n }\r\n this.bodyPart = this.getBodyComponent();\r\n this.headerPart = this.getHeaderComponent();\r\n this.bodyPart.init(Object.assign(Object.assign({}, parameters), { api: this.api }));\r\n this.headerPart.init(Object.assign(Object.assign({}, parameters), { api: this.api }));\r\n (_a = this.body) === null || _a === void 0 ? void 0 : _a.append(this.bodyPart.element);\r\n (_b = this.header) === null || _b === void 0 ? void 0 : _b.append(this.headerPart.element);\r\n if (typeof parameters.isExpanded === 'boolean') {\r\n this.setExpanded(parameters.isExpanded);\r\n }\r\n }\r\n toJSON() {\r\n const params = this._params;\r\n return Object.assign(Object.assign({}, super.toJSON()), { headerComponent: this.headerComponent, title: params.title });\r\n }\r\n renderOnce() {\r\n this.header = document.createElement('div');\r\n this.header.tabIndex = 0;\r\n this.header.className = 'pane-header';\r\n this.header.style.height = `${this.headerSize}px`;\r\n this.header.style.lineHeight = `${this.headerSize}px`;\r\n this.header.style.minHeight = `${this.headerSize}px`;\r\n this.header.style.maxHeight = `${this.headerSize}px`;\r\n this.element.appendChild(this.header);\r\n this.body = document.createElement('div');\r\n this.body.className = 'pane-body';\r\n this.element.appendChild(this.body);\r\n }\r\n // TODO slightly hacky by-pass of the component to create a body and header component\r\n getComponent() {\r\n return {\r\n update: (params) => {\r\n var _a, _b;\r\n (_a = this.bodyPart) === null || _a === void 0 ? void 0 : _a.update({ params });\r\n (_b = this.headerPart) === null || _b === void 0 ? void 0 : _b.update({ params });\r\n },\r\n dispose: () => {\r\n var _a, _b;\r\n (_a = this.bodyPart) === null || _a === void 0 ? void 0 : _a.dispose();\r\n (_b = this.headerPart) === null || _b === void 0 ? void 0 : _b.dispose();\r\n },\r\n };\r\n }\r\n}\r\n//# sourceMappingURL=paneviewPanel.js.map","import { PaneviewApi } from '../api/component.api';\r\nimport { DragHandler } from '../dnd/abstractDragHandler';\r\nimport { getPaneData, LocalSelectionTransfer, PaneTransfer, } from '../dnd/dataTransfer';\r\nimport { Droptarget } from '../dnd/droptarget';\r\nimport { Emitter } from '../events';\r\nimport { PaneviewPanel, } from './paneviewPanel';\r\nexport class DraggablePaneviewPanel extends PaneviewPanel {\r\n constructor(accessor, id, component, headerComponent, orientation, isExpanded, disableDnd) {\r\n super(id, component, headerComponent, orientation, isExpanded, true);\r\n this.accessor = accessor;\r\n this._onDidDrop = new Emitter();\r\n this.onDidDrop = this._onDidDrop.event;\r\n if (!disableDnd) {\r\n this.initDragFeatures();\r\n }\r\n }\r\n initDragFeatures() {\r\n if (!this.header) {\r\n return;\r\n }\r\n const id = this.id;\r\n const accessorId = this.accessor.id;\r\n this.header.draggable = true;\r\n this.handler = new (class PaneDragHandler extends DragHandler {\r\n getData() {\r\n LocalSelectionTransfer.getInstance().setData([new PaneTransfer(accessorId, id)], PaneTransfer.prototype);\r\n return {\r\n dispose: () => {\r\n LocalSelectionTransfer.getInstance().clearData(PaneTransfer.prototype);\r\n },\r\n };\r\n }\r\n })(this.header);\r\n this.target = new Droptarget(this.element, {\r\n acceptedTargetZones: ['top', 'bottom'],\r\n overlayModel: {\r\n activationSize: { type: 'percentage', value: 50 },\r\n },\r\n canDisplayOverlay: (event) => {\r\n const data = getPaneData();\r\n if (data) {\r\n if (data.paneId !== this.id &&\r\n data.viewId === this.accessor.id) {\r\n return true;\r\n }\r\n }\r\n if (this.accessor.options.showDndOverlay) {\r\n return this.accessor.options.showDndOverlay({\r\n nativeEvent: event,\r\n getData: getPaneData,\r\n panel: this,\r\n });\r\n }\r\n return false;\r\n },\r\n });\r\n this.addDisposables(this._onDidDrop, this.handler, this.target, this.target.onDrop((event) => {\r\n this.onDrop(event);\r\n }));\r\n }\r\n onDrop(event) {\r\n const data = getPaneData();\r\n if (!data || data.viewId !== this.accessor.id) {\r\n // if there is no local drag event for this panel\r\n // or if the drag event was creating by another Paneview instance\r\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, api: new PaneviewApi(this.accessor), getData: getPaneData }));\r\n return;\r\n }\r\n const containerApi = this._params\r\n .containerApi;\r\n const panelId = data.paneId;\r\n const existingPanel = containerApi.getPanel(panelId);\r\n if (!existingPanel) {\r\n // if the panel doesn't exist\r\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: getPaneData, api: new PaneviewApi(this.accessor) }));\r\n return;\r\n }\r\n const allPanels = containerApi.panels;\r\n const fromIndex = allPanels.indexOf(existingPanel);\r\n let toIndex = containerApi.panels.indexOf(this);\r\n if (event.position === 'left' || event.position === 'top') {\r\n toIndex = Math.max(0, toIndex - 1);\r\n }\r\n if (event.position === 'right' || event.position === 'bottom') {\r\n if (fromIndex > toIndex) {\r\n toIndex++;\r\n }\r\n toIndex = Math.min(allPanels.length - 1, toIndex);\r\n }\r\n containerApi.movePanel(fromIndex, toIndex);\r\n }\r\n}\r\n//# sourceMappingURL=draggablePaneviewPanel.js.map","import { Emitter } from '../events';\r\nimport { PanelApiImpl } from './panelApi';\r\nexport class GridviewPanelApiImpl extends PanelApiImpl {\r\n constructor(id, panel) {\r\n super(id);\r\n this._onDidConstraintsChangeInternal = new Emitter();\r\n this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;\r\n this._onDidConstraintsChange = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidConstraintsChange = this._onDidConstraintsChange.event;\r\n this._onDidSizeChange = new Emitter();\r\n this.onDidSizeChange = this._onDidSizeChange.event;\r\n this.addDisposables(this._onDidConstraintsChangeInternal, this._onDidConstraintsChange, this._onDidSizeChange);\r\n if (panel) {\r\n this.initialize(panel);\r\n }\r\n }\r\n setConstraints(value) {\r\n this._onDidConstraintsChangeInternal.fire(value);\r\n }\r\n setSize(event) {\r\n this._onDidSizeChange.fire(event);\r\n }\r\n}\r\n//# sourceMappingURL=gridviewPanelApi.js.map","import { BasePanelView, } from './basePanelView';\r\nimport { GridviewPanelApiImpl, } from '../api/gridviewPanelApi';\r\nimport { Emitter } from '../events';\r\nexport class GridviewPanel extends BasePanelView {\r\n get priority() {\r\n return this._priority;\r\n }\r\n get snap() {\r\n return this._snap;\r\n }\r\n get minimumWidth() {\r\n const width = typeof this._minimumWidth === 'function'\r\n ? this._minimumWidth()\r\n : this._minimumWidth;\r\n if (width !== this._evaluatedMinimumWidth) {\r\n this._evaluatedMinimumWidth = width;\r\n this.updateConstraints();\r\n }\r\n return width;\r\n }\r\n get minimumHeight() {\r\n const height = typeof this._minimumHeight === 'function'\r\n ? this._minimumHeight()\r\n : this._minimumHeight;\r\n if (height !== this._evaluatedMinimumHeight) {\r\n this._evaluatedMinimumHeight = height;\r\n this.updateConstraints();\r\n }\r\n return height;\r\n }\r\n get maximumHeight() {\r\n const height = typeof this._maximumHeight === 'function'\r\n ? this._maximumHeight()\r\n : this._maximumHeight;\r\n if (height !== this._evaluatedMaximumHeight) {\r\n this._evaluatedMaximumHeight = height;\r\n this.updateConstraints();\r\n }\r\n return height;\r\n }\r\n get maximumWidth() {\r\n const width = typeof this._maximumWidth === 'function'\r\n ? this._maximumWidth()\r\n : this._maximumWidth;\r\n if (width !== this._evaluatedMaximumWidth) {\r\n this._evaluatedMaximumWidth = width;\r\n this.updateConstraints();\r\n }\r\n return width;\r\n }\r\n get isActive() {\r\n return this.api.isActive;\r\n }\r\n constructor(id, component, options, api) {\r\n super(id, component, api !== null && api !== void 0 ? api : new GridviewPanelApiImpl(id));\r\n this._evaluatedMinimumWidth = 0;\r\n this._evaluatedMaximumWidth = Number.MAX_SAFE_INTEGER;\r\n this._evaluatedMinimumHeight = 0;\r\n this._evaluatedMaximumHeight = Number.MAX_SAFE_INTEGER;\r\n this._minimumWidth = 0;\r\n this._minimumHeight = 0;\r\n this._maximumWidth = Number.MAX_SAFE_INTEGER;\r\n this._maximumHeight = Number.MAX_SAFE_INTEGER;\r\n this._snap = false;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n if (typeof (options === null || options === void 0 ? void 0 : options.minimumWidth) === 'number') {\r\n this._minimumWidth = options.minimumWidth;\r\n }\r\n if (typeof (options === null || options === void 0 ? void 0 : options.maximumWidth) === 'number') {\r\n this._maximumWidth = options.maximumWidth;\r\n }\r\n if (typeof (options === null || options === void 0 ? void 0 : options.minimumHeight) === 'number') {\r\n this._minimumHeight = options.minimumHeight;\r\n }\r\n if (typeof (options === null || options === void 0 ? void 0 : options.maximumHeight) === 'number') {\r\n this._maximumHeight = options.maximumHeight;\r\n }\r\n this.api.initialize(this); // TODO: required to by-pass 'super before this' requirement\r\n this.addDisposables(this.api.onVisibilityChange((event) => {\r\n const { isVisible } = event;\r\n const { accessor } = this._params;\r\n accessor.setVisible(this, isVisible);\r\n }), this.api.onActiveChange(() => {\r\n const { accessor } = this._params;\r\n accessor.setActive(this);\r\n }), this.api.onDidConstraintsChangeInternal((event) => {\r\n if (typeof event.minimumWidth === 'number' ||\r\n typeof event.minimumWidth === 'function') {\r\n this._minimumWidth = event.minimumWidth;\r\n }\r\n if (typeof event.minimumHeight === 'number' ||\r\n typeof event.minimumHeight === 'function') {\r\n this._minimumHeight = event.minimumHeight;\r\n }\r\n if (typeof event.maximumWidth === 'number' ||\r\n typeof event.maximumWidth === 'function') {\r\n this._maximumWidth = event.maximumWidth;\r\n }\r\n if (typeof event.maximumHeight === 'number' ||\r\n typeof event.maximumHeight === 'function') {\r\n this._maximumHeight = event.maximumHeight;\r\n }\r\n }), this.api.onDidSizeChange((event) => {\r\n this._onDidChange.fire({\r\n height: event.height,\r\n width: event.width,\r\n });\r\n }), this._onDidChange);\r\n }\r\n setVisible(isVisible) {\r\n this.api._onDidVisibilityChange.fire({ isVisible });\r\n }\r\n setActive(isActive) {\r\n this.api._onDidActiveChange.fire({ isActive });\r\n }\r\n init(parameters) {\r\n if (parameters.maximumHeight) {\r\n this._maximumHeight = parameters.maximumHeight;\r\n }\r\n if (parameters.minimumHeight) {\r\n this._minimumHeight = parameters.minimumHeight;\r\n }\r\n if (parameters.maximumWidth) {\r\n this._maximumWidth = parameters.maximumWidth;\r\n }\r\n if (parameters.minimumWidth) {\r\n this._minimumWidth = parameters.minimumWidth;\r\n }\r\n this._priority = parameters.priority;\r\n this._snap = !!parameters.snap;\r\n super.init(parameters);\r\n if (typeof parameters.isVisible === 'boolean') {\r\n this.setVisible(parameters.isVisible);\r\n }\r\n }\r\n updateConstraints() {\r\n this.api._onDidConstraintsChange.fire({\r\n minimumWidth: this._evaluatedMinimumWidth,\r\n maximumWidth: this._evaluatedMaximumWidth,\r\n minimumHeight: this._evaluatedMinimumHeight,\r\n maximumHeight: this._evaluatedMaximumHeight,\r\n });\r\n }\r\n toJSON() {\r\n const state = super.toJSON();\r\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ? undefined : value;\r\n const minimum = (value) => (value <= 0 ? undefined : value);\r\n return Object.assign(Object.assign({}, state), { minimumHeight: minimum(this.minimumHeight), maximumHeight: maximum(this.maximumHeight), minimumWidth: minimum(this.minimumWidth), maximumWidth: maximum(this.maximumWidth), snap: this.snap, priority: this.priority });\r\n }\r\n}\r\n//# sourceMappingURL=gridviewPanel.js.map","import { Emitter } from '../events';\r\nimport { GridviewPanelApiImpl } from './gridviewPanelApi';\r\nexport class DockviewGroupPanelApiImpl extends GridviewPanelApiImpl {\r\n get isFloating() {\r\n if (!this._group) {\r\n throw new Error(`DockviewGroupPanelApiImpl not initialized`);\r\n }\r\n return this._group.model.isFloating;\r\n }\r\n constructor(id, accessor) {\r\n super(id);\r\n this.accessor = accessor;\r\n this._onDidFloatingStateChange = new Emitter();\r\n this.onDidFloatingStateChange = this._onDidFloatingStateChange.event;\r\n this.addDisposables(this._onDidFloatingStateChange);\r\n }\r\n moveTo(options) {\r\n var _a;\r\n if (!this._group) {\r\n throw new Error(`DockviewGroupPanelApiImpl not initialized`);\r\n }\r\n this.accessor.moveGroupOrPanel(options.group, this._group.id, undefined, (_a = options.position) !== null && _a !== void 0 ? _a : 'center');\r\n }\r\n initialize(group) {\r\n this._group = group;\r\n }\r\n}\r\n//# sourceMappingURL=dockviewGroupPanelApi.js.map","import { DockviewGroupPanelModel, } from './dockviewGroupPanelModel';\r\nimport { GridviewPanel } from '../gridview/gridviewPanel';\r\nimport { DockviewGroupPanelApiImpl, } from '../api/dockviewGroupPanelApi';\r\nexport class DockviewGroupPanel extends GridviewPanel {\r\n get panels() {\r\n return this._model.panels;\r\n }\r\n get activePanel() {\r\n return this._model.activePanel;\r\n }\r\n get size() {\r\n return this._model.size;\r\n }\r\n get model() {\r\n return this._model;\r\n }\r\n get locked() {\r\n return this._model.locked;\r\n }\r\n set locked(value) {\r\n this._model.locked = value;\r\n }\r\n get header() {\r\n return this._model.header;\r\n }\r\n constructor(accessor, id, options) {\r\n super(id, 'groupview_default', {\r\n minimumHeight: 100,\r\n minimumWidth: 100,\r\n }, new DockviewGroupPanelApiImpl(id, accessor));\r\n this.api.initialize(this); // cannot use 'this' after after 'super' call\r\n this._model = new DockviewGroupPanelModel(this.element, accessor, id, options, this);\r\n }\r\n initialize() {\r\n this._model.initialize();\r\n }\r\n setActive(isActive) {\r\n super.setActive(isActive);\r\n this.model.setActive(isActive);\r\n }\r\n layout(width, height) {\r\n super.layout(width, height);\r\n this.model.layout(width, height);\r\n }\r\n getComponent() {\r\n return this._model;\r\n }\r\n toJSON() {\r\n return this.model.toJSON();\r\n }\r\n}\r\n//# sourceMappingURL=dockviewGroupPanel.js.map","export function isPanelOptionsWithPanel(data) {\r\n if (data.referencePanel) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexport function isPanelOptionsWithGroup(data) {\r\n if (data.referenceGroup) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexport function isGroupOptionsWithPanel(data) {\r\n if (data.referencePanel) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexport function isGroupOptionsWithGroup(data) {\r\n if (data.referenceGroup) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n//# sourceMappingURL=options.js.map","import { Emitter } from '../events';\r\nimport { GridviewPanelApiImpl } from './gridviewPanelApi';\r\nimport { MutableDisposable } from '../lifecycle';\r\nexport class DockviewPanelApiImpl extends GridviewPanelApiImpl {\r\n get title() {\r\n return this.panel.title;\r\n }\r\n get isGroupActive() {\r\n var _a;\r\n return !!((_a = this.group) === null || _a === void 0 ? void 0 : _a.isActive);\r\n }\r\n set group(value) {\r\n const isOldGroupActive = this.isGroupActive;\r\n this._group = value;\r\n this._onDidGroupChange.fire();\r\n if (this._group) {\r\n this.disposable.value = this._group.api.onDidActiveChange(() => {\r\n this._onDidActiveGroupChange.fire();\r\n });\r\n if (this.isGroupActive !== isOldGroupActive) {\r\n this._onDidActiveGroupChange.fire();\r\n }\r\n }\r\n }\r\n get group() {\r\n return this._group;\r\n }\r\n constructor(panel, group, accessor) {\r\n super(panel.id);\r\n this.panel = panel;\r\n this.accessor = accessor;\r\n this._onDidTitleChange = new Emitter();\r\n this.onDidTitleChange = this._onDidTitleChange.event;\r\n this._onDidActiveGroupChange = new Emitter();\r\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\r\n this._onDidGroupChange = new Emitter();\r\n this.onDidGroupChange = this._onDidGroupChange.event;\r\n this.disposable = new MutableDisposable();\r\n this.initialize(panel);\r\n this._group = group;\r\n this.addDisposables(this.disposable, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange);\r\n }\r\n moveTo(options) {\r\n var _a;\r\n this.accessor.moveGroupOrPanel(options.group, this._group.id, this.panel.id, (_a = options.position) !== null && _a !== void 0 ? _a : 'center', options.index);\r\n }\r\n setTitle(title) {\r\n this.panel.setTitle(title);\r\n }\r\n close() {\r\n this.group.model.closePanel(this.panel);\r\n }\r\n}\r\n//# sourceMappingURL=dockviewPanelApi.js.map","import { DockviewPanelApiImpl, } from '../api/dockviewPanelApi';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nexport class DockviewPanel extends CompositeDisposable {\r\n get params() {\r\n return this._params;\r\n }\r\n get title() {\r\n return this._title;\r\n }\r\n get group() {\r\n return this._group;\r\n }\r\n constructor(id, accessor, containerApi, group, view) {\r\n super();\r\n this.id = id;\r\n this.containerApi = containerApi;\r\n this.view = view;\r\n this._group = group;\r\n this.api = new DockviewPanelApiImpl(this, this._group, accessor);\r\n this.addDisposables(this.api.onActiveChange(() => {\r\n accessor.setActivePanel(this);\r\n }), this.api.onDidSizeChange((event) => {\r\n // forward the resize event to the group since if you want to resize a panel\r\n // you are actually just resizing the panels parent which is the group\r\n this.group.api.setSize(event);\r\n }));\r\n }\r\n init(params) {\r\n this._params = params.params;\r\n this.view.init(Object.assign(Object.assign({}, params), { api: this.api, containerApi: this.containerApi }));\r\n this.setTitle(params.title);\r\n }\r\n focus() {\r\n this.api._onFocusEvent.fire();\r\n }\r\n toJSON() {\r\n return {\r\n id: this.id,\r\n contentComponent: this.view.contentComponent,\r\n tabComponent: this.view.tabComponent,\r\n params: Object.keys(this._params || {}).length > 0\r\n ? this._params\r\n : undefined,\r\n title: this.title,\r\n };\r\n }\r\n setTitle(title) {\r\n const didTitleChange = title !== this.title;\r\n if (didTitleChange) {\r\n this._title = title;\r\n this.view.update({\r\n params: {\r\n params: this._params,\r\n title: this.title,\r\n },\r\n });\r\n this.api._onDidTitleChange.fire({ title });\r\n }\r\n }\r\n update(event) {\r\n // merge the new parameters with the existing parameters\r\n this._params = Object.assign(Object.assign({}, (this._params || {})), event.params);\r\n /**\r\n * delete new keys that have a value of undefined,\r\n * allow values of null\r\n */\r\n for (const key of Object.keys(event.params)) {\r\n if (event.params[key] === undefined) {\r\n delete this._params[key];\r\n }\r\n }\r\n // update the view with the updated props\r\n this.view.update({\r\n params: {\r\n params: this._params,\r\n title: this.title,\r\n },\r\n });\r\n }\r\n updateParentGroup(group, isGroupActive) {\r\n this._group = group;\r\n this.api.group = group;\r\n const isPanelVisible = this._group.model.isPanelActive(this);\r\n this.api._onDidActiveChange.fire({\r\n isActive: isGroupActive && isPanelVisible,\r\n });\r\n this.api._onDidVisibilityChange.fire({\r\n isVisible: isPanelVisible,\r\n });\r\n this.view.updateParentGroup(this._group, this._group.model.isPanelActive(this));\r\n }\r\n layout(width, height) {\r\n // the obtain the correct dimensions of the content panel we must deduct the tab height\r\n this.api._onDidDimensionChange.fire({\r\n width,\r\n height: height,\r\n });\r\n this.view.layout(width, height);\r\n }\r\n dispose() {\r\n this.api.dispose();\r\n this.view.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=dockviewPanel.js.map","const createSvgElementFromPath = (params) => {\r\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\r\n svg.setAttributeNS(null, 'height', params.height);\r\n svg.setAttributeNS(null, 'width', params.width);\r\n svg.setAttributeNS(null, 'viewBox', params.viewbox);\r\n svg.setAttributeNS(null, 'aria-hidden', 'false');\r\n svg.setAttributeNS(null, 'focusable', 'false');\r\n svg.classList.add('dockview-svg');\r\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\r\n path.setAttributeNS(null, 'd', params.path);\r\n svg.appendChild(path);\r\n return svg;\r\n};\r\nexport const createCloseButton = () => createSvgElementFromPath({\r\n width: '11',\r\n height: '11',\r\n viewbox: '0 0 28 28',\r\n path: 'M2.1 27.3L0 25.2L11.55 13.65L0 2.1L2.1 0L13.65 11.55L25.2 0L27.3 2.1L15.75 13.65L27.3 25.2L25.2 27.3L13.65 15.75L2.1 27.3Z',\r\n});\r\nexport const createExpandMoreButton = () => createSvgElementFromPath({\r\n width: '11',\r\n height: '11',\r\n viewbox: '0 0 24 15',\r\n path: 'M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z',\r\n});\r\nexport const createChevronRightButton = () => createSvgElementFromPath({\r\n width: '11',\r\n height: '11',\r\n viewbox: '0 0 15 25',\r\n path: 'M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z',\r\n});\r\n//# sourceMappingURL=svg.js.map","import { CompositeDisposable } from '../../../lifecycle';\r\nimport { addDisposableListener } from '../../../events';\r\nimport { createCloseButton } from '../../../svg';\r\nexport class DefaultTab extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor() {\r\n super();\r\n //\r\n this.params = {};\r\n this._element = document.createElement('div');\r\n this._element.className = 'default-tab';\r\n //\r\n this._content = document.createElement('div');\r\n this._content.className = 'tab-content';\r\n //\r\n this._actionContainer = document.createElement('div');\r\n this._actionContainer.className = 'action-container';\r\n //\r\n this._list = document.createElement('ul');\r\n this._list.className = 'tab-list';\r\n //\r\n this.action = document.createElement('div');\r\n this.action.className = 'tab-action';\r\n this.action.appendChild(createCloseButton());\r\n //\r\n this._element.appendChild(this._content);\r\n this._element.appendChild(this._actionContainer);\r\n this._actionContainer.appendChild(this._list);\r\n this._list.appendChild(this.action);\r\n //\r\n this.addDisposables(addDisposableListener(this._actionContainer, 'mousedown', (ev) => {\r\n ev.preventDefault();\r\n }));\r\n this.render();\r\n }\r\n update(event) {\r\n this.params = Object.assign(Object.assign({}, this.params), event.params);\r\n this.render();\r\n }\r\n focus() {\r\n //noop\r\n }\r\n init(params) {\r\n this.params = params;\r\n this._content.textContent = params.title;\r\n addDisposableListener(this.action, 'click', (ev) => {\r\n ev.preventDefault(); //\r\n this.params.api.close();\r\n });\r\n }\r\n onGroupChange(_group) {\r\n this.render();\r\n }\r\n onPanelVisibleChange(_isPanelVisible) {\r\n this.render();\r\n }\r\n layout(_width, _height) {\r\n // noop\r\n }\r\n render() {\r\n if (this._content.textContent !== this.params.title) {\r\n this._content.textContent = this.params.title;\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=defaultTab.js.map","import { DefaultTab } from './components/tab/defaultTab';\r\nimport { createComponent } from '../panel/componentFactory';\r\nexport class DockviewPanelModel {\r\n get content() {\r\n return this._content;\r\n }\r\n get tab() {\r\n return this._tab;\r\n }\r\n constructor(accessor, id, contentComponent, tabComponent) {\r\n this.accessor = accessor;\r\n this.id = id;\r\n this.contentComponent = contentComponent;\r\n this.tabComponent = tabComponent;\r\n this._group = null;\r\n this._isPanelVisible = null;\r\n this._content = this.createContentComponent(this.id, contentComponent);\r\n this._tab = this.createTabComponent(this.id, tabComponent);\r\n }\r\n init(params) {\r\n this.content.init(Object.assign(Object.assign({}, params), { tab: this.tab }));\r\n this.tab.init(params);\r\n }\r\n updateParentGroup(group, isPanelVisible) {\r\n if (group !== this._group) {\r\n this._group = group;\r\n if (this._content.onGroupChange) {\r\n this._content.onGroupChange(group);\r\n }\r\n if (this._tab.onGroupChange) {\r\n this._tab.onGroupChange(group);\r\n }\r\n }\r\n if (isPanelVisible !== this._isPanelVisible) {\r\n this._isPanelVisible = isPanelVisible;\r\n if (this._content.onPanelVisibleChange) {\r\n this._content.onPanelVisibleChange(isPanelVisible);\r\n }\r\n if (this._tab.onPanelVisibleChange) {\r\n this._tab.onPanelVisibleChange(isPanelVisible);\r\n }\r\n }\r\n }\r\n layout(width, height) {\r\n var _a, _b;\r\n (_b = (_a = this.content).layout) === null || _b === void 0 ? void 0 : _b.call(_a, width, height);\r\n }\r\n update(event) {\r\n var _a, _b, _c, _d;\r\n (_b = (_a = this.content).update) === null || _b === void 0 ? void 0 : _b.call(_a, event);\r\n (_d = (_c = this.tab).update) === null || _d === void 0 ? void 0 : _d.call(_c, event);\r\n }\r\n dispose() {\r\n var _a, _b, _c, _d;\r\n (_b = (_a = this.content).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n (_d = (_c = this.tab).dispose) === null || _d === void 0 ? void 0 : _d.call(_c);\r\n }\r\n createContentComponent(id, componentName) {\r\n var _a;\r\n return createComponent(id, componentName, this.accessor.options.components || {}, this.accessor.options.frameworkComponents, (_a = this.accessor.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.content);\r\n }\r\n createTabComponent(id, componentName) {\r\n var _a, _b;\r\n if (componentName) {\r\n return createComponent(id, componentName, this.accessor.options.tabComponents, this.accessor.options.frameworkTabComponents, (_a = this.accessor.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.tab, () => new DefaultTab());\r\n }\r\n else if (this.accessor.options.defaultTabComponent) {\r\n return createComponent(id, this.accessor.options.defaultTabComponent, this.accessor.options.tabComponents, this.accessor.options.frameworkTabComponents, (_b = this.accessor.options.frameworkComponentFactory) === null || _b === void 0 ? void 0 : _b.tab, () => new DefaultTab());\r\n }\r\n else {\r\n return new DefaultTab();\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=dockviewPanelModel.js.map","import { DockviewPanel } from './dockviewPanel';\r\nimport { DockviewPanelModel } from './dockviewPanelModel';\r\nimport { DockviewApi } from '../api/component.api';\r\nexport class DefaultDockviewDeserialzier {\r\n constructor(layout) {\r\n this.layout = layout;\r\n }\r\n fromJSON(panelData, group) {\r\n var _a;\r\n const panelId = panelData.id;\r\n const params = panelData.params;\r\n const title = panelData.title;\r\n const viewData = panelData.view;\r\n const contentComponent = viewData\r\n ? viewData.content.id\r\n : panelData.contentComponent || 'unknown';\r\n const tabComponent = viewData\r\n ? (_a = viewData.tab) === null || _a === void 0 ? void 0 : _a.id\r\n : panelData.tabComponent;\r\n const view = new DockviewPanelModel(this.layout, panelId, contentComponent, tabComponent);\r\n const panel = new DockviewPanel(panelId, this.layout, new DockviewApi(this.layout), group, view);\r\n panel.init({\r\n title: title || panelId,\r\n params: params || {},\r\n });\r\n return panel;\r\n }\r\n}\r\n//# sourceMappingURL=deserializer.js.map","import { addDisposableListener } from '../../../events';\r\nimport { toggleClass } from '../../../dom';\r\nimport { CompositeDisposable } from '../../../lifecycle';\r\nimport { createCloseButton } from '../../../svg';\r\nexport class Watermark extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor() {\r\n super();\r\n this._element = document.createElement('div');\r\n this._element.className = 'watermark';\r\n const title = document.createElement('div');\r\n title.className = 'watermark-title';\r\n const emptySpace = document.createElement('span');\r\n emptySpace.style.flexGrow = '1';\r\n const content = document.createElement('div');\r\n content.className = 'watermark-content';\r\n this._element.appendChild(title);\r\n this._element.appendChild(content);\r\n const actionsContainer = document.createElement('div');\r\n actionsContainer.className = 'actions-container';\r\n const closeAnchor = document.createElement('div');\r\n closeAnchor.className = 'close-action';\r\n closeAnchor.appendChild(createCloseButton());\r\n actionsContainer.appendChild(closeAnchor);\r\n title.appendChild(emptySpace);\r\n title.appendChild(actionsContainer);\r\n this.addDisposables(addDisposableListener(closeAnchor, 'click', (ev) => {\r\n var _a;\r\n ev.preventDefault();\r\n if (this._group) {\r\n (_a = this._api) === null || _a === void 0 ? void 0 : _a.removeGroup(this._group);\r\n }\r\n }));\r\n }\r\n update(_event) {\r\n // noop\r\n }\r\n focus() {\r\n // noop\r\n }\r\n layout(_width, _height) {\r\n // noop\r\n }\r\n init(_params) {\r\n this._api = _params.containerApi;\r\n this.render();\r\n }\r\n updateParentGroup(group, _visible) {\r\n this._group = group;\r\n this.render();\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n render() {\r\n const isOneGroup = !!(this._api && this._api.size <= 1);\r\n toggleClass(this.element, 'has-actions', isOneGroup);\r\n }\r\n}\r\n//# sourceMappingURL=watermark.js.map","import { getElementsByTagName, quasiDefaultPrevented, toggleClass, } from '../dom';\r\nimport { Emitter, addDisposableListener, addDisposableWindowListener, } from '../events';\r\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\r\nimport { clamp } from '../math';\r\nconst bringElementToFront = (() => {\r\n let previous = null;\r\n function pushToTop(element) {\r\n if (previous !== element && previous !== null) {\r\n toggleClass(previous, 'dv-bring-to-front', false);\r\n }\r\n toggleClass(element, 'dv-bring-to-front', true);\r\n previous = element;\r\n }\r\n return pushToTop;\r\n})();\r\nexport class Overlay extends CompositeDisposable {\r\n set minimumInViewportWidth(value) {\r\n this.options.minimumInViewportWidth = value;\r\n }\r\n set minimumInViewportHeight(value) {\r\n this.options.minimumInViewportHeight = value;\r\n }\r\n constructor(options) {\r\n super();\r\n this.options = options;\r\n this._element = document.createElement('div');\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._onDidChangeEnd = new Emitter();\r\n this.onDidChangeEnd = this._onDidChangeEnd.event;\r\n this.addDisposables(this._onDidChange, this._onDidChangeEnd);\r\n this._element.className = 'dv-resize-container';\r\n this.setupResize('top');\r\n this.setupResize('bottom');\r\n this.setupResize('left');\r\n this.setupResize('right');\r\n this.setupResize('topleft');\r\n this.setupResize('topright');\r\n this.setupResize('bottomleft');\r\n this.setupResize('bottomright');\r\n this._element.appendChild(this.options.content);\r\n this.options.container.appendChild(this._element);\r\n // if input bad resize within acceptable boundaries\r\n this.setBounds({\r\n height: this.options.height,\r\n width: this.options.width,\r\n top: this.options.top,\r\n left: this.options.left,\r\n });\r\n }\r\n setBounds(bounds = {}) {\r\n if (typeof bounds.height === 'number') {\r\n this._element.style.height = `${bounds.height}px`;\r\n }\r\n if (typeof bounds.width === 'number') {\r\n this._element.style.width = `${bounds.width}px`;\r\n }\r\n if (typeof bounds.top === 'number') {\r\n this._element.style.top = `${bounds.top}px`;\r\n }\r\n if (typeof bounds.left === 'number') {\r\n this._element.style.left = `${bounds.left}px`;\r\n }\r\n const containerRect = this.options.container.getBoundingClientRect();\r\n const overlayRect = this._element.getBoundingClientRect();\r\n // region: ensure bounds within allowable limits\r\n // a minimum width of minimumViewportWidth must be inside the viewport\r\n const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));\r\n // a minimum height of minimumViewportHeight must be inside the viewport\r\n const yOffset = typeof this.options.minimumInViewportHeight === 'number'\r\n ? Math.max(0, this.getMinimumHeight(overlayRect.height))\r\n : 0;\r\n const left = clamp(overlayRect.left - containerRect.left, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\r\n const top = clamp(overlayRect.top - containerRect.top, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\r\n this._element.style.left = `${left}px`;\r\n this._element.style.top = `${top}px`;\r\n this._onDidChange.fire();\r\n }\r\n toJSON() {\r\n const container = this.options.container.getBoundingClientRect();\r\n const element = this._element.getBoundingClientRect();\r\n return {\r\n top: element.top - container.top,\r\n left: element.left - container.left,\r\n width: element.width,\r\n height: element.height,\r\n };\r\n }\r\n setupDrag(dragTarget, options = { inDragMode: false }) {\r\n const move = new MutableDisposable();\r\n const track = () => {\r\n let offset = null;\r\n const iframes = [\r\n ...getElementsByTagName('iframe'),\r\n ...getElementsByTagName('webview'),\r\n ];\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'none';\r\n }\r\n move.value = new CompositeDisposable({\r\n dispose: () => {\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'auto';\r\n }\r\n },\r\n }, addDisposableWindowListener(window, 'mousemove', (e) => {\r\n const containerRect = this.options.container.getBoundingClientRect();\r\n const x = e.clientX - containerRect.left;\r\n const y = e.clientY - containerRect.top;\r\n toggleClass(this._element, 'dv-resize-container-dragging', true);\r\n const overlayRect = this._element.getBoundingClientRect();\r\n if (offset === null) {\r\n offset = {\r\n x: e.clientX - overlayRect.left,\r\n y: e.clientY - overlayRect.top,\r\n };\r\n }\r\n const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));\r\n const yOffset = Math.max(0, this.options.minimumInViewportHeight\r\n ? this.getMinimumHeight(overlayRect.height)\r\n : 0);\r\n const left = clamp(x - offset.x, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\r\n const top = clamp(y - offset.y, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\r\n this.setBounds({ top, left });\r\n }), addDisposableWindowListener(window, 'mouseup', () => {\r\n toggleClass(this._element, 'dv-resize-container-dragging', false);\r\n move.dispose();\r\n this._onDidChangeEnd.fire();\r\n }));\r\n };\r\n this.addDisposables(move, addDisposableListener(dragTarget, 'mousedown', (event) => {\r\n if (event.defaultPrevented) {\r\n event.preventDefault();\r\n return;\r\n }\r\n // if somebody has marked this event then treat as a defaultPrevented\r\n // without actually calling event.preventDefault()\r\n if (quasiDefaultPrevented(event)) {\r\n return;\r\n }\r\n track();\r\n }), addDisposableListener(this.options.content, 'mousedown', (event) => {\r\n if (event.defaultPrevented) {\r\n return;\r\n }\r\n // if somebody has marked this event then treat as a defaultPrevented\r\n // without actually calling event.preventDefault()\r\n if (quasiDefaultPrevented(event)) {\r\n return;\r\n }\r\n if (event.shiftKey) {\r\n track();\r\n }\r\n }), addDisposableListener(this.options.content, 'mousedown', () => {\r\n bringElementToFront(this._element);\r\n }, true));\r\n bringElementToFront(this._element);\r\n if (options.inDragMode) {\r\n track();\r\n }\r\n }\r\n setupResize(direction) {\r\n const resizeHandleElement = document.createElement('div');\r\n resizeHandleElement.className = `dv-resize-handle-${direction}`;\r\n this._element.appendChild(resizeHandleElement);\r\n const move = new MutableDisposable();\r\n this.addDisposables(move, addDisposableListener(resizeHandleElement, 'mousedown', (e) => {\r\n e.preventDefault();\r\n let startPosition = null;\r\n const iframes = [\r\n ...getElementsByTagName('iframe'),\r\n ...getElementsByTagName('webview'),\r\n ];\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'none';\r\n }\r\n move.value = new CompositeDisposable(addDisposableWindowListener(window, 'mousemove', (e) => {\r\n const containerRect = this.options.container.getBoundingClientRect();\r\n const overlayRect = this._element.getBoundingClientRect();\r\n const y = e.clientY - containerRect.top;\r\n const x = e.clientX - containerRect.left;\r\n if (startPosition === null) {\r\n // record the initial dimensions since as all subsequence moves are relative to this\r\n startPosition = {\r\n originalY: y,\r\n originalHeight: overlayRect.height,\r\n originalX: x,\r\n originalWidth: overlayRect.width,\r\n };\r\n }\r\n let top = undefined;\r\n let height = undefined;\r\n let left = undefined;\r\n let width = undefined;\r\n const moveTop = () => {\r\n top = clamp(y, -Number.MAX_VALUE, startPosition.originalY +\r\n startPosition.originalHeight >\r\n containerRect.height\r\n ? this.getMinimumHeight(containerRect.height)\r\n : Math.max(0, startPosition.originalY +\r\n startPosition.originalHeight -\r\n Overlay.MINIMUM_HEIGHT));\r\n height =\r\n startPosition.originalY +\r\n startPosition.originalHeight -\r\n top;\r\n };\r\n const moveBottom = () => {\r\n top =\r\n startPosition.originalY -\r\n startPosition.originalHeight;\r\n height = clamp(y - top, top < 0 &&\r\n typeof this.options\r\n .minimumInViewportHeight === 'number'\r\n ? -top +\r\n this.options.minimumInViewportHeight\r\n : Overlay.MINIMUM_HEIGHT, Number.MAX_VALUE);\r\n };\r\n const moveLeft = () => {\r\n left = clamp(x, -Number.MAX_VALUE, startPosition.originalX +\r\n startPosition.originalWidth >\r\n containerRect.width\r\n ? this.getMinimumWidth(containerRect.width)\r\n : Math.max(0, startPosition.originalX +\r\n startPosition.originalWidth -\r\n Overlay.MINIMUM_WIDTH));\r\n width =\r\n startPosition.originalX +\r\n startPosition.originalWidth -\r\n left;\r\n };\r\n const moveRight = () => {\r\n left =\r\n startPosition.originalX -\r\n startPosition.originalWidth;\r\n width = clamp(x - left, left < 0 &&\r\n typeof this.options\r\n .minimumInViewportWidth === 'number'\r\n ? -left +\r\n this.options.minimumInViewportWidth\r\n : Overlay.MINIMUM_WIDTH, Number.MAX_VALUE);\r\n };\r\n switch (direction) {\r\n case 'top':\r\n moveTop();\r\n break;\r\n case 'bottom':\r\n moveBottom();\r\n break;\r\n case 'left':\r\n moveLeft();\r\n break;\r\n case 'right':\r\n moveRight();\r\n break;\r\n case 'topleft':\r\n moveTop();\r\n moveLeft();\r\n break;\r\n case 'topright':\r\n moveTop();\r\n moveRight();\r\n break;\r\n case 'bottomleft':\r\n moveBottom();\r\n moveLeft();\r\n break;\r\n case 'bottomright':\r\n moveBottom();\r\n moveRight();\r\n break;\r\n }\r\n this.setBounds({ height, width, top, left });\r\n }), {\r\n dispose: () => {\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'auto';\r\n }\r\n },\r\n }, addDisposableWindowListener(window, 'mouseup', () => {\r\n move.dispose();\r\n this._onDidChangeEnd.fire();\r\n }));\r\n }));\r\n }\r\n getMinimumWidth(width) {\r\n if (typeof this.options.minimumInViewportWidth === 'number') {\r\n return width - this.options.minimumInViewportWidth;\r\n }\r\n return 0;\r\n }\r\n getMinimumHeight(height) {\r\n if (typeof this.options.minimumInViewportHeight === 'number') {\r\n return height - this.options.minimumInViewportHeight;\r\n }\r\n return height;\r\n }\r\n dispose() {\r\n this._element.remove();\r\n super.dispose();\r\n }\r\n}\r\nOverlay.MINIMUM_HEIGHT = 20;\r\nOverlay.MINIMUM_WIDTH = 20;\r\n//# sourceMappingURL=overlay.js.map","import { CompositeDisposable } from '../lifecycle';\r\nexport class DockviewFloatingGroupPanel extends CompositeDisposable {\r\n constructor(group, overlay) {\r\n super();\r\n this.group = group;\r\n this.overlay = overlay;\r\n this.addDisposables(overlay);\r\n }\r\n position(bounds) {\r\n this.overlay.setBounds(bounds);\r\n }\r\n}\r\n//# sourceMappingURL=dockviewFloatingGroupPanel.js.map","import { getRelativeLocation, getGridLocation, } from '../gridview/gridview';\r\nimport { directionToPosition, Droptarget } from '../dnd/droptarget';\r\nimport { tail, sequenceEquals, remove } from '../array';\r\nimport { DockviewPanel } from './dockviewPanel';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nimport { Event, Emitter } from '../events';\r\nimport { Watermark } from './components/watermark/watermark';\r\nimport { DockviewDropTargets, } from './types';\r\nimport { sequentialNumberGenerator } from '../math';\r\nimport { DefaultDockviewDeserialzier } from './deserializer';\r\nimport { createComponent } from '../panel/componentFactory';\r\nimport { isGroupOptionsWithGroup, isGroupOptionsWithPanel, isPanelOptionsWithGroup, isPanelOptionsWithPanel, } from './options';\r\nimport { BaseGrid, toTarget, } from '../gridview/baseComponentGridview';\r\nimport { DockviewApi } from '../api/component.api';\r\nimport { Orientation, Sizing } from '../splitview/splitview';\r\nimport { DockviewGroupPanel } from './dockviewGroupPanel';\r\nimport { DockviewPanelModel } from './dockviewPanelModel';\r\nimport { getPanelData } from '../dnd/dataTransfer';\r\nimport { Overlay } from '../dnd/overlay';\r\nimport { toggleClass, watchElementResize } from '../dom';\r\nimport { DockviewFloatingGroupPanel, } from './dockviewFloatingGroupPanel';\r\nconst DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;\r\nexport class DockviewComponent extends BaseGrid {\r\n get orientation() {\r\n return this.gridview.orientation;\r\n }\r\n get totalPanels() {\r\n return this.panels.length;\r\n }\r\n get panels() {\r\n return this.groups.flatMap((group) => group.panels);\r\n }\r\n get options() {\r\n return this._options;\r\n }\r\n get activePanel() {\r\n const activeGroup = this.activeGroup;\r\n if (!activeGroup) {\r\n return undefined;\r\n }\r\n return activeGroup.activePanel;\r\n }\r\n constructor(options) {\r\n super({\r\n proportionalLayout: true,\r\n orientation: options.orientation || Orientation.HORIZONTAL,\r\n styles: options.styles,\r\n parentElement: options.parentElement,\r\n });\r\n this.nextGroupId = sequentialNumberGenerator();\r\n this._deserializer = new DefaultDockviewDeserialzier(this);\r\n this.watermark = null;\r\n this._onWillDragPanel = new Emitter();\r\n this.onWillDragPanel = this._onWillDragPanel.event;\r\n this._onWillDragGroup = new Emitter();\r\n this.onWillDragGroup = this._onWillDragGroup.event;\r\n this._onDidDrop = new Emitter();\r\n this.onDidDrop = this._onDidDrop.event;\r\n this._onDidRemovePanel = new Emitter();\r\n this.onDidRemovePanel = this._onDidRemovePanel.event;\r\n this._onDidAddPanel = new Emitter();\r\n this.onDidAddPanel = this._onDidAddPanel.event;\r\n this._onDidLayoutFromJSON = new Emitter();\r\n this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;\r\n this._onDidActivePanelChange = new Emitter();\r\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\r\n this.floatingGroups = [];\r\n toggleClass(this.gridview.element, 'dv-dockview', true);\r\n this.addDisposables(this._onWillDragPanel, this._onWillDragGroup, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, Event.any(this.onDidAddGroup, this.onDidRemoveGroup)(() => {\r\n this.updateWatermark();\r\n }), Event.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {\r\n this._bufferOnDidLayoutChange.fire();\r\n }));\r\n this._options = options;\r\n if (!this.options.components) {\r\n this.options.components = {};\r\n }\r\n if (!this.options.frameworkComponents) {\r\n this.options.frameworkComponents = {};\r\n }\r\n if (!this.options.frameworkTabComponents) {\r\n this.options.frameworkTabComponents = {};\r\n }\r\n if (!this.options.tabComponents) {\r\n this.options.tabComponents = {};\r\n }\r\n if (!this.options.watermarkComponent &&\r\n !this.options.watermarkFrameworkComponent) {\r\n this.options.watermarkComponent = Watermark;\r\n }\r\n const dropTarget = new Droptarget(this.element, {\r\n canDisplayOverlay: (event, position) => {\r\n const data = getPanelData();\r\n if (data) {\r\n if (data.viewId !== this.id) {\r\n return false;\r\n }\r\n if (position === 'center') {\r\n // center drop target is only allowed if there are no panels in the grid\r\n // floating panels are allowed\r\n return this.gridview.length === 0;\r\n }\r\n return true;\r\n }\r\n if (this.options.showDndOverlay) {\r\n if (position === 'center' && this.gridview.length !== 0) {\r\n /**\r\n * for external events only show the four-corner drag overlays, disable\r\n * the center position so that external drag events can fall through to the group\r\n * and panel drop target handlers\r\n */\r\n return false;\r\n }\r\n return this.options.showDndOverlay({\r\n nativeEvent: event,\r\n position: position,\r\n target: DockviewDropTargets.Edge,\r\n getData: getPanelData,\r\n });\r\n }\r\n return false;\r\n },\r\n acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],\r\n overlayModel: {\r\n activationSize: { type: 'pixels', value: 10 },\r\n size: { type: 'pixels', value: 20 },\r\n },\r\n });\r\n this.addDisposables(dropTarget.onDrop((event) => {\r\n const data = getPanelData();\r\n if (data) {\r\n this.moveGroupOrPanel(this.orthogonalize(event.position), data.groupId, data.panelId || undefined, 'center');\r\n }\r\n else {\r\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: null, getData: getPanelData }));\r\n }\r\n }), dropTarget);\r\n this._api = new DockviewApi(this);\r\n this.updateWatermark();\r\n }\r\n addFloatingGroup(item, coord, options) {\r\n var _a, _b, _c, _d, _e, _f;\r\n let group;\r\n if (item instanceof DockviewPanel) {\r\n group = this.createGroup();\r\n this.removePanel(item, {\r\n removeEmptyGroup: true,\r\n skipDispose: true,\r\n });\r\n group.model.openPanel(item);\r\n }\r\n else {\r\n group = item;\r\n const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&\r\n options.skipRemoveGroup;\r\n if (!skip) {\r\n this.doRemoveGroup(item, { skipDispose: true });\r\n }\r\n }\r\n group.model.isFloating = true;\r\n const overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number' ? Math.max(coord.x, 0) : 100;\r\n const overlayTop = typeof (coord === null || coord === void 0 ? void 0 : coord.y) === 'number' ? Math.max(coord.y, 0) : 100;\r\n const overlay = new Overlay({\r\n container: this.gridview.element,\r\n content: group.element,\r\n height: (_a = coord === null || coord === void 0 ? void 0 : coord.height) !== null && _a !== void 0 ? _a : 300,\r\n width: (_b = coord === null || coord === void 0 ? void 0 : coord.width) !== null && _b !== void 0 ? _b : 300,\r\n left: overlayLeft,\r\n top: overlayTop,\r\n minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'\r\n ? undefined\r\n : (_d = (_c = this.options.floatingGroupBounds) === null || _c === void 0 ? void 0 : _c.minimumWidthWithinViewport) !== null && _d !== void 0 ? _d : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,\r\n minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'\r\n ? undefined\r\n : (_f = (_e = this.options.floatingGroupBounds) === null || _e === void 0 ? void 0 : _e.minimumHeightWithinViewport) !== null && _f !== void 0 ? _f : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,\r\n });\r\n const el = group.element.querySelector('.void-container');\r\n if (!el) {\r\n throw new Error('failed to find drag handle');\r\n }\r\n overlay.setupDrag(el, {\r\n inDragMode: typeof (options === null || options === void 0 ? void 0 : options.inDragMode) === 'boolean'\r\n ? options.inDragMode\r\n : false,\r\n });\r\n const floatingGroupPanel = new DockviewFloatingGroupPanel(group, overlay);\r\n const disposable = watchElementResize(group.element, (entry) => {\r\n const { width, height } = entry.contentRect;\r\n group.layout(width, height); // let the group know it's size is changing so it can fire events to the panel\r\n });\r\n floatingGroupPanel.addDisposables(overlay.onDidChange(() => {\r\n // this is either a resize or a move\r\n // to inform the panels .layout(...) the group with it's current size\r\n // don't care about resize since the above watcher handles that\r\n group.layout(group.height, group.width);\r\n }), overlay.onDidChangeEnd(() => {\r\n this._bufferOnDidLayoutChange.fire();\r\n }), group.onDidChange((event) => {\r\n overlay.setBounds({\r\n height: event === null || event === void 0 ? void 0 : event.height,\r\n width: event === null || event === void 0 ? void 0 : event.width,\r\n });\r\n }), {\r\n dispose: () => {\r\n disposable.dispose();\r\n group.model.isFloating = false;\r\n remove(this.floatingGroups, floatingGroupPanel);\r\n this.updateWatermark();\r\n },\r\n });\r\n this.floatingGroups.push(floatingGroupPanel);\r\n this.updateWatermark();\r\n }\r\n orthogonalize(position) {\r\n switch (position) {\r\n case 'top':\r\n case 'bottom':\r\n if (this.gridview.orientation === Orientation.HORIZONTAL) {\r\n // we need to add to a vertical splitview but the current root is a horizontal splitview.\r\n // insert a vertical splitview at the root level and add the existing view as a child\r\n this.gridview.insertOrthogonalSplitviewAtRoot();\r\n }\r\n break;\r\n case 'left':\r\n case 'right':\r\n if (this.gridview.orientation === Orientation.VERTICAL) {\r\n // we need to add to a horizontal splitview but the current root is a vertical splitview.\r\n // insert a horiziontal splitview at the root level and add the existing view as a child\r\n this.gridview.insertOrthogonalSplitviewAtRoot();\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n switch (position) {\r\n case 'top':\r\n case 'left':\r\n case 'center':\r\n return this.createGroupAtLocation([0]); // insert into first position\r\n case 'bottom':\r\n case 'right':\r\n return this.createGroupAtLocation([this.gridview.length]); // insert into last position\r\n default:\r\n throw new Error(`unsupported position ${position}`);\r\n }\r\n }\r\n updateOptions(options) {\r\n var _a, _b;\r\n const hasOrientationChanged = typeof options.orientation === 'string' &&\r\n this.gridview.orientation !== options.orientation;\r\n const hasFloatingGroupOptionsChanged = options.floatingGroupBounds !== undefined &&\r\n options.floatingGroupBounds !== this.options.floatingGroupBounds;\r\n this._options = Object.assign(Object.assign({}, this.options), options);\r\n if (hasOrientationChanged) {\r\n this.gridview.orientation = options.orientation;\r\n }\r\n if (hasFloatingGroupOptionsChanged) {\r\n for (const group of this.floatingGroups) {\r\n switch (this.options.floatingGroupBounds) {\r\n case 'boundedWithinViewport':\r\n group.overlay.minimumInViewportHeight = undefined;\r\n group.overlay.minimumInViewportWidth = undefined;\r\n break;\r\n case undefined:\r\n group.overlay.minimumInViewportHeight =\r\n DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;\r\n group.overlay.minimumInViewportWidth =\r\n DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;\r\n break;\r\n default:\r\n group.overlay.minimumInViewportHeight =\r\n (_a = this.options.floatingGroupBounds) === null || _a === void 0 ? void 0 : _a.minimumHeightWithinViewport;\r\n group.overlay.minimumInViewportWidth =\r\n (_b = this.options.floatingGroupBounds) === null || _b === void 0 ? void 0 : _b.minimumWidthWithinViewport;\r\n }\r\n group.overlay.setBounds({});\r\n }\r\n }\r\n this.layout(this.gridview.width, this.gridview.height, true);\r\n }\r\n layout(width, height, forceResize) {\r\n super.layout(width, height, forceResize);\r\n if (this.floatingGroups) {\r\n for (const floating of this.floatingGroups) {\r\n // ensure floting groups stay within visible boundaries\r\n floating.overlay.setBounds();\r\n }\r\n }\r\n }\r\n focus() {\r\n var _a;\r\n (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();\r\n }\r\n getGroupPanel(id) {\r\n return this.panels.find((panel) => panel.id === id);\r\n }\r\n setActivePanel(panel) {\r\n this.doSetGroupActive(panel.group);\r\n panel.group.model.openPanel(panel);\r\n }\r\n moveToNext(options = {}) {\r\n var _a;\r\n if (!options.group) {\r\n if (!this.activeGroup) {\r\n return;\r\n }\r\n options.group = this.activeGroup;\r\n }\r\n if (options.includePanel && options.group) {\r\n if (options.group.activePanel !==\r\n options.group.panels[options.group.panels.length - 1]) {\r\n options.group.model.moveToNext({ suppressRoll: true });\r\n return;\r\n }\r\n }\r\n const location = getGridLocation(options.group.element);\r\n const next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;\r\n this.doSetGroupActive(next);\r\n }\r\n moveToPrevious(options = {}) {\r\n var _a;\r\n if (!options.group) {\r\n if (!this.activeGroup) {\r\n return;\r\n }\r\n options.group = this.activeGroup;\r\n }\r\n if (options.includePanel && options.group) {\r\n if (options.group.activePanel !== options.group.panels[0]) {\r\n options.group.model.moveToPrevious({ suppressRoll: true });\r\n return;\r\n }\r\n }\r\n const location = getGridLocation(options.group.element);\r\n const next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;\r\n if (next) {\r\n this.doSetGroupActive(next);\r\n }\r\n }\r\n /**\r\n * Serialize the current state of the layout\r\n *\r\n * @returns A JSON respresentation of the layout\r\n */\r\n toJSON() {\r\n var _a;\r\n const data = this.gridview.serialize();\r\n const panels = this.panels.reduce((collection, panel) => {\r\n collection[panel.id] = panel.toJSON();\r\n return collection;\r\n }, {});\r\n const floats = this.floatingGroups.map((floatingGroup) => {\r\n return {\r\n data: floatingGroup.group.toJSON(),\r\n position: floatingGroup.overlay.toJSON(),\r\n };\r\n });\r\n const result = {\r\n grid: data,\r\n panels,\r\n activeGroup: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,\r\n };\r\n if (floats.length > 0) {\r\n result.floatingGroups = floats;\r\n }\r\n return result;\r\n }\r\n fromJSON(data) {\r\n var _a;\r\n this.clear();\r\n const { grid, panels, activeGroup } = data;\r\n if (grid.root.type !== 'branch' || !Array.isArray(grid.root.data)) {\r\n throw new Error('root must be of type branch');\r\n }\r\n // take note of the existing dimensions\r\n const width = this.width;\r\n const height = this.height;\r\n const createGroupFromSerializedState = (data) => {\r\n const { id, locked, hideHeader, views, activeView } = data;\r\n const group = this.createGroup({\r\n id,\r\n locked: !!locked,\r\n hideHeader: !!hideHeader,\r\n });\r\n this._onDidAddGroup.fire(group);\r\n for (const child of views) {\r\n const panel = this._deserializer.fromJSON(panels[child], group);\r\n const isActive = typeof activeView === 'string' && activeView === panel.id;\r\n group.model.openPanel(panel, {\r\n skipSetPanelActive: !isActive,\r\n skipSetGroupActive: true,\r\n });\r\n }\r\n if (!group.activePanel && group.panels.length > 0) {\r\n group.model.openPanel(group.panels[group.panels.length - 1], {\r\n skipSetGroupActive: true,\r\n });\r\n }\r\n return group;\r\n };\r\n this.gridview.deserialize(grid, {\r\n fromJSON: (node) => {\r\n return createGroupFromSerializedState(node.data);\r\n },\r\n });\r\n this.layout(width, height, true);\r\n const serializedFloatingGroups = (_a = data.floatingGroups) !== null && _a !== void 0 ? _a : [];\r\n for (const serializedFloatingGroup of serializedFloatingGroups) {\r\n const { data, position } = serializedFloatingGroup;\r\n const group = createGroupFromSerializedState(data);\r\n this.addFloatingGroup(group, {\r\n x: position.left,\r\n y: position.top,\r\n height: position.height,\r\n width: position.width,\r\n }, { skipRemoveGroup: true, inDragMode: false });\r\n }\r\n for (const floatingGroup of this.floatingGroups) {\r\n floatingGroup.overlay.setBounds();\r\n }\r\n if (typeof activeGroup === 'string') {\r\n const panel = this.getPanel(activeGroup);\r\n if (panel) {\r\n this.doSetGroupActive(panel);\r\n }\r\n }\r\n this._onDidLayoutFromJSON.fire();\r\n }\r\n clear() {\r\n const groups = Array.from(this._groups.values()).map((_) => _.value);\r\n const hasActiveGroup = !!this.activeGroup;\r\n const hasActivePanel = !!this.activePanel;\r\n for (const group of groups) {\r\n // remove the group will automatically remove the panels\r\n this.removeGroup(group, { skipActive: true });\r\n }\r\n if (hasActiveGroup) {\r\n this.doSetGroupActive(undefined);\r\n }\r\n if (hasActivePanel) {\r\n this._onDidActivePanelChange.fire(undefined);\r\n }\r\n this.gridview.clear();\r\n }\r\n closeAllGroups() {\r\n for (const entry of this._groups.entries()) {\r\n const [_, group] = entry;\r\n group.value.model.closeAllPanels();\r\n }\r\n }\r\n addPanel(options) {\r\n var _a, _b;\r\n if (this.panels.find((_) => _.id === options.id)) {\r\n throw new Error(`panel with id ${options.id} already exists`);\r\n }\r\n let referenceGroup;\r\n if (options.position && options.floating) {\r\n throw new Error('you can only provide one of: position, floating as arguments to .addPanel(...)');\r\n }\r\n if (options.position) {\r\n if (isPanelOptionsWithPanel(options.position)) {\r\n const referencePanel = typeof options.position.referencePanel === 'string'\r\n ? this.getGroupPanel(options.position.referencePanel)\r\n : options.position.referencePanel;\r\n if (!referencePanel) {\r\n throw new Error(`referencePanel ${options.position.referencePanel} does not exist`);\r\n }\r\n referenceGroup = this.findGroup(referencePanel);\r\n }\r\n else if (isPanelOptionsWithGroup(options.position)) {\r\n referenceGroup =\r\n typeof options.position.referenceGroup === 'string'\r\n ? (_a = this._groups.get(options.position.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value\r\n : options.position.referenceGroup;\r\n if (!referenceGroup) {\r\n throw new Error(`referencePanel ${options.position.referenceGroup} does not exist`);\r\n }\r\n }\r\n else {\r\n const group = this.orthogonalize(directionToPosition(options.position.direction));\r\n const panel = this.createPanel(options, group);\r\n group.model.openPanel(panel);\r\n return panel;\r\n }\r\n }\r\n else {\r\n referenceGroup = this.activeGroup;\r\n }\r\n let panel;\r\n if (referenceGroup) {\r\n const target = toTarget(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');\r\n if (options.floating) {\r\n const group = this.createGroup();\r\n panel = this.createPanel(options, group);\r\n group.model.openPanel(panel);\r\n const o = typeof options.floating === 'object' &&\r\n options.floating !== null\r\n ? options.floating\r\n : {};\r\n this.addFloatingGroup(group, o, {\r\n inDragMode: false,\r\n skipRemoveGroup: true,\r\n });\r\n }\r\n else if (referenceGroup.api.isFloating || target === 'center') {\r\n panel = this.createPanel(options, referenceGroup);\r\n referenceGroup.model.openPanel(panel);\r\n }\r\n else {\r\n const location = getGridLocation(referenceGroup.element);\r\n const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\r\n const group = this.createGroupAtLocation(relativeLocation);\r\n panel = this.createPanel(options, group);\r\n group.model.openPanel(panel);\r\n }\r\n }\r\n else if (options.floating) {\r\n const group = this.createGroup();\r\n panel = this.createPanel(options, group);\r\n group.model.openPanel(panel);\r\n const o = typeof options.floating === 'object' &&\r\n options.floating !== null\r\n ? options.floating\r\n : {};\r\n this.addFloatingGroup(group, o, {\r\n inDragMode: false,\r\n skipRemoveGroup: true,\r\n });\r\n }\r\n else {\r\n const group = this.createGroupAtLocation();\r\n panel = this.createPanel(options, group);\r\n group.model.openPanel(panel);\r\n }\r\n return panel;\r\n }\r\n removePanel(panel, options = {\r\n removeEmptyGroup: true,\r\n skipDispose: false,\r\n }) {\r\n const group = panel.group;\r\n if (!group) {\r\n throw new Error(`cannot remove panel ${panel.id}. it's missing a group.`);\r\n }\r\n group.model.removePanel(panel);\r\n if (!options.skipDispose) {\r\n panel.dispose();\r\n }\r\n if (group.size === 0 && options.removeEmptyGroup) {\r\n this.removeGroup(group);\r\n }\r\n }\r\n createWatermarkComponent() {\r\n var _a;\r\n return createComponent('watermark-id', 'watermark-name', this.options.watermarkComponent\r\n ? { 'watermark-name': this.options.watermarkComponent }\r\n : {}, this.options.watermarkFrameworkComponent\r\n ? { 'watermark-name': this.options.watermarkFrameworkComponent }\r\n : {}, (_a = this.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.watermark);\r\n }\r\n updateWatermark() {\r\n var _a, _b;\r\n if (this.groups.filter((x) => !x.api.isFloating).length === 0) {\r\n if (!this.watermark) {\r\n this.watermark = this.createWatermarkComponent();\r\n this.watermark.init({\r\n containerApi: new DockviewApi(this),\r\n });\r\n const watermarkContainer = document.createElement('div');\r\n watermarkContainer.className = 'dv-watermark-container';\r\n watermarkContainer.appendChild(this.watermark.element);\r\n this.gridview.element.appendChild(watermarkContainer);\r\n }\r\n }\r\n else if (this.watermark) {\r\n this.watermark.element.parentElement.remove();\r\n (_b = (_a = this.watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n this.watermark = null;\r\n }\r\n }\r\n addGroup(options) {\r\n var _a;\r\n const group = this.createGroup();\r\n if (options) {\r\n let referenceGroup;\r\n if (isGroupOptionsWithPanel(options)) {\r\n const referencePanel = typeof options.referencePanel === 'string'\r\n ? this.panels.find((panel) => panel.id === options.referencePanel)\r\n : options.referencePanel;\r\n if (!referencePanel) {\r\n throw new Error(`reference panel ${options.referencePanel} does not exist`);\r\n }\r\n referenceGroup = this.findGroup(referencePanel);\r\n if (!referenceGroup) {\r\n throw new Error(`reference group for reference panel ${options.referencePanel} does not exist`);\r\n }\r\n }\r\n else if (isGroupOptionsWithGroup(options)) {\r\n referenceGroup =\r\n typeof options.referenceGroup === 'string'\r\n ? (_a = this._groups.get(options.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value\r\n : options.referenceGroup;\r\n if (!referenceGroup) {\r\n throw new Error(`reference group ${options.referenceGroup} does not exist`);\r\n }\r\n }\r\n else {\r\n const group = this.orthogonalize(directionToPosition(options.direction));\r\n return group;\r\n }\r\n const target = toTarget(options.direction || 'within');\r\n const location = getGridLocation(referenceGroup.element);\r\n const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\r\n this.doAddGroup(group, relativeLocation);\r\n return group;\r\n }\r\n else {\r\n this.doAddGroup(group);\r\n return group;\r\n }\r\n }\r\n removeGroup(group, options) {\r\n var _a;\r\n const panels = [...group.panels]; // reassign since group panels will mutate\r\n for (const panel of panels) {\r\n this.removePanel(panel, {\r\n removeEmptyGroup: false,\r\n skipDispose: (_a = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _a !== void 0 ? _a : false,\r\n });\r\n }\r\n this.doRemoveGroup(group, options);\r\n }\r\n doRemoveGroup(group, options) {\r\n const floatingGroup = this.floatingGroups.find((_) => _.group === group);\r\n if (floatingGroup) {\r\n if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {\r\n floatingGroup.group.dispose();\r\n this._groups.delete(group.id);\r\n }\r\n floatingGroup.dispose();\r\n return floatingGroup.group;\r\n }\r\n return super.doRemoveGroup(group, options);\r\n }\r\n moveGroupOrPanel(destinationGroup, sourceGroupId, sourceItemId, destinationTarget, destinationIndex) {\r\n var _a;\r\n const sourceGroup = sourceGroupId\r\n ? (_a = this._groups.get(sourceGroupId)) === null || _a === void 0 ? void 0 : _a.value\r\n : undefined;\r\n if (sourceItemId === undefined) {\r\n if (sourceGroup) {\r\n this.moveGroup(sourceGroup, destinationGroup, destinationTarget);\r\n }\r\n return;\r\n }\r\n if (!destinationTarget || destinationTarget === 'center') {\r\n const groupItem = (sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(sourceItemId)) ||\r\n this.panels.find((panel) => panel.id === sourceItemId);\r\n if (!groupItem) {\r\n throw new Error(`No panel with id ${sourceItemId}`);\r\n }\r\n if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {\r\n this.doRemoveGroup(sourceGroup);\r\n }\r\n destinationGroup.model.openPanel(groupItem, {\r\n index: destinationIndex,\r\n });\r\n }\r\n else {\r\n const referenceLocation = getGridLocation(destinationGroup.element);\r\n const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);\r\n if (sourceGroup && sourceGroup.size < 2) {\r\n const [targetParentLocation, to] = tail(targetLocation);\r\n const isFloating = this.floatingGroups.find((x) => x.group === sourceGroup);\r\n if (!isFloating) {\r\n const sourceLocation = getGridLocation(sourceGroup.element);\r\n const [sourceParentLocation, from] = tail(sourceLocation);\r\n if (sequenceEquals(sourceParentLocation, targetParentLocation)) {\r\n // special case when 'swapping' two views within same grid location\r\n // if a group has one tab - we are essentially moving the 'group'\r\n // which is equivalent to swapping two views in this case\r\n this.gridview.moveView(sourceParentLocation, from, to);\r\n }\r\n }\r\n // source group will become empty so delete the group\r\n const targetGroup = this.doRemoveGroup(sourceGroup, {\r\n skipActive: true,\r\n skipDispose: true,\r\n });\r\n // after deleting the group we need to re-evaulate the ref location\r\n const updatedReferenceLocation = getGridLocation(destinationGroup.element);\r\n const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, destinationTarget);\r\n this.doAddGroup(targetGroup, location);\r\n }\r\n else {\r\n const groupItem = (sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(sourceItemId)) ||\r\n this.panels.find((panel) => panel.id === sourceItemId);\r\n if (!groupItem) {\r\n throw new Error(`No panel with id ${sourceItemId}`);\r\n }\r\n const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);\r\n const group = this.createGroupAtLocation(dropLocation);\r\n group.model.openPanel(groupItem);\r\n }\r\n }\r\n }\r\n moveGroup(sourceGroup, referenceGroup, target) {\r\n if (sourceGroup) {\r\n if (!target || target === 'center') {\r\n const activePanel = sourceGroup.activePanel;\r\n const panels = [...sourceGroup.panels].map((p) => sourceGroup.model.removePanel(p.id));\r\n if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {\r\n this.doRemoveGroup(sourceGroup);\r\n }\r\n for (const panel of panels) {\r\n referenceGroup.model.openPanel(panel, {\r\n skipSetPanelActive: panel !== activePanel,\r\n });\r\n }\r\n }\r\n else {\r\n const floatingGroup = this.floatingGroups.find((x) => x.group === sourceGroup);\r\n if (floatingGroup) {\r\n floatingGroup.dispose();\r\n }\r\n else {\r\n this.gridview.removeView(getGridLocation(sourceGroup.element));\r\n }\r\n const referenceLocation = getGridLocation(referenceGroup.element);\r\n const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);\r\n this.gridview.addView(sourceGroup, Sizing.Distribute, dropLocation);\r\n }\r\n }\r\n }\r\n doSetGroupActive(group, skipFocus) {\r\n var _a, _b;\r\n const isGroupAlreadyFocused = this._activeGroup === group;\r\n super.doSetGroupActive(group, skipFocus);\r\n if (!isGroupAlreadyFocused && ((_a = this._activeGroup) === null || _a === void 0 ? void 0 : _a.activePanel)) {\r\n this._onDidActivePanelChange.fire((_b = this._activeGroup) === null || _b === void 0 ? void 0 : _b.activePanel);\r\n }\r\n }\r\n createGroup(options) {\r\n if (!options) {\r\n options = {};\r\n }\r\n let id = options === null || options === void 0 ? void 0 : options.id;\r\n if (id && this._groups.has(options.id)) {\r\n console.warn(`Duplicate group id ${options === null || options === void 0 ? void 0 : options.id}. reassigning group id to avoid errors`);\r\n id = undefined;\r\n }\r\n if (!id) {\r\n id = this.nextGroupId.next();\r\n while (this._groups.has(id)) {\r\n id = this.nextGroupId.next();\r\n }\r\n }\r\n const view = new DockviewGroupPanel(this, id, options);\r\n view.init({ params: {}, accessor: null }); // required to initialized .part and allow for correct disposal of group\r\n if (!this._groups.has(view.id)) {\r\n const disposable = new CompositeDisposable(view.model.onTabDragStart((event) => {\r\n this._onWillDragPanel.fire(event);\r\n }), view.model.onGroupDragStart((event) => {\r\n this._onWillDragGroup.fire(event);\r\n }), view.model.onMove((event) => {\r\n const { groupId, itemId, target, index } = event;\r\n this.moveGroupOrPanel(view, groupId, itemId, target, index);\r\n }), view.model.onDidDrop((event) => {\r\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: view }));\r\n }), view.model.onDidAddPanel((event) => {\r\n this._onDidAddPanel.fire(event.panel);\r\n }), view.model.onDidRemovePanel((event) => {\r\n this._onDidRemovePanel.fire(event.panel);\r\n }), view.model.onDidActivePanelChange((event) => {\r\n this._onDidActivePanelChange.fire(event.panel);\r\n }));\r\n this._groups.set(view.id, { value: view, disposable });\r\n }\r\n // TODO: must be called after the above listeners have been setup,\r\n // not an ideal pattern\r\n view.initialize();\r\n return view;\r\n }\r\n createPanel(options, group) {\r\n const contentComponent = options.component;\r\n const tabComponent = options.tabComponent || this.options.defaultTabComponent;\r\n const view = new DockviewPanelModel(this, options.id, contentComponent, tabComponent);\r\n const panel = new DockviewPanel(options.id, this, this._api, group, view);\r\n panel.init({\r\n title: options.title || options.id,\r\n params: (options === null || options === void 0 ? void 0 : options.params) || {},\r\n });\r\n return panel;\r\n }\r\n createGroupAtLocation(location = [0]) {\r\n const group = this.createGroup();\r\n this.doAddGroup(group, location);\r\n return group;\r\n }\r\n findGroup(panel) {\r\n var _a;\r\n return (_a = Array.from(this._groups.values()).find((group) => group.value.model.containsPanel(panel))) === null || _a === void 0 ? void 0 : _a.value;\r\n }\r\n}\r\n//# sourceMappingURL=dockviewComponent.js.map","import { getRelativeLocation, getGridLocation, } from './gridview';\r\nimport { tail, sequenceEquals } from '../array';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nimport { BaseGrid, toTarget, } from './baseComponentGridview';\r\nimport { createComponent } from '../panel/componentFactory';\r\nimport { Emitter } from '../events';\r\nexport class GridviewComponent extends BaseGrid {\r\n get orientation() {\r\n return this.gridview.orientation;\r\n }\r\n set orientation(value) {\r\n this.gridview.orientation = value;\r\n }\r\n get options() {\r\n return this._options;\r\n }\r\n get deserializer() {\r\n return this._deserializer;\r\n }\r\n set deserializer(value) {\r\n this._deserializer = value;\r\n }\r\n constructor(options) {\r\n super({\r\n parentElement: options.parentElement,\r\n proportionalLayout: options.proportionalLayout,\r\n orientation: options.orientation,\r\n styles: options.styles,\r\n });\r\n this._onDidLayoutfromJSON = new Emitter();\r\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\r\n this._options = options;\r\n if (!this.options.components) {\r\n this.options.components = {};\r\n }\r\n if (!this.options.frameworkComponents) {\r\n this.options.frameworkComponents = {};\r\n }\r\n }\r\n updateOptions(options) {\r\n const hasOrientationChanged = typeof options.orientation === 'string' &&\r\n this.gridview.orientation !== options.orientation;\r\n this._options = Object.assign(Object.assign({}, this.options), options);\r\n if (hasOrientationChanged) {\r\n this.gridview.orientation = options.orientation;\r\n }\r\n this.layout(this.gridview.width, this.gridview.height, true);\r\n }\r\n removePanel(panel) {\r\n this.removeGroup(panel);\r\n }\r\n /**\r\n * Serialize the current state of the layout\r\n *\r\n * @returns A JSON respresentation of the layout\r\n */\r\n toJSON() {\r\n var _a;\r\n const data = this.gridview.serialize();\r\n return {\r\n grid: data,\r\n activePanel: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,\r\n };\r\n }\r\n setVisible(panel, visible) {\r\n this.gridview.setViewVisible(getGridLocation(panel.element), visible);\r\n }\r\n setActive(panel) {\r\n this._groups.forEach((value, _key) => {\r\n value.value.setActive(panel === value.value);\r\n });\r\n }\r\n focus() {\r\n var _a;\r\n (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();\r\n }\r\n fromJSON(serializedGridview) {\r\n this.clear();\r\n const { grid, activePanel } = serializedGridview;\r\n const queue = [];\r\n // take note of the existing dimensions\r\n const width = this.width;\r\n const height = this.height;\r\n this.gridview.deserialize(grid, {\r\n fromJSON: (node) => {\r\n const { data } = node;\r\n const view = createComponent(data.id, data.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkComponentFactory\r\n ? {\r\n createComponent: this.options.frameworkComponentFactory\r\n .createComponent,\r\n }\r\n : undefined);\r\n queue.push(() => view.init({\r\n params: data.params,\r\n minimumWidth: data.minimumWidth,\r\n maximumWidth: data.maximumWidth,\r\n minimumHeight: data.minimumHeight,\r\n maximumHeight: data.maximumHeight,\r\n priority: data.priority,\r\n snap: !!data.snap,\r\n accessor: this,\r\n isVisible: node.visible,\r\n }));\r\n this._onDidAddGroup.fire(view);\r\n this.registerPanel(view);\r\n return view;\r\n },\r\n });\r\n this.layout(width, height, true);\r\n queue.forEach((f) => f());\r\n if (typeof activePanel === 'string') {\r\n const panel = this.getPanel(activePanel);\r\n if (panel) {\r\n this.doSetGroupActive(panel);\r\n }\r\n }\r\n this._onDidLayoutfromJSON.fire();\r\n }\r\n clear() {\r\n const hasActiveGroup = this.activeGroup;\r\n const groups = Array.from(this._groups.values()); // reassign since group panels will mutate\r\n for (const group of groups) {\r\n group.disposable.dispose();\r\n this.doRemoveGroup(group.value, { skipActive: true });\r\n }\r\n if (hasActiveGroup) {\r\n this.doSetGroupActive(undefined);\r\n }\r\n this.gridview.clear();\r\n }\r\n movePanel(panel, options) {\r\n var _a;\r\n let relativeLocation;\r\n const removedPanel = this.gridview.remove(panel);\r\n const referenceGroup = (_a = this._groups.get(options.reference)) === null || _a === void 0 ? void 0 : _a.value;\r\n if (!referenceGroup) {\r\n throw new Error(`reference group ${options.reference} does not exist`);\r\n }\r\n const target = toTarget(options.direction);\r\n if (target === 'center') {\r\n throw new Error(`${target} not supported as an option`);\r\n }\r\n else {\r\n const location = getGridLocation(referenceGroup.element);\r\n relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\r\n }\r\n this.doAddGroup(removedPanel, relativeLocation, options.size);\r\n }\r\n addPanel(options) {\r\n var _a, _b;\r\n let relativeLocation = options.location || [0];\r\n if ((_a = options.position) === null || _a === void 0 ? void 0 : _a.referencePanel) {\r\n const referenceGroup = (_b = this._groups.get(options.position.referencePanel)) === null || _b === void 0 ? void 0 : _b.value;\r\n if (!referenceGroup) {\r\n throw new Error(`reference group ${options.position.referencePanel} does not exist`);\r\n }\r\n const target = toTarget(options.position.direction);\r\n if (target === 'center') {\r\n throw new Error(`${target} not supported as an option`);\r\n }\r\n else {\r\n const location = getGridLocation(referenceGroup.element);\r\n relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\r\n }\r\n }\r\n const view = createComponent(options.id, options.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkComponentFactory\r\n ? {\r\n createComponent: this.options.frameworkComponentFactory\r\n .createComponent,\r\n }\r\n : undefined);\r\n view.init({\r\n params: options.params || {},\r\n minimumWidth: options.minimumWidth,\r\n maximumWidth: options.maximumWidth,\r\n minimumHeight: options.minimumHeight,\r\n maximumHeight: options.maximumHeight,\r\n priority: options.priority,\r\n snap: !!options.snap,\r\n accessor: this,\r\n isVisible: true,\r\n });\r\n this.registerPanel(view);\r\n this.doAddGroup(view, relativeLocation, options.size);\r\n return view;\r\n }\r\n registerPanel(panel) {\r\n const disposable = new CompositeDisposable(panel.api.onDidFocusChange((event) => {\r\n if (!event.isFocused) {\r\n return;\r\n }\r\n this._groups.forEach((groupItem) => {\r\n const group = groupItem.value;\r\n if (group !== panel) {\r\n group.setActive(false);\r\n }\r\n else {\r\n group.setActive(true);\r\n }\r\n });\r\n }));\r\n this._groups.set(panel.id, {\r\n value: panel,\r\n disposable,\r\n });\r\n }\r\n moveGroup(referenceGroup, groupId, target) {\r\n const sourceGroup = this.getPanel(groupId);\r\n if (!sourceGroup) {\r\n throw new Error('invalid operation');\r\n }\r\n const referenceLocation = getGridLocation(referenceGroup.element);\r\n const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);\r\n const [targetParentLocation, to] = tail(targetLocation);\r\n const sourceLocation = getGridLocation(sourceGroup.element);\r\n const [sourceParentLocation, from] = tail(sourceLocation);\r\n if (sequenceEquals(sourceParentLocation, targetParentLocation)) {\r\n // special case when 'swapping' two views within same grid location\r\n // if a group has one tab - we are essentially moving the 'group'\r\n // which is equivalent to swapping two views in this case\r\n this.gridview.moveView(sourceParentLocation, from, to);\r\n return;\r\n }\r\n // source group will become empty so delete the group\r\n const targetGroup = this.doRemoveGroup(sourceGroup, {\r\n skipActive: true,\r\n skipDispose: true,\r\n });\r\n // after deleting the group we need to re-evaulate the ref location\r\n const updatedReferenceLocation = getGridLocation(referenceGroup.element);\r\n const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, target);\r\n this.doAddGroup(targetGroup, location);\r\n }\r\n removeGroup(group) {\r\n super.removeGroup(group);\r\n }\r\n dispose() {\r\n super.dispose();\r\n this._onDidLayoutfromJSON.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=gridviewComponent.js.map","import { CompositeDisposable, MutableDisposable, } from '../lifecycle';\r\nimport { Orientation, Sizing, Splitview, } from './splitview';\r\nimport { Emitter } from '../events';\r\nimport { createComponent } from '../panel/componentFactory';\r\nimport { Resizable } from '../resizable';\r\n/**\r\n * A high-level implementation of splitview that works using 'panels'\r\n */\r\nexport class SplitviewComponent extends Resizable {\r\n get panels() {\r\n return this.splitview.getViews();\r\n }\r\n get options() {\r\n return this._options;\r\n }\r\n get length() {\r\n return this._panels.size;\r\n }\r\n get orientation() {\r\n return this.splitview.orientation;\r\n }\r\n get splitview() {\r\n return this._splitview;\r\n }\r\n set splitview(value) {\r\n this._splitview = value;\r\n this._splitviewChangeDisposable.value = new CompositeDisposable(this._splitview.onDidSashEnd(() => {\r\n this._onDidLayoutChange.fire(undefined);\r\n }), this._splitview.onDidAddView((e) => this._onDidAddView.fire(e)), this._splitview.onDidRemoveView((e) => this._onDidRemoveView.fire(e)));\r\n }\r\n get minimumSize() {\r\n return this.splitview.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.splitview.maximumSize;\r\n }\r\n get height() {\r\n return this.splitview.orientation === Orientation.HORIZONTAL\r\n ? this.splitview.orthogonalSize\r\n : this.splitview.size;\r\n }\r\n get width() {\r\n return this.splitview.orientation === Orientation.HORIZONTAL\r\n ? this.splitview.size\r\n : this.splitview.orthogonalSize;\r\n }\r\n constructor(options) {\r\n super(options.parentElement);\r\n this._splitviewChangeDisposable = new MutableDisposable();\r\n this._panels = new Map();\r\n this._onDidLayoutfromJSON = new Emitter();\r\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\r\n this._onDidAddView = new Emitter();\r\n this.onDidAddView = this._onDidAddView.event;\r\n this._onDidRemoveView = new Emitter();\r\n this.onDidRemoveView = this._onDidRemoveView.event;\r\n this._onDidLayoutChange = new Emitter();\r\n this.onDidLayoutChange = this._onDidLayoutChange.event;\r\n this._options = options;\r\n if (!options.components) {\r\n options.components = {};\r\n }\r\n if (!options.frameworkComponents) {\r\n options.frameworkComponents = {};\r\n }\r\n this.splitview = new Splitview(this.element, options);\r\n this.addDisposables(this._onDidAddView, this._onDidLayoutfromJSON, this._onDidRemoveView, this._onDidLayoutChange);\r\n }\r\n updateOptions(options) {\r\n const hasOrientationChanged = typeof options.orientation === 'string' &&\r\n this.options.orientation !== options.orientation;\r\n this._options = Object.assign(Object.assign({}, this.options), options);\r\n if (hasOrientationChanged) {\r\n this.splitview.orientation = options.orientation;\r\n }\r\n this.splitview.layout(this.splitview.size, this.splitview.orthogonalSize);\r\n }\r\n focus() {\r\n var _a;\r\n (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();\r\n }\r\n movePanel(from, to) {\r\n this.splitview.moveView(from, to);\r\n }\r\n setVisible(panel, visible) {\r\n const index = this.panels.indexOf(panel);\r\n this.splitview.setViewVisible(index, visible);\r\n }\r\n setActive(view, skipFocus) {\r\n this._activePanel = view;\r\n this.panels\r\n .filter((v) => v !== view)\r\n .forEach((v) => {\r\n v.api._onDidActiveChange.fire({ isActive: false });\r\n if (!skipFocus) {\r\n v.focus();\r\n }\r\n });\r\n view.api._onDidActiveChange.fire({ isActive: true });\r\n if (!skipFocus) {\r\n view.focus();\r\n }\r\n }\r\n removePanel(panel, sizing) {\r\n const item = this._panels.get(panel.id);\r\n if (!item) {\r\n throw new Error(`unknown splitview panel ${panel.id}`);\r\n }\r\n item.dispose();\r\n this._panels.delete(panel.id);\r\n const index = this.panels.findIndex((_) => _ === panel);\r\n const removedView = this.splitview.removeView(index, sizing);\r\n removedView.dispose();\r\n const panels = this.panels;\r\n if (panels.length > 0) {\r\n this.setActive(panels[panels.length - 1]);\r\n }\r\n }\r\n getPanel(id) {\r\n return this.panels.find((view) => view.id === id);\r\n }\r\n addPanel(options) {\r\n if (this._panels.has(options.id)) {\r\n throw new Error(`panel ${options.id} already exists`);\r\n }\r\n const view = createComponent(options.id, options.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkWrapper\r\n ? {\r\n createComponent: this.options.frameworkWrapper.createComponent,\r\n }\r\n : undefined);\r\n view.orientation = this.splitview.orientation;\r\n view.init({\r\n params: options.params || {},\r\n minimumSize: options.minimumSize,\r\n maximumSize: options.maximumSize,\r\n snap: options.snap,\r\n priority: options.priority,\r\n accessor: this,\r\n });\r\n const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;\r\n const index = typeof options.index === 'number' ? options.index : undefined;\r\n this.splitview.addView(view, size, index);\r\n this.doAddView(view);\r\n this.setActive(view);\r\n return view;\r\n }\r\n layout(width, height) {\r\n const [size, orthogonalSize] = this.splitview.orientation === Orientation.HORIZONTAL\r\n ? [width, height]\r\n : [height, width];\r\n this.splitview.layout(size, orthogonalSize);\r\n }\r\n doAddView(view) {\r\n const disposable = view.api.onDidFocusChange((event) => {\r\n if (!event.isFocused) {\r\n return;\r\n }\r\n this.setActive(view, true);\r\n });\r\n this._panels.set(view.id, disposable);\r\n }\r\n toJSON() {\r\n var _a;\r\n const views = this.splitview\r\n .getViews()\r\n .map((view, i) => {\r\n const size = this.splitview.getViewSize(i);\r\n return {\r\n size,\r\n data: view.toJSON(),\r\n snap: !!view.snap,\r\n priority: view.priority,\r\n };\r\n });\r\n return {\r\n views,\r\n activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,\r\n size: this.splitview.size,\r\n orientation: this.splitview.orientation,\r\n };\r\n }\r\n fromJSON(serializedSplitview) {\r\n this.clear();\r\n const { views, orientation, size, activeView } = serializedSplitview;\r\n const queue = [];\r\n // take note of the existing dimensions\r\n const width = this.width;\r\n const height = this.height;\r\n this.splitview = new Splitview(this.element, {\r\n orientation,\r\n proportionalLayout: this.options.proportionalLayout,\r\n descriptor: {\r\n size,\r\n views: views.map((view) => {\r\n const data = view.data;\r\n if (this._panels.has(data.id)) {\r\n throw new Error(`panel ${data.id} already exists`);\r\n }\r\n const panel = createComponent(data.id, data.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkWrapper\r\n ? {\r\n createComponent: this.options.frameworkWrapper\r\n .createComponent,\r\n }\r\n : undefined);\r\n queue.push(() => {\r\n panel.init({\r\n params: data.params || {},\r\n minimumSize: data.minimumSize,\r\n maximumSize: data.maximumSize,\r\n snap: view.snap,\r\n priority: view.priority,\r\n accessor: this,\r\n });\r\n });\r\n panel.orientation = orientation;\r\n this.doAddView(panel);\r\n setTimeout(() => {\r\n // the original onDidAddView events are missed since they are fired before we can subcribe to them\r\n this._onDidAddView.fire(panel);\r\n }, 0);\r\n return { size: view.size, view: panel };\r\n }),\r\n },\r\n });\r\n this.layout(width, height);\r\n queue.forEach((f) => f());\r\n if (typeof activeView === 'string') {\r\n const panel = this.getPanel(activeView);\r\n if (panel) {\r\n this.setActive(panel);\r\n }\r\n }\r\n this._onDidLayoutfromJSON.fire();\r\n }\r\n clear() {\r\n for (const disposable of this._panels.values()) {\r\n disposable.dispose();\r\n }\r\n this._panels.clear();\r\n while (this.splitview.length > 0) {\r\n const view = this.splitview.removeView(0, Sizing.Distribute, true);\r\n view.dispose();\r\n }\r\n }\r\n dispose() {\r\n for (const disposable of this._panels.values()) {\r\n disposable.dispose();\r\n }\r\n this._panels.clear();\r\n const views = this.splitview.getViews();\r\n this._splitviewChangeDisposable.dispose();\r\n this.splitview.dispose();\r\n for (const view of views) {\r\n view.dispose();\r\n }\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=splitviewComponent.js.map","import { addDisposableListener } from '../events';\r\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\r\nimport { toggleClass } from '../dom';\r\nimport { createChevronRightButton, createExpandMoreButton } from '../svg';\r\nexport class DefaultHeader extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor() {\r\n super();\r\n this._expandedIcon = createExpandMoreButton();\r\n this._collapsedIcon = createChevronRightButton();\r\n this.disposable = new MutableDisposable();\r\n this.apiRef = { api: null };\r\n this._element = document.createElement('div');\r\n this.element.className = 'default-header';\r\n this._content = document.createElement('span');\r\n this._expander = document.createElement('div');\r\n this._expander.className = 'dockview-pane-header-icon';\r\n this.element.appendChild(this._expander);\r\n this.element.appendChild(this._content);\r\n this.addDisposables(addDisposableListener(this._element, 'click', () => {\r\n var _a;\r\n (_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.setExpanded(!this.apiRef.api.isExpanded);\r\n }));\r\n }\r\n init(params) {\r\n this.apiRef.api = params.api;\r\n this._content.textContent = params.title;\r\n this.updateIcon();\r\n this.disposable.value = params.api.onDidExpansionChange(() => {\r\n this.updateIcon();\r\n });\r\n }\r\n updateIcon() {\r\n var _a;\r\n const isExpanded = !!((_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.isExpanded);\r\n toggleClass(this._expander, 'collapsed', !isExpanded);\r\n if (isExpanded) {\r\n if (this._expander.contains(this._collapsedIcon)) {\r\n this._collapsedIcon.remove();\r\n }\r\n if (!this._expander.contains(this._expandedIcon)) {\r\n this._expander.appendChild(this._expandedIcon);\r\n }\r\n }\r\n else {\r\n if (this._expander.contains(this._expandedIcon)) {\r\n this._expandedIcon.remove();\r\n }\r\n if (!this._expander.contains(this._collapsedIcon)) {\r\n this._expander.appendChild(this._collapsedIcon);\r\n }\r\n }\r\n }\r\n update(_params) {\r\n //\r\n }\r\n dispose() {\r\n this.disposable.dispose();\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=defaultPaneviewHeader.js.map","import { PaneviewApi } from '../api/component.api';\r\nimport { createComponent } from '../panel/componentFactory';\r\nimport { Emitter } from '../events';\r\nimport { CompositeDisposable, MutableDisposable, } from '../lifecycle';\r\nimport { Orientation, Sizing } from '../splitview/splitview';\r\nimport { Paneview } from './paneview';\r\nimport { DraggablePaneviewPanel, } from './draggablePaneviewPanel';\r\nimport { DefaultHeader } from './defaultPaneviewHeader';\r\nimport { sequentialNumberGenerator } from '../math';\r\nimport { Resizable } from '../resizable';\r\nconst nextLayoutId = sequentialNumberGenerator();\r\nexport class PaneFramework extends DraggablePaneviewPanel {\r\n constructor(options) {\r\n super(options.accessor, options.id, options.component, options.headerComponent, options.orientation, options.isExpanded, options.disableDnd);\r\n this.options = options;\r\n }\r\n getBodyComponent() {\r\n return this.options.body;\r\n }\r\n getHeaderComponent() {\r\n return this.options.header;\r\n }\r\n}\r\nexport class PaneviewComponent extends Resizable {\r\n get id() {\r\n return this._id;\r\n }\r\n get panels() {\r\n return this.paneview.getPanes();\r\n }\r\n set paneview(value) {\r\n this._paneview = value;\r\n this._disposable.value = new CompositeDisposable(this._paneview.onDidChange(() => {\r\n this._onDidLayoutChange.fire(undefined);\r\n }), this._paneview.onDidAddView((e) => this._onDidAddView.fire(e)), this._paneview.onDidRemoveView((e) => this._onDidRemoveView.fire(e)));\r\n }\r\n get paneview() {\r\n return this._paneview;\r\n }\r\n get minimumSize() {\r\n return this.paneview.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.paneview.maximumSize;\r\n }\r\n get height() {\r\n return this.paneview.orientation === Orientation.HORIZONTAL\r\n ? this.paneview.orthogonalSize\r\n : this.paneview.size;\r\n }\r\n get width() {\r\n return this.paneview.orientation === Orientation.HORIZONTAL\r\n ? this.paneview.size\r\n : this.paneview.orthogonalSize;\r\n }\r\n get options() {\r\n return this._options;\r\n }\r\n constructor(options) {\r\n super(options.parentElement);\r\n this._id = nextLayoutId.next();\r\n this._disposable = new MutableDisposable();\r\n this._viewDisposables = new Map();\r\n this._onDidLayoutfromJSON = new Emitter();\r\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\r\n this._onDidLayoutChange = new Emitter();\r\n this.onDidLayoutChange = this._onDidLayoutChange.event;\r\n this._onDidDrop = new Emitter();\r\n this.onDidDrop = this._onDidDrop.event;\r\n this._onDidAddView = new Emitter();\r\n this.onDidAddView = this._onDidAddView.event;\r\n this._onDidRemoveView = new Emitter();\r\n this.onDidRemoveView = this._onDidRemoveView.event;\r\n this.addDisposables(this._onDidLayoutChange, this._onDidLayoutfromJSON, this._onDidDrop, this._onDidAddView, this._onDidRemoveView);\r\n this._options = options;\r\n if (!options.components) {\r\n options.components = {};\r\n }\r\n if (!options.frameworkComponents) {\r\n options.frameworkComponents = {};\r\n }\r\n this.paneview = new Paneview(this.element, {\r\n // only allow paneview in the vertical orientation for now\r\n orientation: Orientation.VERTICAL,\r\n });\r\n this.addDisposables(this._disposable);\r\n }\r\n focus() {\r\n //noop\r\n }\r\n updateOptions(options) {\r\n this._options = Object.assign(Object.assign({}, this.options), options);\r\n }\r\n addPanel(options) {\r\n const body = createComponent(options.id, options.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkWrapper\r\n ? {\r\n createComponent: this.options.frameworkWrapper.body.createComponent,\r\n }\r\n : undefined);\r\n let header;\r\n if (options.headerComponent) {\r\n header = createComponent(options.id, options.headerComponent, this.options.headerComponents || {}, this.options.headerframeworkComponents, this.options.frameworkWrapper\r\n ? {\r\n createComponent: this.options.frameworkWrapper.header\r\n .createComponent,\r\n }\r\n : undefined);\r\n }\r\n else {\r\n header = new DefaultHeader();\r\n }\r\n const view = new PaneFramework({\r\n id: options.id,\r\n component: options.component,\r\n headerComponent: options.headerComponent,\r\n header,\r\n body,\r\n orientation: Orientation.VERTICAL,\r\n isExpanded: !!options.isExpanded,\r\n disableDnd: !!this.options.disableDnd,\r\n accessor: this,\r\n });\r\n this.doAddPanel(view);\r\n const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;\r\n const index = typeof options.index === 'number' ? options.index : undefined;\r\n view.init({\r\n params: options.params || {},\r\n minimumBodySize: options.minimumBodySize,\r\n maximumBodySize: options.maximumBodySize,\r\n isExpanded: options.isExpanded,\r\n title: options.title,\r\n containerApi: new PaneviewApi(this),\r\n });\r\n this.paneview.addPane(view, size, index);\r\n view.orientation = this.paneview.orientation;\r\n return view;\r\n }\r\n removePanel(panel) {\r\n const views = this.panels;\r\n const index = views.findIndex((_) => _ === panel);\r\n this.paneview.removePane(index);\r\n this.doRemovePanel(panel);\r\n }\r\n movePanel(from, to) {\r\n this.paneview.moveView(from, to);\r\n }\r\n getPanel(id) {\r\n return this.panels.find((view) => view.id === id);\r\n }\r\n layout(width, height) {\r\n const [size, orthogonalSize] = this.paneview.orientation === Orientation.HORIZONTAL\r\n ? [width, height]\r\n : [height, width];\r\n this.paneview.layout(size, orthogonalSize);\r\n }\r\n toJSON() {\r\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ||\r\n value === Number.POSITIVE_INFINITY\r\n ? undefined\r\n : value;\r\n const minimum = (value) => (value <= 0 ? undefined : value);\r\n const views = this.paneview\r\n .getPanes()\r\n .map((view, i) => {\r\n const size = this.paneview.getViewSize(i);\r\n return {\r\n size,\r\n data: view.toJSON(),\r\n minimumSize: minimum(view.minimumBodySize),\r\n maximumSize: maximum(view.maximumBodySize),\r\n expanded: view.isExpanded(),\r\n };\r\n });\r\n return {\r\n views,\r\n size: this.paneview.size,\r\n };\r\n }\r\n fromJSON(serializedPaneview) {\r\n this.clear();\r\n const { views, size } = serializedPaneview;\r\n const queue = [];\r\n // take note of the existing dimensions\r\n const width = this.width;\r\n const height = this.height;\r\n this.paneview = new Paneview(this.element, {\r\n orientation: Orientation.VERTICAL,\r\n descriptor: {\r\n size,\r\n views: views.map((view) => {\r\n const data = view.data;\r\n const body = createComponent(data.id, data.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkWrapper\r\n ? {\r\n createComponent: this.options.frameworkWrapper.body\r\n .createComponent,\r\n }\r\n : undefined);\r\n let header;\r\n if (data.headerComponent) {\r\n header = createComponent(data.id, data.headerComponent, this.options.headerComponents || {}, this.options.headerframeworkComponents || {}, this.options.frameworkWrapper\r\n ? {\r\n createComponent: this.options.frameworkWrapper.header\r\n .createComponent,\r\n }\r\n : undefined);\r\n }\r\n else {\r\n header = new DefaultHeader();\r\n }\r\n const panel = new PaneFramework({\r\n id: data.id,\r\n component: data.component,\r\n headerComponent: data.headerComponent,\r\n header,\r\n body,\r\n orientation: Orientation.VERTICAL,\r\n isExpanded: !!view.expanded,\r\n disableDnd: !!this.options.disableDnd,\r\n accessor: this,\r\n });\r\n this.doAddPanel(panel);\r\n queue.push(() => {\r\n panel.init({\r\n params: data.params || {},\r\n minimumBodySize: view.minimumSize,\r\n maximumBodySize: view.maximumSize,\r\n title: data.title,\r\n isExpanded: !!view.expanded,\r\n containerApi: new PaneviewApi(this),\r\n });\r\n panel.orientation = this.paneview.orientation;\r\n });\r\n setTimeout(() => {\r\n // the original onDidAddView events are missed since they are fired before we can subcribe to them\r\n this._onDidAddView.fire(panel);\r\n }, 0);\r\n return { size: view.size, view: panel };\r\n }),\r\n },\r\n });\r\n this.layout(width, height);\r\n queue.forEach((f) => f());\r\n this._onDidLayoutfromJSON.fire();\r\n }\r\n clear() {\r\n for (const [_, value] of this._viewDisposables.entries()) {\r\n value.dispose();\r\n }\r\n this._viewDisposables.clear();\r\n this.paneview.dispose();\r\n }\r\n doAddPanel(panel) {\r\n const disposable = panel.onDidDrop((event) => {\r\n this._onDidDrop.fire(event);\r\n });\r\n this._viewDisposables.set(panel.id, disposable);\r\n }\r\n doRemovePanel(panel) {\r\n const disposable = this._viewDisposables.get(panel.id);\r\n if (disposable) {\r\n disposable.dispose();\r\n this._viewDisposables.delete(panel.id);\r\n }\r\n }\r\n dispose() {\r\n super.dispose();\r\n for (const [_, value] of this._viewDisposables.entries()) {\r\n value.dispose();\r\n }\r\n this._viewDisposables.clear();\r\n this.paneview.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=paneviewComponent.js.map","import { BasePanelView, } from '../gridview/basePanelView';\r\nimport { SplitviewPanelApiImpl } from '../api/splitviewPanelApi';\r\nimport { Orientation } from './splitview';\r\nimport { Emitter } from '../events';\r\nexport class SplitviewPanel extends BasePanelView {\r\n get priority() {\r\n return this._priority;\r\n }\r\n set orientation(value) {\r\n this._orientation = value;\r\n }\r\n get orientation() {\r\n return this._orientation;\r\n }\r\n get minimumSize() {\r\n const size = typeof this._minimumSize === 'function'\r\n ? this._minimumSize()\r\n : this._minimumSize;\r\n if (size !== this._evaluatedMinimumSize) {\r\n this._evaluatedMinimumSize = size;\r\n this.updateConstraints();\r\n }\r\n return size;\r\n }\r\n get maximumSize() {\r\n const size = typeof this._maximumSize === 'function'\r\n ? this._maximumSize()\r\n : this._maximumSize;\r\n if (size !== this._evaluatedMaximumSize) {\r\n this._evaluatedMaximumSize = size;\r\n this.updateConstraints();\r\n }\r\n return size;\r\n }\r\n get snap() {\r\n return this._snap;\r\n }\r\n constructor(id, componentName) {\r\n super(id, componentName, new SplitviewPanelApiImpl(id));\r\n this._evaluatedMinimumSize = 0;\r\n this._evaluatedMaximumSize = Number.POSITIVE_INFINITY;\r\n this._minimumSize = 0;\r\n this._maximumSize = Number.POSITIVE_INFINITY;\r\n this._snap = false;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this.api.initialize(this);\r\n this.addDisposables(this._onDidChange, this.api.onVisibilityChange((event) => {\r\n const { isVisible } = event;\r\n const { accessor } = this._params;\r\n accessor.setVisible(this, isVisible);\r\n }), this.api.onActiveChange(() => {\r\n const { accessor } = this._params;\r\n accessor.setActive(this);\r\n }), this.api.onDidConstraintsChangeInternal((event) => {\r\n if (typeof event.minimumSize === 'number' ||\r\n typeof event.minimumSize === 'function') {\r\n this._minimumSize = event.minimumSize;\r\n }\r\n if (typeof event.maximumSize === 'number' ||\r\n typeof event.maximumSize === 'function') {\r\n this._maximumSize = event.maximumSize;\r\n }\r\n this.updateConstraints();\r\n }), this.api.onDidSizeChange((event) => {\r\n this._onDidChange.fire({ size: event.size });\r\n }));\r\n }\r\n setVisible(isVisible) {\r\n this.api._onDidVisibilityChange.fire({ isVisible });\r\n }\r\n setActive(isActive) {\r\n this.api._onDidActiveChange.fire({ isActive });\r\n }\r\n layout(size, orthogonalSize) {\r\n const [width, height] = this.orientation === Orientation.HORIZONTAL\r\n ? [size, orthogonalSize]\r\n : [orthogonalSize, size];\r\n super.layout(width, height);\r\n }\r\n init(parameters) {\r\n super.init(parameters);\r\n this._priority = parameters.priority;\r\n if (parameters.minimumSize) {\r\n this._minimumSize = parameters.minimumSize;\r\n }\r\n if (parameters.maximumSize) {\r\n this._maximumSize = parameters.maximumSize;\r\n }\r\n if (parameters.snap) {\r\n this._snap = parameters.snap;\r\n }\r\n }\r\n toJSON() {\r\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ||\r\n value === Number.POSITIVE_INFINITY\r\n ? undefined\r\n : value;\r\n const minimum = (value) => (value <= 0 ? undefined : value);\r\n return Object.assign(Object.assign({}, super.toJSON()), { minimumSize: minimum(this.minimumSize), maximumSize: maximum(this.maximumSize) });\r\n }\r\n updateConstraints() {\r\n this.api._onDidConstraintsChange.fire({\r\n maximumSize: this._evaluatedMaximumSize,\r\n minimumSize: this._evaluatedMinimumSize,\r\n });\r\n }\r\n}\r\n//# sourceMappingURL=splitviewPanel.js.map",null,null,null,null,null,null,"/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\") throw new TypeError(\"Object expected.\");\r\n var dispose;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends,\r\n __assign,\r\n __rest,\r\n __decorate,\r\n __param,\r\n __metadata,\r\n __awaiter,\r\n __generator,\r\n __createBinding,\r\n __exportStar,\r\n __values,\r\n __read,\r\n __spread,\r\n __spreadArrays,\r\n __spreadArray,\r\n __await,\r\n __asyncGenerator,\r\n __asyncDelegator,\r\n __asyncValues,\r\n __makeTemplateObject,\r\n __importStar,\r\n __importDefault,\r\n __classPrivateFieldGet,\r\n __classPrivateFieldSet,\r\n __classPrivateFieldIn,\r\n __addDisposableResource,\r\n __disposeResources,\r\n};\r\n",null,null,null,null,null,null,null,null],"names":["Disposable","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","TransferObject","constructor","PanelTransfer","viewId","groupId","panelId","super","this","PaneTransfer","paneId","LocalSelectionTransfer","static","INSTANCE","hasData","proto","clearData","undefined","data","getData","setData","getPanelData","panelTransfer","getInstance","prototype","getPaneData","paneTransfer","exports","DockviewEvent","Event","any","children","listener","disposables","map","child","dispose","forEach","d","Stacktrace","_a","Error","stack","value","print","console","warn","Listener","callback","stacktrace","Emitter","isEnabled","ENABLE_TRACKING","MEMORY_LEAK_WATCHER","clear","options","_listeners","_disposed","event","_event","replay","_last","create","push","index","indexOf","splice","add","fire","e","length","queueMicrotask","delete","addDisposableWindowListener","element","addEventListener","removeEventListener","addDisposableListener","events","Map","size","set","TickDelayedEvent","_onFired","onEvent","timer","clearTimeout","setTimeout","NONE","CompositeDisposable","isDisposed","_isDisposed","args","_disposables","addDisposables","arg","MutableDisposable","_disposable","disposable","createComponent","id","componentName","components","frameworkComponents","createFrameworkComponent","fallback","Component","FrameworkComponent","watchElementResize","cb","observer","ResizeObserver","entires","requestAnimationFrame","firstEntry","observe","unobserve","disconnect","removeClasses","classes","classname","classList","contains","remove","addClasses","toggleClass","className","isToggled","hasClass","isAncestor","testChild","testAncestor","parentNode","tag","Array","slice","call","trackFocus","FocusTracker","_onDidFocus","onDidFocus","_onDidBlur","onDidBlur","hasFocus","activeElement","loosingFocus","onFocus","onBlur","window","_refreshStateHandler","HTMLElement","refreshState","QUASI_PREVENT_DEFAULT_KEY","quasiDefaultPrevented","tail","arr","sequenceEquals","arr1","arr2","i","pushToStart","unshift","pushToEnd","clamp","min","max","Math","sequentialNumberGenerator","next","toString","range","from","to","result","ViewItem","_size","cachedVisibleSize","_cachedVisibleSize","visible","minimumSize","view","viewMinimumSize","maximumSize","viewMaximumSize","priority","snap","enabled","container","pointerEvents","setVisible","toggle","Orientation","SashState","LayoutPriority","Sizing","Distribute","Split","Invisible","Splitview","orthogonalSize","_orthogonalSize","viewItems","proportions","_proportions","orientation","_orientation","tmp","HORIZONTAL","reduce","r","item","Number","POSITIVE_INFINITY","startSnappingEnabled","_startSnappingEnabled","updateSashEnablement","endSnappingEnabled","_endSnappingEnabled","sashes","contentSize","_onDidSashEnd","onDidSashEnd","_onDidAddView","onDidAddView","_onDidRemoveView","onDidRemoveView","resize","delta","sizes","x","lowPriorityIndexes","highPriorityIndexes","overloadMinDelta","NEGATIVE_INFINITY","overloadMaxDelta","snapBefore","snapAfter","upIndexes","downIndexes","upItems","upSizes","downItems","downSizes","minDeltaUp","_","maxDeltaUp","maxDeltaDown","minDeltaDown","minDelta","maxDelta","snapped","snapView","limitDelta","actualDelta","deltaUp","viewDelta","deltaDown","createContainer","proportionalLayout","viewContainer","createViewContainer","sashContainer","createSashContainer","styles","descriptor","views","viewDescriptor","sizing","addView","saveProportions","separatorBorder","removeProperty","setProperty","isViewVisible","setViewVisible","viewItem","distributeEmptySpace","layoutViews","getViewSize","resizeView","indexes","filter","Low","High","round","relayout","getViews","onDidChange","skipLayout","viewSize","newSize","removeChild","sash","onPointerStart","iframes","iframe","start","clientX","clientY","sashIndex","array","fn","firstIndex","s","snapBeforeIndex","findFirstSnapIndex","snapAfterIndex","snappedViewItem","halfSize","floor","onPointerMove","end","sashItem","distributeViewSizes","flexibleViewItems","flexibleSize","removeView","getViewCachedVisibleSize","moveView","layout","previousSize","lowPriorityIndex","emptyDelta","sum","offset","left","top","VERTICAL","width","height","previous","collapsesDown","expandsDown","reverseViews","reverse","collapsesUp","expandsUp","position","snappedBefore","snappedAfter","updateSash","MINIMUM","MAXIMUM","DISABLED","ENABLED","state","orientationClassname","Paneview","splitview","paneItems","skipAnimation","_onDidChange","getPanes","pane","onDidChangeExpansionState","setupAnimation","paneItem","addPane","removePane","skipDispose","animationTimer","LeafNode","minimumWidth","maximumWidth","minimumHeight","maximumHeight","minimumOrthogonalSize","maximumOrthogonalSize","BranchNode","c","Normal","priorities","some","p","childDescriptors","_childrenDisposable","childDescriptor","node","setupChildrenEvents","isChildVisible","setChildVisible","moveChild","_removeChild","_addChild","getChildSize","resizeChild","addChild","getChildCachedVisibleSize","findLeaf","candiateNode","last","flipNode","orthogonal","totalSize","childSize","indexInParent","parentElement","el","firstElementChild","lastElementChild","nextElementSibling","getGridLocation","test","getRelativeLocation","rootOrientation","location","direction","getLocationOrientation","getDirectionOrientation","rest","_index","isGridBranchNode","serializeBranchNode","box","toJSON","Gridview","_root","root","serialize","getView","deserialize","json","deserializer","_deserialize","_deserializeNode","serializedChild","fromJSON","oldRoot","insertOrthogonalSplitviewAtRoot","childReference","progmaticSelect","getNode","_getViews","nodeCachedVisibleSize","path","n","l","parent","parentLocation","pathToParent","grandParent","parentIndex","__","newSiblingSize","newSiblingCachedVisibleSize","newParent","newSibling","nodeToRemove","sibling","isSiblingVisible","siblingSizing","SplitviewApi","component","panels","onDidLayoutFromJSON","onDidLayoutChange","updateOptions","removePanel","panel","focus","getPanel","addPanel","movePanel","PaneviewApi","onDidDrop","emitter","Object","assign","api","GridviewApi","onDidAddPanel","onDidAddGroup","onDidRemovePanel","onDidRemoveGroup","onDidActivePanelChange","onDidActiveGroupChange","groups","force","DockviewApi","totalPanels","onWillDragGroup","onWillDragPanel","activePanel","activeGroup","getGroupPanel","addGroup","moveToNext","moveToPrevious","closeAllGroups","removeGroup","group","getGroup","addFloatingGroup","coord","DragAndDropObserver","callbacks","target","registerListeners","onDragEnter","preventDefault","onDragOver","onDragLeave","onDragEnd","onDrop","directionToPosition","Droptarget","_state","_onDrop","_acceptedTargetZonesSet","Set","acceptedTargetZones","removeDropTarget","clientWidth","clientHeight","rect","currentTarget","getBoundingClientRect","y","quadrant","calculateQuadrant","isAlreadyUsed","canDisplayOverlay","markAsUsed","targetElement","overlayElement","append","toggleClasses","setState","stopPropagation","nativeEvent","setTargetZones","USED_EVENT_ID","_b","_c","_d","isSmallX","isSmallY","isLeft","isRight","isTop","isBottom","rightClass","leftClass","topClass","bottomClass","overlayModel","translate","transform","overlayType","_e","_f","isPercentage","activationSize","maybeNumber","threshold","xp","yp","has","calculateQuadrantAsPercentage","calculateQuadrantAsPixels","ContentContainer","_element","tabIndex","show","display","hide","openPanel","content","focusTracker","_width","_height","closePanel","DockviewDropTargets","DragHandler","dataDisposable","pointerEventsDisposable","_onDragStart","onDragStart","configure","isCancelled","defaultPrevented","dataTransfer","effectAllowed","items","TabDragHandler","accessor","Tab","_onChanged","onChanged","_onDropped","draggable","dragHandler","droptarget","locked","model","setActive","isActive","setContent","part","GroupDragHandler","shiftKey","isFloating","dragEvent","getComputedStyle","bgColor","getPropertyValue","color","ghostElement","backgroundColor","padding","fontSize","lineHeight","borderRadius","textContent","body","setDragImage","addGhostImage","VoidContainer","doSetGroupActive","handler","voidDropTarget","Panel","TabsContainer","tabs","hidden","_hidden","setRightActionsElement","rightActions","rightActionsContainer","setLeftActionsElement","leftActions","leftActionsContainer","tab","selectedIndex","findIndex","_onTabDragStart","onTabDragStart","_onGroupDragStart","onGroupDragStart","singleTabMode","tabContainer","voidContainer","disableFloatingGroups","rootTop","rootLeft","inDragMode","button","_isGroupActive","addTab","tabToRemove","setActivePanel","isActivePanel","find","isFloatingGroupsEnabled","isFloatingWithOnePanel","alreadyFocused","isContentFocused","skipFocus","DockviewGroupPanelModel","_activePanel","_locked","_panels","isEmpty","hasWatermark","watermark","header","tabsContainer","contentContainer","_isFloating","dropTarget","groupPanel","_onDidFloatingStateChange","mostRecentlyUsed","_onMove","onMove","_onDidDrop","_onDidAddPanel","_onDidRemovePanel","_onDidActivePanelChange","hideHeader","handleDropEvent","initialize","doAddPanel","updateContainer","createRightHeaderActionsElement","_rightHeaderActions","init","containerApi","createLeftHeaderActionsElement","_leftHeaderActions","activeView","normalizedIndex","suppressRoll","containsPanel","includes","_params","update","skipSetPanelActive","skipSetGroupActive","updateParentGroup","doSetActivePanel","groupItemOrId","panelToRemove","_removePanel","closeAllPanels","arrPanelCpy","doClose","isPanelActive","updateActions","isGroupActive","doRemovePanel","nextPanel","skipSetActive","hasExistingPanel","updateMru","createWatermarkComponent","showDndOverlay","itemId","Resizable","entry","contentRect","nextLayoutId","toTarget","BaseGrid","_id","_groups","values","gridview","_activeGroup","_onDidLayoutChange","_onDidRemoveGroup","_onDidAddGroup","_onDidActiveGroupChange","_bufferOnDidLayoutChange","isVisible","doAddGroup","doRemoveGroup","get","skipActive","forceResize","PanelApiImpl","isFocused","_isFocused","_isActive","_isVisible","panelUpdatesDisposable","_onDidDimensionChange","onDidDimensionsChange","_onDidChangeFocus","onDidFocusChange","_onFocusEvent","onFocusEvent","_onDidVisibilityChange","onDidVisibilityChange","_onVisibilityChange","onVisibilityChange","_onDidActiveChange","onDidActiveChange","_onActiveChange","onActiveChange","_onUpdateParameters","onUpdateParameters","parameters","params","updateParameters","SplitviewPanelApiImpl","_onDidConstraintsChangeInternal","onDidConstraintsChangeInternal","_onDidConstraintsChange","onDidConstraintsChange","_onDidSizeChange","onDidSizeChange","setConstraints","setSize","PaneviewPanelApiImpl","_pane","_onDidExpansionChange","onDidExpansionChange","_onMouseEnter","onMouseEnter","_onMouseLeave","onMouseLeave","setExpanded","isExpanded","BasePanelView","outline","overflow","getComponent","key","keys","PaneviewPanel","headerSize","_minimumBodySize","_maximumBodySize","minimumBodySize","maximumBodySize","headerVisible","_headerVisible","headerComponent","isHeaderVisible","_onDidChangeExpansionState","_isExpanded","expandedSize","ev","isPanelExpanded","renderOnce","expanded","bodyPart","getBodyComponent","headerPart","getHeaderComponent","title","minHeight","maxHeight","DraggablePaneviewPanel","disableDnd","initDragFeatures","accessorId","existingPanel","allPanels","fromIndex","toIndex","GridviewPanelApiImpl","GridviewPanel","_priority","_snap","_minimumWidth","_evaluatedMinimumWidth","updateConstraints","_minimumHeight","_evaluatedMinimumHeight","_maximumHeight","_evaluatedMaximumHeight","_maximumWidth","_evaluatedMaximumWidth","MAX_SAFE_INTEGER","maximum","minimum","DockviewGroupPanelApiImpl","_group","onDidFloatingStateChange","moveTo","moveGroupOrPanel","DockviewGroupPanel","_model","isPanelOptionsWithPanel","referencePanel","isPanelOptionsWithGroup","referenceGroup","isGroupOptionsWithPanel","isGroupOptionsWithGroup","DockviewPanelApiImpl","isOldGroupActive","_onDidGroupChange","_onDidTitleChange","onDidTitleChange","onDidGroupChange","setTitle","close","DockviewPanel","_title","contentComponent","tabComponent","isPanelVisible","createSvgElementFromPath","svg","createElementNS","setAttributeNS","viewbox","createCloseButton","DefaultTab","_content","_actionContainer","_list","action","render","onGroupChange","onPanelVisibleChange","_isPanelVisible","DockviewPanelModel","_tab","createContentComponent","createTabComponent","frameworkComponentFactory","tabComponents","frameworkTabComponents","defaultTabComponent","DefaultDockviewDeserialzier","panelData","viewData","Watermark","emptySpace","flexGrow","actionsContainer","closeAnchor","_api","_visible","isOneGroup","bringElementToFront","Overlay","minimumInViewportWidth","minimumInViewportHeight","_onDidChangeEnd","onDidChangeEnd","setupResize","setBounds","bounds","containerRect","overlayRect","xOffset","getMinimumWidth","yOffset","getMinimumHeight","setupDrag","dragTarget","move","track","resizeHandleElement","startPosition","originalY","originalHeight","originalX","originalWidth","moveTop","MAX_VALUE","MINIMUM_HEIGHT","moveBottom","moveLeft","MINIMUM_WIDTH","moveRight","DockviewFloatingGroupPanel","overlay","DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE","DockviewComponent","flatMap","_options","nextGroupId","_deserializer","_onWillDragPanel","_onWillDragGroup","_onDidLayoutFromJSON","floatingGroups","updateWatermark","watermarkComponent","watermarkFrameworkComponent","Edge","orthogonalize","createGroup","removeEmptyGroup","skipRemoveGroup","overlayLeft","overlayTop","floatingGroupBounds","minimumWidthWithinViewport","minimumHeightWithinViewport","querySelector","floatingGroupPanel","t","createGroupAtLocation","hasOrientationChanged","hasFloatingGroupOptionsChanged","floating","includePanel","collection","floats","floatingGroup","grid","isArray","createGroupFromSerializedState","serializedFloatingGroups","serializedFloatingGroup","hasActiveGroup","hasActivePanel","entries","findGroup","createPanel","o","relativeLocation","watermarkContainer","destinationGroup","sourceGroupId","sourceItemId","destinationTarget","destinationIndex","sourceGroup","referenceLocation","targetLocation","targetParentLocation","sourceLocation","sourceParentLocation","targetGroup","updatedReferenceLocation","groupItem","dropLocation","moveGroup","isGroupAlreadyFocused","GridviewComponent","_onDidLayoutfromJSON","_key","serializedGridview","queue","registerPanel","f","removedPanel","reference","SplitviewComponent","_splitview","_splitviewChangeDisposable","v","frameworkWrapper","doAddView","serializedSplitview","DefaultHeader","_expandedIcon","_collapsedIcon","apiRef","_expander","updateIcon","PaneFramework","PaneviewComponent","paneview","_paneview","_viewDisposables","headerComponents","headerframeworkComponents","serializedPaneview","SplitviewPanel","_minimumSize","_evaluatedMinimumSize","_maximumSize","_evaluatedMaximumSize","ReactComponentBridge","props","triggerRender","React","useState","_props","useRef","componentProps","useImperativeHandle","current","Date","now","displayName","uniquePortalKeyGenerator","ReactPartContext","createContext","ReactPart","portalStore","context","_initialProps","disposed","createPortal","componentInstance","bridgeComponent","forwardRef","Provider","portal","ReactDOM","addPortal","usePortalsLifecycle","portals","setPortals","useDebugValue","useCallback","existingPortals","ReactPanelContentPart","reactPortalStore","DockviewEmitter","ReactPanelHeaderPart","ReactWatermarkPart","ReactHeaderActionsRendererPart","_part","mutableDisposable","DockviewMutableDisposable","DockviewCompositeDisposable","updatePanels","updateActivePanel","updateGroupActive","createGroupControlElement","store","DEFAULT_REACT_TAB","DockviewReact","domRef","dockviewRef","useEffect","factory","componentId","dockview","hideBorders","leftHeaderActionsComponent","rightHeaderActionsComponent","onReady","SuppressedError","CloseButton","viewBox","focusable","ReactPanelView","reactComponent","SplitviewReact","splitviewRef","ReactGridPanelView","GridviewReact","gridviewRef","PanePanelSection","PaneviewReact","paneviewRef","_componentId","_containerApi","hideClose","closeActionOverride","hasOwnProperty","getOwnPropertySymbols","propertyIsEnumerable","__rest","onClose","onMouseDown","onClick"],"mappings":"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","x_google_ignoreList":[1,60]}
1
+ {"version":3,"file":"dockview.amd.min.js","sources":["../../dockview-core/dist/esm/lifecycle.js","../../../node_modules/style-inject/dist/style-inject.es.js","../../dockview-core/dist/esm/dnd/dataTransfer.js","../../dockview-core/dist/esm/events.js","../../dockview-core/dist/esm/panel/componentFactory.js","../../dockview-core/dist/esm/dom.js","../../dockview-core/dist/esm/array.js","../../dockview-core/dist/esm/math.js","../../dockview-core/dist/esm/splitview/viewItem.js","../../dockview-core/dist/esm/splitview/splitview.js","../../dockview-core/dist/esm/paneview/paneview.js","../../dockview-core/dist/esm/gridview/leafNode.js","../../dockview-core/dist/esm/gridview/branchNode.js","../../dockview-core/dist/esm/gridview/gridview.js","../../dockview-core/dist/esm/api/component.api.js","../../dockview-core/dist/esm/dnd/dnd.js","../../dockview-core/dist/esm/dnd/droptarget.js","../../dockview-core/dist/esm/dockview/components/panel/content.js","../../dockview-core/dist/esm/dockview/types.js","../../dockview-core/dist/esm/dnd/abstractDragHandler.js","../../dockview-core/dist/esm/dockview/components/tab/tab.js","../../dockview-core/dist/esm/dnd/groupDragHandler.js","../../dockview-core/dist/esm/dnd/ghost.js","../../dockview-core/dist/esm/dockview/components/titlebar/voidContainer.js","../../dockview-core/dist/esm/dockview/components/titlebar/tabsContainer.js","../../dockview-core/dist/esm/dockview/dockviewGroupPanelModel.js","../../dockview-core/dist/esm/resizable.js","../../dockview-core/dist/esm/gridview/baseComponentGridview.js","../../dockview-core/dist/esm/api/panelApi.js","../../dockview-core/dist/esm/api/splitviewPanelApi.js","../../dockview-core/dist/esm/api/paneviewPanelApi.js","../../dockview-core/dist/esm/gridview/basePanelView.js","../../dockview-core/dist/esm/paneview/paneviewPanel.js","../../dockview-core/dist/esm/paneview/draggablePaneviewPanel.js","../../dockview-core/dist/esm/api/gridviewPanelApi.js","../../dockview-core/dist/esm/gridview/gridviewPanel.js","../../dockview-core/dist/esm/api/dockviewGroupPanelApi.js","../../dockview-core/dist/esm/dockview/dockviewGroupPanel.js","../../dockview-core/dist/esm/dockview/options.js","../../dockview-core/dist/esm/api/dockviewPanelApi.js","../../dockview-core/dist/esm/dockview/dockviewPanel.js","../../dockview-core/dist/esm/svg.js","../../dockview-core/dist/esm/dockview/components/tab/defaultTab.js","../../dockview-core/dist/esm/dockview/dockviewPanelModel.js","../../dockview-core/dist/esm/dockview/deserializer.js","../../dockview-core/dist/esm/dockview/components/watermark/watermark.js","../../dockview-core/dist/esm/dnd/overlay.js","../../dockview-core/dist/esm/dockview/dockviewFloatingGroupPanel.js","../../dockview-core/dist/esm/dockview/dockviewComponent.js","../../dockview-core/dist/esm/gridview/gridviewComponent.js","../../dockview-core/dist/esm/splitview/splitviewComponent.js","../../dockview-core/dist/esm/paneview/defaultPaneviewHeader.js","../../dockview-core/dist/esm/paneview/paneviewComponent.js","../../dockview-core/dist/esm/splitview/splitviewPanel.js","../../src/react.ts","../../src/dockview/reactContentPart.ts","../../src/dockview/reactHeaderPart.ts","../../src/dockview/reactWatermarkPart.ts","../../src/dockview/headerActionsRenderer.ts","../../src/dockview/dockview.tsx","../../../node_modules/tslib/tslib.es6.js","../../src/svg.tsx","../../src/splitview/view.ts","../../src/splitview/splitview.tsx","../../src/gridview/view.ts","../../src/gridview/gridview.tsx","../../src/paneview/view.tsx","../../src/paneview/paneview.tsx","../../src/dockview/defaultTab.tsx"],"sourcesContent":["export var Disposable;\r\n(function (Disposable) {\r\n Disposable.NONE = {\r\n dispose: () => {\r\n // noop\r\n },\r\n };\r\n})(Disposable || (Disposable = {}));\r\nexport class CompositeDisposable {\r\n get isDisposed() {\r\n return this._isDisposed;\r\n }\r\n constructor(...args) {\r\n this._isDisposed = false;\r\n this._disposables = args;\r\n }\r\n addDisposables(...args) {\r\n args.forEach((arg) => this._disposables.push(arg));\r\n }\r\n dispose() {\r\n this._disposables.forEach((arg) => arg.dispose());\r\n this._isDisposed = true;\r\n }\r\n}\r\nexport class MutableDisposable {\r\n constructor() {\r\n this._disposable = Disposable.NONE;\r\n }\r\n set value(disposable) {\r\n if (this._disposable) {\r\n this._disposable.dispose();\r\n }\r\n this._disposable = disposable;\r\n }\r\n dispose() {\r\n if (this._disposable) {\r\n this._disposable.dispose();\r\n this._disposable = Disposable.NONE;\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=lifecycle.js.map","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","class TransferObject {\r\n constructor() {\r\n //\r\n }\r\n}\r\nexport class PanelTransfer extends TransferObject {\r\n constructor(viewId, groupId, panelId) {\r\n super();\r\n this.viewId = viewId;\r\n this.groupId = groupId;\r\n this.panelId = panelId;\r\n }\r\n}\r\nexport class PaneTransfer extends TransferObject {\r\n constructor(viewId, paneId) {\r\n super();\r\n this.viewId = viewId;\r\n this.paneId = paneId;\r\n }\r\n}\r\n/**\r\n * A singleton to store transfer data during drag & drop operations that are only valid within the application.\r\n */\r\nexport class LocalSelectionTransfer {\r\n constructor() {\r\n // protect against external instantiation\r\n }\r\n static getInstance() {\r\n return LocalSelectionTransfer.INSTANCE;\r\n }\r\n hasData(proto) {\r\n return proto && proto === this.proto;\r\n }\r\n clearData(proto) {\r\n if (this.hasData(proto)) {\r\n this.proto = undefined;\r\n this.data = undefined;\r\n }\r\n }\r\n getData(proto) {\r\n if (this.hasData(proto)) {\r\n return this.data;\r\n }\r\n return undefined;\r\n }\r\n setData(data, proto) {\r\n if (proto) {\r\n this.data = data;\r\n this.proto = proto;\r\n }\r\n }\r\n}\r\nLocalSelectionTransfer.INSTANCE = new LocalSelectionTransfer();\r\nexport function getPanelData() {\r\n const panelTransfer = LocalSelectionTransfer.getInstance();\r\n const isPanelEvent = panelTransfer.hasData(PanelTransfer.prototype);\r\n if (!isPanelEvent) {\r\n return undefined;\r\n }\r\n return panelTransfer.getData(PanelTransfer.prototype)[0];\r\n}\r\nexport function getPaneData() {\r\n const paneTransfer = LocalSelectionTransfer.getInstance();\r\n const isPanelEvent = paneTransfer.hasData(PaneTransfer.prototype);\r\n if (!isPanelEvent) {\r\n return undefined;\r\n }\r\n return paneTransfer.getData(PaneTransfer.prototype)[0];\r\n}\r\n//# sourceMappingURL=dataTransfer.js.map","export var Event;\r\n(function (Event) {\r\n Event.any = (...children) => {\r\n return (listener) => {\r\n const disposables = children.map((child) => child(listener));\r\n return {\r\n dispose: () => {\r\n disposables.forEach((d) => {\r\n d.dispose();\r\n });\r\n },\r\n };\r\n };\r\n };\r\n})(Event || (Event = {}));\r\nclass LeakageMonitor {\r\n constructor() {\r\n this.events = new Map();\r\n }\r\n get size() {\r\n return this.events.size;\r\n }\r\n add(event, stacktrace) {\r\n this.events.set(event, stacktrace);\r\n }\r\n delete(event) {\r\n this.events.delete(event);\r\n }\r\n clear() {\r\n this.events.clear();\r\n }\r\n}\r\nclass Stacktrace {\r\n static create() {\r\n var _a;\r\n return new Stacktrace((_a = new Error().stack) !== null && _a !== void 0 ? _a : '');\r\n }\r\n constructor(value) {\r\n this.value = value;\r\n }\r\n print() {\r\n console.warn(this.value);\r\n }\r\n}\r\nclass Listener {\r\n constructor(callback, stacktrace) {\r\n this.callback = callback;\r\n this.stacktrace = stacktrace;\r\n }\r\n}\r\n// relatively simple event emitter taken from https://github.com/microsoft/vscode/blob/master/src/vs/base/common/event.ts\r\nexport class Emitter {\r\n static setLeakageMonitorEnabled(isEnabled) {\r\n if (isEnabled !== Emitter.ENABLE_TRACKING) {\r\n Emitter.MEMORY_LEAK_WATCHER.clear();\r\n }\r\n Emitter.ENABLE_TRACKING = isEnabled;\r\n }\r\n constructor(options) {\r\n this.options = options;\r\n this._listeners = [];\r\n this._disposed = false;\r\n }\r\n get event() {\r\n if (!this._event) {\r\n this._event = (callback) => {\r\n var _a;\r\n if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.replay) && this._last !== undefined) {\r\n callback(this._last);\r\n }\r\n const listener = new Listener(callback, Emitter.ENABLE_TRACKING ? Stacktrace.create() : undefined);\r\n this._listeners.push(listener);\r\n return {\r\n dispose: () => {\r\n const index = this._listeners.indexOf(listener);\r\n if (index > -1) {\r\n this._listeners.splice(index, 1);\r\n }\r\n else if (Emitter.ENABLE_TRACKING) {\r\n // console.warn(\r\n // `Listener already disposed`,\r\n // Stacktrace.create().print()\r\n // );\r\n }\r\n },\r\n };\r\n };\r\n if (Emitter.ENABLE_TRACKING) {\r\n Emitter.MEMORY_LEAK_WATCHER.add(this._event, Stacktrace.create());\r\n }\r\n }\r\n return this._event;\r\n }\r\n fire(e) {\r\n this._last = e;\r\n for (const listener of this._listeners) {\r\n listener.callback(e);\r\n }\r\n }\r\n dispose() {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n if (this._listeners.length > 0) {\r\n if (Emitter.ENABLE_TRACKING) {\r\n queueMicrotask(() => {\r\n var _a;\r\n // don't check until stack of execution is completed to allow for out-of-order disposals within the same execution block\r\n for (const listener of this._listeners) {\r\n console.warn((_a = listener.stacktrace) === null || _a === void 0 ? void 0 : _a.print());\r\n }\r\n });\r\n }\r\n this._listeners = [];\r\n }\r\n if (Emitter.ENABLE_TRACKING && this._event) {\r\n Emitter.MEMORY_LEAK_WATCHER.delete(this._event);\r\n }\r\n }\r\n }\r\n}\r\nEmitter.ENABLE_TRACKING = false;\r\nEmitter.MEMORY_LEAK_WATCHER = new LeakageMonitor();\r\nexport function addDisposableWindowListener(element, type, listener, options) {\r\n element.addEventListener(type, listener, options);\r\n return {\r\n dispose: () => {\r\n element.removeEventListener(type, listener, options);\r\n },\r\n };\r\n}\r\nexport function addDisposableListener(element, type, listener, options) {\r\n element.addEventListener(type, listener, options);\r\n return {\r\n dispose: () => {\r\n element.removeEventListener(type, listener, options);\r\n },\r\n };\r\n}\r\nexport class TickDelayedEvent {\r\n constructor() {\r\n this._onFired = new Emitter();\r\n this.onEvent = this._onFired.event;\r\n }\r\n fire() {\r\n if (this.timer) {\r\n clearTimeout(this.timer);\r\n }\r\n this.timer = setTimeout(() => {\r\n this._onFired.fire();\r\n clearTimeout(this.timer);\r\n });\r\n }\r\n dispose() {\r\n this._onFired.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=events.js.map","export function createComponent(id, componentName, components = {}, frameworkComponents = {}, createFrameworkComponent, fallback) {\r\n const Component = typeof componentName === 'string'\r\n ? components[componentName]\r\n : undefined;\r\n const FrameworkComponent = typeof componentName === 'string'\r\n ? frameworkComponents[componentName]\r\n : undefined;\r\n if (Component && FrameworkComponent) {\r\n throw new Error(`Cannot create '${id}'. component '${componentName}' registered as both a component and frameworkComponent`);\r\n }\r\n if (FrameworkComponent) {\r\n if (!createFrameworkComponent) {\r\n throw new Error(`Cannot create '${id}' for framework component '${componentName}'. you must register a frameworkPanelWrapper to use framework components`);\r\n }\r\n return createFrameworkComponent.createComponent(id, componentName, FrameworkComponent);\r\n }\r\n if (!Component) {\r\n if (fallback) {\r\n return fallback();\r\n }\r\n throw new Error(`Cannot create '${id}', no component '${componentName}' provided`);\r\n }\r\n return new Component(id, componentName);\r\n}\r\n//# sourceMappingURL=componentFactory.js.map","import { Emitter, addDisposableListener, addDisposableWindowListener, } from './events';\r\nimport { CompositeDisposable } from './lifecycle';\r\nexport function watchElementResize(element, cb) {\r\n const observer = new ResizeObserver((entires) => {\r\n /**\r\n * Fast browser window resize produces Error: ResizeObserver loop limit exceeded.\r\n * The error isn't visible in browser console, doesn't affect functionality, but degrades performance.\r\n * See https://stackoverflow.com/questions/49384120/resizeobserver-loop-limit-exceeded/58701523#58701523\r\n */\r\n requestAnimationFrame(() => {\r\n const firstEntry = entires[0];\r\n cb(firstEntry);\r\n });\r\n });\r\n observer.observe(element);\r\n return {\r\n dispose: () => {\r\n observer.unobserve(element);\r\n observer.disconnect();\r\n },\r\n };\r\n}\r\nexport const removeClasses = (element, ...classes) => {\r\n for (const classname of classes) {\r\n if (element.classList.contains(classname)) {\r\n element.classList.remove(classname);\r\n }\r\n }\r\n};\r\nexport const addClasses = (element, ...classes) => {\r\n for (const classname of classes) {\r\n if (!element.classList.contains(classname)) {\r\n element.classList.add(classname);\r\n }\r\n }\r\n};\r\nexport const toggleClass = (element, className, isToggled) => {\r\n const hasClass = element.classList.contains(className);\r\n if (isToggled && !hasClass) {\r\n element.classList.add(className);\r\n }\r\n if (!isToggled && hasClass) {\r\n element.classList.remove(className);\r\n }\r\n};\r\nexport function isAncestor(testChild, testAncestor) {\r\n while (testChild) {\r\n if (testChild === testAncestor) {\r\n return true;\r\n }\r\n testChild = testChild.parentNode;\r\n }\r\n return false;\r\n}\r\nexport function getElementsByTagName(tag) {\r\n return Array.prototype.slice.call(document.getElementsByTagName(tag), 0);\r\n}\r\nexport function trackFocus(element) {\r\n return new FocusTracker(element);\r\n}\r\n/**\r\n * Track focus on an element. Ensure tabIndex is set when an HTMLElement is not focusable by default\r\n */\r\nclass FocusTracker extends CompositeDisposable {\r\n constructor(element) {\r\n super();\r\n this._onDidFocus = new Emitter();\r\n this.onDidFocus = this._onDidFocus.event;\r\n this._onDidBlur = new Emitter();\r\n this.onDidBlur = this._onDidBlur.event;\r\n this.addDisposables(this._onDidFocus, this._onDidBlur);\r\n let hasFocus = isAncestor(document.activeElement, element);\r\n let loosingFocus = false;\r\n const onFocus = () => {\r\n loosingFocus = false;\r\n if (!hasFocus) {\r\n hasFocus = true;\r\n this._onDidFocus.fire();\r\n }\r\n };\r\n const onBlur = () => {\r\n if (hasFocus) {\r\n loosingFocus = true;\r\n window.setTimeout(() => {\r\n if (loosingFocus) {\r\n loosingFocus = false;\r\n hasFocus = false;\r\n this._onDidBlur.fire();\r\n }\r\n }, 0);\r\n }\r\n };\r\n this._refreshStateHandler = () => {\r\n const currentNodeHasFocus = isAncestor(document.activeElement, element);\r\n if (currentNodeHasFocus !== hasFocus) {\r\n if (hasFocus) {\r\n onBlur();\r\n }\r\n else {\r\n onFocus();\r\n }\r\n }\r\n };\r\n if (element instanceof HTMLElement) {\r\n this.addDisposables(addDisposableListener(element, 'focus', onFocus, true));\r\n this.addDisposables(addDisposableListener(element, 'blur', onBlur, true));\r\n }\r\n else {\r\n this.addDisposables(addDisposableWindowListener(element, 'focus', onFocus, true));\r\n this.addDisposables(addDisposableWindowListener(element, 'blur', onBlur, true));\r\n }\r\n }\r\n refreshState() {\r\n this._refreshStateHandler();\r\n }\r\n}\r\n// quasi: apparently, but not really; seemingly\r\nconst QUASI_PREVENT_DEFAULT_KEY = 'dv-quasiPreventDefault';\r\n// mark an event directly for other listeners to check\r\nexport function quasiPreventDefault(event) {\r\n event[QUASI_PREVENT_DEFAULT_KEY] = true;\r\n}\r\n// check if this event has been marked\r\nexport function quasiDefaultPrevented(event) {\r\n return event[QUASI_PREVENT_DEFAULT_KEY];\r\n}\r\n//# sourceMappingURL=dom.js.map","export function tail(arr) {\r\n if (arr.length === 0) {\r\n throw new Error('Invalid tail call');\r\n }\r\n return [arr.slice(0, arr.length - 1), arr[arr.length - 1]];\r\n}\r\nexport function last(arr) {\r\n return arr.length > 0 ? arr[arr.length - 1] : undefined;\r\n}\r\nexport function sequenceEquals(arr1, arr2) {\r\n if (arr1.length !== arr2.length) {\r\n return false;\r\n }\r\n for (let i = 0; i < arr1.length; i++) {\r\n if (arr1[i] !== arr2[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * Pushes an element to the start of the array, if found.\r\n */\r\nexport function pushToStart(arr, value) {\r\n const index = arr.indexOf(value);\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n arr.unshift(value);\r\n }\r\n}\r\n/**\r\n * Pushes an element to the end of the array, if found.\r\n */\r\nexport function pushToEnd(arr, value) {\r\n const index = arr.indexOf(value);\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n arr.push(value);\r\n }\r\n}\r\nexport function firstIndex(array, fn) {\r\n for (let i = 0; i < array.length; i++) {\r\n const element = array[i];\r\n if (fn(element)) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\nexport function remove(array, value) {\r\n const index = array.findIndex((t) => t === value);\r\n if (index > -1) {\r\n array.splice(index, 1);\r\n return true;\r\n }\r\n return false;\r\n}\r\n//# sourceMappingURL=array.js.map","export const clamp = (value, min, max) => {\r\n if (min > max) {\r\n throw new Error(`${min} > ${max} is an invalid condition`);\r\n }\r\n return Math.min(max, Math.max(value, min));\r\n};\r\nexport const sequentialNumberGenerator = () => {\r\n let value = 1;\r\n return { next: () => (value++).toString() };\r\n};\r\nexport const range = (from, to) => {\r\n const result = [];\r\n if (typeof to !== 'number') {\r\n to = from;\r\n from = 0;\r\n }\r\n if (from <= to) {\r\n for (let i = from; i < to; i++) {\r\n result.push(i);\r\n }\r\n }\r\n else {\r\n for (let i = from; i > to; i--) {\r\n result.push(i);\r\n }\r\n }\r\n return result;\r\n};\r\n//# sourceMappingURL=math.js.map","import { clamp } from '../math';\r\nexport class ViewItem {\r\n set size(size) {\r\n this._size = size;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n get cachedVisibleSize() {\r\n return this._cachedVisibleSize;\r\n }\r\n get visible() {\r\n return typeof this._cachedVisibleSize === 'undefined';\r\n }\r\n get minimumSize() {\r\n return this.visible ? this.view.minimumSize : 0;\r\n }\r\n get viewMinimumSize() {\r\n return this.view.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.visible ? this.view.maximumSize : 0;\r\n }\r\n get viewMaximumSize() {\r\n return this.view.maximumSize;\r\n }\r\n get priority() {\r\n return this.view.priority;\r\n }\r\n get snap() {\r\n return !!this.view.snap;\r\n }\r\n set enabled(enabled) {\r\n this.container.style.pointerEvents = enabled ? '' : 'none';\r\n }\r\n constructor(container, view, size, disposable) {\r\n this.container = container;\r\n this.view = view;\r\n this.disposable = disposable;\r\n this._cachedVisibleSize = undefined;\r\n if (typeof size === 'number') {\r\n this._size = size;\r\n this._cachedVisibleSize = undefined;\r\n container.classList.add('visible');\r\n }\r\n else {\r\n this._size = 0;\r\n this._cachedVisibleSize = size.cachedVisibleSize;\r\n }\r\n }\r\n setVisible(visible, size) {\r\n var _a;\r\n if (visible === this.visible) {\r\n return;\r\n }\r\n if (visible) {\r\n this.size = clamp((_a = this._cachedVisibleSize) !== null && _a !== void 0 ? _a : 0, this.viewMinimumSize, this.viewMaximumSize);\r\n this._cachedVisibleSize = undefined;\r\n }\r\n else {\r\n this._cachedVisibleSize =\r\n typeof size === 'number' ? size : this.size;\r\n this.size = 0;\r\n }\r\n this.container.classList.toggle('visible', visible);\r\n if (this.view.setVisible) {\r\n this.view.setVisible(visible);\r\n }\r\n }\r\n dispose() {\r\n this.disposable.dispose();\r\n return this.view;\r\n }\r\n}\r\n//# sourceMappingURL=viewItem.js.map","/*---------------------------------------------------------------------------------------------\r\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\r\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/splitview\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { removeClasses, addClasses, toggleClass, getElementsByTagName, } from '../dom';\r\nimport { Emitter } from '../events';\r\nimport { pushToStart, pushToEnd, firstIndex } from '../array';\r\nimport { range, clamp } from '../math';\r\nimport { ViewItem } from './viewItem';\r\nexport var Orientation;\r\n(function (Orientation) {\r\n Orientation[\"HORIZONTAL\"] = \"HORIZONTAL\";\r\n Orientation[\"VERTICAL\"] = \"VERTICAL\";\r\n})(Orientation || (Orientation = {}));\r\nexport var SashState;\r\n(function (SashState) {\r\n SashState[SashState[\"MAXIMUM\"] = 0] = \"MAXIMUM\";\r\n SashState[SashState[\"MINIMUM\"] = 1] = \"MINIMUM\";\r\n SashState[SashState[\"DISABLED\"] = 2] = \"DISABLED\";\r\n SashState[SashState[\"ENABLED\"] = 3] = \"ENABLED\";\r\n})(SashState || (SashState = {}));\r\nexport var LayoutPriority;\r\n(function (LayoutPriority) {\r\n LayoutPriority[\"Low\"] = \"low\";\r\n LayoutPriority[\"High\"] = \"high\";\r\n LayoutPriority[\"Normal\"] = \"normal\";\r\n})(LayoutPriority || (LayoutPriority = {}));\r\nexport var Sizing;\r\n(function (Sizing) {\r\n Sizing.Distribute = { type: 'distribute' };\r\n function Split(index) {\r\n return { type: 'split', index };\r\n }\r\n Sizing.Split = Split;\r\n function Invisible(cachedVisibleSize) {\r\n return { type: 'invisible', cachedVisibleSize };\r\n }\r\n Sizing.Invisible = Invisible;\r\n})(Sizing || (Sizing = {}));\r\nexport class Splitview {\r\n get size() {\r\n return this._size;\r\n }\r\n set size(value) {\r\n this._size = value;\r\n }\r\n get orthogonalSize() {\r\n return this._orthogonalSize;\r\n }\r\n set orthogonalSize(value) {\r\n this._orthogonalSize = value;\r\n }\r\n get length() {\r\n return this.viewItems.length;\r\n }\r\n get proportions() {\r\n return this._proportions ? [...this._proportions] : undefined;\r\n }\r\n get orientation() {\r\n return this._orientation;\r\n }\r\n set orientation(value) {\r\n this._orientation = value;\r\n const tmp = this.size;\r\n this.size = this.orthogonalSize;\r\n this.orthogonalSize = tmp;\r\n removeClasses(this.element, 'horizontal', 'vertical');\r\n this.element.classList.add(this.orientation == Orientation.HORIZONTAL\r\n ? 'horizontal'\r\n : 'vertical');\r\n }\r\n get minimumSize() {\r\n return this.viewItems.reduce((r, item) => r + item.minimumSize, 0);\r\n }\r\n get maximumSize() {\r\n return this.length === 0\r\n ? Number.POSITIVE_INFINITY\r\n : this.viewItems.reduce((r, item) => r + item.maximumSize, 0);\r\n }\r\n get startSnappingEnabled() {\r\n return this._startSnappingEnabled;\r\n }\r\n set startSnappingEnabled(startSnappingEnabled) {\r\n if (this._startSnappingEnabled === startSnappingEnabled) {\r\n return;\r\n }\r\n this._startSnappingEnabled = startSnappingEnabled;\r\n this.updateSashEnablement();\r\n }\r\n get endSnappingEnabled() {\r\n return this._endSnappingEnabled;\r\n }\r\n set endSnappingEnabled(endSnappingEnabled) {\r\n if (this._endSnappingEnabled === endSnappingEnabled) {\r\n return;\r\n }\r\n this._endSnappingEnabled = endSnappingEnabled;\r\n this.updateSashEnablement();\r\n }\r\n constructor(container, options) {\r\n this.container = container;\r\n this.viewItems = [];\r\n this.sashes = [];\r\n this._size = 0;\r\n this._orthogonalSize = 0;\r\n this.contentSize = 0;\r\n this._proportions = undefined;\r\n this._startSnappingEnabled = true;\r\n this._endSnappingEnabled = true;\r\n this._onDidSashEnd = new Emitter();\r\n this.onDidSashEnd = this._onDidSashEnd.event;\r\n this._onDidAddView = new Emitter();\r\n this.onDidAddView = this._onDidAddView.event;\r\n this._onDidRemoveView = new Emitter();\r\n this.onDidRemoveView = this._onDidRemoveView.event;\r\n this.resize = (index, delta, sizes = this.viewItems.map((x) => x.size), lowPriorityIndexes, highPriorityIndexes, overloadMinDelta = Number.NEGATIVE_INFINITY, overloadMaxDelta = Number.POSITIVE_INFINITY, snapBefore, snapAfter) => {\r\n if (index < 0 || index > this.viewItems.length) {\r\n return 0;\r\n }\r\n const upIndexes = range(index, -1);\r\n const downIndexes = range(index + 1, this.viewItems.length);\r\n //\r\n if (highPriorityIndexes) {\r\n for (const i of highPriorityIndexes) {\r\n pushToStart(upIndexes, i);\r\n pushToStart(downIndexes, i);\r\n }\r\n }\r\n if (lowPriorityIndexes) {\r\n for (const i of lowPriorityIndexes) {\r\n pushToEnd(upIndexes, i);\r\n pushToEnd(downIndexes, i);\r\n }\r\n }\r\n //\r\n const upItems = upIndexes.map((i) => this.viewItems[i]);\r\n const upSizes = upIndexes.map((i) => sizes[i]);\r\n //\r\n const downItems = downIndexes.map((i) => this.viewItems[i]);\r\n const downSizes = downIndexes.map((i) => sizes[i]);\r\n //\r\n const minDeltaUp = upIndexes.reduce((_, i) => _ + this.viewItems[i].minimumSize - sizes[i], 0);\r\n const maxDeltaUp = upIndexes.reduce((_, i) => _ + this.viewItems[i].maximumSize - sizes[i], 0);\r\n //\r\n const maxDeltaDown = downIndexes.length === 0\r\n ? Number.POSITIVE_INFINITY\r\n : downIndexes.reduce((_, i) => _ + sizes[i] - this.viewItems[i].minimumSize, 0);\r\n const minDeltaDown = downIndexes.length === 0\r\n ? Number.NEGATIVE_INFINITY\r\n : downIndexes.reduce((_, i) => _ + sizes[i] - this.viewItems[i].maximumSize, 0);\r\n //\r\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\r\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\r\n //\r\n let snapped = false;\r\n if (snapBefore) {\r\n const snapView = this.viewItems[snapBefore.index];\r\n const visible = delta >= snapBefore.limitDelta;\r\n snapped = visible !== snapView.visible;\r\n snapView.setVisible(visible, snapBefore.size);\r\n }\r\n if (!snapped && snapAfter) {\r\n const snapView = this.viewItems[snapAfter.index];\r\n const visible = delta < snapAfter.limitDelta;\r\n snapped = visible !== snapView.visible;\r\n snapView.setVisible(visible, snapAfter.size);\r\n }\r\n if (snapped) {\r\n return this.resize(index, delta, sizes, lowPriorityIndexes, highPriorityIndexes, overloadMinDelta, overloadMaxDelta);\r\n }\r\n //\r\n const tentativeDelta = clamp(delta, minDelta, maxDelta);\r\n let actualDelta = 0;\r\n //\r\n let deltaUp = tentativeDelta;\r\n for (let i = 0; i < upItems.length; i++) {\r\n const item = upItems[i];\r\n const size = clamp(upSizes[i] + deltaUp, item.minimumSize, item.maximumSize);\r\n const viewDelta = size - upSizes[i];\r\n actualDelta += viewDelta;\r\n deltaUp -= viewDelta;\r\n item.size = size;\r\n }\r\n //\r\n let deltaDown = actualDelta;\r\n for (let i = 0; i < downItems.length; i++) {\r\n const item = downItems[i];\r\n const size = clamp(downSizes[i] - deltaDown, item.minimumSize, item.maximumSize);\r\n const viewDelta = size - downSizes[i];\r\n deltaDown += viewDelta;\r\n item.size = size;\r\n }\r\n //\r\n return delta;\r\n };\r\n this._orientation = options.orientation;\r\n this.element = this.createContainer();\r\n this.proportionalLayout =\r\n options.proportionalLayout === undefined\r\n ? true\r\n : !!options.proportionalLayout;\r\n this.viewContainer = this.createViewContainer();\r\n this.sashContainer = this.createSashContainer();\r\n this.element.appendChild(this.sashContainer);\r\n this.element.appendChild(this.viewContainer);\r\n this.container.appendChild(this.element);\r\n this.style(options.styles);\r\n // We have an existing set of view, add them now\r\n if (options.descriptor) {\r\n this._size = options.descriptor.size;\r\n options.descriptor.views.forEach((viewDescriptor, index) => {\r\n const sizing = viewDescriptor.visible === undefined ||\r\n viewDescriptor.visible\r\n ? viewDescriptor.size\r\n : {\r\n type: 'invisible',\r\n cachedVisibleSize: viewDescriptor.size,\r\n };\r\n const view = viewDescriptor.view;\r\n this.addView(view, sizing, index, true\r\n // true skip layout\r\n );\r\n });\r\n // Initialize content size and proportions for first layout\r\n this.contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n this.saveProportions();\r\n }\r\n }\r\n style(styles) {\r\n if ((styles === null || styles === void 0 ? void 0 : styles.separatorBorder) === 'transparent') {\r\n removeClasses(this.element, 'separator-border');\r\n this.element.style.removeProperty('--dv-separator-border');\r\n }\r\n else {\r\n addClasses(this.element, 'separator-border');\r\n if (styles === null || styles === void 0 ? void 0 : styles.separatorBorder) {\r\n this.element.style.setProperty('--dv-separator-border', styles.separatorBorder);\r\n }\r\n }\r\n }\r\n isViewVisible(index) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n throw new Error('Index out of bounds');\r\n }\r\n const viewItem = this.viewItems[index];\r\n return viewItem.visible;\r\n }\r\n setViewVisible(index, visible) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n throw new Error('Index out of bounds');\r\n }\r\n toggleClass(this.container, 'visible', visible);\r\n const viewItem = this.viewItems[index];\r\n toggleClass(this.container, 'visible', visible);\r\n viewItem.setVisible(visible, viewItem.size);\r\n this.distributeEmptySpace(index);\r\n this.layoutViews();\r\n this.saveProportions();\r\n }\r\n getViewSize(index) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n return -1;\r\n }\r\n return this.viewItems[index].size;\r\n }\r\n resizeView(index, size) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n return;\r\n }\r\n const indexes = range(this.viewItems.length).filter((i) => i !== index);\r\n const lowPriorityIndexes = [\r\n ...indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low),\r\n index,\r\n ];\r\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\r\n const item = this.viewItems[index];\r\n size = Math.round(size);\r\n size = clamp(size, item.minimumSize, Math.min(item.maximumSize, this._size));\r\n item.size = size;\r\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\r\n }\r\n getViews() {\r\n return this.viewItems.map((x) => x.view);\r\n }\r\n onDidChange(item, size) {\r\n const index = this.viewItems.indexOf(item);\r\n if (index < 0 || index >= this.viewItems.length) {\r\n return;\r\n }\r\n size = typeof size === 'number' ? size : item.size;\r\n size = clamp(size, item.minimumSize, item.maximumSize);\r\n item.size = size;\r\n const indexes = range(this.viewItems.length).filter((i) => i !== index);\r\n const lowPriorityIndexes = [\r\n ...indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low),\r\n index,\r\n ];\r\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\r\n /**\r\n * add this view we are changing to the low-index list since we have determined the size\r\n * here and don't want it changed\r\n */\r\n this.relayout([...lowPriorityIndexes, index], highPriorityIndexes);\r\n }\r\n addView(view, size = { type: 'distribute' }, index = this.viewItems.length, skipLayout) {\r\n const container = document.createElement('div');\r\n container.className = 'view';\r\n container.appendChild(view.element);\r\n let viewSize;\r\n if (typeof size === 'number') {\r\n viewSize = size;\r\n }\r\n else if (size.type === 'split') {\r\n viewSize = this.getViewSize(size.index) / 2;\r\n }\r\n else if (size.type === 'invisible') {\r\n viewSize = { cachedVisibleSize: size.cachedVisibleSize };\r\n }\r\n else {\r\n viewSize = view.minimumSize;\r\n }\r\n const disposable = view.onDidChange((newSize) => this.onDidChange(viewItem, newSize.size));\r\n const viewItem = new ViewItem(container, view, viewSize, {\r\n dispose: () => {\r\n disposable.dispose();\r\n this.viewContainer.removeChild(container);\r\n },\r\n });\r\n if (index === this.viewItems.length) {\r\n this.viewContainer.appendChild(container);\r\n }\r\n else {\r\n this.viewContainer.insertBefore(container, this.viewContainer.children.item(index));\r\n }\r\n this.viewItems.splice(index, 0, viewItem);\r\n if (this.viewItems.length > 1) {\r\n //add sash\r\n const sash = document.createElement('div');\r\n sash.className = 'sash';\r\n const onPointerStart = (event) => {\r\n for (const item of this.viewItems) {\r\n item.enabled = false;\r\n }\r\n const iframes = [\r\n ...getElementsByTagName('iframe'),\r\n ...getElementsByTagName('webview'),\r\n ];\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'none';\r\n }\r\n const start = this._orientation === Orientation.HORIZONTAL\r\n ? event.clientX\r\n : event.clientY;\r\n const sashIndex = firstIndex(this.sashes, (s) => s.container === sash);\r\n //\r\n const sizes = this.viewItems.map((x) => x.size);\r\n //\r\n let snapBefore;\r\n let snapAfter;\r\n const upIndexes = range(sashIndex, -1);\r\n const downIndexes = range(sashIndex + 1, this.viewItems.length);\r\n const minDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].minimumSize - sizes[i]), 0);\r\n const maxDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].viewMaximumSize - sizes[i]), 0);\r\n const maxDeltaDown = downIndexes.length === 0\r\n ? Number.POSITIVE_INFINITY\r\n : downIndexes.reduce((r, i) => r +\r\n (sizes[i] - this.viewItems[i].minimumSize), 0);\r\n const minDeltaDown = downIndexes.length === 0\r\n ? Number.NEGATIVE_INFINITY\r\n : downIndexes.reduce((r, i) => r +\r\n (sizes[i] -\r\n this.viewItems[i].viewMaximumSize), 0);\r\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\r\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\r\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\r\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\r\n if (typeof snapBeforeIndex === 'number') {\r\n const snappedViewItem = this.viewItems[snapBeforeIndex];\r\n const halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);\r\n snapBefore = {\r\n index: snapBeforeIndex,\r\n limitDelta: snappedViewItem.visible\r\n ? minDelta - halfSize\r\n : minDelta + halfSize,\r\n size: snappedViewItem.size,\r\n };\r\n }\r\n if (typeof snapAfterIndex === 'number') {\r\n const snappedViewItem = this.viewItems[snapAfterIndex];\r\n const halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);\r\n snapAfter = {\r\n index: snapAfterIndex,\r\n limitDelta: snappedViewItem.visible\r\n ? maxDelta + halfSize\r\n : maxDelta - halfSize,\r\n size: snappedViewItem.size,\r\n };\r\n }\r\n const onPointerMove = (event) => {\r\n const current = this._orientation === Orientation.HORIZONTAL\r\n ? event.clientX\r\n : event.clientY;\r\n const delta = current - start;\r\n this.resize(sashIndex, delta, sizes, undefined, undefined, minDelta, maxDelta, snapBefore, snapAfter);\r\n this.distributeEmptySpace();\r\n this.layoutViews();\r\n };\r\n const end = () => {\r\n for (const item of this.viewItems) {\r\n item.enabled = true;\r\n }\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'auto';\r\n }\r\n this.saveProportions();\r\n document.removeEventListener('pointermove', onPointerMove);\r\n document.removeEventListener('pointerup', end);\r\n document.removeEventListener('pointercancel', end);\r\n this._onDidSashEnd.fire(undefined);\r\n };\r\n document.addEventListener('pointermove', onPointerMove);\r\n document.addEventListener('pointerup', end);\r\n document.addEventListener('pointercancel', end);\r\n };\r\n sash.addEventListener('pointerdown', onPointerStart);\r\n const sashItem = {\r\n container: sash,\r\n disposable: () => {\r\n sash.removeEventListener('pointerdown', onPointerStart);\r\n this.sashContainer.removeChild(sash);\r\n },\r\n };\r\n this.sashContainer.appendChild(sash);\r\n this.sashes.push(sashItem);\r\n }\r\n if (!skipLayout) {\r\n this.relayout([index]);\r\n }\r\n if (!skipLayout &&\r\n typeof size !== 'number' &&\r\n size.type === 'distribute') {\r\n this.distributeViewSizes();\r\n }\r\n this._onDidAddView.fire(view);\r\n }\r\n distributeViewSizes() {\r\n const flexibleViewItems = [];\r\n let flexibleSize = 0;\r\n for (const item of this.viewItems) {\r\n if (item.maximumSize - item.minimumSize > 0) {\r\n flexibleViewItems.push(item);\r\n flexibleSize += item.size;\r\n }\r\n }\r\n const size = Math.floor(flexibleSize / flexibleViewItems.length);\r\n for (const item of flexibleViewItems) {\r\n item.size = clamp(size, item.minimumSize, item.maximumSize);\r\n }\r\n const indexes = range(this.viewItems.length);\r\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\r\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\r\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\r\n }\r\n removeView(index, sizing, skipLayout = false) {\r\n // Remove view\r\n const viewItem = this.viewItems.splice(index, 1)[0];\r\n viewItem.dispose();\r\n // Remove sash\r\n if (this.viewItems.length >= 1) {\r\n const sashIndex = Math.max(index - 1, 0);\r\n const sashItem = this.sashes.splice(sashIndex, 1)[0];\r\n sashItem.disposable();\r\n }\r\n if (!skipLayout) {\r\n this.relayout();\r\n }\r\n if (sizing && sizing.type === 'distribute') {\r\n this.distributeViewSizes();\r\n }\r\n this._onDidRemoveView.fire(viewItem.view);\r\n return viewItem.view;\r\n }\r\n getViewCachedVisibleSize(index) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n throw new Error('Index out of bounds');\r\n }\r\n const viewItem = this.viewItems[index];\r\n return viewItem.cachedVisibleSize;\r\n }\r\n moveView(from, to) {\r\n const cachedVisibleSize = this.getViewCachedVisibleSize(from);\r\n const sizing = typeof cachedVisibleSize === 'undefined'\r\n ? this.getViewSize(from)\r\n : Sizing.Invisible(cachedVisibleSize);\r\n const view = this.removeView(from, undefined, true);\r\n this.addView(view, sizing, to);\r\n }\r\n layout(size, orthogonalSize) {\r\n const previousSize = Math.max(this.size, this.contentSize);\r\n this.size = size;\r\n this.orthogonalSize = orthogonalSize;\r\n if (!this.proportions) {\r\n const indexes = range(this.viewItems.length);\r\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\r\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\r\n this.resize(this.viewItems.length - 1, size - previousSize, undefined, lowPriorityIndexes, highPriorityIndexes);\r\n }\r\n else {\r\n for (let i = 0; i < this.viewItems.length; i++) {\r\n const item = this.viewItems[i];\r\n item.size = clamp(Math.round(this.proportions[i] * size), item.minimumSize, item.maximumSize);\r\n }\r\n }\r\n this.distributeEmptySpace();\r\n this.layoutViews();\r\n }\r\n relayout(lowPriorityIndexes, highPriorityIndexes) {\r\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n this.resize(this.viewItems.length - 1, this._size - contentSize, undefined, lowPriorityIndexes, highPriorityIndexes);\r\n this.distributeEmptySpace();\r\n this.layoutViews();\r\n this.saveProportions();\r\n }\r\n distributeEmptySpace(lowPriorityIndex) {\r\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n let emptyDelta = this.size - contentSize;\r\n const indexes = range(this.viewItems.length - 1, -1);\r\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\r\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\r\n for (const index of highPriorityIndexes) {\r\n pushToStart(indexes, index);\r\n }\r\n for (const index of lowPriorityIndexes) {\r\n pushToEnd(indexes, index);\r\n }\r\n if (typeof lowPriorityIndex === 'number') {\r\n pushToEnd(indexes, lowPriorityIndex);\r\n }\r\n for (let i = 0; emptyDelta !== 0 && i < indexes.length; i++) {\r\n const item = this.viewItems[indexes[i]];\r\n const size = clamp(item.size + emptyDelta, item.minimumSize, item.maximumSize);\r\n const viewDelta = size - item.size;\r\n emptyDelta -= viewDelta;\r\n item.size = size;\r\n }\r\n }\r\n saveProportions() {\r\n if (this.proportionalLayout && this.contentSize > 0) {\r\n this._proportions = this.viewItems.map((i) => i.size / this.contentSize);\r\n }\r\n }\r\n layoutViews() {\r\n this.contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n let sum = 0;\r\n const x = [];\r\n this.updateSashEnablement();\r\n for (let i = 0; i < this.viewItems.length - 1; i++) {\r\n sum += this.viewItems[i].size;\r\n x.push(sum);\r\n const offset = Math.min(Math.max(0, sum - 2), this.size - 4);\r\n if (this._orientation === Orientation.HORIZONTAL) {\r\n this.sashes[i].container.style.left = `${offset}px`;\r\n this.sashes[i].container.style.top = `0px`;\r\n }\r\n if (this._orientation === Orientation.VERTICAL) {\r\n this.sashes[i].container.style.left = `0px`;\r\n this.sashes[i].container.style.top = `${offset}px`;\r\n }\r\n }\r\n this.viewItems.forEach((view, i) => {\r\n if (this._orientation === Orientation.HORIZONTAL) {\r\n view.container.style.width = `${view.size}px`;\r\n view.container.style.left = i == 0 ? '0px' : `${x[i - 1]}px`;\r\n view.container.style.top = '';\r\n view.container.style.height = '';\r\n }\r\n if (this._orientation === Orientation.VERTICAL) {\r\n view.container.style.height = `${view.size}px`;\r\n view.container.style.top = i == 0 ? '0px' : `${x[i - 1]}px`;\r\n view.container.style.width = '';\r\n view.container.style.left = '';\r\n }\r\n view.view.layout(view.size, this._orthogonalSize);\r\n });\r\n }\r\n findFirstSnapIndex(indexes) {\r\n // visible views first\r\n for (const index of indexes) {\r\n const viewItem = this.viewItems[index];\r\n if (!viewItem.visible) {\r\n continue;\r\n }\r\n if (viewItem.snap) {\r\n return index;\r\n }\r\n }\r\n // then, hidden views\r\n for (const index of indexes) {\r\n const viewItem = this.viewItems[index];\r\n if (viewItem.visible &&\r\n viewItem.maximumSize - viewItem.minimumSize > 0) {\r\n return undefined;\r\n }\r\n if (!viewItem.visible && viewItem.snap) {\r\n return index;\r\n }\r\n }\r\n return undefined;\r\n }\r\n updateSashEnablement() {\r\n let previous = false;\r\n const collapsesDown = this.viewItems.map((i) => (previous = i.size - i.minimumSize > 0 || previous));\r\n previous = false;\r\n const expandsDown = this.viewItems.map((i) => (previous = i.maximumSize - i.size > 0 || previous));\r\n const reverseViews = [...this.viewItems].reverse();\r\n previous = false;\r\n const collapsesUp = reverseViews\r\n .map((i) => (previous = i.size - i.minimumSize > 0 || previous))\r\n .reverse();\r\n previous = false;\r\n const expandsUp = reverseViews\r\n .map((i) => (previous = i.maximumSize - i.size > 0 || previous))\r\n .reverse();\r\n let position = 0;\r\n for (let index = 0; index < this.sashes.length; index++) {\r\n const sash = this.sashes[index];\r\n const viewItem = this.viewItems[index];\r\n position += viewItem.size;\r\n const min = !(collapsesDown[index] && expandsUp[index + 1]);\r\n const max = !(expandsDown[index] && collapsesUp[index + 1]);\r\n if (min && max) {\r\n const upIndexes = range(index, -1);\r\n const downIndexes = range(index + 1, this.viewItems.length);\r\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\r\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\r\n const snappedBefore = typeof snapBeforeIndex === 'number' &&\r\n !this.viewItems[snapBeforeIndex].visible;\r\n const snappedAfter = typeof snapAfterIndex === 'number' &&\r\n !this.viewItems[snapAfterIndex].visible;\r\n if (snappedBefore &&\r\n collapsesUp[index] &&\r\n (position > 0 || this.startSnappingEnabled)) {\r\n this.updateSash(sash, SashState.MINIMUM);\r\n }\r\n else if (snappedAfter &&\r\n collapsesDown[index] &&\r\n (position < this.contentSize || this.endSnappingEnabled)) {\r\n this.updateSash(sash, SashState.MAXIMUM);\r\n }\r\n else {\r\n this.updateSash(sash, SashState.DISABLED);\r\n }\r\n }\r\n else if (min && !max) {\r\n this.updateSash(sash, SashState.MINIMUM);\r\n }\r\n else if (!min && max) {\r\n this.updateSash(sash, SashState.MAXIMUM);\r\n }\r\n else {\r\n this.updateSash(sash, SashState.ENABLED);\r\n }\r\n }\r\n }\r\n updateSash(sash, state) {\r\n toggleClass(sash.container, 'disabled', state === SashState.DISABLED);\r\n toggleClass(sash.container, 'enabled', state === SashState.ENABLED);\r\n toggleClass(sash.container, 'maximum', state === SashState.MAXIMUM);\r\n toggleClass(sash.container, 'minimum', state === SashState.MINIMUM);\r\n }\r\n createViewContainer() {\r\n const element = document.createElement('div');\r\n element.className = 'view-container';\r\n return element;\r\n }\r\n createSashContainer() {\r\n const element = document.createElement('div');\r\n element.className = 'sash-container';\r\n return element;\r\n }\r\n createContainer() {\r\n const element = document.createElement('div');\r\n const orientationClassname = this._orientation === Orientation.HORIZONTAL\r\n ? 'horizontal'\r\n : 'vertical';\r\n element.className = `split-view-container ${orientationClassname}`;\r\n return element;\r\n }\r\n dispose() {\r\n this._onDidSashEnd.dispose();\r\n this._onDidAddView.dispose();\r\n this._onDidRemoveView.dispose();\r\n for (let i = 0; i < this.element.children.length; i++) {\r\n if (this.element.children.item(i) === this.element) {\r\n this.element.removeChild(this.element);\r\n break;\r\n }\r\n }\r\n for (const viewItem of this.viewItems) {\r\n viewItem.dispose();\r\n }\r\n this.element.remove();\r\n }\r\n}\r\n//# sourceMappingURL=splitview.js.map","import { Splitview, Orientation, } from '../splitview/splitview';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nimport { Emitter } from '../events';\r\nimport { addClasses, removeClasses } from '../dom';\r\nexport class Paneview extends CompositeDisposable {\r\n get onDidAddView() {\r\n return this.splitview.onDidAddView;\r\n }\r\n get onDidRemoveView() {\r\n return this.splitview.onDidRemoveView;\r\n }\r\n get minimumSize() {\r\n return this.splitview.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.splitview.maximumSize;\r\n }\r\n get orientation() {\r\n return this.splitview.orientation;\r\n }\r\n get size() {\r\n return this.splitview.size;\r\n }\r\n get orthogonalSize() {\r\n return this.splitview.orthogonalSize;\r\n }\r\n constructor(container, options) {\r\n var _a;\r\n super();\r\n this.paneItems = [];\r\n this.skipAnimation = false;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._orientation = (_a = options.orientation) !== null && _a !== void 0 ? _a : Orientation.VERTICAL;\r\n this.element = document.createElement('div');\r\n this.element.className = 'pane-container';\r\n container.appendChild(this.element);\r\n this.splitview = new Splitview(this.element, {\r\n orientation: this._orientation,\r\n proportionalLayout: false,\r\n descriptor: options.descriptor,\r\n });\r\n // if we've added views from the descriptor we need to\r\n // add the panes to our Pane array and setup animation\r\n this.getPanes().forEach((pane) => {\r\n const disposable = new CompositeDisposable(pane.onDidChangeExpansionState(() => {\r\n this.setupAnimation();\r\n this._onDidChange.fire(undefined);\r\n }));\r\n const paneItem = {\r\n pane,\r\n disposable: {\r\n dispose: () => {\r\n disposable.dispose();\r\n },\r\n },\r\n };\r\n this.paneItems.push(paneItem);\r\n pane.orthogonalSize = this.splitview.orthogonalSize;\r\n });\r\n this.addDisposables(this._onDidChange, this.splitview.onDidSashEnd(() => {\r\n this._onDidChange.fire(undefined);\r\n }), this.splitview.onDidAddView(() => {\r\n this._onDidChange.fire();\r\n }), this.splitview.onDidRemoveView(() => {\r\n this._onDidChange.fire();\r\n }));\r\n }\r\n addPane(pane, size, index = this.splitview.length, skipLayout = false) {\r\n const disposable = pane.onDidChangeExpansionState(() => {\r\n this.setupAnimation();\r\n this._onDidChange.fire(undefined);\r\n });\r\n const paneItem = {\r\n pane,\r\n disposable: {\r\n dispose: () => {\r\n disposable.dispose();\r\n },\r\n },\r\n };\r\n this.paneItems.splice(index, 0, paneItem);\r\n pane.orthogonalSize = this.splitview.orthogonalSize;\r\n this.splitview.addView(pane, size, index, skipLayout);\r\n }\r\n getViewSize(index) {\r\n return this.splitview.getViewSize(index);\r\n }\r\n getPanes() {\r\n return this.splitview.getViews();\r\n }\r\n removePane(index, options = { skipDispose: false }) {\r\n const paneItem = this.paneItems.splice(index, 1)[0];\r\n this.splitview.removeView(index);\r\n if (!options.skipDispose) {\r\n paneItem.disposable.dispose();\r\n paneItem.pane.dispose();\r\n }\r\n return paneItem;\r\n }\r\n moveView(from, to) {\r\n if (from === to) {\r\n return;\r\n }\r\n const view = this.removePane(from, { skipDispose: true });\r\n this.skipAnimation = true;\r\n try {\r\n this.addPane(view.pane, view.pane.size, to, false);\r\n }\r\n finally {\r\n this.skipAnimation = false;\r\n }\r\n }\r\n layout(size, orthogonalSize) {\r\n this.splitview.layout(size, orthogonalSize);\r\n }\r\n setupAnimation() {\r\n if (this.skipAnimation) {\r\n return;\r\n }\r\n if (this.animationTimer) {\r\n clearTimeout(this.animationTimer);\r\n this.animationTimer = undefined;\r\n }\r\n addClasses(this.element, 'animated');\r\n this.animationTimer = setTimeout(() => {\r\n this.animationTimer = undefined;\r\n removeClasses(this.element, 'animated');\r\n }, 200);\r\n }\r\n dispose() {\r\n super.dispose();\r\n if (this.animationTimer) {\r\n clearTimeout(this.animationTimer);\r\n this.animationTimer = undefined;\r\n }\r\n this.paneItems.forEach((paneItem) => {\r\n paneItem.disposable.dispose();\r\n paneItem.pane.dispose();\r\n });\r\n this.paneItems = [];\r\n this.splitview.dispose();\r\n this.element.remove();\r\n }\r\n}\r\n//# sourceMappingURL=paneview.js.map","/*---------------------------------------------------------------------------------------------\r\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\r\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Orientation } from '../splitview/splitview';\r\nimport { Emitter } from '../events';\r\nexport class LeafNode {\r\n get minimumWidth() {\r\n return this.view.minimumWidth;\r\n }\r\n get maximumWidth() {\r\n return this.view.maximumWidth;\r\n }\r\n get minimumHeight() {\r\n return this.view.minimumHeight;\r\n }\r\n get maximumHeight() {\r\n return this.view.maximumHeight;\r\n }\r\n get priority() {\r\n return this.view.priority;\r\n }\r\n get snap() {\r\n return this.view.snap;\r\n }\r\n get minimumSize() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.minimumHeight\r\n : this.minimumWidth;\r\n }\r\n get maximumSize() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.maximumHeight\r\n : this.maximumWidth;\r\n }\r\n get minimumOrthogonalSize() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.minimumWidth\r\n : this.minimumHeight;\r\n }\r\n get maximumOrthogonalSize() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.maximumWidth\r\n : this.maximumHeight;\r\n }\r\n get orthogonalSize() {\r\n return this._orthogonalSize;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n get element() {\r\n return this.view.element;\r\n }\r\n get width() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.orthogonalSize\r\n : this.size;\r\n }\r\n get height() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.size\r\n : this.orthogonalSize;\r\n }\r\n constructor(view, orientation, orthogonalSize, size = 0) {\r\n this.view = view;\r\n this.orientation = orientation;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._orthogonalSize = orthogonalSize;\r\n this._size = size;\r\n this._disposable = this.view.onDidChange((event) => {\r\n if (event) {\r\n this._onDidChange.fire({\r\n size: this.orientation === Orientation.VERTICAL\r\n ? event.width\r\n : event.height,\r\n orthogonalSize: this.orientation === Orientation.VERTICAL\r\n ? event.height\r\n : event.width,\r\n });\r\n }\r\n else {\r\n this._onDidChange.fire({});\r\n }\r\n });\r\n }\r\n setVisible(visible) {\r\n if (this.view.setVisible) {\r\n this.view.setVisible(visible);\r\n this._onDidChange.fire({});\r\n }\r\n }\r\n layout(size, orthogonalSize) {\r\n this._size = size;\r\n this._orthogonalSize = orthogonalSize;\r\n this.view.layout(this.width, this.height);\r\n }\r\n dispose() {\r\n this._onDidChange.dispose();\r\n this._disposable.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=leafNode.js.map","/*---------------------------------------------------------------------------------------------\r\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\r\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Splitview, Orientation, LayoutPriority, } from '../splitview/splitview';\r\nimport { Emitter, Event } from '../events';\r\nimport { LeafNode } from './leafNode';\r\nimport { CompositeDisposable, Disposable } from '../lifecycle';\r\nexport class BranchNode extends CompositeDisposable {\r\n get width() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.size\r\n : this.orthogonalSize;\r\n }\r\n get height() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.orthogonalSize\r\n : this.size;\r\n }\r\n get minimumSize() {\r\n return this.children.length === 0\r\n ? 0\r\n : Math.max(...this.children.map((c) => c.minimumOrthogonalSize));\r\n }\r\n get maximumSize() {\r\n return Math.min(...this.children.map((c) => c.maximumOrthogonalSize));\r\n }\r\n get minimumOrthogonalSize() {\r\n return this.splitview.minimumSize;\r\n }\r\n get maximumOrthogonalSize() {\r\n return this.splitview.maximumSize;\r\n }\r\n get orthogonalSize() {\r\n return this._orthogonalSize;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n get minimumWidth() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.minimumOrthogonalSize\r\n : this.minimumSize;\r\n }\r\n get minimumHeight() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.minimumSize\r\n : this.minimumOrthogonalSize;\r\n }\r\n get maximumWidth() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.maximumOrthogonalSize\r\n : this.maximumSize;\r\n }\r\n get maximumHeight() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.maximumSize\r\n : this.maximumOrthogonalSize;\r\n }\r\n get priority() {\r\n if (this.children.length === 0) {\r\n return LayoutPriority.Normal;\r\n }\r\n const priorities = this.children.map((c) => typeof c.priority === 'undefined'\r\n ? LayoutPriority.Normal\r\n : c.priority);\r\n if (priorities.some((p) => p === LayoutPriority.High)) {\r\n return LayoutPriority.High;\r\n }\r\n else if (priorities.some((p) => p === LayoutPriority.Low)) {\r\n return LayoutPriority.Low;\r\n }\r\n return LayoutPriority.Normal;\r\n }\r\n constructor(orientation, proportionalLayout, styles, size, orthogonalSize, childDescriptors) {\r\n super();\r\n this.orientation = orientation;\r\n this.proportionalLayout = proportionalLayout;\r\n this.styles = styles;\r\n this._childrenDisposable = Disposable.NONE;\r\n this.children = [];\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._orthogonalSize = orthogonalSize;\r\n this._size = size;\r\n this.element = document.createElement('div');\r\n this.element.className = 'branch-node';\r\n if (!childDescriptors) {\r\n this.splitview = new Splitview(this.element, {\r\n orientation: this.orientation,\r\n proportionalLayout,\r\n styles,\r\n });\r\n this.splitview.layout(this.size, this.orthogonalSize);\r\n }\r\n else {\r\n const descriptor = {\r\n views: childDescriptors.map((childDescriptor) => {\r\n return {\r\n view: childDescriptor.node,\r\n size: childDescriptor.node.size,\r\n visible: childDescriptor.node instanceof LeafNode &&\r\n childDescriptor.visible !== undefined\r\n ? childDescriptor.visible\r\n : true,\r\n };\r\n }),\r\n size: this.orthogonalSize,\r\n };\r\n this.children = childDescriptors.map((c) => c.node);\r\n this.splitview = new Splitview(this.element, {\r\n orientation: this.orientation,\r\n descriptor,\r\n proportionalLayout,\r\n styles,\r\n });\r\n }\r\n this.addDisposables(this._onDidChange, this.splitview.onDidSashEnd(() => {\r\n this._onDidChange.fire({});\r\n }));\r\n this.setupChildrenEvents();\r\n }\r\n setVisible(visible) {\r\n for (const child of this.children) {\r\n child.setVisible(visible);\r\n }\r\n }\r\n isChildVisible(index) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n return this.splitview.isViewVisible(index);\r\n }\r\n setChildVisible(index, visible) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n if (this.splitview.isViewVisible(index) === visible) {\r\n return;\r\n }\r\n this.splitview.setViewVisible(index, visible);\r\n }\r\n moveChild(from, to) {\r\n if (from === to) {\r\n return;\r\n }\r\n if (from < 0 || from >= this.children.length) {\r\n throw new Error('Invalid from index');\r\n }\r\n if (from < to) {\r\n to--;\r\n }\r\n this.splitview.moveView(from, to);\r\n const child = this._removeChild(from);\r\n this._addChild(child, to);\r\n }\r\n getChildSize(index) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n return this.splitview.getViewSize(index);\r\n }\r\n resizeChild(index, size) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n this.splitview.resizeView(index, size);\r\n }\r\n layout(size, orthogonalSize) {\r\n this._size = orthogonalSize;\r\n this._orthogonalSize = size;\r\n this.splitview.layout(orthogonalSize, size);\r\n }\r\n addChild(node, size, index, skipLayout) {\r\n if (index < 0 || index > this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n this.splitview.addView(node, size, index, skipLayout);\r\n this._addChild(node, index);\r\n }\r\n getChildCachedVisibleSize(index) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n return this.splitview.getViewCachedVisibleSize(index);\r\n }\r\n removeChild(index, sizing) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n this.splitview.removeView(index, sizing);\r\n return this._removeChild(index);\r\n }\r\n _addChild(node, index) {\r\n this.children.splice(index, 0, node);\r\n this.setupChildrenEvents();\r\n }\r\n _removeChild(index) {\r\n const [child] = this.children.splice(index, 1);\r\n this.setupChildrenEvents();\r\n return child;\r\n }\r\n setupChildrenEvents() {\r\n this._childrenDisposable.dispose();\r\n this._childrenDisposable = Event.any(...this.children.map((c) => c.onDidChange))((e) => {\r\n /**\r\n * indicate a change has occured to allows any re-rendering but don't bubble\r\n * event because that was specific to this branch\r\n */\r\n this._onDidChange.fire({ size: e.orthogonalSize });\r\n });\r\n }\r\n dispose() {\r\n this._childrenDisposable.dispose();\r\n this.splitview.dispose();\r\n this.children.forEach((child) => child.dispose());\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=branchNode.js.map","/*---------------------------------------------------------------------------------------------\r\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\r\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Orientation, Sizing, } from '../splitview/splitview';\r\nimport { tail } from '../array';\r\nimport { LeafNode } from './leafNode';\r\nimport { BranchNode } from './branchNode';\r\nimport { Emitter } from '../events';\r\nimport { MutableDisposable } from '../lifecycle';\r\nfunction findLeaf(candiateNode, last) {\r\n if (candiateNode instanceof LeafNode) {\r\n return candiateNode;\r\n }\r\n if (candiateNode instanceof BranchNode) {\r\n return findLeaf(candiateNode.children[last ? candiateNode.children.length - 1 : 0], last);\r\n }\r\n throw new Error('invalid node');\r\n}\r\nfunction flipNode(node, size, orthogonalSize) {\r\n if (node instanceof BranchNode) {\r\n const result = new BranchNode(orthogonal(node.orientation), node.proportionalLayout, node.styles, size, orthogonalSize);\r\n let totalSize = 0;\r\n for (let i = node.children.length - 1; i >= 0; i--) {\r\n const child = node.children[i];\r\n const childSize = child instanceof BranchNode ? child.orthogonalSize : child.size;\r\n let newSize = node.size === 0\r\n ? 0\r\n : Math.round((size * childSize) / node.size);\r\n totalSize += newSize;\r\n // The last view to add should adjust to rounding errors\r\n if (i === 0) {\r\n newSize += size - totalSize;\r\n }\r\n result.addChild(flipNode(child, orthogonalSize, newSize), newSize, 0, true);\r\n }\r\n return result;\r\n }\r\n else {\r\n return new LeafNode(node.view, orthogonal(node.orientation), orthogonalSize);\r\n }\r\n}\r\nexport function indexInParent(element) {\r\n const parentElement = element.parentElement;\r\n if (!parentElement) {\r\n throw new Error('Invalid grid element');\r\n }\r\n let el = parentElement.firstElementChild;\r\n let index = 0;\r\n while (el !== element && el !== parentElement.lastElementChild && el) {\r\n el = el.nextElementSibling;\r\n index++;\r\n }\r\n return index;\r\n}\r\n/**\r\n * Find the grid location of a specific DOM element by traversing the parent\r\n * chain and finding each child index on the way.\r\n *\r\n * This will break as soon as DOM structures of the Splitview or Gridview change.\r\n */\r\nexport function getGridLocation(element) {\r\n const parentElement = element.parentElement;\r\n if (!parentElement) {\r\n throw new Error('Invalid grid element');\r\n }\r\n if (/\\bgrid-view\\b/.test(parentElement.className)) {\r\n return [];\r\n }\r\n const index = indexInParent(parentElement);\r\n const ancestor = parentElement.parentElement.parentElement.parentElement;\r\n return [...getGridLocation(ancestor), index];\r\n}\r\nexport function getRelativeLocation(rootOrientation, location, direction) {\r\n const orientation = getLocationOrientation(rootOrientation, location);\r\n const directionOrientation = getDirectionOrientation(direction);\r\n if (orientation === directionOrientation) {\r\n const [rest, _index] = tail(location);\r\n let index = _index;\r\n if (direction === 'right' || direction === 'bottom') {\r\n index += 1;\r\n }\r\n return [...rest, index];\r\n }\r\n else {\r\n const index = direction === 'right' || direction === 'bottom' ? 1 : 0;\r\n return [...location, index];\r\n }\r\n}\r\nexport function getDirectionOrientation(direction) {\r\n return direction === 'top' || direction === 'bottom'\r\n ? Orientation.VERTICAL\r\n : Orientation.HORIZONTAL;\r\n}\r\nexport function getLocationOrientation(rootOrientation, location) {\r\n return location.length % 2 === 0\r\n ? orthogonal(rootOrientation)\r\n : rootOrientation;\r\n}\r\nexport const orthogonal = (orientation) => orientation === Orientation.HORIZONTAL\r\n ? Orientation.VERTICAL\r\n : Orientation.HORIZONTAL;\r\nexport function isGridBranchNode(node) {\r\n return !!node.children;\r\n}\r\nconst serializeBranchNode = (node, orientation) => {\r\n const size = orientation === Orientation.VERTICAL ? node.box.width : node.box.height;\r\n if (!isGridBranchNode(node)) {\r\n if (typeof node.cachedVisibleSize === 'number') {\r\n return {\r\n type: 'leaf',\r\n data: node.view.toJSON(),\r\n size: node.cachedVisibleSize,\r\n visible: false,\r\n };\r\n }\r\n return { type: 'leaf', data: node.view.toJSON(), size };\r\n }\r\n return {\r\n type: 'branch',\r\n data: node.children.map((c) => serializeBranchNode(c, orthogonal(orientation))),\r\n size,\r\n };\r\n};\r\nexport class Gridview {\r\n get length() {\r\n return this._root ? this._root.children.length : 0;\r\n }\r\n get orientation() {\r\n return this.root.orientation;\r\n }\r\n set orientation(orientation) {\r\n if (this.root.orientation === orientation) {\r\n return;\r\n }\r\n const { size, orthogonalSize } = this.root;\r\n this.root = flipNode(this.root, orthogonalSize, size);\r\n this.root.layout(size, orthogonalSize);\r\n }\r\n get width() {\r\n return this.root.width;\r\n }\r\n get height() {\r\n return this.root.height;\r\n }\r\n get minimumWidth() {\r\n return this.root.minimumWidth;\r\n }\r\n get minimumHeight() {\r\n return this.root.minimumHeight;\r\n }\r\n get maximumWidth() {\r\n return this.root.maximumHeight;\r\n }\r\n get maximumHeight() {\r\n return this.root.maximumHeight;\r\n }\r\n serialize() {\r\n const root = serializeBranchNode(this.getView(), this.orientation);\r\n return {\r\n root,\r\n width: this.width,\r\n height: this.height,\r\n orientation: this.orientation,\r\n };\r\n }\r\n dispose() {\r\n this.disposable.dispose();\r\n this._onDidChange.dispose();\r\n this.root.dispose();\r\n this.element.remove();\r\n }\r\n clear() {\r\n const orientation = this.root.orientation;\r\n this.root = new BranchNode(orientation, this.proportionalLayout, this.styles, this.root.size, this.root.orthogonalSize);\r\n }\r\n deserialize(json, deserializer) {\r\n const orientation = json.orientation;\r\n const height = orientation === Orientation.VERTICAL ? json.height : json.width;\r\n this._deserialize(json.root, orientation, deserializer, height);\r\n }\r\n _deserialize(root, orientation, deserializer, orthogonalSize) {\r\n this.root = this._deserializeNode(root, orientation, deserializer, orthogonalSize);\r\n }\r\n _deserializeNode(node, orientation, deserializer, orthogonalSize) {\r\n let result;\r\n if (node.type === 'branch') {\r\n const serializedChildren = node.data;\r\n const children = serializedChildren.map((serializedChild) => {\r\n return {\r\n node: this._deserializeNode(serializedChild, orthogonal(orientation), deserializer, node.size),\r\n visible: serializedChild.visible,\r\n };\r\n });\r\n result = new BranchNode(orientation, this.proportionalLayout, this.styles, node.size, // <- orthogonal size - flips at each depth\r\n orthogonalSize, // <- size - flips at each depth\r\n children);\r\n }\r\n else {\r\n result = new LeafNode(deserializer.fromJSON(node), orientation, orthogonalSize, node.size);\r\n }\r\n return result;\r\n }\r\n get root() {\r\n return this._root;\r\n }\r\n set root(root) {\r\n const oldRoot = this._root;\r\n if (oldRoot) {\r\n oldRoot.dispose();\r\n this.element.removeChild(oldRoot.element);\r\n }\r\n this._root = root;\r\n this.element.appendChild(this._root.element);\r\n this.disposable.value = this._root.onDidChange((e) => {\r\n this._onDidChange.fire(e);\r\n });\r\n }\r\n /**\r\n * If the root is orientated as a VERTICAL node then nest the existing root within a new HORIZIONTAL root node\r\n * If the root is orientated as a HORIZONTAL node then nest the existing root within a new VERITCAL root node\r\n */\r\n insertOrthogonalSplitviewAtRoot() {\r\n if (!this._root) {\r\n return;\r\n }\r\n const oldRoot = this.root;\r\n oldRoot.element.remove();\r\n this._root = new BranchNode(orthogonal(oldRoot.orientation), this.proportionalLayout, this.styles, this.root.orthogonalSize, this.root.size);\r\n if (oldRoot.children.length === 0) {\r\n // no data so no need to add anything back in\r\n }\r\n else if (oldRoot.children.length === 1) {\r\n // can remove one level of redundant branching if there is only a single child\r\n const childReference = oldRoot.children[0];\r\n const child = oldRoot.removeChild(0); // remove to prevent disposal when disposing of unwanted root\r\n child.dispose();\r\n oldRoot.dispose();\r\n this._root.addChild(\r\n /**\r\n * the child node will have the same orientation as the new root since\r\n * we are removing the inbetween node.\r\n * the entire 'tree' must be flipped recursively to ensure that the orientation\r\n * flips at each level\r\n */\r\n flipNode(childReference, childReference.orthogonalSize, childReference.size), Sizing.Distribute, 0);\r\n }\r\n else {\r\n this._root.addChild(oldRoot, Sizing.Distribute, 0);\r\n }\r\n this.element.appendChild(this._root.element);\r\n this.disposable.value = this._root.onDidChange((e) => {\r\n this._onDidChange.fire(e);\r\n });\r\n }\r\n next(location) {\r\n return this.progmaticSelect(location);\r\n }\r\n previous(location) {\r\n return this.progmaticSelect(location, true);\r\n }\r\n getView(location) {\r\n const node = location ? this.getNode(location)[1] : this.root;\r\n return this._getViews(node, this.orientation);\r\n }\r\n _getViews(node, orientation, cachedVisibleSize) {\r\n const box = { height: node.height, width: node.width };\r\n if (node instanceof LeafNode) {\r\n return { box, view: node.view, cachedVisibleSize };\r\n }\r\n const children = [];\r\n for (let i = 0; i < node.children.length; i++) {\r\n const child = node.children[i];\r\n const nodeCachedVisibleSize = node.getChildCachedVisibleSize(i);\r\n children.push(this._getViews(child, orthogonal(orientation), nodeCachedVisibleSize));\r\n }\r\n return { box, children };\r\n }\r\n progmaticSelect(location, reverse = false) {\r\n const [path, node] = this.getNode(location);\r\n if (!(node instanceof LeafNode)) {\r\n throw new Error('invalid location');\r\n }\r\n for (let i = path.length - 1; i > -1; i--) {\r\n const n = path[i];\r\n const l = location[i] || 0;\r\n const canProgressInCurrentLevel = reverse\r\n ? l - 1 > -1\r\n : l + 1 < n.children.length;\r\n if (canProgressInCurrentLevel) {\r\n return findLeaf(n.children[reverse ? l - 1 : l + 1], reverse);\r\n }\r\n }\r\n return findLeaf(this.root, reverse);\r\n }\r\n constructor(proportionalLayout, styles, orientation) {\r\n this.proportionalLayout = proportionalLayout;\r\n this.styles = styles;\r\n this.disposable = new MutableDisposable();\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this.element = document.createElement('div');\r\n this.element.className = 'grid-view';\r\n this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0);\r\n }\r\n isViewVisible(location) {\r\n const [rest, index] = tail(location);\r\n const [, parent] = this.getNode(rest);\r\n if (!(parent instanceof BranchNode)) {\r\n throw new Error('Invalid from location');\r\n }\r\n return parent.isChildVisible(index);\r\n }\r\n setViewVisible(location, visible) {\r\n const [rest, index] = tail(location);\r\n const [, parent] = this.getNode(rest);\r\n if (!(parent instanceof BranchNode)) {\r\n throw new Error('Invalid from location');\r\n }\r\n parent.setChildVisible(index, visible);\r\n }\r\n moveView(parentLocation, from, to) {\r\n const [, parent] = this.getNode(parentLocation);\r\n if (!(parent instanceof BranchNode)) {\r\n throw new Error('Invalid location');\r\n }\r\n parent.moveChild(from, to);\r\n }\r\n addView(view, size, location) {\r\n const [rest, index] = tail(location);\r\n const [pathToParent, parent] = this.getNode(rest);\r\n if (parent instanceof BranchNode) {\r\n const node = new LeafNode(view, orthogonal(parent.orientation), parent.orthogonalSize);\r\n parent.addChild(node, size, index);\r\n }\r\n else {\r\n const [grandParent, ..._] = [...pathToParent].reverse();\r\n const [parentIndex, ...__] = [...rest].reverse();\r\n let newSiblingSize = 0;\r\n const newSiblingCachedVisibleSize = grandParent.getChildCachedVisibleSize(parentIndex);\r\n if (typeof newSiblingCachedVisibleSize === 'number') {\r\n newSiblingSize = Sizing.Invisible(newSiblingCachedVisibleSize);\r\n }\r\n const child = grandParent.removeChild(parentIndex);\r\n child.dispose();\r\n const newParent = new BranchNode(parent.orientation, this.proportionalLayout, this.styles, parent.size, parent.orthogonalSize);\r\n grandParent.addChild(newParent, parent.size, parentIndex);\r\n const newSibling = new LeafNode(parent.view, grandParent.orientation, parent.size);\r\n newParent.addChild(newSibling, newSiblingSize, 0);\r\n if (typeof size !== 'number' && size.type === 'split') {\r\n size = { type: 'split', index: 0 };\r\n }\r\n const node = new LeafNode(view, grandParent.orientation, parent.size);\r\n newParent.addChild(node, size, index);\r\n }\r\n }\r\n remove(view, sizing) {\r\n const location = getGridLocation(view.element);\r\n return this.removeView(location, sizing);\r\n }\r\n removeView(location, sizing) {\r\n const [rest, index] = tail(location);\r\n const [pathToParent, parent] = this.getNode(rest);\r\n if (!(parent instanceof BranchNode)) {\r\n throw new Error('Invalid location');\r\n }\r\n const nodeToRemove = parent.children[index];\r\n if (!(nodeToRemove instanceof LeafNode)) {\r\n throw new Error('Invalid location');\r\n }\r\n parent.removeChild(index, sizing);\r\n nodeToRemove.dispose();\r\n if (parent.children.length !== 1) {\r\n return nodeToRemove.view;\r\n }\r\n // if the parent has only one child and we know the parent is a BranchNode we can make the tree\r\n // more efficiently spaced by replacing the parent BranchNode with the child.\r\n // if that child is a LeafNode then we simply replace the BranchNode with the child otherwise if the child\r\n // is a BranchNode too we should spread it's children into the grandparent.\r\n // refer to the remaining child as the sibling\r\n const sibling = parent.children[0];\r\n if (pathToParent.length === 0) {\r\n // if the parent is root\r\n if (sibling instanceof LeafNode) {\r\n // if the sibling is a leaf node no action is required\r\n return nodeToRemove.view;\r\n }\r\n // otherwise the sibling is a branch node. since the parent is the root and the root has only one child\r\n // which is a branch node we can just set this branch node to be the new root node\r\n // for good housekeeping we'll removing the sibling from it's existing tree\r\n parent.removeChild(0, sizing);\r\n // and set that sibling node to be root\r\n this.root = sibling;\r\n return nodeToRemove.view;\r\n }\r\n // otherwise the parent is apart of a large sub-tree\r\n const [grandParent, ..._] = [...pathToParent].reverse();\r\n const [parentIndex, ...__] = [...rest].reverse();\r\n const isSiblingVisible = parent.isChildVisible(0);\r\n // either way we need to remove the sibling from it's existing tree\r\n parent.removeChild(0, sizing);\r\n // note the sizes of all of the grandparents children\r\n const sizes = grandParent.children.map((_size, i) => grandParent.getChildSize(i));\r\n // remove the parent from the grandparent since we are moving the sibling to take the parents place\r\n // this parent is no longer used and can be disposed of\r\n grandParent.removeChild(parentIndex, sizing).dispose();\r\n if (sibling instanceof BranchNode) {\r\n // replace the parent with the siblings children\r\n sizes.splice(parentIndex, 1, ...sibling.children.map((c) => c.size));\r\n // and add those siblings to the grandparent\r\n for (let i = 0; i < sibling.children.length; i++) {\r\n const child = sibling.children[i];\r\n grandParent.addChild(child, child.size, parentIndex + i);\r\n }\r\n /**\r\n * clean down the branch node since we need to dipose of it and\r\n * when .dispose() it called on a branch it will dispose of any\r\n * views it is holding onto.\r\n */\r\n while (sibling.children.length > 0) {\r\n sibling.removeChild(0);\r\n }\r\n }\r\n else {\r\n // otherwise create a new leaf node and add that to the grandparent\r\n const newSibling = new LeafNode(sibling.view, orthogonal(sibling.orientation), sibling.size);\r\n const siblingSizing = isSiblingVisible\r\n ? sibling.orthogonalSize\r\n : Sizing.Invisible(sibling.orthogonalSize);\r\n grandParent.addChild(newSibling, siblingSizing, parentIndex);\r\n }\r\n // the containing node of the sibling is no longer required and can be disposed of\r\n sibling.dispose();\r\n // resize everything\r\n for (let i = 0; i < sizes.length; i++) {\r\n grandParent.resizeChild(i, sizes[i]);\r\n }\r\n return nodeToRemove.view;\r\n }\r\n layout(width, height) {\r\n const [size, orthogonalSize] = this.root.orientation === Orientation.HORIZONTAL\r\n ? [height, width]\r\n : [width, height];\r\n this.root.layout(size, orthogonalSize);\r\n }\r\n getNode(location, node = this.root, path = []) {\r\n if (location.length === 0) {\r\n return [path, node];\r\n }\r\n if (!(node instanceof BranchNode)) {\r\n throw new Error('Invalid location');\r\n }\r\n const [index, ...rest] = location;\r\n if (index < 0 || index >= node.children.length) {\r\n throw new Error('Invalid location');\r\n }\r\n const child = node.children[index];\r\n path.push(node);\r\n return this.getNode(rest, child, path);\r\n }\r\n}\r\n//# sourceMappingURL=gridview.js.map","import { Emitter } from '../events';\r\nexport class SplitviewApi {\r\n get minimumSize() {\r\n return this.component.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.component.maximumSize;\r\n }\r\n get height() {\r\n return this.component.height;\r\n }\r\n get width() {\r\n return this.component.width;\r\n }\r\n get length() {\r\n return this.component.length;\r\n }\r\n get orientation() {\r\n return this.component.orientation;\r\n }\r\n get panels() {\r\n return this.component.panels;\r\n }\r\n get onDidLayoutFromJSON() {\r\n return this.component.onDidLayoutFromJSON;\r\n }\r\n get onDidLayoutChange() {\r\n return this.component.onDidLayoutChange;\r\n }\r\n get onDidAddView() {\r\n return this.component.onDidAddView;\r\n }\r\n get onDidRemoveView() {\r\n return this.component.onDidRemoveView;\r\n }\r\n constructor(component) {\r\n this.component = component;\r\n }\r\n updateOptions(options) {\r\n this.component.updateOptions(options);\r\n }\r\n removePanel(panel, sizing) {\r\n this.component.removePanel(panel, sizing);\r\n }\r\n focus() {\r\n this.component.focus();\r\n }\r\n getPanel(id) {\r\n return this.component.getPanel(id);\r\n }\r\n layout(width, height) {\r\n return this.component.layout(width, height);\r\n }\r\n addPanel(options) {\r\n return this.component.addPanel(options);\r\n }\r\n movePanel(from, to) {\r\n this.component.movePanel(from, to);\r\n }\r\n fromJSON(data) {\r\n this.component.fromJSON(data);\r\n }\r\n toJSON() {\r\n return this.component.toJSON();\r\n }\r\n clear() {\r\n this.component.clear();\r\n }\r\n}\r\nexport class PaneviewApi {\r\n get minimumSize() {\r\n return this.component.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.component.maximumSize;\r\n }\r\n get height() {\r\n return this.component.height;\r\n }\r\n get width() {\r\n return this.component.width;\r\n }\r\n get panels() {\r\n return this.component.panels;\r\n }\r\n get onDidLayoutChange() {\r\n return this.component.onDidLayoutChange;\r\n }\r\n get onDidLayoutFromJSON() {\r\n return this.component.onDidLayoutFromJSON;\r\n }\r\n get onDidAddView() {\r\n return this.component.onDidAddView;\r\n }\r\n get onDidRemoveView() {\r\n return this.component.onDidRemoveView;\r\n }\r\n get onDidDrop() {\r\n const emitter = new Emitter();\r\n const disposable = this.component.onDidDrop((e) => {\r\n emitter.fire(Object.assign(Object.assign({}, e), { api: this }));\r\n });\r\n emitter.dispose = () => {\r\n disposable.dispose();\r\n emitter.dispose();\r\n };\r\n return emitter.event;\r\n }\r\n constructor(component) {\r\n this.component = component;\r\n }\r\n removePanel(panel) {\r\n this.component.removePanel(panel);\r\n }\r\n getPanel(id) {\r\n return this.component.getPanel(id);\r\n }\r\n movePanel(from, to) {\r\n this.component.movePanel(from, to);\r\n }\r\n focus() {\r\n this.component.focus();\r\n }\r\n layout(width, height) {\r\n this.component.layout(width, height);\r\n }\r\n addPanel(options) {\r\n return this.component.addPanel(options);\r\n }\r\n fromJSON(data) {\r\n this.component.fromJSON(data);\r\n }\r\n toJSON() {\r\n return this.component.toJSON();\r\n }\r\n clear() {\r\n this.component.clear();\r\n }\r\n}\r\nexport class GridviewApi {\r\n get minimumHeight() {\r\n return this.component.minimumHeight;\r\n }\r\n get maximumHeight() {\r\n return this.component.maximumHeight;\r\n }\r\n get minimumWidth() {\r\n return this.component.minimumWidth;\r\n }\r\n get maximumWidth() {\r\n return this.component.maximumWidth;\r\n }\r\n get width() {\r\n return this.component.width;\r\n }\r\n get height() {\r\n return this.component.height;\r\n }\r\n get onDidLayoutChange() {\r\n return this.component.onDidLayoutChange;\r\n }\r\n get onDidAddPanel() {\r\n return this.component.onDidAddGroup;\r\n }\r\n get onDidRemovePanel() {\r\n return this.component.onDidRemoveGroup;\r\n }\r\n get onDidActivePanelChange() {\r\n return this.component.onDidActiveGroupChange;\r\n }\r\n get onDidLayoutFromJSON() {\r\n return this.component.onDidLayoutFromJSON;\r\n }\r\n get panels() {\r\n return this.component.groups;\r\n }\r\n get orientation() {\r\n return this.component.orientation;\r\n }\r\n set orientation(value) {\r\n this.component.updateOptions({ orientation: value });\r\n }\r\n constructor(component) {\r\n this.component = component;\r\n }\r\n focus() {\r\n this.component.focus();\r\n }\r\n layout(width, height, force = false) {\r\n this.component.layout(width, height, force);\r\n }\r\n addPanel(options) {\r\n return this.component.addPanel(options);\r\n }\r\n removePanel(panel, sizing) {\r\n this.component.removePanel(panel, sizing);\r\n }\r\n movePanel(panel, options) {\r\n this.component.movePanel(panel, options);\r\n }\r\n getPanel(id) {\r\n return this.component.getPanel(id);\r\n }\r\n fromJSON(data) {\r\n return this.component.fromJSON(data);\r\n }\r\n toJSON() {\r\n return this.component.toJSON();\r\n }\r\n clear() {\r\n this.component.clear();\r\n }\r\n}\r\nexport class DockviewApi {\r\n get id() {\r\n return this.component.id;\r\n }\r\n get width() {\r\n return this.component.width;\r\n }\r\n get height() {\r\n return this.component.height;\r\n }\r\n get minimumHeight() {\r\n return this.component.minimumHeight;\r\n }\r\n get maximumHeight() {\r\n return this.component.maximumHeight;\r\n }\r\n get minimumWidth() {\r\n return this.component.minimumWidth;\r\n }\r\n get maximumWidth() {\r\n return this.component.maximumWidth;\r\n }\r\n get size() {\r\n return this.component.size;\r\n }\r\n get totalPanels() {\r\n return this.component.totalPanels;\r\n }\r\n get onDidActiveGroupChange() {\r\n return this.component.onDidActiveGroupChange;\r\n }\r\n get onDidAddGroup() {\r\n return this.component.onDidAddGroup;\r\n }\r\n get onDidRemoveGroup() {\r\n return this.component.onDidRemoveGroup;\r\n }\r\n get onDidActivePanelChange() {\r\n return this.component.onDidActivePanelChange;\r\n }\r\n get onDidAddPanel() {\r\n return this.component.onDidAddPanel;\r\n }\r\n get onDidRemovePanel() {\r\n return this.component.onDidRemovePanel;\r\n }\r\n get onDidLayoutFromJSON() {\r\n return this.component.onDidLayoutFromJSON;\r\n }\r\n get onDidLayoutChange() {\r\n return this.component.onDidLayoutChange;\r\n }\r\n get onDidDrop() {\r\n return this.component.onDidDrop;\r\n }\r\n get onWillDragGroup() {\r\n return this.component.onWillDragGroup;\r\n }\r\n get onWillDragPanel() {\r\n return this.component.onWillDragPanel;\r\n }\r\n get panels() {\r\n return this.component.panels;\r\n }\r\n get groups() {\r\n return this.component.groups;\r\n }\r\n get activePanel() {\r\n return this.component.activePanel;\r\n }\r\n get activeGroup() {\r\n return this.component.activeGroup;\r\n }\r\n constructor(component) {\r\n this.component = component;\r\n }\r\n focus() {\r\n this.component.focus();\r\n }\r\n getPanel(id) {\r\n return this.component.getGroupPanel(id);\r\n }\r\n layout(width, height, force = false) {\r\n this.component.layout(width, height, force);\r\n }\r\n addPanel(options) {\r\n return this.component.addPanel(options);\r\n }\r\n removePanel(panel) {\r\n this.component.removePanel(panel);\r\n }\r\n addGroup(options) {\r\n return this.component.addGroup(options);\r\n }\r\n moveToNext(options) {\r\n this.component.moveToNext(options);\r\n }\r\n moveToPrevious(options) {\r\n this.component.moveToPrevious(options);\r\n }\r\n closeAllGroups() {\r\n return this.component.closeAllGroups();\r\n }\r\n removeGroup(group) {\r\n this.component.removeGroup(group);\r\n }\r\n getGroup(id) {\r\n return this.component.getPanel(id);\r\n }\r\n addFloatingGroup(item, coord) {\r\n return this.component.addFloatingGroup(item, coord);\r\n }\r\n fromJSON(data) {\r\n this.component.fromJSON(data);\r\n }\r\n toJSON() {\r\n return this.component.toJSON();\r\n }\r\n clear() {\r\n this.component.clear();\r\n }\r\n}\r\n//# sourceMappingURL=component.api.js.map","import { addDisposableListener } from '../events';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nexport class DragAndDropObserver extends CompositeDisposable {\r\n constructor(element, callbacks) {\r\n super();\r\n this.element = element;\r\n this.callbacks = callbacks;\r\n this.target = null;\r\n this.registerListeners();\r\n }\r\n registerListeners() {\r\n this.addDisposables(addDisposableListener(this.element, 'dragenter', (e) => {\r\n this.target = e.target;\r\n this.callbacks.onDragEnter(e);\r\n }, true));\r\n this.addDisposables(addDisposableListener(this.element, 'dragover', (e) => {\r\n e.preventDefault(); // needed so that the drop event fires (https://stackoverflow.com/questions/21339924/drop-event-not-firing-in-chrome)\r\n if (this.callbacks.onDragOver) {\r\n this.callbacks.onDragOver(e);\r\n }\r\n }, true));\r\n this.addDisposables(addDisposableListener(this.element, 'dragleave', (e) => {\r\n if (this.target === e.target) {\r\n this.target = null;\r\n this.callbacks.onDragLeave(e);\r\n }\r\n }));\r\n this.addDisposables(addDisposableListener(this.element, 'dragend', (e) => {\r\n this.target = null;\r\n this.callbacks.onDragEnd(e);\r\n }));\r\n this.addDisposables(addDisposableListener(this.element, 'drop', (e) => {\r\n this.callbacks.onDrop(e);\r\n }));\r\n }\r\n}\r\n//# sourceMappingURL=dnd.js.map","import { toggleClass } from '../dom';\r\nimport { Emitter } from '../events';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nimport { DragAndDropObserver } from './dnd';\r\nimport { clamp } from '../math';\r\nfunction numberOrFallback(maybeNumber, fallback) {\r\n return typeof maybeNumber === 'number' ? maybeNumber : fallback;\r\n}\r\nexport function directionToPosition(direction) {\r\n switch (direction) {\r\n case 'above':\r\n return 'top';\r\n case 'below':\r\n return 'bottom';\r\n case 'left':\r\n return 'left';\r\n case 'right':\r\n return 'right';\r\n case 'within':\r\n return 'center';\r\n default:\r\n throw new Error(`invalid direction '${direction}'`);\r\n }\r\n}\r\nexport function positionToDirection(position) {\r\n switch (position) {\r\n case 'top':\r\n return 'above';\r\n case 'bottom':\r\n return 'below';\r\n case 'left':\r\n return 'left';\r\n case 'right':\r\n return 'right';\r\n case 'center':\r\n return 'within';\r\n default:\r\n throw new Error(`invalid position '${position}'`);\r\n }\r\n}\r\nexport class Droptarget extends CompositeDisposable {\r\n get state() {\r\n return this._state;\r\n }\r\n constructor(element, options) {\r\n super();\r\n this.element = element;\r\n this.options = options;\r\n this._onDrop = new Emitter();\r\n this.onDrop = this._onDrop.event;\r\n // use a set to take advantage of #<set>.has\r\n this._acceptedTargetZonesSet = new Set(this.options.acceptedTargetZones);\r\n this.addDisposables(this._onDrop, new DragAndDropObserver(this.element, {\r\n onDragEnter: () => undefined,\r\n onDragOver: (e) => {\r\n if (this._acceptedTargetZonesSet.size === 0) {\r\n this.removeDropTarget();\r\n return;\r\n }\r\n const width = this.element.clientWidth;\r\n const height = this.element.clientHeight;\r\n if (width === 0 || height === 0) {\r\n return; // avoid div!0\r\n }\r\n const rect = e.currentTarget.getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n const y = e.clientY - rect.top;\r\n const quadrant = this.calculateQuadrant(this._acceptedTargetZonesSet, x, y, width, height);\r\n /**\r\n * If the event has already been used by another DropTarget instance\r\n * then don't show a second drop target, only one target should be\r\n * active at any one time\r\n */\r\n if (this.isAlreadyUsed(e) || quadrant === null) {\r\n // no drop target should be displayed\r\n this.removeDropTarget();\r\n return;\r\n }\r\n if (typeof this.options.canDisplayOverlay === 'boolean') {\r\n if (!this.options.canDisplayOverlay) {\r\n this.removeDropTarget();\r\n return;\r\n }\r\n }\r\n else if (!this.options.canDisplayOverlay(e, quadrant)) {\r\n this.removeDropTarget();\r\n return;\r\n }\r\n this.markAsUsed(e);\r\n if (!this.targetElement) {\r\n this.targetElement = document.createElement('div');\r\n this.targetElement.className = 'drop-target-dropzone';\r\n this.overlayElement = document.createElement('div');\r\n this.overlayElement.className = 'drop-target-selection';\r\n this._state = 'center';\r\n this.targetElement.appendChild(this.overlayElement);\r\n this.element.classList.add('drop-target');\r\n this.element.append(this.targetElement);\r\n }\r\n this.toggleClasses(quadrant, width, height);\r\n this.setState(quadrant);\r\n },\r\n onDragLeave: () => {\r\n this.removeDropTarget();\r\n },\r\n onDragEnd: () => {\r\n this.removeDropTarget();\r\n },\r\n onDrop: (e) => {\r\n e.preventDefault();\r\n const state = this._state;\r\n this.removeDropTarget();\r\n if (state) {\r\n // only stop the propagation of the event if we are dealing with it\r\n // which is only when the target has state\r\n e.stopPropagation();\r\n this._onDrop.fire({ position: state, nativeEvent: e });\r\n }\r\n },\r\n }));\r\n }\r\n setTargetZones(acceptedTargetZones) {\r\n this._acceptedTargetZonesSet = new Set(acceptedTargetZones);\r\n }\r\n dispose() {\r\n this.removeDropTarget();\r\n super.dispose();\r\n }\r\n /**\r\n * Add a property to the event object for other potential listeners to check\r\n */\r\n markAsUsed(event) {\r\n event[Droptarget.USED_EVENT_ID] = true;\r\n }\r\n /**\r\n * Check is the event has already been used by another instance od DropTarget\r\n */\r\n isAlreadyUsed(event) {\r\n const value = event[Droptarget.USED_EVENT_ID];\r\n return typeof value === 'boolean' && value;\r\n }\r\n toggleClasses(quadrant, width, height) {\r\n var _a, _b, _c, _d;\r\n if (!this.overlayElement) {\r\n return;\r\n }\r\n const isSmallX = width < 100;\r\n const isSmallY = height < 100;\r\n const isLeft = quadrant === 'left';\r\n const isRight = quadrant === 'right';\r\n const isTop = quadrant === 'top';\r\n const isBottom = quadrant === 'bottom';\r\n const rightClass = !isSmallX && isRight;\r\n const leftClass = !isSmallX && isLeft;\r\n const topClass = !isSmallY && isTop;\r\n const bottomClass = !isSmallY && isBottom;\r\n let size = 0.5;\r\n if (((_b = (_a = this.options.overlayModel) === null || _a === void 0 ? void 0 : _a.size) === null || _b === void 0 ? void 0 : _b.type) === 'percentage') {\r\n size = clamp(this.options.overlayModel.size.value, 0, 100) / 100;\r\n }\r\n if (((_d = (_c = this.options.overlayModel) === null || _c === void 0 ? void 0 : _c.size) === null || _d === void 0 ? void 0 : _d.type) === 'pixels') {\r\n if (rightClass || leftClass) {\r\n size =\r\n clamp(0, this.options.overlayModel.size.value, width) /\r\n width;\r\n }\r\n if (topClass || bottomClass) {\r\n size =\r\n clamp(0, this.options.overlayModel.size.value, height) /\r\n height;\r\n }\r\n }\r\n const translate = (1 - size) / 2;\r\n const scale = size;\r\n let transform;\r\n if (rightClass) {\r\n transform = `translateX(${100 * translate}%) scaleX(${scale})`;\r\n }\r\n else if (leftClass) {\r\n transform = `translateX(-${100 * translate}%) scaleX(${scale})`;\r\n }\r\n else if (topClass) {\r\n transform = `translateY(-${100 * translate}%) scaleY(${scale})`;\r\n }\r\n else if (bottomClass) {\r\n transform = `translateY(${100 * translate}%) scaleY(${scale})`;\r\n }\r\n else {\r\n transform = '';\r\n }\r\n this.overlayElement.style.transform = transform;\r\n toggleClass(this.overlayElement, 'small-right', isSmallX && isRight);\r\n toggleClass(this.overlayElement, 'small-left', isSmallX && isLeft);\r\n toggleClass(this.overlayElement, 'small-top', isSmallY && isTop);\r\n toggleClass(this.overlayElement, 'small-bottom', isSmallY && isBottom);\r\n }\r\n setState(quadrant) {\r\n switch (quadrant) {\r\n case 'top':\r\n this._state = 'top';\r\n break;\r\n case 'left':\r\n this._state = 'left';\r\n break;\r\n case 'bottom':\r\n this._state = 'bottom';\r\n break;\r\n case 'right':\r\n this._state = 'right';\r\n break;\r\n case 'center':\r\n this._state = 'center';\r\n break;\r\n }\r\n }\r\n calculateQuadrant(overlayType, x, y, width, height) {\r\n var _a, _b, _c, _d, _e, _f;\r\n const isPercentage = ((_a = this.options.overlayModel) === null || _a === void 0 ? void 0 : _a.activationSize) === undefined ||\r\n ((_c = (_b = this.options.overlayModel) === null || _b === void 0 ? void 0 : _b.activationSize) === null || _c === void 0 ? void 0 : _c.type) === 'percentage';\r\n const value = numberOrFallback((_f = (_e = (_d = this.options) === null || _d === void 0 ? void 0 : _d.overlayModel) === null || _e === void 0 ? void 0 : _e.activationSize) === null || _f === void 0 ? void 0 : _f.value, 20);\r\n if (isPercentage) {\r\n return calculateQuadrantAsPercentage(overlayType, x, y, width, height, value);\r\n }\r\n return calculateQuadrantAsPixels(overlayType, x, y, width, height, value);\r\n }\r\n removeDropTarget() {\r\n if (this.targetElement) {\r\n this._state = undefined;\r\n this.element.removeChild(this.targetElement);\r\n this.targetElement = undefined;\r\n this.overlayElement = undefined;\r\n this.element.classList.remove('drop-target');\r\n }\r\n }\r\n}\r\nDroptarget.USED_EVENT_ID = '__dockview_droptarget_event_is_used__';\r\nexport function calculateQuadrantAsPercentage(overlayType, x, y, width, height, threshold) {\r\n const xp = (100 * x) / width;\r\n const yp = (100 * y) / height;\r\n if (overlayType.has('left') && xp < threshold) {\r\n return 'left';\r\n }\r\n if (overlayType.has('right') && xp > 100 - threshold) {\r\n return 'right';\r\n }\r\n if (overlayType.has('top') && yp < threshold) {\r\n return 'top';\r\n }\r\n if (overlayType.has('bottom') && yp > 100 - threshold) {\r\n return 'bottom';\r\n }\r\n if (!overlayType.has('center')) {\r\n return null;\r\n }\r\n return 'center';\r\n}\r\nexport function calculateQuadrantAsPixels(overlayType, x, y, width, height, threshold) {\r\n if (overlayType.has('left') && x < threshold) {\r\n return 'left';\r\n }\r\n if (overlayType.has('right') && x > width - threshold) {\r\n return 'right';\r\n }\r\n if (overlayType.has('top') && y < threshold) {\r\n return 'top';\r\n }\r\n if (overlayType.has('bottom') && y > height - threshold) {\r\n return 'bottom';\r\n }\r\n if (!overlayType.has('center')) {\r\n return null;\r\n }\r\n return 'center';\r\n}\r\n//# sourceMappingURL=droptarget.js.map","import { CompositeDisposable, MutableDisposable, } from '../../../lifecycle';\r\nimport { Emitter } from '../../../events';\r\nimport { trackFocus } from '../../../dom';\r\nexport class ContentContainer extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor() {\r\n super();\r\n this.disposable = new MutableDisposable();\r\n this._onDidFocus = new Emitter();\r\n this.onDidFocus = this._onDidFocus.event;\r\n this._onDidBlur = new Emitter();\r\n this.onDidBlur = this._onDidBlur.event;\r\n this._element = document.createElement('div');\r\n this._element.className = 'content-container';\r\n this._element.tabIndex = -1;\r\n this.addDisposables(this._onDidFocus, this._onDidBlur);\r\n // for hosted containers\r\n // 1) register a drop target on the host\r\n // 2) register window dragStart events to disable pointer events\r\n // 3) register dragEnd events\r\n // 4) register mouseMove events (if no buttons are present we take this as a dragEnd event)\r\n }\r\n show() {\r\n this.element.style.display = '';\r\n }\r\n hide() {\r\n this.element.style.display = 'none';\r\n }\r\n openPanel(panel) {\r\n var _a;\r\n if (this.panel === panel) {\r\n return;\r\n }\r\n if (this.panel) {\r\n if ((_a = this.panel.view) === null || _a === void 0 ? void 0 : _a.content) {\r\n this._element.removeChild(this.panel.view.content.element);\r\n }\r\n this.panel = undefined;\r\n }\r\n this.panel = panel;\r\n const disposable = new CompositeDisposable();\r\n if (this.panel.view) {\r\n const _onDidFocus = this.panel.view.content.onDidFocus;\r\n const _onDidBlur = this.panel.view.content.onDidBlur;\r\n const focusTracker = trackFocus(this._element);\r\n disposable.addDisposables(focusTracker, focusTracker.onDidFocus(() => this._onDidFocus.fire()), focusTracker.onDidBlur(() => this._onDidBlur.fire()));\r\n if (_onDidFocus) {\r\n disposable.addDisposables(_onDidFocus(() => this._onDidFocus.fire()));\r\n }\r\n if (_onDidBlur) {\r\n disposable.addDisposables(_onDidBlur(() => this._onDidBlur.fire()));\r\n }\r\n this._element.appendChild(this.panel.view.content.element);\r\n }\r\n this.disposable.value = disposable;\r\n }\r\n layout(_width, _height) {\r\n // noop\r\n }\r\n closePanel() {\r\n var _a, _b, _c;\r\n if ((_c = (_b = (_a = this.panel) === null || _a === void 0 ? void 0 : _a.view) === null || _b === void 0 ? void 0 : _b.content) === null || _c === void 0 ? void 0 : _c.element) {\r\n this._element.removeChild(this.panel.view.content.element);\r\n this.panel = undefined;\r\n }\r\n }\r\n dispose() {\r\n this.disposable.dispose();\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=content.js.map","export var DockviewDropTargets;\r\n(function (DockviewDropTargets) {\r\n DockviewDropTargets[DockviewDropTargets[\"Tab\"] = 0] = \"Tab\";\r\n DockviewDropTargets[DockviewDropTargets[\"Panel\"] = 1] = \"Panel\";\r\n DockviewDropTargets[DockviewDropTargets[\"TabContainer\"] = 2] = \"TabContainer\";\r\n DockviewDropTargets[DockviewDropTargets[\"Edge\"] = 3] = \"Edge\";\r\n})(DockviewDropTargets || (DockviewDropTargets = {}));\r\n//# sourceMappingURL=types.js.map","import { getElementsByTagName } from '../dom';\r\nimport { addDisposableListener, Emitter } from '../events';\r\nimport { CompositeDisposable, MutableDisposable, } from '../lifecycle';\r\nexport class DragHandler extends CompositeDisposable {\r\n constructor(el) {\r\n super();\r\n this.el = el;\r\n this.dataDisposable = new MutableDisposable();\r\n this.pointerEventsDisposable = new MutableDisposable();\r\n this._onDragStart = new Emitter();\r\n this.onDragStart = this._onDragStart.event;\r\n this.addDisposables(this._onDragStart, this.dataDisposable, this.pointerEventsDisposable);\r\n this.configure();\r\n }\r\n isCancelled(_event) {\r\n return false;\r\n }\r\n configure() {\r\n this.addDisposables(this._onDragStart, addDisposableListener(this.el, 'dragstart', (event) => {\r\n if (event.defaultPrevented || this.isCancelled(event)) {\r\n event.preventDefault();\r\n return;\r\n }\r\n const iframes = [\r\n ...getElementsByTagName('iframe'),\r\n ...getElementsByTagName('webview'),\r\n ];\r\n this.pointerEventsDisposable.value = {\r\n dispose: () => {\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'auto';\r\n }\r\n },\r\n };\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'none';\r\n }\r\n this.el.classList.add('dv-dragged');\r\n setTimeout(() => this.el.classList.remove('dv-dragged'), 0);\r\n this.dataDisposable.value = this.getData(event);\r\n this._onDragStart.fire(event);\r\n if (event.dataTransfer) {\r\n event.dataTransfer.effectAllowed = 'move';\r\n const hasData = event.dataTransfer.items.length > 0;\r\n if (!hasData) {\r\n /**\r\n * Although this is not used by dockview many third party dnd libraries will check\r\n * dataTransfer.types to determine valid drag events.\r\n *\r\n * For example: in react-dnd if dataTransfer.types is not set then the dragStart event will be cancelled\r\n * through .preventDefault(). Since this is applied globally to all drag events this would break dockviews\r\n * dnd logic. You can see the code at\r\n * https://github.com/react-dnd/react-dnd/blob/main/packages/backend-html5/src/HTML5BackendImpl.ts#L542\r\n */\r\n event.dataTransfer.setData('text/plain', '__dockview_internal_drag_event__');\r\n }\r\n }\r\n }), addDisposableListener(this.el, 'dragend', () => {\r\n this.pointerEventsDisposable.dispose();\r\n this.dataDisposable.dispose();\r\n }));\r\n }\r\n}\r\n//# sourceMappingURL=abstractDragHandler.js.map","import { addDisposableListener, Emitter } from '../../../events';\r\nimport { CompositeDisposable } from '../../../lifecycle';\r\nimport { getPanelData, LocalSelectionTransfer, PanelTransfer, } from '../../../dnd/dataTransfer';\r\nimport { toggleClass } from '../../../dom';\r\nimport { DockviewDropTargets } from '../../types';\r\nimport { Droptarget } from '../../../dnd/droptarget';\r\nimport { DragHandler } from '../../../dnd/abstractDragHandler';\r\nclass TabDragHandler extends DragHandler {\r\n constructor(element, accessor, group, panel) {\r\n super(element);\r\n this.accessor = accessor;\r\n this.group = group;\r\n this.panel = panel;\r\n this.panelTransfer = LocalSelectionTransfer.getInstance();\r\n }\r\n getData(event) {\r\n this.panelTransfer.setData([new PanelTransfer(this.accessor.id, this.group.id, this.panel.id)], PanelTransfer.prototype);\r\n return {\r\n dispose: () => {\r\n this.panelTransfer.clearData(PanelTransfer.prototype);\r\n },\r\n };\r\n }\r\n}\r\nexport class Tab extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor(panel, accessor, group) {\r\n super();\r\n this.panel = panel;\r\n this.accessor = accessor;\r\n this.group = group;\r\n this.content = undefined;\r\n this._onChanged = new Emitter();\r\n this.onChanged = this._onChanged.event;\r\n this._onDropped = new Emitter();\r\n this.onDrop = this._onDropped.event;\r\n this._onDragStart = new Emitter();\r\n this.onDragStart = this._onDragStart.event;\r\n this._element = document.createElement('div');\r\n this._element.className = 'tab';\r\n this._element.tabIndex = 0;\r\n this._element.draggable = true;\r\n toggleClass(this.element, 'inactive-tab', true);\r\n const dragHandler = new TabDragHandler(this._element, this.accessor, this.group, this.panel);\r\n this.droptarget = new Droptarget(this._element, {\r\n acceptedTargetZones: ['center'],\r\n canDisplayOverlay: (event, position) => {\r\n if (this.group.locked) {\r\n return false;\r\n }\r\n const data = getPanelData();\r\n if (data && this.accessor.id === data.viewId) {\r\n if (data.panelId === null &&\r\n data.groupId === this.group.id) {\r\n // don't allow group move to drop on self\r\n return false;\r\n }\r\n return this.panel.id !== data.panelId;\r\n }\r\n return this.group.model.canDisplayOverlay(event, position, DockviewDropTargets.Tab);\r\n },\r\n });\r\n this.addDisposables(this._onChanged, this._onDropped, this._onDragStart, dragHandler.onDragStart((event) => {\r\n this._onDragStart.fire(event);\r\n }), dragHandler, addDisposableListener(this._element, 'mousedown', (event) => {\r\n if (event.defaultPrevented) {\r\n return;\r\n }\r\n this._onChanged.fire(event);\r\n }), this.droptarget.onDrop((event) => {\r\n this._onDropped.fire(event);\r\n }), this.droptarget);\r\n }\r\n setActive(isActive) {\r\n toggleClass(this.element, 'active-tab', isActive);\r\n toggleClass(this.element, 'inactive-tab', !isActive);\r\n }\r\n setContent(part) {\r\n if (this.content) {\r\n this._element.removeChild(this.content.element);\r\n }\r\n this.content = part;\r\n this._element.appendChild(this.content.element);\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=tab.js.map","import { quasiPreventDefault } from '../dom';\r\nimport { addDisposableListener } from '../events';\r\nimport { DragHandler } from './abstractDragHandler';\r\nimport { LocalSelectionTransfer, PanelTransfer } from './dataTransfer';\r\nimport { addGhostImage } from './ghost';\r\nexport class GroupDragHandler extends DragHandler {\r\n constructor(element, accessor, group) {\r\n super(element);\r\n this.accessor = accessor;\r\n this.group = group;\r\n this.panelTransfer = LocalSelectionTransfer.getInstance();\r\n this.addDisposables(addDisposableListener(element, 'mousedown', (e) => {\r\n if (e.shiftKey) {\r\n /**\r\n * You cannot call e.preventDefault() because that will prevent drag events from firing\r\n * but we also need to stop any group overlay drag events from occuring\r\n * Use a custom event marker that can be checked by the overlay drag events\r\n */\r\n quasiPreventDefault(e);\r\n }\r\n }, true));\r\n }\r\n isCancelled(_event) {\r\n if (this.group.api.isFloating && !_event.shiftKey) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n getData(dragEvent) {\r\n const dataTransfer = dragEvent.dataTransfer;\r\n this.panelTransfer.setData([new PanelTransfer(this.accessor.id, this.group.id, null)], PanelTransfer.prototype);\r\n const style = window.getComputedStyle(this.el);\r\n const bgColor = style.getPropertyValue('--dv-activegroup-visiblepanel-tab-background-color');\r\n const color = style.getPropertyValue('--dv-activegroup-visiblepanel-tab-color');\r\n if (dataTransfer) {\r\n const ghostElement = document.createElement('div');\r\n ghostElement.style.backgroundColor = bgColor;\r\n ghostElement.style.color = color;\r\n ghostElement.style.padding = '2px 8px';\r\n ghostElement.style.height = '24px';\r\n ghostElement.style.fontSize = '11px';\r\n ghostElement.style.lineHeight = '20px';\r\n ghostElement.style.borderRadius = '12px';\r\n ghostElement.style.position = 'absolute';\r\n ghostElement.textContent = `Multiple Panels (${this.group.size})`;\r\n addGhostImage(dataTransfer, ghostElement);\r\n }\r\n return {\r\n dispose: () => {\r\n this.panelTransfer.clearData(PanelTransfer.prototype);\r\n },\r\n };\r\n }\r\n}\r\n//# sourceMappingURL=groupDragHandler.js.map","import { addClasses, removeClasses } from '../dom';\r\nexport function addGhostImage(dataTransfer, ghostElement) {\r\n // class dockview provides to force ghost image to be drawn on a different layer and prevent weird rendering issues\r\n addClasses(ghostElement, 'dv-dragged');\r\n document.body.appendChild(ghostElement);\r\n dataTransfer.setDragImage(ghostElement, 0, 0);\r\n setTimeout(() => {\r\n removeClasses(ghostElement, 'dv-dragged');\r\n ghostElement.remove();\r\n }, 0);\r\n}\r\n//# sourceMappingURL=ghost.js.map","import { last } from '../../../array';\r\nimport { getPanelData } from '../../../dnd/dataTransfer';\r\nimport { Droptarget } from '../../../dnd/droptarget';\r\nimport { GroupDragHandler } from '../../../dnd/groupDragHandler';\r\nimport { addDisposableListener, Emitter } from '../../../events';\r\nimport { CompositeDisposable } from '../../../lifecycle';\r\nimport { DockviewDropTargets } from '../../types';\r\nexport class VoidContainer extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor(accessor, group) {\r\n super();\r\n this.accessor = accessor;\r\n this.group = group;\r\n this._onDrop = new Emitter();\r\n this.onDrop = this._onDrop.event;\r\n this._onDragStart = new Emitter();\r\n this.onDragStart = this._onDragStart.event;\r\n this._element = document.createElement('div');\r\n this._element.className = 'void-container';\r\n this._element.tabIndex = 0;\r\n this._element.draggable = true;\r\n this.addDisposables(this._onDrop, this._onDragStart, addDisposableListener(this._element, 'click', () => {\r\n this.accessor.doSetGroupActive(this.group);\r\n }));\r\n const handler = new GroupDragHandler(this._element, accessor, group);\r\n this.voidDropTarget = new Droptarget(this._element, {\r\n acceptedTargetZones: ['center'],\r\n canDisplayOverlay: (event, position) => {\r\n var _a;\r\n const data = getPanelData();\r\n if (data && this.accessor.id === data.viewId) {\r\n if (data.panelId === null &&\r\n data.groupId === this.group.id) {\r\n // don't allow group move to drop on self\r\n return false;\r\n }\r\n // don't show the overlay if the tab being dragged is the last panel of this group\r\n return ((_a = last(this.group.panels)) === null || _a === void 0 ? void 0 : _a.id) !== data.panelId;\r\n }\r\n return group.model.canDisplayOverlay(event, position, DockviewDropTargets.Panel);\r\n },\r\n });\r\n this.addDisposables(handler, handler.onDragStart((event) => {\r\n this._onDragStart.fire(event);\r\n }), this.voidDropTarget.onDrop((event) => {\r\n this._onDrop.fire(event);\r\n }), this.voidDropTarget);\r\n }\r\n}\r\n//# sourceMappingURL=voidContainer.js.map","import { CompositeDisposable, } from '../../../lifecycle';\r\nimport { addDisposableListener, Emitter } from '../../../events';\r\nimport { Tab } from '../tab/tab';\r\nimport { VoidContainer } from './voidContainer';\r\nimport { toggleClass } from '../../../dom';\r\nexport class TabsContainer extends CompositeDisposable {\r\n get panels() {\r\n return this.tabs.map((_) => _.value.panel.id);\r\n }\r\n get size() {\r\n return this.tabs.length;\r\n }\r\n get hidden() {\r\n return this._hidden;\r\n }\r\n set hidden(value) {\r\n this._hidden = value;\r\n this.element.style.display = value ? 'none' : '';\r\n }\r\n show() {\r\n if (!this.hidden) {\r\n this.element.style.display = '';\r\n }\r\n }\r\n hide() {\r\n this._element.style.display = 'none';\r\n }\r\n setRightActionsElement(element) {\r\n if (this.rightActions === element) {\r\n return;\r\n }\r\n if (this.rightActions) {\r\n this.rightActions.remove();\r\n this.rightActions = undefined;\r\n }\r\n if (element) {\r\n this.rightActionsContainer.appendChild(element);\r\n this.rightActions = element;\r\n }\r\n }\r\n setLeftActionsElement(element) {\r\n if (this.leftActions === element) {\r\n return;\r\n }\r\n if (this.leftActions) {\r\n this.leftActions.remove();\r\n this.leftActions = undefined;\r\n }\r\n if (element) {\r\n this.leftActionsContainer.appendChild(element);\r\n this.leftActions = element;\r\n }\r\n }\r\n setPrefixActionsElement(element) {\r\n if (this.preActions === element) {\r\n return;\r\n }\r\n if (this.preActions) {\r\n this.preActions.remove();\r\n this.preActions = undefined;\r\n }\r\n if (element) {\r\n this.preActionsContainer.appendChild(element);\r\n this.preActions = element;\r\n }\r\n }\r\n get element() {\r\n return this._element;\r\n }\r\n isActive(tab) {\r\n return (this.selectedIndex > -1 &&\r\n this.tabs[this.selectedIndex].value === tab);\r\n }\r\n indexOf(id) {\r\n return this.tabs.findIndex((tab) => tab.value.panel.id === id);\r\n }\r\n constructor(accessor, group) {\r\n super();\r\n this.accessor = accessor;\r\n this.group = group;\r\n this.tabs = [];\r\n this.selectedIndex = -1;\r\n this._hidden = false;\r\n this._onDrop = new Emitter();\r\n this.onDrop = this._onDrop.event;\r\n this._onTabDragStart = new Emitter();\r\n this.onTabDragStart = this._onTabDragStart.event;\r\n this._onGroupDragStart = new Emitter();\r\n this.onGroupDragStart = this._onGroupDragStart.event;\r\n this.addDisposables(this._onDrop, this._onTabDragStart, this._onGroupDragStart);\r\n this._element = document.createElement('div');\r\n this._element.className = 'tabs-and-actions-container';\r\n toggleClass(this._element, 'dv-full-width-single-tab', this.accessor.options.singleTabMode === 'fullwidth');\r\n this.addDisposables(this.accessor.onDidAddPanel((e) => {\r\n if (e.api.group === this.group) {\r\n toggleClass(this._element, 'dv-single-tab', this.size === 1);\r\n }\r\n }), this.accessor.onDidRemovePanel((e) => {\r\n if (e.api.group === this.group) {\r\n toggleClass(this._element, 'dv-single-tab', this.size === 1);\r\n }\r\n }));\r\n this.rightActionsContainer = document.createElement('div');\r\n this.rightActionsContainer.className = 'right-actions-container';\r\n this.leftActionsContainer = document.createElement('div');\r\n this.leftActionsContainer.className = 'left-actions-container';\r\n this.preActionsContainer = document.createElement('div');\r\n this.preActionsContainer.className = 'pre-actions-container';\r\n this.tabContainer = document.createElement('div');\r\n this.tabContainer.className = 'tabs-container';\r\n this.voidContainer = new VoidContainer(this.accessor, this.group);\r\n this._element.appendChild(this.preActionsContainer);\r\n this._element.appendChild(this.tabContainer);\r\n this._element.appendChild(this.leftActionsContainer);\r\n this._element.appendChild(this.voidContainer.element);\r\n this._element.appendChild(this.rightActionsContainer);\r\n this.addDisposables(this.voidContainer, this.voidContainer.onDragStart((event) => {\r\n this._onGroupDragStart.fire({\r\n nativeEvent: event,\r\n group: this.group,\r\n });\r\n }), this.voidContainer.onDrop((event) => {\r\n this._onDrop.fire({\r\n event: event.nativeEvent,\r\n index: this.tabs.length,\r\n });\r\n }), addDisposableListener(this.voidContainer.element, 'mousedown', (event) => {\r\n const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;\r\n if (isFloatingGroupsEnabled &&\r\n event.shiftKey &&\r\n !this.group.api.isFloating) {\r\n event.preventDefault();\r\n const { top, left } = this.element.getBoundingClientRect();\r\n const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();\r\n this.accessor.addFloatingGroup(this.group, {\r\n x: left - rootLeft + 20,\r\n y: top - rootTop + 20,\r\n }, { inDragMode: true });\r\n }\r\n }), addDisposableListener(this.tabContainer, 'mousedown', (event) => {\r\n if (event.defaultPrevented) {\r\n return;\r\n }\r\n const isLeftClick = event.button === 0;\r\n if (isLeftClick) {\r\n this.accessor.doSetGroupActive(this.group);\r\n }\r\n }));\r\n }\r\n setActive(_isGroupActive) {\r\n // noop\r\n }\r\n addTab(tab, index = this.tabs.length) {\r\n if (index < 0 || index > this.tabs.length) {\r\n throw new Error('invalid location');\r\n }\r\n this.tabContainer.insertBefore(tab.value.element, this.tabContainer.children[index]);\r\n this.tabs = [\r\n ...this.tabs.slice(0, index),\r\n tab,\r\n ...this.tabs.slice(index),\r\n ];\r\n if (this.selectedIndex < 0) {\r\n this.selectedIndex = index;\r\n }\r\n }\r\n delete(id) {\r\n const index = this.tabs.findIndex((tab) => tab.value.panel.id === id);\r\n const tabToRemove = this.tabs.splice(index, 1)[0];\r\n const { value, disposable } = tabToRemove;\r\n disposable.dispose();\r\n value.dispose();\r\n value.element.remove();\r\n }\r\n setActivePanel(panel) {\r\n this.tabs.forEach((tab) => {\r\n const isActivePanel = panel.id === tab.value.panel.id;\r\n tab.value.setActive(isActivePanel);\r\n });\r\n }\r\n openPanel(panel, index = this.tabs.length) {\r\n var _a;\r\n if (this.tabs.find((tab) => tab.value.panel.id === panel.id)) {\r\n return;\r\n }\r\n const tab = new Tab(panel, this.accessor, this.group);\r\n if (!((_a = panel.view) === null || _a === void 0 ? void 0 : _a.tab)) {\r\n throw new Error('invalid header component');\r\n }\r\n tab.setContent(panel.view.tab);\r\n const disposable = new CompositeDisposable(tab.onDragStart((event) => {\r\n this._onTabDragStart.fire({ nativeEvent: event, panel });\r\n }), tab.onChanged((event) => {\r\n var _a;\r\n const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;\r\n const isFloatingWithOnePanel = this.group.api.isFloating && this.size === 1;\r\n if (isFloatingGroupsEnabled &&\r\n !isFloatingWithOnePanel &&\r\n event.shiftKey) {\r\n event.preventDefault();\r\n const panel = this.accessor.getGroupPanel(tab.panel.id);\r\n const { top, left } = tab.element.getBoundingClientRect();\r\n const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();\r\n this.accessor.addFloatingGroup(panel, {\r\n x: left - rootLeft,\r\n y: top - rootTop,\r\n }, { inDragMode: true });\r\n return;\r\n }\r\n const alreadyFocused = panel.id === ((_a = this.group.model.activePanel) === null || _a === void 0 ? void 0 : _a.id) &&\r\n this.group.model.isContentFocused;\r\n const isLeftClick = event.button === 0;\r\n if (!isLeftClick || event.defaultPrevented) {\r\n return;\r\n }\r\n this.group.model.openPanel(panel, {\r\n skipFocus: alreadyFocused,\r\n });\r\n }), tab.onDrop((event) => {\r\n this._onDrop.fire({\r\n event: event.nativeEvent,\r\n index: this.tabs.findIndex((x) => x.value === tab),\r\n });\r\n }));\r\n const value = { value: tab, disposable };\r\n this.addTab(value, index);\r\n }\r\n closePanel(panel) {\r\n this.delete(panel.id);\r\n }\r\n dispose() {\r\n super.dispose();\r\n for (const { value, disposable } of this.tabs) {\r\n disposable.dispose();\r\n value.dispose();\r\n }\r\n this.tabs = [];\r\n }\r\n}\r\n//# sourceMappingURL=tabsContainer.js.map","import { DockviewApi } from '../api/component.api';\r\nimport { getPanelData } from '../dnd/dataTransfer';\r\nimport { Droptarget } from '../dnd/droptarget';\r\nimport { isAncestor, toggleClass } from '../dom';\r\nimport { addDisposableListener, Emitter } from '../events';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nimport { ContentContainer, } from './components/panel/content';\r\nimport { TabsContainer, } from './components/titlebar/tabsContainer';\r\nimport { DockviewDropTargets } from './types';\r\nexport class DockviewGroupPanelModel extends CompositeDisposable {\r\n get element() {\r\n throw new Error('not supported');\r\n }\r\n get activePanel() {\r\n return this._activePanel;\r\n }\r\n get locked() {\r\n return this._locked;\r\n }\r\n set locked(value) {\r\n this._locked = value;\r\n toggleClass(this.container, 'locked-groupview', value === 'no-drop-target' || value);\r\n }\r\n get isActive() {\r\n return this._isGroupActive;\r\n }\r\n get panels() {\r\n return this._panels;\r\n }\r\n get size() {\r\n return this._panels.length;\r\n }\r\n get isEmpty() {\r\n return this._panels.length === 0;\r\n }\r\n get hasWatermark() {\r\n return !!(this.watermark && this.container.contains(this.watermark.element));\r\n }\r\n get header() {\r\n return this.tabsContainer;\r\n }\r\n get isContentFocused() {\r\n if (!document.activeElement) {\r\n return false;\r\n }\r\n return isAncestor(document.activeElement, this.contentContainer.element);\r\n }\r\n get isFloating() {\r\n return this._isFloating;\r\n }\r\n set isFloating(value) {\r\n this._isFloating = value;\r\n this.dropTarget.setTargetZones(value ? ['center'] : ['top', 'bottom', 'left', 'right', 'center']);\r\n toggleClass(this.container, 'dv-groupview-floating', value);\r\n this.groupPanel.api._onDidFloatingStateChange.fire({\r\n isFloating: this.isFloating,\r\n });\r\n }\r\n constructor(container, accessor, id, options, groupPanel) {\r\n super();\r\n this.container = container;\r\n this.accessor = accessor;\r\n this.id = id;\r\n this.options = options;\r\n this.groupPanel = groupPanel;\r\n this._isGroupActive = false;\r\n this._locked = false;\r\n this._isFloating = false;\r\n this.mostRecentlyUsed = [];\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._width = 0;\r\n this._height = 0;\r\n this._panels = [];\r\n this._onMove = new Emitter();\r\n this.onMove = this._onMove.event;\r\n this._onDidDrop = new Emitter();\r\n this.onDidDrop = this._onDidDrop.event;\r\n this._onTabDragStart = new Emitter();\r\n this.onTabDragStart = this._onTabDragStart.event;\r\n this._onGroupDragStart = new Emitter();\r\n this.onGroupDragStart = this._onGroupDragStart.event;\r\n this._onDidAddPanel = new Emitter();\r\n this.onDidAddPanel = this._onDidAddPanel.event;\r\n this._onDidRemovePanel = new Emitter();\r\n this.onDidRemovePanel = this._onDidRemovePanel.event;\r\n this._onDidActivePanelChange = new Emitter();\r\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\r\n toggleClass(this.container, 'groupview', true);\r\n this.tabsContainer = new TabsContainer(this.accessor, this.groupPanel);\r\n this.contentContainer = new ContentContainer();\r\n this.dropTarget = new Droptarget(this.contentContainer.element, {\r\n acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],\r\n canDisplayOverlay: (event, position) => {\r\n if (this.locked === 'no-drop-target' ||\r\n (this.locked && position === 'center')) {\r\n return false;\r\n }\r\n const data = getPanelData();\r\n if (!data && event.shiftKey && !this.isFloating) {\r\n return false;\r\n }\r\n if (data && data.viewId === this.accessor.id) {\r\n if (data.groupId === this.id) {\r\n if (position === 'center') {\r\n // don't allow to drop on self for center position\r\n return false;\r\n }\r\n if (data.panelId === null) {\r\n // don't allow group move to drop anywhere on self\r\n return false;\r\n }\r\n }\r\n const groupHasOnePanelAndIsActiveDragElement = this._panels.length === 1 && data.groupId === this.id;\r\n return !groupHasOnePanelAndIsActiveDragElement;\r\n }\r\n return this.canDisplayOverlay(event, position, DockviewDropTargets.Panel);\r\n },\r\n });\r\n container.append(this.tabsContainer.element, this.contentContainer.element);\r\n this.header.hidden = !!options.hideHeader;\r\n this.locked = options.locked || false;\r\n this.addDisposables(this._onTabDragStart, this._onGroupDragStart, this.tabsContainer.onTabDragStart((event) => {\r\n this._onTabDragStart.fire(event);\r\n }), this.tabsContainer.onGroupDragStart((event) => {\r\n this._onGroupDragStart.fire(event);\r\n }), this.tabsContainer.onDrop((event) => {\r\n this.handleDropEvent(event.event, 'center', event.index);\r\n }), this.contentContainer.onDidFocus(() => {\r\n this.accessor.doSetGroupActive(this.groupPanel, true);\r\n }), this.contentContainer.onDidBlur(() => {\r\n // noop\r\n }), this.dropTarget.onDrop((event) => {\r\n this.handleDropEvent(event.nativeEvent, event.position);\r\n }), this._onMove, this._onDidChange, this._onDidDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange);\r\n }\r\n initialize() {\r\n var _a, _b;\r\n if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.panels) {\r\n this.options.panels.forEach((panel) => {\r\n this.doAddPanel(panel);\r\n });\r\n }\r\n if ((_b = this.options) === null || _b === void 0 ? void 0 : _b.activePanel) {\r\n this.openPanel(this.options.activePanel);\r\n }\r\n // must be run after the constructor otherwise this.parent may not be\r\n // correctly initialized\r\n this.setActive(this.isActive, true, true);\r\n this.updateContainer();\r\n if (this.accessor.options.createRightHeaderActionsElement) {\r\n this._rightHeaderActions =\r\n this.accessor.options.createRightHeaderActionsElement(this.groupPanel);\r\n this.addDisposables(this._rightHeaderActions);\r\n this._rightHeaderActions.init({\r\n containerApi: new DockviewApi(this.accessor),\r\n api: this.groupPanel.api,\r\n });\r\n this.tabsContainer.setRightActionsElement(this._rightHeaderActions.element);\r\n }\r\n if (this.accessor.options.createLeftHeaderActionsElement) {\r\n this._leftHeaderActions =\r\n this.accessor.options.createLeftHeaderActionsElement(this.groupPanel);\r\n this.addDisposables(this._leftHeaderActions);\r\n this._leftHeaderActions.init({\r\n containerApi: new DockviewApi(this.accessor),\r\n api: this.groupPanel.api,\r\n });\r\n this.tabsContainer.setLeftActionsElement(this._leftHeaderActions.element);\r\n }\r\n if (this.accessor.options.createPrefixHeaderActionsElement) {\r\n this._prefixHeaderActions =\r\n this.accessor.options.createPrefixHeaderActionsElement(this.groupPanel);\r\n this.addDisposables(this._prefixHeaderActions);\r\n this._prefixHeaderActions.init({\r\n containerApi: new DockviewApi(this.accessor),\r\n api: this.groupPanel.api,\r\n });\r\n this.tabsContainer.setPrefixActionsElement(this._prefixHeaderActions.element);\r\n }\r\n }\r\n indexOf(panel) {\r\n return this.tabsContainer.indexOf(panel.id);\r\n }\r\n toJSON() {\r\n var _a;\r\n const result = {\r\n views: this.tabsContainer.panels,\r\n activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,\r\n id: this.id,\r\n };\r\n if (this.locked !== false) {\r\n result.locked = this.locked;\r\n }\r\n if (this.header.hidden) {\r\n result.hideHeader = true;\r\n }\r\n return result;\r\n }\r\n moveToNext(options) {\r\n if (!options) {\r\n options = {};\r\n }\r\n if (!options.panel) {\r\n options.panel = this.activePanel;\r\n }\r\n const index = options.panel ? this.panels.indexOf(options.panel) : -1;\r\n let normalizedIndex;\r\n if (index < this.panels.length - 1) {\r\n normalizedIndex = index + 1;\r\n }\r\n else if (!options.suppressRoll) {\r\n normalizedIndex = 0;\r\n }\r\n else {\r\n return;\r\n }\r\n this.openPanel(this.panels[normalizedIndex]);\r\n }\r\n moveToPrevious(options) {\r\n if (!options) {\r\n options = {};\r\n }\r\n if (!options.panel) {\r\n options.panel = this.activePanel;\r\n }\r\n if (!options.panel) {\r\n return;\r\n }\r\n const index = this.panels.indexOf(options.panel);\r\n let normalizedIndex;\r\n if (index > 0) {\r\n normalizedIndex = index - 1;\r\n }\r\n else if (!options.suppressRoll) {\r\n normalizedIndex = this.panels.length - 1;\r\n }\r\n else {\r\n return;\r\n }\r\n this.openPanel(this.panels[normalizedIndex]);\r\n }\r\n containsPanel(panel) {\r\n return this.panels.includes(panel);\r\n }\r\n init(_params) {\r\n //noop\r\n }\r\n update(_params) {\r\n //noop\r\n }\r\n focus() {\r\n var _a, _b;\r\n (_b = (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n }\r\n openPanel(panel, options = {}) {\r\n if (typeof options.index !== 'number' ||\r\n options.index > this.panels.length) {\r\n options.index = this.panels.length;\r\n }\r\n const skipSetPanelActive = !!options.skipSetPanelActive;\r\n const skipSetGroupActive = !!options.skipSetGroupActive;\r\n // ensure the group is updated before we fire any events\r\n panel.updateParentGroup(this.groupPanel, true);\r\n if (this._activePanel === panel) {\r\n if (!skipSetGroupActive) {\r\n this.accessor.doSetGroupActive(this.groupPanel);\r\n }\r\n return;\r\n }\r\n this.doAddPanel(panel, options.index, skipSetPanelActive);\r\n if (!skipSetPanelActive) {\r\n this.doSetActivePanel(panel);\r\n }\r\n if (!skipSetGroupActive) {\r\n this.accessor.doSetGroupActive(this.groupPanel, !!options.skipFocus);\r\n }\r\n this.updateContainer();\r\n }\r\n removePanel(groupItemOrId) {\r\n const id = typeof groupItemOrId === 'string'\r\n ? groupItemOrId\r\n : groupItemOrId.id;\r\n const panelToRemove = this._panels.find((panel) => panel.id === id);\r\n if (!panelToRemove) {\r\n throw new Error('invalid operation');\r\n }\r\n return this._removePanel(panelToRemove);\r\n }\r\n closeAllPanels() {\r\n if (this.panels.length > 0) {\r\n // take a copy since we will be edting the array as we iterate through\r\n const arrPanelCpy = [...this.panels];\r\n for (const panel of arrPanelCpy) {\r\n this.doClose(panel);\r\n }\r\n }\r\n else {\r\n this.accessor.removeGroup(this.groupPanel);\r\n }\r\n }\r\n closePanel(panel) {\r\n this.doClose(panel);\r\n }\r\n doClose(panel) {\r\n this.accessor.removePanel(panel);\r\n }\r\n isPanelActive(panel) {\r\n return this._activePanel === panel;\r\n }\r\n updateActions(element) {\r\n this.tabsContainer.setRightActionsElement(element);\r\n }\r\n setActive(isGroupActive, skipFocus = false, force = false) {\r\n var _a, _b, _c, _d;\r\n if (!force && this.isActive === isGroupActive) {\r\n if (!skipFocus) {\r\n (_b = (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n }\r\n return;\r\n }\r\n this._isGroupActive = isGroupActive;\r\n toggleClass(this.container, 'active-group', isGroupActive);\r\n toggleClass(this.container, 'inactive-group', !isGroupActive);\r\n this.tabsContainer.setActive(this.isActive);\r\n if (!this._activePanel && this.panels.length > 0) {\r\n this.doSetActivePanel(this.panels[0]);\r\n }\r\n this.updateContainer();\r\n if (isGroupActive) {\r\n if (!skipFocus) {\r\n (_d = (_c = this._activePanel) === null || _c === void 0 ? void 0 : _c.focus) === null || _d === void 0 ? void 0 : _d.call(_c);\r\n }\r\n }\r\n }\r\n layout(width, height) {\r\n var _a;\r\n this._width = width;\r\n this._height = height;\r\n this.contentContainer.layout(this._width, this._height);\r\n if ((_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.layout) {\r\n this._activePanel.layout(this._width, this._height);\r\n }\r\n }\r\n _removePanel(panel) {\r\n const isActivePanel = this._activePanel === panel;\r\n this.doRemovePanel(panel);\r\n if (isActivePanel && this.panels.length > 0) {\r\n const nextPanel = this.mostRecentlyUsed[0];\r\n this.openPanel(nextPanel);\r\n }\r\n if (this._activePanel && this.panels.length === 0) {\r\n this.doSetActivePanel(undefined);\r\n }\r\n this.updateContainer();\r\n return panel;\r\n }\r\n doRemovePanel(panel) {\r\n const index = this.panels.indexOf(panel);\r\n if (this._activePanel === panel) {\r\n this.contentContainer.closePanel();\r\n }\r\n this.tabsContainer.delete(panel.id);\r\n this._panels.splice(index, 1);\r\n if (this.mostRecentlyUsed.includes(panel)) {\r\n this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);\r\n }\r\n this._onDidRemovePanel.fire({ panel });\r\n }\r\n doAddPanel(panel, index = this.panels.length, skipSetActive = false) {\r\n const existingPanel = this._panels.indexOf(panel);\r\n const hasExistingPanel = existingPanel > -1;\r\n this.tabsContainer.openPanel(panel, index);\r\n if (!skipSetActive) {\r\n this.contentContainer.openPanel(panel);\r\n }\r\n this.tabsContainer.show();\r\n this.contentContainer.show();\r\n if (hasExistingPanel) {\r\n // TODO - need to ensure ordering hasn't changed and if it has need to re-order this.panels\r\n return;\r\n }\r\n this.updateMru(panel);\r\n this.panels.splice(index, 0, panel);\r\n this._onDidAddPanel.fire({ panel });\r\n }\r\n doSetActivePanel(panel) {\r\n this._activePanel = panel;\r\n if (panel) {\r\n this.tabsContainer.setActivePanel(panel);\r\n panel.layout(this._width, this._height);\r\n this.updateMru(panel);\r\n this._onDidActivePanelChange.fire({ panel });\r\n }\r\n }\r\n updateMru(panel) {\r\n if (this.mostRecentlyUsed.includes(panel)) {\r\n this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);\r\n }\r\n this.mostRecentlyUsed = [panel, ...this.mostRecentlyUsed];\r\n }\r\n updateContainer() {\r\n var _a, _b;\r\n toggleClass(this.container, 'empty', this.isEmpty);\r\n this.panels.forEach((panel) => panel.updateParentGroup(this.groupPanel, this.isActive));\r\n if (this.isEmpty && !this.watermark) {\r\n const watermark = this.accessor.createWatermarkComponent();\r\n watermark.init({\r\n containerApi: new DockviewApi(this.accessor),\r\n group: this.groupPanel,\r\n });\r\n this.watermark = watermark;\r\n addDisposableListener(this.watermark.element, 'click', () => {\r\n if (!this.isActive) {\r\n this.accessor.doSetGroupActive(this.groupPanel);\r\n }\r\n });\r\n this.tabsContainer.hide();\r\n this.contentContainer.element.appendChild(this.watermark.element);\r\n this.watermark.updateParentGroup(this.groupPanel, true);\r\n }\r\n if (!this.isEmpty && this.watermark) {\r\n this.watermark.element.remove();\r\n (_b = (_a = this.watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n this.watermark = undefined;\r\n this.tabsContainer.show();\r\n }\r\n }\r\n canDisplayOverlay(event, position, target) {\r\n // custom overlay handler\r\n if (this.accessor.options.showDndOverlay) {\r\n return this.accessor.options.showDndOverlay({\r\n nativeEvent: event,\r\n target,\r\n group: this.accessor.getPanel(this.id),\r\n position,\r\n getData: getPanelData,\r\n });\r\n }\r\n return false;\r\n }\r\n handleDropEvent(event, position, index) {\r\n if (this.locked === 'no-drop-target') {\r\n return;\r\n }\r\n const data = getPanelData();\r\n if (data && data.viewId === this.accessor.id) {\r\n if (data.panelId === null) {\r\n // this is a group move dnd event\r\n const { groupId } = data;\r\n this._onMove.fire({\r\n target: position,\r\n groupId: groupId,\r\n index,\r\n });\r\n return;\r\n }\r\n const fromSameGroup = this.tabsContainer.indexOf(data.panelId) !== -1;\r\n if (fromSameGroup && this.tabsContainer.size === 1) {\r\n return;\r\n }\r\n const { groupId, panelId } = data;\r\n const isSameGroup = this.id === groupId;\r\n if (isSameGroup && !position) {\r\n const oldIndex = this.tabsContainer.indexOf(panelId);\r\n if (oldIndex === index) {\r\n return;\r\n }\r\n }\r\n this._onMove.fire({\r\n target: position,\r\n groupId: data.groupId,\r\n itemId: data.panelId,\r\n index,\r\n });\r\n }\r\n else {\r\n this._onDidDrop.fire({\r\n nativeEvent: event,\r\n position,\r\n index,\r\n getData: () => getPanelData(),\r\n });\r\n }\r\n }\r\n dispose() {\r\n var _a, _b, _c;\r\n super.dispose();\r\n (_a = this.watermark) === null || _a === void 0 ? void 0 : _a.element.remove();\r\n (_c = (_b = this.watermark) === null || _b === void 0 ? void 0 : _b.dispose) === null || _c === void 0 ? void 0 : _c.call(_b);\r\n for (const panel of this.panels) {\r\n panel.dispose();\r\n }\r\n this.dropTarget.dispose();\r\n this.tabsContainer.dispose();\r\n this.contentContainer.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=dockviewGroupPanelModel.js.map","import { watchElementResize } from './dom';\r\nimport { CompositeDisposable } from './lifecycle';\r\nexport class Resizable extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor(parentElement) {\r\n super();\r\n if (parentElement) {\r\n this._element = parentElement;\r\n }\r\n else {\r\n this._element = document.createElement('div');\r\n this._element.style.height = '100%';\r\n this._element.style.width = '100%';\r\n this._element.className = 'dv-resizable-container';\r\n }\r\n this.addDisposables(watchElementResize(this._element, (entry) => {\r\n if (this.isDisposed) {\r\n /**\r\n * resize is delayed through requestAnimationFrame so there is a small chance\r\n * the component has already been disposed of\r\n */\r\n return;\r\n }\r\n if (!document.body.contains(this._element)) {\r\n /**\r\n * since the event is dispatched through requestAnimationFrame there is a small chance\r\n * the component is no longer attached to the DOM, if that is the case the dimensions\r\n * are mostly likely all zero and meaningless. we should skip this case.\r\n */\r\n return;\r\n }\r\n const { width, height } = entry.contentRect;\r\n this.layout(width, height);\r\n }));\r\n }\r\n}\r\n//# sourceMappingURL=resizable.js.map","import { Emitter, Event, TickDelayedEvent } from '../events';\r\nimport { getGridLocation, Gridview } from './gridview';\r\nimport { sequentialNumberGenerator } from '../math';\r\nimport { Sizing } from '../splitview/splitview';\r\nimport { Resizable } from '../resizable';\r\nconst nextLayoutId = sequentialNumberGenerator();\r\nexport function toTarget(direction) {\r\n switch (direction) {\r\n case 'left':\r\n return 'left';\r\n case 'right':\r\n return 'right';\r\n case 'above':\r\n return 'top';\r\n case 'below':\r\n return 'bottom';\r\n case 'within':\r\n default:\r\n return 'center';\r\n }\r\n}\r\nexport class BaseGrid extends Resizable {\r\n get id() {\r\n return this._id;\r\n }\r\n get size() {\r\n return this._groups.size;\r\n }\r\n get groups() {\r\n return Array.from(this._groups.values()).map((_) => _.value);\r\n }\r\n get width() {\r\n return this.gridview.width;\r\n }\r\n get height() {\r\n return this.gridview.height;\r\n }\r\n get minimumHeight() {\r\n return this.gridview.minimumHeight;\r\n }\r\n get maximumHeight() {\r\n return this.gridview.maximumHeight;\r\n }\r\n get minimumWidth() {\r\n return this.gridview.minimumWidth;\r\n }\r\n get maximumWidth() {\r\n return this.gridview.maximumWidth;\r\n }\r\n get activeGroup() {\r\n return this._activeGroup;\r\n }\r\n constructor(options) {\r\n super(options.parentElement);\r\n this._id = nextLayoutId.next();\r\n this._groups = new Map();\r\n this._onDidLayoutChange = new Emitter();\r\n this.onDidLayoutChange = this._onDidLayoutChange.event;\r\n this._onDidRemoveGroup = new Emitter();\r\n this.onDidRemoveGroup = this._onDidRemoveGroup.event;\r\n this._onDidAddGroup = new Emitter();\r\n this.onDidAddGroup = this._onDidAddGroup.event;\r\n this._onDidActiveGroupChange = new Emitter();\r\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\r\n this._bufferOnDidLayoutChange = new TickDelayedEvent();\r\n this.gridview = new Gridview(!!options.proportionalLayout, options.styles, options.orientation);\r\n this.element.appendChild(this.gridview.element);\r\n this.layout(0, 0, true); // set some elements height/widths\r\n this.addDisposables(this.gridview.onDidChange(() => {\r\n this._bufferOnDidLayoutChange.fire();\r\n }), Event.any(this.onDidAddGroup, this.onDidRemoveGroup, this.onDidActiveGroupChange)(() => {\r\n this._bufferOnDidLayoutChange.fire();\r\n }), this._bufferOnDidLayoutChange.onEvent(() => {\r\n this._onDidLayoutChange.fire();\r\n }), this._bufferOnDidLayoutChange);\r\n }\r\n setVisible(panel, visible) {\r\n this.gridview.setViewVisible(getGridLocation(panel.element), visible);\r\n this._onDidLayoutChange.fire();\r\n }\r\n isVisible(panel) {\r\n return this.gridview.isViewVisible(getGridLocation(panel.element));\r\n }\r\n doAddGroup(group, location = [0], size) {\r\n this.gridview.addView(group, size !== null && size !== void 0 ? size : Sizing.Distribute, location);\r\n this._onDidAddGroup.fire(group);\r\n this.doSetGroupActive(group);\r\n }\r\n doRemoveGroup(group, options) {\r\n if (!this._groups.has(group.id)) {\r\n throw new Error('invalid operation');\r\n }\r\n const item = this._groups.get(group.id);\r\n const view = this.gridview.remove(group, Sizing.Distribute);\r\n if (item && !(options === null || options === void 0 ? void 0 : options.skipDispose)) {\r\n item.disposable.dispose();\r\n item.value.dispose();\r\n this._groups.delete(group.id);\r\n }\r\n this._onDidRemoveGroup.fire(group);\r\n if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {\r\n const groups = Array.from(this._groups.values());\r\n this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);\r\n }\r\n return view;\r\n }\r\n getPanel(id) {\r\n var _a;\r\n return (_a = this._groups.get(id)) === null || _a === void 0 ? void 0 : _a.value;\r\n }\r\n doSetGroupActive(group, skipFocus) {\r\n var _a, _b, _c;\r\n if (this._activeGroup === group) {\r\n return;\r\n }\r\n if (this._activeGroup) {\r\n this._activeGroup.setActive(false);\r\n if (!skipFocus) {\r\n (_b = (_a = this._activeGroup).focus) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n }\r\n }\r\n if (group) {\r\n group.setActive(true);\r\n if (!skipFocus) {\r\n (_c = group.focus) === null || _c === void 0 ? void 0 : _c.call(group);\r\n }\r\n }\r\n this._activeGroup = group;\r\n this._onDidActiveGroupChange.fire(group);\r\n }\r\n removeGroup(group) {\r\n this.doRemoveGroup(group);\r\n }\r\n moveToNext(options) {\r\n var _a;\r\n if (!options) {\r\n options = {};\r\n }\r\n if (!options.group) {\r\n if (!this.activeGroup) {\r\n return;\r\n }\r\n options.group = this.activeGroup;\r\n }\r\n const location = getGridLocation(options.group.element);\r\n const next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;\r\n this.doSetGroupActive(next);\r\n }\r\n moveToPrevious(options) {\r\n var _a;\r\n if (!options) {\r\n options = {};\r\n }\r\n if (!options.group) {\r\n if (!this.activeGroup) {\r\n return;\r\n }\r\n options.group = this.activeGroup;\r\n }\r\n const location = getGridLocation(options.group.element);\r\n const next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;\r\n this.doSetGroupActive(next);\r\n }\r\n layout(width, height, forceResize) {\r\n const different = forceResize || width !== this.width || height !== this.height;\r\n if (!different) {\r\n return;\r\n }\r\n this.gridview.element.style.height = `${height}px`;\r\n this.gridview.element.style.width = `${width}px`;\r\n this.gridview.layout(width, height);\r\n }\r\n dispose() {\r\n this._onDidActiveGroupChange.dispose();\r\n this._onDidAddGroup.dispose();\r\n this._onDidRemoveGroup.dispose();\r\n this._onDidLayoutChange.dispose();\r\n for (const group of this.groups) {\r\n group.dispose();\r\n }\r\n this.gridview.dispose();\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=baseComponentGridview.js.map","import { Emitter } from '../events';\r\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\r\n/**\r\n * A core api implementation that should be used across all panel-like objects\r\n */\r\nexport class PanelApiImpl extends CompositeDisposable {\r\n //\r\n get isFocused() {\r\n return this._isFocused;\r\n }\r\n get isActive() {\r\n return this._isActive;\r\n }\r\n get isVisible() {\r\n return this._isVisible;\r\n }\r\n get width() {\r\n return this._width;\r\n }\r\n get height() {\r\n return this._height;\r\n }\r\n constructor(id) {\r\n super();\r\n this.id = id;\r\n this._isFocused = false;\r\n this._isActive = false;\r\n this._isVisible = true;\r\n this._width = 0;\r\n this._height = 0;\r\n this.panelUpdatesDisposable = new MutableDisposable();\r\n this._onDidDimensionChange = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidDimensionsChange = this._onDidDimensionChange.event;\r\n //\r\n this._onDidChangeFocus = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidFocusChange = this._onDidChangeFocus.event;\r\n //\r\n this._onFocusEvent = new Emitter();\r\n this.onFocusEvent = this._onFocusEvent.event;\r\n //\r\n this._onDidVisibilityChange = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidVisibilityChange = this._onDidVisibilityChange.event;\r\n //\r\n this._onVisibilityChange = new Emitter();\r\n this.onVisibilityChange = this._onVisibilityChange.event;\r\n //\r\n this._onDidActiveChange = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidActiveChange = this._onDidActiveChange.event;\r\n //\r\n this._onActiveChange = new Emitter();\r\n this.onActiveChange = this._onActiveChange.event;\r\n //\r\n this._onUpdateParameters = new Emitter();\r\n this.onUpdateParameters = this._onUpdateParameters.event;\r\n this.addDisposables(this.onDidFocusChange((event) => {\r\n this._isFocused = event.isFocused;\r\n }), this.onDidActiveChange((event) => {\r\n this._isActive = event.isActive;\r\n }), this.onDidVisibilityChange((event) => {\r\n this._isVisible = event.isVisible;\r\n }), this.onDidDimensionsChange((event) => {\r\n this._width = event.width;\r\n this._height = event.height;\r\n }), this.panelUpdatesDisposable, this._onDidDimensionChange, this._onDidChangeFocus, this._onDidVisibilityChange, this._onDidActiveChange, this._onFocusEvent, this._onActiveChange, this._onVisibilityChange, this._onUpdateParameters);\r\n }\r\n initialize(panel) {\r\n this.panelUpdatesDisposable.value = this._onUpdateParameters.event((parameters) => {\r\n panel.update({\r\n params: parameters,\r\n });\r\n });\r\n }\r\n setVisible(isVisible) {\r\n this._onVisibilityChange.fire({ isVisible });\r\n }\r\n setActive() {\r\n this._onActiveChange.fire();\r\n }\r\n updateParameters(parameters) {\r\n this._onUpdateParameters.fire(parameters);\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=panelApi.js.map","import { Emitter } from '../events';\r\nimport { PanelApiImpl } from './panelApi';\r\nexport class SplitviewPanelApiImpl extends PanelApiImpl {\r\n //\r\n constructor(id) {\r\n super(id);\r\n this._onDidConstraintsChangeInternal = new Emitter();\r\n this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;\r\n //\r\n this._onDidConstraintsChange = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidConstraintsChange = this._onDidConstraintsChange.event;\r\n //\r\n this._onDidSizeChange = new Emitter();\r\n this.onDidSizeChange = this._onDidSizeChange.event;\r\n this.addDisposables(this._onDidConstraintsChangeInternal, this._onDidConstraintsChange, this._onDidSizeChange);\r\n }\r\n setConstraints(value) {\r\n this._onDidConstraintsChangeInternal.fire(value);\r\n }\r\n setSize(event) {\r\n this._onDidSizeChange.fire(event);\r\n }\r\n}\r\n//# sourceMappingURL=splitviewPanelApi.js.map","import { Emitter } from '../events';\r\nimport { SplitviewPanelApiImpl } from './splitviewPanelApi';\r\nexport class PaneviewPanelApiImpl extends SplitviewPanelApiImpl {\r\n set pane(pane) {\r\n this._pane = pane;\r\n }\r\n constructor(id) {\r\n super(id);\r\n this._onDidExpansionChange = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidExpansionChange = this._onDidExpansionChange.event;\r\n this._onMouseEnter = new Emitter({});\r\n this.onMouseEnter = this._onMouseEnter.event;\r\n this._onMouseLeave = new Emitter({});\r\n this.onMouseLeave = this._onMouseLeave.event;\r\n this.addDisposables(this._onDidExpansionChange, this._onMouseEnter, this._onMouseLeave);\r\n }\r\n setExpanded(isExpanded) {\r\n var _a;\r\n (_a = this._pane) === null || _a === void 0 ? void 0 : _a.setExpanded(isExpanded);\r\n }\r\n get isExpanded() {\r\n var _a;\r\n return !!((_a = this._pane) === null || _a === void 0 ? void 0 : _a.isExpanded());\r\n }\r\n}\r\n//# sourceMappingURL=paneviewPanelApi.js.map","import { trackFocus } from '../dom';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nexport class BasePanelView extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n get width() {\r\n return this._width;\r\n }\r\n get height() {\r\n return this._height;\r\n }\r\n get params() {\r\n var _a;\r\n return (_a = this._params) === null || _a === void 0 ? void 0 : _a.params;\r\n }\r\n constructor(id, component, api) {\r\n super();\r\n this.id = id;\r\n this.component = component;\r\n this.api = api;\r\n this._height = 0;\r\n this._width = 0;\r\n this._element = document.createElement('div');\r\n this._element.tabIndex = -1;\r\n this._element.style.outline = 'none';\r\n this._element.style.height = '100%';\r\n this._element.style.width = '100%';\r\n this._element.style.overflow = 'hidden';\r\n const focusTracker = trackFocus(this._element);\r\n this.addDisposables(this.api, focusTracker.onDidFocus(() => {\r\n this.api._onDidChangeFocus.fire({ isFocused: true });\r\n }), focusTracker.onDidBlur(() => {\r\n this.api._onDidChangeFocus.fire({ isFocused: false });\r\n }), focusTracker);\r\n }\r\n focus() {\r\n this.api._onFocusEvent.fire();\r\n }\r\n layout(width, height) {\r\n this._width = width;\r\n this._height = height;\r\n this.api._onDidDimensionChange.fire({ width, height });\r\n if (this.part) {\r\n if (this._params) {\r\n this.part.update(this._params.params);\r\n }\r\n }\r\n }\r\n init(parameters) {\r\n this._params = parameters;\r\n this.part = this.getComponent();\r\n }\r\n update(event) {\r\n var _a, _b;\r\n // merge the new parameters with the existing parameters\r\n this._params = Object.assign(Object.assign({}, this._params), { params: Object.assign(Object.assign({}, (_a = this._params) === null || _a === void 0 ? void 0 : _a.params), event.params) });\r\n /**\r\n * delete new keys that have a value of undefined,\r\n * allow values of null\r\n */\r\n for (const key of Object.keys(event.params)) {\r\n if (event.params[key] === undefined) {\r\n delete this._params.params[key];\r\n }\r\n }\r\n // update the view with the updated props\r\n (_b = this.part) === null || _b === void 0 ? void 0 : _b.update({ params: this._params.params });\r\n }\r\n toJSON() {\r\n var _a, _b;\r\n const params = (_b = (_a = this._params) === null || _a === void 0 ? void 0 : _a.params) !== null && _b !== void 0 ? _b : {};\r\n return {\r\n id: this.id,\r\n component: this.component,\r\n params: Object.keys(params).length > 0 ? params : undefined,\r\n };\r\n }\r\n dispose() {\r\n var _a;\r\n this.api.dispose();\r\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=basePanelView.js.map","import { PaneviewPanelApiImpl } from '../api/paneviewPanelApi';\r\nimport { addClasses, removeClasses } from '../dom';\r\nimport { addDisposableListener, Emitter } from '../events';\r\nimport { BasePanelView, } from '../gridview/basePanelView';\r\nimport { Orientation } from '../splitview/splitview';\r\nexport class PaneviewPanel extends BasePanelView {\r\n set orientation(value) {\r\n this._orientation = value;\r\n }\r\n get orientation() {\r\n return this._orientation;\r\n }\r\n get minimumSize() {\r\n const headerSize = this.headerSize;\r\n const expanded = this.isExpanded();\r\n const minimumBodySize = expanded ? this._minimumBodySize : 0;\r\n return headerSize + minimumBodySize;\r\n }\r\n get maximumSize() {\r\n const headerSize = this.headerSize;\r\n const expanded = this.isExpanded();\r\n const maximumBodySize = expanded ? this._maximumBodySize : 0;\r\n return headerSize + maximumBodySize;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n get orthogonalSize() {\r\n return this._orthogonalSize;\r\n }\r\n set orthogonalSize(size) {\r\n this._orthogonalSize = size;\r\n }\r\n get minimumBodySize() {\r\n return this._minimumBodySize;\r\n }\r\n set minimumBodySize(value) {\r\n this._minimumBodySize = typeof value === 'number' ? value : 0;\r\n }\r\n get maximumBodySize() {\r\n return this._maximumBodySize;\r\n }\r\n set maximumBodySize(value) {\r\n this._maximumBodySize =\r\n typeof value === 'number' ? value : Number.POSITIVE_INFINITY;\r\n }\r\n get headerVisible() {\r\n return this._headerVisible;\r\n }\r\n set headerVisible(value) {\r\n this._headerVisible = value;\r\n this.header.style.display = value ? '' : 'none';\r\n }\r\n constructor(id, component, headerComponent, orientation, isExpanded, isHeaderVisible) {\r\n super(id, component, new PaneviewPanelApiImpl(id));\r\n this.headerComponent = headerComponent;\r\n this._onDidChangeExpansionState = new Emitter({ replay: true });\r\n this.onDidChangeExpansionState = this._onDidChangeExpansionState.event;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this.headerSize = 22;\r\n this._orthogonalSize = 0;\r\n this._size = 0;\r\n this._minimumBodySize = 100;\r\n this._maximumBodySize = Number.POSITIVE_INFINITY;\r\n this._isExpanded = false;\r\n this.expandedSize = 0;\r\n this.api.pane = this; // TODO cannot use 'this' before 'super'\r\n this.api.initialize(this);\r\n this._isExpanded = isExpanded;\r\n this._headerVisible = isHeaderVisible;\r\n this._onDidChangeExpansionState.fire(this.isExpanded()); // initialize value\r\n this._orientation = orientation;\r\n this.element.classList.add('pane');\r\n this.addDisposables(this.api.onDidSizeChange((event) => {\r\n this._onDidChange.fire({ size: event.size });\r\n }), addDisposableListener(this.element, 'mouseenter', (ev) => {\r\n this.api._onMouseEnter.fire(ev);\r\n }), addDisposableListener(this.element, 'mouseleave', (ev) => {\r\n this.api._onMouseLeave.fire(ev);\r\n }));\r\n this.addDisposables(this._onDidChangeExpansionState, this.onDidChangeExpansionState((isPanelExpanded) => {\r\n this.api._onDidExpansionChange.fire({\r\n isExpanded: isPanelExpanded,\r\n });\r\n }), this.api.onDidFocusChange((e) => {\r\n if (!this.header) {\r\n return;\r\n }\r\n if (e.isFocused) {\r\n addClasses(this.header, 'focused');\r\n }\r\n else {\r\n removeClasses(this.header, 'focused');\r\n }\r\n }));\r\n this.renderOnce();\r\n }\r\n setVisible(isVisible) {\r\n this.api._onDidVisibilityChange.fire({ isVisible });\r\n }\r\n setActive(isActive) {\r\n this.api._onDidActiveChange.fire({ isActive });\r\n }\r\n isExpanded() {\r\n return this._isExpanded;\r\n }\r\n setExpanded(expanded) {\r\n if (this._isExpanded === expanded) {\r\n return;\r\n }\r\n this._isExpanded = expanded;\r\n if (expanded) {\r\n if (this.animationTimer) {\r\n clearTimeout(this.animationTimer);\r\n }\r\n if (this.body) {\r\n this.element.appendChild(this.body);\r\n }\r\n }\r\n else {\r\n this.animationTimer = setTimeout(() => {\r\n var _a;\r\n (_a = this.body) === null || _a === void 0 ? void 0 : _a.remove();\r\n }, 200);\r\n }\r\n this._onDidChange.fire(expanded ? { size: this.width } : {});\r\n this._onDidChangeExpansionState.fire(expanded);\r\n }\r\n layout(size, orthogonalSize) {\r\n this._size = size;\r\n this._orthogonalSize = orthogonalSize;\r\n const [width, height] = this.orientation === Orientation.HORIZONTAL\r\n ? [size, orthogonalSize]\r\n : [orthogonalSize, size];\r\n if (this.isExpanded()) {\r\n this.expandedSize = width;\r\n }\r\n super.layout(width, height);\r\n }\r\n init(parameters) {\r\n var _a, _b;\r\n super.init(parameters);\r\n if (typeof parameters.minimumBodySize === 'number') {\r\n this.minimumBodySize = parameters.minimumBodySize;\r\n }\r\n if (typeof parameters.maximumBodySize === 'number') {\r\n this.maximumBodySize = parameters.maximumBodySize;\r\n }\r\n this.bodyPart = this.getBodyComponent();\r\n this.headerPart = this.getHeaderComponent();\r\n this.bodyPart.init(Object.assign(Object.assign({}, parameters), { api: this.api }));\r\n this.headerPart.init(Object.assign(Object.assign({}, parameters), { api: this.api }));\r\n (_a = this.body) === null || _a === void 0 ? void 0 : _a.append(this.bodyPart.element);\r\n (_b = this.header) === null || _b === void 0 ? void 0 : _b.append(this.headerPart.element);\r\n if (typeof parameters.isExpanded === 'boolean') {\r\n this.setExpanded(parameters.isExpanded);\r\n }\r\n }\r\n toJSON() {\r\n const params = this._params;\r\n return Object.assign(Object.assign({}, super.toJSON()), { headerComponent: this.headerComponent, title: params.title });\r\n }\r\n renderOnce() {\r\n this.header = document.createElement('div');\r\n this.header.tabIndex = 0;\r\n this.header.className = 'pane-header';\r\n this.header.style.height = `${this.headerSize}px`;\r\n this.header.style.lineHeight = `${this.headerSize}px`;\r\n this.header.style.minHeight = `${this.headerSize}px`;\r\n this.header.style.maxHeight = `${this.headerSize}px`;\r\n this.element.appendChild(this.header);\r\n this.body = document.createElement('div');\r\n this.body.className = 'pane-body';\r\n this.element.appendChild(this.body);\r\n }\r\n // TODO slightly hacky by-pass of the component to create a body and header component\r\n getComponent() {\r\n return {\r\n update: (params) => {\r\n var _a, _b;\r\n (_a = this.bodyPart) === null || _a === void 0 ? void 0 : _a.update({ params });\r\n (_b = this.headerPart) === null || _b === void 0 ? void 0 : _b.update({ params });\r\n },\r\n dispose: () => {\r\n var _a, _b;\r\n (_a = this.bodyPart) === null || _a === void 0 ? void 0 : _a.dispose();\r\n (_b = this.headerPart) === null || _b === void 0 ? void 0 : _b.dispose();\r\n },\r\n };\r\n }\r\n}\r\n//# sourceMappingURL=paneviewPanel.js.map","import { PaneviewApi } from '../api/component.api';\r\nimport { DragHandler } from '../dnd/abstractDragHandler';\r\nimport { getPaneData, LocalSelectionTransfer, PaneTransfer, } from '../dnd/dataTransfer';\r\nimport { Droptarget } from '../dnd/droptarget';\r\nimport { Emitter } from '../events';\r\nimport { PaneviewPanel, } from './paneviewPanel';\r\nexport class DraggablePaneviewPanel extends PaneviewPanel {\r\n constructor(accessor, id, component, headerComponent, orientation, isExpanded, disableDnd) {\r\n super(id, component, headerComponent, orientation, isExpanded, true);\r\n this.accessor = accessor;\r\n this._onDidDrop = new Emitter();\r\n this.onDidDrop = this._onDidDrop.event;\r\n if (!disableDnd) {\r\n this.initDragFeatures();\r\n }\r\n }\r\n initDragFeatures() {\r\n if (!this.header) {\r\n return;\r\n }\r\n const id = this.id;\r\n const accessorId = this.accessor.id;\r\n this.header.draggable = true;\r\n this.handler = new (class PaneDragHandler extends DragHandler {\r\n getData() {\r\n LocalSelectionTransfer.getInstance().setData([new PaneTransfer(accessorId, id)], PaneTransfer.prototype);\r\n return {\r\n dispose: () => {\r\n LocalSelectionTransfer.getInstance().clearData(PaneTransfer.prototype);\r\n },\r\n };\r\n }\r\n })(this.header);\r\n this.target = new Droptarget(this.element, {\r\n acceptedTargetZones: ['top', 'bottom'],\r\n overlayModel: {\r\n activationSize: { type: 'percentage', value: 50 },\r\n },\r\n canDisplayOverlay: (event) => {\r\n const data = getPaneData();\r\n if (data) {\r\n if (data.paneId !== this.id &&\r\n data.viewId === this.accessor.id) {\r\n return true;\r\n }\r\n }\r\n if (this.accessor.options.showDndOverlay) {\r\n return this.accessor.options.showDndOverlay({\r\n nativeEvent: event,\r\n getData: getPaneData,\r\n panel: this,\r\n });\r\n }\r\n return false;\r\n },\r\n });\r\n this.addDisposables(this._onDidDrop, this.handler, this.target, this.target.onDrop((event) => {\r\n this.onDrop(event);\r\n }));\r\n }\r\n onDrop(event) {\r\n const data = getPaneData();\r\n if (!data || data.viewId !== this.accessor.id) {\r\n // if there is no local drag event for this panel\r\n // or if the drag event was creating by another Paneview instance\r\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, api: new PaneviewApi(this.accessor), getData: getPaneData }));\r\n return;\r\n }\r\n const containerApi = this._params\r\n .containerApi;\r\n const panelId = data.paneId;\r\n const existingPanel = containerApi.getPanel(panelId);\r\n if (!existingPanel) {\r\n // if the panel doesn't exist\r\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: getPaneData, api: new PaneviewApi(this.accessor) }));\r\n return;\r\n }\r\n const allPanels = containerApi.panels;\r\n const fromIndex = allPanels.indexOf(existingPanel);\r\n let toIndex = containerApi.panels.indexOf(this);\r\n if (event.position === 'left' || event.position === 'top') {\r\n toIndex = Math.max(0, toIndex - 1);\r\n }\r\n if (event.position === 'right' || event.position === 'bottom') {\r\n if (fromIndex > toIndex) {\r\n toIndex++;\r\n }\r\n toIndex = Math.min(allPanels.length - 1, toIndex);\r\n }\r\n containerApi.movePanel(fromIndex, toIndex);\r\n }\r\n}\r\n//# sourceMappingURL=draggablePaneviewPanel.js.map","import { Emitter } from '../events';\r\nimport { PanelApiImpl } from './panelApi';\r\nexport class GridviewPanelApiImpl extends PanelApiImpl {\r\n constructor(id, panel) {\r\n super(id);\r\n this._onDidConstraintsChangeInternal = new Emitter();\r\n this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;\r\n this._onDidConstraintsChange = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidConstraintsChange = this._onDidConstraintsChange.event;\r\n this._onDidSizeChange = new Emitter();\r\n this.onDidSizeChange = this._onDidSizeChange.event;\r\n this.addDisposables(this._onDidConstraintsChangeInternal, this._onDidConstraintsChange, this._onDidSizeChange);\r\n if (panel) {\r\n this.initialize(panel);\r\n }\r\n }\r\n setConstraints(value) {\r\n this._onDidConstraintsChangeInternal.fire(value);\r\n }\r\n setSize(event) {\r\n this._onDidSizeChange.fire(event);\r\n }\r\n}\r\n//# sourceMappingURL=gridviewPanelApi.js.map","import { BasePanelView, } from './basePanelView';\r\nimport { GridviewPanelApiImpl, } from '../api/gridviewPanelApi';\r\nimport { Emitter } from '../events';\r\nexport class GridviewPanel extends BasePanelView {\r\n get priority() {\r\n return this._priority;\r\n }\r\n get snap() {\r\n return this._snap;\r\n }\r\n get minimumWidth() {\r\n const width = typeof this._minimumWidth === 'function'\r\n ? this._minimumWidth()\r\n : this._minimumWidth;\r\n if (width !== this._evaluatedMinimumWidth) {\r\n this._evaluatedMinimumWidth = width;\r\n this.updateConstraints();\r\n }\r\n return width;\r\n }\r\n get minimumHeight() {\r\n const height = typeof this._minimumHeight === 'function'\r\n ? this._minimumHeight()\r\n : this._minimumHeight;\r\n if (height !== this._evaluatedMinimumHeight) {\r\n this._evaluatedMinimumHeight = height;\r\n this.updateConstraints();\r\n }\r\n return height;\r\n }\r\n get maximumHeight() {\r\n const height = typeof this._maximumHeight === 'function'\r\n ? this._maximumHeight()\r\n : this._maximumHeight;\r\n if (height !== this._evaluatedMaximumHeight) {\r\n this._evaluatedMaximumHeight = height;\r\n this.updateConstraints();\r\n }\r\n return height;\r\n }\r\n get maximumWidth() {\r\n const width = typeof this._maximumWidth === 'function'\r\n ? this._maximumWidth()\r\n : this._maximumWidth;\r\n if (width !== this._evaluatedMaximumWidth) {\r\n this._evaluatedMaximumWidth = width;\r\n this.updateConstraints();\r\n }\r\n return width;\r\n }\r\n get isActive() {\r\n return this.api.isActive;\r\n }\r\n constructor(id, component, options, api) {\r\n super(id, component, api !== null && api !== void 0 ? api : new GridviewPanelApiImpl(id));\r\n this._evaluatedMinimumWidth = 0;\r\n this._evaluatedMaximumWidth = Number.MAX_SAFE_INTEGER;\r\n this._evaluatedMinimumHeight = 0;\r\n this._evaluatedMaximumHeight = Number.MAX_SAFE_INTEGER;\r\n this._minimumWidth = 0;\r\n this._minimumHeight = 0;\r\n this._maximumWidth = Number.MAX_SAFE_INTEGER;\r\n this._maximumHeight = Number.MAX_SAFE_INTEGER;\r\n this._snap = false;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n if (typeof (options === null || options === void 0 ? void 0 : options.minimumWidth) === 'number') {\r\n this._minimumWidth = options.minimumWidth;\r\n }\r\n if (typeof (options === null || options === void 0 ? void 0 : options.maximumWidth) === 'number') {\r\n this._maximumWidth = options.maximumWidth;\r\n }\r\n if (typeof (options === null || options === void 0 ? void 0 : options.minimumHeight) === 'number') {\r\n this._minimumHeight = options.minimumHeight;\r\n }\r\n if (typeof (options === null || options === void 0 ? void 0 : options.maximumHeight) === 'number') {\r\n this._maximumHeight = options.maximumHeight;\r\n }\r\n this.api.initialize(this); // TODO: required to by-pass 'super before this' requirement\r\n this.addDisposables(this.api.onVisibilityChange((event) => {\r\n const { isVisible } = event;\r\n const { accessor } = this._params;\r\n accessor.setVisible(this, isVisible);\r\n }), this.api.onActiveChange(() => {\r\n const { accessor } = this._params;\r\n accessor.setActive(this);\r\n }), this.api.onDidConstraintsChangeInternal((event) => {\r\n if (typeof event.minimumWidth === 'number' ||\r\n typeof event.minimumWidth === 'function') {\r\n this._minimumWidth = event.minimumWidth;\r\n }\r\n if (typeof event.minimumHeight === 'number' ||\r\n typeof event.minimumHeight === 'function') {\r\n this._minimumHeight = event.minimumHeight;\r\n }\r\n if (typeof event.maximumWidth === 'number' ||\r\n typeof event.maximumWidth === 'function') {\r\n this._maximumWidth = event.maximumWidth;\r\n }\r\n if (typeof event.maximumHeight === 'number' ||\r\n typeof event.maximumHeight === 'function') {\r\n this._maximumHeight = event.maximumHeight;\r\n }\r\n }), this.api.onDidSizeChange((event) => {\r\n this._onDidChange.fire({\r\n height: event.height,\r\n width: event.width,\r\n });\r\n }), this._onDidChange);\r\n }\r\n setVisible(isVisible) {\r\n this.api._onDidVisibilityChange.fire({ isVisible });\r\n }\r\n setActive(isActive) {\r\n this.api._onDidActiveChange.fire({ isActive });\r\n }\r\n init(parameters) {\r\n if (parameters.maximumHeight) {\r\n this._maximumHeight = parameters.maximumHeight;\r\n }\r\n if (parameters.minimumHeight) {\r\n this._minimumHeight = parameters.minimumHeight;\r\n }\r\n if (parameters.maximumWidth) {\r\n this._maximumWidth = parameters.maximumWidth;\r\n }\r\n if (parameters.minimumWidth) {\r\n this._minimumWidth = parameters.minimumWidth;\r\n }\r\n this._priority = parameters.priority;\r\n this._snap = !!parameters.snap;\r\n super.init(parameters);\r\n if (typeof parameters.isVisible === 'boolean') {\r\n this.setVisible(parameters.isVisible);\r\n }\r\n }\r\n updateConstraints() {\r\n this.api._onDidConstraintsChange.fire({\r\n minimumWidth: this._evaluatedMinimumWidth,\r\n maximumWidth: this._evaluatedMaximumWidth,\r\n minimumHeight: this._evaluatedMinimumHeight,\r\n maximumHeight: this._evaluatedMaximumHeight,\r\n });\r\n }\r\n toJSON() {\r\n const state = super.toJSON();\r\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ? undefined : value;\r\n const minimum = (value) => (value <= 0 ? undefined : value);\r\n return Object.assign(Object.assign({}, state), { minimumHeight: minimum(this.minimumHeight), maximumHeight: maximum(this.maximumHeight), minimumWidth: minimum(this.minimumWidth), maximumWidth: maximum(this.maximumWidth), snap: this.snap, priority: this.priority });\r\n }\r\n}\r\n//# sourceMappingURL=gridviewPanel.js.map","import { Emitter } from '../events';\r\nimport { GridviewPanelApiImpl } from './gridviewPanelApi';\r\nexport class DockviewGroupPanelApiImpl extends GridviewPanelApiImpl {\r\n get isFloating() {\r\n if (!this._group) {\r\n throw new Error(`DockviewGroupPanelApiImpl not initialized`);\r\n }\r\n return this._group.model.isFloating;\r\n }\r\n constructor(id, accessor) {\r\n super(id);\r\n this.accessor = accessor;\r\n this._onDidFloatingStateChange = new Emitter();\r\n this.onDidFloatingStateChange = this._onDidFloatingStateChange.event;\r\n this.addDisposables(this._onDidFloatingStateChange);\r\n }\r\n moveTo(options) {\r\n var _a;\r\n if (!this._group) {\r\n throw new Error(`DockviewGroupPanelApiImpl not initialized`);\r\n }\r\n this.accessor.moveGroupOrPanel(options.group, this._group.id, undefined, (_a = options.position) !== null && _a !== void 0 ? _a : 'center');\r\n }\r\n initialize(group) {\r\n this._group = group;\r\n }\r\n}\r\n//# sourceMappingURL=dockviewGroupPanelApi.js.map","import { DockviewGroupPanelModel, } from './dockviewGroupPanelModel';\r\nimport { GridviewPanel } from '../gridview/gridviewPanel';\r\nimport { DockviewGroupPanelApiImpl, } from '../api/dockviewGroupPanelApi';\r\nexport class DockviewGroupPanel extends GridviewPanel {\r\n get panels() {\r\n return this._model.panels;\r\n }\r\n get activePanel() {\r\n return this._model.activePanel;\r\n }\r\n get size() {\r\n return this._model.size;\r\n }\r\n get model() {\r\n return this._model;\r\n }\r\n get locked() {\r\n return this._model.locked;\r\n }\r\n set locked(value) {\r\n this._model.locked = value;\r\n }\r\n get header() {\r\n return this._model.header;\r\n }\r\n constructor(accessor, id, options) {\r\n super(id, 'groupview_default', {\r\n minimumHeight: 100,\r\n minimumWidth: 100,\r\n }, new DockviewGroupPanelApiImpl(id, accessor));\r\n this.api.initialize(this); // cannot use 'this' after after 'super' call\r\n this._model = new DockviewGroupPanelModel(this.element, accessor, id, options, this);\r\n }\r\n initialize() {\r\n this._model.initialize();\r\n }\r\n setActive(isActive) {\r\n super.setActive(isActive);\r\n this.model.setActive(isActive);\r\n }\r\n layout(width, height) {\r\n super.layout(width, height);\r\n this.model.layout(width, height);\r\n }\r\n getComponent() {\r\n return this._model;\r\n }\r\n toJSON() {\r\n return this.model.toJSON();\r\n }\r\n}\r\n//# sourceMappingURL=dockviewGroupPanel.js.map","export function isPanelOptionsWithPanel(data) {\r\n if (data.referencePanel) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexport function isPanelOptionsWithGroup(data) {\r\n if (data.referenceGroup) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexport function isGroupOptionsWithPanel(data) {\r\n if (data.referencePanel) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexport function isGroupOptionsWithGroup(data) {\r\n if (data.referenceGroup) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n//# sourceMappingURL=options.js.map","import { Emitter } from '../events';\r\nimport { GridviewPanelApiImpl } from './gridviewPanelApi';\r\nimport { MutableDisposable } from '../lifecycle';\r\nexport class DockviewPanelApiImpl extends GridviewPanelApiImpl {\r\n get title() {\r\n return this.panel.title;\r\n }\r\n get isGroupActive() {\r\n var _a;\r\n return !!((_a = this.group) === null || _a === void 0 ? void 0 : _a.isActive);\r\n }\r\n set group(value) {\r\n const isOldGroupActive = this.isGroupActive;\r\n this._group = value;\r\n this._onDidGroupChange.fire();\r\n if (this._group) {\r\n this.disposable.value = this._group.api.onDidActiveChange(() => {\r\n this._onDidActiveGroupChange.fire();\r\n });\r\n if (this.isGroupActive !== isOldGroupActive) {\r\n this._onDidActiveGroupChange.fire();\r\n }\r\n }\r\n }\r\n get group() {\r\n return this._group;\r\n }\r\n constructor(panel, group, accessor) {\r\n super(panel.id);\r\n this.panel = panel;\r\n this.accessor = accessor;\r\n this._onDidTitleChange = new Emitter();\r\n this.onDidTitleChange = this._onDidTitleChange.event;\r\n this._onDidActiveGroupChange = new Emitter();\r\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\r\n this._onDidGroupChange = new Emitter();\r\n this.onDidGroupChange = this._onDidGroupChange.event;\r\n this.disposable = new MutableDisposable();\r\n this.initialize(panel);\r\n this._group = group;\r\n this.addDisposables(this.disposable, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange);\r\n }\r\n moveTo(options) {\r\n var _a;\r\n this.accessor.moveGroupOrPanel(options.group, this._group.id, this.panel.id, (_a = options.position) !== null && _a !== void 0 ? _a : 'center', options.index);\r\n }\r\n setTitle(title) {\r\n this.panel.setTitle(title);\r\n }\r\n close() {\r\n this.group.model.closePanel(this.panel);\r\n }\r\n}\r\n//# sourceMappingURL=dockviewPanelApi.js.map","import { DockviewPanelApiImpl, } from '../api/dockviewPanelApi';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nexport class DockviewPanel extends CompositeDisposable {\r\n get params() {\r\n return this._params;\r\n }\r\n get title() {\r\n return this._title;\r\n }\r\n get group() {\r\n return this._group;\r\n }\r\n constructor(id, accessor, containerApi, group, view) {\r\n super();\r\n this.id = id;\r\n this.containerApi = containerApi;\r\n this.view = view;\r\n this._group = group;\r\n this.api = new DockviewPanelApiImpl(this, this._group, accessor);\r\n this.addDisposables(this.api.onActiveChange(() => {\r\n accessor.setActivePanel(this);\r\n }), this.api.onDidSizeChange((event) => {\r\n // forward the resize event to the group since if you want to resize a panel\r\n // you are actually just resizing the panels parent which is the group\r\n this.group.api.setSize(event);\r\n }));\r\n }\r\n init(params) {\r\n this._params = params.params;\r\n this.view.init(Object.assign(Object.assign({}, params), { api: this.api, containerApi: this.containerApi }));\r\n this.setTitle(params.title);\r\n }\r\n focus() {\r\n this.api._onFocusEvent.fire();\r\n }\r\n toJSON() {\r\n return {\r\n id: this.id,\r\n contentComponent: this.view.contentComponent,\r\n tabComponent: this.view.tabComponent,\r\n params: Object.keys(this._params || {}).length > 0\r\n ? this._params\r\n : undefined,\r\n title: this.title,\r\n };\r\n }\r\n setTitle(title) {\r\n const didTitleChange = title !== this.title;\r\n if (didTitleChange) {\r\n this._title = title;\r\n this.view.update({\r\n params: {\r\n params: this._params,\r\n title: this.title,\r\n },\r\n });\r\n this.api._onDidTitleChange.fire({ title });\r\n }\r\n }\r\n update(event) {\r\n // merge the new parameters with the existing parameters\r\n this._params = Object.assign(Object.assign({}, (this._params || {})), event.params);\r\n /**\r\n * delete new keys that have a value of undefined,\r\n * allow values of null\r\n */\r\n for (const key of Object.keys(event.params)) {\r\n if (event.params[key] === undefined) {\r\n delete this._params[key];\r\n }\r\n }\r\n // update the view with the updated props\r\n this.view.update({\r\n params: {\r\n params: this._params,\r\n title: this.title,\r\n },\r\n });\r\n }\r\n updateParentGroup(group, isGroupActive) {\r\n this._group = group;\r\n this.api.group = group;\r\n const isPanelVisible = this._group.model.isPanelActive(this);\r\n this.api._onDidActiveChange.fire({\r\n isActive: isGroupActive && isPanelVisible,\r\n });\r\n this.api._onDidVisibilityChange.fire({\r\n isVisible: isPanelVisible,\r\n });\r\n this.view.updateParentGroup(this._group, this._group.model.isPanelActive(this));\r\n }\r\n layout(width, height) {\r\n // the obtain the correct dimensions of the content panel we must deduct the tab height\r\n this.api._onDidDimensionChange.fire({\r\n width,\r\n height: height,\r\n });\r\n this.view.layout(width, height);\r\n }\r\n dispose() {\r\n this.api.dispose();\r\n this.view.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=dockviewPanel.js.map","const createSvgElementFromPath = (params) => {\r\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\r\n svg.setAttributeNS(null, 'height', params.height);\r\n svg.setAttributeNS(null, 'width', params.width);\r\n svg.setAttributeNS(null, 'viewBox', params.viewbox);\r\n svg.setAttributeNS(null, 'aria-hidden', 'false');\r\n svg.setAttributeNS(null, 'focusable', 'false');\r\n svg.classList.add('dockview-svg');\r\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\r\n path.setAttributeNS(null, 'd', params.path);\r\n svg.appendChild(path);\r\n return svg;\r\n};\r\nexport const createCloseButton = () => createSvgElementFromPath({\r\n width: '11',\r\n height: '11',\r\n viewbox: '0 0 28 28',\r\n path: 'M2.1 27.3L0 25.2L11.55 13.65L0 2.1L2.1 0L13.65 11.55L25.2 0L27.3 2.1L15.75 13.65L27.3 25.2L25.2 27.3L13.65 15.75L2.1 27.3Z',\r\n});\r\nexport const createExpandMoreButton = () => createSvgElementFromPath({\r\n width: '11',\r\n height: '11',\r\n viewbox: '0 0 24 15',\r\n path: 'M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z',\r\n});\r\nexport const createChevronRightButton = () => createSvgElementFromPath({\r\n width: '11',\r\n height: '11',\r\n viewbox: '0 0 15 25',\r\n path: 'M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z',\r\n});\r\n//# sourceMappingURL=svg.js.map","import { CompositeDisposable } from '../../../lifecycle';\r\nimport { addDisposableListener } from '../../../events';\r\nimport { createCloseButton } from '../../../svg';\r\nexport class DefaultTab extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor() {\r\n super();\r\n //\r\n this.params = {};\r\n this._element = document.createElement('div');\r\n this._element.className = 'default-tab';\r\n //\r\n this._content = document.createElement('div');\r\n this._content.className = 'tab-content';\r\n //\r\n this._actionContainer = document.createElement('div');\r\n this._actionContainer.className = 'action-container';\r\n //\r\n this._list = document.createElement('ul');\r\n this._list.className = 'tab-list';\r\n //\r\n this.action = document.createElement('div');\r\n this.action.className = 'tab-action';\r\n this.action.appendChild(createCloseButton());\r\n //\r\n this._element.appendChild(this._content);\r\n this._element.appendChild(this._actionContainer);\r\n this._actionContainer.appendChild(this._list);\r\n this._list.appendChild(this.action);\r\n //\r\n this.addDisposables(addDisposableListener(this._actionContainer, 'mousedown', (ev) => {\r\n ev.preventDefault();\r\n }));\r\n this.render();\r\n }\r\n update(event) {\r\n this.params = Object.assign(Object.assign({}, this.params), event.params);\r\n this.render();\r\n }\r\n focus() {\r\n //noop\r\n }\r\n init(params) {\r\n this.params = params;\r\n this._content.textContent = params.title;\r\n addDisposableListener(this.action, 'click', (ev) => {\r\n ev.preventDefault(); //\r\n this.params.api.close();\r\n });\r\n }\r\n onGroupChange(_group) {\r\n this.render();\r\n }\r\n onPanelVisibleChange(_isPanelVisible) {\r\n this.render();\r\n }\r\n layout(_width, _height) {\r\n // noop\r\n }\r\n render() {\r\n if (this._content.textContent !== this.params.title) {\r\n this._content.textContent = this.params.title;\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=defaultTab.js.map","import { DefaultTab } from './components/tab/defaultTab';\r\nimport { createComponent } from '../panel/componentFactory';\r\nexport class DockviewPanelModel {\r\n get content() {\r\n return this._content;\r\n }\r\n get tab() {\r\n return this._tab;\r\n }\r\n constructor(accessor, id, contentComponent, tabComponent) {\r\n this.accessor = accessor;\r\n this.id = id;\r\n this.contentComponent = contentComponent;\r\n this.tabComponent = tabComponent;\r\n this._group = null;\r\n this._isPanelVisible = null;\r\n this._content = this.createContentComponent(this.id, contentComponent);\r\n this._tab = this.createTabComponent(this.id, tabComponent);\r\n }\r\n init(params) {\r\n this.content.init(Object.assign(Object.assign({}, params), { tab: this.tab }));\r\n this.tab.init(params);\r\n }\r\n updateParentGroup(group, isPanelVisible) {\r\n if (group !== this._group) {\r\n this._group = group;\r\n if (this._content.onGroupChange) {\r\n this._content.onGroupChange(group);\r\n }\r\n if (this._tab.onGroupChange) {\r\n this._tab.onGroupChange(group);\r\n }\r\n }\r\n if (isPanelVisible !== this._isPanelVisible) {\r\n this._isPanelVisible = isPanelVisible;\r\n if (this._content.onPanelVisibleChange) {\r\n this._content.onPanelVisibleChange(isPanelVisible);\r\n }\r\n if (this._tab.onPanelVisibleChange) {\r\n this._tab.onPanelVisibleChange(isPanelVisible);\r\n }\r\n }\r\n }\r\n layout(width, height) {\r\n var _a, _b;\r\n (_b = (_a = this.content).layout) === null || _b === void 0 ? void 0 : _b.call(_a, width, height);\r\n }\r\n update(event) {\r\n var _a, _b, _c, _d;\r\n (_b = (_a = this.content).update) === null || _b === void 0 ? void 0 : _b.call(_a, event);\r\n (_d = (_c = this.tab).update) === null || _d === void 0 ? void 0 : _d.call(_c, event);\r\n }\r\n dispose() {\r\n var _a, _b, _c, _d;\r\n (_b = (_a = this.content).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n (_d = (_c = this.tab).dispose) === null || _d === void 0 ? void 0 : _d.call(_c);\r\n }\r\n createContentComponent(id, componentName) {\r\n var _a;\r\n return createComponent(id, componentName, this.accessor.options.components || {}, this.accessor.options.frameworkComponents, (_a = this.accessor.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.content);\r\n }\r\n createTabComponent(id, componentName) {\r\n var _a, _b;\r\n if (componentName) {\r\n return createComponent(id, componentName, this.accessor.options.tabComponents, this.accessor.options.frameworkTabComponents, (_a = this.accessor.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.tab, () => new DefaultTab());\r\n }\r\n else if (this.accessor.options.defaultTabComponent) {\r\n return createComponent(id, this.accessor.options.defaultTabComponent, this.accessor.options.tabComponents, this.accessor.options.frameworkTabComponents, (_b = this.accessor.options.frameworkComponentFactory) === null || _b === void 0 ? void 0 : _b.tab, () => new DefaultTab());\r\n }\r\n else {\r\n return new DefaultTab();\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=dockviewPanelModel.js.map","import { DockviewPanel } from './dockviewPanel';\r\nimport { DockviewPanelModel } from './dockviewPanelModel';\r\nimport { DockviewApi } from '../api/component.api';\r\nexport class DefaultDockviewDeserialzier {\r\n constructor(layout) {\r\n this.layout = layout;\r\n }\r\n fromJSON(panelData, group) {\r\n var _a;\r\n const panelId = panelData.id;\r\n const params = panelData.params;\r\n const title = panelData.title;\r\n const viewData = panelData.view;\r\n const contentComponent = viewData\r\n ? viewData.content.id\r\n : panelData.contentComponent || 'unknown';\r\n const tabComponent = viewData\r\n ? (_a = viewData.tab) === null || _a === void 0 ? void 0 : _a.id\r\n : panelData.tabComponent;\r\n const view = new DockviewPanelModel(this.layout, panelId, contentComponent, tabComponent);\r\n const panel = new DockviewPanel(panelId, this.layout, new DockviewApi(this.layout), group, view);\r\n panel.init({\r\n title: title || panelId,\r\n params: params || {},\r\n });\r\n return panel;\r\n }\r\n}\r\n//# sourceMappingURL=deserializer.js.map","import { addDisposableListener } from '../../../events';\r\nimport { toggleClass } from '../../../dom';\r\nimport { CompositeDisposable } from '../../../lifecycle';\r\nimport { createCloseButton } from '../../../svg';\r\nexport class Watermark extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor() {\r\n super();\r\n this._element = document.createElement('div');\r\n this._element.className = 'watermark';\r\n const title = document.createElement('div');\r\n title.className = 'watermark-title';\r\n const emptySpace = document.createElement('span');\r\n emptySpace.style.flexGrow = '1';\r\n const content = document.createElement('div');\r\n content.className = 'watermark-content';\r\n this._element.appendChild(title);\r\n this._element.appendChild(content);\r\n const actionsContainer = document.createElement('div');\r\n actionsContainer.className = 'actions-container';\r\n const closeAnchor = document.createElement('div');\r\n closeAnchor.className = 'close-action';\r\n closeAnchor.appendChild(createCloseButton());\r\n actionsContainer.appendChild(closeAnchor);\r\n title.appendChild(emptySpace);\r\n title.appendChild(actionsContainer);\r\n this.addDisposables(addDisposableListener(closeAnchor, 'click', (ev) => {\r\n var _a;\r\n ev.preventDefault();\r\n if (this._group) {\r\n (_a = this._api) === null || _a === void 0 ? void 0 : _a.removeGroup(this._group);\r\n }\r\n }));\r\n }\r\n update(_event) {\r\n // noop\r\n }\r\n focus() {\r\n // noop\r\n }\r\n layout(_width, _height) {\r\n // noop\r\n }\r\n init(_params) {\r\n this._api = _params.containerApi;\r\n this.render();\r\n }\r\n updateParentGroup(group, _visible) {\r\n this._group = group;\r\n this.render();\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n render() {\r\n const isOneGroup = !!(this._api && this._api.size <= 1);\r\n toggleClass(this.element, 'has-actions', isOneGroup);\r\n }\r\n}\r\n//# sourceMappingURL=watermark.js.map","import { getElementsByTagName, quasiDefaultPrevented, toggleClass, } from '../dom';\r\nimport { Emitter, addDisposableListener, addDisposableWindowListener, } from '../events';\r\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\r\nimport { clamp } from '../math';\r\nconst bringElementToFront = (() => {\r\n let previous = null;\r\n function pushToTop(element) {\r\n if (previous !== element && previous !== null) {\r\n toggleClass(previous, 'dv-bring-to-front', false);\r\n }\r\n toggleClass(element, 'dv-bring-to-front', true);\r\n previous = element;\r\n }\r\n return pushToTop;\r\n})();\r\nexport class Overlay extends CompositeDisposable {\r\n set minimumInViewportWidth(value) {\r\n this.options.minimumInViewportWidth = value;\r\n }\r\n set minimumInViewportHeight(value) {\r\n this.options.minimumInViewportHeight = value;\r\n }\r\n constructor(options) {\r\n super();\r\n this.options = options;\r\n this._element = document.createElement('div');\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._onDidChangeEnd = new Emitter();\r\n this.onDidChangeEnd = this._onDidChangeEnd.event;\r\n this.addDisposables(this._onDidChange, this._onDidChangeEnd);\r\n this._element.className = 'dv-resize-container';\r\n this.setupResize('top');\r\n this.setupResize('bottom');\r\n this.setupResize('left');\r\n this.setupResize('right');\r\n this.setupResize('topleft');\r\n this.setupResize('topright');\r\n this.setupResize('bottomleft');\r\n this.setupResize('bottomright');\r\n this._element.appendChild(this.options.content);\r\n this.options.container.appendChild(this._element);\r\n // if input bad resize within acceptable boundaries\r\n this.setBounds({\r\n height: this.options.height,\r\n width: this.options.width,\r\n top: this.options.top,\r\n left: this.options.left,\r\n });\r\n }\r\n setBounds(bounds = {}) {\r\n if (typeof bounds.height === 'number') {\r\n this._element.style.height = `${bounds.height}px`;\r\n }\r\n if (typeof bounds.width === 'number') {\r\n this._element.style.width = `${bounds.width}px`;\r\n }\r\n if (typeof bounds.top === 'number') {\r\n this._element.style.top = `${bounds.top}px`;\r\n }\r\n if (typeof bounds.left === 'number') {\r\n this._element.style.left = `${bounds.left}px`;\r\n }\r\n const containerRect = this.options.container.getBoundingClientRect();\r\n const overlayRect = this._element.getBoundingClientRect();\r\n // region: ensure bounds within allowable limits\r\n // a minimum width of minimumViewportWidth must be inside the viewport\r\n const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));\r\n // a minimum height of minimumViewportHeight must be inside the viewport\r\n const yOffset = typeof this.options.minimumInViewportHeight === 'number'\r\n ? Math.max(0, this.getMinimumHeight(overlayRect.height))\r\n : 0;\r\n const left = clamp(overlayRect.left - containerRect.left, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\r\n const top = clamp(overlayRect.top - containerRect.top, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\r\n this._element.style.left = `${left}px`;\r\n this._element.style.top = `${top}px`;\r\n this._onDidChange.fire();\r\n }\r\n toJSON() {\r\n const container = this.options.container.getBoundingClientRect();\r\n const element = this._element.getBoundingClientRect();\r\n return {\r\n top: element.top - container.top,\r\n left: element.left - container.left,\r\n width: element.width,\r\n height: element.height,\r\n };\r\n }\r\n setupDrag(dragTarget, options = { inDragMode: false }) {\r\n const move = new MutableDisposable();\r\n const track = () => {\r\n let offset = null;\r\n const iframes = [\r\n ...getElementsByTagName('iframe'),\r\n ...getElementsByTagName('webview'),\r\n ];\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'none';\r\n }\r\n move.value = new CompositeDisposable({\r\n dispose: () => {\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'auto';\r\n }\r\n },\r\n }, addDisposableWindowListener(window, 'mousemove', (e) => {\r\n const containerRect = this.options.container.getBoundingClientRect();\r\n const x = e.clientX - containerRect.left;\r\n const y = e.clientY - containerRect.top;\r\n toggleClass(this._element, 'dv-resize-container-dragging', true);\r\n const overlayRect = this._element.getBoundingClientRect();\r\n if (offset === null) {\r\n offset = {\r\n x: e.clientX - overlayRect.left,\r\n y: e.clientY - overlayRect.top,\r\n };\r\n }\r\n const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));\r\n const yOffset = Math.max(0, this.options.minimumInViewportHeight\r\n ? this.getMinimumHeight(overlayRect.height)\r\n : 0);\r\n const left = clamp(x - offset.x, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\r\n const top = clamp(y - offset.y, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\r\n this.setBounds({ top, left });\r\n }), addDisposableWindowListener(window, 'mouseup', () => {\r\n toggleClass(this._element, 'dv-resize-container-dragging', false);\r\n move.dispose();\r\n this._onDidChangeEnd.fire();\r\n }));\r\n };\r\n this.addDisposables(move, addDisposableListener(dragTarget, 'mousedown', (event) => {\r\n if (event.defaultPrevented) {\r\n event.preventDefault();\r\n return;\r\n }\r\n // if somebody has marked this event then treat as a defaultPrevented\r\n // without actually calling event.preventDefault()\r\n if (quasiDefaultPrevented(event)) {\r\n return;\r\n }\r\n track();\r\n }), addDisposableListener(this.options.content, 'mousedown', (event) => {\r\n if (event.defaultPrevented) {\r\n return;\r\n }\r\n // if somebody has marked this event then treat as a defaultPrevented\r\n // without actually calling event.preventDefault()\r\n if (quasiDefaultPrevented(event)) {\r\n return;\r\n }\r\n if (event.shiftKey) {\r\n track();\r\n }\r\n }), addDisposableListener(this.options.content, 'mousedown', () => {\r\n bringElementToFront(this._element);\r\n }, true));\r\n bringElementToFront(this._element);\r\n if (options.inDragMode) {\r\n track();\r\n }\r\n }\r\n setupResize(direction) {\r\n const resizeHandleElement = document.createElement('div');\r\n resizeHandleElement.className = `dv-resize-handle-${direction}`;\r\n this._element.appendChild(resizeHandleElement);\r\n const move = new MutableDisposable();\r\n this.addDisposables(move, addDisposableListener(resizeHandleElement, 'mousedown', (e) => {\r\n e.preventDefault();\r\n let startPosition = null;\r\n const iframes = [\r\n ...getElementsByTagName('iframe'),\r\n ...getElementsByTagName('webview'),\r\n ];\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'none';\r\n }\r\n move.value = new CompositeDisposable(addDisposableWindowListener(window, 'mousemove', (e) => {\r\n const containerRect = this.options.container.getBoundingClientRect();\r\n const overlayRect = this._element.getBoundingClientRect();\r\n const y = e.clientY - containerRect.top;\r\n const x = e.clientX - containerRect.left;\r\n if (startPosition === null) {\r\n // record the initial dimensions since as all subsequence moves are relative to this\r\n startPosition = {\r\n originalY: y,\r\n originalHeight: overlayRect.height,\r\n originalX: x,\r\n originalWidth: overlayRect.width,\r\n };\r\n }\r\n let top = undefined;\r\n let height = undefined;\r\n let left = undefined;\r\n let width = undefined;\r\n const moveTop = () => {\r\n top = clamp(y, -Number.MAX_VALUE, startPosition.originalY +\r\n startPosition.originalHeight >\r\n containerRect.height\r\n ? this.getMinimumHeight(containerRect.height)\r\n : Math.max(0, startPosition.originalY +\r\n startPosition.originalHeight -\r\n Overlay.MINIMUM_HEIGHT));\r\n height =\r\n startPosition.originalY +\r\n startPosition.originalHeight -\r\n top;\r\n };\r\n const moveBottom = () => {\r\n top =\r\n startPosition.originalY -\r\n startPosition.originalHeight;\r\n height = clamp(y - top, top < 0 &&\r\n typeof this.options\r\n .minimumInViewportHeight === 'number'\r\n ? -top +\r\n this.options.minimumInViewportHeight\r\n : Overlay.MINIMUM_HEIGHT, Number.MAX_VALUE);\r\n };\r\n const moveLeft = () => {\r\n left = clamp(x, -Number.MAX_VALUE, startPosition.originalX +\r\n startPosition.originalWidth >\r\n containerRect.width\r\n ? this.getMinimumWidth(containerRect.width)\r\n : Math.max(0, startPosition.originalX +\r\n startPosition.originalWidth -\r\n Overlay.MINIMUM_WIDTH));\r\n width =\r\n startPosition.originalX +\r\n startPosition.originalWidth -\r\n left;\r\n };\r\n const moveRight = () => {\r\n left =\r\n startPosition.originalX -\r\n startPosition.originalWidth;\r\n width = clamp(x - left, left < 0 &&\r\n typeof this.options\r\n .minimumInViewportWidth === 'number'\r\n ? -left +\r\n this.options.minimumInViewportWidth\r\n : Overlay.MINIMUM_WIDTH, Number.MAX_VALUE);\r\n };\r\n switch (direction) {\r\n case 'top':\r\n moveTop();\r\n break;\r\n case 'bottom':\r\n moveBottom();\r\n break;\r\n case 'left':\r\n moveLeft();\r\n break;\r\n case 'right':\r\n moveRight();\r\n break;\r\n case 'topleft':\r\n moveTop();\r\n moveLeft();\r\n break;\r\n case 'topright':\r\n moveTop();\r\n moveRight();\r\n break;\r\n case 'bottomleft':\r\n moveBottom();\r\n moveLeft();\r\n break;\r\n case 'bottomright':\r\n moveBottom();\r\n moveRight();\r\n break;\r\n }\r\n this.setBounds({ height, width, top, left });\r\n }), {\r\n dispose: () => {\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'auto';\r\n }\r\n },\r\n }, addDisposableWindowListener(window, 'mouseup', () => {\r\n move.dispose();\r\n this._onDidChangeEnd.fire();\r\n }));\r\n }));\r\n }\r\n getMinimumWidth(width) {\r\n if (typeof this.options.minimumInViewportWidth === 'number') {\r\n return width - this.options.minimumInViewportWidth;\r\n }\r\n return 0;\r\n }\r\n getMinimumHeight(height) {\r\n if (typeof this.options.minimumInViewportHeight === 'number') {\r\n return height - this.options.minimumInViewportHeight;\r\n }\r\n return height;\r\n }\r\n dispose() {\r\n this._element.remove();\r\n super.dispose();\r\n }\r\n}\r\nOverlay.MINIMUM_HEIGHT = 20;\r\nOverlay.MINIMUM_WIDTH = 20;\r\n//# sourceMappingURL=overlay.js.map","import { CompositeDisposable } from '../lifecycle';\r\nexport class DockviewFloatingGroupPanel extends CompositeDisposable {\r\n constructor(group, overlay) {\r\n super();\r\n this.group = group;\r\n this.overlay = overlay;\r\n this.addDisposables(overlay);\r\n }\r\n position(bounds) {\r\n this.overlay.setBounds(bounds);\r\n }\r\n}\r\n//# sourceMappingURL=dockviewFloatingGroupPanel.js.map","import { getRelativeLocation, getGridLocation, } from '../gridview/gridview';\r\nimport { directionToPosition, Droptarget } from '../dnd/droptarget';\r\nimport { tail, sequenceEquals, remove } from '../array';\r\nimport { DockviewPanel } from './dockviewPanel';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nimport { Event, Emitter } from '../events';\r\nimport { Watermark } from './components/watermark/watermark';\r\nimport { DockviewDropTargets, } from './types';\r\nimport { sequentialNumberGenerator } from '../math';\r\nimport { DefaultDockviewDeserialzier } from './deserializer';\r\nimport { createComponent } from '../panel/componentFactory';\r\nimport { isGroupOptionsWithGroup, isGroupOptionsWithPanel, isPanelOptionsWithGroup, isPanelOptionsWithPanel, } from './options';\r\nimport { BaseGrid, toTarget, } from '../gridview/baseComponentGridview';\r\nimport { DockviewApi } from '../api/component.api';\r\nimport { Orientation, Sizing } from '../splitview/splitview';\r\nimport { DockviewGroupPanel } from './dockviewGroupPanel';\r\nimport { DockviewPanelModel } from './dockviewPanelModel';\r\nimport { getPanelData } from '../dnd/dataTransfer';\r\nimport { Overlay } from '../dnd/overlay';\r\nimport { toggleClass, watchElementResize } from '../dom';\r\nimport { DockviewFloatingGroupPanel, } from './dockviewFloatingGroupPanel';\r\nconst DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;\r\nfunction typeValidate3(data, path) {\r\n if (typeof data.id !== 'string') {\r\n throw new Error(`${path}.id must be a string`);\r\n }\r\n if (typeof data.activeView !== 'string' ||\r\n typeof data.activeView !== 'undefined') {\r\n throw new Error(`${path}.activeView must be a string of undefined`);\r\n }\r\n}\r\nfunction typeValidate2(data, path) {\r\n if (typeof data.size !== 'number' && typeof data.size !== 'undefined') {\r\n throw new Error(`${path}.size must be a number or undefined`);\r\n }\r\n if (typeof data.visible !== 'boolean' &&\r\n typeof data.visible !== 'undefined') {\r\n throw new Error(`${path}.visible must be a boolean or undefined`);\r\n }\r\n if (data.type === 'leaf') {\r\n if (typeof data.data !== 'object' ||\r\n data.data === null ||\r\n Array.isArray(data.data)) {\r\n throw new Error('object must be a non-null object');\r\n }\r\n typeValidate3(data.data, `${path}.data`);\r\n }\r\n else if (data.type === 'branch') {\r\n if (!Array.isArray(data.data)) {\r\n throw new Error(`${path}.data must be an array`);\r\n }\r\n }\r\n else {\r\n throw new Error(`${path}.type must be onew of {'branch', 'leaf'}`);\r\n }\r\n}\r\nfunction typeValidate(data) {\r\n if (typeof data !== 'object' || data === null) {\r\n throw new Error('object must be a non-null object');\r\n }\r\n const { grid, panels, activeGroup, floatingGroups } = data;\r\n if (typeof grid !== 'object' || grid === null) {\r\n throw new Error(\"'.grid' must be a non-null object\");\r\n }\r\n if (typeof grid.height !== 'number') {\r\n throw new Error(\"'.grid.height' must be a number\");\r\n }\r\n if (typeof grid.width !== 'number') {\r\n throw new Error(\"'.grid.width' must be a number\");\r\n }\r\n if (typeof grid.root !== 'object' || grid.root === null) {\r\n throw new Error(\"'.grid.root' must be a non-null object\");\r\n }\r\n if (grid.root.type !== 'branch') {\r\n throw new Error(\".grid.root.type must be of type 'branch'\");\r\n }\r\n if (grid.orientation !== Orientation.HORIZONTAL &&\r\n grid.orientation !== Orientation.VERTICAL) {\r\n throw new Error(`'.grid.width' must be one of {${Orientation.HORIZONTAL}, ${Orientation.VERTICAL}}`);\r\n }\r\n typeValidate2(grid.root, '.grid.root');\r\n}\r\nexport class DockviewComponent extends BaseGrid {\r\n get orientation() {\r\n return this.gridview.orientation;\r\n }\r\n get totalPanels() {\r\n return this.panels.length;\r\n }\r\n get panels() {\r\n return this.groups.flatMap((group) => group.panels);\r\n }\r\n get options() {\r\n return this._options;\r\n }\r\n get activePanel() {\r\n const activeGroup = this.activeGroup;\r\n if (!activeGroup) {\r\n return undefined;\r\n }\r\n return activeGroup.activePanel;\r\n }\r\n constructor(options) {\r\n super({\r\n proportionalLayout: true,\r\n orientation: options.orientation || Orientation.HORIZONTAL,\r\n styles: options.styles,\r\n parentElement: options.parentElement,\r\n });\r\n this.nextGroupId = sequentialNumberGenerator();\r\n this._deserializer = new DefaultDockviewDeserialzier(this);\r\n this.watermark = null;\r\n this._onWillDragPanel = new Emitter();\r\n this.onWillDragPanel = this._onWillDragPanel.event;\r\n this._onWillDragGroup = new Emitter();\r\n this.onWillDragGroup = this._onWillDragGroup.event;\r\n this._onDidDrop = new Emitter();\r\n this.onDidDrop = this._onDidDrop.event;\r\n this._onDidRemovePanel = new Emitter();\r\n this.onDidRemovePanel = this._onDidRemovePanel.event;\r\n this._onDidAddPanel = new Emitter();\r\n this.onDidAddPanel = this._onDidAddPanel.event;\r\n this._onDidLayoutFromJSON = new Emitter();\r\n this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;\r\n this._onDidActivePanelChange = new Emitter();\r\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\r\n this.floatingGroups = [];\r\n toggleClass(this.gridview.element, 'dv-dockview', true);\r\n this.addDisposables(this._onWillDragPanel, this._onWillDragGroup, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, Event.any(this.onDidAddGroup, this.onDidRemoveGroup)(() => {\r\n this.updateWatermark();\r\n }), Event.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {\r\n this._bufferOnDidLayoutChange.fire();\r\n }));\r\n this._options = options;\r\n if (!this.options.components) {\r\n this.options.components = {};\r\n }\r\n if (!this.options.frameworkComponents) {\r\n this.options.frameworkComponents = {};\r\n }\r\n if (!this.options.frameworkTabComponents) {\r\n this.options.frameworkTabComponents = {};\r\n }\r\n if (!this.options.tabComponents) {\r\n this.options.tabComponents = {};\r\n }\r\n if (!this.options.watermarkComponent &&\r\n !this.options.watermarkFrameworkComponent) {\r\n this.options.watermarkComponent = Watermark;\r\n }\r\n const dropTarget = new Droptarget(this.element, {\r\n canDisplayOverlay: (event, position) => {\r\n const data = getPanelData();\r\n if (data) {\r\n if (data.viewId !== this.id) {\r\n return false;\r\n }\r\n if (position === 'center') {\r\n // center drop target is only allowed if there are no panels in the grid\r\n // floating panels are allowed\r\n return this.gridview.length === 0;\r\n }\r\n return true;\r\n }\r\n if (this.options.showDndOverlay) {\r\n if (position === 'center' && this.gridview.length !== 0) {\r\n /**\r\n * for external events only show the four-corner drag overlays, disable\r\n * the center position so that external drag events can fall through to the group\r\n * and panel drop target handlers\r\n */\r\n return false;\r\n }\r\n return this.options.showDndOverlay({\r\n nativeEvent: event,\r\n position: position,\r\n target: DockviewDropTargets.Edge,\r\n getData: getPanelData,\r\n });\r\n }\r\n return false;\r\n },\r\n acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],\r\n overlayModel: {\r\n activationSize: { type: 'pixels', value: 10 },\r\n size: { type: 'pixels', value: 20 },\r\n },\r\n });\r\n this.addDisposables(dropTarget.onDrop((event) => {\r\n const data = getPanelData();\r\n if (data) {\r\n this.moveGroupOrPanel(this.orthogonalize(event.position), data.groupId, data.panelId || undefined, 'center');\r\n }\r\n else {\r\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: null, getData: getPanelData }));\r\n }\r\n }), dropTarget);\r\n this._api = new DockviewApi(this);\r\n this.updateWatermark();\r\n }\r\n addFloatingGroup(item, coord, options) {\r\n var _a, _b, _c, _d, _e, _f;\r\n let group;\r\n if (item instanceof DockviewPanel) {\r\n group = this.createGroup();\r\n this.removePanel(item, {\r\n removeEmptyGroup: true,\r\n skipDispose: true,\r\n });\r\n group.model.openPanel(item);\r\n }\r\n else {\r\n group = item;\r\n const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&\r\n options.skipRemoveGroup;\r\n if (!skip) {\r\n this.doRemoveGroup(item, { skipDispose: true });\r\n }\r\n }\r\n group.model.isFloating = true;\r\n const overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number' ? Math.max(coord.x, 0) : 100;\r\n const overlayTop = typeof (coord === null || coord === void 0 ? void 0 : coord.y) === 'number' ? Math.max(coord.y, 0) : 100;\r\n const overlay = new Overlay({\r\n container: this.gridview.element,\r\n content: group.element,\r\n height: (_a = coord === null || coord === void 0 ? void 0 : coord.height) !== null && _a !== void 0 ? _a : 300,\r\n width: (_b = coord === null || coord === void 0 ? void 0 : coord.width) !== null && _b !== void 0 ? _b : 300,\r\n left: overlayLeft,\r\n top: overlayTop,\r\n minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'\r\n ? undefined\r\n : (_d = (_c = this.options.floatingGroupBounds) === null || _c === void 0 ? void 0 : _c.minimumWidthWithinViewport) !== null && _d !== void 0 ? _d : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,\r\n minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'\r\n ? undefined\r\n : (_f = (_e = this.options.floatingGroupBounds) === null || _e === void 0 ? void 0 : _e.minimumHeightWithinViewport) !== null && _f !== void 0 ? _f : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,\r\n });\r\n const el = group.element.querySelector('.void-container');\r\n if (!el) {\r\n throw new Error('failed to find drag handle');\r\n }\r\n overlay.setupDrag(el, {\r\n inDragMode: typeof (options === null || options === void 0 ? void 0 : options.inDragMode) === 'boolean'\r\n ? options.inDragMode\r\n : false,\r\n });\r\n const floatingGroupPanel = new DockviewFloatingGroupPanel(group, overlay);\r\n const disposable = watchElementResize(group.element, (entry) => {\r\n const { width, height } = entry.contentRect;\r\n group.layout(width, height); // let the group know it's size is changing so it can fire events to the panel\r\n });\r\n floatingGroupPanel.addDisposables(overlay.onDidChange(() => {\r\n // this is either a resize or a move\r\n // to inform the panels .layout(...) the group with it's current size\r\n // don't care about resize since the above watcher handles that\r\n group.layout(group.height, group.width);\r\n }), overlay.onDidChangeEnd(() => {\r\n this._bufferOnDidLayoutChange.fire();\r\n }), group.onDidChange((event) => {\r\n overlay.setBounds({\r\n height: event === null || event === void 0 ? void 0 : event.height,\r\n width: event === null || event === void 0 ? void 0 : event.width,\r\n });\r\n }), {\r\n dispose: () => {\r\n disposable.dispose();\r\n group.model.isFloating = false;\r\n remove(this.floatingGroups, floatingGroupPanel);\r\n this.updateWatermark();\r\n },\r\n });\r\n this.floatingGroups.push(floatingGroupPanel);\r\n this.updateWatermark();\r\n }\r\n orthogonalize(position) {\r\n switch (position) {\r\n case 'top':\r\n case 'bottom':\r\n if (this.gridview.orientation === Orientation.HORIZONTAL) {\r\n // we need to add to a vertical splitview but the current root is a horizontal splitview.\r\n // insert a vertical splitview at the root level and add the existing view as a child\r\n this.gridview.insertOrthogonalSplitviewAtRoot();\r\n }\r\n break;\r\n case 'left':\r\n case 'right':\r\n if (this.gridview.orientation === Orientation.VERTICAL) {\r\n // we need to add to a horizontal splitview but the current root is a vertical splitview.\r\n // insert a horiziontal splitview at the root level and add the existing view as a child\r\n this.gridview.insertOrthogonalSplitviewAtRoot();\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n switch (position) {\r\n case 'top':\r\n case 'left':\r\n case 'center':\r\n return this.createGroupAtLocation([0]); // insert into first position\r\n case 'bottom':\r\n case 'right':\r\n return this.createGroupAtLocation([this.gridview.length]); // insert into last position\r\n default:\r\n throw new Error(`unsupported position ${position}`);\r\n }\r\n }\r\n updateOptions(options) {\r\n var _a, _b;\r\n const hasOrientationChanged = typeof options.orientation === 'string' &&\r\n this.gridview.orientation !== options.orientation;\r\n const hasFloatingGroupOptionsChanged = options.floatingGroupBounds !== undefined &&\r\n options.floatingGroupBounds !== this.options.floatingGroupBounds;\r\n this._options = Object.assign(Object.assign({}, this.options), options);\r\n if (hasOrientationChanged) {\r\n this.gridview.orientation = options.orientation;\r\n }\r\n if (hasFloatingGroupOptionsChanged) {\r\n for (const group of this.floatingGroups) {\r\n switch (this.options.floatingGroupBounds) {\r\n case 'boundedWithinViewport':\r\n group.overlay.minimumInViewportHeight = undefined;\r\n group.overlay.minimumInViewportWidth = undefined;\r\n break;\r\n case undefined:\r\n group.overlay.minimumInViewportHeight =\r\n DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;\r\n group.overlay.minimumInViewportWidth =\r\n DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;\r\n break;\r\n default:\r\n group.overlay.minimumInViewportHeight =\r\n (_a = this.options.floatingGroupBounds) === null || _a === void 0 ? void 0 : _a.minimumHeightWithinViewport;\r\n group.overlay.minimumInViewportWidth =\r\n (_b = this.options.floatingGroupBounds) === null || _b === void 0 ? void 0 : _b.minimumWidthWithinViewport;\r\n }\r\n group.overlay.setBounds({});\r\n }\r\n }\r\n this.layout(this.gridview.width, this.gridview.height, true);\r\n }\r\n layout(width, height, forceResize) {\r\n super.layout(width, height, forceResize);\r\n if (this.floatingGroups) {\r\n for (const floating of this.floatingGroups) {\r\n // ensure floting groups stay within visible boundaries\r\n floating.overlay.setBounds();\r\n }\r\n }\r\n }\r\n focus() {\r\n var _a;\r\n (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();\r\n }\r\n getGroupPanel(id) {\r\n return this.panels.find((panel) => panel.id === id);\r\n }\r\n setActivePanel(panel) {\r\n this.doSetGroupActive(panel.group);\r\n panel.group.model.openPanel(panel);\r\n }\r\n moveToNext(options = {}) {\r\n var _a;\r\n if (!options.group) {\r\n if (!this.activeGroup) {\r\n return;\r\n }\r\n options.group = this.activeGroup;\r\n }\r\n if (options.includePanel && options.group) {\r\n if (options.group.activePanel !==\r\n options.group.panels[options.group.panels.length - 1]) {\r\n options.group.model.moveToNext({ suppressRoll: true });\r\n return;\r\n }\r\n }\r\n const location = getGridLocation(options.group.element);\r\n const next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;\r\n this.doSetGroupActive(next);\r\n }\r\n moveToPrevious(options = {}) {\r\n var _a;\r\n if (!options.group) {\r\n if (!this.activeGroup) {\r\n return;\r\n }\r\n options.group = this.activeGroup;\r\n }\r\n if (options.includePanel && options.group) {\r\n if (options.group.activePanel !== options.group.panels[0]) {\r\n options.group.model.moveToPrevious({ suppressRoll: true });\r\n return;\r\n }\r\n }\r\n const location = getGridLocation(options.group.element);\r\n const next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;\r\n if (next) {\r\n this.doSetGroupActive(next);\r\n }\r\n }\r\n /**\r\n * Serialize the current state of the layout\r\n *\r\n * @returns A JSON respresentation of the layout\r\n */\r\n toJSON() {\r\n var _a;\r\n const data = this.gridview.serialize();\r\n const panels = this.panels.reduce((collection, panel) => {\r\n collection[panel.id] = panel.toJSON();\r\n return collection;\r\n }, {});\r\n const floats = this.floatingGroups.map((floatingGroup) => {\r\n return {\r\n data: floatingGroup.group.toJSON(),\r\n position: floatingGroup.overlay.toJSON(),\r\n };\r\n });\r\n const result = {\r\n grid: data,\r\n panels,\r\n activeGroup: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,\r\n };\r\n if (floats.length > 0) {\r\n result.floatingGroups = floats;\r\n }\r\n return result;\r\n }\r\n fromJSON(data) {\r\n var _a;\r\n this.clear();\r\n if (typeof data !== 'object' || data === null) {\r\n throw new Error('serialized layout must be a non-null object');\r\n }\r\n const { grid, panels, activeGroup } = data;\r\n if (grid.root.type !== 'branch' || !Array.isArray(grid.root.data)) {\r\n throw new Error('root must be of type branch');\r\n }\r\n try {\r\n // take note of the existing dimensions\r\n const width = this.width;\r\n const height = this.height;\r\n const createGroupFromSerializedState = (data) => {\r\n const { id, locked, hideHeader, views, activeView } = data;\r\n if (typeof id !== 'string') {\r\n throw new Error('group id must be of type string');\r\n }\r\n const group = this.createGroup({\r\n id,\r\n locked: !!locked,\r\n hideHeader: !!hideHeader,\r\n });\r\n const createdPanels = [];\r\n for (const child of views) {\r\n /**\r\n * Run the deserializer step seperately since this may fail to due corrupted external state.\r\n * In running this section first we avoid firing lots of 'add' events in the event of a failure\r\n * due to a corruption of input data.\r\n */\r\n const panel = this._deserializer.fromJSON(panels[child], group);\r\n createdPanels.push(panel);\r\n }\r\n this._onDidAddGroup.fire(group);\r\n for (let i = 0; i < views.length; i++) {\r\n const panel = createdPanels[i];\r\n const isActive = typeof activeView === 'string' &&\r\n activeView === panel.id;\r\n group.model.openPanel(panel, {\r\n skipSetPanelActive: !isActive,\r\n skipSetGroupActive: true,\r\n });\r\n }\r\n if (!group.activePanel && group.panels.length > 0) {\r\n group.model.openPanel(group.panels[group.panels.length - 1], {\r\n skipSetGroupActive: true,\r\n });\r\n }\r\n return group;\r\n };\r\n this.gridview.deserialize(grid, {\r\n fromJSON: (node) => {\r\n return createGroupFromSerializedState(node.data);\r\n },\r\n });\r\n this.layout(width, height, true);\r\n const serializedFloatingGroups = (_a = data.floatingGroups) !== null && _a !== void 0 ? _a : [];\r\n for (const serializedFloatingGroup of serializedFloatingGroups) {\r\n const { data, position } = serializedFloatingGroup;\r\n const group = createGroupFromSerializedState(data);\r\n this.addFloatingGroup(group, {\r\n x: position.left,\r\n y: position.top,\r\n height: position.height,\r\n width: position.width,\r\n }, { skipRemoveGroup: true, inDragMode: false });\r\n }\r\n for (const floatingGroup of this.floatingGroups) {\r\n floatingGroup.overlay.setBounds();\r\n }\r\n if (typeof activeGroup === 'string') {\r\n const panel = this.getPanel(activeGroup);\r\n if (panel) {\r\n this.doSetGroupActive(panel);\r\n }\r\n }\r\n }\r\n catch (err) {\r\n /**\r\n * Takes all the successfully created groups and remove all of their panels.\r\n */\r\n for (const group of this.groups) {\r\n for (const panel of group.panels) {\r\n this.removePanel(panel, {\r\n removeEmptyGroup: false,\r\n skipDispose: false,\r\n });\r\n }\r\n }\r\n /**\r\n * To remove a group we cannot call this.removeGroup(...) since this makes assumptions about\r\n * the underlying HTMLElement existing in the Gridview.\r\n */\r\n for (const group of this.groups) {\r\n group.dispose();\r\n this._groups.delete(group.id);\r\n this._onDidRemoveGroup.fire(group);\r\n }\r\n // iterate over a reassigned array since original array will be modified\r\n for (const floatingGroup of [...this.floatingGroups]) {\r\n floatingGroup.dispose();\r\n }\r\n // fires clean-up events and clears the underlying HTML gridview.\r\n this.clear();\r\n /**\r\n * even though we have cleaned-up we still want to inform the caller of their error\r\n * and we'll do this through re-throwing the original error since afterall you would\r\n * expect trying to load a corrupted layout to result in an error and not silently fail...\r\n */\r\n throw err;\r\n }\r\n this._onDidLayoutFromJSON.fire();\r\n }\r\n clear() {\r\n const groups = Array.from(this._groups.values()).map((_) => _.value);\r\n const hasActiveGroup = !!this.activeGroup;\r\n const hasActivePanel = !!this.activePanel;\r\n for (const group of groups) {\r\n // remove the group will automatically remove the panels\r\n this.removeGroup(group, { skipActive: true });\r\n }\r\n if (hasActiveGroup) {\r\n this.doSetGroupActive(undefined);\r\n }\r\n if (hasActivePanel) {\r\n this._onDidActivePanelChange.fire(undefined);\r\n }\r\n this.gridview.clear();\r\n }\r\n closeAllGroups() {\r\n for (const entry of this._groups.entries()) {\r\n const [_, group] = entry;\r\n group.value.model.closeAllPanels();\r\n }\r\n }\r\n addPanel(options) {\r\n var _a, _b;\r\n if (this.panels.find((_) => _.id === options.id)) {\r\n throw new Error(`panel with id ${options.id} already exists`);\r\n }\r\n let referenceGroup;\r\n if (options.position && options.floating) {\r\n throw new Error('you can only provide one of: position, floating as arguments to .addPanel(...)');\r\n }\r\n if (options.position) {\r\n if (isPanelOptionsWithPanel(options.position)) {\r\n const referencePanel = typeof options.position.referencePanel === 'string'\r\n ? this.getGroupPanel(options.position.referencePanel)\r\n : options.position.referencePanel;\r\n if (!referencePanel) {\r\n throw new Error(`referencePanel ${options.position.referencePanel} does not exist`);\r\n }\r\n referenceGroup = this.findGroup(referencePanel);\r\n }\r\n else if (isPanelOptionsWithGroup(options.position)) {\r\n referenceGroup =\r\n typeof options.position.referenceGroup === 'string'\r\n ? (_a = this._groups.get(options.position.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value\r\n : options.position.referenceGroup;\r\n if (!referenceGroup) {\r\n throw new Error(`referencePanel ${options.position.referenceGroup} does not exist`);\r\n }\r\n }\r\n else {\r\n const group = this.orthogonalize(directionToPosition(options.position.direction));\r\n const panel = this.createPanel(options, group);\r\n group.model.openPanel(panel);\r\n return panel;\r\n }\r\n }\r\n else {\r\n referenceGroup = this.activeGroup;\r\n }\r\n let panel;\r\n if (referenceGroup) {\r\n const target = toTarget(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');\r\n if (options.floating) {\r\n const group = this.createGroup();\r\n panel = this.createPanel(options, group);\r\n group.model.openPanel(panel);\r\n const o = typeof options.floating === 'object' &&\r\n options.floating !== null\r\n ? options.floating\r\n : {};\r\n this.addFloatingGroup(group, o, {\r\n inDragMode: false,\r\n skipRemoveGroup: true,\r\n });\r\n }\r\n else if (referenceGroup.api.isFloating || target === 'center') {\r\n panel = this.createPanel(options, referenceGroup);\r\n referenceGroup.model.openPanel(panel);\r\n }\r\n else {\r\n const location = getGridLocation(referenceGroup.element);\r\n const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\r\n const group = this.createGroupAtLocation(relativeLocation);\r\n panel = this.createPanel(options, group);\r\n group.model.openPanel(panel);\r\n }\r\n }\r\n else if (options.floating) {\r\n const group = this.createGroup();\r\n panel = this.createPanel(options, group);\r\n group.model.openPanel(panel);\r\n const o = typeof options.floating === 'object' &&\r\n options.floating !== null\r\n ? options.floating\r\n : {};\r\n this.addFloatingGroup(group, o, {\r\n inDragMode: false,\r\n skipRemoveGroup: true,\r\n });\r\n }\r\n else {\r\n const group = this.createGroupAtLocation();\r\n panel = this.createPanel(options, group);\r\n group.model.openPanel(panel);\r\n }\r\n return panel;\r\n }\r\n removePanel(panel, options = {\r\n removeEmptyGroup: true,\r\n skipDispose: false,\r\n }) {\r\n const group = panel.group;\r\n if (!group) {\r\n throw new Error(`cannot remove panel ${panel.id}. it's missing a group.`);\r\n }\r\n group.model.removePanel(panel);\r\n if (!options.skipDispose) {\r\n panel.dispose();\r\n }\r\n if (group.size === 0 && options.removeEmptyGroup) {\r\n this.removeGroup(group);\r\n }\r\n }\r\n createWatermarkComponent() {\r\n var _a;\r\n return createComponent('watermark-id', 'watermark-name', this.options.watermarkComponent\r\n ? { 'watermark-name': this.options.watermarkComponent }\r\n : {}, this.options.watermarkFrameworkComponent\r\n ? { 'watermark-name': this.options.watermarkFrameworkComponent }\r\n : {}, (_a = this.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.watermark);\r\n }\r\n updateWatermark() {\r\n var _a, _b;\r\n if (this.groups.filter((x) => !x.api.isFloating).length === 0) {\r\n if (!this.watermark) {\r\n this.watermark = this.createWatermarkComponent();\r\n this.watermark.init({\r\n containerApi: new DockviewApi(this),\r\n });\r\n const watermarkContainer = document.createElement('div');\r\n watermarkContainer.className = 'dv-watermark-container';\r\n watermarkContainer.appendChild(this.watermark.element);\r\n this.gridview.element.appendChild(watermarkContainer);\r\n }\r\n }\r\n else if (this.watermark) {\r\n this.watermark.element.parentElement.remove();\r\n (_b = (_a = this.watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n this.watermark = null;\r\n }\r\n }\r\n addGroup(options) {\r\n var _a;\r\n const group = this.createGroup();\r\n if (options) {\r\n let referenceGroup;\r\n if (isGroupOptionsWithPanel(options)) {\r\n const referencePanel = typeof options.referencePanel === 'string'\r\n ? this.panels.find((panel) => panel.id === options.referencePanel)\r\n : options.referencePanel;\r\n if (!referencePanel) {\r\n throw new Error(`reference panel ${options.referencePanel} does not exist`);\r\n }\r\n referenceGroup = this.findGroup(referencePanel);\r\n if (!referenceGroup) {\r\n throw new Error(`reference group for reference panel ${options.referencePanel} does not exist`);\r\n }\r\n }\r\n else if (isGroupOptionsWithGroup(options)) {\r\n referenceGroup =\r\n typeof options.referenceGroup === 'string'\r\n ? (_a = this._groups.get(options.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value\r\n : options.referenceGroup;\r\n if (!referenceGroup) {\r\n throw new Error(`reference group ${options.referenceGroup} does not exist`);\r\n }\r\n }\r\n else {\r\n const group = this.orthogonalize(directionToPosition(options.direction));\r\n return group;\r\n }\r\n const target = toTarget(options.direction || 'within');\r\n const location = getGridLocation(referenceGroup.element);\r\n const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\r\n this.doAddGroup(group, relativeLocation);\r\n return group;\r\n }\r\n else {\r\n this.doAddGroup(group);\r\n return group;\r\n }\r\n }\r\n removeGroup(group, options) {\r\n var _a;\r\n const panels = [...group.panels]; // reassign since group panels will mutate\r\n for (const panel of panels) {\r\n this.removePanel(panel, {\r\n removeEmptyGroup: false,\r\n skipDispose: (_a = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _a !== void 0 ? _a : false,\r\n });\r\n }\r\n this.doRemoveGroup(group, options);\r\n }\r\n doRemoveGroup(group, options) {\r\n const floatingGroup = this.floatingGroups.find((_) => _.group === group);\r\n if (floatingGroup) {\r\n if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {\r\n floatingGroup.group.dispose();\r\n this._groups.delete(group.id);\r\n // TODO: fire group removed event?\r\n }\r\n floatingGroup.dispose();\r\n return floatingGroup.group;\r\n }\r\n return super.doRemoveGroup(group, options);\r\n }\r\n moveGroupOrPanel(destinationGroup, sourceGroupId, sourceItemId, destinationTarget, destinationIndex) {\r\n var _a;\r\n const sourceGroup = sourceGroupId\r\n ? (_a = this._groups.get(sourceGroupId)) === null || _a === void 0 ? void 0 : _a.value\r\n : undefined;\r\n if (sourceItemId === undefined) {\r\n if (sourceGroup) {\r\n this.moveGroup(sourceGroup, destinationGroup, destinationTarget);\r\n }\r\n return;\r\n }\r\n if (!destinationTarget || destinationTarget === 'center') {\r\n const groupItem = (sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(sourceItemId)) ||\r\n this.panels.find((panel) => panel.id === sourceItemId);\r\n if (!groupItem) {\r\n throw new Error(`No panel with id ${sourceItemId}`);\r\n }\r\n if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {\r\n this.doRemoveGroup(sourceGroup);\r\n }\r\n destinationGroup.model.openPanel(groupItem, {\r\n index: destinationIndex,\r\n });\r\n }\r\n else {\r\n const referenceLocation = getGridLocation(destinationGroup.element);\r\n const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);\r\n if (sourceGroup && sourceGroup.size < 2) {\r\n const [targetParentLocation, to] = tail(targetLocation);\r\n const isFloating = this.floatingGroups.find((x) => x.group === sourceGroup);\r\n if (!isFloating) {\r\n const sourceLocation = getGridLocation(sourceGroup.element);\r\n const [sourceParentLocation, from] = tail(sourceLocation);\r\n if (sequenceEquals(sourceParentLocation, targetParentLocation)) {\r\n // special case when 'swapping' two views within same grid location\r\n // if a group has one tab - we are essentially moving the 'group'\r\n // which is equivalent to swapping two views in this case\r\n this.gridview.moveView(sourceParentLocation, from, to);\r\n }\r\n }\r\n // source group will become empty so delete the group\r\n const targetGroup = this.doRemoveGroup(sourceGroup, {\r\n skipActive: true,\r\n skipDispose: true,\r\n });\r\n // after deleting the group we need to re-evaulate the ref location\r\n const updatedReferenceLocation = getGridLocation(destinationGroup.element);\r\n const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, destinationTarget);\r\n this.doAddGroup(targetGroup, location);\r\n }\r\n else {\r\n const groupItem = (sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(sourceItemId)) ||\r\n this.panels.find((panel) => panel.id === sourceItemId);\r\n if (!groupItem) {\r\n throw new Error(`No panel with id ${sourceItemId}`);\r\n }\r\n const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);\r\n const group = this.createGroupAtLocation(dropLocation);\r\n group.model.openPanel(groupItem);\r\n }\r\n }\r\n }\r\n moveGroup(sourceGroup, referenceGroup, target) {\r\n if (sourceGroup) {\r\n if (!target || target === 'center') {\r\n const activePanel = sourceGroup.activePanel;\r\n const panels = [...sourceGroup.panels].map((p) => sourceGroup.model.removePanel(p.id));\r\n if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {\r\n this.doRemoveGroup(sourceGroup);\r\n }\r\n for (const panel of panels) {\r\n referenceGroup.model.openPanel(panel, {\r\n skipSetPanelActive: panel !== activePanel,\r\n });\r\n }\r\n }\r\n else {\r\n const floatingGroup = this.floatingGroups.find((x) => x.group === sourceGroup);\r\n if (floatingGroup) {\r\n floatingGroup.dispose();\r\n }\r\n else {\r\n this.gridview.removeView(getGridLocation(sourceGroup.element));\r\n }\r\n const referenceLocation = getGridLocation(referenceGroup.element);\r\n const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);\r\n this.gridview.addView(sourceGroup, Sizing.Distribute, dropLocation);\r\n }\r\n }\r\n }\r\n doSetGroupActive(group, skipFocus) {\r\n var _a, _b;\r\n const isGroupAlreadyFocused = this._activeGroup === group;\r\n super.doSetGroupActive(group, skipFocus);\r\n if (!isGroupAlreadyFocused && ((_a = this._activeGroup) === null || _a === void 0 ? void 0 : _a.activePanel)) {\r\n this._onDidActivePanelChange.fire((_b = this._activeGroup) === null || _b === void 0 ? void 0 : _b.activePanel);\r\n }\r\n }\r\n createGroup(options) {\r\n if (!options) {\r\n options = {};\r\n }\r\n let id = options === null || options === void 0 ? void 0 : options.id;\r\n if (id && this._groups.has(options.id)) {\r\n console.warn(`Duplicate group id ${options === null || options === void 0 ? void 0 : options.id}. reassigning group id to avoid errors`);\r\n id = undefined;\r\n }\r\n if (!id) {\r\n id = this.nextGroupId.next();\r\n while (this._groups.has(id)) {\r\n id = this.nextGroupId.next();\r\n }\r\n }\r\n const view = new DockviewGroupPanel(this, id, options);\r\n view.init({ params: {}, accessor: null }); // required to initialized .part and allow for correct disposal of group\r\n if (!this._groups.has(view.id)) {\r\n const disposable = new CompositeDisposable(view.model.onTabDragStart((event) => {\r\n this._onWillDragPanel.fire(event);\r\n }), view.model.onGroupDragStart((event) => {\r\n this._onWillDragGroup.fire(event);\r\n }), view.model.onMove((event) => {\r\n const { groupId, itemId, target, index } = event;\r\n this.moveGroupOrPanel(view, groupId, itemId, target, index);\r\n }), view.model.onDidDrop((event) => {\r\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: view }));\r\n }), view.model.onDidAddPanel((event) => {\r\n this._onDidAddPanel.fire(event.panel);\r\n }), view.model.onDidRemovePanel((event) => {\r\n this._onDidRemovePanel.fire(event.panel);\r\n }), view.model.onDidActivePanelChange((event) => {\r\n this._onDidActivePanelChange.fire(event.panel);\r\n }));\r\n this._groups.set(view.id, { value: view, disposable });\r\n }\r\n // TODO: must be called after the above listeners have been setup,\r\n // not an ideal pattern\r\n view.initialize();\r\n return view;\r\n }\r\n createPanel(options, group) {\r\n const contentComponent = options.component;\r\n const tabComponent = options.tabComponent || this.options.defaultTabComponent;\r\n const view = new DockviewPanelModel(this, options.id, contentComponent, tabComponent);\r\n const panel = new DockviewPanel(options.id, this, this._api, group, view);\r\n panel.init({\r\n title: options.title || options.id,\r\n params: (options === null || options === void 0 ? void 0 : options.params) || {},\r\n });\r\n return panel;\r\n }\r\n createGroupAtLocation(location = [0]) {\r\n const group = this.createGroup();\r\n this.doAddGroup(group, location);\r\n return group;\r\n }\r\n findGroup(panel) {\r\n var _a;\r\n return (_a = Array.from(this._groups.values()).find((group) => group.value.model.containsPanel(panel))) === null || _a === void 0 ? void 0 : _a.value;\r\n }\r\n}\r\n//# sourceMappingURL=dockviewComponent.js.map","import { getRelativeLocation, getGridLocation, } from './gridview';\r\nimport { tail, sequenceEquals } from '../array';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nimport { BaseGrid, toTarget, } from './baseComponentGridview';\r\nimport { createComponent } from '../panel/componentFactory';\r\nimport { Emitter } from '../events';\r\nexport class GridviewComponent extends BaseGrid {\r\n get orientation() {\r\n return this.gridview.orientation;\r\n }\r\n set orientation(value) {\r\n this.gridview.orientation = value;\r\n }\r\n get options() {\r\n return this._options;\r\n }\r\n get deserializer() {\r\n return this._deserializer;\r\n }\r\n set deserializer(value) {\r\n this._deserializer = value;\r\n }\r\n constructor(options) {\r\n super({\r\n parentElement: options.parentElement,\r\n proportionalLayout: options.proportionalLayout,\r\n orientation: options.orientation,\r\n styles: options.styles,\r\n });\r\n this._onDidLayoutfromJSON = new Emitter();\r\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\r\n this._options = options;\r\n if (!this.options.components) {\r\n this.options.components = {};\r\n }\r\n if (!this.options.frameworkComponents) {\r\n this.options.frameworkComponents = {};\r\n }\r\n }\r\n updateOptions(options) {\r\n const hasOrientationChanged = typeof options.orientation === 'string' &&\r\n this.gridview.orientation !== options.orientation;\r\n this._options = Object.assign(Object.assign({}, this.options), options);\r\n if (hasOrientationChanged) {\r\n this.gridview.orientation = options.orientation;\r\n }\r\n this.layout(this.gridview.width, this.gridview.height, true);\r\n }\r\n removePanel(panel) {\r\n this.removeGroup(panel);\r\n }\r\n /**\r\n * Serialize the current state of the layout\r\n *\r\n * @returns A JSON respresentation of the layout\r\n */\r\n toJSON() {\r\n var _a;\r\n const data = this.gridview.serialize();\r\n return {\r\n grid: data,\r\n activePanel: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,\r\n };\r\n }\r\n setVisible(panel, visible) {\r\n this.gridview.setViewVisible(getGridLocation(panel.element), visible);\r\n }\r\n setActive(panel) {\r\n this._groups.forEach((value, _key) => {\r\n value.value.setActive(panel === value.value);\r\n });\r\n }\r\n focus() {\r\n var _a;\r\n (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();\r\n }\r\n fromJSON(serializedGridview) {\r\n this.clear();\r\n const { grid, activePanel } = serializedGridview;\r\n try {\r\n const queue = [];\r\n // take note of the existing dimensions\r\n const width = this.width;\r\n const height = this.height;\r\n this.gridview.deserialize(grid, {\r\n fromJSON: (node) => {\r\n const { data } = node;\r\n const view = createComponent(data.id, data.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkComponentFactory\r\n ? {\r\n createComponent: this.options.frameworkComponentFactory\r\n .createComponent,\r\n }\r\n : undefined);\r\n queue.push(() => view.init({\r\n params: data.params,\r\n minimumWidth: data.minimumWidth,\r\n maximumWidth: data.maximumWidth,\r\n minimumHeight: data.minimumHeight,\r\n maximumHeight: data.maximumHeight,\r\n priority: data.priority,\r\n snap: !!data.snap,\r\n accessor: this,\r\n isVisible: node.visible,\r\n }));\r\n this._onDidAddGroup.fire(view);\r\n this.registerPanel(view);\r\n return view;\r\n },\r\n });\r\n this.layout(width, height, true);\r\n queue.forEach((f) => f());\r\n if (typeof activePanel === 'string') {\r\n const panel = this.getPanel(activePanel);\r\n if (panel) {\r\n this.doSetGroupActive(panel);\r\n }\r\n }\r\n }\r\n catch (err) {\r\n /**\r\n * To remove a group we cannot call this.removeGroup(...) since this makes assumptions about\r\n * the underlying HTMLElement existing in the Gridview.\r\n */\r\n for (const group of this.groups) {\r\n group.dispose();\r\n this._groups.delete(group.id);\r\n this._onDidRemoveGroup.fire(group);\r\n }\r\n // fires clean-up events and clears the underlying HTML gridview.\r\n this.clear();\r\n /**\r\n * even though we have cleaned-up we still want to inform the caller of their error\r\n * and we'll do this through re-throwing the original error since afterall you would\r\n * expect trying to load a corrupted layout to result in an error and not silently fail...\r\n */\r\n throw err;\r\n }\r\n this._onDidLayoutfromJSON.fire();\r\n }\r\n clear() {\r\n const hasActiveGroup = this.activeGroup;\r\n const groups = Array.from(this._groups.values()); // reassign since group panels will mutate\r\n for (const group of groups) {\r\n group.disposable.dispose();\r\n this.doRemoveGroup(group.value, { skipActive: true });\r\n }\r\n if (hasActiveGroup) {\r\n this.doSetGroupActive(undefined);\r\n }\r\n this.gridview.clear();\r\n }\r\n movePanel(panel, options) {\r\n var _a;\r\n let relativeLocation;\r\n const removedPanel = this.gridview.remove(panel);\r\n const referenceGroup = (_a = this._groups.get(options.reference)) === null || _a === void 0 ? void 0 : _a.value;\r\n if (!referenceGroup) {\r\n throw new Error(`reference group ${options.reference} does not exist`);\r\n }\r\n const target = toTarget(options.direction);\r\n if (target === 'center') {\r\n throw new Error(`${target} not supported as an option`);\r\n }\r\n else {\r\n const location = getGridLocation(referenceGroup.element);\r\n relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\r\n }\r\n this.doAddGroup(removedPanel, relativeLocation, options.size);\r\n }\r\n addPanel(options) {\r\n var _a, _b;\r\n let relativeLocation = options.location || [0];\r\n if ((_a = options.position) === null || _a === void 0 ? void 0 : _a.referencePanel) {\r\n const referenceGroup = (_b = this._groups.get(options.position.referencePanel)) === null || _b === void 0 ? void 0 : _b.value;\r\n if (!referenceGroup) {\r\n throw new Error(`reference group ${options.position.referencePanel} does not exist`);\r\n }\r\n const target = toTarget(options.position.direction);\r\n if (target === 'center') {\r\n throw new Error(`${target} not supported as an option`);\r\n }\r\n else {\r\n const location = getGridLocation(referenceGroup.element);\r\n relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\r\n }\r\n }\r\n const view = createComponent(options.id, options.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkComponentFactory\r\n ? {\r\n createComponent: this.options.frameworkComponentFactory\r\n .createComponent,\r\n }\r\n : undefined);\r\n view.init({\r\n params: options.params || {},\r\n minimumWidth: options.minimumWidth,\r\n maximumWidth: options.maximumWidth,\r\n minimumHeight: options.minimumHeight,\r\n maximumHeight: options.maximumHeight,\r\n priority: options.priority,\r\n snap: !!options.snap,\r\n accessor: this,\r\n isVisible: true,\r\n });\r\n this.registerPanel(view);\r\n this.doAddGroup(view, relativeLocation, options.size);\r\n return view;\r\n }\r\n registerPanel(panel) {\r\n const disposable = new CompositeDisposable(panel.api.onDidFocusChange((event) => {\r\n if (!event.isFocused) {\r\n return;\r\n }\r\n this._groups.forEach((groupItem) => {\r\n const group = groupItem.value;\r\n if (group !== panel) {\r\n group.setActive(false);\r\n }\r\n else {\r\n group.setActive(true);\r\n }\r\n });\r\n }));\r\n this._groups.set(panel.id, {\r\n value: panel,\r\n disposable,\r\n });\r\n }\r\n moveGroup(referenceGroup, groupId, target) {\r\n const sourceGroup = this.getPanel(groupId);\r\n if (!sourceGroup) {\r\n throw new Error('invalid operation');\r\n }\r\n const referenceLocation = getGridLocation(referenceGroup.element);\r\n const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);\r\n const [targetParentLocation, to] = tail(targetLocation);\r\n const sourceLocation = getGridLocation(sourceGroup.element);\r\n const [sourceParentLocation, from] = tail(sourceLocation);\r\n if (sequenceEquals(sourceParentLocation, targetParentLocation)) {\r\n // special case when 'swapping' two views within same grid location\r\n // if a group has one tab - we are essentially moving the 'group'\r\n // which is equivalent to swapping two views in this case\r\n this.gridview.moveView(sourceParentLocation, from, to);\r\n return;\r\n }\r\n // source group will become empty so delete the group\r\n const targetGroup = this.doRemoveGroup(sourceGroup, {\r\n skipActive: true,\r\n skipDispose: true,\r\n });\r\n // after deleting the group we need to re-evaulate the ref location\r\n const updatedReferenceLocation = getGridLocation(referenceGroup.element);\r\n const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, target);\r\n this.doAddGroup(targetGroup, location);\r\n }\r\n removeGroup(group) {\r\n super.removeGroup(group);\r\n }\r\n dispose() {\r\n super.dispose();\r\n this._onDidLayoutfromJSON.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=gridviewComponent.js.map","import { CompositeDisposable, MutableDisposable, } from '../lifecycle';\r\nimport { Orientation, Sizing, Splitview, } from './splitview';\r\nimport { Emitter } from '../events';\r\nimport { createComponent } from '../panel/componentFactory';\r\nimport { Resizable } from '../resizable';\r\n/**\r\n * A high-level implementation of splitview that works using 'panels'\r\n */\r\nexport class SplitviewComponent extends Resizable {\r\n get panels() {\r\n return this.splitview.getViews();\r\n }\r\n get options() {\r\n return this._options;\r\n }\r\n get length() {\r\n return this._panels.size;\r\n }\r\n get orientation() {\r\n return this.splitview.orientation;\r\n }\r\n get splitview() {\r\n return this._splitview;\r\n }\r\n set splitview(value) {\r\n this._splitview = value;\r\n this._splitviewChangeDisposable.value = new CompositeDisposable(this._splitview.onDidSashEnd(() => {\r\n this._onDidLayoutChange.fire(undefined);\r\n }), this._splitview.onDidAddView((e) => this._onDidAddView.fire(e)), this._splitview.onDidRemoveView((e) => this._onDidRemoveView.fire(e)));\r\n }\r\n get minimumSize() {\r\n return this.splitview.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.splitview.maximumSize;\r\n }\r\n get height() {\r\n return this.splitview.orientation === Orientation.HORIZONTAL\r\n ? this.splitview.orthogonalSize\r\n : this.splitview.size;\r\n }\r\n get width() {\r\n return this.splitview.orientation === Orientation.HORIZONTAL\r\n ? this.splitview.size\r\n : this.splitview.orthogonalSize;\r\n }\r\n constructor(options) {\r\n super(options.parentElement);\r\n this._splitviewChangeDisposable = new MutableDisposable();\r\n this._panels = new Map();\r\n this._onDidLayoutfromJSON = new Emitter();\r\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\r\n this._onDidAddView = new Emitter();\r\n this.onDidAddView = this._onDidAddView.event;\r\n this._onDidRemoveView = new Emitter();\r\n this.onDidRemoveView = this._onDidRemoveView.event;\r\n this._onDidLayoutChange = new Emitter();\r\n this.onDidLayoutChange = this._onDidLayoutChange.event;\r\n this._options = options;\r\n if (!options.components) {\r\n options.components = {};\r\n }\r\n if (!options.frameworkComponents) {\r\n options.frameworkComponents = {};\r\n }\r\n this.splitview = new Splitview(this.element, options);\r\n this.addDisposables(this._onDidAddView, this._onDidLayoutfromJSON, this._onDidRemoveView, this._onDidLayoutChange);\r\n }\r\n updateOptions(options) {\r\n const hasOrientationChanged = typeof options.orientation === 'string' &&\r\n this.options.orientation !== options.orientation;\r\n this._options = Object.assign(Object.assign({}, this.options), options);\r\n if (hasOrientationChanged) {\r\n this.splitview.orientation = options.orientation;\r\n }\r\n this.splitview.layout(this.splitview.size, this.splitview.orthogonalSize);\r\n }\r\n focus() {\r\n var _a;\r\n (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();\r\n }\r\n movePanel(from, to) {\r\n this.splitview.moveView(from, to);\r\n }\r\n setVisible(panel, visible) {\r\n const index = this.panels.indexOf(panel);\r\n this.splitview.setViewVisible(index, visible);\r\n }\r\n setActive(view, skipFocus) {\r\n this._activePanel = view;\r\n this.panels\r\n .filter((v) => v !== view)\r\n .forEach((v) => {\r\n v.api._onDidActiveChange.fire({ isActive: false });\r\n if (!skipFocus) {\r\n v.focus();\r\n }\r\n });\r\n view.api._onDidActiveChange.fire({ isActive: true });\r\n if (!skipFocus) {\r\n view.focus();\r\n }\r\n }\r\n removePanel(panel, sizing) {\r\n const item = this._panels.get(panel.id);\r\n if (!item) {\r\n throw new Error(`unknown splitview panel ${panel.id}`);\r\n }\r\n item.dispose();\r\n this._panels.delete(panel.id);\r\n const index = this.panels.findIndex((_) => _ === panel);\r\n const removedView = this.splitview.removeView(index, sizing);\r\n removedView.dispose();\r\n const panels = this.panels;\r\n if (panels.length > 0) {\r\n this.setActive(panels[panels.length - 1]);\r\n }\r\n }\r\n getPanel(id) {\r\n return this.panels.find((view) => view.id === id);\r\n }\r\n addPanel(options) {\r\n if (this._panels.has(options.id)) {\r\n throw new Error(`panel ${options.id} already exists`);\r\n }\r\n const view = createComponent(options.id, options.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkWrapper\r\n ? {\r\n createComponent: this.options.frameworkWrapper.createComponent,\r\n }\r\n : undefined);\r\n view.orientation = this.splitview.orientation;\r\n view.init({\r\n params: options.params || {},\r\n minimumSize: options.minimumSize,\r\n maximumSize: options.maximumSize,\r\n snap: options.snap,\r\n priority: options.priority,\r\n accessor: this,\r\n });\r\n const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;\r\n const index = typeof options.index === 'number' ? options.index : undefined;\r\n this.splitview.addView(view, size, index);\r\n this.doAddView(view);\r\n this.setActive(view);\r\n return view;\r\n }\r\n layout(width, height) {\r\n const [size, orthogonalSize] = this.splitview.orientation === Orientation.HORIZONTAL\r\n ? [width, height]\r\n : [height, width];\r\n this.splitview.layout(size, orthogonalSize);\r\n }\r\n doAddView(view) {\r\n const disposable = view.api.onDidFocusChange((event) => {\r\n if (!event.isFocused) {\r\n return;\r\n }\r\n this.setActive(view, true);\r\n });\r\n this._panels.set(view.id, disposable);\r\n }\r\n toJSON() {\r\n var _a;\r\n const views = this.splitview\r\n .getViews()\r\n .map((view, i) => {\r\n const size = this.splitview.getViewSize(i);\r\n return {\r\n size,\r\n data: view.toJSON(),\r\n snap: !!view.snap,\r\n priority: view.priority,\r\n };\r\n });\r\n return {\r\n views,\r\n activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,\r\n size: this.splitview.size,\r\n orientation: this.splitview.orientation,\r\n };\r\n }\r\n fromJSON(serializedSplitview) {\r\n this.clear();\r\n const { views, orientation, size, activeView } = serializedSplitview;\r\n const queue = [];\r\n // take note of the existing dimensions\r\n const width = this.width;\r\n const height = this.height;\r\n this.splitview = new Splitview(this.element, {\r\n orientation,\r\n proportionalLayout: this.options.proportionalLayout,\r\n descriptor: {\r\n size,\r\n views: views.map((view) => {\r\n const data = view.data;\r\n if (this._panels.has(data.id)) {\r\n throw new Error(`panel ${data.id} already exists`);\r\n }\r\n const panel = createComponent(data.id, data.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkWrapper\r\n ? {\r\n createComponent: this.options.frameworkWrapper\r\n .createComponent,\r\n }\r\n : undefined);\r\n queue.push(() => {\r\n panel.init({\r\n params: data.params || {},\r\n minimumSize: data.minimumSize,\r\n maximumSize: data.maximumSize,\r\n snap: view.snap,\r\n priority: view.priority,\r\n accessor: this,\r\n });\r\n });\r\n panel.orientation = orientation;\r\n this.doAddView(panel);\r\n setTimeout(() => {\r\n // the original onDidAddView events are missed since they are fired before we can subcribe to them\r\n this._onDidAddView.fire(panel);\r\n }, 0);\r\n return { size: view.size, view: panel };\r\n }),\r\n },\r\n });\r\n this.layout(width, height);\r\n queue.forEach((f) => f());\r\n if (typeof activeView === 'string') {\r\n const panel = this.getPanel(activeView);\r\n if (panel) {\r\n this.setActive(panel);\r\n }\r\n }\r\n this._onDidLayoutfromJSON.fire();\r\n }\r\n clear() {\r\n for (const disposable of this._panels.values()) {\r\n disposable.dispose();\r\n }\r\n this._panels.clear();\r\n while (this.splitview.length > 0) {\r\n const view = this.splitview.removeView(0, Sizing.Distribute, true);\r\n view.dispose();\r\n }\r\n }\r\n dispose() {\r\n for (const disposable of this._panels.values()) {\r\n disposable.dispose();\r\n }\r\n this._panels.clear();\r\n const views = this.splitview.getViews();\r\n this._splitviewChangeDisposable.dispose();\r\n this.splitview.dispose();\r\n for (const view of views) {\r\n view.dispose();\r\n }\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=splitviewComponent.js.map","import { addDisposableListener } from '../events';\r\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\r\nimport { toggleClass } from '../dom';\r\nimport { createChevronRightButton, createExpandMoreButton } from '../svg';\r\nexport class DefaultHeader extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor() {\r\n super();\r\n this._expandedIcon = createExpandMoreButton();\r\n this._collapsedIcon = createChevronRightButton();\r\n this.disposable = new MutableDisposable();\r\n this.apiRef = { api: null };\r\n this._element = document.createElement('div');\r\n this.element.className = 'default-header';\r\n this._content = document.createElement('span');\r\n this._expander = document.createElement('div');\r\n this._expander.className = 'dockview-pane-header-icon';\r\n this.element.appendChild(this._expander);\r\n this.element.appendChild(this._content);\r\n this.addDisposables(addDisposableListener(this._element, 'click', () => {\r\n var _a;\r\n (_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.setExpanded(!this.apiRef.api.isExpanded);\r\n }));\r\n }\r\n init(params) {\r\n this.apiRef.api = params.api;\r\n this._content.textContent = params.title;\r\n this.updateIcon();\r\n this.disposable.value = params.api.onDidExpansionChange(() => {\r\n this.updateIcon();\r\n });\r\n }\r\n updateIcon() {\r\n var _a;\r\n const isExpanded = !!((_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.isExpanded);\r\n toggleClass(this._expander, 'collapsed', !isExpanded);\r\n if (isExpanded) {\r\n if (this._expander.contains(this._collapsedIcon)) {\r\n this._collapsedIcon.remove();\r\n }\r\n if (!this._expander.contains(this._expandedIcon)) {\r\n this._expander.appendChild(this._expandedIcon);\r\n }\r\n }\r\n else {\r\n if (this._expander.contains(this._expandedIcon)) {\r\n this._expandedIcon.remove();\r\n }\r\n if (!this._expander.contains(this._collapsedIcon)) {\r\n this._expander.appendChild(this._collapsedIcon);\r\n }\r\n }\r\n }\r\n update(_params) {\r\n //\r\n }\r\n dispose() {\r\n this.disposable.dispose();\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=defaultPaneviewHeader.js.map","import { PaneviewApi } from '../api/component.api';\r\nimport { createComponent } from '../panel/componentFactory';\r\nimport { Emitter } from '../events';\r\nimport { CompositeDisposable, MutableDisposable, } from '../lifecycle';\r\nimport { Orientation, Sizing } from '../splitview/splitview';\r\nimport { Paneview } from './paneview';\r\nimport { DraggablePaneviewPanel, } from './draggablePaneviewPanel';\r\nimport { DefaultHeader } from './defaultPaneviewHeader';\r\nimport { sequentialNumberGenerator } from '../math';\r\nimport { Resizable } from '../resizable';\r\nconst nextLayoutId = sequentialNumberGenerator();\r\nexport class PaneFramework extends DraggablePaneviewPanel {\r\n constructor(options) {\r\n super(options.accessor, options.id, options.component, options.headerComponent, options.orientation, options.isExpanded, options.disableDnd);\r\n this.options = options;\r\n }\r\n getBodyComponent() {\r\n return this.options.body;\r\n }\r\n getHeaderComponent() {\r\n return this.options.header;\r\n }\r\n}\r\nexport class PaneviewComponent extends Resizable {\r\n get id() {\r\n return this._id;\r\n }\r\n get panels() {\r\n return this.paneview.getPanes();\r\n }\r\n set paneview(value) {\r\n this._paneview = value;\r\n this._disposable.value = new CompositeDisposable(this._paneview.onDidChange(() => {\r\n this._onDidLayoutChange.fire(undefined);\r\n }), this._paneview.onDidAddView((e) => this._onDidAddView.fire(e)), this._paneview.onDidRemoveView((e) => this._onDidRemoveView.fire(e)));\r\n }\r\n get paneview() {\r\n return this._paneview;\r\n }\r\n get minimumSize() {\r\n return this.paneview.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.paneview.maximumSize;\r\n }\r\n get height() {\r\n return this.paneview.orientation === Orientation.HORIZONTAL\r\n ? this.paneview.orthogonalSize\r\n : this.paneview.size;\r\n }\r\n get width() {\r\n return this.paneview.orientation === Orientation.HORIZONTAL\r\n ? this.paneview.size\r\n : this.paneview.orthogonalSize;\r\n }\r\n get options() {\r\n return this._options;\r\n }\r\n constructor(options) {\r\n super(options.parentElement);\r\n this._id = nextLayoutId.next();\r\n this._disposable = new MutableDisposable();\r\n this._viewDisposables = new Map();\r\n this._onDidLayoutfromJSON = new Emitter();\r\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\r\n this._onDidLayoutChange = new Emitter();\r\n this.onDidLayoutChange = this._onDidLayoutChange.event;\r\n this._onDidDrop = new Emitter();\r\n this.onDidDrop = this._onDidDrop.event;\r\n this._onDidAddView = new Emitter();\r\n this.onDidAddView = this._onDidAddView.event;\r\n this._onDidRemoveView = new Emitter();\r\n this.onDidRemoveView = this._onDidRemoveView.event;\r\n this.addDisposables(this._onDidLayoutChange, this._onDidLayoutfromJSON, this._onDidDrop, this._onDidAddView, this._onDidRemoveView);\r\n this._options = options;\r\n if (!options.components) {\r\n options.components = {};\r\n }\r\n if (!options.frameworkComponents) {\r\n options.frameworkComponents = {};\r\n }\r\n this.paneview = new Paneview(this.element, {\r\n // only allow paneview in the vertical orientation for now\r\n orientation: Orientation.VERTICAL,\r\n });\r\n this.addDisposables(this._disposable);\r\n }\r\n focus() {\r\n //noop\r\n }\r\n updateOptions(options) {\r\n this._options = Object.assign(Object.assign({}, this.options), options);\r\n }\r\n addPanel(options) {\r\n const body = createComponent(options.id, options.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkWrapper\r\n ? {\r\n createComponent: this.options.frameworkWrapper.body.createComponent,\r\n }\r\n : undefined);\r\n let header;\r\n if (options.headerComponent) {\r\n header = createComponent(options.id, options.headerComponent, this.options.headerComponents || {}, this.options.headerframeworkComponents, this.options.frameworkWrapper\r\n ? {\r\n createComponent: this.options.frameworkWrapper.header\r\n .createComponent,\r\n }\r\n : undefined);\r\n }\r\n else {\r\n header = new DefaultHeader();\r\n }\r\n const view = new PaneFramework({\r\n id: options.id,\r\n component: options.component,\r\n headerComponent: options.headerComponent,\r\n header,\r\n body,\r\n orientation: Orientation.VERTICAL,\r\n isExpanded: !!options.isExpanded,\r\n disableDnd: !!this.options.disableDnd,\r\n accessor: this,\r\n });\r\n this.doAddPanel(view);\r\n const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;\r\n const index = typeof options.index === 'number' ? options.index : undefined;\r\n view.init({\r\n params: options.params || {},\r\n minimumBodySize: options.minimumBodySize,\r\n maximumBodySize: options.maximumBodySize,\r\n isExpanded: options.isExpanded,\r\n title: options.title,\r\n containerApi: new PaneviewApi(this),\r\n });\r\n this.paneview.addPane(view, size, index);\r\n view.orientation = this.paneview.orientation;\r\n return view;\r\n }\r\n removePanel(panel) {\r\n const views = this.panels;\r\n const index = views.findIndex((_) => _ === panel);\r\n this.paneview.removePane(index);\r\n this.doRemovePanel(panel);\r\n }\r\n movePanel(from, to) {\r\n this.paneview.moveView(from, to);\r\n }\r\n getPanel(id) {\r\n return this.panels.find((view) => view.id === id);\r\n }\r\n layout(width, height) {\r\n const [size, orthogonalSize] = this.paneview.orientation === Orientation.HORIZONTAL\r\n ? [width, height]\r\n : [height, width];\r\n this.paneview.layout(size, orthogonalSize);\r\n }\r\n toJSON() {\r\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ||\r\n value === Number.POSITIVE_INFINITY\r\n ? undefined\r\n : value;\r\n const minimum = (value) => (value <= 0 ? undefined : value);\r\n const views = this.paneview\r\n .getPanes()\r\n .map((view, i) => {\r\n const size = this.paneview.getViewSize(i);\r\n return {\r\n size,\r\n data: view.toJSON(),\r\n minimumSize: minimum(view.minimumBodySize),\r\n maximumSize: maximum(view.maximumBodySize),\r\n expanded: view.isExpanded(),\r\n };\r\n });\r\n return {\r\n views,\r\n size: this.paneview.size,\r\n };\r\n }\r\n fromJSON(serializedPaneview) {\r\n this.clear();\r\n const { views, size } = serializedPaneview;\r\n const queue = [];\r\n // take note of the existing dimensions\r\n const width = this.width;\r\n const height = this.height;\r\n this.paneview = new Paneview(this.element, {\r\n orientation: Orientation.VERTICAL,\r\n descriptor: {\r\n size,\r\n views: views.map((view) => {\r\n const data = view.data;\r\n const body = createComponent(data.id, data.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkWrapper\r\n ? {\r\n createComponent: this.options.frameworkWrapper.body\r\n .createComponent,\r\n }\r\n : undefined);\r\n let header;\r\n if (data.headerComponent) {\r\n header = createComponent(data.id, data.headerComponent, this.options.headerComponents || {}, this.options.headerframeworkComponents || {}, this.options.frameworkWrapper\r\n ? {\r\n createComponent: this.options.frameworkWrapper.header\r\n .createComponent,\r\n }\r\n : undefined);\r\n }\r\n else {\r\n header = new DefaultHeader();\r\n }\r\n const panel = new PaneFramework({\r\n id: data.id,\r\n component: data.component,\r\n headerComponent: data.headerComponent,\r\n header,\r\n body,\r\n orientation: Orientation.VERTICAL,\r\n isExpanded: !!view.expanded,\r\n disableDnd: !!this.options.disableDnd,\r\n accessor: this,\r\n });\r\n this.doAddPanel(panel);\r\n queue.push(() => {\r\n panel.init({\r\n params: data.params || {},\r\n minimumBodySize: view.minimumSize,\r\n maximumBodySize: view.maximumSize,\r\n title: data.title,\r\n isExpanded: !!view.expanded,\r\n containerApi: new PaneviewApi(this),\r\n });\r\n panel.orientation = this.paneview.orientation;\r\n });\r\n setTimeout(() => {\r\n // the original onDidAddView events are missed since they are fired before we can subcribe to them\r\n this._onDidAddView.fire(panel);\r\n }, 0);\r\n return { size: view.size, view: panel };\r\n }),\r\n },\r\n });\r\n this.layout(width, height);\r\n queue.forEach((f) => f());\r\n this._onDidLayoutfromJSON.fire();\r\n }\r\n clear() {\r\n for (const [_, value] of this._viewDisposables.entries()) {\r\n value.dispose();\r\n }\r\n this._viewDisposables.clear();\r\n this.paneview.dispose();\r\n }\r\n doAddPanel(panel) {\r\n const disposable = panel.onDidDrop((event) => {\r\n this._onDidDrop.fire(event);\r\n });\r\n this._viewDisposables.set(panel.id, disposable);\r\n }\r\n doRemovePanel(panel) {\r\n const disposable = this._viewDisposables.get(panel.id);\r\n if (disposable) {\r\n disposable.dispose();\r\n this._viewDisposables.delete(panel.id);\r\n }\r\n }\r\n dispose() {\r\n super.dispose();\r\n for (const [_, value] of this._viewDisposables.entries()) {\r\n value.dispose();\r\n }\r\n this._viewDisposables.clear();\r\n this.paneview.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=paneviewComponent.js.map","import { BasePanelView, } from '../gridview/basePanelView';\r\nimport { SplitviewPanelApiImpl } from '../api/splitviewPanelApi';\r\nimport { Orientation } from './splitview';\r\nimport { Emitter } from '../events';\r\nexport class SplitviewPanel extends BasePanelView {\r\n get priority() {\r\n return this._priority;\r\n }\r\n set orientation(value) {\r\n this._orientation = value;\r\n }\r\n get orientation() {\r\n return this._orientation;\r\n }\r\n get minimumSize() {\r\n const size = typeof this._minimumSize === 'function'\r\n ? this._minimumSize()\r\n : this._minimumSize;\r\n if (size !== this._evaluatedMinimumSize) {\r\n this._evaluatedMinimumSize = size;\r\n this.updateConstraints();\r\n }\r\n return size;\r\n }\r\n get maximumSize() {\r\n const size = typeof this._maximumSize === 'function'\r\n ? this._maximumSize()\r\n : this._maximumSize;\r\n if (size !== this._evaluatedMaximumSize) {\r\n this._evaluatedMaximumSize = size;\r\n this.updateConstraints();\r\n }\r\n return size;\r\n }\r\n get snap() {\r\n return this._snap;\r\n }\r\n constructor(id, componentName) {\r\n super(id, componentName, new SplitviewPanelApiImpl(id));\r\n this._evaluatedMinimumSize = 0;\r\n this._evaluatedMaximumSize = Number.POSITIVE_INFINITY;\r\n this._minimumSize = 0;\r\n this._maximumSize = Number.POSITIVE_INFINITY;\r\n this._snap = false;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this.api.initialize(this);\r\n this.addDisposables(this._onDidChange, this.api.onVisibilityChange((event) => {\r\n const { isVisible } = event;\r\n const { accessor } = this._params;\r\n accessor.setVisible(this, isVisible);\r\n }), this.api.onActiveChange(() => {\r\n const { accessor } = this._params;\r\n accessor.setActive(this);\r\n }), this.api.onDidConstraintsChangeInternal((event) => {\r\n if (typeof event.minimumSize === 'number' ||\r\n typeof event.minimumSize === 'function') {\r\n this._minimumSize = event.minimumSize;\r\n }\r\n if (typeof event.maximumSize === 'number' ||\r\n typeof event.maximumSize === 'function') {\r\n this._maximumSize = event.maximumSize;\r\n }\r\n this.updateConstraints();\r\n }), this.api.onDidSizeChange((event) => {\r\n this._onDidChange.fire({ size: event.size });\r\n }));\r\n }\r\n setVisible(isVisible) {\r\n this.api._onDidVisibilityChange.fire({ isVisible });\r\n }\r\n setActive(isActive) {\r\n this.api._onDidActiveChange.fire({ isActive });\r\n }\r\n layout(size, orthogonalSize) {\r\n const [width, height] = this.orientation === Orientation.HORIZONTAL\r\n ? [size, orthogonalSize]\r\n : [orthogonalSize, size];\r\n super.layout(width, height);\r\n }\r\n init(parameters) {\r\n super.init(parameters);\r\n this._priority = parameters.priority;\r\n if (parameters.minimumSize) {\r\n this._minimumSize = parameters.minimumSize;\r\n }\r\n if (parameters.maximumSize) {\r\n this._maximumSize = parameters.maximumSize;\r\n }\r\n if (parameters.snap) {\r\n this._snap = parameters.snap;\r\n }\r\n }\r\n toJSON() {\r\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ||\r\n value === Number.POSITIVE_INFINITY\r\n ? undefined\r\n : value;\r\n const minimum = (value) => (value <= 0 ? undefined : value);\r\n return Object.assign(Object.assign({}, super.toJSON()), { minimumSize: minimum(this.minimumSize), maximumSize: maximum(this.maximumSize) });\r\n }\r\n updateConstraints() {\r\n this.api._onDidConstraintsChange.fire({\r\n maximumSize: this._evaluatedMaximumSize,\r\n minimumSize: this._evaluatedMinimumSize,\r\n });\r\n }\r\n}\r\n//# sourceMappingURL=splitviewPanel.js.map",null,null,null,null,null,null,"/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n",null,null,null,null,null,null,null,null],"names":["Disposable","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","TransferObject","constructor","PanelTransfer","viewId","groupId","panelId","super","this","PaneTransfer","paneId","LocalSelectionTransfer","getInstance","INSTANCE","hasData","proto","clearData","undefined","data","getData","setData","getPanelData","panelTransfer","prototype","getPaneData","paneTransfer","exports","DockviewEvent","Event","any","children","listener","disposables","map","child","dispose","forEach","d","Stacktrace","create","_a","Error","stack","value","print","console","warn","Listener","callback","stacktrace","Emitter","setLeakageMonitorEnabled","isEnabled","ENABLE_TRACKING","MEMORY_LEAK_WATCHER","clear","options","_listeners","_disposed","event","_event","replay","_last","push","index","indexOf","splice","add","fire","e","length","queueMicrotask","delete","addDisposableWindowListener","element","addEventListener","removeEventListener","addDisposableListener","events","Map","size","set","TickDelayedEvent","_onFired","onEvent","timer","clearTimeout","setTimeout","NONE","CompositeDisposable","isDisposed","_isDisposed","args","_disposables","addDisposables","arg","MutableDisposable","_disposable","disposable","createComponent","id","componentName","components","frameworkComponents","createFrameworkComponent","fallback","Component","FrameworkComponent","watchElementResize","cb","observer","ResizeObserver","entires","requestAnimationFrame","firstEntry","observe","unobserve","disconnect","removeClasses","classes","classname","classList","contains","remove","addClasses","toggleClass","className","isToggled","hasClass","isAncestor","testChild","testAncestor","parentNode","tag","Array","slice","call","trackFocus","FocusTracker","_onDidFocus","onDidFocus","_onDidBlur","onDidBlur","hasFocus","activeElement","loosingFocus","onFocus","onBlur","window","_refreshStateHandler","HTMLElement","refreshState","QUASI_PREVENT_DEFAULT_KEY","quasiDefaultPrevented","tail","arr","sequenceEquals","arr1","arr2","i","pushToStart","unshift","pushToEnd","clamp","min","max","Math","sequentialNumberGenerator","next","toString","range","from","to","result","ViewItem","_size","cachedVisibleSize","_cachedVisibleSize","visible","minimumSize","view","viewMinimumSize","maximumSize","viewMaximumSize","priority","snap","enabled","container","pointerEvents","setVisible","toggle","Orientation","SashState","LayoutPriority","Sizing","Distribute","Split","Invisible","Splitview","orthogonalSize","_orthogonalSize","viewItems","proportions","_proportions","orientation","_orientation","tmp","HORIZONTAL","reduce","r","item","Number","POSITIVE_INFINITY","startSnappingEnabled","_startSnappingEnabled","updateSashEnablement","endSnappingEnabled","_endSnappingEnabled","sashes","contentSize","_onDidSashEnd","onDidSashEnd","_onDidAddView","onDidAddView","_onDidRemoveView","onDidRemoveView","resize","delta","sizes","x","lowPriorityIndexes","highPriorityIndexes","overloadMinDelta","NEGATIVE_INFINITY","overloadMaxDelta","snapBefore","snapAfter","upIndexes","downIndexes","upItems","upSizes","downItems","downSizes","minDeltaUp","_","maxDeltaUp","maxDeltaDown","minDeltaDown","minDelta","maxDelta","snapped","snapView","limitDelta","actualDelta","deltaUp","viewDelta","deltaDown","createContainer","proportionalLayout","viewContainer","createViewContainer","sashContainer","createSashContainer","styles","descriptor","views","viewDescriptor","sizing","addView","saveProportions","separatorBorder","removeProperty","setProperty","isViewVisible","setViewVisible","viewItem","distributeEmptySpace","layoutViews","getViewSize","resizeView","indexes","filter","Low","High","round","relayout","getViews","onDidChange","skipLayout","viewSize","newSize","removeChild","sash","onPointerStart","iframes","iframe","start","clientX","clientY","sashIndex","array","fn","firstIndex","s","snapBeforeIndex","findFirstSnapIndex","snapAfterIndex","snappedViewItem","halfSize","floor","onPointerMove","end","sashItem","distributeViewSizes","flexibleViewItems","flexibleSize","removeView","getViewCachedVisibleSize","moveView","layout","previousSize","lowPriorityIndex","emptyDelta","sum","offset","left","top","VERTICAL","width","height","previous","collapsesDown","expandsDown","reverseViews","reverse","collapsesUp","expandsUp","position","snappedBefore","snappedAfter","updateSash","MINIMUM","MAXIMUM","DISABLED","ENABLED","state","orientationClassname","Paneview","splitview","paneItems","skipAnimation","_onDidChange","getPanes","pane","onDidChangeExpansionState","setupAnimation","paneItem","addPane","removePane","skipDispose","animationTimer","LeafNode","minimumWidth","maximumWidth","minimumHeight","maximumHeight","minimumOrthogonalSize","maximumOrthogonalSize","BranchNode","c","Normal","priorities","some","p","childDescriptors","_childrenDisposable","childDescriptor","node","setupChildrenEvents","isChildVisible","setChildVisible","moveChild","_removeChild","_addChild","getChildSize","resizeChild","addChild","getChildCachedVisibleSize","findLeaf","candiateNode","last","flipNode","orthogonal","totalSize","childSize","indexInParent","parentElement","el","firstElementChild","lastElementChild","nextElementSibling","getGridLocation","test","getRelativeLocation","rootOrientation","location","direction","getLocationOrientation","getDirectionOrientation","rest","_index","isGridBranchNode","serializeBranchNode","box","toJSON","Gridview","_root","root","serialize","getView","deserialize","json","deserializer","_deserialize","_deserializeNode","serializedChild","fromJSON","oldRoot","insertOrthogonalSplitviewAtRoot","childReference","progmaticSelect","getNode","_getViews","nodeCachedVisibleSize","path","n","l","parent","parentLocation","pathToParent","grandParent","parentIndex","__","newSiblingSize","newSiblingCachedVisibleSize","newParent","newSibling","nodeToRemove","sibling","isSiblingVisible","siblingSizing","SplitviewApi","component","panels","onDidLayoutFromJSON","onDidLayoutChange","updateOptions","removePanel","panel","focus","getPanel","addPanel","movePanel","PaneviewApi","onDidDrop","emitter","Object","assign","api","GridviewApi","onDidAddPanel","onDidAddGroup","onDidRemovePanel","onDidRemoveGroup","onDidActivePanelChange","onDidActiveGroupChange","groups","force","DockviewApi","totalPanels","onWillDragGroup","onWillDragPanel","activePanel","activeGroup","getGroupPanel","addGroup","moveToNext","moveToPrevious","closeAllGroups","removeGroup","group","getGroup","addFloatingGroup","coord","DragAndDropObserver","callbacks","target","registerListeners","onDragEnter","preventDefault","onDragOver","onDragLeave","onDragEnd","onDrop","directionToPosition","Droptarget","_state","_onDrop","_acceptedTargetZonesSet","Set","acceptedTargetZones","removeDropTarget","clientWidth","clientHeight","rect","currentTarget","getBoundingClientRect","y","quadrant","calculateQuadrant","isAlreadyUsed","canDisplayOverlay","markAsUsed","targetElement","overlayElement","append","toggleClasses","setState","stopPropagation","nativeEvent","setTargetZones","USED_EVENT_ID","_b","_c","_d","isSmallX","isSmallY","isLeft","isRight","isTop","isBottom","rightClass","leftClass","topClass","bottomClass","overlayModel","translate","transform","overlayType","_e","_f","isPercentage","activationSize","maybeNumber","threshold","xp","yp","has","calculateQuadrantAsPercentage","calculateQuadrantAsPixels","ContentContainer","_element","tabIndex","show","display","hide","openPanel","content","focusTracker","_width","_height","closePanel","DockviewDropTargets","DragHandler","dataDisposable","pointerEventsDisposable","_onDragStart","onDragStart","configure","isCancelled","defaultPrevented","dataTransfer","effectAllowed","items","TabDragHandler","accessor","Tab","_onChanged","onChanged","_onDropped","draggable","dragHandler","droptarget","locked","model","setActive","isActive","setContent","part","GroupDragHandler","shiftKey","isFloating","dragEvent","getComputedStyle","bgColor","getPropertyValue","color","ghostElement","backgroundColor","padding","fontSize","lineHeight","borderRadius","textContent","body","setDragImage","addGhostImage","VoidContainer","doSetGroupActive","handler","voidDropTarget","Panel","TabsContainer","tabs","hidden","_hidden","setRightActionsElement","rightActions","rightActionsContainer","setLeftActionsElement","leftActions","leftActionsContainer","setPrefixActionsElement","preActions","preActionsContainer","tab","selectedIndex","findIndex","_onTabDragStart","onTabDragStart","_onGroupDragStart","onGroupDragStart","singleTabMode","tabContainer","voidContainer","disableFloatingGroups","rootTop","rootLeft","inDragMode","button","_isGroupActive","addTab","tabToRemove","setActivePanel","isActivePanel","find","isFloatingGroupsEnabled","isFloatingWithOnePanel","alreadyFocused","isContentFocused","skipFocus","DockviewGroupPanelModel","_activePanel","_locked","_panels","isEmpty","hasWatermark","watermark","header","tabsContainer","contentContainer","_isFloating","dropTarget","groupPanel","_onDidFloatingStateChange","mostRecentlyUsed","_onMove","onMove","_onDidDrop","_onDidAddPanel","_onDidRemovePanel","_onDidActivePanelChange","hideHeader","handleDropEvent","initialize","doAddPanel","updateContainer","createRightHeaderActionsElement","_rightHeaderActions","init","containerApi","createLeftHeaderActionsElement","_leftHeaderActions","createPrefixHeaderActionsElement","_prefixHeaderActions","activeView","normalizedIndex","suppressRoll","containsPanel","includes","_params","update","skipSetPanelActive","skipSetGroupActive","updateParentGroup","doSetActivePanel","groupItemOrId","panelToRemove","_removePanel","closeAllPanels","arrPanelCpy","doClose","isPanelActive","updateActions","isGroupActive","doRemovePanel","nextPanel","skipSetActive","hasExistingPanel","updateMru","createWatermarkComponent","showDndOverlay","itemId","Resizable","entry","contentRect","nextLayoutId","toTarget","BaseGrid","_id","_groups","values","gridview","_activeGroup","_onDidLayoutChange","_onDidRemoveGroup","_onDidAddGroup","_onDidActiveGroupChange","_bufferOnDidLayoutChange","isVisible","doAddGroup","doRemoveGroup","get","skipActive","forceResize","PanelApiImpl","isFocused","_isFocused","_isActive","_isVisible","panelUpdatesDisposable","_onDidDimensionChange","onDidDimensionsChange","_onDidChangeFocus","onDidFocusChange","_onFocusEvent","onFocusEvent","_onDidVisibilityChange","onDidVisibilityChange","_onVisibilityChange","onVisibilityChange","_onDidActiveChange","onDidActiveChange","_onActiveChange","onActiveChange","_onUpdateParameters","onUpdateParameters","parameters","params","updateParameters","SplitviewPanelApiImpl","_onDidConstraintsChangeInternal","onDidConstraintsChangeInternal","_onDidConstraintsChange","onDidConstraintsChange","_onDidSizeChange","onDidSizeChange","setConstraints","setSize","PaneviewPanelApiImpl","_pane","_onDidExpansionChange","onDidExpansionChange","_onMouseEnter","onMouseEnter","_onMouseLeave","onMouseLeave","setExpanded","isExpanded","BasePanelView","outline","overflow","getComponent","key","keys","PaneviewPanel","headerSize","_minimumBodySize","_maximumBodySize","minimumBodySize","maximumBodySize","headerVisible","_headerVisible","headerComponent","isHeaderVisible","_onDidChangeExpansionState","_isExpanded","expandedSize","ev","isPanelExpanded","renderOnce","expanded","bodyPart","getBodyComponent","headerPart","getHeaderComponent","title","minHeight","maxHeight","DraggablePaneviewPanel","disableDnd","initDragFeatures","accessorId","existingPanel","allPanels","fromIndex","toIndex","GridviewPanelApiImpl","GridviewPanel","_priority","_snap","_minimumWidth","_evaluatedMinimumWidth","updateConstraints","_minimumHeight","_evaluatedMinimumHeight","_maximumHeight","_evaluatedMaximumHeight","_maximumWidth","_evaluatedMaximumWidth","MAX_SAFE_INTEGER","maximum","minimum","DockviewGroupPanelApiImpl","_group","onDidFloatingStateChange","moveTo","moveGroupOrPanel","DockviewGroupPanel","_model","isPanelOptionsWithPanel","referencePanel","isPanelOptionsWithGroup","referenceGroup","isGroupOptionsWithPanel","isGroupOptionsWithGroup","DockviewPanelApiImpl","isOldGroupActive","_onDidGroupChange","_onDidTitleChange","onDidTitleChange","onDidGroupChange","setTitle","close","DockviewPanel","_title","contentComponent","tabComponent","isPanelVisible","createSvgElementFromPath","svg","createElementNS","setAttributeNS","viewbox","createCloseButton","DefaultTab","_content","_actionContainer","_list","action","render","onGroupChange","onPanelVisibleChange","_isPanelVisible","DockviewPanelModel","_tab","createContentComponent","createTabComponent","frameworkComponentFactory","tabComponents","frameworkTabComponents","defaultTabComponent","DefaultDockviewDeserialzier","panelData","viewData","Watermark","emptySpace","flexGrow","actionsContainer","closeAnchor","_api","_visible","isOneGroup","bringElementToFront","Overlay","minimumInViewportWidth","minimumInViewportHeight","_onDidChangeEnd","onDidChangeEnd","setupResize","setBounds","bounds","containerRect","overlayRect","xOffset","getMinimumWidth","yOffset","getMinimumHeight","setupDrag","dragTarget","move","track","resizeHandleElement","startPosition","originalY","originalHeight","originalX","originalWidth","moveTop","MAX_VALUE","MINIMUM_HEIGHT","moveBottom","moveLeft","MINIMUM_WIDTH","moveRight","DockviewFloatingGroupPanel","overlay","DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE","DockviewComponent","flatMap","_options","nextGroupId","_deserializer","_onWillDragPanel","_onWillDragGroup","_onDidLayoutFromJSON","floatingGroups","updateWatermark","watermarkComponent","watermarkFrameworkComponent","Edge","orthogonalize","createGroup","removeEmptyGroup","skipRemoveGroup","overlayLeft","overlayTop","floatingGroupBounds","minimumWidthWithinViewport","minimumHeightWithinViewport","querySelector","floatingGroupPanel","t","createGroupAtLocation","hasOrientationChanged","hasFloatingGroupOptionsChanged","floating","includePanel","collection","floats","floatingGroup","grid","isArray","createGroupFromSerializedState","createdPanels","serializedFloatingGroups","serializedFloatingGroup","err","hasActiveGroup","hasActivePanel","entries","findGroup","createPanel","o","relativeLocation","watermarkContainer","destinationGroup","sourceGroupId","sourceItemId","destinationTarget","destinationIndex","sourceGroup","referenceLocation","targetLocation","targetParentLocation","sourceLocation","sourceParentLocation","targetGroup","updatedReferenceLocation","groupItem","dropLocation","moveGroup","isGroupAlreadyFocused","GridviewComponent","_onDidLayoutfromJSON","_key","serializedGridview","queue","registerPanel","f","removedPanel","reference","SplitviewComponent","_splitview","_splitviewChangeDisposable","v","frameworkWrapper","doAddView","serializedSplitview","DefaultHeader","_expandedIcon","_collapsedIcon","apiRef","_expander","updateIcon","PaneFramework","PaneviewComponent","paneview","_paneview","_viewDisposables","headerComponents","headerframeworkComponents","serializedPaneview","SplitviewPanel","_minimumSize","_evaluatedMinimumSize","_maximumSize","_evaluatedMaximumSize","ReactComponentBridge","props","triggerRender","React","useState","_props","useRef","componentProps","useImperativeHandle","current","Date","now","displayName","uniquePortalKeyGenerator","ReactPartContext","createContext","ReactPart","portalStore","context","_initialProps","disposed","createPortal","componentInstance","bridgeComponent","forwardRef","Provider","portal","ReactDOM","addPortal","usePortalsLifecycle","portals","setPortals","useDebugValue","useCallback","existingPortals","ReactPanelContentPart","reactPortalStore","DockviewEmitter","ReactPanelHeaderPart","ReactWatermarkPart","ReactHeaderActionsRendererPart","_part","mutableDisposable","DockviewMutableDisposable","DockviewCompositeDisposable","updatePanels","updateActivePanel","updateGroupActive","createGroupControlElement","store","DEFAULT_REACT_TAB","DockviewReact","domRef","dockviewRef","useEffect","factory","componentId","dockview","hideBorders","leftHeaderActionsComponent","rightHeaderActionsComponent","prefixHeaderActionsComponent","onReady","SuppressedError","CloseButton","viewBox","focusable","ReactPanelView","reactComponent","SplitviewReact","splitviewRef","ReactGridPanelView","GridviewReact","gridviewRef","PanePanelSection","PaneviewReact","paneviewRef","_componentId","_containerApi","hideClose","closeActionOverride","hasOwnProperty","getOwnPropertySymbols","propertyIsEnumerable","__rest","onClose","onMouseDown","onClick"],"mappings":"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","x_google_ignoreList":[1,60]}