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.
- package/dist/cjs/dockview/dockview.d.ts +1 -0
- package/dist/cjs/dockview/dockview.d.ts.map +1 -1
- package/dist/cjs/dockview/dockview.js +9 -0
- package/dist/cjs/dockview/dockview.js.map +1 -1
- package/dist/dockview.amd.js +221 -84
- package/dist/dockview.amd.js.map +1 -1
- package/dist/dockview.amd.min.js +2 -2
- package/dist/dockview.amd.min.js.map +1 -1
- package/dist/dockview.amd.min.noStyle.js +2 -2
- package/dist/dockview.amd.min.noStyle.js.map +1 -1
- package/dist/dockview.amd.noStyle.js +221 -84
- package/dist/dockview.amd.noStyle.js.map +1 -1
- package/dist/dockview.cjs.js +221 -84
- package/dist/dockview.cjs.js.map +1 -1
- package/dist/dockview.esm.js +221 -84
- package/dist/dockview.esm.js.map +1 -1
- package/dist/dockview.esm.min.js +2 -2
- package/dist/dockview.esm.min.js.map +1 -1
- package/dist/dockview.js +221 -84
- package/dist/dockview.js.map +1 -1
- package/dist/dockview.min.js +2 -2
- package/dist/dockview.min.js.map +1 -1
- package/dist/dockview.min.noStyle.js +2 -2
- package/dist/dockview.min.noStyle.js.map +1 -1
- package/dist/dockview.noStyle.js +221 -84
- package/dist/dockview.noStyle.js.map +1 -1
- package/dist/esm/dockview/dockview.d.ts +1 -0
- package/dist/esm/dockview/dockview.d.ts.map +1 -1
- package/dist/esm/dockview/dockview.js +9 -0
- package/dist/esm/dockview/dockview.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dockview.amd.min.noStyle.js","sources":["../../dockview-core/dist/esm/lifecycle.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","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","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","type","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","getElementsByTagName","tag","Array","slice","call","document","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","style","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","appendChild","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","createElement","viewSize","newSize","removeChild","insertBefore","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","ref","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":[59]}
|
|
1
|
+
{"version":3,"file":"dockview.amd.min.noStyle.js","sources":["../../dockview-core/dist/esm/lifecycle.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","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","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","type","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","getElementsByTagName","tag","Array","slice","call","document","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","style","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","appendChild","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","createElement","viewSize","newSize","removeChild","insertBefore","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","ref","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":[59]}
|