dockview 1.7.5 → 1.8.0
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/README.md +2 -1
- package/dist/cjs/dockview/dockview.d.ts +4 -2
- package/dist/cjs/dockview/dockview.d.ts.map +1 -1
- package/dist/cjs/dockview/dockview.js +23 -5
- package/dist/cjs/dockview/dockview.js.map +1 -1
- package/dist/cjs/dockview/{groupControlsRenderer.d.ts → headerActionsRenderer.d.ts} +6 -5
- package/dist/cjs/dockview/headerActionsRenderer.d.ts.map +1 -0
- package/dist/cjs/dockview/{groupControlsRenderer.js → headerActionsRenderer.js} +17 -16
- package/dist/cjs/dockview/{groupControlsRenderer.js.map → headerActionsRenderer.js.map} +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/svg.d.ts +3 -3
- package/dist/cjs/svg.d.ts.map +1 -1
- package/dist/dockview.amd.js +839 -163
- package/dist/dockview.amd.js.map +1 -0
- package/dist/dockview.amd.min.js +3 -2
- package/dist/dockview.amd.min.js.map +1 -0
- package/dist/dockview.amd.min.noStyle.js +3 -2
- package/dist/dockview.amd.min.noStyle.js.map +1 -0
- package/dist/dockview.amd.noStyle.js +839 -163
- package/dist/dockview.amd.noStyle.js.map +1 -0
- package/dist/dockview.cjs.js +839 -163
- package/dist/dockview.cjs.js.map +1 -0
- package/dist/dockview.esm.js +840 -163
- package/dist/dockview.esm.js.map +1 -0
- package/dist/dockview.esm.min.js +3 -2
- package/dist/dockview.esm.min.js.map +1 -0
- package/dist/dockview.js +839 -163
- package/dist/dockview.js.map +1 -0
- package/dist/dockview.min.js +3 -2
- package/dist/dockview.min.js.map +1 -0
- package/dist/dockview.min.noStyle.js +3 -2
- package/dist/dockview.min.noStyle.js.map +1 -0
- package/dist/dockview.noStyle.js +839 -163
- package/dist/dockview.noStyle.js.map +1 -0
- package/dist/esm/dockview/dockview.d.ts +4 -2
- package/dist/esm/dockview/dockview.d.ts.map +1 -1
- package/dist/esm/dockview/dockview.js +23 -5
- package/dist/esm/dockview/dockview.js.map +1 -1
- package/dist/esm/dockview/{groupControlsRenderer.d.ts → headerActionsRenderer.d.ts} +6 -5
- package/dist/esm/dockview/headerActionsRenderer.d.ts.map +1 -0
- package/dist/esm/dockview/{groupControlsRenderer.js → headerActionsRenderer.js} +3 -2
- package/dist/esm/dockview/{groupControlsRenderer.js.map → headerActionsRenderer.js.map} +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/svg.d.ts +3 -3
- package/dist/esm/svg.d.ts.map +1 -1
- package/package.json +6 -6
- package/dist/cjs/dockview/groupControlsRenderer.d.ts.map +0 -1
- package/dist/esm/dockview/groupControlsRenderer.d.ts.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dockview.esm.min.js","sources":["../../dockview-core/dist/esm/events.js","../../dockview-core/dist/esm/lifecycle.js","../../../node_modules/style-inject/dist/style-inject.es.js","../../dockview-core/dist/esm/dnd/dataTransfer.js","../../dockview-core/dist/esm/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/dockview/defaultTab.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"],"sourcesContent":["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 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 static from(...args) {\r\n return new CompositeDisposable(...args);\r\n }\r\n constructor(...args) {\r\n this._isDisposed = false;\r\n this._disposables = args;\r\n }\r\n addDisposables(...args) {\r\n args.forEach((arg) => this._disposables.push(arg));\r\n }\r\n dispose() {\r\n this._disposables.forEach((arg) => arg.dispose());\r\n this._isDisposed = true;\r\n }\r\n}\r\nexport class MutableDisposable {\r\n constructor() {\r\n this._disposable = Disposable.NONE;\r\n }\r\n set value(disposable) {\r\n if (this._disposable) {\r\n this._disposable.dispose();\r\n }\r\n this._disposable = disposable;\r\n }\r\n dispose() {\r\n if (this._disposable) {\r\n this._disposable.dispose();\r\n this._disposable = Disposable.NONE;\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=lifecycle.js.map","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","class TransferObject {\r\n constructor() {\r\n //\r\n }\r\n}\r\nexport class PanelTransfer extends TransferObject {\r\n constructor(viewId, groupId, panelId) {\r\n super();\r\n this.viewId = viewId;\r\n this.groupId = groupId;\r\n this.panelId = panelId;\r\n }\r\n}\r\nexport class PaneTransfer extends TransferObject {\r\n constructor(viewId, paneId) {\r\n super();\r\n this.viewId = viewId;\r\n this.paneId = paneId;\r\n }\r\n}\r\n/**\r\n * A singleton to store transfer data during drag & drop operations that are only valid within the application.\r\n */\r\nexport class LocalSelectionTransfer {\r\n constructor() {\r\n // protect against external instantiation\r\n }\r\n static getInstance() {\r\n return LocalSelectionTransfer.INSTANCE;\r\n }\r\n hasData(proto) {\r\n return proto && proto === this.proto;\r\n }\r\n clearData(proto) {\r\n if (this.hasData(proto)) {\r\n this.proto = undefined;\r\n this.data = undefined;\r\n }\r\n }\r\n getData(proto) {\r\n if (this.hasData(proto)) {\r\n return this.data;\r\n }\r\n return undefined;\r\n }\r\n setData(data, proto) {\r\n if (proto) {\r\n this.data = data;\r\n this.proto = proto;\r\n }\r\n }\r\n}\r\nLocalSelectionTransfer.INSTANCE = new LocalSelectionTransfer();\r\nexport function getPanelData() {\r\n const panelTransfer = LocalSelectionTransfer.getInstance();\r\n const isPanelEvent = panelTransfer.hasData(PanelTransfer.prototype);\r\n if (!isPanelEvent) {\r\n return undefined;\r\n }\r\n return panelTransfer.getData(PanelTransfer.prototype)[0];\r\n}\r\nexport function getPaneData() {\r\n const paneTransfer = LocalSelectionTransfer.getInstance();\r\n const isPanelEvent = paneTransfer.hasData(PaneTransfer.prototype);\r\n if (!isPanelEvent) {\r\n return undefined;\r\n }\r\n return paneTransfer.getData(PaneTransfer.prototype)[0];\r\n}\r\n//# sourceMappingURL=dataTransfer.js.map","export 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 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 (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.dataTransfer);\r\n if (event.dataTransfer) {\r\n event.dataTransfer.effectAllowed = 'move';\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 }), 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\nexport class Tab extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor(panelId, accessor, group) {\r\n super();\r\n this.panelId = panelId;\r\n this.accessor = accessor;\r\n this.group = group;\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._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 this.addDisposables(this._onChanged, this._onDropped, new (class Handler extends DragHandler {\r\n constructor() {\r\n super(...arguments);\r\n this.panelTransfer = LocalSelectionTransfer.getInstance();\r\n }\r\n getData() {\r\n this.panelTransfer.setData([new PanelTransfer(accessor.id, group.id, panelId)], PanelTransfer.prototype);\r\n return {\r\n dispose: () => {\r\n this.panelTransfer.clearData(PanelTransfer.prototype);\r\n },\r\n };\r\n }\r\n })(this._element));\r\n this.addDisposables(addDisposableListener(this._element, 'mousedown', (event) => {\r\n if (event.defaultPrevented) {\r\n return;\r\n }\r\n this._onChanged.fire(event);\r\n }));\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.panelId !== data.panelId;\r\n }\r\n return this.group.model.canDisplayOverlay(event, position, DockviewDropTargets.Tab);\r\n },\r\n });\r\n this.addDisposables(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, accessorId, group) {\r\n super(element);\r\n this.accessorId = accessorId;\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(dataTransfer) {\r\n this.panelTransfer.setData([new PanelTransfer(this.accessorId, 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._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, addDisposableListener(this._element, 'click', () => {\r\n this.accessor.doSetGroupActive(this.group);\r\n }));\r\n const handler = new GroupDragHandler(this._element, accessor.id, 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, 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.panelId);\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.panelId === 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.addDisposables(this._onDrop);\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.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.panelId === 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.panelId;\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.panelId === panel.id)) {\r\n return;\r\n }\r\n const tabToAdd = new Tab(panel.id, 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 tabToAdd.setContent(panel.view.tab);\r\n const disposable = CompositeDisposable.from(tabToAdd.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(tabToAdd.panelId);\r\n const { top, left } = tabToAdd.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 }), tabToAdd.onDrop((event) => {\r\n this._onDrop.fire({\r\n event: event.nativeEvent,\r\n index: this.tabs.findIndex((x) => x.value === tabToAdd),\r\n });\r\n }));\r\n const value = { value: tabToAdd, 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);\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._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 && 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;\r\n this.addDisposables(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) {\r\n result.locked = true;\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 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 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, overlayRect.width - this.options.minimumInViewportWidth);\r\n // a minimum height of minimumViewportHeight must be inside the viewport\r\n const yOffset = Math.max(0, overlayRect.height - this.options.minimumInViewportHeight);\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, overlayRect.width - this.options.minimumInViewportWidth);\r\n const yOffset = Math.max(0, overlayRect.height -\r\n this.options.minimumInViewportHeight);\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 minimumInViewportHeight = this.options.minimumInViewportHeight;\r\n const minimumInViewportWidth = this.options.minimumInViewportWidth;\r\n function moveTop() {\r\n top = clamp(y, -Number.MAX_VALUE, startPosition.originalY +\r\n startPosition.originalHeight >\r\n containerRect.height\r\n ? containerRect.height -\r\n minimumInViewportHeight\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 function moveBottom() {\r\n top =\r\n startPosition.originalY -\r\n startPosition.originalHeight;\r\n height = clamp(y - top, top < 0\r\n ? -top + minimumInViewportHeight\r\n : Overlay.MINIMUM_HEIGHT, Number.MAX_VALUE);\r\n }\r\n function moveLeft() {\r\n left = clamp(x, -Number.MAX_VALUE, startPosition.originalX +\r\n startPosition.originalWidth >\r\n containerRect.width\r\n ? containerRect.width -\r\n minimumInViewportWidth\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 function moveRight() {\r\n left =\r\n startPosition.originalX -\r\n startPosition.originalWidth;\r\n width = clamp(x - left, left < 0\r\n ? -left + 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 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\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._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._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 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;\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: 100,\r\n minimumInViewportHeight: 100,\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 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 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.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 dispose() {\r\n this._onDidActivePanelChange.dispose();\r\n this._onDidAddPanel.dispose();\r\n this._onDidRemovePanel.dispose();\r\n this._onDidLayoutFromJSON.dispose();\r\n super.dispose();\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":["Event","Disposable","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","TransferObject","constructor","PanelTransfer","viewId","groupId","panelId","super","this","PaneTransfer","paneId","LocalSelectionTransfer","static","INSTANCE","hasData","proto","clearData","undefined","data","getData","setData","getPanelData","panelTransfer","getInstance","prototype","getPaneData","paneTransfer","any","children","listener","disposables","map","child","dispose","forEach","d","Stacktrace","_a","Error","stack","value","print","console","warn","Listener","callback","stacktrace","Emitter","isEnabled","ENABLE_TRACKING","MEMORY_LEAK_WATCHER","clear","options","_listeners","_disposed","event","_event","replay","_last","create","push","index","indexOf","splice","add","fire","e","length","queueMicrotask","delete","addDisposableWindowListener","element","addEventListener","removeEventListener","addDisposableListener","events","Map","size","set","TickDelayedEvent","_onFired","onEvent","timer","clearTimeout","setTimeout","NONE","CompositeDisposable","isDisposed","_isDisposed","args","_disposables","addDisposables","arg","MutableDisposable","_disposable","disposable","createComponent","id","componentName","components","frameworkComponents","createFrameworkComponent","fallback","Component","FrameworkComponent","watchElementResize","cb","observer","ResizeObserver","entires","requestAnimationFrame","firstEntry","observe","unobserve","disconnect","removeClasses","classes","classname","classList","contains","remove","addClasses","toggleClass","className","isToggled","hasClass","isAncestor","testChild","testAncestor","parentNode","tag","Array","slice","call","trackFocus","FocusTracker","_onDidFocus","onDidFocus","_onDidBlur","onDidBlur","hasFocus","activeElement","loosingFocus","onFocus","onBlur","window","_refreshStateHandler","HTMLElement","refreshState","QUASI_PREVENT_DEFAULT_KEY","quasiDefaultPrevented","tail","arr","sequenceEquals","arr1","arr2","i","pushToStart","unshift","pushToEnd","clamp","min","max","Math","sequentialNumberGenerator","next","toString","range","from","to","result","ViewItem","_size","cachedVisibleSize","_cachedVisibleSize","visible","minimumSize","view","viewMinimumSize","maximumSize","viewMaximumSize","priority","snap","enabled","container","pointerEvents","setVisible","toggle","Orientation","SashState","LayoutPriority","Sizing","Distribute","Split","Invisible","Splitview","orthogonalSize","_orthogonalSize","viewItems","proportions","_proportions","orientation","_orientation","tmp","HORIZONTAL","reduce","r","item","Number","POSITIVE_INFINITY","startSnappingEnabled","_startSnappingEnabled","updateSashEnablement","endSnappingEnabled","_endSnappingEnabled","sashes","contentSize","_onDidSashEnd","onDidSashEnd","_onDidAddView","onDidAddView","_onDidRemoveView","onDidRemoveView","resize","delta","sizes","x","lowPriorityIndexes","highPriorityIndexes","overloadMinDelta","NEGATIVE_INFINITY","overloadMaxDelta","snapBefore","snapAfter","upIndexes","downIndexes","upItems","upSizes","downItems","downSizes","minDeltaUp","_","maxDeltaUp","maxDeltaDown","minDeltaDown","minDelta","maxDelta","snapped","snapView","limitDelta","actualDelta","deltaUp","viewDelta","deltaDown","createContainer","proportionalLayout","viewContainer","createViewContainer","sashContainer","createSashContainer","styles","descriptor","views","viewDescriptor","sizing","addView","saveProportions","separatorBorder","removeProperty","setProperty","isViewVisible","setViewVisible","viewItem","distributeEmptySpace","layoutViews","getViewSize","resizeView","indexes","filter","Low","High","round","relayout","getViews","onDidChange","skipLayout","viewSize","newSize","removeChild","sash","onPointerStart","iframes","iframe","start","clientX","clientY","sashIndex","array","fn","firstIndex","s","snapBeforeIndex","findFirstSnapIndex","snapAfterIndex","snappedViewItem","halfSize","floor","onPointerMove","end","sashItem","distributeViewSizes","flexibleViewItems","flexibleSize","removeView","getViewCachedVisibleSize","moveView","layout","previousSize","lowPriorityIndex","emptyDelta","sum","offset","left","top","VERTICAL","width","height","previous","collapsesDown","expandsDown","reverseViews","reverse","collapsesUp","expandsUp","position","snappedBefore","snappedAfter","updateSash","MINIMUM","MAXIMUM","DISABLED","ENABLED","state","orientationClassname","Paneview","splitview","paneItems","skipAnimation","_onDidChange","getPanes","pane","onDidChangeExpansionState","setupAnimation","paneItem","addPane","removePane","skipDispose","animationTimer","LeafNode","minimumWidth","maximumWidth","minimumHeight","maximumHeight","minimumOrthogonalSize","maximumOrthogonalSize","BranchNode","c","Normal","priorities","some","p","childDescriptors","_childrenDisposable","childDescriptor","node","setupChildrenEvents","isChildVisible","setChildVisible","moveChild","_removeChild","_addChild","getChildSize","resizeChild","addChild","getChildCachedVisibleSize","findLeaf","candiateNode","last","flipNode","orthogonal","totalSize","childSize","indexInParent","parentElement","el","firstElementChild","lastElementChild","nextElementSibling","getGridLocation","test","getRelativeLocation","rootOrientation","location","direction","getLocationOrientation","getDirectionOrientation","rest","_index","isGridBranchNode","serializeBranchNode","box","toJSON","Gridview","_root","root","serialize","getView","deserialize","json","deserializer","_deserialize","_deserializeNode","serializedChild","fromJSON","oldRoot","insertOrthogonalSplitviewAtRoot","childReference","progmaticSelect","getNode","_getViews","nodeCachedVisibleSize","path","n","l","parent","parentLocation","pathToParent","grandParent","parentIndex","__","newSiblingSize","newSiblingCachedVisibleSize","newParent","newSibling","nodeToRemove","sibling","isSiblingVisible","siblingSizing","SplitviewApi","component","panels","onDidLayoutFromJSON","onDidLayoutChange","updateOptions","removePanel","panel","focus","getPanel","addPanel","movePanel","PaneviewApi","onDidDrop","emitter","Object","assign","api","GridviewApi","onDidAddPanel","onDidAddGroup","onDidRemovePanel","onDidRemoveGroup","onDidActivePanelChange","onDidActiveGroupChange","groups","force","DockviewApi","totalPanels","activePanel","activeGroup","getGroupPanel","addGroup","moveToNext","moveToPrevious","closeAllGroups","removeGroup","group","getGroup","addFloatingGroup","coord","DragAndDropObserver","callbacks","target","registerListeners","onDragEnter","preventDefault","onDragOver","onDragLeave","onDragEnd","onDrop","directionToPosition","positionToDirection","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","dataTransfer","effectAllowed","Tab","accessor","_onChanged","onChanged","_onDropped","draggable","arguments","defaultPrevented","droptarget","locked","model","setActive","isActive","setContent","part","GroupDragHandler","accessorId","shiftKey","isFloating","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","singleTabMode","tabContainer","voidContainer","disableFloatingGroups","rootTop","rootLeft","inDragMode","button","_isGroupActive","addTab","tabToRemove","setActivePanel","isActivePanel","find","tabToAdd","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","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","_onDidChangeEnd","onDidChangeEnd","setupResize","setBounds","bounds","containerRect","overlayRect","xOffset","minimumInViewportWidth","yOffset","minimumInViewportHeight","setupDrag","dragTarget","move","track","resizeHandleElement","startPosition","originalY","originalHeight","originalX","originalWidth","moveTop","MAX_VALUE","MINIMUM_HEIGHT","moveBottom","moveLeft","MINIMUM_WIDTH","moveRight","DockviewFloatingGroupPanel","overlay","DockviewComponent","flatMap","_options","nextGroupId","_deserializer","_onDidLayoutFromJSON","floatingGroups","updateWatermark","watermarkComponent","watermarkFrameworkComponent","Edge","orthogonalize","createGroup","removeEmptyGroup","skipRemoveGroup","overlayLeft","overlayTop","querySelector","floatingGroupPanel","t","createGroupAtLocation","hasOrientationChanged","floating","includePanel","collection","floats","floatingGroup","grid","isArray","createGroupFromSerializedState","serializedFloatingGroups","serializedFloatingGroup","hasActiveGroup","hasActivePanel","entries","findGroup","createPanel","o","relativeLocation","watermarkContainer","destinationGroup","sourceGroupId","sourceItemId","destinationTarget","destinationIndex","sourceGroup","referenceLocation","targetLocation","targetParentLocation","sourceLocation","sourceParentLocation","targetGroup","updatedReferenceLocation","groupItem","dropLocation","moveGroup","isGroupAlreadyFocused","GridviewComponent","_onDidLayoutfromJSON","_key","serializedGridview","queue","registerPanel","f","removedPanel","reference","SplitviewComponent","_splitview","_splitviewChangeDisposable","v","frameworkWrapper","doAddView","serializedSplitview","DefaultHeader","_expandedIcon","_collapsedIcon","apiRef","_expander","updateIcon","PaneFramework","PaneviewComponent","paneview","_paneview","_viewDisposables","headerComponents","headerframeworkComponents","serializedPaneview","SplitviewPanel","_minimumSize","_evaluatedMinimumSize","_maximumSize","_evaluatedMaximumSize","ReactComponentBridge","props","triggerRender","React","useState","_props","useRef","componentProps","useImperativeHandle","current","Date","now","displayName","uniquePortalKeyGenerator","ReactPartContext","createContext","ReactPart","portalStore","context","_initialProps","disposed","createPortal","componentInstance","bridgeComponent","forwardRef","Provider","portal","ReactDOM","addPortal","usePortalsLifecycle","portals","setPortals","useDebugValue","useCallback","existingPortals","isReactElement","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","DockviewDefaultTab","_containerApi","hasOwnProperty","getOwnPropertySymbols","propertyIsEnumerable","__rest","onClose","onClick","iconClassname","useMemo","join","ReactPanelView","reactComponent","SplitviewReact","splitviewRef","ReactGridPanelView","GridviewReact","gridviewRef","PanePanelSection","PaneviewReact","paneviewRef","_componentId"],"mappings":"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","x_google_ignoreList":[2,60]}
|