dockview 1.8.2 → 1.8.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/dist/cjs/dockview/defaultTab.d.ts +4 -1
  2. package/dist/cjs/dockview/defaultTab.d.ts.map +1 -1
  3. package/dist/cjs/dockview/defaultTab.js +18 -11
  4. package/dist/cjs/dockview/defaultTab.js.map +1 -1
  5. package/dist/cjs/dockview/dockview.d.ts +5 -0
  6. package/dist/cjs/dockview/dockview.d.ts.map +1 -1
  7. package/dist/cjs/dockview/dockview.js +18 -0
  8. package/dist/cjs/dockview/dockview.js.map +1 -1
  9. package/dist/cjs/react.d.ts.map +1 -1
  10. package/dist/cjs/react.js.map +1 -1
  11. package/dist/cjs/types.d.ts +2 -1
  12. package/dist/cjs/types.d.ts.map +1 -1
  13. package/dist/dockview.amd.js +448 -198
  14. package/dist/dockview.amd.js.map +1 -1
  15. package/dist/dockview.amd.min.js +2 -2
  16. package/dist/dockview.amd.min.js.map +1 -1
  17. package/dist/dockview.amd.min.noStyle.js +2 -2
  18. package/dist/dockview.amd.min.noStyle.js.map +1 -1
  19. package/dist/dockview.amd.noStyle.js +447 -197
  20. package/dist/dockview.amd.noStyle.js.map +1 -1
  21. package/dist/dockview.cjs.js +448 -198
  22. package/dist/dockview.cjs.js.map +1 -1
  23. package/dist/dockview.esm.js +448 -198
  24. package/dist/dockview.esm.js.map +1 -1
  25. package/dist/dockview.esm.min.js +2 -2
  26. package/dist/dockview.esm.min.js.map +1 -1
  27. package/dist/dockview.js +448 -198
  28. package/dist/dockview.js.map +1 -1
  29. package/dist/dockview.min.js +2 -2
  30. package/dist/dockview.min.js.map +1 -1
  31. package/dist/dockview.min.noStyle.js +2 -2
  32. package/dist/dockview.min.noStyle.js.map +1 -1
  33. package/dist/dockview.noStyle.js +447 -197
  34. package/dist/dockview.noStyle.js.map +1 -1
  35. package/dist/esm/dockview/defaultTab.d.ts +4 -1
  36. package/dist/esm/dockview/defaultTab.d.ts.map +1 -1
  37. package/dist/esm/dockview/defaultTab.js +18 -11
  38. package/dist/esm/dockview/defaultTab.js.map +1 -1
  39. package/dist/esm/dockview/dockview.d.ts +5 -0
  40. package/dist/esm/dockview/dockview.d.ts.map +1 -1
  41. package/dist/esm/dockview/dockview.js +18 -0
  42. package/dist/esm/dockview/dockview.js.map +1 -1
  43. package/dist/esm/react.d.ts.map +1 -1
  44. package/dist/esm/react.js.map +1 -1
  45. package/dist/esm/types.d.ts +2 -1
  46. package/dist/esm/types.d.ts.map +1 -1
  47. package/dist/styles/dockview.css +3 -3
  48. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"dockview.amd.min.noStyle.js","sources":["../../dockview-core/dist/esm/lifecycle.js","../../dockview-core/dist/esm/dnd/dataTransfer.js","../../dockview-core/dist/esm/events.js","../../dockview-core/dist/esm/panel/componentFactory.js","../../dockview-core/dist/esm/dom.js","../../dockview-core/dist/esm/array.js","../../dockview-core/dist/esm/math.js","../../dockview-core/dist/esm/splitview/viewItem.js","../../dockview-core/dist/esm/splitview/splitview.js","../../dockview-core/dist/esm/paneview/paneview.js","../../dockview-core/dist/esm/gridview/leafNode.js","../../dockview-core/dist/esm/gridview/branchNode.js","../../dockview-core/dist/esm/gridview/gridview.js","../../dockview-core/dist/esm/api/component.api.js","../../dockview-core/dist/esm/dnd/dnd.js","../../dockview-core/dist/esm/dnd/droptarget.js","../../dockview-core/dist/esm/dockview/components/panel/content.js","../../dockview-core/dist/esm/dockview/types.js","../../dockview-core/dist/esm/dnd/abstractDragHandler.js","../../dockview-core/dist/esm/dockview/components/tab/tab.js","../../dockview-core/dist/esm/dnd/groupDragHandler.js","../../dockview-core/dist/esm/dnd/ghost.js","../../dockview-core/dist/esm/dockview/components/titlebar/voidContainer.js","../../dockview-core/dist/esm/dockview/components/titlebar/tabsContainer.js","../../dockview-core/dist/esm/dockview/dockviewGroupPanelModel.js","../../dockview-core/dist/esm/resizable.js","../../dockview-core/dist/esm/gridview/baseComponentGridview.js","../../dockview-core/dist/esm/api/panelApi.js","../../dockview-core/dist/esm/api/splitviewPanelApi.js","../../dockview-core/dist/esm/api/paneviewPanelApi.js","../../dockview-core/dist/esm/gridview/basePanelView.js","../../dockview-core/dist/esm/paneview/paneviewPanel.js","../../dockview-core/dist/esm/paneview/draggablePaneviewPanel.js","../../dockview-core/dist/esm/api/gridviewPanelApi.js","../../dockview-core/dist/esm/gridview/gridviewPanel.js","../../dockview-core/dist/esm/api/dockviewGroupPanelApi.js","../../dockview-core/dist/esm/dockview/dockviewGroupPanel.js","../../dockview-core/dist/esm/dockview/options.js","../../dockview-core/dist/esm/api/dockviewPanelApi.js","../../dockview-core/dist/esm/dockview/dockviewPanel.js","../../dockview-core/dist/esm/svg.js","../../dockview-core/dist/esm/dockview/components/tab/defaultTab.js","../../dockview-core/dist/esm/dockview/dockviewPanelModel.js","../../dockview-core/dist/esm/dockview/deserializer.js","../../dockview-core/dist/esm/dockview/components/watermark/watermark.js","../../dockview-core/dist/esm/dnd/overlay.js","../../dockview-core/dist/esm/dockview/dockviewFloatingGroupPanel.js","../../dockview-core/dist/esm/dockview/dockviewComponent.js","../../dockview-core/dist/esm/gridview/gridviewComponent.js","../../dockview-core/dist/esm/splitview/splitviewComponent.js","../../dockview-core/dist/esm/paneview/defaultPaneviewHeader.js","../../dockview-core/dist/esm/paneview/paneviewComponent.js","../../dockview-core/dist/esm/splitview/splitviewPanel.js","../../src/react.ts","../../src/dockview/reactContentPart.ts","../../src/dockview/reactHeaderPart.ts","../../src/dockview/reactWatermarkPart.ts","../../src/dockview/headerActionsRenderer.ts","../../src/dockview/dockview.tsx","../../../node_modules/tslib/tslib.es6.js","../../src/svg.tsx","../../src/splitview/view.ts","../../src/splitview/splitview.tsx","../../src/gridview/view.ts","../../src/gridview/gridview.tsx","../../src/paneview/view.tsx","../../src/paneview/paneview.tsx","../../src/dockview/defaultTab.tsx"],"sourcesContent":["export var Disposable;\r\n(function (Disposable) {\r\n Disposable.NONE = {\r\n dispose: () => {\r\n // noop\r\n },\r\n };\r\n})(Disposable || (Disposable = {}));\r\nexport class CompositeDisposable {\r\n get isDisposed() {\r\n return this._isDisposed;\r\n }\r\n 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","class TransferObject {\r\n constructor() {\r\n //\r\n }\r\n}\r\nexport class PanelTransfer extends TransferObject {\r\n constructor(viewId, groupId, panelId) {\r\n super();\r\n this.viewId = viewId;\r\n this.groupId = groupId;\r\n this.panelId = panelId;\r\n }\r\n}\r\nexport class PaneTransfer extends TransferObject {\r\n constructor(viewId, paneId) {\r\n super();\r\n this.viewId = viewId;\r\n this.paneId = paneId;\r\n }\r\n}\r\n/**\r\n * A singleton to store transfer data during drag & drop operations that are only valid within the application.\r\n */\r\nexport class LocalSelectionTransfer {\r\n constructor() {\r\n // protect against external instantiation\r\n }\r\n static getInstance() {\r\n return LocalSelectionTransfer.INSTANCE;\r\n }\r\n hasData(proto) {\r\n return proto && proto === this.proto;\r\n }\r\n clearData(proto) {\r\n if (this.hasData(proto)) {\r\n this.proto = undefined;\r\n this.data = undefined;\r\n }\r\n }\r\n getData(proto) {\r\n if (this.hasData(proto)) {\r\n return this.data;\r\n }\r\n return undefined;\r\n }\r\n setData(data, proto) {\r\n if (proto) {\r\n this.data = data;\r\n this.proto = proto;\r\n }\r\n }\r\n}\r\nLocalSelectionTransfer.INSTANCE = new LocalSelectionTransfer();\r\nexport function getPanelData() {\r\n const panelTransfer = LocalSelectionTransfer.getInstance();\r\n const isPanelEvent = panelTransfer.hasData(PanelTransfer.prototype);\r\n if (!isPanelEvent) {\r\n return undefined;\r\n }\r\n return panelTransfer.getData(PanelTransfer.prototype)[0];\r\n}\r\nexport function getPaneData() {\r\n const paneTransfer = LocalSelectionTransfer.getInstance();\r\n const isPanelEvent = paneTransfer.hasData(PaneTransfer.prototype);\r\n if (!isPanelEvent) {\r\n return undefined;\r\n }\r\n return paneTransfer.getData(PaneTransfer.prototype)[0];\r\n}\r\n//# sourceMappingURL=dataTransfer.js.map","export var Event;\r\n(function (Event) {\r\n Event.any = (...children) => {\r\n return (listener) => {\r\n const disposables = children.map((child) => child(listener));\r\n return {\r\n dispose: () => {\r\n disposables.forEach((d) => {\r\n d.dispose();\r\n });\r\n },\r\n };\r\n };\r\n };\r\n})(Event || (Event = {}));\r\nclass LeakageMonitor {\r\n constructor() {\r\n this.events = new Map();\r\n }\r\n get size() {\r\n return this.events.size;\r\n }\r\n add(event, stacktrace) {\r\n this.events.set(event, stacktrace);\r\n }\r\n delete(event) {\r\n this.events.delete(event);\r\n }\r\n clear() {\r\n this.events.clear();\r\n }\r\n}\r\nclass Stacktrace {\r\n static create() {\r\n var _a;\r\n return new Stacktrace((_a = new Error().stack) !== null && _a !== void 0 ? _a : '');\r\n }\r\n constructor(value) {\r\n this.value = value;\r\n }\r\n print() {\r\n console.warn(this.value);\r\n }\r\n}\r\nclass Listener {\r\n constructor(callback, stacktrace) {\r\n this.callback = callback;\r\n this.stacktrace = stacktrace;\r\n }\r\n}\r\n// relatively simple event emitter taken from https://github.com/microsoft/vscode/blob/master/src/vs/base/common/event.ts\r\nexport class Emitter {\r\n static setLeakageMonitorEnabled(isEnabled) {\r\n if (isEnabled !== Emitter.ENABLE_TRACKING) {\r\n Emitter.MEMORY_LEAK_WATCHER.clear();\r\n }\r\n Emitter.ENABLE_TRACKING = isEnabled;\r\n }\r\n constructor(options) {\r\n this.options = options;\r\n this._listeners = [];\r\n this._disposed = false;\r\n }\r\n get event() {\r\n if (!this._event) {\r\n this._event = (callback) => {\r\n var _a;\r\n if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.replay) && this._last !== undefined) {\r\n callback(this._last);\r\n }\r\n const listener = new Listener(callback, Emitter.ENABLE_TRACKING ? Stacktrace.create() : undefined);\r\n this._listeners.push(listener);\r\n return {\r\n dispose: () => {\r\n const index = this._listeners.indexOf(listener);\r\n if (index > -1) {\r\n this._listeners.splice(index, 1);\r\n }\r\n else if (Emitter.ENABLE_TRACKING) {\r\n // console.warn(\r\n // `Listener already disposed`,\r\n // Stacktrace.create().print()\r\n // );\r\n }\r\n },\r\n };\r\n };\r\n if (Emitter.ENABLE_TRACKING) {\r\n Emitter.MEMORY_LEAK_WATCHER.add(this._event, Stacktrace.create());\r\n }\r\n }\r\n return this._event;\r\n }\r\n fire(e) {\r\n this._last = e;\r\n for (const listener of this._listeners) {\r\n listener.callback(e);\r\n }\r\n }\r\n dispose() {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n if (this._listeners.length > 0) {\r\n if (Emitter.ENABLE_TRACKING) {\r\n queueMicrotask(() => {\r\n var _a;\r\n // don't check until stack of execution is completed to allow for out-of-order disposals within the same execution block\r\n for (const listener of this._listeners) {\r\n console.warn((_a = listener.stacktrace) === null || _a === void 0 ? void 0 : _a.print());\r\n }\r\n });\r\n }\r\n this._listeners = [];\r\n }\r\n if (Emitter.ENABLE_TRACKING && this._event) {\r\n Emitter.MEMORY_LEAK_WATCHER.delete(this._event);\r\n }\r\n }\r\n }\r\n}\r\nEmitter.ENABLE_TRACKING = false;\r\nEmitter.MEMORY_LEAK_WATCHER = new LeakageMonitor();\r\nexport function addDisposableWindowListener(element, type, listener, options) {\r\n element.addEventListener(type, listener, options);\r\n return {\r\n dispose: () => {\r\n element.removeEventListener(type, listener, options);\r\n },\r\n };\r\n}\r\nexport function addDisposableListener(element, type, listener, options) {\r\n element.addEventListener(type, listener, options);\r\n return {\r\n dispose: () => {\r\n element.removeEventListener(type, listener, options);\r\n },\r\n };\r\n}\r\nexport class TickDelayedEvent {\r\n constructor() {\r\n this._onFired = new Emitter();\r\n this.onEvent = this._onFired.event;\r\n }\r\n fire() {\r\n if (this.timer) {\r\n clearTimeout(this.timer);\r\n }\r\n this.timer = setTimeout(() => {\r\n this._onFired.fire();\r\n clearTimeout(this.timer);\r\n });\r\n }\r\n dispose() {\r\n this._onFired.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=events.js.map","export function createComponent(id, componentName, components = {}, frameworkComponents = {}, createFrameworkComponent, fallback) {\r\n const Component = typeof componentName === 'string'\r\n ? components[componentName]\r\n : undefined;\r\n const FrameworkComponent = typeof componentName === 'string'\r\n ? frameworkComponents[componentName]\r\n : undefined;\r\n if (Component && FrameworkComponent) {\r\n throw new Error(`Cannot create '${id}'. component '${componentName}' registered as both a component and frameworkComponent`);\r\n }\r\n if (FrameworkComponent) {\r\n if (!createFrameworkComponent) {\r\n throw new Error(`Cannot create '${id}' for framework component '${componentName}'. you must register a frameworkPanelWrapper to use framework components`);\r\n }\r\n return createFrameworkComponent.createComponent(id, componentName, FrameworkComponent);\r\n }\r\n if (!Component) {\r\n if (fallback) {\r\n return fallback();\r\n }\r\n throw new Error(`Cannot create '${id}', no component '${componentName}' provided`);\r\n }\r\n return new Component(id, componentName);\r\n}\r\n//# sourceMappingURL=componentFactory.js.map","import { Emitter, addDisposableListener, addDisposableWindowListener, } from './events';\r\nimport { CompositeDisposable } from './lifecycle';\r\nexport function watchElementResize(element, cb) {\r\n const observer = new ResizeObserver((entires) => {\r\n /**\r\n * Fast browser window resize produces Error: ResizeObserver loop limit exceeded.\r\n * The error isn't visible in browser console, doesn't affect functionality, but degrades performance.\r\n * See https://stackoverflow.com/questions/49384120/resizeobserver-loop-limit-exceeded/58701523#58701523\r\n */\r\n requestAnimationFrame(() => {\r\n const firstEntry = entires[0];\r\n cb(firstEntry);\r\n });\r\n });\r\n observer.observe(element);\r\n return {\r\n dispose: () => {\r\n observer.unobserve(element);\r\n observer.disconnect();\r\n },\r\n };\r\n}\r\nexport const removeClasses = (element, ...classes) => {\r\n for (const classname of classes) {\r\n if (element.classList.contains(classname)) {\r\n element.classList.remove(classname);\r\n }\r\n }\r\n};\r\nexport const addClasses = (element, ...classes) => {\r\n for (const classname of classes) {\r\n if (!element.classList.contains(classname)) {\r\n element.classList.add(classname);\r\n }\r\n }\r\n};\r\nexport const toggleClass = (element, className, isToggled) => {\r\n const hasClass = element.classList.contains(className);\r\n if (isToggled && !hasClass) {\r\n element.classList.add(className);\r\n }\r\n if (!isToggled && hasClass) {\r\n element.classList.remove(className);\r\n }\r\n};\r\nexport function isAncestor(testChild, testAncestor) {\r\n while (testChild) {\r\n if (testChild === testAncestor) {\r\n return true;\r\n }\r\n testChild = testChild.parentNode;\r\n }\r\n return false;\r\n}\r\nexport function getElementsByTagName(tag) {\r\n return Array.prototype.slice.call(document.getElementsByTagName(tag), 0);\r\n}\r\nexport function trackFocus(element) {\r\n return new FocusTracker(element);\r\n}\r\n/**\r\n * Track focus on an element. Ensure tabIndex is set when an HTMLElement is not focusable by default\r\n */\r\nclass FocusTracker extends CompositeDisposable {\r\n constructor(element) {\r\n super();\r\n this._onDidFocus = new Emitter();\r\n this.onDidFocus = this._onDidFocus.event;\r\n this._onDidBlur = new Emitter();\r\n this.onDidBlur = this._onDidBlur.event;\r\n this.addDisposables(this._onDidFocus, this._onDidBlur);\r\n let hasFocus = isAncestor(document.activeElement, element);\r\n let loosingFocus = false;\r\n const onFocus = () => {\r\n loosingFocus = false;\r\n if (!hasFocus) {\r\n hasFocus = true;\r\n this._onDidFocus.fire();\r\n }\r\n };\r\n const onBlur = () => {\r\n if (hasFocus) {\r\n loosingFocus = true;\r\n window.setTimeout(() => {\r\n if (loosingFocus) {\r\n loosingFocus = false;\r\n hasFocus = false;\r\n this._onDidBlur.fire();\r\n }\r\n }, 0);\r\n }\r\n };\r\n this._refreshStateHandler = () => {\r\n const currentNodeHasFocus = isAncestor(document.activeElement, element);\r\n if (currentNodeHasFocus !== hasFocus) {\r\n if (hasFocus) {\r\n onBlur();\r\n }\r\n else {\r\n onFocus();\r\n }\r\n }\r\n };\r\n if (element instanceof HTMLElement) {\r\n this.addDisposables(addDisposableListener(element, 'focus', onFocus, true));\r\n this.addDisposables(addDisposableListener(element, 'blur', onBlur, true));\r\n }\r\n else {\r\n this.addDisposables(addDisposableWindowListener(element, 'focus', onFocus, true));\r\n this.addDisposables(addDisposableWindowListener(element, 'blur', onBlur, true));\r\n }\r\n }\r\n refreshState() {\r\n this._refreshStateHandler();\r\n }\r\n}\r\n// quasi: apparently, but not really; seemingly\r\nconst QUASI_PREVENT_DEFAULT_KEY = 'dv-quasiPreventDefault';\r\n// mark an event directly for other listeners to check\r\nexport function quasiPreventDefault(event) {\r\n event[QUASI_PREVENT_DEFAULT_KEY] = true;\r\n}\r\n// check if this event has been marked\r\nexport function quasiDefaultPrevented(event) {\r\n return event[QUASI_PREVENT_DEFAULT_KEY];\r\n}\r\n//# sourceMappingURL=dom.js.map","export function tail(arr) {\r\n if (arr.length === 0) {\r\n throw new Error('Invalid tail call');\r\n }\r\n return [arr.slice(0, arr.length - 1), arr[arr.length - 1]];\r\n}\r\nexport function last(arr) {\r\n return arr.length > 0 ? arr[arr.length - 1] : undefined;\r\n}\r\nexport function sequenceEquals(arr1, arr2) {\r\n if (arr1.length !== arr2.length) {\r\n return false;\r\n }\r\n for (let i = 0; i < arr1.length; i++) {\r\n if (arr1[i] !== arr2[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * Pushes an element to the start of the array, if found.\r\n */\r\nexport function pushToStart(arr, value) {\r\n const index = arr.indexOf(value);\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n arr.unshift(value);\r\n }\r\n}\r\n/**\r\n * Pushes an element to the end of the array, if found.\r\n */\r\nexport function pushToEnd(arr, value) {\r\n const index = arr.indexOf(value);\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n arr.push(value);\r\n }\r\n}\r\nexport function firstIndex(array, fn) {\r\n for (let i = 0; i < array.length; i++) {\r\n const element = array[i];\r\n if (fn(element)) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\nexport function remove(array, value) {\r\n const index = array.findIndex((t) => t === value);\r\n if (index > -1) {\r\n array.splice(index, 1);\r\n return true;\r\n }\r\n return false;\r\n}\r\n//# sourceMappingURL=array.js.map","export const clamp = (value, min, max) => {\r\n if (min > max) {\r\n throw new Error(`${min} > ${max} is an invalid condition`);\r\n }\r\n return Math.min(max, Math.max(value, min));\r\n};\r\nexport const sequentialNumberGenerator = () => {\r\n let value = 1;\r\n return { next: () => (value++).toString() };\r\n};\r\nexport const range = (from, to) => {\r\n const result = [];\r\n if (typeof to !== 'number') {\r\n to = from;\r\n from = 0;\r\n }\r\n if (from <= to) {\r\n for (let i = from; i < to; i++) {\r\n result.push(i);\r\n }\r\n }\r\n else {\r\n for (let i = from; i > to; i--) {\r\n result.push(i);\r\n }\r\n }\r\n return result;\r\n};\r\n//# sourceMappingURL=math.js.map","import { clamp } from '../math';\r\nexport class ViewItem {\r\n set size(size) {\r\n this._size = size;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n get cachedVisibleSize() {\r\n return this._cachedVisibleSize;\r\n }\r\n get visible() {\r\n return typeof this._cachedVisibleSize === 'undefined';\r\n }\r\n get minimumSize() {\r\n return this.visible ? this.view.minimumSize : 0;\r\n }\r\n get viewMinimumSize() {\r\n return this.view.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.visible ? this.view.maximumSize : 0;\r\n }\r\n get viewMaximumSize() {\r\n return this.view.maximumSize;\r\n }\r\n get priority() {\r\n return this.view.priority;\r\n }\r\n get snap() {\r\n return !!this.view.snap;\r\n }\r\n set enabled(enabled) {\r\n this.container.style.pointerEvents = enabled ? '' : 'none';\r\n }\r\n constructor(container, view, size, disposable) {\r\n this.container = container;\r\n this.view = view;\r\n this.disposable = disposable;\r\n this._cachedVisibleSize = undefined;\r\n if (typeof size === 'number') {\r\n this._size = size;\r\n this._cachedVisibleSize = undefined;\r\n container.classList.add('visible');\r\n }\r\n else {\r\n this._size = 0;\r\n this._cachedVisibleSize = size.cachedVisibleSize;\r\n }\r\n }\r\n setVisible(visible, size) {\r\n var _a;\r\n if (visible === this.visible) {\r\n return;\r\n }\r\n if (visible) {\r\n this.size = clamp((_a = this._cachedVisibleSize) !== null && _a !== void 0 ? _a : 0, this.viewMinimumSize, this.viewMaximumSize);\r\n this._cachedVisibleSize = undefined;\r\n }\r\n else {\r\n this._cachedVisibleSize =\r\n typeof size === 'number' ? size : this.size;\r\n this.size = 0;\r\n }\r\n this.container.classList.toggle('visible', visible);\r\n if (this.view.setVisible) {\r\n this.view.setVisible(visible);\r\n }\r\n }\r\n dispose() {\r\n this.disposable.dispose();\r\n return this.view;\r\n }\r\n}\r\n//# sourceMappingURL=viewItem.js.map","/*---------------------------------------------------------------------------------------------\r\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\r\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/splitview\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { removeClasses, addClasses, toggleClass, getElementsByTagName, } from '../dom';\r\nimport { Emitter } from '../events';\r\nimport { pushToStart, pushToEnd, firstIndex } from '../array';\r\nimport { range, clamp } from '../math';\r\nimport { ViewItem } from './viewItem';\r\nexport var Orientation;\r\n(function (Orientation) {\r\n Orientation[\"HORIZONTAL\"] = \"HORIZONTAL\";\r\n Orientation[\"VERTICAL\"] = \"VERTICAL\";\r\n})(Orientation || (Orientation = {}));\r\nexport var SashState;\r\n(function (SashState) {\r\n SashState[SashState[\"MAXIMUM\"] = 0] = \"MAXIMUM\";\r\n SashState[SashState[\"MINIMUM\"] = 1] = \"MINIMUM\";\r\n SashState[SashState[\"DISABLED\"] = 2] = \"DISABLED\";\r\n SashState[SashState[\"ENABLED\"] = 3] = \"ENABLED\";\r\n})(SashState || (SashState = {}));\r\nexport var LayoutPriority;\r\n(function (LayoutPriority) {\r\n LayoutPriority[\"Low\"] = \"low\";\r\n LayoutPriority[\"High\"] = \"high\";\r\n LayoutPriority[\"Normal\"] = \"normal\";\r\n})(LayoutPriority || (LayoutPriority = {}));\r\nexport var Sizing;\r\n(function (Sizing) {\r\n Sizing.Distribute = { type: 'distribute' };\r\n function Split(index) {\r\n return { type: 'split', index };\r\n }\r\n Sizing.Split = Split;\r\n function Invisible(cachedVisibleSize) {\r\n return { type: 'invisible', cachedVisibleSize };\r\n }\r\n Sizing.Invisible = Invisible;\r\n})(Sizing || (Sizing = {}));\r\nexport class Splitview {\r\n get size() {\r\n return this._size;\r\n }\r\n set size(value) {\r\n this._size = value;\r\n }\r\n get orthogonalSize() {\r\n return this._orthogonalSize;\r\n }\r\n set orthogonalSize(value) {\r\n this._orthogonalSize = value;\r\n }\r\n get length() {\r\n return this.viewItems.length;\r\n }\r\n get proportions() {\r\n return this._proportions ? [...this._proportions] : undefined;\r\n }\r\n get orientation() {\r\n return this._orientation;\r\n }\r\n set orientation(value) {\r\n this._orientation = value;\r\n const tmp = this.size;\r\n this.size = this.orthogonalSize;\r\n this.orthogonalSize = tmp;\r\n removeClasses(this.element, 'horizontal', 'vertical');\r\n this.element.classList.add(this.orientation == Orientation.HORIZONTAL\r\n ? 'horizontal'\r\n : 'vertical');\r\n }\r\n get minimumSize() {\r\n return this.viewItems.reduce((r, item) => r + item.minimumSize, 0);\r\n }\r\n get maximumSize() {\r\n return this.length === 0\r\n ? Number.POSITIVE_INFINITY\r\n : this.viewItems.reduce((r, item) => r + item.maximumSize, 0);\r\n }\r\n get startSnappingEnabled() {\r\n return this._startSnappingEnabled;\r\n }\r\n set startSnappingEnabled(startSnappingEnabled) {\r\n if (this._startSnappingEnabled === startSnappingEnabled) {\r\n return;\r\n }\r\n this._startSnappingEnabled = startSnappingEnabled;\r\n this.updateSashEnablement();\r\n }\r\n get endSnappingEnabled() {\r\n return this._endSnappingEnabled;\r\n }\r\n set endSnappingEnabled(endSnappingEnabled) {\r\n if (this._endSnappingEnabled === endSnappingEnabled) {\r\n return;\r\n }\r\n this._endSnappingEnabled = endSnappingEnabled;\r\n this.updateSashEnablement();\r\n }\r\n constructor(container, options) {\r\n this.container = container;\r\n this.viewItems = [];\r\n this.sashes = [];\r\n this._size = 0;\r\n this._orthogonalSize = 0;\r\n this.contentSize = 0;\r\n this._proportions = undefined;\r\n this._startSnappingEnabled = true;\r\n this._endSnappingEnabled = true;\r\n this._onDidSashEnd = new Emitter();\r\n this.onDidSashEnd = this._onDidSashEnd.event;\r\n this._onDidAddView = new Emitter();\r\n this.onDidAddView = this._onDidAddView.event;\r\n this._onDidRemoveView = new Emitter();\r\n this.onDidRemoveView = this._onDidRemoveView.event;\r\n this.resize = (index, delta, sizes = this.viewItems.map((x) => x.size), lowPriorityIndexes, highPriorityIndexes, overloadMinDelta = Number.NEGATIVE_INFINITY, overloadMaxDelta = Number.POSITIVE_INFINITY, snapBefore, snapAfter) => {\r\n if (index < 0 || index > this.viewItems.length) {\r\n return 0;\r\n }\r\n const upIndexes = range(index, -1);\r\n const downIndexes = range(index + 1, this.viewItems.length);\r\n //\r\n if (highPriorityIndexes) {\r\n for (const i of highPriorityIndexes) {\r\n pushToStart(upIndexes, i);\r\n pushToStart(downIndexes, i);\r\n }\r\n }\r\n if (lowPriorityIndexes) {\r\n for (const i of lowPriorityIndexes) {\r\n pushToEnd(upIndexes, i);\r\n pushToEnd(downIndexes, i);\r\n }\r\n }\r\n //\r\n const upItems = upIndexes.map((i) => this.viewItems[i]);\r\n const upSizes = upIndexes.map((i) => sizes[i]);\r\n //\r\n const downItems = downIndexes.map((i) => this.viewItems[i]);\r\n const downSizes = downIndexes.map((i) => sizes[i]);\r\n //\r\n const minDeltaUp = upIndexes.reduce((_, i) => _ + this.viewItems[i].minimumSize - sizes[i], 0);\r\n const maxDeltaUp = upIndexes.reduce((_, i) => _ + this.viewItems[i].maximumSize - sizes[i], 0);\r\n //\r\n const maxDeltaDown = downIndexes.length === 0\r\n ? Number.POSITIVE_INFINITY\r\n : downIndexes.reduce((_, i) => _ + sizes[i] - this.viewItems[i].minimumSize, 0);\r\n const minDeltaDown = downIndexes.length === 0\r\n ? Number.NEGATIVE_INFINITY\r\n : downIndexes.reduce((_, i) => _ + sizes[i] - this.viewItems[i].maximumSize, 0);\r\n //\r\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\r\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\r\n //\r\n let snapped = false;\r\n if (snapBefore) {\r\n const snapView = this.viewItems[snapBefore.index];\r\n const visible = delta >= snapBefore.limitDelta;\r\n snapped = visible !== snapView.visible;\r\n snapView.setVisible(visible, snapBefore.size);\r\n }\r\n if (!snapped && snapAfter) {\r\n const snapView = this.viewItems[snapAfter.index];\r\n const visible = delta < snapAfter.limitDelta;\r\n snapped = visible !== snapView.visible;\r\n snapView.setVisible(visible, snapAfter.size);\r\n }\r\n if (snapped) {\r\n return this.resize(index, delta, sizes, lowPriorityIndexes, highPriorityIndexes, overloadMinDelta, overloadMaxDelta);\r\n }\r\n //\r\n const tentativeDelta = clamp(delta, minDelta, maxDelta);\r\n let actualDelta = 0;\r\n //\r\n let deltaUp = tentativeDelta;\r\n for (let i = 0; i < upItems.length; i++) {\r\n const item = upItems[i];\r\n const size = clamp(upSizes[i] + deltaUp, item.minimumSize, item.maximumSize);\r\n const viewDelta = size - upSizes[i];\r\n actualDelta += viewDelta;\r\n deltaUp -= viewDelta;\r\n item.size = size;\r\n }\r\n //\r\n let deltaDown = actualDelta;\r\n for (let i = 0; i < downItems.length; i++) {\r\n const item = downItems[i];\r\n const size = clamp(downSizes[i] - deltaDown, item.minimumSize, item.maximumSize);\r\n const viewDelta = size - downSizes[i];\r\n deltaDown += viewDelta;\r\n item.size = size;\r\n }\r\n //\r\n return delta;\r\n };\r\n this._orientation = options.orientation;\r\n this.element = this.createContainer();\r\n this.proportionalLayout =\r\n options.proportionalLayout === undefined\r\n ? true\r\n : !!options.proportionalLayout;\r\n this.viewContainer = this.createViewContainer();\r\n this.sashContainer = this.createSashContainer();\r\n this.element.appendChild(this.sashContainer);\r\n this.element.appendChild(this.viewContainer);\r\n this.container.appendChild(this.element);\r\n this.style(options.styles);\r\n // We have an existing set of view, add them now\r\n if (options.descriptor) {\r\n this._size = options.descriptor.size;\r\n options.descriptor.views.forEach((viewDescriptor, index) => {\r\n const sizing = viewDescriptor.visible === undefined ||\r\n viewDescriptor.visible\r\n ? viewDescriptor.size\r\n : {\r\n type: 'invisible',\r\n cachedVisibleSize: viewDescriptor.size,\r\n };\r\n const view = viewDescriptor.view;\r\n this.addView(view, sizing, index, true\r\n // true skip layout\r\n );\r\n });\r\n // Initialize content size and proportions for first layout\r\n this.contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n this.saveProportions();\r\n }\r\n }\r\n style(styles) {\r\n if ((styles === null || styles === void 0 ? void 0 : styles.separatorBorder) === 'transparent') {\r\n removeClasses(this.element, 'separator-border');\r\n this.element.style.removeProperty('--dv-separator-border');\r\n }\r\n else {\r\n addClasses(this.element, 'separator-border');\r\n if (styles === null || styles === void 0 ? void 0 : styles.separatorBorder) {\r\n this.element.style.setProperty('--dv-separator-border', styles.separatorBorder);\r\n }\r\n }\r\n }\r\n isViewVisible(index) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n throw new Error('Index out of bounds');\r\n }\r\n const viewItem = this.viewItems[index];\r\n return viewItem.visible;\r\n }\r\n setViewVisible(index, visible) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n throw new Error('Index out of bounds');\r\n }\r\n toggleClass(this.container, 'visible', visible);\r\n const viewItem = this.viewItems[index];\r\n toggleClass(this.container, 'visible', visible);\r\n viewItem.setVisible(visible, viewItem.size);\r\n this.distributeEmptySpace(index);\r\n this.layoutViews();\r\n this.saveProportions();\r\n }\r\n getViewSize(index) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n return -1;\r\n }\r\n return this.viewItems[index].size;\r\n }\r\n resizeView(index, size) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n return;\r\n }\r\n const indexes = range(this.viewItems.length).filter((i) => i !== index);\r\n const lowPriorityIndexes = [\r\n ...indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low),\r\n index,\r\n ];\r\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\r\n const item = this.viewItems[index];\r\n size = Math.round(size);\r\n size = clamp(size, item.minimumSize, Math.min(item.maximumSize, this._size));\r\n item.size = size;\r\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\r\n }\r\n getViews() {\r\n return this.viewItems.map((x) => x.view);\r\n }\r\n onDidChange(item, size) {\r\n const index = this.viewItems.indexOf(item);\r\n if (index < 0 || index >= this.viewItems.length) {\r\n return;\r\n }\r\n size = typeof size === 'number' ? size : item.size;\r\n size = clamp(size, item.minimumSize, item.maximumSize);\r\n item.size = size;\r\n this.relayout([index]);\r\n }\r\n addView(view, size = { type: 'distribute' }, index = this.viewItems.length, skipLayout) {\r\n const container = document.createElement('div');\r\n container.className = 'view';\r\n container.appendChild(view.element);\r\n let viewSize;\r\n if (typeof size === 'number') {\r\n viewSize = size;\r\n }\r\n else if (size.type === 'split') {\r\n viewSize = this.getViewSize(size.index) / 2;\r\n }\r\n else if (size.type === 'invisible') {\r\n viewSize = { cachedVisibleSize: size.cachedVisibleSize };\r\n }\r\n else {\r\n viewSize = view.minimumSize;\r\n }\r\n const disposable = view.onDidChange((newSize) => this.onDidChange(viewItem, newSize.size));\r\n const viewItem = new ViewItem(container, view, viewSize, {\r\n dispose: () => {\r\n disposable.dispose();\r\n this.viewContainer.removeChild(container);\r\n },\r\n });\r\n if (index === this.viewItems.length) {\r\n this.viewContainer.appendChild(container);\r\n }\r\n else {\r\n this.viewContainer.insertBefore(container, this.viewContainer.children.item(index));\r\n }\r\n this.viewItems.splice(index, 0, viewItem);\r\n if (this.viewItems.length > 1) {\r\n //add sash\r\n const sash = document.createElement('div');\r\n sash.className = 'sash';\r\n const onPointerStart = (event) => {\r\n for (const item of this.viewItems) {\r\n item.enabled = false;\r\n }\r\n const iframes = [\r\n ...getElementsByTagName('iframe'),\r\n ...getElementsByTagName('webview'),\r\n ];\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'none';\r\n }\r\n const start = this._orientation === Orientation.HORIZONTAL\r\n ? event.clientX\r\n : event.clientY;\r\n const sashIndex = firstIndex(this.sashes, (s) => s.container === sash);\r\n //\r\n const sizes = this.viewItems.map((x) => x.size);\r\n //\r\n let snapBefore;\r\n let snapAfter;\r\n const upIndexes = range(sashIndex, -1);\r\n const downIndexes = range(sashIndex + 1, this.viewItems.length);\r\n const minDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].minimumSize - sizes[i]), 0);\r\n const maxDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].viewMaximumSize - sizes[i]), 0);\r\n const maxDeltaDown = downIndexes.length === 0\r\n ? Number.POSITIVE_INFINITY\r\n : downIndexes.reduce((r, i) => r +\r\n (sizes[i] - this.viewItems[i].minimumSize), 0);\r\n const minDeltaDown = downIndexes.length === 0\r\n ? Number.NEGATIVE_INFINITY\r\n : downIndexes.reduce((r, i) => r +\r\n (sizes[i] -\r\n this.viewItems[i].viewMaximumSize), 0);\r\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\r\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\r\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\r\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\r\n if (typeof snapBeforeIndex === 'number') {\r\n const snappedViewItem = this.viewItems[snapBeforeIndex];\r\n const halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);\r\n snapBefore = {\r\n index: snapBeforeIndex,\r\n limitDelta: snappedViewItem.visible\r\n ? minDelta - halfSize\r\n : minDelta + halfSize,\r\n size: snappedViewItem.size,\r\n };\r\n }\r\n if (typeof snapAfterIndex === 'number') {\r\n const snappedViewItem = this.viewItems[snapAfterIndex];\r\n const halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);\r\n snapAfter = {\r\n index: snapAfterIndex,\r\n limitDelta: snappedViewItem.visible\r\n ? maxDelta + halfSize\r\n : maxDelta - halfSize,\r\n size: snappedViewItem.size,\r\n };\r\n }\r\n const onPointerMove = (event) => {\r\n const current = this._orientation === Orientation.HORIZONTAL\r\n ? event.clientX\r\n : event.clientY;\r\n const delta = current - start;\r\n this.resize(sashIndex, delta, sizes, undefined, undefined, minDelta, maxDelta, snapBefore, snapAfter);\r\n this.distributeEmptySpace();\r\n this.layoutViews();\r\n };\r\n const end = () => {\r\n for (const item of this.viewItems) {\r\n item.enabled = true;\r\n }\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'auto';\r\n }\r\n this.saveProportions();\r\n document.removeEventListener('pointermove', onPointerMove);\r\n document.removeEventListener('pointerup', end);\r\n document.removeEventListener('pointercancel', end);\r\n this._onDidSashEnd.fire(undefined);\r\n };\r\n document.addEventListener('pointermove', onPointerMove);\r\n document.addEventListener('pointerup', end);\r\n document.addEventListener('pointercancel', end);\r\n };\r\n sash.addEventListener('pointerdown', onPointerStart);\r\n const sashItem = {\r\n container: sash,\r\n disposable: () => {\r\n sash.removeEventListener('pointerdown', onPointerStart);\r\n this.sashContainer.removeChild(sash);\r\n },\r\n };\r\n this.sashContainer.appendChild(sash);\r\n this.sashes.push(sashItem);\r\n }\r\n if (!skipLayout) {\r\n this.relayout([index]);\r\n }\r\n if (!skipLayout &&\r\n typeof size !== 'number' &&\r\n size.type === 'distribute') {\r\n this.distributeViewSizes();\r\n }\r\n this._onDidAddView.fire(view);\r\n }\r\n distributeViewSizes() {\r\n const flexibleViewItems = [];\r\n let flexibleSize = 0;\r\n for (const item of this.viewItems) {\r\n if (item.maximumSize - item.minimumSize > 0) {\r\n flexibleViewItems.push(item);\r\n flexibleSize += item.size;\r\n }\r\n }\r\n const size = Math.floor(flexibleSize / flexibleViewItems.length);\r\n for (const item of flexibleViewItems) {\r\n item.size = clamp(size, item.minimumSize, item.maximumSize);\r\n }\r\n const indexes = range(this.viewItems.length);\r\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\r\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\r\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\r\n }\r\n removeView(index, sizing, skipLayout = false) {\r\n // Remove view\r\n const viewItem = this.viewItems.splice(index, 1)[0];\r\n viewItem.dispose();\r\n // Remove sash\r\n if (this.viewItems.length >= 1) {\r\n const sashIndex = Math.max(index - 1, 0);\r\n const sashItem = this.sashes.splice(sashIndex, 1)[0];\r\n sashItem.disposable();\r\n }\r\n if (!skipLayout) {\r\n this.relayout();\r\n }\r\n if (sizing && sizing.type === 'distribute') {\r\n this.distributeViewSizes();\r\n }\r\n this._onDidRemoveView.fire(viewItem.view);\r\n return viewItem.view;\r\n }\r\n getViewCachedVisibleSize(index) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n throw new Error('Index out of bounds');\r\n }\r\n const viewItem = this.viewItems[index];\r\n return viewItem.cachedVisibleSize;\r\n }\r\n moveView(from, to) {\r\n const cachedVisibleSize = this.getViewCachedVisibleSize(from);\r\n const sizing = typeof cachedVisibleSize === 'undefined'\r\n ? this.getViewSize(from)\r\n : Sizing.Invisible(cachedVisibleSize);\r\n const view = this.removeView(from, undefined, true);\r\n this.addView(view, sizing, to);\r\n }\r\n layout(size, orthogonalSize) {\r\n const previousSize = Math.max(this.size, this.contentSize);\r\n this.size = size;\r\n this.orthogonalSize = orthogonalSize;\r\n if (!this.proportions) {\r\n const indexes = range(this.viewItems.length);\r\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\r\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\r\n this.resize(this.viewItems.length - 1, size - previousSize, undefined, lowPriorityIndexes, highPriorityIndexes);\r\n }\r\n else {\r\n for (let i = 0; i < this.viewItems.length; i++) {\r\n const item = this.viewItems[i];\r\n item.size = clamp(Math.round(this.proportions[i] * size), item.minimumSize, item.maximumSize);\r\n }\r\n }\r\n this.distributeEmptySpace();\r\n this.layoutViews();\r\n }\r\n relayout(lowPriorityIndexes, highPriorityIndexes) {\r\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n this.resize(this.viewItems.length - 1, this._size - contentSize, undefined, lowPriorityIndexes, highPriorityIndexes);\r\n this.distributeEmptySpace();\r\n this.layoutViews();\r\n this.saveProportions();\r\n }\r\n distributeEmptySpace(lowPriorityIndex) {\r\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n let emptyDelta = this.size - contentSize;\r\n const indexes = range(this.viewItems.length - 1, -1);\r\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\r\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\r\n for (const index of highPriorityIndexes) {\r\n pushToStart(indexes, index);\r\n }\r\n for (const index of lowPriorityIndexes) {\r\n pushToEnd(indexes, index);\r\n }\r\n if (typeof lowPriorityIndex === 'number') {\r\n pushToEnd(indexes, lowPriorityIndex);\r\n }\r\n for (let i = 0; emptyDelta !== 0 && i < indexes.length; i++) {\r\n const item = this.viewItems[indexes[i]];\r\n const size = clamp(item.size + emptyDelta, item.minimumSize, item.maximumSize);\r\n const viewDelta = size - item.size;\r\n emptyDelta -= viewDelta;\r\n item.size = size;\r\n }\r\n }\r\n saveProportions() {\r\n if (this.proportionalLayout && this.contentSize > 0) {\r\n this._proportions = this.viewItems.map((i) => i.size / this.contentSize);\r\n }\r\n }\r\n layoutViews() {\r\n this.contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n let sum = 0;\r\n const x = [];\r\n this.updateSashEnablement();\r\n for (let i = 0; i < this.viewItems.length - 1; i++) {\r\n sum += this.viewItems[i].size;\r\n x.push(sum);\r\n const offset = Math.min(Math.max(0, sum - 2), this.size - 4);\r\n if (this._orientation === Orientation.HORIZONTAL) {\r\n this.sashes[i].container.style.left = `${offset}px`;\r\n this.sashes[i].container.style.top = `0px`;\r\n }\r\n if (this._orientation === Orientation.VERTICAL) {\r\n this.sashes[i].container.style.left = `0px`;\r\n this.sashes[i].container.style.top = `${offset}px`;\r\n }\r\n }\r\n this.viewItems.forEach((view, i) => {\r\n if (this._orientation === Orientation.HORIZONTAL) {\r\n view.container.style.width = `${view.size}px`;\r\n view.container.style.left = i == 0 ? '0px' : `${x[i - 1]}px`;\r\n view.container.style.top = '';\r\n view.container.style.height = '';\r\n }\r\n if (this._orientation === Orientation.VERTICAL) {\r\n view.container.style.height = `${view.size}px`;\r\n view.container.style.top = i == 0 ? '0px' : `${x[i - 1]}px`;\r\n view.container.style.width = '';\r\n view.container.style.left = '';\r\n }\r\n view.view.layout(view.size, this._orthogonalSize);\r\n });\r\n }\r\n findFirstSnapIndex(indexes) {\r\n // visible views first\r\n for (const index of indexes) {\r\n const viewItem = this.viewItems[index];\r\n if (!viewItem.visible) {\r\n continue;\r\n }\r\n if (viewItem.snap) {\r\n return index;\r\n }\r\n }\r\n // then, hidden views\r\n for (const index of indexes) {\r\n const viewItem = this.viewItems[index];\r\n if (viewItem.visible &&\r\n viewItem.maximumSize - viewItem.minimumSize > 0) {\r\n return undefined;\r\n }\r\n if (!viewItem.visible && viewItem.snap) {\r\n return index;\r\n }\r\n }\r\n return undefined;\r\n }\r\n updateSashEnablement() {\r\n let previous = false;\r\n const collapsesDown = this.viewItems.map((i) => (previous = i.size - i.minimumSize > 0 || previous));\r\n previous = false;\r\n const expandsDown = this.viewItems.map((i) => (previous = i.maximumSize - i.size > 0 || previous));\r\n const reverseViews = [...this.viewItems].reverse();\r\n previous = false;\r\n const collapsesUp = reverseViews\r\n .map((i) => (previous = i.size - i.minimumSize > 0 || previous))\r\n .reverse();\r\n previous = false;\r\n const expandsUp = reverseViews\r\n .map((i) => (previous = i.maximumSize - i.size > 0 || previous))\r\n .reverse();\r\n let position = 0;\r\n for (let index = 0; index < this.sashes.length; index++) {\r\n const sash = this.sashes[index];\r\n const viewItem = this.viewItems[index];\r\n position += viewItem.size;\r\n const min = !(collapsesDown[index] && expandsUp[index + 1]);\r\n const max = !(expandsDown[index] && collapsesUp[index + 1]);\r\n if (min && max) {\r\n const upIndexes = range(index, -1);\r\n const downIndexes = range(index + 1, this.viewItems.length);\r\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\r\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\r\n const snappedBefore = typeof snapBeforeIndex === 'number' &&\r\n !this.viewItems[snapBeforeIndex].visible;\r\n const snappedAfter = typeof snapAfterIndex === 'number' &&\r\n !this.viewItems[snapAfterIndex].visible;\r\n if (snappedBefore &&\r\n collapsesUp[index] &&\r\n (position > 0 || this.startSnappingEnabled)) {\r\n this.updateSash(sash, SashState.MINIMUM);\r\n }\r\n else if (snappedAfter &&\r\n collapsesDown[index] &&\r\n (position < this.contentSize || this.endSnappingEnabled)) {\r\n this.updateSash(sash, SashState.MAXIMUM);\r\n }\r\n else {\r\n this.updateSash(sash, SashState.DISABLED);\r\n }\r\n }\r\n else if (min && !max) {\r\n this.updateSash(sash, SashState.MINIMUM);\r\n }\r\n else if (!min && max) {\r\n this.updateSash(sash, SashState.MAXIMUM);\r\n }\r\n else {\r\n this.updateSash(sash, SashState.ENABLED);\r\n }\r\n }\r\n }\r\n updateSash(sash, state) {\r\n toggleClass(sash.container, 'disabled', state === SashState.DISABLED);\r\n toggleClass(sash.container, 'enabled', state === SashState.ENABLED);\r\n toggleClass(sash.container, 'maximum', state === SashState.MAXIMUM);\r\n toggleClass(sash.container, 'minimum', state === SashState.MINIMUM);\r\n }\r\n createViewContainer() {\r\n const element = document.createElement('div');\r\n element.className = 'view-container';\r\n return element;\r\n }\r\n createSashContainer() {\r\n const element = document.createElement('div');\r\n element.className = 'sash-container';\r\n return element;\r\n }\r\n createContainer() {\r\n const element = document.createElement('div');\r\n const orientationClassname = this._orientation === Orientation.HORIZONTAL\r\n ? 'horizontal'\r\n : 'vertical';\r\n element.className = `split-view-container ${orientationClassname}`;\r\n return element;\r\n }\r\n dispose() {\r\n this._onDidSashEnd.dispose();\r\n this._onDidAddView.dispose();\r\n this._onDidRemoveView.dispose();\r\n for (let i = 0; i < this.element.children.length; i++) {\r\n if (this.element.children.item(i) === this.element) {\r\n this.element.removeChild(this.element);\r\n break;\r\n }\r\n }\r\n for (const viewItem of this.viewItems) {\r\n viewItem.dispose();\r\n }\r\n this.element.remove();\r\n }\r\n}\r\n//# sourceMappingURL=splitview.js.map","import { Splitview, Orientation, } from '../splitview/splitview';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nimport { Emitter } from '../events';\r\nimport { addClasses, removeClasses } from '../dom';\r\nexport class Paneview extends CompositeDisposable {\r\n get onDidAddView() {\r\n return this.splitview.onDidAddView;\r\n }\r\n get onDidRemoveView() {\r\n return this.splitview.onDidRemoveView;\r\n }\r\n get minimumSize() {\r\n return this.splitview.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.splitview.maximumSize;\r\n }\r\n get orientation() {\r\n return this.splitview.orientation;\r\n }\r\n get size() {\r\n return this.splitview.size;\r\n }\r\n get orthogonalSize() {\r\n return this.splitview.orthogonalSize;\r\n }\r\n constructor(container, options) {\r\n var _a;\r\n super();\r\n this.paneItems = [];\r\n this.skipAnimation = false;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._orientation = (_a = options.orientation) !== null && _a !== void 0 ? _a : Orientation.VERTICAL;\r\n this.element = document.createElement('div');\r\n this.element.className = 'pane-container';\r\n container.appendChild(this.element);\r\n this.splitview = new Splitview(this.element, {\r\n orientation: this._orientation,\r\n proportionalLayout: false,\r\n descriptor: options.descriptor,\r\n });\r\n // if we've added views from the descriptor we need to\r\n // add the panes to our Pane array and setup animation\r\n this.getPanes().forEach((pane) => {\r\n const disposable = new CompositeDisposable(pane.onDidChangeExpansionState(() => {\r\n this.setupAnimation();\r\n this._onDidChange.fire(undefined);\r\n }));\r\n const paneItem = {\r\n pane,\r\n disposable: {\r\n dispose: () => {\r\n disposable.dispose();\r\n },\r\n },\r\n };\r\n this.paneItems.push(paneItem);\r\n pane.orthogonalSize = this.splitview.orthogonalSize;\r\n });\r\n this.addDisposables(this._onDidChange, this.splitview.onDidSashEnd(() => {\r\n this._onDidChange.fire(undefined);\r\n }), this.splitview.onDidAddView(() => {\r\n this._onDidChange.fire();\r\n }), this.splitview.onDidRemoveView(() => {\r\n this._onDidChange.fire();\r\n }));\r\n }\r\n addPane(pane, size, index = this.splitview.length, skipLayout = false) {\r\n const disposable = pane.onDidChangeExpansionState(() => {\r\n this.setupAnimation();\r\n this._onDidChange.fire(undefined);\r\n });\r\n const paneItem = {\r\n pane,\r\n disposable: {\r\n dispose: () => {\r\n disposable.dispose();\r\n },\r\n },\r\n };\r\n this.paneItems.splice(index, 0, paneItem);\r\n pane.orthogonalSize = this.splitview.orthogonalSize;\r\n this.splitview.addView(pane, size, index, skipLayout);\r\n }\r\n getViewSize(index) {\r\n return this.splitview.getViewSize(index);\r\n }\r\n getPanes() {\r\n return this.splitview.getViews();\r\n }\r\n removePane(index, options = { skipDispose: false }) {\r\n const paneItem = this.paneItems.splice(index, 1)[0];\r\n this.splitview.removeView(index);\r\n if (!options.skipDispose) {\r\n paneItem.disposable.dispose();\r\n paneItem.pane.dispose();\r\n }\r\n return paneItem;\r\n }\r\n moveView(from, to) {\r\n if (from === to) {\r\n return;\r\n }\r\n const view = this.removePane(from, { skipDispose: true });\r\n this.skipAnimation = true;\r\n try {\r\n this.addPane(view.pane, view.pane.size, to, false);\r\n }\r\n finally {\r\n this.skipAnimation = false;\r\n }\r\n }\r\n layout(size, orthogonalSize) {\r\n this.splitview.layout(size, orthogonalSize);\r\n }\r\n setupAnimation() {\r\n if (this.skipAnimation) {\r\n return;\r\n }\r\n if (this.animationTimer) {\r\n clearTimeout(this.animationTimer);\r\n this.animationTimer = undefined;\r\n }\r\n addClasses(this.element, 'animated');\r\n this.animationTimer = setTimeout(() => {\r\n this.animationTimer = undefined;\r\n removeClasses(this.element, 'animated');\r\n }, 200);\r\n }\r\n dispose() {\r\n super.dispose();\r\n if (this.animationTimer) {\r\n clearTimeout(this.animationTimer);\r\n this.animationTimer = undefined;\r\n }\r\n this.paneItems.forEach((paneItem) => {\r\n paneItem.disposable.dispose();\r\n paneItem.pane.dispose();\r\n });\r\n this.paneItems = [];\r\n this.splitview.dispose();\r\n this.element.remove();\r\n }\r\n}\r\n//# sourceMappingURL=paneview.js.map","/*---------------------------------------------------------------------------------------------\r\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\r\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Orientation } from '../splitview/splitview';\r\nimport { Emitter } from '../events';\r\nexport class LeafNode {\r\n get minimumWidth() {\r\n return this.view.minimumWidth;\r\n }\r\n get maximumWidth() {\r\n return this.view.maximumWidth;\r\n }\r\n get minimumHeight() {\r\n return this.view.minimumHeight;\r\n }\r\n get maximumHeight() {\r\n return this.view.maximumHeight;\r\n }\r\n get priority() {\r\n return this.view.priority;\r\n }\r\n get snap() {\r\n return this.view.snap;\r\n }\r\n get minimumSize() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.minimumHeight\r\n : this.minimumWidth;\r\n }\r\n get maximumSize() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.maximumHeight\r\n : this.maximumWidth;\r\n }\r\n get minimumOrthogonalSize() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.minimumWidth\r\n : this.minimumHeight;\r\n }\r\n get maximumOrthogonalSize() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.maximumWidth\r\n : this.maximumHeight;\r\n }\r\n get orthogonalSize() {\r\n return this._orthogonalSize;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n get element() {\r\n return this.view.element;\r\n }\r\n get width() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.orthogonalSize\r\n : this.size;\r\n }\r\n get height() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.size\r\n : this.orthogonalSize;\r\n }\r\n constructor(view, orientation, orthogonalSize, size = 0) {\r\n this.view = view;\r\n this.orientation = orientation;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._orthogonalSize = orthogonalSize;\r\n this._size = size;\r\n this._disposable = this.view.onDidChange((event) => {\r\n if (event) {\r\n this._onDidChange.fire({\r\n size: this.orientation === Orientation.VERTICAL\r\n ? event.width\r\n : event.height,\r\n orthogonalSize: this.orientation === Orientation.VERTICAL\r\n ? event.height\r\n : event.width,\r\n });\r\n }\r\n else {\r\n this._onDidChange.fire({});\r\n }\r\n });\r\n }\r\n setVisible(visible) {\r\n if (this.view.setVisible) {\r\n this.view.setVisible(visible);\r\n this._onDidChange.fire({});\r\n }\r\n }\r\n layout(size, orthogonalSize) {\r\n this._size = size;\r\n this._orthogonalSize = orthogonalSize;\r\n this.view.layout(this.width, this.height);\r\n }\r\n dispose() {\r\n this._onDidChange.dispose();\r\n this._disposable.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=leafNode.js.map","/*---------------------------------------------------------------------------------------------\r\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\r\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Splitview, Orientation, LayoutPriority, } from '../splitview/splitview';\r\nimport { Emitter, Event } from '../events';\r\nimport { LeafNode } from './leafNode';\r\nimport { CompositeDisposable, Disposable } from '../lifecycle';\r\nexport class BranchNode extends CompositeDisposable {\r\n get width() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.size\r\n : this.orthogonalSize;\r\n }\r\n get height() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.orthogonalSize\r\n : this.size;\r\n }\r\n get minimumSize() {\r\n return this.children.length === 0\r\n ? 0\r\n : Math.max(...this.children.map((c) => c.minimumOrthogonalSize));\r\n }\r\n get maximumSize() {\r\n return Math.min(...this.children.map((c) => c.maximumOrthogonalSize));\r\n }\r\n get minimumOrthogonalSize() {\r\n return this.splitview.minimumSize;\r\n }\r\n get maximumOrthogonalSize() {\r\n return this.splitview.maximumSize;\r\n }\r\n get orthogonalSize() {\r\n return this._orthogonalSize;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n get minimumWidth() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.minimumOrthogonalSize\r\n : this.minimumSize;\r\n }\r\n get minimumHeight() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.minimumSize\r\n : this.minimumOrthogonalSize;\r\n }\r\n get maximumWidth() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.maximumOrthogonalSize\r\n : this.maximumSize;\r\n }\r\n get maximumHeight() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.maximumSize\r\n : this.maximumOrthogonalSize;\r\n }\r\n get priority() {\r\n if (this.children.length === 0) {\r\n return LayoutPriority.Normal;\r\n }\r\n const priorities = this.children.map((c) => typeof c.priority === 'undefined'\r\n ? LayoutPriority.Normal\r\n : c.priority);\r\n if (priorities.some((p) => p === LayoutPriority.High)) {\r\n return LayoutPriority.High;\r\n }\r\n else if (priorities.some((p) => p === LayoutPriority.Low)) {\r\n return LayoutPriority.Low;\r\n }\r\n return LayoutPriority.Normal;\r\n }\r\n constructor(orientation, proportionalLayout, styles, size, orthogonalSize, childDescriptors) {\r\n super();\r\n this.orientation = orientation;\r\n this.proportionalLayout = proportionalLayout;\r\n this.styles = styles;\r\n this._childrenDisposable = Disposable.NONE;\r\n this.children = [];\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._orthogonalSize = orthogonalSize;\r\n this._size = size;\r\n this.element = document.createElement('div');\r\n this.element.className = 'branch-node';\r\n if (!childDescriptors) {\r\n this.splitview = new Splitview(this.element, {\r\n orientation: this.orientation,\r\n proportionalLayout,\r\n styles,\r\n });\r\n this.splitview.layout(this.size, this.orthogonalSize);\r\n }\r\n else {\r\n const descriptor = {\r\n views: childDescriptors.map((childDescriptor) => {\r\n return {\r\n view: childDescriptor.node,\r\n size: childDescriptor.node.size,\r\n visible: childDescriptor.node instanceof LeafNode &&\r\n childDescriptor.visible !== undefined\r\n ? childDescriptor.visible\r\n : true,\r\n };\r\n }),\r\n size: this.orthogonalSize,\r\n };\r\n this.children = childDescriptors.map((c) => c.node);\r\n this.splitview = new Splitview(this.element, {\r\n orientation: this.orientation,\r\n descriptor,\r\n proportionalLayout,\r\n });\r\n }\r\n this.addDisposables(this._onDidChange, this.splitview.onDidSashEnd(() => {\r\n this._onDidChange.fire({});\r\n }));\r\n this.setupChildrenEvents();\r\n }\r\n setVisible(visible) {\r\n for (const child of this.children) {\r\n child.setVisible(visible);\r\n }\r\n }\r\n isChildVisible(index) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n return this.splitview.isViewVisible(index);\r\n }\r\n setChildVisible(index, visible) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n if (this.splitview.isViewVisible(index) === visible) {\r\n return;\r\n }\r\n this.splitview.setViewVisible(index, visible);\r\n }\r\n moveChild(from, to) {\r\n if (from === to) {\r\n return;\r\n }\r\n if (from < 0 || from >= this.children.length) {\r\n throw new Error('Invalid from index');\r\n }\r\n if (from < to) {\r\n to--;\r\n }\r\n this.splitview.moveView(from, to);\r\n const child = this._removeChild(from);\r\n this._addChild(child, to);\r\n }\r\n getChildSize(index) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n return this.splitview.getViewSize(index);\r\n }\r\n resizeChild(index, size) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n this.splitview.resizeView(index, size);\r\n }\r\n layout(size, orthogonalSize) {\r\n this._size = orthogonalSize;\r\n this._orthogonalSize = size;\r\n this.splitview.layout(orthogonalSize, size);\r\n }\r\n addChild(node, size, index, skipLayout) {\r\n if (index < 0 || index > this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n this.splitview.addView(node, size, index, skipLayout);\r\n this._addChild(node, index);\r\n }\r\n getChildCachedVisibleSize(index) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n return this.splitview.getViewCachedVisibleSize(index);\r\n }\r\n removeChild(index, sizing) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n this.splitview.removeView(index, sizing);\r\n return this._removeChild(index);\r\n }\r\n _addChild(node, index) {\r\n this.children.splice(index, 0, node);\r\n this.setupChildrenEvents();\r\n }\r\n _removeChild(index) {\r\n const [child] = this.children.splice(index, 1);\r\n this.setupChildrenEvents();\r\n return child;\r\n }\r\n setupChildrenEvents() {\r\n this._childrenDisposable.dispose();\r\n this._childrenDisposable = Event.any(...this.children.map((c) => c.onDidChange))((e) => {\r\n /**\r\n * indicate a change has occured to allows any re-rendering but don't bubble\r\n * event because that was specific to this branch\r\n */\r\n this._onDidChange.fire({ size: e.orthogonalSize });\r\n });\r\n }\r\n dispose() {\r\n this._childrenDisposable.dispose();\r\n this.splitview.dispose();\r\n this.children.forEach((child) => child.dispose());\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=branchNode.js.map","/*---------------------------------------------------------------------------------------------\r\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\r\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Orientation, Sizing, } from '../splitview/splitview';\r\nimport { tail } from '../array';\r\nimport { LeafNode } from './leafNode';\r\nimport { BranchNode } from './branchNode';\r\nimport { Emitter } from '../events';\r\nimport { MutableDisposable } from '../lifecycle';\r\nfunction findLeaf(candiateNode, last) {\r\n if (candiateNode instanceof LeafNode) {\r\n return candiateNode;\r\n }\r\n if (candiateNode instanceof BranchNode) {\r\n return findLeaf(candiateNode.children[last ? candiateNode.children.length - 1 : 0], last);\r\n }\r\n throw new Error('invalid node');\r\n}\r\nfunction flipNode(node, size, orthogonalSize) {\r\n if (node instanceof BranchNode) {\r\n const result = new BranchNode(orthogonal(node.orientation), node.proportionalLayout, node.styles, size, orthogonalSize);\r\n let totalSize = 0;\r\n for (let i = node.children.length - 1; i >= 0; i--) {\r\n const child = node.children[i];\r\n const childSize = child instanceof BranchNode ? child.orthogonalSize : child.size;\r\n let newSize = node.size === 0\r\n ? 0\r\n : Math.round((size * childSize) / node.size);\r\n totalSize += newSize;\r\n // The last view to add should adjust to rounding errors\r\n if (i === 0) {\r\n newSize += size - totalSize;\r\n }\r\n result.addChild(flipNode(child, orthogonalSize, newSize), newSize, 0, true);\r\n }\r\n return result;\r\n }\r\n else {\r\n return new LeafNode(node.view, orthogonal(node.orientation), orthogonalSize);\r\n }\r\n}\r\nexport function indexInParent(element) {\r\n const parentElement = element.parentElement;\r\n if (!parentElement) {\r\n throw new Error('Invalid grid element');\r\n }\r\n let el = parentElement.firstElementChild;\r\n let index = 0;\r\n while (el !== element && el !== parentElement.lastElementChild && el) {\r\n el = el.nextElementSibling;\r\n index++;\r\n }\r\n return index;\r\n}\r\n/**\r\n * Find the grid location of a specific DOM element by traversing the parent\r\n * chain and finding each child index on the way.\r\n *\r\n * This will break as soon as DOM structures of the Splitview or Gridview change.\r\n */\r\nexport function getGridLocation(element) {\r\n const parentElement = element.parentElement;\r\n if (!parentElement) {\r\n throw new Error('Invalid grid element');\r\n }\r\n if (/\\bgrid-view\\b/.test(parentElement.className)) {\r\n return [];\r\n }\r\n const index = indexInParent(parentElement);\r\n const ancestor = parentElement.parentElement.parentElement.parentElement;\r\n return [...getGridLocation(ancestor), index];\r\n}\r\nexport function getRelativeLocation(rootOrientation, location, direction) {\r\n const orientation = getLocationOrientation(rootOrientation, location);\r\n const directionOrientation = getDirectionOrientation(direction);\r\n if (orientation === directionOrientation) {\r\n const [rest, _index] = tail(location);\r\n let index = _index;\r\n if (direction === 'right' || direction === 'bottom') {\r\n index += 1;\r\n }\r\n return [...rest, index];\r\n }\r\n else {\r\n const index = direction === 'right' || direction === 'bottom' ? 1 : 0;\r\n return [...location, index];\r\n }\r\n}\r\nexport function getDirectionOrientation(direction) {\r\n return direction === 'top' || direction === 'bottom'\r\n ? Orientation.VERTICAL\r\n : Orientation.HORIZONTAL;\r\n}\r\nexport function getLocationOrientation(rootOrientation, location) {\r\n return location.length % 2 === 0\r\n ? orthogonal(rootOrientation)\r\n : rootOrientation;\r\n}\r\nexport const orthogonal = (orientation) => orientation === Orientation.HORIZONTAL\r\n ? Orientation.VERTICAL\r\n : Orientation.HORIZONTAL;\r\nexport function isGridBranchNode(node) {\r\n return !!node.children;\r\n}\r\nconst serializeBranchNode = (node, orientation) => {\r\n const size = orientation === Orientation.VERTICAL ? node.box.width : node.box.height;\r\n if (!isGridBranchNode(node)) {\r\n if (typeof node.cachedVisibleSize === 'number') {\r\n return {\r\n type: 'leaf',\r\n data: node.view.toJSON(),\r\n size: node.cachedVisibleSize,\r\n visible: false,\r\n };\r\n }\r\n return { type: 'leaf', data: node.view.toJSON(), size };\r\n }\r\n return {\r\n type: 'branch',\r\n data: node.children.map((c) => serializeBranchNode(c, orthogonal(orientation))),\r\n size,\r\n };\r\n};\r\nexport class Gridview {\r\n get length() {\r\n return this._root ? this._root.children.length : 0;\r\n }\r\n get orientation() {\r\n return this.root.orientation;\r\n }\r\n set orientation(orientation) {\r\n if (this.root.orientation === orientation) {\r\n return;\r\n }\r\n const { size, orthogonalSize } = this.root;\r\n this.root = flipNode(this.root, orthogonalSize, size);\r\n this.root.layout(size, orthogonalSize);\r\n }\r\n get width() {\r\n return this.root.width;\r\n }\r\n get height() {\r\n return this.root.height;\r\n }\r\n get minimumWidth() {\r\n return this.root.minimumWidth;\r\n }\r\n get minimumHeight() {\r\n return this.root.minimumHeight;\r\n }\r\n get maximumWidth() {\r\n return this.root.maximumHeight;\r\n }\r\n get maximumHeight() {\r\n return this.root.maximumHeight;\r\n }\r\n serialize() {\r\n const root = serializeBranchNode(this.getView(), this.orientation);\r\n return {\r\n root,\r\n width: this.width,\r\n height: this.height,\r\n orientation: this.orientation,\r\n };\r\n }\r\n dispose() {\r\n this.disposable.dispose();\r\n this._onDidChange.dispose();\r\n this.root.dispose();\r\n this.element.remove();\r\n }\r\n clear() {\r\n const orientation = this.root.orientation;\r\n this.root = new BranchNode(orientation, this.proportionalLayout, this.styles, this.root.size, this.root.orthogonalSize);\r\n }\r\n deserialize(json, deserializer) {\r\n const orientation = json.orientation;\r\n const height = orientation === Orientation.VERTICAL ? json.height : json.width;\r\n this._deserialize(json.root, orientation, deserializer, height);\r\n }\r\n _deserialize(root, orientation, deserializer, orthogonalSize) {\r\n this.root = this._deserializeNode(root, orientation, deserializer, orthogonalSize);\r\n }\r\n _deserializeNode(node, orientation, deserializer, orthogonalSize) {\r\n let result;\r\n if (node.type === 'branch') {\r\n const serializedChildren = node.data;\r\n const children = serializedChildren.map((serializedChild) => {\r\n return {\r\n node: this._deserializeNode(serializedChild, orthogonal(orientation), deserializer, node.size),\r\n visible: serializedChild.visible,\r\n };\r\n });\r\n result = new BranchNode(orientation, this.proportionalLayout, this.styles, node.size, // <- orthogonal size - flips at each depth\r\n orthogonalSize, // <- size - flips at each depth\r\n children);\r\n }\r\n else {\r\n result = new LeafNode(deserializer.fromJSON(node), orientation, orthogonalSize, node.size);\r\n }\r\n return result;\r\n }\r\n get root() {\r\n return this._root;\r\n }\r\n set root(root) {\r\n const oldRoot = this._root;\r\n if (oldRoot) {\r\n oldRoot.dispose();\r\n this.element.removeChild(oldRoot.element);\r\n }\r\n this._root = root;\r\n this.element.appendChild(this._root.element);\r\n this.disposable.value = this._root.onDidChange((e) => {\r\n this._onDidChange.fire(e);\r\n });\r\n }\r\n /**\r\n * If the root is orientated as a VERTICAL node then nest the existing root within a new HORIZIONTAL root node\r\n * If the root is orientated as a HORIZONTAL node then nest the existing root within a new VERITCAL root node\r\n */\r\n insertOrthogonalSplitviewAtRoot() {\r\n if (!this._root) {\r\n return;\r\n }\r\n const oldRoot = this.root;\r\n oldRoot.element.remove();\r\n this._root = new BranchNode(orthogonal(oldRoot.orientation), this.proportionalLayout, this.styles, this.root.orthogonalSize, this.root.size);\r\n if (oldRoot.children.length === 0) {\r\n // no data so no need to add anything back in\r\n }\r\n else if (oldRoot.children.length === 1) {\r\n // can remove one level of redundant branching if there is only a single child\r\n const childReference = oldRoot.children[0];\r\n const child = oldRoot.removeChild(0); // remove to prevent disposal when disposing of unwanted root\r\n child.dispose();\r\n oldRoot.dispose();\r\n this._root.addChild(\r\n /**\r\n * the child node will have the same orientation as the new root since\r\n * we are removing the inbetween node.\r\n * the entire 'tree' must be flipped recursively to ensure that the orientation\r\n * flips at each level\r\n */\r\n flipNode(childReference, childReference.orthogonalSize, childReference.size), Sizing.Distribute, 0);\r\n }\r\n else {\r\n this._root.addChild(oldRoot, Sizing.Distribute, 0);\r\n }\r\n this.element.appendChild(this._root.element);\r\n this.disposable.value = this._root.onDidChange((e) => {\r\n this._onDidChange.fire(e);\r\n });\r\n }\r\n next(location) {\r\n return this.progmaticSelect(location);\r\n }\r\n previous(location) {\r\n return this.progmaticSelect(location, true);\r\n }\r\n getView(location) {\r\n const node = location ? this.getNode(location)[1] : this.root;\r\n return this._getViews(node, this.orientation);\r\n }\r\n _getViews(node, orientation, cachedVisibleSize) {\r\n const box = { height: node.height, width: node.width };\r\n if (node instanceof LeafNode) {\r\n return { box, view: node.view, cachedVisibleSize };\r\n }\r\n const children = [];\r\n for (let i = 0; i < node.children.length; i++) {\r\n const child = node.children[i];\r\n const nodeCachedVisibleSize = node.getChildCachedVisibleSize(i);\r\n children.push(this._getViews(child, orthogonal(orientation), nodeCachedVisibleSize));\r\n }\r\n return { box, children };\r\n }\r\n progmaticSelect(location, reverse = false) {\r\n const [path, node] = this.getNode(location);\r\n if (!(node instanceof LeafNode)) {\r\n throw new Error('invalid location');\r\n }\r\n for (let i = path.length - 1; i > -1; i--) {\r\n const n = path[i];\r\n const l = location[i] || 0;\r\n const canProgressInCurrentLevel = reverse\r\n ? l - 1 > -1\r\n : l + 1 < n.children.length;\r\n if (canProgressInCurrentLevel) {\r\n return findLeaf(n.children[reverse ? l - 1 : l + 1], reverse);\r\n }\r\n }\r\n return findLeaf(this.root, reverse);\r\n }\r\n constructor(proportionalLayout, styles, orientation) {\r\n this.proportionalLayout = proportionalLayout;\r\n this.styles = styles;\r\n this.disposable = new MutableDisposable();\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this.element = document.createElement('div');\r\n this.element.className = 'grid-view';\r\n this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0);\r\n }\r\n isViewVisible(location) {\r\n const [rest, index] = tail(location);\r\n const [, parent] = this.getNode(rest);\r\n if (!(parent instanceof BranchNode)) {\r\n throw new Error('Invalid from location');\r\n }\r\n return parent.isChildVisible(index);\r\n }\r\n setViewVisible(location, visible) {\r\n const [rest, index] = tail(location);\r\n const [, parent] = this.getNode(rest);\r\n if (!(parent instanceof BranchNode)) {\r\n throw new Error('Invalid from location');\r\n }\r\n parent.setChildVisible(index, visible);\r\n }\r\n moveView(parentLocation, from, to) {\r\n const [, parent] = this.getNode(parentLocation);\r\n if (!(parent instanceof BranchNode)) {\r\n throw new Error('Invalid location');\r\n }\r\n parent.moveChild(from, to);\r\n }\r\n addView(view, size, location) {\r\n const [rest, index] = tail(location);\r\n const [pathToParent, parent] = this.getNode(rest);\r\n if (parent instanceof BranchNode) {\r\n const node = new LeafNode(view, orthogonal(parent.orientation), parent.orthogonalSize);\r\n parent.addChild(node, size, index);\r\n }\r\n else {\r\n const [grandParent, ..._] = [...pathToParent].reverse();\r\n const [parentIndex, ...__] = [...rest].reverse();\r\n let newSiblingSize = 0;\r\n const newSiblingCachedVisibleSize = grandParent.getChildCachedVisibleSize(parentIndex);\r\n if (typeof newSiblingCachedVisibleSize === 'number') {\r\n newSiblingSize = Sizing.Invisible(newSiblingCachedVisibleSize);\r\n }\r\n const child = grandParent.removeChild(parentIndex);\r\n child.dispose();\r\n const newParent = new BranchNode(parent.orientation, this.proportionalLayout, this.styles, parent.size, parent.orthogonalSize);\r\n grandParent.addChild(newParent, parent.size, parentIndex);\r\n const newSibling = new LeafNode(parent.view, grandParent.orientation, parent.size);\r\n newParent.addChild(newSibling, newSiblingSize, 0);\r\n if (typeof size !== 'number' && size.type === 'split') {\r\n size = { type: 'split', index: 0 };\r\n }\r\n const node = new LeafNode(view, grandParent.orientation, parent.size);\r\n newParent.addChild(node, size, index);\r\n }\r\n }\r\n remove(view, sizing) {\r\n const location = getGridLocation(view.element);\r\n return this.removeView(location, sizing);\r\n }\r\n removeView(location, sizing) {\r\n const [rest, index] = tail(location);\r\n const [pathToParent, parent] = this.getNode(rest);\r\n if (!(parent instanceof BranchNode)) {\r\n throw new Error('Invalid location');\r\n }\r\n const nodeToRemove = parent.children[index];\r\n if (!(nodeToRemove instanceof LeafNode)) {\r\n throw new Error('Invalid location');\r\n }\r\n parent.removeChild(index, sizing);\r\n nodeToRemove.dispose();\r\n if (parent.children.length !== 1) {\r\n return nodeToRemove.view;\r\n }\r\n // if the parent has only one child and we know the parent is a BranchNode we can make the tree\r\n // more efficiently spaced by replacing the parent BranchNode with the child.\r\n // if that child is a LeafNode then we simply replace the BranchNode with the child otherwise if the child\r\n // is a BranchNode too we should spread it's children into the grandparent.\r\n // refer to the remaining child as the sibling\r\n const sibling = parent.children[0];\r\n if (pathToParent.length === 0) {\r\n // if the parent is root\r\n if (sibling instanceof LeafNode) {\r\n // if the sibling is a leaf node no action is required\r\n return nodeToRemove.view;\r\n }\r\n // otherwise the sibling is a branch node. since the parent is the root and the root has only one child\r\n // which is a branch node we can just set this branch node to be the new root node\r\n // for good housekeeping we'll removing the sibling from it's existing tree\r\n parent.removeChild(0, sizing);\r\n // and set that sibling node to be root\r\n this.root = sibling;\r\n return nodeToRemove.view;\r\n }\r\n // otherwise the parent is apart of a large sub-tree\r\n const [grandParent, ..._] = [...pathToParent].reverse();\r\n const [parentIndex, ...__] = [...rest].reverse();\r\n const isSiblingVisible = parent.isChildVisible(0);\r\n // either way we need to remove the sibling from it's existing tree\r\n parent.removeChild(0, sizing);\r\n // note the sizes of all of the grandparents children\r\n const sizes = grandParent.children.map((_size, i) => grandParent.getChildSize(i));\r\n // remove the parent from the grandparent since we are moving the sibling to take the parents place\r\n // this parent is no longer used and can be disposed of\r\n grandParent.removeChild(parentIndex, sizing).dispose();\r\n if (sibling instanceof BranchNode) {\r\n // replace the parent with the siblings children\r\n sizes.splice(parentIndex, 1, ...sibling.children.map((c) => c.size));\r\n // and add those siblings to the grandparent\r\n for (let i = 0; i < sibling.children.length; i++) {\r\n const child = sibling.children[i];\r\n grandParent.addChild(child, child.size, parentIndex + i);\r\n }\r\n }\r\n else {\r\n // otherwise create a new leaf node and add that to the grandparent\r\n const newSibling = new LeafNode(sibling.view, orthogonal(sibling.orientation), sibling.size);\r\n const siblingSizing = isSiblingVisible\r\n ? sibling.orthogonalSize\r\n : Sizing.Invisible(sibling.orthogonalSize);\r\n grandParent.addChild(newSibling, siblingSizing, parentIndex);\r\n }\r\n // the containing node of the sibling is no longer required and can be disposed of\r\n sibling.dispose();\r\n // resize everything\r\n for (let i = 0; i < sizes.length; i++) {\r\n grandParent.resizeChild(i, sizes[i]);\r\n }\r\n return nodeToRemove.view;\r\n }\r\n layout(width, height) {\r\n const [size, orthogonalSize] = this.root.orientation === Orientation.HORIZONTAL\r\n ? [height, width]\r\n : [width, height];\r\n this.root.layout(size, orthogonalSize);\r\n }\r\n getNode(location, node = this.root, path = []) {\r\n if (location.length === 0) {\r\n return [path, node];\r\n }\r\n if (!(node instanceof BranchNode)) {\r\n throw new Error('Invalid location');\r\n }\r\n const [index, ...rest] = location;\r\n if (index < 0 || index >= node.children.length) {\r\n throw new Error('Invalid location');\r\n }\r\n const child = node.children[index];\r\n path.push(node);\r\n return this.getNode(rest, child, path);\r\n }\r\n}\r\n//# sourceMappingURL=gridview.js.map","import { Emitter } from '../events';\r\nexport class SplitviewApi {\r\n get minimumSize() {\r\n return this.component.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.component.maximumSize;\r\n }\r\n get height() {\r\n return this.component.height;\r\n }\r\n get width() {\r\n return this.component.width;\r\n }\r\n get length() {\r\n return this.component.length;\r\n }\r\n get orientation() {\r\n return this.component.orientation;\r\n }\r\n get panels() {\r\n return this.component.panels;\r\n }\r\n get onDidLayoutFromJSON() {\r\n return this.component.onDidLayoutFromJSON;\r\n }\r\n get onDidLayoutChange() {\r\n return this.component.onDidLayoutChange;\r\n }\r\n get onDidAddView() {\r\n return this.component.onDidAddView;\r\n }\r\n get onDidRemoveView() {\r\n return this.component.onDidRemoveView;\r\n }\r\n constructor(component) {\r\n this.component = component;\r\n }\r\n updateOptions(options) {\r\n this.component.updateOptions(options);\r\n }\r\n removePanel(panel, sizing) {\r\n this.component.removePanel(panel, sizing);\r\n }\r\n focus() {\r\n this.component.focus();\r\n }\r\n getPanel(id) {\r\n return this.component.getPanel(id);\r\n }\r\n layout(width, height) {\r\n return this.component.layout(width, height);\r\n }\r\n addPanel(options) {\r\n return this.component.addPanel(options);\r\n }\r\n movePanel(from, to) {\r\n this.component.movePanel(from, to);\r\n }\r\n fromJSON(data) {\r\n this.component.fromJSON(data);\r\n }\r\n toJSON() {\r\n return this.component.toJSON();\r\n }\r\n clear() {\r\n this.component.clear();\r\n }\r\n}\r\nexport class PaneviewApi {\r\n get minimumSize() {\r\n return this.component.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.component.maximumSize;\r\n }\r\n get height() {\r\n return this.component.height;\r\n }\r\n get width() {\r\n return this.component.width;\r\n }\r\n get panels() {\r\n return this.component.panels;\r\n }\r\n get onDidLayoutChange() {\r\n return this.component.onDidLayoutChange;\r\n }\r\n get onDidLayoutFromJSON() {\r\n return this.component.onDidLayoutFromJSON;\r\n }\r\n get onDidAddView() {\r\n return this.component.onDidAddView;\r\n }\r\n get onDidRemoveView() {\r\n return this.component.onDidRemoveView;\r\n }\r\n get onDidDrop() {\r\n const emitter = new Emitter();\r\n const disposable = this.component.onDidDrop((e) => {\r\n emitter.fire(Object.assign(Object.assign({}, e), { api: this }));\r\n });\r\n emitter.dispose = () => {\r\n disposable.dispose();\r\n emitter.dispose();\r\n };\r\n return emitter.event;\r\n }\r\n constructor(component) {\r\n this.component = component;\r\n }\r\n removePanel(panel) {\r\n this.component.removePanel(panel);\r\n }\r\n getPanel(id) {\r\n return this.component.getPanel(id);\r\n }\r\n movePanel(from, to) {\r\n this.component.movePanel(from, to);\r\n }\r\n focus() {\r\n this.component.focus();\r\n }\r\n layout(width, height) {\r\n this.component.layout(width, height);\r\n }\r\n addPanel(options) {\r\n return this.component.addPanel(options);\r\n }\r\n fromJSON(data) {\r\n this.component.fromJSON(data);\r\n }\r\n toJSON() {\r\n return this.component.toJSON();\r\n }\r\n clear() {\r\n this.component.clear();\r\n }\r\n}\r\nexport class GridviewApi {\r\n get minimumHeight() {\r\n return this.component.minimumHeight;\r\n }\r\n get maximumHeight() {\r\n return this.component.maximumHeight;\r\n }\r\n get minimumWidth() {\r\n return this.component.minimumWidth;\r\n }\r\n get maximumWidth() {\r\n return this.component.maximumWidth;\r\n }\r\n get width() {\r\n return this.component.width;\r\n }\r\n get height() {\r\n return this.component.height;\r\n }\r\n get onDidLayoutChange() {\r\n return this.component.onDidLayoutChange;\r\n }\r\n get onDidAddPanel() {\r\n return this.component.onDidAddGroup;\r\n }\r\n get onDidRemovePanel() {\r\n return this.component.onDidRemoveGroup;\r\n }\r\n get onDidActivePanelChange() {\r\n return this.component.onDidActiveGroupChange;\r\n }\r\n get onDidLayoutFromJSON() {\r\n return this.component.onDidLayoutFromJSON;\r\n }\r\n get panels() {\r\n return this.component.groups;\r\n }\r\n get orientation() {\r\n return this.component.orientation;\r\n }\r\n set orientation(value) {\r\n this.component.updateOptions({ orientation: value });\r\n }\r\n constructor(component) {\r\n this.component = component;\r\n }\r\n focus() {\r\n this.component.focus();\r\n }\r\n layout(width, height, force = false) {\r\n this.component.layout(width, height, force);\r\n }\r\n addPanel(options) {\r\n return this.component.addPanel(options);\r\n }\r\n removePanel(panel, sizing) {\r\n this.component.removePanel(panel, sizing);\r\n }\r\n movePanel(panel, options) {\r\n this.component.movePanel(panel, options);\r\n }\r\n getPanel(id) {\r\n return this.component.getPanel(id);\r\n }\r\n fromJSON(data) {\r\n return this.component.fromJSON(data);\r\n }\r\n toJSON() {\r\n return this.component.toJSON();\r\n }\r\n clear() {\r\n this.component.clear();\r\n }\r\n}\r\nexport class DockviewApi {\r\n get id() {\r\n return this.component.id;\r\n }\r\n get width() {\r\n return this.component.width;\r\n }\r\n get height() {\r\n return this.component.height;\r\n }\r\n get minimumHeight() {\r\n return this.component.minimumHeight;\r\n }\r\n get maximumHeight() {\r\n return this.component.maximumHeight;\r\n }\r\n get minimumWidth() {\r\n return this.component.minimumWidth;\r\n }\r\n get maximumWidth() {\r\n return this.component.maximumWidth;\r\n }\r\n get size() {\r\n return this.component.size;\r\n }\r\n get totalPanels() {\r\n return this.component.totalPanels;\r\n }\r\n get onDidActiveGroupChange() {\r\n return this.component.onDidActiveGroupChange;\r\n }\r\n get onDidAddGroup() {\r\n return this.component.onDidAddGroup;\r\n }\r\n get onDidRemoveGroup() {\r\n return this.component.onDidRemoveGroup;\r\n }\r\n get onDidActivePanelChange() {\r\n return this.component.onDidActivePanelChange;\r\n }\r\n get onDidAddPanel() {\r\n return this.component.onDidAddPanel;\r\n }\r\n get onDidRemovePanel() {\r\n return this.component.onDidRemovePanel;\r\n }\r\n get onDidLayoutFromJSON() {\r\n return this.component.onDidLayoutFromJSON;\r\n }\r\n get onDidLayoutChange() {\r\n return this.component.onDidLayoutChange;\r\n }\r\n get onDidDrop() {\r\n return this.component.onDidDrop;\r\n }\r\n get 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 if (position === 'center' && this.gridview.length !== 0) {\r\n /**\r\n * for external events only show the four-corner drag overlays, disable\r\n * the center position so that external drag events can fall through to the group\r\n * and panel drop target handlers\r\n */\r\n return false;\r\n }\r\n return this.options.showDndOverlay({\r\n nativeEvent: event,\r\n position: position,\r\n target: DockviewDropTargets.Edge,\r\n getData: getPanelData,\r\n });\r\n }\r\n return false;\r\n },\r\n acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],\r\n overlayModel: {\r\n activationSize: { type: 'pixels', value: 10 },\r\n size: { type: 'pixels', value: 20 },\r\n },\r\n });\r\n this.addDisposables(dropTarget.onDrop((event) => {\r\n const data = getPanelData();\r\n if (data) {\r\n this.moveGroupOrPanel(this.orthogonalize(event.position), data.groupId, data.panelId || undefined, 'center');\r\n }\r\n else {\r\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: null, getData: getPanelData }));\r\n }\r\n }), dropTarget);\r\n this._api = new DockviewApi(this);\r\n this.updateWatermark();\r\n }\r\n addFloatingGroup(item, coord, options) {\r\n var _a, _b;\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":["Disposable","TransferObject","constructor","PanelTransfer","viewId","groupId","panelId","super","this","PaneTransfer","paneId","LocalSelectionTransfer","static","INSTANCE","hasData","proto","clearData","undefined","data","getData","setData","getPanelData","panelTransfer","getInstance","prototype","getPaneData","paneTransfer","exports","DockviewEvent","Event","any","children","listener","disposables","map","child","dispose","forEach","d","Stacktrace","_a","Error","stack","value","print","console","warn","Listener","callback","stacktrace","Emitter","isEnabled","ENABLE_TRACKING","MEMORY_LEAK_WATCHER","clear","options","_listeners","_disposed","event","_event","replay","_last","create","push","index","indexOf","splice","add","fire","e","length","queueMicrotask","delete","addDisposableWindowListener","element","type","addEventListener","removeEventListener","addDisposableListener","events","Map","size","set","TickDelayedEvent","_onFired","onEvent","timer","clearTimeout","setTimeout","NONE","CompositeDisposable","isDisposed","_isDisposed","args","_disposables","addDisposables","arg","MutableDisposable","_disposable","disposable","createComponent","id","componentName","components","frameworkComponents","createFrameworkComponent","fallback","Component","FrameworkComponent","watchElementResize","cb","observer","ResizeObserver","entires","requestAnimationFrame","firstEntry","observe","unobserve","disconnect","removeClasses","classes","classname","classList","contains","remove","addClasses","toggleClass","className","isToggled","hasClass","isAncestor","testChild","testAncestor","parentNode","getElementsByTagName","tag","Array","slice","call","document","trackFocus","FocusTracker","_onDidFocus","onDidFocus","_onDidBlur","onDidBlur","hasFocus","activeElement","loosingFocus","onFocus","onBlur","window","_refreshStateHandler","HTMLElement","refreshState","QUASI_PREVENT_DEFAULT_KEY","quasiDefaultPrevented","tail","arr","sequenceEquals","arr1","arr2","i","pushToStart","unshift","pushToEnd","clamp","min","max","Math","sequentialNumberGenerator","next","toString","range","from","to","result","ViewItem","_size","cachedVisibleSize","_cachedVisibleSize","visible","minimumSize","view","viewMinimumSize","maximumSize","viewMaximumSize","priority","snap","enabled","container","style","pointerEvents","setVisible","toggle","Orientation","SashState","LayoutPriority","Sizing","Distribute","Split","Invisible","Splitview","orthogonalSize","_orthogonalSize","viewItems","proportions","_proportions","orientation","_orientation","tmp","HORIZONTAL","reduce","r","item","Number","POSITIVE_INFINITY","startSnappingEnabled","_startSnappingEnabled","updateSashEnablement","endSnappingEnabled","_endSnappingEnabled","sashes","contentSize","_onDidSashEnd","onDidSashEnd","_onDidAddView","onDidAddView","_onDidRemoveView","onDidRemoveView","resize","delta","sizes","x","lowPriorityIndexes","highPriorityIndexes","overloadMinDelta","NEGATIVE_INFINITY","overloadMaxDelta","snapBefore","snapAfter","upIndexes","downIndexes","upItems","upSizes","downItems","downSizes","minDeltaUp","_","maxDeltaUp","maxDeltaDown","minDeltaDown","minDelta","maxDelta","snapped","snapView","limitDelta","actualDelta","deltaUp","viewDelta","deltaDown","createContainer","proportionalLayout","viewContainer","createViewContainer","sashContainer","createSashContainer","appendChild","styles","descriptor","views","viewDescriptor","sizing","addView","saveProportions","separatorBorder","removeProperty","setProperty","isViewVisible","setViewVisible","viewItem","distributeEmptySpace","layoutViews","getViewSize","resizeView","indexes","filter","Low","High","round","relayout","getViews","onDidChange","skipLayout","createElement","viewSize","newSize","removeChild","insertBefore","sash","onPointerStart","iframes","iframe","start","clientX","clientY","sashIndex","array","fn","firstIndex","s","snapBeforeIndex","findFirstSnapIndex","snapAfterIndex","snappedViewItem","halfSize","floor","onPointerMove","end","sashItem","distributeViewSizes","flexibleViewItems","flexibleSize","removeView","getViewCachedVisibleSize","moveView","layout","previousSize","lowPriorityIndex","emptyDelta","sum","offset","left","top","VERTICAL","width","height","previous","collapsesDown","expandsDown","reverseViews","reverse","collapsesUp","expandsUp","position","snappedBefore","snappedAfter","updateSash","MINIMUM","MAXIMUM","DISABLED","ENABLED","state","orientationClassname","Paneview","splitview","paneItems","skipAnimation","_onDidChange","getPanes","pane","onDidChangeExpansionState","setupAnimation","paneItem","addPane","removePane","skipDispose","animationTimer","LeafNode","minimumWidth","maximumWidth","minimumHeight","maximumHeight","minimumOrthogonalSize","maximumOrthogonalSize","BranchNode","c","Normal","priorities","some","p","childDescriptors","_childrenDisposable","childDescriptor","node","setupChildrenEvents","isChildVisible","setChildVisible","moveChild","_removeChild","_addChild","getChildSize","resizeChild","addChild","getChildCachedVisibleSize","findLeaf","candiateNode","last","flipNode","orthogonal","totalSize","childSize","indexInParent","parentElement","el","firstElementChild","lastElementChild","nextElementSibling","getGridLocation","test","getRelativeLocation","rootOrientation","location","direction","getLocationOrientation","getDirectionOrientation","rest","_index","isGridBranchNode","serializeBranchNode","box","toJSON","Gridview","_root","root","serialize","getView","deserialize","json","deserializer","_deserialize","_deserializeNode","serializedChild","fromJSON","oldRoot","insertOrthogonalSplitviewAtRoot","childReference","progmaticSelect","getNode","_getViews","nodeCachedVisibleSize","path","n","l","parent","parentLocation","pathToParent","grandParent","parentIndex","__","newSiblingSize","newSiblingCachedVisibleSize","newParent","newSibling","nodeToRemove","sibling","isSiblingVisible","siblingSizing","SplitviewApi","component","panels","onDidLayoutFromJSON","onDidLayoutChange","updateOptions","removePanel","panel","focus","getPanel","addPanel","movePanel","PaneviewApi","onDidDrop","emitter","Object","assign","api","GridviewApi","onDidAddPanel","onDidAddGroup","onDidRemovePanel","onDidRemoveGroup","onDidActivePanelChange","onDidActiveGroupChange","groups","force","DockviewApi","totalPanels","activePanel","activeGroup","getGroupPanel","addGroup","moveToNext","moveToPrevious","closeAllGroups","removeGroup","group","getGroup","addFloatingGroup","coord","DragAndDropObserver","callbacks","target","registerListeners","onDragEnter","preventDefault","onDragOver","onDragLeave","onDragEnd","onDrop","directionToPosition","Droptarget","_state","_onDrop","_acceptedTargetZonesSet","Set","acceptedTargetZones","removeDropTarget","clientWidth","clientHeight","rect","currentTarget","getBoundingClientRect","y","quadrant","calculateQuadrant","isAlreadyUsed","canDisplayOverlay","markAsUsed","targetElement","overlayElement","append","toggleClasses","setState","stopPropagation","nativeEvent","setTargetZones","USED_EVENT_ID","_b","_c","_d","isSmallX","isSmallY","isLeft","isRight","isTop","isBottom","rightClass","leftClass","topClass","bottomClass","overlayModel","translate","transform","overlayType","_e","_f","isPercentage","activationSize","maybeNumber","threshold","xp","yp","has","calculateQuadrantAsPercentage","calculateQuadrantAsPixels","ContentContainer","_element","tabIndex","show","display","hide","openPanel","content","focusTracker","_width","_height","closePanel","DockviewDropTargets","DragHandler","dataDisposable","pointerEventsDisposable","_onDragStart","onDragStart","configure","isCancelled","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","ref","triggerRender","React","useState","_props","useRef","componentProps","useImperativeHandle","current","Date","now","displayName","uniquePortalKeyGenerator","ReactPartContext","createContext","ReactPart","portalStore","context","_initialProps","disposed","createPortal","componentInstance","bridgeComponent","forwardRef","Provider","portal","ReactDOM","addPortal","usePortalsLifecycle","portals","setPortals","useDebugValue","useCallback","existingPortals","ReactPanelContentPart","reactPortalStore","DockviewEmitter","ReactPanelHeaderPart","ReactWatermarkPart","ReactHeaderActionsRendererPart","_part","mutableDisposable","DockviewMutableDisposable","DockviewCompositeDisposable","updatePanels","updateActivePanel","updateGroupActive","createGroupControlElement","store","DEFAULT_REACT_TAB","DockviewReact","domRef","dockviewRef","useEffect","factory","componentId","dockview","hideBorders","leftHeaderActionsComponent","rightHeaderActionsComponent","onReady","SuppressedError","CloseButton","viewBox","focusable","ReactPanelView","reactComponent","SplitviewReact","splitviewRef","ReactGridPanelView","GridviewReact","gridviewRef","PanePanelSection","PaneviewReact","paneviewRef","_componentId","_containerApi","hasOwnProperty","getOwnPropertySymbols","propertyIsEnumerable","__rest","onClose","onClick","iconClassname","useMemo","join"],"mappings":"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","x_google_ignoreList":[59]}
1
+ {"version":3,"file":"dockview.amd.min.noStyle.js","sources":["../../dockview-core/dist/esm/lifecycle.js","../../dockview-core/dist/esm/dnd/dataTransfer.js","../../dockview-core/dist/esm/events.js","../../dockview-core/dist/esm/panel/componentFactory.js","../../dockview-core/dist/esm/dom.js","../../dockview-core/dist/esm/array.js","../../dockview-core/dist/esm/math.js","../../dockview-core/dist/esm/splitview/viewItem.js","../../dockview-core/dist/esm/splitview/splitview.js","../../dockview-core/dist/esm/paneview/paneview.js","../../dockview-core/dist/esm/gridview/leafNode.js","../../dockview-core/dist/esm/gridview/branchNode.js","../../dockview-core/dist/esm/gridview/gridview.js","../../dockview-core/dist/esm/api/component.api.js","../../dockview-core/dist/esm/dnd/dnd.js","../../dockview-core/dist/esm/dnd/droptarget.js","../../dockview-core/dist/esm/dockview/components/panel/content.js","../../dockview-core/dist/esm/dockview/types.js","../../dockview-core/dist/esm/dnd/abstractDragHandler.js","../../dockview-core/dist/esm/dockview/components/tab/tab.js","../../dockview-core/dist/esm/dnd/groupDragHandler.js","../../dockview-core/dist/esm/dnd/ghost.js","../../dockview-core/dist/esm/dockview/components/titlebar/voidContainer.js","../../dockview-core/dist/esm/dockview/components/titlebar/tabsContainer.js","../../dockview-core/dist/esm/dockview/dockviewGroupPanelModel.js","../../dockview-core/dist/esm/resizable.js","../../dockview-core/dist/esm/gridview/baseComponentGridview.js","../../dockview-core/dist/esm/api/panelApi.js","../../dockview-core/dist/esm/api/splitviewPanelApi.js","../../dockview-core/dist/esm/api/paneviewPanelApi.js","../../dockview-core/dist/esm/gridview/basePanelView.js","../../dockview-core/dist/esm/paneview/paneviewPanel.js","../../dockview-core/dist/esm/paneview/draggablePaneviewPanel.js","../../dockview-core/dist/esm/api/gridviewPanelApi.js","../../dockview-core/dist/esm/gridview/gridviewPanel.js","../../dockview-core/dist/esm/api/dockviewGroupPanelApi.js","../../dockview-core/dist/esm/dockview/dockviewGroupPanel.js","../../dockview-core/dist/esm/dockview/options.js","../../dockview-core/dist/esm/api/dockviewPanelApi.js","../../dockview-core/dist/esm/dockview/dockviewPanel.js","../../dockview-core/dist/esm/svg.js","../../dockview-core/dist/esm/dockview/components/tab/defaultTab.js","../../dockview-core/dist/esm/dockview/dockviewPanelModel.js","../../dockview-core/dist/esm/dockview/deserializer.js","../../dockview-core/dist/esm/dockview/components/watermark/watermark.js","../../dockview-core/dist/esm/dnd/overlay.js","../../dockview-core/dist/esm/dockview/dockviewFloatingGroupPanel.js","../../dockview-core/dist/esm/dockview/dockviewComponent.js","../../dockview-core/dist/esm/gridview/gridviewComponent.js","../../dockview-core/dist/esm/splitview/splitviewComponent.js","../../dockview-core/dist/esm/paneview/defaultPaneviewHeader.js","../../dockview-core/dist/esm/paneview/paneviewComponent.js","../../dockview-core/dist/esm/splitview/splitviewPanel.js","../../src/react.ts","../../src/dockview/reactContentPart.ts","../../src/dockview/reactHeaderPart.ts","../../src/dockview/reactWatermarkPart.ts","../../src/dockview/headerActionsRenderer.ts","../../src/dockview/dockview.tsx","../../../node_modules/tslib/tslib.es6.js","../../src/svg.tsx","../../src/splitview/view.ts","../../src/splitview/splitview.tsx","../../src/gridview/view.ts","../../src/gridview/gridview.tsx","../../src/paneview/view.tsx","../../src/paneview/paneview.tsx","../../src/dockview/defaultTab.tsx"],"sourcesContent":["export var Disposable;\r\n(function (Disposable) {\r\n Disposable.NONE = {\r\n dispose: () => {\r\n // noop\r\n },\r\n };\r\n})(Disposable || (Disposable = {}));\r\nexport class CompositeDisposable {\r\n get isDisposed() {\r\n return this._isDisposed;\r\n }\r\n constructor(...args) {\r\n this._isDisposed = false;\r\n this._disposables = args;\r\n }\r\n addDisposables(...args) {\r\n args.forEach((arg) => this._disposables.push(arg));\r\n }\r\n dispose() {\r\n this._disposables.forEach((arg) => arg.dispose());\r\n this._isDisposed = true;\r\n }\r\n}\r\nexport class MutableDisposable {\r\n constructor() {\r\n this._disposable = Disposable.NONE;\r\n }\r\n set value(disposable) {\r\n if (this._disposable) {\r\n this._disposable.dispose();\r\n }\r\n this._disposable = disposable;\r\n }\r\n dispose() {\r\n if (this._disposable) {\r\n this._disposable.dispose();\r\n this._disposable = Disposable.NONE;\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=lifecycle.js.map","class TransferObject {\r\n constructor() {\r\n //\r\n }\r\n}\r\nexport class PanelTransfer extends TransferObject {\r\n constructor(viewId, groupId, panelId) {\r\n super();\r\n this.viewId = viewId;\r\n this.groupId = groupId;\r\n this.panelId = panelId;\r\n }\r\n}\r\nexport class PaneTransfer extends TransferObject {\r\n constructor(viewId, paneId) {\r\n super();\r\n this.viewId = viewId;\r\n this.paneId = paneId;\r\n }\r\n}\r\n/**\r\n * A singleton to store transfer data during drag & drop operations that are only valid within the application.\r\n */\r\nexport class LocalSelectionTransfer {\r\n constructor() {\r\n // protect against external instantiation\r\n }\r\n static getInstance() {\r\n return LocalSelectionTransfer.INSTANCE;\r\n }\r\n hasData(proto) {\r\n return proto && proto === this.proto;\r\n }\r\n clearData(proto) {\r\n if (this.hasData(proto)) {\r\n this.proto = undefined;\r\n this.data = undefined;\r\n }\r\n }\r\n getData(proto) {\r\n if (this.hasData(proto)) {\r\n return this.data;\r\n }\r\n return undefined;\r\n }\r\n setData(data, proto) {\r\n if (proto) {\r\n this.data = data;\r\n this.proto = proto;\r\n }\r\n }\r\n}\r\nLocalSelectionTransfer.INSTANCE = new LocalSelectionTransfer();\r\nexport function getPanelData() {\r\n const panelTransfer = LocalSelectionTransfer.getInstance();\r\n const isPanelEvent = panelTransfer.hasData(PanelTransfer.prototype);\r\n if (!isPanelEvent) {\r\n return undefined;\r\n }\r\n return panelTransfer.getData(PanelTransfer.prototype)[0];\r\n}\r\nexport function getPaneData() {\r\n const paneTransfer = LocalSelectionTransfer.getInstance();\r\n const isPanelEvent = paneTransfer.hasData(PaneTransfer.prototype);\r\n if (!isPanelEvent) {\r\n return undefined;\r\n }\r\n return paneTransfer.getData(PaneTransfer.prototype)[0];\r\n}\r\n//# sourceMappingURL=dataTransfer.js.map","export var Event;\r\n(function (Event) {\r\n Event.any = (...children) => {\r\n return (listener) => {\r\n const disposables = children.map((child) => child(listener));\r\n return {\r\n dispose: () => {\r\n disposables.forEach((d) => {\r\n d.dispose();\r\n });\r\n },\r\n };\r\n };\r\n };\r\n})(Event || (Event = {}));\r\nclass LeakageMonitor {\r\n constructor() {\r\n this.events = new Map();\r\n }\r\n get size() {\r\n return this.events.size;\r\n }\r\n add(event, stacktrace) {\r\n this.events.set(event, stacktrace);\r\n }\r\n delete(event) {\r\n this.events.delete(event);\r\n }\r\n clear() {\r\n this.events.clear();\r\n }\r\n}\r\nclass Stacktrace {\r\n static create() {\r\n var _a;\r\n return new Stacktrace((_a = new Error().stack) !== null && _a !== void 0 ? _a : '');\r\n }\r\n constructor(value) {\r\n this.value = value;\r\n }\r\n print() {\r\n console.warn(this.value);\r\n }\r\n}\r\nclass Listener {\r\n constructor(callback, stacktrace) {\r\n this.callback = callback;\r\n this.stacktrace = stacktrace;\r\n }\r\n}\r\n// relatively simple event emitter taken from https://github.com/microsoft/vscode/blob/master/src/vs/base/common/event.ts\r\nexport class Emitter {\r\n static setLeakageMonitorEnabled(isEnabled) {\r\n if (isEnabled !== Emitter.ENABLE_TRACKING) {\r\n Emitter.MEMORY_LEAK_WATCHER.clear();\r\n }\r\n Emitter.ENABLE_TRACKING = isEnabled;\r\n }\r\n constructor(options) {\r\n this.options = options;\r\n this._listeners = [];\r\n this._disposed = false;\r\n }\r\n get event() {\r\n if (!this._event) {\r\n this._event = (callback) => {\r\n var _a;\r\n if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.replay) && this._last !== undefined) {\r\n callback(this._last);\r\n }\r\n const listener = new Listener(callback, Emitter.ENABLE_TRACKING ? Stacktrace.create() : undefined);\r\n this._listeners.push(listener);\r\n return {\r\n dispose: () => {\r\n const index = this._listeners.indexOf(listener);\r\n if (index > -1) {\r\n this._listeners.splice(index, 1);\r\n }\r\n else if (Emitter.ENABLE_TRACKING) {\r\n // console.warn(\r\n // `Listener already disposed`,\r\n // Stacktrace.create().print()\r\n // );\r\n }\r\n },\r\n };\r\n };\r\n if (Emitter.ENABLE_TRACKING) {\r\n Emitter.MEMORY_LEAK_WATCHER.add(this._event, Stacktrace.create());\r\n }\r\n }\r\n return this._event;\r\n }\r\n fire(e) {\r\n this._last = e;\r\n for (const listener of this._listeners) {\r\n listener.callback(e);\r\n }\r\n }\r\n dispose() {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n if (this._listeners.length > 0) {\r\n if (Emitter.ENABLE_TRACKING) {\r\n queueMicrotask(() => {\r\n var _a;\r\n // don't check until stack of execution is completed to allow for out-of-order disposals within the same execution block\r\n for (const listener of this._listeners) {\r\n console.warn((_a = listener.stacktrace) === null || _a === void 0 ? void 0 : _a.print());\r\n }\r\n });\r\n }\r\n this._listeners = [];\r\n }\r\n if (Emitter.ENABLE_TRACKING && this._event) {\r\n Emitter.MEMORY_LEAK_WATCHER.delete(this._event);\r\n }\r\n }\r\n }\r\n}\r\nEmitter.ENABLE_TRACKING = false;\r\nEmitter.MEMORY_LEAK_WATCHER = new LeakageMonitor();\r\nexport function addDisposableWindowListener(element, type, listener, options) {\r\n element.addEventListener(type, listener, options);\r\n return {\r\n dispose: () => {\r\n element.removeEventListener(type, listener, options);\r\n },\r\n };\r\n}\r\nexport function addDisposableListener(element, type, listener, options) {\r\n element.addEventListener(type, listener, options);\r\n return {\r\n dispose: () => {\r\n element.removeEventListener(type, listener, options);\r\n },\r\n };\r\n}\r\nexport class TickDelayedEvent {\r\n constructor() {\r\n this._onFired = new Emitter();\r\n this.onEvent = this._onFired.event;\r\n }\r\n fire() {\r\n if (this.timer) {\r\n clearTimeout(this.timer);\r\n }\r\n this.timer = setTimeout(() => {\r\n this._onFired.fire();\r\n clearTimeout(this.timer);\r\n });\r\n }\r\n dispose() {\r\n this._onFired.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=events.js.map","export function createComponent(id, componentName, components = {}, frameworkComponents = {}, createFrameworkComponent, fallback) {\r\n const Component = typeof componentName === 'string'\r\n ? components[componentName]\r\n : undefined;\r\n const FrameworkComponent = typeof componentName === 'string'\r\n ? frameworkComponents[componentName]\r\n : undefined;\r\n if (Component && FrameworkComponent) {\r\n throw new Error(`Cannot create '${id}'. component '${componentName}' registered as both a component and frameworkComponent`);\r\n }\r\n if (FrameworkComponent) {\r\n if (!createFrameworkComponent) {\r\n throw new Error(`Cannot create '${id}' for framework component '${componentName}'. you must register a frameworkPanelWrapper to use framework components`);\r\n }\r\n return createFrameworkComponent.createComponent(id, componentName, FrameworkComponent);\r\n }\r\n if (!Component) {\r\n if (fallback) {\r\n return fallback();\r\n }\r\n throw new Error(`Cannot create '${id}', no component '${componentName}' provided`);\r\n }\r\n return new Component(id, componentName);\r\n}\r\n//# sourceMappingURL=componentFactory.js.map","import { Emitter, addDisposableListener, addDisposableWindowListener, } from './events';\r\nimport { CompositeDisposable } from './lifecycle';\r\nexport function watchElementResize(element, cb) {\r\n const observer = new ResizeObserver((entires) => {\r\n /**\r\n * Fast browser window resize produces Error: ResizeObserver loop limit exceeded.\r\n * The error isn't visible in browser console, doesn't affect functionality, but degrades performance.\r\n * See https://stackoverflow.com/questions/49384120/resizeobserver-loop-limit-exceeded/58701523#58701523\r\n */\r\n requestAnimationFrame(() => {\r\n const firstEntry = entires[0];\r\n cb(firstEntry);\r\n });\r\n });\r\n observer.observe(element);\r\n return {\r\n dispose: () => {\r\n observer.unobserve(element);\r\n observer.disconnect();\r\n },\r\n };\r\n}\r\nexport const removeClasses = (element, ...classes) => {\r\n for (const classname of classes) {\r\n if (element.classList.contains(classname)) {\r\n element.classList.remove(classname);\r\n }\r\n }\r\n};\r\nexport const addClasses = (element, ...classes) => {\r\n for (const classname of classes) {\r\n if (!element.classList.contains(classname)) {\r\n element.classList.add(classname);\r\n }\r\n }\r\n};\r\nexport const toggleClass = (element, className, isToggled) => {\r\n const hasClass = element.classList.contains(className);\r\n if (isToggled && !hasClass) {\r\n element.classList.add(className);\r\n }\r\n if (!isToggled && hasClass) {\r\n element.classList.remove(className);\r\n }\r\n};\r\nexport function isAncestor(testChild, testAncestor) {\r\n while (testChild) {\r\n if (testChild === testAncestor) {\r\n return true;\r\n }\r\n testChild = testChild.parentNode;\r\n }\r\n return false;\r\n}\r\nexport function getElementsByTagName(tag) {\r\n return Array.prototype.slice.call(document.getElementsByTagName(tag), 0);\r\n}\r\nexport function trackFocus(element) {\r\n return new FocusTracker(element);\r\n}\r\n/**\r\n * Track focus on an element. Ensure tabIndex is set when an HTMLElement is not focusable by default\r\n */\r\nclass FocusTracker extends CompositeDisposable {\r\n constructor(element) {\r\n super();\r\n this._onDidFocus = new Emitter();\r\n this.onDidFocus = this._onDidFocus.event;\r\n this._onDidBlur = new Emitter();\r\n this.onDidBlur = this._onDidBlur.event;\r\n this.addDisposables(this._onDidFocus, this._onDidBlur);\r\n let hasFocus = isAncestor(document.activeElement, element);\r\n let loosingFocus = false;\r\n const onFocus = () => {\r\n loosingFocus = false;\r\n if (!hasFocus) {\r\n hasFocus = true;\r\n this._onDidFocus.fire();\r\n }\r\n };\r\n const onBlur = () => {\r\n if (hasFocus) {\r\n loosingFocus = true;\r\n window.setTimeout(() => {\r\n if (loosingFocus) {\r\n loosingFocus = false;\r\n hasFocus = false;\r\n this._onDidBlur.fire();\r\n }\r\n }, 0);\r\n }\r\n };\r\n this._refreshStateHandler = () => {\r\n const currentNodeHasFocus = isAncestor(document.activeElement, element);\r\n if (currentNodeHasFocus !== hasFocus) {\r\n if (hasFocus) {\r\n onBlur();\r\n }\r\n else {\r\n onFocus();\r\n }\r\n }\r\n };\r\n if (element instanceof HTMLElement) {\r\n this.addDisposables(addDisposableListener(element, 'focus', onFocus, true));\r\n this.addDisposables(addDisposableListener(element, 'blur', onBlur, true));\r\n }\r\n else {\r\n this.addDisposables(addDisposableWindowListener(element, 'focus', onFocus, true));\r\n this.addDisposables(addDisposableWindowListener(element, 'blur', onBlur, true));\r\n }\r\n }\r\n refreshState() {\r\n this._refreshStateHandler();\r\n }\r\n}\r\n// quasi: apparently, but not really; seemingly\r\nconst QUASI_PREVENT_DEFAULT_KEY = 'dv-quasiPreventDefault';\r\n// mark an event directly for other listeners to check\r\nexport function quasiPreventDefault(event) {\r\n event[QUASI_PREVENT_DEFAULT_KEY] = true;\r\n}\r\n// check if this event has been marked\r\nexport function quasiDefaultPrevented(event) {\r\n return event[QUASI_PREVENT_DEFAULT_KEY];\r\n}\r\n//# sourceMappingURL=dom.js.map","export function tail(arr) {\r\n if (arr.length === 0) {\r\n throw new Error('Invalid tail call');\r\n }\r\n return [arr.slice(0, arr.length - 1), arr[arr.length - 1]];\r\n}\r\nexport function last(arr) {\r\n return arr.length > 0 ? arr[arr.length - 1] : undefined;\r\n}\r\nexport function sequenceEquals(arr1, arr2) {\r\n if (arr1.length !== arr2.length) {\r\n return false;\r\n }\r\n for (let i = 0; i < arr1.length; i++) {\r\n if (arr1[i] !== arr2[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * Pushes an element to the start of the array, if found.\r\n */\r\nexport function pushToStart(arr, value) {\r\n const index = arr.indexOf(value);\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n arr.unshift(value);\r\n }\r\n}\r\n/**\r\n * Pushes an element to the end of the array, if found.\r\n */\r\nexport function pushToEnd(arr, value) {\r\n const index = arr.indexOf(value);\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n arr.push(value);\r\n }\r\n}\r\nexport function firstIndex(array, fn) {\r\n for (let i = 0; i < array.length; i++) {\r\n const element = array[i];\r\n if (fn(element)) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\nexport function remove(array, value) {\r\n const index = array.findIndex((t) => t === value);\r\n if (index > -1) {\r\n array.splice(index, 1);\r\n return true;\r\n }\r\n return false;\r\n}\r\n//# sourceMappingURL=array.js.map","export const clamp = (value, min, max) => {\r\n if (min > max) {\r\n throw new Error(`${min} > ${max} is an invalid condition`);\r\n }\r\n return Math.min(max, Math.max(value, min));\r\n};\r\nexport const sequentialNumberGenerator = () => {\r\n let value = 1;\r\n return { next: () => (value++).toString() };\r\n};\r\nexport const range = (from, to) => {\r\n const result = [];\r\n if (typeof to !== 'number') {\r\n to = from;\r\n from = 0;\r\n }\r\n if (from <= to) {\r\n for (let i = from; i < to; i++) {\r\n result.push(i);\r\n }\r\n }\r\n else {\r\n for (let i = from; i > to; i--) {\r\n result.push(i);\r\n }\r\n }\r\n return result;\r\n};\r\n//# sourceMappingURL=math.js.map","import { clamp } from '../math';\r\nexport class ViewItem {\r\n set size(size) {\r\n this._size = size;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n get cachedVisibleSize() {\r\n return this._cachedVisibleSize;\r\n }\r\n get visible() {\r\n return typeof this._cachedVisibleSize === 'undefined';\r\n }\r\n get minimumSize() {\r\n return this.visible ? this.view.minimumSize : 0;\r\n }\r\n get viewMinimumSize() {\r\n return this.view.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.visible ? this.view.maximumSize : 0;\r\n }\r\n get viewMaximumSize() {\r\n return this.view.maximumSize;\r\n }\r\n get priority() {\r\n return this.view.priority;\r\n }\r\n get snap() {\r\n return !!this.view.snap;\r\n }\r\n set enabled(enabled) {\r\n this.container.style.pointerEvents = enabled ? '' : 'none';\r\n }\r\n constructor(container, view, size, disposable) {\r\n this.container = container;\r\n this.view = view;\r\n this.disposable = disposable;\r\n this._cachedVisibleSize = undefined;\r\n if (typeof size === 'number') {\r\n this._size = size;\r\n this._cachedVisibleSize = undefined;\r\n container.classList.add('visible');\r\n }\r\n else {\r\n this._size = 0;\r\n this._cachedVisibleSize = size.cachedVisibleSize;\r\n }\r\n }\r\n setVisible(visible, size) {\r\n var _a;\r\n if (visible === this.visible) {\r\n return;\r\n }\r\n if (visible) {\r\n this.size = clamp((_a = this._cachedVisibleSize) !== null && _a !== void 0 ? _a : 0, this.viewMinimumSize, this.viewMaximumSize);\r\n this._cachedVisibleSize = undefined;\r\n }\r\n else {\r\n this._cachedVisibleSize =\r\n typeof size === 'number' ? size : this.size;\r\n this.size = 0;\r\n }\r\n this.container.classList.toggle('visible', visible);\r\n if (this.view.setVisible) {\r\n this.view.setVisible(visible);\r\n }\r\n }\r\n dispose() {\r\n this.disposable.dispose();\r\n return this.view;\r\n }\r\n}\r\n//# sourceMappingURL=viewItem.js.map","/*---------------------------------------------------------------------------------------------\r\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\r\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/splitview\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { removeClasses, addClasses, toggleClass, getElementsByTagName, } from '../dom';\r\nimport { Emitter } from '../events';\r\nimport { pushToStart, pushToEnd, firstIndex } from '../array';\r\nimport { range, clamp } from '../math';\r\nimport { ViewItem } from './viewItem';\r\nexport var Orientation;\r\n(function (Orientation) {\r\n Orientation[\"HORIZONTAL\"] = \"HORIZONTAL\";\r\n Orientation[\"VERTICAL\"] = \"VERTICAL\";\r\n})(Orientation || (Orientation = {}));\r\nexport var SashState;\r\n(function (SashState) {\r\n SashState[SashState[\"MAXIMUM\"] = 0] = \"MAXIMUM\";\r\n SashState[SashState[\"MINIMUM\"] = 1] = \"MINIMUM\";\r\n SashState[SashState[\"DISABLED\"] = 2] = \"DISABLED\";\r\n SashState[SashState[\"ENABLED\"] = 3] = \"ENABLED\";\r\n})(SashState || (SashState = {}));\r\nexport var LayoutPriority;\r\n(function (LayoutPriority) {\r\n LayoutPriority[\"Low\"] = \"low\";\r\n LayoutPriority[\"High\"] = \"high\";\r\n LayoutPriority[\"Normal\"] = \"normal\";\r\n})(LayoutPriority || (LayoutPriority = {}));\r\nexport var Sizing;\r\n(function (Sizing) {\r\n Sizing.Distribute = { type: 'distribute' };\r\n function Split(index) {\r\n return { type: 'split', index };\r\n }\r\n Sizing.Split = Split;\r\n function Invisible(cachedVisibleSize) {\r\n return { type: 'invisible', cachedVisibleSize };\r\n }\r\n Sizing.Invisible = Invisible;\r\n})(Sizing || (Sizing = {}));\r\nexport class Splitview {\r\n get size() {\r\n return this._size;\r\n }\r\n set size(value) {\r\n this._size = value;\r\n }\r\n get orthogonalSize() {\r\n return this._orthogonalSize;\r\n }\r\n set orthogonalSize(value) {\r\n this._orthogonalSize = value;\r\n }\r\n get length() {\r\n return this.viewItems.length;\r\n }\r\n get proportions() {\r\n return this._proportions ? [...this._proportions] : undefined;\r\n }\r\n get orientation() {\r\n return this._orientation;\r\n }\r\n set orientation(value) {\r\n this._orientation = value;\r\n const tmp = this.size;\r\n this.size = this.orthogonalSize;\r\n this.orthogonalSize = tmp;\r\n removeClasses(this.element, 'horizontal', 'vertical');\r\n this.element.classList.add(this.orientation == Orientation.HORIZONTAL\r\n ? 'horizontal'\r\n : 'vertical');\r\n }\r\n get minimumSize() {\r\n return this.viewItems.reduce((r, item) => r + item.minimumSize, 0);\r\n }\r\n get maximumSize() {\r\n return this.length === 0\r\n ? Number.POSITIVE_INFINITY\r\n : this.viewItems.reduce((r, item) => r + item.maximumSize, 0);\r\n }\r\n get startSnappingEnabled() {\r\n return this._startSnappingEnabled;\r\n }\r\n set startSnappingEnabled(startSnappingEnabled) {\r\n if (this._startSnappingEnabled === startSnappingEnabled) {\r\n return;\r\n }\r\n this._startSnappingEnabled = startSnappingEnabled;\r\n this.updateSashEnablement();\r\n }\r\n get endSnappingEnabled() {\r\n return this._endSnappingEnabled;\r\n }\r\n set endSnappingEnabled(endSnappingEnabled) {\r\n if (this._endSnappingEnabled === endSnappingEnabled) {\r\n return;\r\n }\r\n this._endSnappingEnabled = endSnappingEnabled;\r\n this.updateSashEnablement();\r\n }\r\n constructor(container, options) {\r\n this.container = container;\r\n this.viewItems = [];\r\n this.sashes = [];\r\n this._size = 0;\r\n this._orthogonalSize = 0;\r\n this.contentSize = 0;\r\n this._proportions = undefined;\r\n this._startSnappingEnabled = true;\r\n this._endSnappingEnabled = true;\r\n this._onDidSashEnd = new Emitter();\r\n this.onDidSashEnd = this._onDidSashEnd.event;\r\n this._onDidAddView = new Emitter();\r\n this.onDidAddView = this._onDidAddView.event;\r\n this._onDidRemoveView = new Emitter();\r\n this.onDidRemoveView = this._onDidRemoveView.event;\r\n this.resize = (index, delta, sizes = this.viewItems.map((x) => x.size), lowPriorityIndexes, highPriorityIndexes, overloadMinDelta = Number.NEGATIVE_INFINITY, overloadMaxDelta = Number.POSITIVE_INFINITY, snapBefore, snapAfter) => {\r\n if (index < 0 || index > this.viewItems.length) {\r\n return 0;\r\n }\r\n const upIndexes = range(index, -1);\r\n const downIndexes = range(index + 1, this.viewItems.length);\r\n //\r\n if (highPriorityIndexes) {\r\n for (const i of highPriorityIndexes) {\r\n pushToStart(upIndexes, i);\r\n pushToStart(downIndexes, i);\r\n }\r\n }\r\n if (lowPriorityIndexes) {\r\n for (const i of lowPriorityIndexes) {\r\n pushToEnd(upIndexes, i);\r\n pushToEnd(downIndexes, i);\r\n }\r\n }\r\n //\r\n const upItems = upIndexes.map((i) => this.viewItems[i]);\r\n const upSizes = upIndexes.map((i) => sizes[i]);\r\n //\r\n const downItems = downIndexes.map((i) => this.viewItems[i]);\r\n const downSizes = downIndexes.map((i) => sizes[i]);\r\n //\r\n const minDeltaUp = upIndexes.reduce((_, i) => _ + this.viewItems[i].minimumSize - sizes[i], 0);\r\n const maxDeltaUp = upIndexes.reduce((_, i) => _ + this.viewItems[i].maximumSize - sizes[i], 0);\r\n //\r\n const maxDeltaDown = downIndexes.length === 0\r\n ? Number.POSITIVE_INFINITY\r\n : downIndexes.reduce((_, i) => _ + sizes[i] - this.viewItems[i].minimumSize, 0);\r\n const minDeltaDown = downIndexes.length === 0\r\n ? Number.NEGATIVE_INFINITY\r\n : downIndexes.reduce((_, i) => _ + sizes[i] - this.viewItems[i].maximumSize, 0);\r\n //\r\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\r\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\r\n //\r\n let snapped = false;\r\n if (snapBefore) {\r\n const snapView = this.viewItems[snapBefore.index];\r\n const visible = delta >= snapBefore.limitDelta;\r\n snapped = visible !== snapView.visible;\r\n snapView.setVisible(visible, snapBefore.size);\r\n }\r\n if (!snapped && snapAfter) {\r\n const snapView = this.viewItems[snapAfter.index];\r\n const visible = delta < snapAfter.limitDelta;\r\n snapped = visible !== snapView.visible;\r\n snapView.setVisible(visible, snapAfter.size);\r\n }\r\n if (snapped) {\r\n return this.resize(index, delta, sizes, lowPriorityIndexes, highPriorityIndexes, overloadMinDelta, overloadMaxDelta);\r\n }\r\n //\r\n const tentativeDelta = clamp(delta, minDelta, maxDelta);\r\n let actualDelta = 0;\r\n //\r\n let deltaUp = tentativeDelta;\r\n for (let i = 0; i < upItems.length; i++) {\r\n const item = upItems[i];\r\n const size = clamp(upSizes[i] + deltaUp, item.minimumSize, item.maximumSize);\r\n const viewDelta = size - upSizes[i];\r\n actualDelta += viewDelta;\r\n deltaUp -= viewDelta;\r\n item.size = size;\r\n }\r\n //\r\n let deltaDown = actualDelta;\r\n for (let i = 0; i < downItems.length; i++) {\r\n const item = downItems[i];\r\n const size = clamp(downSizes[i] - deltaDown, item.minimumSize, item.maximumSize);\r\n const viewDelta = size - downSizes[i];\r\n deltaDown += viewDelta;\r\n item.size = size;\r\n }\r\n //\r\n return delta;\r\n };\r\n this._orientation = options.orientation;\r\n this.element = this.createContainer();\r\n this.proportionalLayout =\r\n options.proportionalLayout === undefined\r\n ? true\r\n : !!options.proportionalLayout;\r\n this.viewContainer = this.createViewContainer();\r\n this.sashContainer = this.createSashContainer();\r\n this.element.appendChild(this.sashContainer);\r\n this.element.appendChild(this.viewContainer);\r\n this.container.appendChild(this.element);\r\n this.style(options.styles);\r\n // We have an existing set of view, add them now\r\n if (options.descriptor) {\r\n this._size = options.descriptor.size;\r\n options.descriptor.views.forEach((viewDescriptor, index) => {\r\n const sizing = viewDescriptor.visible === undefined ||\r\n viewDescriptor.visible\r\n ? viewDescriptor.size\r\n : {\r\n type: 'invisible',\r\n cachedVisibleSize: viewDescriptor.size,\r\n };\r\n const view = viewDescriptor.view;\r\n this.addView(view, sizing, index, true\r\n // true skip layout\r\n );\r\n });\r\n // Initialize content size and proportions for first layout\r\n this.contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n this.saveProportions();\r\n }\r\n }\r\n style(styles) {\r\n if ((styles === null || styles === void 0 ? void 0 : styles.separatorBorder) === 'transparent') {\r\n removeClasses(this.element, 'separator-border');\r\n this.element.style.removeProperty('--dv-separator-border');\r\n }\r\n else {\r\n addClasses(this.element, 'separator-border');\r\n if (styles === null || styles === void 0 ? void 0 : styles.separatorBorder) {\r\n this.element.style.setProperty('--dv-separator-border', styles.separatorBorder);\r\n }\r\n }\r\n }\r\n isViewVisible(index) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n throw new Error('Index out of bounds');\r\n }\r\n const viewItem = this.viewItems[index];\r\n return viewItem.visible;\r\n }\r\n setViewVisible(index, visible) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n throw new Error('Index out of bounds');\r\n }\r\n toggleClass(this.container, 'visible', visible);\r\n const viewItem = this.viewItems[index];\r\n toggleClass(this.container, 'visible', visible);\r\n viewItem.setVisible(visible, viewItem.size);\r\n this.distributeEmptySpace(index);\r\n this.layoutViews();\r\n this.saveProportions();\r\n }\r\n getViewSize(index) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n return -1;\r\n }\r\n return this.viewItems[index].size;\r\n }\r\n resizeView(index, size) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n return;\r\n }\r\n const indexes = range(this.viewItems.length).filter((i) => i !== index);\r\n const lowPriorityIndexes = [\r\n ...indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low),\r\n index,\r\n ];\r\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\r\n const item = this.viewItems[index];\r\n size = Math.round(size);\r\n size = clamp(size, item.minimumSize, Math.min(item.maximumSize, this._size));\r\n item.size = size;\r\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\r\n }\r\n getViews() {\r\n return this.viewItems.map((x) => x.view);\r\n }\r\n onDidChange(item, size) {\r\n const index = this.viewItems.indexOf(item);\r\n if (index < 0 || index >= this.viewItems.length) {\r\n return;\r\n }\r\n size = typeof size === 'number' ? size : item.size;\r\n size = clamp(size, item.minimumSize, item.maximumSize);\r\n item.size = size;\r\n const indexes = range(this.viewItems.length).filter((i) => i !== index);\r\n const lowPriorityIndexes = [\r\n ...indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low),\r\n index,\r\n ];\r\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\r\n /**\r\n * add this view we are changing to the low-index list since we have determined the size\r\n * here and don't want it changed\r\n */\r\n this.relayout([...lowPriorityIndexes, index], highPriorityIndexes);\r\n }\r\n addView(view, size = { type: 'distribute' }, index = this.viewItems.length, skipLayout) {\r\n const container = document.createElement('div');\r\n container.className = 'view';\r\n container.appendChild(view.element);\r\n let viewSize;\r\n if (typeof size === 'number') {\r\n viewSize = size;\r\n }\r\n else if (size.type === 'split') {\r\n viewSize = this.getViewSize(size.index) / 2;\r\n }\r\n else if (size.type === 'invisible') {\r\n viewSize = { cachedVisibleSize: size.cachedVisibleSize };\r\n }\r\n else {\r\n viewSize = view.minimumSize;\r\n }\r\n const disposable = view.onDidChange((newSize) => this.onDidChange(viewItem, newSize.size));\r\n const viewItem = new ViewItem(container, view, viewSize, {\r\n dispose: () => {\r\n disposable.dispose();\r\n this.viewContainer.removeChild(container);\r\n },\r\n });\r\n if (index === this.viewItems.length) {\r\n this.viewContainer.appendChild(container);\r\n }\r\n else {\r\n this.viewContainer.insertBefore(container, this.viewContainer.children.item(index));\r\n }\r\n this.viewItems.splice(index, 0, viewItem);\r\n if (this.viewItems.length > 1) {\r\n //add sash\r\n const sash = document.createElement('div');\r\n sash.className = 'sash';\r\n const onPointerStart = (event) => {\r\n for (const item of this.viewItems) {\r\n item.enabled = false;\r\n }\r\n const iframes = [\r\n ...getElementsByTagName('iframe'),\r\n ...getElementsByTagName('webview'),\r\n ];\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'none';\r\n }\r\n const start = this._orientation === Orientation.HORIZONTAL\r\n ? event.clientX\r\n : event.clientY;\r\n const sashIndex = firstIndex(this.sashes, (s) => s.container === sash);\r\n //\r\n const sizes = this.viewItems.map((x) => x.size);\r\n //\r\n let snapBefore;\r\n let snapAfter;\r\n const upIndexes = range(sashIndex, -1);\r\n const downIndexes = range(sashIndex + 1, this.viewItems.length);\r\n const minDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].minimumSize - sizes[i]), 0);\r\n const maxDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].viewMaximumSize - sizes[i]), 0);\r\n const maxDeltaDown = downIndexes.length === 0\r\n ? Number.POSITIVE_INFINITY\r\n : downIndexes.reduce((r, i) => r +\r\n (sizes[i] - this.viewItems[i].minimumSize), 0);\r\n const minDeltaDown = downIndexes.length === 0\r\n ? Number.NEGATIVE_INFINITY\r\n : downIndexes.reduce((r, i) => r +\r\n (sizes[i] -\r\n this.viewItems[i].viewMaximumSize), 0);\r\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\r\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\r\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\r\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\r\n if (typeof snapBeforeIndex === 'number') {\r\n const snappedViewItem = this.viewItems[snapBeforeIndex];\r\n const halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);\r\n snapBefore = {\r\n index: snapBeforeIndex,\r\n limitDelta: snappedViewItem.visible\r\n ? minDelta - halfSize\r\n : minDelta + halfSize,\r\n size: snappedViewItem.size,\r\n };\r\n }\r\n if (typeof snapAfterIndex === 'number') {\r\n const snappedViewItem = this.viewItems[snapAfterIndex];\r\n const halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);\r\n snapAfter = {\r\n index: snapAfterIndex,\r\n limitDelta: snappedViewItem.visible\r\n ? maxDelta + halfSize\r\n : maxDelta - halfSize,\r\n size: snappedViewItem.size,\r\n };\r\n }\r\n const onPointerMove = (event) => {\r\n const current = this._orientation === Orientation.HORIZONTAL\r\n ? event.clientX\r\n : event.clientY;\r\n const delta = current - start;\r\n this.resize(sashIndex, delta, sizes, undefined, undefined, minDelta, maxDelta, snapBefore, snapAfter);\r\n this.distributeEmptySpace();\r\n this.layoutViews();\r\n };\r\n const end = () => {\r\n for (const item of this.viewItems) {\r\n item.enabled = true;\r\n }\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'auto';\r\n }\r\n this.saveProportions();\r\n document.removeEventListener('pointermove', onPointerMove);\r\n document.removeEventListener('pointerup', end);\r\n document.removeEventListener('pointercancel', end);\r\n this._onDidSashEnd.fire(undefined);\r\n };\r\n document.addEventListener('pointermove', onPointerMove);\r\n document.addEventListener('pointerup', end);\r\n document.addEventListener('pointercancel', end);\r\n };\r\n sash.addEventListener('pointerdown', onPointerStart);\r\n const sashItem = {\r\n container: sash,\r\n disposable: () => {\r\n sash.removeEventListener('pointerdown', onPointerStart);\r\n this.sashContainer.removeChild(sash);\r\n },\r\n };\r\n this.sashContainer.appendChild(sash);\r\n this.sashes.push(sashItem);\r\n }\r\n if (!skipLayout) {\r\n this.relayout([index]);\r\n }\r\n if (!skipLayout &&\r\n typeof size !== 'number' &&\r\n size.type === 'distribute') {\r\n this.distributeViewSizes();\r\n }\r\n this._onDidAddView.fire(view);\r\n }\r\n distributeViewSizes() {\r\n const flexibleViewItems = [];\r\n let flexibleSize = 0;\r\n for (const item of this.viewItems) {\r\n if (item.maximumSize - item.minimumSize > 0) {\r\n flexibleViewItems.push(item);\r\n flexibleSize += item.size;\r\n }\r\n }\r\n const size = Math.floor(flexibleSize / flexibleViewItems.length);\r\n for (const item of flexibleViewItems) {\r\n item.size = clamp(size, item.minimumSize, item.maximumSize);\r\n }\r\n const indexes = range(this.viewItems.length);\r\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\r\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\r\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\r\n }\r\n removeView(index, sizing, skipLayout = false) {\r\n // Remove view\r\n const viewItem = this.viewItems.splice(index, 1)[0];\r\n viewItem.dispose();\r\n // Remove sash\r\n if (this.viewItems.length >= 1) {\r\n const sashIndex = Math.max(index - 1, 0);\r\n const sashItem = this.sashes.splice(sashIndex, 1)[0];\r\n sashItem.disposable();\r\n }\r\n if (!skipLayout) {\r\n this.relayout();\r\n }\r\n if (sizing && sizing.type === 'distribute') {\r\n this.distributeViewSizes();\r\n }\r\n this._onDidRemoveView.fire(viewItem.view);\r\n return viewItem.view;\r\n }\r\n getViewCachedVisibleSize(index) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n throw new Error('Index out of bounds');\r\n }\r\n const viewItem = this.viewItems[index];\r\n return viewItem.cachedVisibleSize;\r\n }\r\n moveView(from, to) {\r\n const cachedVisibleSize = this.getViewCachedVisibleSize(from);\r\n const sizing = typeof cachedVisibleSize === 'undefined'\r\n ? this.getViewSize(from)\r\n : Sizing.Invisible(cachedVisibleSize);\r\n const view = this.removeView(from, undefined, true);\r\n this.addView(view, sizing, to);\r\n }\r\n layout(size, orthogonalSize) {\r\n const previousSize = Math.max(this.size, this.contentSize);\r\n this.size = size;\r\n this.orthogonalSize = orthogonalSize;\r\n if (!this.proportions) {\r\n const indexes = range(this.viewItems.length);\r\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\r\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\r\n this.resize(this.viewItems.length - 1, size - previousSize, undefined, lowPriorityIndexes, highPriorityIndexes);\r\n }\r\n else {\r\n for (let i = 0; i < this.viewItems.length; i++) {\r\n const item = this.viewItems[i];\r\n item.size = clamp(Math.round(this.proportions[i] * size), item.minimumSize, item.maximumSize);\r\n }\r\n }\r\n this.distributeEmptySpace();\r\n this.layoutViews();\r\n }\r\n relayout(lowPriorityIndexes, highPriorityIndexes) {\r\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n this.resize(this.viewItems.length - 1, this._size - contentSize, undefined, lowPriorityIndexes, highPriorityIndexes);\r\n this.distributeEmptySpace();\r\n this.layoutViews();\r\n this.saveProportions();\r\n }\r\n distributeEmptySpace(lowPriorityIndex) {\r\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n let emptyDelta = this.size - contentSize;\r\n const indexes = range(this.viewItems.length - 1, -1);\r\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\r\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\r\n for (const index of highPriorityIndexes) {\r\n pushToStart(indexes, index);\r\n }\r\n for (const index of lowPriorityIndexes) {\r\n pushToEnd(indexes, index);\r\n }\r\n if (typeof lowPriorityIndex === 'number') {\r\n pushToEnd(indexes, lowPriorityIndex);\r\n }\r\n for (let i = 0; emptyDelta !== 0 && i < indexes.length; i++) {\r\n const item = this.viewItems[indexes[i]];\r\n const size = clamp(item.size + emptyDelta, item.minimumSize, item.maximumSize);\r\n const viewDelta = size - item.size;\r\n emptyDelta -= viewDelta;\r\n item.size = size;\r\n }\r\n }\r\n saveProportions() {\r\n if (this.proportionalLayout && this.contentSize > 0) {\r\n this._proportions = this.viewItems.map((i) => i.size / this.contentSize);\r\n }\r\n }\r\n layoutViews() {\r\n this.contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n let sum = 0;\r\n const x = [];\r\n this.updateSashEnablement();\r\n for (let i = 0; i < this.viewItems.length - 1; i++) {\r\n sum += this.viewItems[i].size;\r\n x.push(sum);\r\n const offset = Math.min(Math.max(0, sum - 2), this.size - 4);\r\n if (this._orientation === Orientation.HORIZONTAL) {\r\n this.sashes[i].container.style.left = `${offset}px`;\r\n this.sashes[i].container.style.top = `0px`;\r\n }\r\n if (this._orientation === Orientation.VERTICAL) {\r\n this.sashes[i].container.style.left = `0px`;\r\n this.sashes[i].container.style.top = `${offset}px`;\r\n }\r\n }\r\n this.viewItems.forEach((view, i) => {\r\n if (this._orientation === Orientation.HORIZONTAL) {\r\n view.container.style.width = `${view.size}px`;\r\n view.container.style.left = i == 0 ? '0px' : `${x[i - 1]}px`;\r\n view.container.style.top = '';\r\n view.container.style.height = '';\r\n }\r\n if (this._orientation === Orientation.VERTICAL) {\r\n view.container.style.height = `${view.size}px`;\r\n view.container.style.top = i == 0 ? '0px' : `${x[i - 1]}px`;\r\n view.container.style.width = '';\r\n view.container.style.left = '';\r\n }\r\n view.view.layout(view.size, this._orthogonalSize);\r\n });\r\n }\r\n findFirstSnapIndex(indexes) {\r\n // visible views first\r\n for (const index of indexes) {\r\n const viewItem = this.viewItems[index];\r\n if (!viewItem.visible) {\r\n continue;\r\n }\r\n if (viewItem.snap) {\r\n return index;\r\n }\r\n }\r\n // then, hidden views\r\n for (const index of indexes) {\r\n const viewItem = this.viewItems[index];\r\n if (viewItem.visible &&\r\n viewItem.maximumSize - viewItem.minimumSize > 0) {\r\n return undefined;\r\n }\r\n if (!viewItem.visible && viewItem.snap) {\r\n return index;\r\n }\r\n }\r\n return undefined;\r\n }\r\n updateSashEnablement() {\r\n let previous = false;\r\n const collapsesDown = this.viewItems.map((i) => (previous = i.size - i.minimumSize > 0 || previous));\r\n previous = false;\r\n const expandsDown = this.viewItems.map((i) => (previous = i.maximumSize - i.size > 0 || previous));\r\n const reverseViews = [...this.viewItems].reverse();\r\n previous = false;\r\n const collapsesUp = reverseViews\r\n .map((i) => (previous = i.size - i.minimumSize > 0 || previous))\r\n .reverse();\r\n previous = false;\r\n const expandsUp = reverseViews\r\n .map((i) => (previous = i.maximumSize - i.size > 0 || previous))\r\n .reverse();\r\n let position = 0;\r\n for (let index = 0; index < this.sashes.length; index++) {\r\n const sash = this.sashes[index];\r\n const viewItem = this.viewItems[index];\r\n position += viewItem.size;\r\n const min = !(collapsesDown[index] && expandsUp[index + 1]);\r\n const max = !(expandsDown[index] && collapsesUp[index + 1]);\r\n if (min && max) {\r\n const upIndexes = range(index, -1);\r\n const downIndexes = range(index + 1, this.viewItems.length);\r\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\r\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\r\n const snappedBefore = typeof snapBeforeIndex === 'number' &&\r\n !this.viewItems[snapBeforeIndex].visible;\r\n const snappedAfter = typeof snapAfterIndex === 'number' &&\r\n !this.viewItems[snapAfterIndex].visible;\r\n if (snappedBefore &&\r\n collapsesUp[index] &&\r\n (position > 0 || this.startSnappingEnabled)) {\r\n this.updateSash(sash, SashState.MINIMUM);\r\n }\r\n else if (snappedAfter &&\r\n collapsesDown[index] &&\r\n (position < this.contentSize || this.endSnappingEnabled)) {\r\n this.updateSash(sash, SashState.MAXIMUM);\r\n }\r\n else {\r\n this.updateSash(sash, SashState.DISABLED);\r\n }\r\n }\r\n else if (min && !max) {\r\n this.updateSash(sash, SashState.MINIMUM);\r\n }\r\n else if (!min && max) {\r\n this.updateSash(sash, SashState.MAXIMUM);\r\n }\r\n else {\r\n this.updateSash(sash, SashState.ENABLED);\r\n }\r\n }\r\n }\r\n updateSash(sash, state) {\r\n toggleClass(sash.container, 'disabled', state === SashState.DISABLED);\r\n toggleClass(sash.container, 'enabled', state === SashState.ENABLED);\r\n toggleClass(sash.container, 'maximum', state === SashState.MAXIMUM);\r\n toggleClass(sash.container, 'minimum', state === SashState.MINIMUM);\r\n }\r\n createViewContainer() {\r\n const element = document.createElement('div');\r\n element.className = 'view-container';\r\n return element;\r\n }\r\n createSashContainer() {\r\n const element = document.createElement('div');\r\n element.className = 'sash-container';\r\n return element;\r\n }\r\n createContainer() {\r\n const element = document.createElement('div');\r\n const orientationClassname = this._orientation === Orientation.HORIZONTAL\r\n ? 'horizontal'\r\n : 'vertical';\r\n element.className = `split-view-container ${orientationClassname}`;\r\n return element;\r\n }\r\n dispose() {\r\n this._onDidSashEnd.dispose();\r\n this._onDidAddView.dispose();\r\n this._onDidRemoveView.dispose();\r\n for (let i = 0; i < this.element.children.length; i++) {\r\n if (this.element.children.item(i) === this.element) {\r\n this.element.removeChild(this.element);\r\n break;\r\n }\r\n }\r\n for (const viewItem of this.viewItems) {\r\n viewItem.dispose();\r\n }\r\n this.element.remove();\r\n }\r\n}\r\n//# sourceMappingURL=splitview.js.map","import { Splitview, Orientation, } from '../splitview/splitview';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nimport { Emitter } from '../events';\r\nimport { addClasses, removeClasses } from '../dom';\r\nexport class Paneview extends CompositeDisposable {\r\n get onDidAddView() {\r\n return this.splitview.onDidAddView;\r\n }\r\n get onDidRemoveView() {\r\n return this.splitview.onDidRemoveView;\r\n }\r\n get minimumSize() {\r\n return this.splitview.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.splitview.maximumSize;\r\n }\r\n get orientation() {\r\n return this.splitview.orientation;\r\n }\r\n get size() {\r\n return this.splitview.size;\r\n }\r\n get orthogonalSize() {\r\n return this.splitview.orthogonalSize;\r\n }\r\n constructor(container, options) {\r\n var _a;\r\n super();\r\n this.paneItems = [];\r\n this.skipAnimation = false;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._orientation = (_a = options.orientation) !== null && _a !== void 0 ? _a : Orientation.VERTICAL;\r\n this.element = document.createElement('div');\r\n this.element.className = 'pane-container';\r\n container.appendChild(this.element);\r\n this.splitview = new Splitview(this.element, {\r\n orientation: this._orientation,\r\n proportionalLayout: false,\r\n descriptor: options.descriptor,\r\n });\r\n // if we've added views from the descriptor we need to\r\n // add the panes to our Pane array and setup animation\r\n this.getPanes().forEach((pane) => {\r\n const disposable = new CompositeDisposable(pane.onDidChangeExpansionState(() => {\r\n this.setupAnimation();\r\n this._onDidChange.fire(undefined);\r\n }));\r\n const paneItem = {\r\n pane,\r\n disposable: {\r\n dispose: () => {\r\n disposable.dispose();\r\n },\r\n },\r\n };\r\n this.paneItems.push(paneItem);\r\n pane.orthogonalSize = this.splitview.orthogonalSize;\r\n });\r\n this.addDisposables(this._onDidChange, this.splitview.onDidSashEnd(() => {\r\n this._onDidChange.fire(undefined);\r\n }), this.splitview.onDidAddView(() => {\r\n this._onDidChange.fire();\r\n }), this.splitview.onDidRemoveView(() => {\r\n this._onDidChange.fire();\r\n }));\r\n }\r\n addPane(pane, size, index = this.splitview.length, skipLayout = false) {\r\n const disposable = pane.onDidChangeExpansionState(() => {\r\n this.setupAnimation();\r\n this._onDidChange.fire(undefined);\r\n });\r\n const paneItem = {\r\n pane,\r\n disposable: {\r\n dispose: () => {\r\n disposable.dispose();\r\n },\r\n },\r\n };\r\n this.paneItems.splice(index, 0, paneItem);\r\n pane.orthogonalSize = this.splitview.orthogonalSize;\r\n this.splitview.addView(pane, size, index, skipLayout);\r\n }\r\n getViewSize(index) {\r\n return this.splitview.getViewSize(index);\r\n }\r\n getPanes() {\r\n return this.splitview.getViews();\r\n }\r\n removePane(index, options = { skipDispose: false }) {\r\n const paneItem = this.paneItems.splice(index, 1)[0];\r\n this.splitview.removeView(index);\r\n if (!options.skipDispose) {\r\n paneItem.disposable.dispose();\r\n paneItem.pane.dispose();\r\n }\r\n return paneItem;\r\n }\r\n moveView(from, to) {\r\n if (from === to) {\r\n return;\r\n }\r\n const view = this.removePane(from, { skipDispose: true });\r\n this.skipAnimation = true;\r\n try {\r\n this.addPane(view.pane, view.pane.size, to, false);\r\n }\r\n finally {\r\n this.skipAnimation = false;\r\n }\r\n }\r\n layout(size, orthogonalSize) {\r\n this.splitview.layout(size, orthogonalSize);\r\n }\r\n setupAnimation() {\r\n if (this.skipAnimation) {\r\n return;\r\n }\r\n if (this.animationTimer) {\r\n clearTimeout(this.animationTimer);\r\n this.animationTimer = undefined;\r\n }\r\n addClasses(this.element, 'animated');\r\n this.animationTimer = setTimeout(() => {\r\n this.animationTimer = undefined;\r\n removeClasses(this.element, 'animated');\r\n }, 200);\r\n }\r\n dispose() {\r\n super.dispose();\r\n if (this.animationTimer) {\r\n clearTimeout(this.animationTimer);\r\n this.animationTimer = undefined;\r\n }\r\n this.paneItems.forEach((paneItem) => {\r\n paneItem.disposable.dispose();\r\n paneItem.pane.dispose();\r\n });\r\n this.paneItems = [];\r\n this.splitview.dispose();\r\n this.element.remove();\r\n }\r\n}\r\n//# sourceMappingURL=paneview.js.map","/*---------------------------------------------------------------------------------------------\r\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\r\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Orientation } from '../splitview/splitview';\r\nimport { Emitter } from '../events';\r\nexport class LeafNode {\r\n get minimumWidth() {\r\n return this.view.minimumWidth;\r\n }\r\n get maximumWidth() {\r\n return this.view.maximumWidth;\r\n }\r\n get minimumHeight() {\r\n return this.view.minimumHeight;\r\n }\r\n get maximumHeight() {\r\n return this.view.maximumHeight;\r\n }\r\n get priority() {\r\n return this.view.priority;\r\n }\r\n get snap() {\r\n return this.view.snap;\r\n }\r\n get minimumSize() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.minimumHeight\r\n : this.minimumWidth;\r\n }\r\n get maximumSize() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.maximumHeight\r\n : this.maximumWidth;\r\n }\r\n get minimumOrthogonalSize() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.minimumWidth\r\n : this.minimumHeight;\r\n }\r\n get maximumOrthogonalSize() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.maximumWidth\r\n : this.maximumHeight;\r\n }\r\n get orthogonalSize() {\r\n return this._orthogonalSize;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n get element() {\r\n return this.view.element;\r\n }\r\n get width() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.orthogonalSize\r\n : this.size;\r\n }\r\n get height() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.size\r\n : this.orthogonalSize;\r\n }\r\n constructor(view, orientation, orthogonalSize, size = 0) {\r\n this.view = view;\r\n this.orientation = orientation;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._orthogonalSize = orthogonalSize;\r\n this._size = size;\r\n this._disposable = this.view.onDidChange((event) => {\r\n if (event) {\r\n this._onDidChange.fire({\r\n size: this.orientation === Orientation.VERTICAL\r\n ? event.width\r\n : event.height,\r\n orthogonalSize: this.orientation === Orientation.VERTICAL\r\n ? event.height\r\n : event.width,\r\n });\r\n }\r\n else {\r\n this._onDidChange.fire({});\r\n }\r\n });\r\n }\r\n setVisible(visible) {\r\n if (this.view.setVisible) {\r\n this.view.setVisible(visible);\r\n this._onDidChange.fire({});\r\n }\r\n }\r\n layout(size, orthogonalSize) {\r\n this._size = size;\r\n this._orthogonalSize = orthogonalSize;\r\n this.view.layout(this.width, this.height);\r\n }\r\n dispose() {\r\n this._onDidChange.dispose();\r\n this._disposable.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=leafNode.js.map","/*---------------------------------------------------------------------------------------------\r\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\r\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Splitview, Orientation, LayoutPriority, } from '../splitview/splitview';\r\nimport { Emitter, Event } from '../events';\r\nimport { LeafNode } from './leafNode';\r\nimport { CompositeDisposable, Disposable } from '../lifecycle';\r\nexport class BranchNode extends CompositeDisposable {\r\n get width() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.size\r\n : this.orthogonalSize;\r\n }\r\n get height() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.orthogonalSize\r\n : this.size;\r\n }\r\n get minimumSize() {\r\n return this.children.length === 0\r\n ? 0\r\n : Math.max(...this.children.map((c) => c.minimumOrthogonalSize));\r\n }\r\n get maximumSize() {\r\n return Math.min(...this.children.map((c) => c.maximumOrthogonalSize));\r\n }\r\n get minimumOrthogonalSize() {\r\n return this.splitview.minimumSize;\r\n }\r\n get maximumOrthogonalSize() {\r\n return this.splitview.maximumSize;\r\n }\r\n get orthogonalSize() {\r\n return this._orthogonalSize;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n get minimumWidth() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.minimumOrthogonalSize\r\n : this.minimumSize;\r\n }\r\n get minimumHeight() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.minimumSize\r\n : this.minimumOrthogonalSize;\r\n }\r\n get maximumWidth() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.maximumOrthogonalSize\r\n : this.maximumSize;\r\n }\r\n get maximumHeight() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.maximumSize\r\n : this.maximumOrthogonalSize;\r\n }\r\n get priority() {\r\n if (this.children.length === 0) {\r\n return LayoutPriority.Normal;\r\n }\r\n const priorities = this.children.map((c) => typeof c.priority === 'undefined'\r\n ? LayoutPriority.Normal\r\n : c.priority);\r\n if (priorities.some((p) => p === LayoutPriority.High)) {\r\n return LayoutPriority.High;\r\n }\r\n else if (priorities.some((p) => p === LayoutPriority.Low)) {\r\n return LayoutPriority.Low;\r\n }\r\n return LayoutPriority.Normal;\r\n }\r\n constructor(orientation, proportionalLayout, styles, size, orthogonalSize, childDescriptors) {\r\n super();\r\n this.orientation = orientation;\r\n this.proportionalLayout = proportionalLayout;\r\n this.styles = styles;\r\n this._childrenDisposable = Disposable.NONE;\r\n this.children = [];\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._orthogonalSize = orthogonalSize;\r\n this._size = size;\r\n this.element = document.createElement('div');\r\n this.element.className = 'branch-node';\r\n if (!childDescriptors) {\r\n this.splitview = new Splitview(this.element, {\r\n orientation: this.orientation,\r\n proportionalLayout,\r\n styles,\r\n });\r\n this.splitview.layout(this.size, this.orthogonalSize);\r\n }\r\n else {\r\n const descriptor = {\r\n views: childDescriptors.map((childDescriptor) => {\r\n return {\r\n view: childDescriptor.node,\r\n size: childDescriptor.node.size,\r\n visible: childDescriptor.node instanceof LeafNode &&\r\n childDescriptor.visible !== undefined\r\n ? childDescriptor.visible\r\n : true,\r\n };\r\n }),\r\n size: this.orthogonalSize,\r\n };\r\n this.children = childDescriptors.map((c) => c.node);\r\n this.splitview = new Splitview(this.element, {\r\n orientation: this.orientation,\r\n descriptor,\r\n proportionalLayout,\r\n styles,\r\n });\r\n }\r\n this.addDisposables(this._onDidChange, this.splitview.onDidSashEnd(() => {\r\n this._onDidChange.fire({});\r\n }));\r\n this.setupChildrenEvents();\r\n }\r\n setVisible(visible) {\r\n for (const child of this.children) {\r\n child.setVisible(visible);\r\n }\r\n }\r\n isChildVisible(index) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n return this.splitview.isViewVisible(index);\r\n }\r\n setChildVisible(index, visible) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n if (this.splitview.isViewVisible(index) === visible) {\r\n return;\r\n }\r\n this.splitview.setViewVisible(index, visible);\r\n }\r\n moveChild(from, to) {\r\n if (from === to) {\r\n return;\r\n }\r\n if (from < 0 || from >= this.children.length) {\r\n throw new Error('Invalid from index');\r\n }\r\n if (from < to) {\r\n to--;\r\n }\r\n this.splitview.moveView(from, to);\r\n const child = this._removeChild(from);\r\n this._addChild(child, to);\r\n }\r\n getChildSize(index) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n return this.splitview.getViewSize(index);\r\n }\r\n resizeChild(index, size) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n this.splitview.resizeView(index, size);\r\n }\r\n layout(size, orthogonalSize) {\r\n this._size = orthogonalSize;\r\n this._orthogonalSize = size;\r\n this.splitview.layout(orthogonalSize, size);\r\n }\r\n addChild(node, size, index, skipLayout) {\r\n if (index < 0 || index > this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n this.splitview.addView(node, size, index, skipLayout);\r\n this._addChild(node, index);\r\n }\r\n getChildCachedVisibleSize(index) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n return this.splitview.getViewCachedVisibleSize(index);\r\n }\r\n removeChild(index, sizing) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n this.splitview.removeView(index, sizing);\r\n return this._removeChild(index);\r\n }\r\n _addChild(node, index) {\r\n this.children.splice(index, 0, node);\r\n this.setupChildrenEvents();\r\n }\r\n _removeChild(index) {\r\n const [child] = this.children.splice(index, 1);\r\n this.setupChildrenEvents();\r\n return child;\r\n }\r\n setupChildrenEvents() {\r\n this._childrenDisposable.dispose();\r\n this._childrenDisposable = Event.any(...this.children.map((c) => c.onDidChange))((e) => {\r\n /**\r\n * indicate a change has occured to allows any re-rendering but don't bubble\r\n * event because that was specific to this branch\r\n */\r\n this._onDidChange.fire({ size: e.orthogonalSize });\r\n });\r\n }\r\n dispose() {\r\n this._childrenDisposable.dispose();\r\n this.splitview.dispose();\r\n this.children.forEach((child) => child.dispose());\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=branchNode.js.map","/*---------------------------------------------------------------------------------------------\r\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\r\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Orientation, Sizing, } from '../splitview/splitview';\r\nimport { tail } from '../array';\r\nimport { LeafNode } from './leafNode';\r\nimport { BranchNode } from './branchNode';\r\nimport { Emitter } from '../events';\r\nimport { MutableDisposable } from '../lifecycle';\r\nfunction findLeaf(candiateNode, last) {\r\n if (candiateNode instanceof LeafNode) {\r\n return candiateNode;\r\n }\r\n if (candiateNode instanceof BranchNode) {\r\n return findLeaf(candiateNode.children[last ? candiateNode.children.length - 1 : 0], last);\r\n }\r\n throw new Error('invalid node');\r\n}\r\nfunction flipNode(node, size, orthogonalSize) {\r\n if (node instanceof BranchNode) {\r\n const result = new BranchNode(orthogonal(node.orientation), node.proportionalLayout, node.styles, size, orthogonalSize);\r\n let totalSize = 0;\r\n for (let i = node.children.length - 1; i >= 0; i--) {\r\n const child = node.children[i];\r\n const childSize = child instanceof BranchNode ? child.orthogonalSize : child.size;\r\n let newSize = node.size === 0\r\n ? 0\r\n : Math.round((size * childSize) / node.size);\r\n totalSize += newSize;\r\n // The last view to add should adjust to rounding errors\r\n if (i === 0) {\r\n newSize += size - totalSize;\r\n }\r\n result.addChild(flipNode(child, orthogonalSize, newSize), newSize, 0, true);\r\n }\r\n return result;\r\n }\r\n else {\r\n return new LeafNode(node.view, orthogonal(node.orientation), orthogonalSize);\r\n }\r\n}\r\nexport function indexInParent(element) {\r\n const parentElement = element.parentElement;\r\n if (!parentElement) {\r\n throw new Error('Invalid grid element');\r\n }\r\n let el = parentElement.firstElementChild;\r\n let index = 0;\r\n while (el !== element && el !== parentElement.lastElementChild && el) {\r\n el = el.nextElementSibling;\r\n index++;\r\n }\r\n return index;\r\n}\r\n/**\r\n * Find the grid location of a specific DOM element by traversing the parent\r\n * chain and finding each child index on the way.\r\n *\r\n * This will break as soon as DOM structures of the Splitview or Gridview change.\r\n */\r\nexport function getGridLocation(element) {\r\n const parentElement = element.parentElement;\r\n if (!parentElement) {\r\n throw new Error('Invalid grid element');\r\n }\r\n if (/\\bgrid-view\\b/.test(parentElement.className)) {\r\n return [];\r\n }\r\n const index = indexInParent(parentElement);\r\n const ancestor = parentElement.parentElement.parentElement.parentElement;\r\n return [...getGridLocation(ancestor), index];\r\n}\r\nexport function getRelativeLocation(rootOrientation, location, direction) {\r\n const orientation = getLocationOrientation(rootOrientation, location);\r\n const directionOrientation = getDirectionOrientation(direction);\r\n if (orientation === directionOrientation) {\r\n const [rest, _index] = tail(location);\r\n let index = _index;\r\n if (direction === 'right' || direction === 'bottom') {\r\n index += 1;\r\n }\r\n return [...rest, index];\r\n }\r\n else {\r\n const index = direction === 'right' || direction === 'bottom' ? 1 : 0;\r\n return [...location, index];\r\n }\r\n}\r\nexport function getDirectionOrientation(direction) {\r\n return direction === 'top' || direction === 'bottom'\r\n ? Orientation.VERTICAL\r\n : Orientation.HORIZONTAL;\r\n}\r\nexport function getLocationOrientation(rootOrientation, location) {\r\n return location.length % 2 === 0\r\n ? orthogonal(rootOrientation)\r\n : rootOrientation;\r\n}\r\nexport const orthogonal = (orientation) => orientation === Orientation.HORIZONTAL\r\n ? Orientation.VERTICAL\r\n : Orientation.HORIZONTAL;\r\nexport function isGridBranchNode(node) {\r\n return !!node.children;\r\n}\r\nconst serializeBranchNode = (node, orientation) => {\r\n const size = orientation === Orientation.VERTICAL ? node.box.width : node.box.height;\r\n if (!isGridBranchNode(node)) {\r\n if (typeof node.cachedVisibleSize === 'number') {\r\n return {\r\n type: 'leaf',\r\n data: node.view.toJSON(),\r\n size: node.cachedVisibleSize,\r\n visible: false,\r\n };\r\n }\r\n return { type: 'leaf', data: node.view.toJSON(), size };\r\n }\r\n return {\r\n type: 'branch',\r\n data: node.children.map((c) => serializeBranchNode(c, orthogonal(orientation))),\r\n size,\r\n };\r\n};\r\nexport class Gridview {\r\n get length() {\r\n return this._root ? this._root.children.length : 0;\r\n }\r\n get orientation() {\r\n return this.root.orientation;\r\n }\r\n set orientation(orientation) {\r\n if (this.root.orientation === orientation) {\r\n return;\r\n }\r\n const { size, orthogonalSize } = this.root;\r\n this.root = flipNode(this.root, orthogonalSize, size);\r\n this.root.layout(size, orthogonalSize);\r\n }\r\n get width() {\r\n return this.root.width;\r\n }\r\n get height() {\r\n return this.root.height;\r\n }\r\n get minimumWidth() {\r\n return this.root.minimumWidth;\r\n }\r\n get minimumHeight() {\r\n return this.root.minimumHeight;\r\n }\r\n get maximumWidth() {\r\n return this.root.maximumHeight;\r\n }\r\n get maximumHeight() {\r\n return this.root.maximumHeight;\r\n }\r\n serialize() {\r\n const root = serializeBranchNode(this.getView(), this.orientation);\r\n return {\r\n root,\r\n width: this.width,\r\n height: this.height,\r\n orientation: this.orientation,\r\n };\r\n }\r\n dispose() {\r\n this.disposable.dispose();\r\n this._onDidChange.dispose();\r\n this.root.dispose();\r\n this.element.remove();\r\n }\r\n clear() {\r\n const orientation = this.root.orientation;\r\n this.root = new BranchNode(orientation, this.proportionalLayout, this.styles, this.root.size, this.root.orthogonalSize);\r\n }\r\n deserialize(json, deserializer) {\r\n const orientation = json.orientation;\r\n const height = orientation === Orientation.VERTICAL ? json.height : json.width;\r\n this._deserialize(json.root, orientation, deserializer, height);\r\n }\r\n _deserialize(root, orientation, deserializer, orthogonalSize) {\r\n this.root = this._deserializeNode(root, orientation, deserializer, orthogonalSize);\r\n }\r\n _deserializeNode(node, orientation, deserializer, orthogonalSize) {\r\n let result;\r\n if (node.type === 'branch') {\r\n const serializedChildren = node.data;\r\n const children = serializedChildren.map((serializedChild) => {\r\n return {\r\n node: this._deserializeNode(serializedChild, orthogonal(orientation), deserializer, node.size),\r\n visible: serializedChild.visible,\r\n };\r\n });\r\n result = new BranchNode(orientation, this.proportionalLayout, this.styles, node.size, // <- orthogonal size - flips at each depth\r\n orthogonalSize, // <- size - flips at each depth\r\n children);\r\n }\r\n else {\r\n result = new LeafNode(deserializer.fromJSON(node), orientation, orthogonalSize, node.size);\r\n }\r\n return result;\r\n }\r\n get root() {\r\n return this._root;\r\n }\r\n set root(root) {\r\n const oldRoot = this._root;\r\n if (oldRoot) {\r\n oldRoot.dispose();\r\n this.element.removeChild(oldRoot.element);\r\n }\r\n this._root = root;\r\n this.element.appendChild(this._root.element);\r\n this.disposable.value = this._root.onDidChange((e) => {\r\n this._onDidChange.fire(e);\r\n });\r\n }\r\n /**\r\n * If the root is orientated as a VERTICAL node then nest the existing root within a new HORIZIONTAL root node\r\n * If the root is orientated as a HORIZONTAL node then nest the existing root within a new VERITCAL root node\r\n */\r\n insertOrthogonalSplitviewAtRoot() {\r\n if (!this._root) {\r\n return;\r\n }\r\n const oldRoot = this.root;\r\n oldRoot.element.remove();\r\n this._root = new BranchNode(orthogonal(oldRoot.orientation), this.proportionalLayout, this.styles, this.root.orthogonalSize, this.root.size);\r\n if (oldRoot.children.length === 0) {\r\n // no data so no need to add anything back in\r\n }\r\n else if (oldRoot.children.length === 1) {\r\n // can remove one level of redundant branching if there is only a single child\r\n const childReference = oldRoot.children[0];\r\n const child = oldRoot.removeChild(0); // remove to prevent disposal when disposing of unwanted root\r\n child.dispose();\r\n oldRoot.dispose();\r\n this._root.addChild(\r\n /**\r\n * the child node will have the same orientation as the new root since\r\n * we are removing the inbetween node.\r\n * the entire 'tree' must be flipped recursively to ensure that the orientation\r\n * flips at each level\r\n */\r\n flipNode(childReference, childReference.orthogonalSize, childReference.size), Sizing.Distribute, 0);\r\n }\r\n else {\r\n this._root.addChild(oldRoot, Sizing.Distribute, 0);\r\n }\r\n this.element.appendChild(this._root.element);\r\n this.disposable.value = this._root.onDidChange((e) => {\r\n this._onDidChange.fire(e);\r\n });\r\n }\r\n next(location) {\r\n return this.progmaticSelect(location);\r\n }\r\n previous(location) {\r\n return this.progmaticSelect(location, true);\r\n }\r\n getView(location) {\r\n const node = location ? this.getNode(location)[1] : this.root;\r\n return this._getViews(node, this.orientation);\r\n }\r\n _getViews(node, orientation, cachedVisibleSize) {\r\n const box = { height: node.height, width: node.width };\r\n if (node instanceof LeafNode) {\r\n return { box, view: node.view, cachedVisibleSize };\r\n }\r\n const children = [];\r\n for (let i = 0; i < node.children.length; i++) {\r\n const child = node.children[i];\r\n const nodeCachedVisibleSize = node.getChildCachedVisibleSize(i);\r\n children.push(this._getViews(child, orthogonal(orientation), nodeCachedVisibleSize));\r\n }\r\n return { box, children };\r\n }\r\n progmaticSelect(location, reverse = false) {\r\n const [path, node] = this.getNode(location);\r\n if (!(node instanceof LeafNode)) {\r\n throw new Error('invalid location');\r\n }\r\n for (let i = path.length - 1; i > -1; i--) {\r\n const n = path[i];\r\n const l = location[i] || 0;\r\n const canProgressInCurrentLevel = reverse\r\n ? l - 1 > -1\r\n : l + 1 < n.children.length;\r\n if (canProgressInCurrentLevel) {\r\n return findLeaf(n.children[reverse ? l - 1 : l + 1], reverse);\r\n }\r\n }\r\n return findLeaf(this.root, reverse);\r\n }\r\n constructor(proportionalLayout, styles, orientation) {\r\n this.proportionalLayout = proportionalLayout;\r\n this.styles = styles;\r\n this.disposable = new MutableDisposable();\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this.element = document.createElement('div');\r\n this.element.className = 'grid-view';\r\n this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0);\r\n }\r\n isViewVisible(location) {\r\n const [rest, index] = tail(location);\r\n const [, parent] = this.getNode(rest);\r\n if (!(parent instanceof BranchNode)) {\r\n throw new Error('Invalid from location');\r\n }\r\n return parent.isChildVisible(index);\r\n }\r\n setViewVisible(location, visible) {\r\n const [rest, index] = tail(location);\r\n const [, parent] = this.getNode(rest);\r\n if (!(parent instanceof BranchNode)) {\r\n throw new Error('Invalid from location');\r\n }\r\n parent.setChildVisible(index, visible);\r\n }\r\n moveView(parentLocation, from, to) {\r\n const [, parent] = this.getNode(parentLocation);\r\n if (!(parent instanceof BranchNode)) {\r\n throw new Error('Invalid location');\r\n }\r\n parent.moveChild(from, to);\r\n }\r\n addView(view, size, location) {\r\n const [rest, index] = tail(location);\r\n const [pathToParent, parent] = this.getNode(rest);\r\n if (parent instanceof BranchNode) {\r\n const node = new LeafNode(view, orthogonal(parent.orientation), parent.orthogonalSize);\r\n parent.addChild(node, size, index);\r\n }\r\n else {\r\n const [grandParent, ..._] = [...pathToParent].reverse();\r\n const [parentIndex, ...__] = [...rest].reverse();\r\n let newSiblingSize = 0;\r\n const newSiblingCachedVisibleSize = grandParent.getChildCachedVisibleSize(parentIndex);\r\n if (typeof newSiblingCachedVisibleSize === 'number') {\r\n newSiblingSize = Sizing.Invisible(newSiblingCachedVisibleSize);\r\n }\r\n const child = grandParent.removeChild(parentIndex);\r\n child.dispose();\r\n const newParent = new BranchNode(parent.orientation, this.proportionalLayout, this.styles, parent.size, parent.orthogonalSize);\r\n grandParent.addChild(newParent, parent.size, parentIndex);\r\n const newSibling = new LeafNode(parent.view, grandParent.orientation, parent.size);\r\n newParent.addChild(newSibling, newSiblingSize, 0);\r\n if (typeof size !== 'number' && size.type === 'split') {\r\n size = { type: 'split', index: 0 };\r\n }\r\n const node = new LeafNode(view, grandParent.orientation, parent.size);\r\n newParent.addChild(node, size, index);\r\n }\r\n }\r\n remove(view, sizing) {\r\n const location = getGridLocation(view.element);\r\n return this.removeView(location, sizing);\r\n }\r\n removeView(location, sizing) {\r\n const [rest, index] = tail(location);\r\n const [pathToParent, parent] = this.getNode(rest);\r\n if (!(parent instanceof BranchNode)) {\r\n throw new Error('Invalid location');\r\n }\r\n const nodeToRemove = parent.children[index];\r\n if (!(nodeToRemove instanceof LeafNode)) {\r\n throw new Error('Invalid location');\r\n }\r\n parent.removeChild(index, sizing);\r\n nodeToRemove.dispose();\r\n if (parent.children.length !== 1) {\r\n return nodeToRemove.view;\r\n }\r\n // if the parent has only one child and we know the parent is a BranchNode we can make the tree\r\n // more efficiently spaced by replacing the parent BranchNode with the child.\r\n // if that child is a LeafNode then we simply replace the BranchNode with the child otherwise if the child\r\n // is a BranchNode too we should spread it's children into the grandparent.\r\n // refer to the remaining child as the sibling\r\n const sibling = parent.children[0];\r\n if (pathToParent.length === 0) {\r\n // if the parent is root\r\n if (sibling instanceof LeafNode) {\r\n // if the sibling is a leaf node no action is required\r\n return nodeToRemove.view;\r\n }\r\n // otherwise the sibling is a branch node. since the parent is the root and the root has only one child\r\n // which is a branch node we can just set this branch node to be the new root node\r\n // for good housekeeping we'll removing the sibling from it's existing tree\r\n parent.removeChild(0, sizing);\r\n // and set that sibling node to be root\r\n this.root = sibling;\r\n return nodeToRemove.view;\r\n }\r\n // otherwise the parent is apart of a large sub-tree\r\n const [grandParent, ..._] = [...pathToParent].reverse();\r\n const [parentIndex, ...__] = [...rest].reverse();\r\n const isSiblingVisible = parent.isChildVisible(0);\r\n // either way we need to remove the sibling from it's existing tree\r\n parent.removeChild(0, sizing);\r\n // note the sizes of all of the grandparents children\r\n const sizes = grandParent.children.map((_size, i) => grandParent.getChildSize(i));\r\n // remove the parent from the grandparent since we are moving the sibling to take the parents place\r\n // this parent is no longer used and can be disposed of\r\n grandParent.removeChild(parentIndex, sizing).dispose();\r\n if (sibling instanceof BranchNode) {\r\n // replace the parent with the siblings children\r\n sizes.splice(parentIndex, 1, ...sibling.children.map((c) => c.size));\r\n // and add those siblings to the grandparent\r\n for (let i = 0; i < sibling.children.length; i++) {\r\n const child = sibling.children[i];\r\n grandParent.addChild(child, child.size, parentIndex + i);\r\n }\r\n /**\r\n * clean down the branch node since we need to dipose of it and\r\n * when .dispose() it called on a branch it will dispose of any\r\n * views it is holding onto.\r\n */\r\n while (sibling.children.length > 0) {\r\n sibling.removeChild(0);\r\n }\r\n }\r\n else {\r\n // otherwise create a new leaf node and add that to the grandparent\r\n const newSibling = new LeafNode(sibling.view, orthogonal(sibling.orientation), sibling.size);\r\n const siblingSizing = isSiblingVisible\r\n ? sibling.orthogonalSize\r\n : Sizing.Invisible(sibling.orthogonalSize);\r\n grandParent.addChild(newSibling, siblingSizing, parentIndex);\r\n }\r\n // the containing node of the sibling is no longer required and can be disposed of\r\n sibling.dispose();\r\n // resize everything\r\n for (let i = 0; i < sizes.length; i++) {\r\n grandParent.resizeChild(i, sizes[i]);\r\n }\r\n return nodeToRemove.view;\r\n }\r\n layout(width, height) {\r\n const [size, orthogonalSize] = this.root.orientation === Orientation.HORIZONTAL\r\n ? [height, width]\r\n : [width, height];\r\n this.root.layout(size, orthogonalSize);\r\n }\r\n getNode(location, node = this.root, path = []) {\r\n if (location.length === 0) {\r\n return [path, node];\r\n }\r\n if (!(node instanceof BranchNode)) {\r\n throw new Error('Invalid location');\r\n }\r\n const [index, ...rest] = location;\r\n if (index < 0 || index >= node.children.length) {\r\n throw new Error('Invalid location');\r\n }\r\n const child = node.children[index];\r\n path.push(node);\r\n return this.getNode(rest, child, path);\r\n }\r\n}\r\n//# sourceMappingURL=gridview.js.map","import { Emitter } from '../events';\r\nexport class SplitviewApi {\r\n get minimumSize() {\r\n return this.component.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.component.maximumSize;\r\n }\r\n get height() {\r\n return this.component.height;\r\n }\r\n get width() {\r\n return this.component.width;\r\n }\r\n get length() {\r\n return this.component.length;\r\n }\r\n get orientation() {\r\n return this.component.orientation;\r\n }\r\n get panels() {\r\n return this.component.panels;\r\n }\r\n get onDidLayoutFromJSON() {\r\n return this.component.onDidLayoutFromJSON;\r\n }\r\n get onDidLayoutChange() {\r\n return this.component.onDidLayoutChange;\r\n }\r\n get onDidAddView() {\r\n return this.component.onDidAddView;\r\n }\r\n get onDidRemoveView() {\r\n return this.component.onDidRemoveView;\r\n }\r\n constructor(component) {\r\n this.component = component;\r\n }\r\n updateOptions(options) {\r\n this.component.updateOptions(options);\r\n }\r\n removePanel(panel, sizing) {\r\n this.component.removePanel(panel, sizing);\r\n }\r\n focus() {\r\n this.component.focus();\r\n }\r\n getPanel(id) {\r\n return this.component.getPanel(id);\r\n }\r\n layout(width, height) {\r\n return this.component.layout(width, height);\r\n }\r\n addPanel(options) {\r\n return this.component.addPanel(options);\r\n }\r\n movePanel(from, to) {\r\n this.component.movePanel(from, to);\r\n }\r\n fromJSON(data) {\r\n this.component.fromJSON(data);\r\n }\r\n toJSON() {\r\n return this.component.toJSON();\r\n }\r\n clear() {\r\n this.component.clear();\r\n }\r\n}\r\nexport class PaneviewApi {\r\n get minimumSize() {\r\n return this.component.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.component.maximumSize;\r\n }\r\n get height() {\r\n return this.component.height;\r\n }\r\n get width() {\r\n return this.component.width;\r\n }\r\n get panels() {\r\n return this.component.panels;\r\n }\r\n get onDidLayoutChange() {\r\n return this.component.onDidLayoutChange;\r\n }\r\n get onDidLayoutFromJSON() {\r\n return this.component.onDidLayoutFromJSON;\r\n }\r\n get onDidAddView() {\r\n return this.component.onDidAddView;\r\n }\r\n get onDidRemoveView() {\r\n return this.component.onDidRemoveView;\r\n }\r\n get onDidDrop() {\r\n const emitter = new Emitter();\r\n const disposable = this.component.onDidDrop((e) => {\r\n emitter.fire(Object.assign(Object.assign({}, e), { api: this }));\r\n });\r\n emitter.dispose = () => {\r\n disposable.dispose();\r\n emitter.dispose();\r\n };\r\n return emitter.event;\r\n }\r\n constructor(component) {\r\n this.component = component;\r\n }\r\n removePanel(panel) {\r\n this.component.removePanel(panel);\r\n }\r\n getPanel(id) {\r\n return this.component.getPanel(id);\r\n }\r\n movePanel(from, to) {\r\n this.component.movePanel(from, to);\r\n }\r\n focus() {\r\n this.component.focus();\r\n }\r\n layout(width, height) {\r\n this.component.layout(width, height);\r\n }\r\n addPanel(options) {\r\n return this.component.addPanel(options);\r\n }\r\n fromJSON(data) {\r\n this.component.fromJSON(data);\r\n }\r\n toJSON() {\r\n return this.component.toJSON();\r\n }\r\n clear() {\r\n this.component.clear();\r\n }\r\n}\r\nexport class GridviewApi {\r\n get minimumHeight() {\r\n return this.component.minimumHeight;\r\n }\r\n get maximumHeight() {\r\n return this.component.maximumHeight;\r\n }\r\n get minimumWidth() {\r\n return this.component.minimumWidth;\r\n }\r\n get maximumWidth() {\r\n return this.component.maximumWidth;\r\n }\r\n get width() {\r\n return this.component.width;\r\n }\r\n get height() {\r\n return this.component.height;\r\n }\r\n get onDidLayoutChange() {\r\n return this.component.onDidLayoutChange;\r\n }\r\n get onDidAddPanel() {\r\n return this.component.onDidAddGroup;\r\n }\r\n get onDidRemovePanel() {\r\n return this.component.onDidRemoveGroup;\r\n }\r\n get onDidActivePanelChange() {\r\n return this.component.onDidActiveGroupChange;\r\n }\r\n get onDidLayoutFromJSON() {\r\n return this.component.onDidLayoutFromJSON;\r\n }\r\n get panels() {\r\n return this.component.groups;\r\n }\r\n get orientation() {\r\n return this.component.orientation;\r\n }\r\n set orientation(value) {\r\n this.component.updateOptions({ orientation: value });\r\n }\r\n constructor(component) {\r\n this.component = component;\r\n }\r\n focus() {\r\n this.component.focus();\r\n }\r\n layout(width, height, force = false) {\r\n this.component.layout(width, height, force);\r\n }\r\n addPanel(options) {\r\n return this.component.addPanel(options);\r\n }\r\n removePanel(panel, sizing) {\r\n this.component.removePanel(panel, sizing);\r\n }\r\n movePanel(panel, options) {\r\n this.component.movePanel(panel, options);\r\n }\r\n getPanel(id) {\r\n return this.component.getPanel(id);\r\n }\r\n fromJSON(data) {\r\n return this.component.fromJSON(data);\r\n }\r\n toJSON() {\r\n return this.component.toJSON();\r\n }\r\n clear() {\r\n this.component.clear();\r\n }\r\n}\r\nexport class DockviewApi {\r\n get id() {\r\n return this.component.id;\r\n }\r\n get width() {\r\n return this.component.width;\r\n }\r\n get height() {\r\n return this.component.height;\r\n }\r\n get minimumHeight() {\r\n return this.component.minimumHeight;\r\n }\r\n get maximumHeight() {\r\n return this.component.maximumHeight;\r\n }\r\n get minimumWidth() {\r\n return this.component.minimumWidth;\r\n }\r\n get maximumWidth() {\r\n return this.component.maximumWidth;\r\n }\r\n get size() {\r\n return this.component.size;\r\n }\r\n get totalPanels() {\r\n return this.component.totalPanels;\r\n }\r\n get onDidActiveGroupChange() {\r\n return this.component.onDidActiveGroupChange;\r\n }\r\n get onDidAddGroup() {\r\n return this.component.onDidAddGroup;\r\n }\r\n get onDidRemoveGroup() {\r\n return this.component.onDidRemoveGroup;\r\n }\r\n get onDidActivePanelChange() {\r\n return this.component.onDidActivePanelChange;\r\n }\r\n get onDidAddPanel() {\r\n return this.component.onDidAddPanel;\r\n }\r\n get onDidRemovePanel() {\r\n return this.component.onDidRemovePanel;\r\n }\r\n get onDidLayoutFromJSON() {\r\n return this.component.onDidLayoutFromJSON;\r\n }\r\n get onDidLayoutChange() {\r\n return this.component.onDidLayoutChange;\r\n }\r\n get onDidDrop() {\r\n return this.component.onDidDrop;\r\n }\r\n get onWillDragGroup() {\r\n return this.component.onWillDragGroup;\r\n }\r\n get onWillDragPanel() {\r\n return this.component.onWillDragPanel;\r\n }\r\n get panels() {\r\n return this.component.panels;\r\n }\r\n get groups() {\r\n return this.component.groups;\r\n }\r\n get activePanel() {\r\n return this.component.activePanel;\r\n }\r\n get activeGroup() {\r\n return this.component.activeGroup;\r\n }\r\n constructor(component) {\r\n this.component = component;\r\n }\r\n focus() {\r\n this.component.focus();\r\n }\r\n getPanel(id) {\r\n return this.component.getGroupPanel(id);\r\n }\r\n layout(width, height, force = false) {\r\n this.component.layout(width, height, force);\r\n }\r\n addPanel(options) {\r\n return this.component.addPanel(options);\r\n }\r\n removePanel(panel) {\r\n this.component.removePanel(panel);\r\n }\r\n addGroup(options) {\r\n return this.component.addGroup(options);\r\n }\r\n moveToNext(options) {\r\n this.component.moveToNext(options);\r\n }\r\n moveToPrevious(options) {\r\n this.component.moveToPrevious(options);\r\n }\r\n closeAllGroups() {\r\n return this.component.closeAllGroups();\r\n }\r\n removeGroup(group) {\r\n this.component.removeGroup(group);\r\n }\r\n getGroup(id) {\r\n return this.component.getPanel(id);\r\n }\r\n addFloatingGroup(item, coord) {\r\n return this.component.addFloatingGroup(item, coord);\r\n }\r\n fromJSON(data) {\r\n this.component.fromJSON(data);\r\n }\r\n toJSON() {\r\n return this.component.toJSON();\r\n }\r\n clear() {\r\n this.component.clear();\r\n }\r\n}\r\n//# sourceMappingURL=component.api.js.map","import { addDisposableListener } from '../events';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nexport class DragAndDropObserver extends CompositeDisposable {\r\n constructor(element, callbacks) {\r\n super();\r\n this.element = element;\r\n this.callbacks = callbacks;\r\n this.target = null;\r\n this.registerListeners();\r\n }\r\n registerListeners() {\r\n this.addDisposables(addDisposableListener(this.element, 'dragenter', (e) => {\r\n this.target = e.target;\r\n this.callbacks.onDragEnter(e);\r\n }, true));\r\n this.addDisposables(addDisposableListener(this.element, 'dragover', (e) => {\r\n e.preventDefault(); // needed so that the drop event fires (https://stackoverflow.com/questions/21339924/drop-event-not-firing-in-chrome)\r\n if (this.callbacks.onDragOver) {\r\n this.callbacks.onDragOver(e);\r\n }\r\n }, true));\r\n this.addDisposables(addDisposableListener(this.element, 'dragleave', (e) => {\r\n if (this.target === e.target) {\r\n this.target = null;\r\n this.callbacks.onDragLeave(e);\r\n }\r\n }));\r\n this.addDisposables(addDisposableListener(this.element, 'dragend', (e) => {\r\n this.target = null;\r\n this.callbacks.onDragEnd(e);\r\n }));\r\n this.addDisposables(addDisposableListener(this.element, 'drop', (e) => {\r\n this.callbacks.onDrop(e);\r\n }));\r\n }\r\n}\r\n//# sourceMappingURL=dnd.js.map","import { toggleClass } from '../dom';\r\nimport { Emitter } from '../events';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nimport { DragAndDropObserver } from './dnd';\r\nimport { clamp } from '../math';\r\nfunction numberOrFallback(maybeNumber, fallback) {\r\n return typeof maybeNumber === 'number' ? maybeNumber : fallback;\r\n}\r\nexport function directionToPosition(direction) {\r\n switch (direction) {\r\n case 'above':\r\n return 'top';\r\n case 'below':\r\n return 'bottom';\r\n case 'left':\r\n return 'left';\r\n case 'right':\r\n return 'right';\r\n case 'within':\r\n return 'center';\r\n default:\r\n throw new Error(`invalid direction '${direction}'`);\r\n }\r\n}\r\nexport function positionToDirection(position) {\r\n switch (position) {\r\n case 'top':\r\n return 'above';\r\n case 'bottom':\r\n return 'below';\r\n case 'left':\r\n return 'left';\r\n case 'right':\r\n return 'right';\r\n case 'center':\r\n return 'within';\r\n default:\r\n throw new Error(`invalid position '${position}'`);\r\n }\r\n}\r\nexport class Droptarget extends CompositeDisposable {\r\n get state() {\r\n return this._state;\r\n }\r\n constructor(element, options) {\r\n super();\r\n this.element = element;\r\n this.options = options;\r\n this._onDrop = new Emitter();\r\n this.onDrop = this._onDrop.event;\r\n // use a set to take advantage of #<set>.has\r\n this._acceptedTargetZonesSet = new Set(this.options.acceptedTargetZones);\r\n this.addDisposables(this._onDrop, new DragAndDropObserver(this.element, {\r\n onDragEnter: () => undefined,\r\n onDragOver: (e) => {\r\n if (this._acceptedTargetZonesSet.size === 0) {\r\n this.removeDropTarget();\r\n return;\r\n }\r\n const width = this.element.clientWidth;\r\n const height = this.element.clientHeight;\r\n if (width === 0 || height === 0) {\r\n return; // avoid div!0\r\n }\r\n const rect = e.currentTarget.getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n const y = e.clientY - rect.top;\r\n const quadrant = this.calculateQuadrant(this._acceptedTargetZonesSet, x, y, width, height);\r\n /**\r\n * If the event has already been used by another DropTarget instance\r\n * then don't show a second drop target, only one target should be\r\n * active at any one time\r\n */\r\n if (this.isAlreadyUsed(e) || quadrant === null) {\r\n // no drop target should be displayed\r\n this.removeDropTarget();\r\n return;\r\n }\r\n if (typeof this.options.canDisplayOverlay === 'boolean') {\r\n if (!this.options.canDisplayOverlay) {\r\n this.removeDropTarget();\r\n return;\r\n }\r\n }\r\n else if (!this.options.canDisplayOverlay(e, quadrant)) {\r\n this.removeDropTarget();\r\n return;\r\n }\r\n this.markAsUsed(e);\r\n if (!this.targetElement) {\r\n this.targetElement = document.createElement('div');\r\n this.targetElement.className = 'drop-target-dropzone';\r\n this.overlayElement = document.createElement('div');\r\n this.overlayElement.className = 'drop-target-selection';\r\n this._state = 'center';\r\n this.targetElement.appendChild(this.overlayElement);\r\n this.element.classList.add('drop-target');\r\n this.element.append(this.targetElement);\r\n }\r\n this.toggleClasses(quadrant, width, height);\r\n this.setState(quadrant);\r\n },\r\n onDragLeave: () => {\r\n this.removeDropTarget();\r\n },\r\n onDragEnd: () => {\r\n this.removeDropTarget();\r\n },\r\n onDrop: (e) => {\r\n e.preventDefault();\r\n const state = this._state;\r\n this.removeDropTarget();\r\n if (state) {\r\n // only stop the propagation of the event if we are dealing with it\r\n // which is only when the target has state\r\n e.stopPropagation();\r\n this._onDrop.fire({ position: state, nativeEvent: e });\r\n }\r\n },\r\n }));\r\n }\r\n setTargetZones(acceptedTargetZones) {\r\n this._acceptedTargetZonesSet = new Set(acceptedTargetZones);\r\n }\r\n dispose() {\r\n this.removeDropTarget();\r\n super.dispose();\r\n }\r\n /**\r\n * Add a property to the event object for other potential listeners to check\r\n */\r\n markAsUsed(event) {\r\n event[Droptarget.USED_EVENT_ID] = true;\r\n }\r\n /**\r\n * Check is the event has already been used by another instance od DropTarget\r\n */\r\n isAlreadyUsed(event) {\r\n const value = event[Droptarget.USED_EVENT_ID];\r\n return typeof value === 'boolean' && value;\r\n }\r\n toggleClasses(quadrant, width, height) {\r\n var _a, _b, _c, _d;\r\n if (!this.overlayElement) {\r\n return;\r\n }\r\n const isSmallX = width < 100;\r\n const isSmallY = height < 100;\r\n const isLeft = quadrant === 'left';\r\n const isRight = quadrant === 'right';\r\n const isTop = quadrant === 'top';\r\n const isBottom = quadrant === 'bottom';\r\n const rightClass = !isSmallX && isRight;\r\n const leftClass = !isSmallX && isLeft;\r\n const topClass = !isSmallY && isTop;\r\n const bottomClass = !isSmallY && isBottom;\r\n let size = 0.5;\r\n if (((_b = (_a = this.options.overlayModel) === null || _a === void 0 ? void 0 : _a.size) === null || _b === void 0 ? void 0 : _b.type) === 'percentage') {\r\n size = clamp(this.options.overlayModel.size.value, 0, 100) / 100;\r\n }\r\n if (((_d = (_c = this.options.overlayModel) === null || _c === void 0 ? void 0 : _c.size) === null || _d === void 0 ? void 0 : _d.type) === 'pixels') {\r\n if (rightClass || leftClass) {\r\n size =\r\n clamp(0, this.options.overlayModel.size.value, width) /\r\n width;\r\n }\r\n if (topClass || bottomClass) {\r\n size =\r\n clamp(0, this.options.overlayModel.size.value, height) /\r\n height;\r\n }\r\n }\r\n const translate = (1 - size) / 2;\r\n const scale = size;\r\n let transform;\r\n if (rightClass) {\r\n transform = `translateX(${100 * translate}%) scaleX(${scale})`;\r\n }\r\n else if (leftClass) {\r\n transform = `translateX(-${100 * translate}%) scaleX(${scale})`;\r\n }\r\n else if (topClass) {\r\n transform = `translateY(-${100 * translate}%) scaleY(${scale})`;\r\n }\r\n else if (bottomClass) {\r\n transform = `translateY(${100 * translate}%) scaleY(${scale})`;\r\n }\r\n else {\r\n transform = '';\r\n }\r\n this.overlayElement.style.transform = transform;\r\n toggleClass(this.overlayElement, 'small-right', isSmallX && isRight);\r\n toggleClass(this.overlayElement, 'small-left', isSmallX && isLeft);\r\n toggleClass(this.overlayElement, 'small-top', isSmallY && isTop);\r\n toggleClass(this.overlayElement, 'small-bottom', isSmallY && isBottom);\r\n }\r\n setState(quadrant) {\r\n switch (quadrant) {\r\n case 'top':\r\n this._state = 'top';\r\n break;\r\n case 'left':\r\n this._state = 'left';\r\n break;\r\n case 'bottom':\r\n this._state = 'bottom';\r\n break;\r\n case 'right':\r\n this._state = 'right';\r\n break;\r\n case 'center':\r\n this._state = 'center';\r\n break;\r\n }\r\n }\r\n calculateQuadrant(overlayType, x, y, width, height) {\r\n var _a, _b, _c, _d, _e, _f;\r\n const isPercentage = ((_a = this.options.overlayModel) === null || _a === void 0 ? void 0 : _a.activationSize) === undefined ||\r\n ((_c = (_b = this.options.overlayModel) === null || _b === void 0 ? void 0 : _b.activationSize) === null || _c === void 0 ? void 0 : _c.type) === 'percentage';\r\n const value = numberOrFallback((_f = (_e = (_d = this.options) === null || _d === void 0 ? void 0 : _d.overlayModel) === null || _e === void 0 ? void 0 : _e.activationSize) === null || _f === void 0 ? void 0 : _f.value, 20);\r\n if (isPercentage) {\r\n return calculateQuadrantAsPercentage(overlayType, x, y, width, height, value);\r\n }\r\n return calculateQuadrantAsPixels(overlayType, x, y, width, height, value);\r\n }\r\n removeDropTarget() {\r\n if (this.targetElement) {\r\n this._state = undefined;\r\n this.element.removeChild(this.targetElement);\r\n this.targetElement = undefined;\r\n this.overlayElement = undefined;\r\n this.element.classList.remove('drop-target');\r\n }\r\n }\r\n}\r\nDroptarget.USED_EVENT_ID = '__dockview_droptarget_event_is_used__';\r\nexport function calculateQuadrantAsPercentage(overlayType, x, y, width, height, threshold) {\r\n const xp = (100 * x) / width;\r\n const yp = (100 * y) / height;\r\n if (overlayType.has('left') && xp < threshold) {\r\n return 'left';\r\n }\r\n if (overlayType.has('right') && xp > 100 - threshold) {\r\n return 'right';\r\n }\r\n if (overlayType.has('top') && yp < threshold) {\r\n return 'top';\r\n }\r\n if (overlayType.has('bottom') && yp > 100 - threshold) {\r\n return 'bottom';\r\n }\r\n if (!overlayType.has('center')) {\r\n return null;\r\n }\r\n return 'center';\r\n}\r\nexport function calculateQuadrantAsPixels(overlayType, x, y, width, height, threshold) {\r\n if (overlayType.has('left') && x < threshold) {\r\n return 'left';\r\n }\r\n if (overlayType.has('right') && x > width - threshold) {\r\n return 'right';\r\n }\r\n if (overlayType.has('top') && y < threshold) {\r\n return 'top';\r\n }\r\n if (overlayType.has('bottom') && y > height - threshold) {\r\n return 'bottom';\r\n }\r\n if (!overlayType.has('center')) {\r\n return null;\r\n }\r\n return 'center';\r\n}\r\n//# sourceMappingURL=droptarget.js.map","import { CompositeDisposable, MutableDisposable, } from '../../../lifecycle';\r\nimport { Emitter } from '../../../events';\r\nimport { trackFocus } from '../../../dom';\r\nexport class ContentContainer extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor() {\r\n super();\r\n this.disposable = new MutableDisposable();\r\n this._onDidFocus = new Emitter();\r\n this.onDidFocus = this._onDidFocus.event;\r\n this._onDidBlur = new Emitter();\r\n this.onDidBlur = this._onDidBlur.event;\r\n this._element = document.createElement('div');\r\n this._element.className = 'content-container';\r\n this._element.tabIndex = -1;\r\n this.addDisposables(this._onDidFocus, this._onDidBlur);\r\n // for hosted containers\r\n // 1) register a drop target on the host\r\n // 2) register window dragStart events to disable pointer events\r\n // 3) register dragEnd events\r\n // 4) register mouseMove events (if no buttons are present we take this as a dragEnd event)\r\n }\r\n show() {\r\n this.element.style.display = '';\r\n }\r\n hide() {\r\n this.element.style.display = 'none';\r\n }\r\n openPanel(panel) {\r\n var _a;\r\n if (this.panel === panel) {\r\n return;\r\n }\r\n if (this.panel) {\r\n if ((_a = this.panel.view) === null || _a === void 0 ? void 0 : _a.content) {\r\n this._element.removeChild(this.panel.view.content.element);\r\n }\r\n this.panel = undefined;\r\n }\r\n this.panel = panel;\r\n const disposable = new CompositeDisposable();\r\n if (this.panel.view) {\r\n const _onDidFocus = this.panel.view.content.onDidFocus;\r\n const _onDidBlur = this.panel.view.content.onDidBlur;\r\n const focusTracker = trackFocus(this._element);\r\n disposable.addDisposables(focusTracker, focusTracker.onDidFocus(() => this._onDidFocus.fire()), focusTracker.onDidBlur(() => this._onDidBlur.fire()));\r\n if (_onDidFocus) {\r\n disposable.addDisposables(_onDidFocus(() => this._onDidFocus.fire()));\r\n }\r\n if (_onDidBlur) {\r\n disposable.addDisposables(_onDidBlur(() => this._onDidBlur.fire()));\r\n }\r\n this._element.appendChild(this.panel.view.content.element);\r\n }\r\n this.disposable.value = disposable;\r\n }\r\n layout(_width, _height) {\r\n // noop\r\n }\r\n closePanel() {\r\n var _a, _b, _c;\r\n if ((_c = (_b = (_a = this.panel) === null || _a === void 0 ? void 0 : _a.view) === null || _b === void 0 ? void 0 : _b.content) === null || _c === void 0 ? void 0 : _c.element) {\r\n this._element.removeChild(this.panel.view.content.element);\r\n this.panel = undefined;\r\n }\r\n }\r\n dispose() {\r\n this.disposable.dispose();\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=content.js.map","export var DockviewDropTargets;\r\n(function (DockviewDropTargets) {\r\n DockviewDropTargets[DockviewDropTargets[\"Tab\"] = 0] = \"Tab\";\r\n DockviewDropTargets[DockviewDropTargets[\"Panel\"] = 1] = \"Panel\";\r\n DockviewDropTargets[DockviewDropTargets[\"TabContainer\"] = 2] = \"TabContainer\";\r\n DockviewDropTargets[DockviewDropTargets[\"Edge\"] = 3] = \"Edge\";\r\n})(DockviewDropTargets || (DockviewDropTargets = {}));\r\n//# sourceMappingURL=types.js.map","import { getElementsByTagName } from '../dom';\r\nimport { addDisposableListener, Emitter } from '../events';\r\nimport { CompositeDisposable, MutableDisposable, } from '../lifecycle';\r\nexport class DragHandler extends CompositeDisposable {\r\n constructor(el) {\r\n super();\r\n this.el = el;\r\n this.dataDisposable = new MutableDisposable();\r\n this.pointerEventsDisposable = new MutableDisposable();\r\n this._onDragStart = new Emitter();\r\n this.onDragStart = this._onDragStart.event;\r\n this.addDisposables(this._onDragStart, this.dataDisposable, this.pointerEventsDisposable);\r\n this.configure();\r\n }\r\n isCancelled(_event) {\r\n return false;\r\n }\r\n configure() {\r\n this.addDisposables(this._onDragStart, addDisposableListener(this.el, 'dragstart', (event) => {\r\n if (event.defaultPrevented || this.isCancelled(event)) {\r\n event.preventDefault();\r\n return;\r\n }\r\n const iframes = [\r\n ...getElementsByTagName('iframe'),\r\n ...getElementsByTagName('webview'),\r\n ];\r\n this.pointerEventsDisposable.value = {\r\n dispose: () => {\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'auto';\r\n }\r\n },\r\n };\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'none';\r\n }\r\n this.el.classList.add('dv-dragged');\r\n setTimeout(() => this.el.classList.remove('dv-dragged'), 0);\r\n this.dataDisposable.value = this.getData(event);\r\n this._onDragStart.fire(event);\r\n if (event.dataTransfer) {\r\n event.dataTransfer.effectAllowed = 'move';\r\n const hasData = event.dataTransfer.items.length > 0;\r\n if (!hasData) {\r\n /**\r\n * Although this is not used by dockview many third party dnd libraries will check\r\n * dataTransfer.types to determine valid drag events.\r\n *\r\n * For example: in react-dnd if dataTransfer.types is not set then the dragStart event will be cancelled\r\n * through .preventDefault(). Since this is applied globally to all drag events this would break dockviews\r\n * dnd logic. You can see the code at\r\n * https://github.com/react-dnd/react-dnd/blob/main/packages/backend-html5/src/HTML5BackendImpl.ts#L542\r\n */\r\n event.dataTransfer.setData('text/plain', '__dockview_internal_drag_event__');\r\n }\r\n }\r\n }), addDisposableListener(this.el, 'dragend', () => {\r\n this.pointerEventsDisposable.dispose();\r\n this.dataDisposable.dispose();\r\n }));\r\n }\r\n}\r\n//# sourceMappingURL=abstractDragHandler.js.map","import { addDisposableListener, Emitter } from '../../../events';\r\nimport { CompositeDisposable } from '../../../lifecycle';\r\nimport { getPanelData, LocalSelectionTransfer, PanelTransfer, } from '../../../dnd/dataTransfer';\r\nimport { toggleClass } from '../../../dom';\r\nimport { DockviewDropTargets } from '../../types';\r\nimport { Droptarget } from '../../../dnd/droptarget';\r\nimport { DragHandler } from '../../../dnd/abstractDragHandler';\r\nclass TabDragHandler extends DragHandler {\r\n constructor(element, accessor, group, panel) {\r\n super(element);\r\n this.accessor = accessor;\r\n this.group = group;\r\n this.panel = panel;\r\n this.panelTransfer = LocalSelectionTransfer.getInstance();\r\n }\r\n getData(event) {\r\n this.panelTransfer.setData([new PanelTransfer(this.accessor.id, this.group.id, this.panel.id)], PanelTransfer.prototype);\r\n return {\r\n dispose: () => {\r\n this.panelTransfer.clearData(PanelTransfer.prototype);\r\n },\r\n };\r\n }\r\n}\r\nexport class Tab extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor(panel, accessor, group) {\r\n super();\r\n this.panel = panel;\r\n this.accessor = accessor;\r\n this.group = group;\r\n this.content = undefined;\r\n this._onChanged = new Emitter();\r\n this.onChanged = this._onChanged.event;\r\n this._onDropped = new Emitter();\r\n this.onDrop = this._onDropped.event;\r\n this._onDragStart = new Emitter();\r\n this.onDragStart = this._onDragStart.event;\r\n this._element = document.createElement('div');\r\n this._element.className = 'tab';\r\n this._element.tabIndex = 0;\r\n this._element.draggable = true;\r\n toggleClass(this.element, 'inactive-tab', true);\r\n const dragHandler = new TabDragHandler(this._element, this.accessor, this.group, this.panel);\r\n this.droptarget = new Droptarget(this._element, {\r\n acceptedTargetZones: ['center'],\r\n canDisplayOverlay: (event, position) => {\r\n if (this.group.locked) {\r\n return false;\r\n }\r\n const data = getPanelData();\r\n if (data && this.accessor.id === data.viewId) {\r\n if (data.panelId === null &&\r\n data.groupId === this.group.id) {\r\n // don't allow group move to drop on self\r\n return false;\r\n }\r\n return this.panel.id !== data.panelId;\r\n }\r\n return this.group.model.canDisplayOverlay(event, position, DockviewDropTargets.Tab);\r\n },\r\n });\r\n this.addDisposables(this._onChanged, this._onDropped, this._onDragStart, dragHandler.onDragStart((event) => {\r\n this._onDragStart.fire(event);\r\n }), dragHandler, addDisposableListener(this._element, 'mousedown', (event) => {\r\n if (event.defaultPrevented) {\r\n return;\r\n }\r\n this._onChanged.fire(event);\r\n }), this.droptarget.onDrop((event) => {\r\n this._onDropped.fire(event);\r\n }), this.droptarget);\r\n }\r\n setActive(isActive) {\r\n toggleClass(this.element, 'active-tab', isActive);\r\n toggleClass(this.element, 'inactive-tab', !isActive);\r\n }\r\n setContent(part) {\r\n if (this.content) {\r\n this._element.removeChild(this.content.element);\r\n }\r\n this.content = part;\r\n this._element.appendChild(this.content.element);\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=tab.js.map","import { quasiPreventDefault } from '../dom';\r\nimport { addDisposableListener } from '../events';\r\nimport { DragHandler } from './abstractDragHandler';\r\nimport { LocalSelectionTransfer, PanelTransfer } from './dataTransfer';\r\nimport { addGhostImage } from './ghost';\r\nexport class GroupDragHandler extends DragHandler {\r\n constructor(element, accessor, group) {\r\n super(element);\r\n this.accessor = accessor;\r\n this.group = group;\r\n this.panelTransfer = LocalSelectionTransfer.getInstance();\r\n this.addDisposables(addDisposableListener(element, 'mousedown', (e) => {\r\n if (e.shiftKey) {\r\n /**\r\n * You cannot call e.preventDefault() because that will prevent drag events from firing\r\n * but we also need to stop any group overlay drag events from occuring\r\n * Use a custom event marker that can be checked by the overlay drag events\r\n */\r\n quasiPreventDefault(e);\r\n }\r\n }, true));\r\n }\r\n isCancelled(_event) {\r\n if (this.group.api.isFloating && !_event.shiftKey) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n getData(dragEvent) {\r\n const dataTransfer = dragEvent.dataTransfer;\r\n this.panelTransfer.setData([new PanelTransfer(this.accessor.id, this.group.id, null)], PanelTransfer.prototype);\r\n const style = window.getComputedStyle(this.el);\r\n const bgColor = style.getPropertyValue('--dv-activegroup-visiblepanel-tab-background-color');\r\n const color = style.getPropertyValue('--dv-activegroup-visiblepanel-tab-color');\r\n if (dataTransfer) {\r\n const ghostElement = document.createElement('div');\r\n ghostElement.style.backgroundColor = bgColor;\r\n ghostElement.style.color = color;\r\n ghostElement.style.padding = '2px 8px';\r\n ghostElement.style.height = '24px';\r\n ghostElement.style.fontSize = '11px';\r\n ghostElement.style.lineHeight = '20px';\r\n ghostElement.style.borderRadius = '12px';\r\n ghostElement.style.position = 'absolute';\r\n ghostElement.textContent = `Multiple Panels (${this.group.size})`;\r\n addGhostImage(dataTransfer, ghostElement);\r\n }\r\n return {\r\n dispose: () => {\r\n this.panelTransfer.clearData(PanelTransfer.prototype);\r\n },\r\n };\r\n }\r\n}\r\n//# sourceMappingURL=groupDragHandler.js.map","import { addClasses, removeClasses } from '../dom';\r\nexport function addGhostImage(dataTransfer, ghostElement) {\r\n // class dockview provides to force ghost image to be drawn on a different layer and prevent weird rendering issues\r\n addClasses(ghostElement, 'dv-dragged');\r\n document.body.appendChild(ghostElement);\r\n dataTransfer.setDragImage(ghostElement, 0, 0);\r\n setTimeout(() => {\r\n removeClasses(ghostElement, 'dv-dragged');\r\n ghostElement.remove();\r\n }, 0);\r\n}\r\n//# sourceMappingURL=ghost.js.map","import { last } from '../../../array';\r\nimport { getPanelData } from '../../../dnd/dataTransfer';\r\nimport { Droptarget } from '../../../dnd/droptarget';\r\nimport { GroupDragHandler } from '../../../dnd/groupDragHandler';\r\nimport { addDisposableListener, Emitter } from '../../../events';\r\nimport { CompositeDisposable } from '../../../lifecycle';\r\nimport { DockviewDropTargets } from '../../types';\r\nexport class VoidContainer extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor(accessor, group) {\r\n super();\r\n this.accessor = accessor;\r\n this.group = group;\r\n this._onDrop = new Emitter();\r\n this.onDrop = this._onDrop.event;\r\n this._onDragStart = new Emitter();\r\n this.onDragStart = this._onDragStart.event;\r\n this._element = document.createElement('div');\r\n this._element.className = 'void-container';\r\n this._element.tabIndex = 0;\r\n this._element.draggable = true;\r\n this.addDisposables(this._onDrop, this._onDragStart, addDisposableListener(this._element, 'click', () => {\r\n this.accessor.doSetGroupActive(this.group);\r\n }));\r\n const handler = new GroupDragHandler(this._element, accessor, group);\r\n this.voidDropTarget = new Droptarget(this._element, {\r\n acceptedTargetZones: ['center'],\r\n canDisplayOverlay: (event, position) => {\r\n var _a;\r\n const data = getPanelData();\r\n if (data && this.accessor.id === data.viewId) {\r\n if (data.panelId === null &&\r\n data.groupId === this.group.id) {\r\n // don't allow group move to drop on self\r\n return false;\r\n }\r\n // don't show the overlay if the tab being dragged is the last panel of this group\r\n return ((_a = last(this.group.panels)) === null || _a === void 0 ? void 0 : _a.id) !== data.panelId;\r\n }\r\n return group.model.canDisplayOverlay(event, position, DockviewDropTargets.Panel);\r\n },\r\n });\r\n this.addDisposables(handler, handler.onDragStart((event) => {\r\n this._onDragStart.fire(event);\r\n }), this.voidDropTarget.onDrop((event) => {\r\n this._onDrop.fire(event);\r\n }), this.voidDropTarget);\r\n }\r\n}\r\n//# sourceMappingURL=voidContainer.js.map","import { CompositeDisposable, } from '../../../lifecycle';\r\nimport { addDisposableListener, Emitter } from '../../../events';\r\nimport { Tab } from '../tab/tab';\r\nimport { VoidContainer } from './voidContainer';\r\nimport { toggleClass } from '../../../dom';\r\nexport class TabsContainer extends CompositeDisposable {\r\n get panels() {\r\n return this.tabs.map((_) => _.value.panel.id);\r\n }\r\n get size() {\r\n return this.tabs.length;\r\n }\r\n get hidden() {\r\n return this._hidden;\r\n }\r\n set hidden(value) {\r\n this._hidden = value;\r\n this.element.style.display = value ? 'none' : '';\r\n }\r\n show() {\r\n if (!this.hidden) {\r\n this.element.style.display = '';\r\n }\r\n }\r\n hide() {\r\n this._element.style.display = 'none';\r\n }\r\n setRightActionsElement(element) {\r\n if (this.rightActions === element) {\r\n return;\r\n }\r\n if (this.rightActions) {\r\n this.rightActions.remove();\r\n this.rightActions = undefined;\r\n }\r\n if (element) {\r\n this.rightActionsContainer.appendChild(element);\r\n this.rightActions = element;\r\n }\r\n }\r\n setLeftActionsElement(element) {\r\n if (this.leftActions === element) {\r\n return;\r\n }\r\n if (this.leftActions) {\r\n this.leftActions.remove();\r\n this.leftActions = undefined;\r\n }\r\n if (element) {\r\n this.leftActionsContainer.appendChild(element);\r\n this.leftActions = element;\r\n }\r\n }\r\n setPrefixActionsElement(element) {\r\n if (this.preActions === element) {\r\n return;\r\n }\r\n if (this.preActions) {\r\n this.preActions.remove();\r\n this.preActions = undefined;\r\n }\r\n if (element) {\r\n this.preActionsContainer.appendChild(element);\r\n this.preActions = element;\r\n }\r\n }\r\n get element() {\r\n return this._element;\r\n }\r\n isActive(tab) {\r\n return (this.selectedIndex > -1 &&\r\n this.tabs[this.selectedIndex].value === tab);\r\n }\r\n indexOf(id) {\r\n return this.tabs.findIndex((tab) => tab.value.panel.id === id);\r\n }\r\n constructor(accessor, group) {\r\n super();\r\n this.accessor = accessor;\r\n this.group = group;\r\n this.tabs = [];\r\n this.selectedIndex = -1;\r\n this._hidden = false;\r\n this._onDrop = new Emitter();\r\n this.onDrop = this._onDrop.event;\r\n this._onTabDragStart = new Emitter();\r\n this.onTabDragStart = this._onTabDragStart.event;\r\n this._onGroupDragStart = new Emitter();\r\n this.onGroupDragStart = this._onGroupDragStart.event;\r\n this.addDisposables(this._onDrop, this._onTabDragStart, this._onGroupDragStart);\r\n this._element = document.createElement('div');\r\n this._element.className = 'tabs-and-actions-container';\r\n toggleClass(this._element, 'dv-full-width-single-tab', this.accessor.options.singleTabMode === 'fullwidth');\r\n this.addDisposables(this.accessor.onDidAddPanel((e) => {\r\n if (e.api.group === this.group) {\r\n toggleClass(this._element, 'dv-single-tab', this.size === 1);\r\n }\r\n }), this.accessor.onDidRemovePanel((e) => {\r\n if (e.api.group === this.group) {\r\n toggleClass(this._element, 'dv-single-tab', this.size === 1);\r\n }\r\n }));\r\n this.rightActionsContainer = document.createElement('div');\r\n this.rightActionsContainer.className = 'right-actions-container';\r\n this.leftActionsContainer = document.createElement('div');\r\n this.leftActionsContainer.className = 'left-actions-container';\r\n this.preActionsContainer = document.createElement('div');\r\n this.preActionsContainer.className = 'pre-actions-container';\r\n this.tabContainer = document.createElement('div');\r\n this.tabContainer.className = 'tabs-container';\r\n this.voidContainer = new VoidContainer(this.accessor, this.group);\r\n this._element.appendChild(this.preActionsContainer);\r\n this._element.appendChild(this.tabContainer);\r\n this._element.appendChild(this.leftActionsContainer);\r\n this._element.appendChild(this.voidContainer.element);\r\n this._element.appendChild(this.rightActionsContainer);\r\n this.addDisposables(this.voidContainer, this.voidContainer.onDragStart((event) => {\r\n this._onGroupDragStart.fire({\r\n nativeEvent: event,\r\n group: this.group,\r\n });\r\n }), this.voidContainer.onDrop((event) => {\r\n this._onDrop.fire({\r\n event: event.nativeEvent,\r\n index: this.tabs.length,\r\n });\r\n }), addDisposableListener(this.voidContainer.element, 'mousedown', (event) => {\r\n const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;\r\n if (isFloatingGroupsEnabled &&\r\n event.shiftKey &&\r\n !this.group.api.isFloating) {\r\n event.preventDefault();\r\n const { top, left } = this.element.getBoundingClientRect();\r\n const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();\r\n this.accessor.addFloatingGroup(this.group, {\r\n x: left - rootLeft + 20,\r\n y: top - rootTop + 20,\r\n }, { inDragMode: true });\r\n }\r\n }), addDisposableListener(this.tabContainer, 'mousedown', (event) => {\r\n if (event.defaultPrevented) {\r\n return;\r\n }\r\n const isLeftClick = event.button === 0;\r\n if (isLeftClick) {\r\n this.accessor.doSetGroupActive(this.group);\r\n }\r\n }));\r\n }\r\n setActive(_isGroupActive) {\r\n // noop\r\n }\r\n addTab(tab, index = this.tabs.length) {\r\n if (index < 0 || index > this.tabs.length) {\r\n throw new Error('invalid location');\r\n }\r\n this.tabContainer.insertBefore(tab.value.element, this.tabContainer.children[index]);\r\n this.tabs = [\r\n ...this.tabs.slice(0, index),\r\n tab,\r\n ...this.tabs.slice(index),\r\n ];\r\n if (this.selectedIndex < 0) {\r\n this.selectedIndex = index;\r\n }\r\n }\r\n delete(id) {\r\n const index = this.tabs.findIndex((tab) => tab.value.panel.id === id);\r\n const tabToRemove = this.tabs.splice(index, 1)[0];\r\n const { value, disposable } = tabToRemove;\r\n disposable.dispose();\r\n value.dispose();\r\n value.element.remove();\r\n }\r\n setActivePanel(panel) {\r\n this.tabs.forEach((tab) => {\r\n const isActivePanel = panel.id === tab.value.panel.id;\r\n tab.value.setActive(isActivePanel);\r\n });\r\n }\r\n openPanel(panel, index = this.tabs.length) {\r\n var _a;\r\n if (this.tabs.find((tab) => tab.value.panel.id === panel.id)) {\r\n return;\r\n }\r\n const tab = new Tab(panel, this.accessor, this.group);\r\n if (!((_a = panel.view) === null || _a === void 0 ? void 0 : _a.tab)) {\r\n throw new Error('invalid header component');\r\n }\r\n tab.setContent(panel.view.tab);\r\n const disposable = new CompositeDisposable(tab.onDragStart((event) => {\r\n this._onTabDragStart.fire({ nativeEvent: event, panel });\r\n }), tab.onChanged((event) => {\r\n var _a;\r\n const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;\r\n const isFloatingWithOnePanel = this.group.api.isFloating && this.size === 1;\r\n if (isFloatingGroupsEnabled &&\r\n !isFloatingWithOnePanel &&\r\n event.shiftKey) {\r\n event.preventDefault();\r\n const panel = this.accessor.getGroupPanel(tab.panel.id);\r\n const { top, left } = tab.element.getBoundingClientRect();\r\n const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();\r\n this.accessor.addFloatingGroup(panel, {\r\n x: left - rootLeft,\r\n y: top - rootTop,\r\n }, { inDragMode: true });\r\n return;\r\n }\r\n const alreadyFocused = panel.id === ((_a = this.group.model.activePanel) === null || _a === void 0 ? void 0 : _a.id) &&\r\n this.group.model.isContentFocused;\r\n const isLeftClick = event.button === 0;\r\n if (!isLeftClick || event.defaultPrevented) {\r\n return;\r\n }\r\n this.group.model.openPanel(panel, {\r\n skipFocus: alreadyFocused,\r\n });\r\n }), tab.onDrop((event) => {\r\n this._onDrop.fire({\r\n event: event.nativeEvent,\r\n index: this.tabs.findIndex((x) => x.value === tab),\r\n });\r\n }));\r\n const value = { value: tab, disposable };\r\n this.addTab(value, index);\r\n }\r\n closePanel(panel) {\r\n this.delete(panel.id);\r\n }\r\n dispose() {\r\n super.dispose();\r\n for (const { value, disposable } of this.tabs) {\r\n disposable.dispose();\r\n value.dispose();\r\n }\r\n this.tabs = [];\r\n }\r\n}\r\n//# sourceMappingURL=tabsContainer.js.map","import { DockviewApi } from '../api/component.api';\r\nimport { getPanelData } from '../dnd/dataTransfer';\r\nimport { Droptarget } from '../dnd/droptarget';\r\nimport { isAncestor, toggleClass } from '../dom';\r\nimport { addDisposableListener, Emitter } from '../events';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nimport { ContentContainer, } from './components/panel/content';\r\nimport { TabsContainer, } from './components/titlebar/tabsContainer';\r\nimport { DockviewDropTargets } from './types';\r\nexport class DockviewGroupPanelModel extends CompositeDisposable {\r\n get element() {\r\n throw new Error('not supported');\r\n }\r\n get activePanel() {\r\n return this._activePanel;\r\n }\r\n get locked() {\r\n return this._locked;\r\n }\r\n set locked(value) {\r\n this._locked = value;\r\n toggleClass(this.container, 'locked-groupview', value === 'no-drop-target' || value);\r\n }\r\n get isActive() {\r\n return this._isGroupActive;\r\n }\r\n get panels() {\r\n return this._panels;\r\n }\r\n get size() {\r\n return this._panels.length;\r\n }\r\n get isEmpty() {\r\n return this._panels.length === 0;\r\n }\r\n get hasWatermark() {\r\n return !!(this.watermark && this.container.contains(this.watermark.element));\r\n }\r\n get header() {\r\n return this.tabsContainer;\r\n }\r\n get isContentFocused() {\r\n if (!document.activeElement) {\r\n return false;\r\n }\r\n return isAncestor(document.activeElement, this.contentContainer.element);\r\n }\r\n get isFloating() {\r\n return this._isFloating;\r\n }\r\n set isFloating(value) {\r\n this._isFloating = value;\r\n this.dropTarget.setTargetZones(value ? ['center'] : ['top', 'bottom', 'left', 'right', 'center']);\r\n toggleClass(this.container, 'dv-groupview-floating', value);\r\n this.groupPanel.api._onDidFloatingStateChange.fire({\r\n isFloating: this.isFloating,\r\n });\r\n }\r\n constructor(container, accessor, id, options, groupPanel) {\r\n super();\r\n this.container = container;\r\n this.accessor = accessor;\r\n this.id = id;\r\n this.options = options;\r\n this.groupPanel = groupPanel;\r\n this._isGroupActive = false;\r\n this._locked = false;\r\n this._isFloating = false;\r\n this.mostRecentlyUsed = [];\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._width = 0;\r\n this._height = 0;\r\n this._panels = [];\r\n this._onMove = new Emitter();\r\n this.onMove = this._onMove.event;\r\n this._onDidDrop = new Emitter();\r\n this.onDidDrop = this._onDidDrop.event;\r\n this._onTabDragStart = new Emitter();\r\n this.onTabDragStart = this._onTabDragStart.event;\r\n this._onGroupDragStart = new Emitter();\r\n this.onGroupDragStart = this._onGroupDragStart.event;\r\n this._onDidAddPanel = new Emitter();\r\n this.onDidAddPanel = this._onDidAddPanel.event;\r\n this._onDidRemovePanel = new Emitter();\r\n this.onDidRemovePanel = this._onDidRemovePanel.event;\r\n this._onDidActivePanelChange = new Emitter();\r\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\r\n toggleClass(this.container, 'groupview', true);\r\n this.tabsContainer = new TabsContainer(this.accessor, this.groupPanel);\r\n this.contentContainer = new ContentContainer();\r\n this.dropTarget = new Droptarget(this.contentContainer.element, {\r\n acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],\r\n canDisplayOverlay: (event, position) => {\r\n if (this.locked === 'no-drop-target' ||\r\n (this.locked && position === 'center')) {\r\n return false;\r\n }\r\n const data = getPanelData();\r\n if (!data && event.shiftKey && !this.isFloating) {\r\n return false;\r\n }\r\n if (data && data.viewId === this.accessor.id) {\r\n if (data.groupId === this.id) {\r\n if (position === 'center') {\r\n // don't allow to drop on self for center position\r\n return false;\r\n }\r\n if (data.panelId === null) {\r\n // don't allow group move to drop anywhere on self\r\n return false;\r\n }\r\n }\r\n const groupHasOnePanelAndIsActiveDragElement = this._panels.length === 1 && data.groupId === this.id;\r\n return !groupHasOnePanelAndIsActiveDragElement;\r\n }\r\n return this.canDisplayOverlay(event, position, DockviewDropTargets.Panel);\r\n },\r\n });\r\n container.append(this.tabsContainer.element, this.contentContainer.element);\r\n this.header.hidden = !!options.hideHeader;\r\n this.locked = options.locked || false;\r\n this.addDisposables(this._onTabDragStart, this._onGroupDragStart, this.tabsContainer.onTabDragStart((event) => {\r\n this._onTabDragStart.fire(event);\r\n }), this.tabsContainer.onGroupDragStart((event) => {\r\n this._onGroupDragStart.fire(event);\r\n }), this.tabsContainer.onDrop((event) => {\r\n this.handleDropEvent(event.event, 'center', event.index);\r\n }), this.contentContainer.onDidFocus(() => {\r\n this.accessor.doSetGroupActive(this.groupPanel, true);\r\n }), this.contentContainer.onDidBlur(() => {\r\n // noop\r\n }), this.dropTarget.onDrop((event) => {\r\n this.handleDropEvent(event.nativeEvent, event.position);\r\n }), this._onMove, this._onDidChange, this._onDidDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange);\r\n }\r\n initialize() {\r\n var _a, _b;\r\n if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.panels) {\r\n this.options.panels.forEach((panel) => {\r\n this.doAddPanel(panel);\r\n });\r\n }\r\n if ((_b = this.options) === null || _b === void 0 ? void 0 : _b.activePanel) {\r\n this.openPanel(this.options.activePanel);\r\n }\r\n // must be run after the constructor otherwise this.parent may not be\r\n // correctly initialized\r\n this.setActive(this.isActive, true, true);\r\n this.updateContainer();\r\n if (this.accessor.options.createRightHeaderActionsElement) {\r\n this._rightHeaderActions =\r\n this.accessor.options.createRightHeaderActionsElement(this.groupPanel);\r\n this.addDisposables(this._rightHeaderActions);\r\n this._rightHeaderActions.init({\r\n containerApi: new DockviewApi(this.accessor),\r\n api: this.groupPanel.api,\r\n });\r\n this.tabsContainer.setRightActionsElement(this._rightHeaderActions.element);\r\n }\r\n if (this.accessor.options.createLeftHeaderActionsElement) {\r\n this._leftHeaderActions =\r\n this.accessor.options.createLeftHeaderActionsElement(this.groupPanel);\r\n this.addDisposables(this._leftHeaderActions);\r\n this._leftHeaderActions.init({\r\n containerApi: new DockviewApi(this.accessor),\r\n api: this.groupPanel.api,\r\n });\r\n this.tabsContainer.setLeftActionsElement(this._leftHeaderActions.element);\r\n }\r\n if (this.accessor.options.createPrefixHeaderActionsElement) {\r\n this._prefixHeaderActions =\r\n this.accessor.options.createPrefixHeaderActionsElement(this.groupPanel);\r\n this.addDisposables(this._prefixHeaderActions);\r\n this._prefixHeaderActions.init({\r\n containerApi: new DockviewApi(this.accessor),\r\n api: this.groupPanel.api,\r\n });\r\n this.tabsContainer.setPrefixActionsElement(this._prefixHeaderActions.element);\r\n }\r\n }\r\n indexOf(panel) {\r\n return this.tabsContainer.indexOf(panel.id);\r\n }\r\n toJSON() {\r\n var _a;\r\n const result = {\r\n views: this.tabsContainer.panels,\r\n activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,\r\n id: this.id,\r\n };\r\n if (this.locked !== false) {\r\n result.locked = this.locked;\r\n }\r\n if (this.header.hidden) {\r\n result.hideHeader = true;\r\n }\r\n return result;\r\n }\r\n moveToNext(options) {\r\n if (!options) {\r\n options = {};\r\n }\r\n if (!options.panel) {\r\n options.panel = this.activePanel;\r\n }\r\n const index = options.panel ? this.panels.indexOf(options.panel) : -1;\r\n let normalizedIndex;\r\n if (index < this.panels.length - 1) {\r\n normalizedIndex = index + 1;\r\n }\r\n else if (!options.suppressRoll) {\r\n normalizedIndex = 0;\r\n }\r\n else {\r\n return;\r\n }\r\n this.openPanel(this.panels[normalizedIndex]);\r\n }\r\n moveToPrevious(options) {\r\n if (!options) {\r\n options = {};\r\n }\r\n if (!options.panel) {\r\n options.panel = this.activePanel;\r\n }\r\n if (!options.panel) {\r\n return;\r\n }\r\n const index = this.panels.indexOf(options.panel);\r\n let normalizedIndex;\r\n if (index > 0) {\r\n normalizedIndex = index - 1;\r\n }\r\n else if (!options.suppressRoll) {\r\n normalizedIndex = this.panels.length - 1;\r\n }\r\n else {\r\n return;\r\n }\r\n this.openPanel(this.panels[normalizedIndex]);\r\n }\r\n containsPanel(panel) {\r\n return this.panels.includes(panel);\r\n }\r\n init(_params) {\r\n //noop\r\n }\r\n update(_params) {\r\n //noop\r\n }\r\n focus() {\r\n var _a, _b;\r\n (_b = (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n }\r\n openPanel(panel, options = {}) {\r\n if (typeof options.index !== 'number' ||\r\n options.index > this.panels.length) {\r\n options.index = this.panels.length;\r\n }\r\n const skipSetPanelActive = !!options.skipSetPanelActive;\r\n const skipSetGroupActive = !!options.skipSetGroupActive;\r\n // ensure the group is updated before we fire any events\r\n panel.updateParentGroup(this.groupPanel, true);\r\n if (this._activePanel === panel) {\r\n if (!skipSetGroupActive) {\r\n this.accessor.doSetGroupActive(this.groupPanel);\r\n }\r\n return;\r\n }\r\n this.doAddPanel(panel, options.index, skipSetPanelActive);\r\n if (!skipSetPanelActive) {\r\n this.doSetActivePanel(panel);\r\n }\r\n if (!skipSetGroupActive) {\r\n this.accessor.doSetGroupActive(this.groupPanel, !!options.skipFocus);\r\n }\r\n this.updateContainer();\r\n }\r\n removePanel(groupItemOrId) {\r\n const id = typeof groupItemOrId === 'string'\r\n ? groupItemOrId\r\n : groupItemOrId.id;\r\n const panelToRemove = this._panels.find((panel) => panel.id === id);\r\n if (!panelToRemove) {\r\n throw new Error('invalid operation');\r\n }\r\n return this._removePanel(panelToRemove);\r\n }\r\n closeAllPanels() {\r\n if (this.panels.length > 0) {\r\n // take a copy since we will be edting the array as we iterate through\r\n const arrPanelCpy = [...this.panels];\r\n for (const panel of arrPanelCpy) {\r\n this.doClose(panel);\r\n }\r\n }\r\n else {\r\n this.accessor.removeGroup(this.groupPanel);\r\n }\r\n }\r\n closePanel(panel) {\r\n this.doClose(panel);\r\n }\r\n doClose(panel) {\r\n this.accessor.removePanel(panel);\r\n }\r\n isPanelActive(panel) {\r\n return this._activePanel === panel;\r\n }\r\n updateActions(element) {\r\n this.tabsContainer.setRightActionsElement(element);\r\n }\r\n setActive(isGroupActive, skipFocus = false, force = false) {\r\n var _a, _b, _c, _d;\r\n if (!force && this.isActive === isGroupActive) {\r\n if (!skipFocus) {\r\n (_b = (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n }\r\n return;\r\n }\r\n this._isGroupActive = isGroupActive;\r\n toggleClass(this.container, 'active-group', isGroupActive);\r\n toggleClass(this.container, 'inactive-group', !isGroupActive);\r\n this.tabsContainer.setActive(this.isActive);\r\n if (!this._activePanel && this.panels.length > 0) {\r\n this.doSetActivePanel(this.panels[0]);\r\n }\r\n this.updateContainer();\r\n if (isGroupActive) {\r\n if (!skipFocus) {\r\n (_d = (_c = this._activePanel) === null || _c === void 0 ? void 0 : _c.focus) === null || _d === void 0 ? void 0 : _d.call(_c);\r\n }\r\n }\r\n }\r\n layout(width, height) {\r\n var _a;\r\n this._width = width;\r\n this._height = height;\r\n this.contentContainer.layout(this._width, this._height);\r\n if ((_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.layout) {\r\n this._activePanel.layout(this._width, this._height);\r\n }\r\n }\r\n _removePanel(panel) {\r\n const isActivePanel = this._activePanel === panel;\r\n this.doRemovePanel(panel);\r\n if (isActivePanel && this.panels.length > 0) {\r\n const nextPanel = this.mostRecentlyUsed[0];\r\n this.openPanel(nextPanel);\r\n }\r\n if (this._activePanel && this.panels.length === 0) {\r\n this.doSetActivePanel(undefined);\r\n }\r\n this.updateContainer();\r\n return panel;\r\n }\r\n doRemovePanel(panel) {\r\n const index = this.panels.indexOf(panel);\r\n if (this._activePanel === panel) {\r\n this.contentContainer.closePanel();\r\n }\r\n this.tabsContainer.delete(panel.id);\r\n this._panels.splice(index, 1);\r\n if (this.mostRecentlyUsed.includes(panel)) {\r\n this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);\r\n }\r\n this._onDidRemovePanel.fire({ panel });\r\n }\r\n doAddPanel(panel, index = this.panels.length, skipSetActive = false) {\r\n const existingPanel = this._panels.indexOf(panel);\r\n const hasExistingPanel = existingPanel > -1;\r\n this.tabsContainer.openPanel(panel, index);\r\n if (!skipSetActive) {\r\n this.contentContainer.openPanel(panel);\r\n }\r\n this.tabsContainer.show();\r\n this.contentContainer.show();\r\n if (hasExistingPanel) {\r\n // TODO - need to ensure ordering hasn't changed and if it has need to re-order this.panels\r\n return;\r\n }\r\n this.updateMru(panel);\r\n this.panels.splice(index, 0, panel);\r\n this._onDidAddPanel.fire({ panel });\r\n }\r\n doSetActivePanel(panel) {\r\n this._activePanel = panel;\r\n if (panel) {\r\n this.tabsContainer.setActivePanel(panel);\r\n panel.layout(this._width, this._height);\r\n this.updateMru(panel);\r\n this._onDidActivePanelChange.fire({ panel });\r\n }\r\n }\r\n updateMru(panel) {\r\n if (this.mostRecentlyUsed.includes(panel)) {\r\n this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);\r\n }\r\n this.mostRecentlyUsed = [panel, ...this.mostRecentlyUsed];\r\n }\r\n updateContainer() {\r\n var _a, _b;\r\n toggleClass(this.container, 'empty', this.isEmpty);\r\n this.panels.forEach((panel) => panel.updateParentGroup(this.groupPanel, this.isActive));\r\n if (this.isEmpty && !this.watermark) {\r\n const watermark = this.accessor.createWatermarkComponent();\r\n watermark.init({\r\n containerApi: new DockviewApi(this.accessor),\r\n group: this.groupPanel,\r\n });\r\n this.watermark = watermark;\r\n addDisposableListener(this.watermark.element, 'click', () => {\r\n if (!this.isActive) {\r\n this.accessor.doSetGroupActive(this.groupPanel);\r\n }\r\n });\r\n this.tabsContainer.hide();\r\n this.contentContainer.element.appendChild(this.watermark.element);\r\n this.watermark.updateParentGroup(this.groupPanel, true);\r\n }\r\n if (!this.isEmpty && this.watermark) {\r\n this.watermark.element.remove();\r\n (_b = (_a = this.watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n this.watermark = undefined;\r\n this.tabsContainer.show();\r\n }\r\n }\r\n canDisplayOverlay(event, position, target) {\r\n // custom overlay handler\r\n if (this.accessor.options.showDndOverlay) {\r\n return this.accessor.options.showDndOverlay({\r\n nativeEvent: event,\r\n target,\r\n group: this.accessor.getPanel(this.id),\r\n position,\r\n getData: getPanelData,\r\n });\r\n }\r\n return false;\r\n }\r\n handleDropEvent(event, position, index) {\r\n if (this.locked === 'no-drop-target') {\r\n return;\r\n }\r\n const data = getPanelData();\r\n if (data && data.viewId === this.accessor.id) {\r\n if (data.panelId === null) {\r\n // this is a group move dnd event\r\n const { groupId } = data;\r\n this._onMove.fire({\r\n target: position,\r\n groupId: groupId,\r\n index,\r\n });\r\n return;\r\n }\r\n const fromSameGroup = this.tabsContainer.indexOf(data.panelId) !== -1;\r\n if (fromSameGroup && this.tabsContainer.size === 1) {\r\n return;\r\n }\r\n const { groupId, panelId } = data;\r\n const isSameGroup = this.id === groupId;\r\n if (isSameGroup && !position) {\r\n const oldIndex = this.tabsContainer.indexOf(panelId);\r\n if (oldIndex === index) {\r\n return;\r\n }\r\n }\r\n this._onMove.fire({\r\n target: position,\r\n groupId: data.groupId,\r\n itemId: data.panelId,\r\n index,\r\n });\r\n }\r\n else {\r\n this._onDidDrop.fire({\r\n nativeEvent: event,\r\n position,\r\n index,\r\n getData: () => getPanelData(),\r\n });\r\n }\r\n }\r\n dispose() {\r\n var _a, _b, _c;\r\n super.dispose();\r\n (_a = this.watermark) === null || _a === void 0 ? void 0 : _a.element.remove();\r\n (_c = (_b = this.watermark) === null || _b === void 0 ? void 0 : _b.dispose) === null || _c === void 0 ? void 0 : _c.call(_b);\r\n for (const panel of this.panels) {\r\n panel.dispose();\r\n }\r\n this.dropTarget.dispose();\r\n this.tabsContainer.dispose();\r\n this.contentContainer.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=dockviewGroupPanelModel.js.map","import { watchElementResize } from './dom';\r\nimport { CompositeDisposable } from './lifecycle';\r\nexport class Resizable extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor(parentElement) {\r\n super();\r\n if (parentElement) {\r\n this._element = parentElement;\r\n }\r\n else {\r\n this._element = document.createElement('div');\r\n this._element.style.height = '100%';\r\n this._element.style.width = '100%';\r\n this._element.className = 'dv-resizable-container';\r\n }\r\n this.addDisposables(watchElementResize(this._element, (entry) => {\r\n if (this.isDisposed) {\r\n /**\r\n * resize is delayed through requestAnimationFrame so there is a small chance\r\n * the component has already been disposed of\r\n */\r\n return;\r\n }\r\n if (!document.body.contains(this._element)) {\r\n /**\r\n * since the event is dispatched through requestAnimationFrame there is a small chance\r\n * the component is no longer attached to the DOM, if that is the case the dimensions\r\n * are mostly likely all zero and meaningless. we should skip this case.\r\n */\r\n return;\r\n }\r\n const { width, height } = entry.contentRect;\r\n this.layout(width, height);\r\n }));\r\n }\r\n}\r\n//# sourceMappingURL=resizable.js.map","import { Emitter, Event, TickDelayedEvent } from '../events';\r\nimport { getGridLocation, Gridview } from './gridview';\r\nimport { sequentialNumberGenerator } from '../math';\r\nimport { Sizing } from '../splitview/splitview';\r\nimport { Resizable } from '../resizable';\r\nconst nextLayoutId = sequentialNumberGenerator();\r\nexport function toTarget(direction) {\r\n switch (direction) {\r\n case 'left':\r\n return 'left';\r\n case 'right':\r\n return 'right';\r\n case 'above':\r\n return 'top';\r\n case 'below':\r\n return 'bottom';\r\n case 'within':\r\n default:\r\n return 'center';\r\n }\r\n}\r\nexport class BaseGrid extends Resizable {\r\n get id() {\r\n return this._id;\r\n }\r\n get size() {\r\n return this._groups.size;\r\n }\r\n get groups() {\r\n return Array.from(this._groups.values()).map((_) => _.value);\r\n }\r\n get width() {\r\n return this.gridview.width;\r\n }\r\n get height() {\r\n return this.gridview.height;\r\n }\r\n get minimumHeight() {\r\n return this.gridview.minimumHeight;\r\n }\r\n get maximumHeight() {\r\n return this.gridview.maximumHeight;\r\n }\r\n get minimumWidth() {\r\n return this.gridview.minimumWidth;\r\n }\r\n get maximumWidth() {\r\n return this.gridview.maximumWidth;\r\n }\r\n get activeGroup() {\r\n return this._activeGroup;\r\n }\r\n constructor(options) {\r\n super(options.parentElement);\r\n this._id = nextLayoutId.next();\r\n this._groups = new Map();\r\n this._onDidLayoutChange = new Emitter();\r\n this.onDidLayoutChange = this._onDidLayoutChange.event;\r\n this._onDidRemoveGroup = new Emitter();\r\n this.onDidRemoveGroup = this._onDidRemoveGroup.event;\r\n this._onDidAddGroup = new Emitter();\r\n this.onDidAddGroup = this._onDidAddGroup.event;\r\n this._onDidActiveGroupChange = new Emitter();\r\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\r\n this._bufferOnDidLayoutChange = new TickDelayedEvent();\r\n this.gridview = new Gridview(!!options.proportionalLayout, options.styles, options.orientation);\r\n this.element.appendChild(this.gridview.element);\r\n this.layout(0, 0, true); // set some elements height/widths\r\n this.addDisposables(this.gridview.onDidChange(() => {\r\n this._bufferOnDidLayoutChange.fire();\r\n }), Event.any(this.onDidAddGroup, this.onDidRemoveGroup, this.onDidActiveGroupChange)(() => {\r\n this._bufferOnDidLayoutChange.fire();\r\n }), this._bufferOnDidLayoutChange.onEvent(() => {\r\n this._onDidLayoutChange.fire();\r\n }), this._bufferOnDidLayoutChange);\r\n }\r\n setVisible(panel, visible) {\r\n this.gridview.setViewVisible(getGridLocation(panel.element), visible);\r\n this._onDidLayoutChange.fire();\r\n }\r\n isVisible(panel) {\r\n return this.gridview.isViewVisible(getGridLocation(panel.element));\r\n }\r\n doAddGroup(group, location = [0], size) {\r\n this.gridview.addView(group, size !== null && size !== void 0 ? size : Sizing.Distribute, location);\r\n this._onDidAddGroup.fire(group);\r\n this.doSetGroupActive(group);\r\n }\r\n doRemoveGroup(group, options) {\r\n if (!this._groups.has(group.id)) {\r\n throw new Error('invalid operation');\r\n }\r\n const item = this._groups.get(group.id);\r\n const view = this.gridview.remove(group, Sizing.Distribute);\r\n if (item && !(options === null || options === void 0 ? void 0 : options.skipDispose)) {\r\n item.disposable.dispose();\r\n item.value.dispose();\r\n this._groups.delete(group.id);\r\n }\r\n this._onDidRemoveGroup.fire(group);\r\n if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {\r\n const groups = Array.from(this._groups.values());\r\n this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);\r\n }\r\n return view;\r\n }\r\n getPanel(id) {\r\n var _a;\r\n return (_a = this._groups.get(id)) === null || _a === void 0 ? void 0 : _a.value;\r\n }\r\n doSetGroupActive(group, skipFocus) {\r\n var _a, _b, _c;\r\n if (this._activeGroup === group) {\r\n return;\r\n }\r\n if (this._activeGroup) {\r\n this._activeGroup.setActive(false);\r\n if (!skipFocus) {\r\n (_b = (_a = this._activeGroup).focus) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n }\r\n }\r\n if (group) {\r\n group.setActive(true);\r\n if (!skipFocus) {\r\n (_c = group.focus) === null || _c === void 0 ? void 0 : _c.call(group);\r\n }\r\n }\r\n this._activeGroup = group;\r\n this._onDidActiveGroupChange.fire(group);\r\n }\r\n removeGroup(group) {\r\n this.doRemoveGroup(group);\r\n }\r\n moveToNext(options) {\r\n var _a;\r\n if (!options) {\r\n options = {};\r\n }\r\n if (!options.group) {\r\n if (!this.activeGroup) {\r\n return;\r\n }\r\n options.group = this.activeGroup;\r\n }\r\n const location = getGridLocation(options.group.element);\r\n const next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;\r\n this.doSetGroupActive(next);\r\n }\r\n moveToPrevious(options) {\r\n var _a;\r\n if (!options) {\r\n options = {};\r\n }\r\n if (!options.group) {\r\n if (!this.activeGroup) {\r\n return;\r\n }\r\n options.group = this.activeGroup;\r\n }\r\n const location = getGridLocation(options.group.element);\r\n const next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;\r\n this.doSetGroupActive(next);\r\n }\r\n layout(width, height, forceResize) {\r\n const different = forceResize || width !== this.width || height !== this.height;\r\n if (!different) {\r\n return;\r\n }\r\n this.gridview.element.style.height = `${height}px`;\r\n this.gridview.element.style.width = `${width}px`;\r\n this.gridview.layout(width, height);\r\n }\r\n dispose() {\r\n this._onDidActiveGroupChange.dispose();\r\n this._onDidAddGroup.dispose();\r\n this._onDidRemoveGroup.dispose();\r\n this._onDidLayoutChange.dispose();\r\n for (const group of this.groups) {\r\n group.dispose();\r\n }\r\n this.gridview.dispose();\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=baseComponentGridview.js.map","import { Emitter } from '../events';\r\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\r\n/**\r\n * A core api implementation that should be used across all panel-like objects\r\n */\r\nexport class PanelApiImpl extends CompositeDisposable {\r\n //\r\n get isFocused() {\r\n return this._isFocused;\r\n }\r\n get isActive() {\r\n return this._isActive;\r\n }\r\n get isVisible() {\r\n return this._isVisible;\r\n }\r\n get width() {\r\n return this._width;\r\n }\r\n get height() {\r\n return this._height;\r\n }\r\n constructor(id) {\r\n super();\r\n this.id = id;\r\n this._isFocused = false;\r\n this._isActive = false;\r\n this._isVisible = true;\r\n this._width = 0;\r\n this._height = 0;\r\n this.panelUpdatesDisposable = new MutableDisposable();\r\n this._onDidDimensionChange = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidDimensionsChange = this._onDidDimensionChange.event;\r\n //\r\n this._onDidChangeFocus = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidFocusChange = this._onDidChangeFocus.event;\r\n //\r\n this._onFocusEvent = new Emitter();\r\n this.onFocusEvent = this._onFocusEvent.event;\r\n //\r\n this._onDidVisibilityChange = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidVisibilityChange = this._onDidVisibilityChange.event;\r\n //\r\n this._onVisibilityChange = new Emitter();\r\n this.onVisibilityChange = this._onVisibilityChange.event;\r\n //\r\n this._onDidActiveChange = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidActiveChange = this._onDidActiveChange.event;\r\n //\r\n this._onActiveChange = new Emitter();\r\n this.onActiveChange = this._onActiveChange.event;\r\n //\r\n this._onUpdateParameters = new Emitter();\r\n this.onUpdateParameters = this._onUpdateParameters.event;\r\n this.addDisposables(this.onDidFocusChange((event) => {\r\n this._isFocused = event.isFocused;\r\n }), this.onDidActiveChange((event) => {\r\n this._isActive = event.isActive;\r\n }), this.onDidVisibilityChange((event) => {\r\n this._isVisible = event.isVisible;\r\n }), this.onDidDimensionsChange((event) => {\r\n this._width = event.width;\r\n this._height = event.height;\r\n }), this.panelUpdatesDisposable, this._onDidDimensionChange, this._onDidChangeFocus, this._onDidVisibilityChange, this._onDidActiveChange, this._onFocusEvent, this._onActiveChange, this._onVisibilityChange, this._onUpdateParameters);\r\n }\r\n initialize(panel) {\r\n this.panelUpdatesDisposable.value = this._onUpdateParameters.event((parameters) => {\r\n panel.update({\r\n params: parameters,\r\n });\r\n });\r\n }\r\n setVisible(isVisible) {\r\n this._onVisibilityChange.fire({ isVisible });\r\n }\r\n setActive() {\r\n this._onActiveChange.fire();\r\n }\r\n updateParameters(parameters) {\r\n this._onUpdateParameters.fire(parameters);\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=panelApi.js.map","import { Emitter } from '../events';\r\nimport { PanelApiImpl } from './panelApi';\r\nexport class SplitviewPanelApiImpl extends PanelApiImpl {\r\n //\r\n constructor(id) {\r\n super(id);\r\n this._onDidConstraintsChangeInternal = new Emitter();\r\n this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;\r\n //\r\n this._onDidConstraintsChange = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidConstraintsChange = this._onDidConstraintsChange.event;\r\n //\r\n this._onDidSizeChange = new Emitter();\r\n this.onDidSizeChange = this._onDidSizeChange.event;\r\n this.addDisposables(this._onDidConstraintsChangeInternal, this._onDidConstraintsChange, this._onDidSizeChange);\r\n }\r\n setConstraints(value) {\r\n this._onDidConstraintsChangeInternal.fire(value);\r\n }\r\n setSize(event) {\r\n this._onDidSizeChange.fire(event);\r\n }\r\n}\r\n//# sourceMappingURL=splitviewPanelApi.js.map","import { Emitter } from '../events';\r\nimport { SplitviewPanelApiImpl } from './splitviewPanelApi';\r\nexport class PaneviewPanelApiImpl extends SplitviewPanelApiImpl {\r\n set pane(pane) {\r\n this._pane = pane;\r\n }\r\n constructor(id) {\r\n super(id);\r\n this._onDidExpansionChange = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidExpansionChange = this._onDidExpansionChange.event;\r\n this._onMouseEnter = new Emitter({});\r\n this.onMouseEnter = this._onMouseEnter.event;\r\n this._onMouseLeave = new Emitter({});\r\n this.onMouseLeave = this._onMouseLeave.event;\r\n this.addDisposables(this._onDidExpansionChange, this._onMouseEnter, this._onMouseLeave);\r\n }\r\n setExpanded(isExpanded) {\r\n var _a;\r\n (_a = this._pane) === null || _a === void 0 ? void 0 : _a.setExpanded(isExpanded);\r\n }\r\n get isExpanded() {\r\n var _a;\r\n return !!((_a = this._pane) === null || _a === void 0 ? void 0 : _a.isExpanded());\r\n }\r\n}\r\n//# sourceMappingURL=paneviewPanelApi.js.map","import { trackFocus } from '../dom';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nexport class BasePanelView extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n get width() {\r\n return this._width;\r\n }\r\n get height() {\r\n return this._height;\r\n }\r\n get params() {\r\n var _a;\r\n return (_a = this._params) === null || _a === void 0 ? void 0 : _a.params;\r\n }\r\n constructor(id, component, api) {\r\n super();\r\n this.id = id;\r\n this.component = component;\r\n this.api = api;\r\n this._height = 0;\r\n this._width = 0;\r\n this._element = document.createElement('div');\r\n this._element.tabIndex = -1;\r\n this._element.style.outline = 'none';\r\n this._element.style.height = '100%';\r\n this._element.style.width = '100%';\r\n this._element.style.overflow = 'hidden';\r\n const focusTracker = trackFocus(this._element);\r\n this.addDisposables(this.api, focusTracker.onDidFocus(() => {\r\n this.api._onDidChangeFocus.fire({ isFocused: true });\r\n }), focusTracker.onDidBlur(() => {\r\n this.api._onDidChangeFocus.fire({ isFocused: false });\r\n }), focusTracker);\r\n }\r\n focus() {\r\n this.api._onFocusEvent.fire();\r\n }\r\n layout(width, height) {\r\n this._width = width;\r\n this._height = height;\r\n this.api._onDidDimensionChange.fire({ width, height });\r\n if (this.part) {\r\n if (this._params) {\r\n this.part.update(this._params.params);\r\n }\r\n }\r\n }\r\n init(parameters) {\r\n this._params = parameters;\r\n this.part = this.getComponent();\r\n }\r\n update(event) {\r\n var _a, _b;\r\n // merge the new parameters with the existing parameters\r\n this._params = Object.assign(Object.assign({}, this._params), { params: Object.assign(Object.assign({}, (_a = this._params) === null || _a === void 0 ? void 0 : _a.params), event.params) });\r\n /**\r\n * delete new keys that have a value of undefined,\r\n * allow values of null\r\n */\r\n for (const key of Object.keys(event.params)) {\r\n if (event.params[key] === undefined) {\r\n delete this._params.params[key];\r\n }\r\n }\r\n // update the view with the updated props\r\n (_b = this.part) === null || _b === void 0 ? void 0 : _b.update({ params: this._params.params });\r\n }\r\n toJSON() {\r\n var _a, _b;\r\n const params = (_b = (_a = this._params) === null || _a === void 0 ? void 0 : _a.params) !== null && _b !== void 0 ? _b : {};\r\n return {\r\n id: this.id,\r\n component: this.component,\r\n params: Object.keys(params).length > 0 ? params : undefined,\r\n };\r\n }\r\n dispose() {\r\n var _a;\r\n this.api.dispose();\r\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=basePanelView.js.map","import { PaneviewPanelApiImpl } from '../api/paneviewPanelApi';\r\nimport { addClasses, removeClasses } from '../dom';\r\nimport { addDisposableListener, Emitter } from '../events';\r\nimport { BasePanelView, } from '../gridview/basePanelView';\r\nimport { Orientation } from '../splitview/splitview';\r\nexport class PaneviewPanel extends BasePanelView {\r\n set orientation(value) {\r\n this._orientation = value;\r\n }\r\n get orientation() {\r\n return this._orientation;\r\n }\r\n get minimumSize() {\r\n const headerSize = this.headerSize;\r\n const expanded = this.isExpanded();\r\n const minimumBodySize = expanded ? this._minimumBodySize : 0;\r\n return headerSize + minimumBodySize;\r\n }\r\n get maximumSize() {\r\n const headerSize = this.headerSize;\r\n const expanded = this.isExpanded();\r\n const maximumBodySize = expanded ? this._maximumBodySize : 0;\r\n return headerSize + maximumBodySize;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n get orthogonalSize() {\r\n return this._orthogonalSize;\r\n }\r\n set orthogonalSize(size) {\r\n this._orthogonalSize = size;\r\n }\r\n get minimumBodySize() {\r\n return this._minimumBodySize;\r\n }\r\n set minimumBodySize(value) {\r\n this._minimumBodySize = typeof value === 'number' ? value : 0;\r\n }\r\n get maximumBodySize() {\r\n return this._maximumBodySize;\r\n }\r\n set maximumBodySize(value) {\r\n this._maximumBodySize =\r\n typeof value === 'number' ? value : Number.POSITIVE_INFINITY;\r\n }\r\n get headerVisible() {\r\n return this._headerVisible;\r\n }\r\n set headerVisible(value) {\r\n this._headerVisible = value;\r\n this.header.style.display = value ? '' : 'none';\r\n }\r\n constructor(id, component, headerComponent, orientation, isExpanded, isHeaderVisible) {\r\n super(id, component, new PaneviewPanelApiImpl(id));\r\n this.headerComponent = headerComponent;\r\n this._onDidChangeExpansionState = new Emitter({ replay: true });\r\n this.onDidChangeExpansionState = this._onDidChangeExpansionState.event;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this.headerSize = 22;\r\n this._orthogonalSize = 0;\r\n this._size = 0;\r\n this._minimumBodySize = 100;\r\n this._maximumBodySize = Number.POSITIVE_INFINITY;\r\n this._isExpanded = false;\r\n this.expandedSize = 0;\r\n this.api.pane = this; // TODO cannot use 'this' before 'super'\r\n this.api.initialize(this);\r\n this._isExpanded = isExpanded;\r\n this._headerVisible = isHeaderVisible;\r\n this._onDidChangeExpansionState.fire(this.isExpanded()); // initialize value\r\n this._orientation = orientation;\r\n this.element.classList.add('pane');\r\n this.addDisposables(this.api.onDidSizeChange((event) => {\r\n this._onDidChange.fire({ size: event.size });\r\n }), addDisposableListener(this.element, 'mouseenter', (ev) => {\r\n this.api._onMouseEnter.fire(ev);\r\n }), addDisposableListener(this.element, 'mouseleave', (ev) => {\r\n this.api._onMouseLeave.fire(ev);\r\n }));\r\n this.addDisposables(this._onDidChangeExpansionState, this.onDidChangeExpansionState((isPanelExpanded) => {\r\n this.api._onDidExpansionChange.fire({\r\n isExpanded: isPanelExpanded,\r\n });\r\n }), this.api.onDidFocusChange((e) => {\r\n if (!this.header) {\r\n return;\r\n }\r\n if (e.isFocused) {\r\n addClasses(this.header, 'focused');\r\n }\r\n else {\r\n removeClasses(this.header, 'focused');\r\n }\r\n }));\r\n this.renderOnce();\r\n }\r\n setVisible(isVisible) {\r\n this.api._onDidVisibilityChange.fire({ isVisible });\r\n }\r\n setActive(isActive) {\r\n this.api._onDidActiveChange.fire({ isActive });\r\n }\r\n isExpanded() {\r\n return this._isExpanded;\r\n }\r\n setExpanded(expanded) {\r\n if (this._isExpanded === expanded) {\r\n return;\r\n }\r\n this._isExpanded = expanded;\r\n if (expanded) {\r\n if (this.animationTimer) {\r\n clearTimeout(this.animationTimer);\r\n }\r\n if (this.body) {\r\n this.element.appendChild(this.body);\r\n }\r\n }\r\n else {\r\n this.animationTimer = setTimeout(() => {\r\n var _a;\r\n (_a = this.body) === null || _a === void 0 ? void 0 : _a.remove();\r\n }, 200);\r\n }\r\n this._onDidChange.fire(expanded ? { size: this.width } : {});\r\n this._onDidChangeExpansionState.fire(expanded);\r\n }\r\n layout(size, orthogonalSize) {\r\n this._size = size;\r\n this._orthogonalSize = orthogonalSize;\r\n const [width, height] = this.orientation === Orientation.HORIZONTAL\r\n ? [size, orthogonalSize]\r\n : [orthogonalSize, size];\r\n if (this.isExpanded()) {\r\n this.expandedSize = width;\r\n }\r\n super.layout(width, height);\r\n }\r\n init(parameters) {\r\n var _a, _b;\r\n super.init(parameters);\r\n if (typeof parameters.minimumBodySize === 'number') {\r\n this.minimumBodySize = parameters.minimumBodySize;\r\n }\r\n if (typeof parameters.maximumBodySize === 'number') {\r\n this.maximumBodySize = parameters.maximumBodySize;\r\n }\r\n this.bodyPart = this.getBodyComponent();\r\n this.headerPart = this.getHeaderComponent();\r\n this.bodyPart.init(Object.assign(Object.assign({}, parameters), { api: this.api }));\r\n this.headerPart.init(Object.assign(Object.assign({}, parameters), { api: this.api }));\r\n (_a = this.body) === null || _a === void 0 ? void 0 : _a.append(this.bodyPart.element);\r\n (_b = this.header) === null || _b === void 0 ? void 0 : _b.append(this.headerPart.element);\r\n if (typeof parameters.isExpanded === 'boolean') {\r\n this.setExpanded(parameters.isExpanded);\r\n }\r\n }\r\n toJSON() {\r\n const params = this._params;\r\n return Object.assign(Object.assign({}, super.toJSON()), { headerComponent: this.headerComponent, title: params.title });\r\n }\r\n renderOnce() {\r\n this.header = document.createElement('div');\r\n this.header.tabIndex = 0;\r\n this.header.className = 'pane-header';\r\n this.header.style.height = `${this.headerSize}px`;\r\n this.header.style.lineHeight = `${this.headerSize}px`;\r\n this.header.style.minHeight = `${this.headerSize}px`;\r\n this.header.style.maxHeight = `${this.headerSize}px`;\r\n this.element.appendChild(this.header);\r\n this.body = document.createElement('div');\r\n this.body.className = 'pane-body';\r\n this.element.appendChild(this.body);\r\n }\r\n // TODO slightly hacky by-pass of the component to create a body and header component\r\n getComponent() {\r\n return {\r\n update: (params) => {\r\n var _a, _b;\r\n (_a = this.bodyPart) === null || _a === void 0 ? void 0 : _a.update({ params });\r\n (_b = this.headerPart) === null || _b === void 0 ? void 0 : _b.update({ params });\r\n },\r\n dispose: () => {\r\n var _a, _b;\r\n (_a = this.bodyPart) === null || _a === void 0 ? void 0 : _a.dispose();\r\n (_b = this.headerPart) === null || _b === void 0 ? void 0 : _b.dispose();\r\n },\r\n };\r\n }\r\n}\r\n//# sourceMappingURL=paneviewPanel.js.map","import { PaneviewApi } from '../api/component.api';\r\nimport { DragHandler } from '../dnd/abstractDragHandler';\r\nimport { getPaneData, LocalSelectionTransfer, PaneTransfer, } from '../dnd/dataTransfer';\r\nimport { Droptarget } from '../dnd/droptarget';\r\nimport { Emitter } from '../events';\r\nimport { PaneviewPanel, } from './paneviewPanel';\r\nexport class DraggablePaneviewPanel extends PaneviewPanel {\r\n constructor(accessor, id, component, headerComponent, orientation, isExpanded, disableDnd) {\r\n super(id, component, headerComponent, orientation, isExpanded, true);\r\n this.accessor = accessor;\r\n this._onDidDrop = new Emitter();\r\n this.onDidDrop = this._onDidDrop.event;\r\n if (!disableDnd) {\r\n this.initDragFeatures();\r\n }\r\n }\r\n initDragFeatures() {\r\n if (!this.header) {\r\n return;\r\n }\r\n const id = this.id;\r\n const accessorId = this.accessor.id;\r\n this.header.draggable = true;\r\n this.handler = new (class PaneDragHandler extends DragHandler {\r\n getData() {\r\n LocalSelectionTransfer.getInstance().setData([new PaneTransfer(accessorId, id)], PaneTransfer.prototype);\r\n return {\r\n dispose: () => {\r\n LocalSelectionTransfer.getInstance().clearData(PaneTransfer.prototype);\r\n },\r\n };\r\n }\r\n })(this.header);\r\n this.target = new Droptarget(this.element, {\r\n acceptedTargetZones: ['top', 'bottom'],\r\n overlayModel: {\r\n activationSize: { type: 'percentage', value: 50 },\r\n },\r\n canDisplayOverlay: (event) => {\r\n const data = getPaneData();\r\n if (data) {\r\n if (data.paneId !== this.id &&\r\n data.viewId === this.accessor.id) {\r\n return true;\r\n }\r\n }\r\n if (this.accessor.options.showDndOverlay) {\r\n return this.accessor.options.showDndOverlay({\r\n nativeEvent: event,\r\n getData: getPaneData,\r\n panel: this,\r\n });\r\n }\r\n return false;\r\n },\r\n });\r\n this.addDisposables(this._onDidDrop, this.handler, this.target, this.target.onDrop((event) => {\r\n this.onDrop(event);\r\n }));\r\n }\r\n onDrop(event) {\r\n const data = getPaneData();\r\n if (!data || data.viewId !== this.accessor.id) {\r\n // if there is no local drag event for this panel\r\n // or if the drag event was creating by another Paneview instance\r\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, api: new PaneviewApi(this.accessor), getData: getPaneData }));\r\n return;\r\n }\r\n const containerApi = this._params\r\n .containerApi;\r\n const panelId = data.paneId;\r\n const existingPanel = containerApi.getPanel(panelId);\r\n if (!existingPanel) {\r\n // if the panel doesn't exist\r\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: getPaneData, api: new PaneviewApi(this.accessor) }));\r\n return;\r\n }\r\n const allPanels = containerApi.panels;\r\n const fromIndex = allPanels.indexOf(existingPanel);\r\n let toIndex = containerApi.panels.indexOf(this);\r\n if (event.position === 'left' || event.position === 'top') {\r\n toIndex = Math.max(0, toIndex - 1);\r\n }\r\n if (event.position === 'right' || event.position === 'bottom') {\r\n if (fromIndex > toIndex) {\r\n toIndex++;\r\n }\r\n toIndex = Math.min(allPanels.length - 1, toIndex);\r\n }\r\n containerApi.movePanel(fromIndex, toIndex);\r\n }\r\n}\r\n//# sourceMappingURL=draggablePaneviewPanel.js.map","import { Emitter } from '../events';\r\nimport { PanelApiImpl } from './panelApi';\r\nexport class GridviewPanelApiImpl extends PanelApiImpl {\r\n constructor(id, panel) {\r\n super(id);\r\n this._onDidConstraintsChangeInternal = new Emitter();\r\n this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;\r\n this._onDidConstraintsChange = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidConstraintsChange = this._onDidConstraintsChange.event;\r\n this._onDidSizeChange = new Emitter();\r\n this.onDidSizeChange = this._onDidSizeChange.event;\r\n this.addDisposables(this._onDidConstraintsChangeInternal, this._onDidConstraintsChange, this._onDidSizeChange);\r\n if (panel) {\r\n this.initialize(panel);\r\n }\r\n }\r\n setConstraints(value) {\r\n this._onDidConstraintsChangeInternal.fire(value);\r\n }\r\n setSize(event) {\r\n this._onDidSizeChange.fire(event);\r\n }\r\n}\r\n//# sourceMappingURL=gridviewPanelApi.js.map","import { BasePanelView, } from './basePanelView';\r\nimport { GridviewPanelApiImpl, } from '../api/gridviewPanelApi';\r\nimport { Emitter } from '../events';\r\nexport class GridviewPanel extends BasePanelView {\r\n get priority() {\r\n return this._priority;\r\n }\r\n get snap() {\r\n return this._snap;\r\n }\r\n get minimumWidth() {\r\n const width = typeof this._minimumWidth === 'function'\r\n ? this._minimumWidth()\r\n : this._minimumWidth;\r\n if (width !== this._evaluatedMinimumWidth) {\r\n this._evaluatedMinimumWidth = width;\r\n this.updateConstraints();\r\n }\r\n return width;\r\n }\r\n get minimumHeight() {\r\n const height = typeof this._minimumHeight === 'function'\r\n ? this._minimumHeight()\r\n : this._minimumHeight;\r\n if (height !== this._evaluatedMinimumHeight) {\r\n this._evaluatedMinimumHeight = height;\r\n this.updateConstraints();\r\n }\r\n return height;\r\n }\r\n get maximumHeight() {\r\n const height = typeof this._maximumHeight === 'function'\r\n ? this._maximumHeight()\r\n : this._maximumHeight;\r\n if (height !== this._evaluatedMaximumHeight) {\r\n this._evaluatedMaximumHeight = height;\r\n this.updateConstraints();\r\n }\r\n return height;\r\n }\r\n get maximumWidth() {\r\n const width = typeof this._maximumWidth === 'function'\r\n ? this._maximumWidth()\r\n : this._maximumWidth;\r\n if (width !== this._evaluatedMaximumWidth) {\r\n this._evaluatedMaximumWidth = width;\r\n this.updateConstraints();\r\n }\r\n return width;\r\n }\r\n get isActive() {\r\n return this.api.isActive;\r\n }\r\n constructor(id, component, options, api) {\r\n super(id, component, api !== null && api !== void 0 ? api : new GridviewPanelApiImpl(id));\r\n this._evaluatedMinimumWidth = 0;\r\n this._evaluatedMaximumWidth = Number.MAX_SAFE_INTEGER;\r\n this._evaluatedMinimumHeight = 0;\r\n this._evaluatedMaximumHeight = Number.MAX_SAFE_INTEGER;\r\n this._minimumWidth = 0;\r\n this._minimumHeight = 0;\r\n this._maximumWidth = Number.MAX_SAFE_INTEGER;\r\n this._maximumHeight = Number.MAX_SAFE_INTEGER;\r\n this._snap = false;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n if (typeof (options === null || options === void 0 ? void 0 : options.minimumWidth) === 'number') {\r\n this._minimumWidth = options.minimumWidth;\r\n }\r\n if (typeof (options === null || options === void 0 ? void 0 : options.maximumWidth) === 'number') {\r\n this._maximumWidth = options.maximumWidth;\r\n }\r\n if (typeof (options === null || options === void 0 ? void 0 : options.minimumHeight) === 'number') {\r\n this._minimumHeight = options.minimumHeight;\r\n }\r\n if (typeof (options === null || options === void 0 ? void 0 : options.maximumHeight) === 'number') {\r\n this._maximumHeight = options.maximumHeight;\r\n }\r\n this.api.initialize(this); // TODO: required to by-pass 'super before this' requirement\r\n this.addDisposables(this.api.onVisibilityChange((event) => {\r\n const { isVisible } = event;\r\n const { accessor } = this._params;\r\n accessor.setVisible(this, isVisible);\r\n }), this.api.onActiveChange(() => {\r\n const { accessor } = this._params;\r\n accessor.setActive(this);\r\n }), this.api.onDidConstraintsChangeInternal((event) => {\r\n if (typeof event.minimumWidth === 'number' ||\r\n typeof event.minimumWidth === 'function') {\r\n this._minimumWidth = event.minimumWidth;\r\n }\r\n if (typeof event.minimumHeight === 'number' ||\r\n typeof event.minimumHeight === 'function') {\r\n this._minimumHeight = event.minimumHeight;\r\n }\r\n if (typeof event.maximumWidth === 'number' ||\r\n typeof event.maximumWidth === 'function') {\r\n this._maximumWidth = event.maximumWidth;\r\n }\r\n if (typeof event.maximumHeight === 'number' ||\r\n typeof event.maximumHeight === 'function') {\r\n this._maximumHeight = event.maximumHeight;\r\n }\r\n }), this.api.onDidSizeChange((event) => {\r\n this._onDidChange.fire({\r\n height: event.height,\r\n width: event.width,\r\n });\r\n }), this._onDidChange);\r\n }\r\n setVisible(isVisible) {\r\n this.api._onDidVisibilityChange.fire({ isVisible });\r\n }\r\n setActive(isActive) {\r\n this.api._onDidActiveChange.fire({ isActive });\r\n }\r\n init(parameters) {\r\n if (parameters.maximumHeight) {\r\n this._maximumHeight = parameters.maximumHeight;\r\n }\r\n if (parameters.minimumHeight) {\r\n this._minimumHeight = parameters.minimumHeight;\r\n }\r\n if (parameters.maximumWidth) {\r\n this._maximumWidth = parameters.maximumWidth;\r\n }\r\n if (parameters.minimumWidth) {\r\n this._minimumWidth = parameters.minimumWidth;\r\n }\r\n this._priority = parameters.priority;\r\n this._snap = !!parameters.snap;\r\n super.init(parameters);\r\n if (typeof parameters.isVisible === 'boolean') {\r\n this.setVisible(parameters.isVisible);\r\n }\r\n }\r\n updateConstraints() {\r\n this.api._onDidConstraintsChange.fire({\r\n minimumWidth: this._evaluatedMinimumWidth,\r\n maximumWidth: this._evaluatedMaximumWidth,\r\n minimumHeight: this._evaluatedMinimumHeight,\r\n maximumHeight: this._evaluatedMaximumHeight,\r\n });\r\n }\r\n toJSON() {\r\n const state = super.toJSON();\r\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ? undefined : value;\r\n const minimum = (value) => (value <= 0 ? undefined : value);\r\n return Object.assign(Object.assign({}, state), { minimumHeight: minimum(this.minimumHeight), maximumHeight: maximum(this.maximumHeight), minimumWidth: minimum(this.minimumWidth), maximumWidth: maximum(this.maximumWidth), snap: this.snap, priority: this.priority });\r\n }\r\n}\r\n//# sourceMappingURL=gridviewPanel.js.map","import { Emitter } from '../events';\r\nimport { GridviewPanelApiImpl } from './gridviewPanelApi';\r\nexport class DockviewGroupPanelApiImpl extends GridviewPanelApiImpl {\r\n get isFloating() {\r\n if (!this._group) {\r\n throw new Error(`DockviewGroupPanelApiImpl not initialized`);\r\n }\r\n return this._group.model.isFloating;\r\n }\r\n constructor(id, accessor) {\r\n super(id);\r\n this.accessor = accessor;\r\n this._onDidFloatingStateChange = new Emitter();\r\n this.onDidFloatingStateChange = this._onDidFloatingStateChange.event;\r\n this.addDisposables(this._onDidFloatingStateChange);\r\n }\r\n moveTo(options) {\r\n var _a;\r\n if (!this._group) {\r\n throw new Error(`DockviewGroupPanelApiImpl not initialized`);\r\n }\r\n this.accessor.moveGroupOrPanel(options.group, this._group.id, undefined, (_a = options.position) !== null && _a !== void 0 ? _a : 'center');\r\n }\r\n initialize(group) {\r\n this._group = group;\r\n }\r\n}\r\n//# sourceMappingURL=dockviewGroupPanelApi.js.map","import { DockviewGroupPanelModel, } from './dockviewGroupPanelModel';\r\nimport { GridviewPanel } from '../gridview/gridviewPanel';\r\nimport { DockviewGroupPanelApiImpl, } from '../api/dockviewGroupPanelApi';\r\nexport class DockviewGroupPanel extends GridviewPanel {\r\n get panels() {\r\n return this._model.panels;\r\n }\r\n get activePanel() {\r\n return this._model.activePanel;\r\n }\r\n get size() {\r\n return this._model.size;\r\n }\r\n get model() {\r\n return this._model;\r\n }\r\n get locked() {\r\n return this._model.locked;\r\n }\r\n set locked(value) {\r\n this._model.locked = value;\r\n }\r\n get header() {\r\n return this._model.header;\r\n }\r\n constructor(accessor, id, options) {\r\n super(id, 'groupview_default', {\r\n minimumHeight: 100,\r\n minimumWidth: 100,\r\n }, new DockviewGroupPanelApiImpl(id, accessor));\r\n this.api.initialize(this); // cannot use 'this' after after 'super' call\r\n this._model = new DockviewGroupPanelModel(this.element, accessor, id, options, this);\r\n }\r\n initialize() {\r\n this._model.initialize();\r\n }\r\n setActive(isActive) {\r\n super.setActive(isActive);\r\n this.model.setActive(isActive);\r\n }\r\n layout(width, height) {\r\n super.layout(width, height);\r\n this.model.layout(width, height);\r\n }\r\n getComponent() {\r\n return this._model;\r\n }\r\n toJSON() {\r\n return this.model.toJSON();\r\n }\r\n}\r\n//# sourceMappingURL=dockviewGroupPanel.js.map","export function isPanelOptionsWithPanel(data) {\r\n if (data.referencePanel) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexport function isPanelOptionsWithGroup(data) {\r\n if (data.referenceGroup) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexport function isGroupOptionsWithPanel(data) {\r\n if (data.referencePanel) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexport function isGroupOptionsWithGroup(data) {\r\n if (data.referenceGroup) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n//# sourceMappingURL=options.js.map","import { Emitter } from '../events';\r\nimport { GridviewPanelApiImpl } from './gridviewPanelApi';\r\nimport { MutableDisposable } from '../lifecycle';\r\nexport class DockviewPanelApiImpl extends GridviewPanelApiImpl {\r\n get title() {\r\n return this.panel.title;\r\n }\r\n get isGroupActive() {\r\n var _a;\r\n return !!((_a = this.group) === null || _a === void 0 ? void 0 : _a.isActive);\r\n }\r\n set group(value) {\r\n const isOldGroupActive = this.isGroupActive;\r\n this._group = value;\r\n this._onDidGroupChange.fire();\r\n if (this._group) {\r\n this.disposable.value = this._group.api.onDidActiveChange(() => {\r\n this._onDidActiveGroupChange.fire();\r\n });\r\n if (this.isGroupActive !== isOldGroupActive) {\r\n this._onDidActiveGroupChange.fire();\r\n }\r\n }\r\n }\r\n get group() {\r\n return this._group;\r\n }\r\n constructor(panel, group, accessor) {\r\n super(panel.id);\r\n this.panel = panel;\r\n this.accessor = accessor;\r\n this._onDidTitleChange = new Emitter();\r\n this.onDidTitleChange = this._onDidTitleChange.event;\r\n this._onDidActiveGroupChange = new Emitter();\r\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\r\n this._onDidGroupChange = new Emitter();\r\n this.onDidGroupChange = this._onDidGroupChange.event;\r\n this.disposable = new MutableDisposable();\r\n this.initialize(panel);\r\n this._group = group;\r\n this.addDisposables(this.disposable, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange);\r\n }\r\n moveTo(options) {\r\n var _a;\r\n this.accessor.moveGroupOrPanel(options.group, this._group.id, this.panel.id, (_a = options.position) !== null && _a !== void 0 ? _a : 'center', options.index);\r\n }\r\n setTitle(title) {\r\n this.panel.setTitle(title);\r\n }\r\n close() {\r\n this.group.model.closePanel(this.panel);\r\n }\r\n}\r\n//# sourceMappingURL=dockviewPanelApi.js.map","import { DockviewPanelApiImpl, } from '../api/dockviewPanelApi';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nexport class DockviewPanel extends CompositeDisposable {\r\n get params() {\r\n return this._params;\r\n }\r\n get title() {\r\n return this._title;\r\n }\r\n get group() {\r\n return this._group;\r\n }\r\n constructor(id, accessor, containerApi, group, view) {\r\n super();\r\n this.id = id;\r\n this.containerApi = containerApi;\r\n this.view = view;\r\n this._group = group;\r\n this.api = new DockviewPanelApiImpl(this, this._group, accessor);\r\n this.addDisposables(this.api.onActiveChange(() => {\r\n accessor.setActivePanel(this);\r\n }), this.api.onDidSizeChange((event) => {\r\n // forward the resize event to the group since if you want to resize a panel\r\n // you are actually just resizing the panels parent which is the group\r\n this.group.api.setSize(event);\r\n }));\r\n }\r\n init(params) {\r\n this._params = params.params;\r\n this.view.init(Object.assign(Object.assign({}, params), { api: this.api, containerApi: this.containerApi }));\r\n this.setTitle(params.title);\r\n }\r\n focus() {\r\n this.api._onFocusEvent.fire();\r\n }\r\n toJSON() {\r\n return {\r\n id: this.id,\r\n contentComponent: this.view.contentComponent,\r\n tabComponent: this.view.tabComponent,\r\n params: Object.keys(this._params || {}).length > 0\r\n ? this._params\r\n : undefined,\r\n title: this.title,\r\n };\r\n }\r\n setTitle(title) {\r\n const didTitleChange = title !== this.title;\r\n if (didTitleChange) {\r\n this._title = title;\r\n this.view.update({\r\n params: {\r\n params: this._params,\r\n title: this.title,\r\n },\r\n });\r\n this.api._onDidTitleChange.fire({ title });\r\n }\r\n }\r\n update(event) {\r\n // merge the new parameters with the existing parameters\r\n this._params = Object.assign(Object.assign({}, (this._params || {})), event.params);\r\n /**\r\n * delete new keys that have a value of undefined,\r\n * allow values of null\r\n */\r\n for (const key of Object.keys(event.params)) {\r\n if (event.params[key] === undefined) {\r\n delete this._params[key];\r\n }\r\n }\r\n // update the view with the updated props\r\n this.view.update({\r\n params: {\r\n params: this._params,\r\n title: this.title,\r\n },\r\n });\r\n }\r\n updateParentGroup(group, isGroupActive) {\r\n this._group = group;\r\n this.api.group = group;\r\n const isPanelVisible = this._group.model.isPanelActive(this);\r\n this.api._onDidActiveChange.fire({\r\n isActive: isGroupActive && isPanelVisible,\r\n });\r\n this.api._onDidVisibilityChange.fire({\r\n isVisible: isPanelVisible,\r\n });\r\n this.view.updateParentGroup(this._group, this._group.model.isPanelActive(this));\r\n }\r\n layout(width, height) {\r\n // the obtain the correct dimensions of the content panel we must deduct the tab height\r\n this.api._onDidDimensionChange.fire({\r\n width,\r\n height: height,\r\n });\r\n this.view.layout(width, height);\r\n }\r\n dispose() {\r\n this.api.dispose();\r\n this.view.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=dockviewPanel.js.map","const createSvgElementFromPath = (params) => {\r\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\r\n svg.setAttributeNS(null, 'height', params.height);\r\n svg.setAttributeNS(null, 'width', params.width);\r\n svg.setAttributeNS(null, 'viewBox', params.viewbox);\r\n svg.setAttributeNS(null, 'aria-hidden', 'false');\r\n svg.setAttributeNS(null, 'focusable', 'false');\r\n svg.classList.add('dockview-svg');\r\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\r\n path.setAttributeNS(null, 'd', params.path);\r\n svg.appendChild(path);\r\n return svg;\r\n};\r\nexport const createCloseButton = () => createSvgElementFromPath({\r\n width: '11',\r\n height: '11',\r\n viewbox: '0 0 28 28',\r\n path: 'M2.1 27.3L0 25.2L11.55 13.65L0 2.1L2.1 0L13.65 11.55L25.2 0L27.3 2.1L15.75 13.65L27.3 25.2L25.2 27.3L13.65 15.75L2.1 27.3Z',\r\n});\r\nexport const createExpandMoreButton = () => createSvgElementFromPath({\r\n width: '11',\r\n height: '11',\r\n viewbox: '0 0 24 15',\r\n path: 'M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z',\r\n});\r\nexport const createChevronRightButton = () => createSvgElementFromPath({\r\n width: '11',\r\n height: '11',\r\n viewbox: '0 0 15 25',\r\n path: 'M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z',\r\n});\r\n//# sourceMappingURL=svg.js.map","import { CompositeDisposable } from '../../../lifecycle';\r\nimport { addDisposableListener } from '../../../events';\r\nimport { createCloseButton } from '../../../svg';\r\nexport class DefaultTab extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor() {\r\n super();\r\n //\r\n this.params = {};\r\n this._element = document.createElement('div');\r\n this._element.className = 'default-tab';\r\n //\r\n this._content = document.createElement('div');\r\n this._content.className = 'tab-content';\r\n //\r\n this._actionContainer = document.createElement('div');\r\n this._actionContainer.className = 'action-container';\r\n //\r\n this._list = document.createElement('ul');\r\n this._list.className = 'tab-list';\r\n //\r\n this.action = document.createElement('div');\r\n this.action.className = 'tab-action';\r\n this.action.appendChild(createCloseButton());\r\n //\r\n this._element.appendChild(this._content);\r\n this._element.appendChild(this._actionContainer);\r\n this._actionContainer.appendChild(this._list);\r\n this._list.appendChild(this.action);\r\n //\r\n this.addDisposables(addDisposableListener(this._actionContainer, 'mousedown', (ev) => {\r\n ev.preventDefault();\r\n }));\r\n this.render();\r\n }\r\n update(event) {\r\n this.params = Object.assign(Object.assign({}, this.params), event.params);\r\n this.render();\r\n }\r\n focus() {\r\n //noop\r\n }\r\n init(params) {\r\n this.params = params;\r\n this._content.textContent = params.title;\r\n addDisposableListener(this.action, 'click', (ev) => {\r\n ev.preventDefault(); //\r\n this.params.api.close();\r\n });\r\n }\r\n onGroupChange(_group) {\r\n this.render();\r\n }\r\n onPanelVisibleChange(_isPanelVisible) {\r\n this.render();\r\n }\r\n layout(_width, _height) {\r\n // noop\r\n }\r\n render() {\r\n if (this._content.textContent !== this.params.title) {\r\n this._content.textContent = this.params.title;\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=defaultTab.js.map","import { DefaultTab } from './components/tab/defaultTab';\r\nimport { createComponent } from '../panel/componentFactory';\r\nexport class DockviewPanelModel {\r\n get content() {\r\n return this._content;\r\n }\r\n get tab() {\r\n return this._tab;\r\n }\r\n constructor(accessor, id, contentComponent, tabComponent) {\r\n this.accessor = accessor;\r\n this.id = id;\r\n this.contentComponent = contentComponent;\r\n this.tabComponent = tabComponent;\r\n this._group = null;\r\n this._isPanelVisible = null;\r\n this._content = this.createContentComponent(this.id, contentComponent);\r\n this._tab = this.createTabComponent(this.id, tabComponent);\r\n }\r\n init(params) {\r\n this.content.init(Object.assign(Object.assign({}, params), { tab: this.tab }));\r\n this.tab.init(params);\r\n }\r\n updateParentGroup(group, isPanelVisible) {\r\n if (group !== this._group) {\r\n this._group = group;\r\n if (this._content.onGroupChange) {\r\n this._content.onGroupChange(group);\r\n }\r\n if (this._tab.onGroupChange) {\r\n this._tab.onGroupChange(group);\r\n }\r\n }\r\n if (isPanelVisible !== this._isPanelVisible) {\r\n this._isPanelVisible = isPanelVisible;\r\n if (this._content.onPanelVisibleChange) {\r\n this._content.onPanelVisibleChange(isPanelVisible);\r\n }\r\n if (this._tab.onPanelVisibleChange) {\r\n this._tab.onPanelVisibleChange(isPanelVisible);\r\n }\r\n }\r\n }\r\n layout(width, height) {\r\n var _a, _b;\r\n (_b = (_a = this.content).layout) === null || _b === void 0 ? void 0 : _b.call(_a, width, height);\r\n }\r\n update(event) {\r\n var _a, _b, _c, _d;\r\n (_b = (_a = this.content).update) === null || _b === void 0 ? void 0 : _b.call(_a, event);\r\n (_d = (_c = this.tab).update) === null || _d === void 0 ? void 0 : _d.call(_c, event);\r\n }\r\n dispose() {\r\n var _a, _b, _c, _d;\r\n (_b = (_a = this.content).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n (_d = (_c = this.tab).dispose) === null || _d === void 0 ? void 0 : _d.call(_c);\r\n }\r\n createContentComponent(id, componentName) {\r\n var _a;\r\n return createComponent(id, componentName, this.accessor.options.components || {}, this.accessor.options.frameworkComponents, (_a = this.accessor.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.content);\r\n }\r\n createTabComponent(id, componentName) {\r\n var _a, _b;\r\n if (componentName) {\r\n return createComponent(id, componentName, this.accessor.options.tabComponents, this.accessor.options.frameworkTabComponents, (_a = this.accessor.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.tab, () => new DefaultTab());\r\n }\r\n else if (this.accessor.options.defaultTabComponent) {\r\n return createComponent(id, this.accessor.options.defaultTabComponent, this.accessor.options.tabComponents, this.accessor.options.frameworkTabComponents, (_b = this.accessor.options.frameworkComponentFactory) === null || _b === void 0 ? void 0 : _b.tab, () => new DefaultTab());\r\n }\r\n else {\r\n return new DefaultTab();\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=dockviewPanelModel.js.map","import { DockviewPanel } from './dockviewPanel';\r\nimport { DockviewPanelModel } from './dockviewPanelModel';\r\nimport { DockviewApi } from '../api/component.api';\r\nexport class DefaultDockviewDeserialzier {\r\n constructor(layout) {\r\n this.layout = layout;\r\n }\r\n fromJSON(panelData, group) {\r\n var _a;\r\n const panelId = panelData.id;\r\n const params = panelData.params;\r\n const title = panelData.title;\r\n const viewData = panelData.view;\r\n const contentComponent = viewData\r\n ? viewData.content.id\r\n : panelData.contentComponent || 'unknown';\r\n const tabComponent = viewData\r\n ? (_a = viewData.tab) === null || _a === void 0 ? void 0 : _a.id\r\n : panelData.tabComponent;\r\n const view = new DockviewPanelModel(this.layout, panelId, contentComponent, tabComponent);\r\n const panel = new DockviewPanel(panelId, this.layout, new DockviewApi(this.layout), group, view);\r\n panel.init({\r\n title: title || panelId,\r\n params: params || {},\r\n });\r\n return panel;\r\n }\r\n}\r\n//# sourceMappingURL=deserializer.js.map","import { addDisposableListener } from '../../../events';\r\nimport { toggleClass } from '../../../dom';\r\nimport { CompositeDisposable } from '../../../lifecycle';\r\nimport { createCloseButton } from '../../../svg';\r\nexport class Watermark extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor() {\r\n super();\r\n this._element = document.createElement('div');\r\n this._element.className = 'watermark';\r\n const title = document.createElement('div');\r\n title.className = 'watermark-title';\r\n const emptySpace = document.createElement('span');\r\n emptySpace.style.flexGrow = '1';\r\n const content = document.createElement('div');\r\n content.className = 'watermark-content';\r\n this._element.appendChild(title);\r\n this._element.appendChild(content);\r\n const actionsContainer = document.createElement('div');\r\n actionsContainer.className = 'actions-container';\r\n const closeAnchor = document.createElement('div');\r\n closeAnchor.className = 'close-action';\r\n closeAnchor.appendChild(createCloseButton());\r\n actionsContainer.appendChild(closeAnchor);\r\n title.appendChild(emptySpace);\r\n title.appendChild(actionsContainer);\r\n this.addDisposables(addDisposableListener(closeAnchor, 'click', (ev) => {\r\n var _a;\r\n ev.preventDefault();\r\n if (this._group) {\r\n (_a = this._api) === null || _a === void 0 ? void 0 : _a.removeGroup(this._group);\r\n }\r\n }));\r\n }\r\n update(_event) {\r\n // noop\r\n }\r\n focus() {\r\n // noop\r\n }\r\n layout(_width, _height) {\r\n // noop\r\n }\r\n init(_params) {\r\n this._api = _params.containerApi;\r\n this.render();\r\n }\r\n updateParentGroup(group, _visible) {\r\n this._group = group;\r\n this.render();\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n render() {\r\n const isOneGroup = !!(this._api && this._api.size <= 1);\r\n toggleClass(this.element, 'has-actions', isOneGroup);\r\n }\r\n}\r\n//# sourceMappingURL=watermark.js.map","import { getElementsByTagName, quasiDefaultPrevented, toggleClass, } from '../dom';\r\nimport { Emitter, addDisposableListener, addDisposableWindowListener, } from '../events';\r\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\r\nimport { clamp } from '../math';\r\nconst bringElementToFront = (() => {\r\n let previous = null;\r\n function pushToTop(element) {\r\n if (previous !== element && previous !== null) {\r\n toggleClass(previous, 'dv-bring-to-front', false);\r\n }\r\n toggleClass(element, 'dv-bring-to-front', true);\r\n previous = element;\r\n }\r\n return pushToTop;\r\n})();\r\nexport class Overlay extends CompositeDisposable {\r\n set minimumInViewportWidth(value) {\r\n this.options.minimumInViewportWidth = value;\r\n }\r\n set minimumInViewportHeight(value) {\r\n this.options.minimumInViewportHeight = value;\r\n }\r\n constructor(options) {\r\n super();\r\n this.options = options;\r\n this._element = document.createElement('div');\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._onDidChangeEnd = new Emitter();\r\n this.onDidChangeEnd = this._onDidChangeEnd.event;\r\n this.addDisposables(this._onDidChange, this._onDidChangeEnd);\r\n this._element.className = 'dv-resize-container';\r\n this.setupResize('top');\r\n this.setupResize('bottom');\r\n this.setupResize('left');\r\n this.setupResize('right');\r\n this.setupResize('topleft');\r\n this.setupResize('topright');\r\n this.setupResize('bottomleft');\r\n this.setupResize('bottomright');\r\n this._element.appendChild(this.options.content);\r\n this.options.container.appendChild(this._element);\r\n // if input bad resize within acceptable boundaries\r\n this.setBounds({\r\n height: this.options.height,\r\n width: this.options.width,\r\n top: this.options.top,\r\n left: this.options.left,\r\n });\r\n }\r\n setBounds(bounds = {}) {\r\n if (typeof bounds.height === 'number') {\r\n this._element.style.height = `${bounds.height}px`;\r\n }\r\n if (typeof bounds.width === 'number') {\r\n this._element.style.width = `${bounds.width}px`;\r\n }\r\n if (typeof bounds.top === 'number') {\r\n this._element.style.top = `${bounds.top}px`;\r\n }\r\n if (typeof bounds.left === 'number') {\r\n this._element.style.left = `${bounds.left}px`;\r\n }\r\n const containerRect = this.options.container.getBoundingClientRect();\r\n const overlayRect = this._element.getBoundingClientRect();\r\n // region: ensure bounds within allowable limits\r\n // a minimum width of minimumViewportWidth must be inside the viewport\r\n const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));\r\n // a minimum height of minimumViewportHeight must be inside the viewport\r\n const yOffset = typeof this.options.minimumInViewportHeight === 'number'\r\n ? Math.max(0, this.getMinimumHeight(overlayRect.height))\r\n : 0;\r\n const left = clamp(overlayRect.left - containerRect.left, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\r\n const top = clamp(overlayRect.top - containerRect.top, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\r\n this._element.style.left = `${left}px`;\r\n this._element.style.top = `${top}px`;\r\n this._onDidChange.fire();\r\n }\r\n toJSON() {\r\n const container = this.options.container.getBoundingClientRect();\r\n const element = this._element.getBoundingClientRect();\r\n return {\r\n top: element.top - container.top,\r\n left: element.left - container.left,\r\n width: element.width,\r\n height: element.height,\r\n };\r\n }\r\n setupDrag(dragTarget, options = { inDragMode: false }) {\r\n const move = new MutableDisposable();\r\n const track = () => {\r\n let offset = null;\r\n const iframes = [\r\n ...getElementsByTagName('iframe'),\r\n ...getElementsByTagName('webview'),\r\n ];\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'none';\r\n }\r\n move.value = new CompositeDisposable({\r\n dispose: () => {\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'auto';\r\n }\r\n },\r\n }, addDisposableWindowListener(window, 'mousemove', (e) => {\r\n const containerRect = this.options.container.getBoundingClientRect();\r\n const x = e.clientX - containerRect.left;\r\n const y = e.clientY - containerRect.top;\r\n toggleClass(this._element, 'dv-resize-container-dragging', true);\r\n const overlayRect = this._element.getBoundingClientRect();\r\n if (offset === null) {\r\n offset = {\r\n x: e.clientX - overlayRect.left,\r\n y: e.clientY - overlayRect.top,\r\n };\r\n }\r\n const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));\r\n const yOffset = Math.max(0, this.options.minimumInViewportHeight\r\n ? this.getMinimumHeight(overlayRect.height)\r\n : 0);\r\n const left = clamp(x - offset.x, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\r\n const top = clamp(y - offset.y, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\r\n this.setBounds({ top, left });\r\n }), addDisposableWindowListener(window, 'mouseup', () => {\r\n toggleClass(this._element, 'dv-resize-container-dragging', false);\r\n move.dispose();\r\n this._onDidChangeEnd.fire();\r\n }));\r\n };\r\n this.addDisposables(move, addDisposableListener(dragTarget, 'mousedown', (event) => {\r\n if (event.defaultPrevented) {\r\n event.preventDefault();\r\n return;\r\n }\r\n // if somebody has marked this event then treat as a defaultPrevented\r\n // without actually calling event.preventDefault()\r\n if (quasiDefaultPrevented(event)) {\r\n return;\r\n }\r\n track();\r\n }), addDisposableListener(this.options.content, 'mousedown', (event) => {\r\n if (event.defaultPrevented) {\r\n return;\r\n }\r\n // if somebody has marked this event then treat as a defaultPrevented\r\n // without actually calling event.preventDefault()\r\n if (quasiDefaultPrevented(event)) {\r\n return;\r\n }\r\n if (event.shiftKey) {\r\n track();\r\n }\r\n }), addDisposableListener(this.options.content, 'mousedown', () => {\r\n bringElementToFront(this._element);\r\n }, true));\r\n bringElementToFront(this._element);\r\n if (options.inDragMode) {\r\n track();\r\n }\r\n }\r\n setupResize(direction) {\r\n const resizeHandleElement = document.createElement('div');\r\n resizeHandleElement.className = `dv-resize-handle-${direction}`;\r\n this._element.appendChild(resizeHandleElement);\r\n const move = new MutableDisposable();\r\n this.addDisposables(move, addDisposableListener(resizeHandleElement, 'mousedown', (e) => {\r\n e.preventDefault();\r\n let startPosition = null;\r\n const iframes = [\r\n ...getElementsByTagName('iframe'),\r\n ...getElementsByTagName('webview'),\r\n ];\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'none';\r\n }\r\n move.value = new CompositeDisposable(addDisposableWindowListener(window, 'mousemove', (e) => {\r\n const containerRect = this.options.container.getBoundingClientRect();\r\n const overlayRect = this._element.getBoundingClientRect();\r\n const y = e.clientY - containerRect.top;\r\n const x = e.clientX - containerRect.left;\r\n if (startPosition === null) {\r\n // record the initial dimensions since as all subsequence moves are relative to this\r\n startPosition = {\r\n originalY: y,\r\n originalHeight: overlayRect.height,\r\n originalX: x,\r\n originalWidth: overlayRect.width,\r\n };\r\n }\r\n let top = undefined;\r\n let height = undefined;\r\n let left = undefined;\r\n let width = undefined;\r\n const moveTop = () => {\r\n top = clamp(y, -Number.MAX_VALUE, startPosition.originalY +\r\n startPosition.originalHeight >\r\n containerRect.height\r\n ? this.getMinimumHeight(containerRect.height)\r\n : Math.max(0, startPosition.originalY +\r\n startPosition.originalHeight -\r\n Overlay.MINIMUM_HEIGHT));\r\n height =\r\n startPosition.originalY +\r\n startPosition.originalHeight -\r\n top;\r\n };\r\n const moveBottom = () => {\r\n top =\r\n startPosition.originalY -\r\n startPosition.originalHeight;\r\n height = clamp(y - top, top < 0 &&\r\n typeof this.options\r\n .minimumInViewportHeight === 'number'\r\n ? -top +\r\n this.options.minimumInViewportHeight\r\n : Overlay.MINIMUM_HEIGHT, Number.MAX_VALUE);\r\n };\r\n const moveLeft = () => {\r\n left = clamp(x, -Number.MAX_VALUE, startPosition.originalX +\r\n startPosition.originalWidth >\r\n containerRect.width\r\n ? this.getMinimumWidth(containerRect.width)\r\n : Math.max(0, startPosition.originalX +\r\n startPosition.originalWidth -\r\n Overlay.MINIMUM_WIDTH));\r\n width =\r\n startPosition.originalX +\r\n startPosition.originalWidth -\r\n left;\r\n };\r\n const moveRight = () => {\r\n left =\r\n startPosition.originalX -\r\n startPosition.originalWidth;\r\n width = clamp(x - left, left < 0 &&\r\n typeof this.options\r\n .minimumInViewportWidth === 'number'\r\n ? -left +\r\n this.options.minimumInViewportWidth\r\n : Overlay.MINIMUM_WIDTH, Number.MAX_VALUE);\r\n };\r\n switch (direction) {\r\n case 'top':\r\n moveTop();\r\n break;\r\n case 'bottom':\r\n moveBottom();\r\n break;\r\n case 'left':\r\n moveLeft();\r\n break;\r\n case 'right':\r\n moveRight();\r\n break;\r\n case 'topleft':\r\n moveTop();\r\n moveLeft();\r\n break;\r\n case 'topright':\r\n moveTop();\r\n moveRight();\r\n break;\r\n case 'bottomleft':\r\n moveBottom();\r\n moveLeft();\r\n break;\r\n case 'bottomright':\r\n moveBottom();\r\n moveRight();\r\n break;\r\n }\r\n this.setBounds({ height, width, top, left });\r\n }), {\r\n dispose: () => {\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'auto';\r\n }\r\n },\r\n }, addDisposableWindowListener(window, 'mouseup', () => {\r\n move.dispose();\r\n this._onDidChangeEnd.fire();\r\n }));\r\n }));\r\n }\r\n getMinimumWidth(width) {\r\n if (typeof this.options.minimumInViewportWidth === 'number') {\r\n return width - this.options.minimumInViewportWidth;\r\n }\r\n return 0;\r\n }\r\n getMinimumHeight(height) {\r\n if (typeof this.options.minimumInViewportHeight === 'number') {\r\n return height - this.options.minimumInViewportHeight;\r\n }\r\n return height;\r\n }\r\n dispose() {\r\n this._element.remove();\r\n super.dispose();\r\n }\r\n}\r\nOverlay.MINIMUM_HEIGHT = 20;\r\nOverlay.MINIMUM_WIDTH = 20;\r\n//# sourceMappingURL=overlay.js.map","import { CompositeDisposable } from '../lifecycle';\r\nexport class DockviewFloatingGroupPanel extends CompositeDisposable {\r\n constructor(group, overlay) {\r\n super();\r\n this.group = group;\r\n this.overlay = overlay;\r\n this.addDisposables(overlay);\r\n }\r\n position(bounds) {\r\n this.overlay.setBounds(bounds);\r\n }\r\n}\r\n//# sourceMappingURL=dockviewFloatingGroupPanel.js.map","import { getRelativeLocation, getGridLocation, } from '../gridview/gridview';\r\nimport { directionToPosition, Droptarget } from '../dnd/droptarget';\r\nimport { tail, sequenceEquals, remove } from '../array';\r\nimport { DockviewPanel } from './dockviewPanel';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nimport { Event, Emitter } from '../events';\r\nimport { Watermark } from './components/watermark/watermark';\r\nimport { DockviewDropTargets, } from './types';\r\nimport { sequentialNumberGenerator } from '../math';\r\nimport { DefaultDockviewDeserialzier } from './deserializer';\r\nimport { createComponent } from '../panel/componentFactory';\r\nimport { isGroupOptionsWithGroup, isGroupOptionsWithPanel, isPanelOptionsWithGroup, isPanelOptionsWithPanel, } from './options';\r\nimport { BaseGrid, toTarget, } from '../gridview/baseComponentGridview';\r\nimport { DockviewApi } from '../api/component.api';\r\nimport { Orientation, Sizing } from '../splitview/splitview';\r\nimport { DockviewGroupPanel } from './dockviewGroupPanel';\r\nimport { DockviewPanelModel } from './dockviewPanelModel';\r\nimport { getPanelData } from '../dnd/dataTransfer';\r\nimport { Overlay } from '../dnd/overlay';\r\nimport { toggleClass, watchElementResize } from '../dom';\r\nimport { DockviewFloatingGroupPanel, } from './dockviewFloatingGroupPanel';\r\nconst DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;\r\nfunction typeValidate3(data, path) {\r\n if (typeof data.id !== 'string') {\r\n throw new Error(`${path}.id must be a string`);\r\n }\r\n if (typeof data.activeView !== 'string' ||\r\n typeof data.activeView !== 'undefined') {\r\n throw new Error(`${path}.activeView must be a string of undefined`);\r\n }\r\n}\r\nfunction typeValidate2(data, path) {\r\n if (typeof data.size !== 'number' && typeof data.size !== 'undefined') {\r\n throw new Error(`${path}.size must be a number or undefined`);\r\n }\r\n if (typeof data.visible !== 'boolean' &&\r\n typeof data.visible !== 'undefined') {\r\n throw new Error(`${path}.visible must be a boolean or undefined`);\r\n }\r\n if (data.type === 'leaf') {\r\n if (typeof data.data !== 'object' ||\r\n data.data === null ||\r\n Array.isArray(data.data)) {\r\n throw new Error('object must be a non-null object');\r\n }\r\n typeValidate3(data.data, `${path}.data`);\r\n }\r\n else if (data.type === 'branch') {\r\n if (!Array.isArray(data.data)) {\r\n throw new Error(`${path}.data must be an array`);\r\n }\r\n }\r\n else {\r\n throw new Error(`${path}.type must be onew of {'branch', 'leaf'}`);\r\n }\r\n}\r\nfunction typeValidate(data) {\r\n if (typeof data !== 'object' || data === null) {\r\n throw new Error('object must be a non-null object');\r\n }\r\n const { grid, panels, activeGroup, floatingGroups } = data;\r\n if (typeof grid !== 'object' || grid === null) {\r\n throw new Error(\"'.grid' must be a non-null object\");\r\n }\r\n if (typeof grid.height !== 'number') {\r\n throw new Error(\"'.grid.height' must be a number\");\r\n }\r\n if (typeof grid.width !== 'number') {\r\n throw new Error(\"'.grid.width' must be a number\");\r\n }\r\n if (typeof grid.root !== 'object' || grid.root === null) {\r\n throw new Error(\"'.grid.root' must be a non-null object\");\r\n }\r\n if (grid.root.type !== 'branch') {\r\n throw new Error(\".grid.root.type must be of type 'branch'\");\r\n }\r\n if (grid.orientation !== Orientation.HORIZONTAL &&\r\n grid.orientation !== Orientation.VERTICAL) {\r\n throw new Error(`'.grid.width' must be one of {${Orientation.HORIZONTAL}, ${Orientation.VERTICAL}}`);\r\n }\r\n typeValidate2(grid.root, '.grid.root');\r\n}\r\nexport class DockviewComponent extends BaseGrid {\r\n get orientation() {\r\n return this.gridview.orientation;\r\n }\r\n get totalPanels() {\r\n return this.panels.length;\r\n }\r\n get panels() {\r\n return this.groups.flatMap((group) => group.panels);\r\n }\r\n get options() {\r\n return this._options;\r\n }\r\n get activePanel() {\r\n const activeGroup = this.activeGroup;\r\n if (!activeGroup) {\r\n return undefined;\r\n }\r\n return activeGroup.activePanel;\r\n }\r\n constructor(options) {\r\n super({\r\n proportionalLayout: true,\r\n orientation: options.orientation || Orientation.HORIZONTAL,\r\n styles: options.styles,\r\n parentElement: options.parentElement,\r\n });\r\n this.nextGroupId = sequentialNumberGenerator();\r\n this._deserializer = new DefaultDockviewDeserialzier(this);\r\n this.watermark = null;\r\n this._onWillDragPanel = new Emitter();\r\n this.onWillDragPanel = this._onWillDragPanel.event;\r\n this._onWillDragGroup = new Emitter();\r\n this.onWillDragGroup = this._onWillDragGroup.event;\r\n this._onDidDrop = new Emitter();\r\n this.onDidDrop = this._onDidDrop.event;\r\n this._onDidRemovePanel = new Emitter();\r\n this.onDidRemovePanel = this._onDidRemovePanel.event;\r\n this._onDidAddPanel = new Emitter();\r\n this.onDidAddPanel = this._onDidAddPanel.event;\r\n this._onDidLayoutFromJSON = new Emitter();\r\n this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;\r\n this._onDidActivePanelChange = new Emitter();\r\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\r\n this.floatingGroups = [];\r\n toggleClass(this.gridview.element, 'dv-dockview', true);\r\n this.addDisposables(this._onWillDragPanel, this._onWillDragGroup, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, Event.any(this.onDidAddGroup, this.onDidRemoveGroup)(() => {\r\n this.updateWatermark();\r\n }), Event.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {\r\n this._bufferOnDidLayoutChange.fire();\r\n }));\r\n this._options = options;\r\n if (!this.options.components) {\r\n this.options.components = {};\r\n }\r\n if (!this.options.frameworkComponents) {\r\n this.options.frameworkComponents = {};\r\n }\r\n if (!this.options.frameworkTabComponents) {\r\n this.options.frameworkTabComponents = {};\r\n }\r\n if (!this.options.tabComponents) {\r\n this.options.tabComponents = {};\r\n }\r\n if (!this.options.watermarkComponent &&\r\n !this.options.watermarkFrameworkComponent) {\r\n this.options.watermarkComponent = Watermark;\r\n }\r\n const dropTarget = new Droptarget(this.element, {\r\n canDisplayOverlay: (event, position) => {\r\n const data = getPanelData();\r\n if (data) {\r\n if (data.viewId !== this.id) {\r\n return false;\r\n }\r\n if (position === 'center') {\r\n // center drop target is only allowed if there are no panels in the grid\r\n // floating panels are allowed\r\n return this.gridview.length === 0;\r\n }\r\n return true;\r\n }\r\n if (this.options.showDndOverlay) {\r\n if (position === 'center' && this.gridview.length !== 0) {\r\n /**\r\n * for external events only show the four-corner drag overlays, disable\r\n * the center position so that external drag events can fall through to the group\r\n * and panel drop target handlers\r\n */\r\n return false;\r\n }\r\n return this.options.showDndOverlay({\r\n nativeEvent: event,\r\n position: position,\r\n target: DockviewDropTargets.Edge,\r\n getData: getPanelData,\r\n });\r\n }\r\n return false;\r\n },\r\n acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],\r\n overlayModel: {\r\n activationSize: { type: 'pixels', value: 10 },\r\n size: { type: 'pixels', value: 20 },\r\n },\r\n });\r\n this.addDisposables(dropTarget.onDrop((event) => {\r\n const data = getPanelData();\r\n if (data) {\r\n this.moveGroupOrPanel(this.orthogonalize(event.position), data.groupId, data.panelId || undefined, 'center');\r\n }\r\n else {\r\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: null, getData: getPanelData }));\r\n }\r\n }), dropTarget);\r\n this._api = new DockviewApi(this);\r\n this.updateWatermark();\r\n }\r\n addFloatingGroup(item, coord, options) {\r\n var _a, _b, _c, _d, _e, _f;\r\n let group;\r\n if (item instanceof DockviewPanel) {\r\n group = this.createGroup();\r\n this.removePanel(item, {\r\n removeEmptyGroup: true,\r\n skipDispose: true,\r\n });\r\n group.model.openPanel(item);\r\n }\r\n else {\r\n group = item;\r\n const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&\r\n options.skipRemoveGroup;\r\n if (!skip) {\r\n this.doRemoveGroup(item, { skipDispose: true });\r\n }\r\n }\r\n group.model.isFloating = true;\r\n const overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number' ? Math.max(coord.x, 0) : 100;\r\n const overlayTop = typeof (coord === null || coord === void 0 ? void 0 : coord.y) === 'number' ? Math.max(coord.y, 0) : 100;\r\n const overlay = new Overlay({\r\n container: this.gridview.element,\r\n content: group.element,\r\n height: (_a = coord === null || coord === void 0 ? void 0 : coord.height) !== null && _a !== void 0 ? _a : 300,\r\n width: (_b = coord === null || coord === void 0 ? void 0 : coord.width) !== null && _b !== void 0 ? _b : 300,\r\n left: overlayLeft,\r\n top: overlayTop,\r\n minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'\r\n ? undefined\r\n : (_d = (_c = this.options.floatingGroupBounds) === null || _c === void 0 ? void 0 : _c.minimumWidthWithinViewport) !== null && _d !== void 0 ? _d : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,\r\n minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'\r\n ? undefined\r\n : (_f = (_e = this.options.floatingGroupBounds) === null || _e === void 0 ? void 0 : _e.minimumHeightWithinViewport) !== null && _f !== void 0 ? _f : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,\r\n });\r\n const el = group.element.querySelector('.void-container');\r\n if (!el) {\r\n throw new Error('failed to find drag handle');\r\n }\r\n overlay.setupDrag(el, {\r\n inDragMode: typeof (options === null || options === void 0 ? void 0 : options.inDragMode) === 'boolean'\r\n ? options.inDragMode\r\n : false,\r\n });\r\n const floatingGroupPanel = new DockviewFloatingGroupPanel(group, overlay);\r\n const disposable = watchElementResize(group.element, (entry) => {\r\n const { width, height } = entry.contentRect;\r\n group.layout(width, height); // let the group know it's size is changing so it can fire events to the panel\r\n });\r\n floatingGroupPanel.addDisposables(overlay.onDidChange(() => {\r\n // this is either a resize or a move\r\n // to inform the panels .layout(...) the group with it's current size\r\n // don't care about resize since the above watcher handles that\r\n group.layout(group.height, group.width);\r\n }), overlay.onDidChangeEnd(() => {\r\n this._bufferOnDidLayoutChange.fire();\r\n }), group.onDidChange((event) => {\r\n overlay.setBounds({\r\n height: event === null || event === void 0 ? void 0 : event.height,\r\n width: event === null || event === void 0 ? void 0 : event.width,\r\n });\r\n }), {\r\n dispose: () => {\r\n disposable.dispose();\r\n group.model.isFloating = false;\r\n remove(this.floatingGroups, floatingGroupPanel);\r\n this.updateWatermark();\r\n },\r\n });\r\n this.floatingGroups.push(floatingGroupPanel);\r\n this.updateWatermark();\r\n }\r\n orthogonalize(position) {\r\n switch (position) {\r\n case 'top':\r\n case 'bottom':\r\n if (this.gridview.orientation === Orientation.HORIZONTAL) {\r\n // we need to add to a vertical splitview but the current root is a horizontal splitview.\r\n // insert a vertical splitview at the root level and add the existing view as a child\r\n this.gridview.insertOrthogonalSplitviewAtRoot();\r\n }\r\n break;\r\n case 'left':\r\n case 'right':\r\n if (this.gridview.orientation === Orientation.VERTICAL) {\r\n // we need to add to a horizontal splitview but the current root is a vertical splitview.\r\n // insert a horiziontal splitview at the root level and add the existing view as a child\r\n this.gridview.insertOrthogonalSplitviewAtRoot();\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n switch (position) {\r\n case 'top':\r\n case 'left':\r\n case 'center':\r\n return this.createGroupAtLocation([0]); // insert into first position\r\n case 'bottom':\r\n case 'right':\r\n return this.createGroupAtLocation([this.gridview.length]); // insert into last position\r\n default:\r\n throw new Error(`unsupported position ${position}`);\r\n }\r\n }\r\n updateOptions(options) {\r\n var _a, _b;\r\n const hasOrientationChanged = typeof options.orientation === 'string' &&\r\n this.gridview.orientation !== options.orientation;\r\n const hasFloatingGroupOptionsChanged = options.floatingGroupBounds !== undefined &&\r\n options.floatingGroupBounds !== this.options.floatingGroupBounds;\r\n this._options = Object.assign(Object.assign({}, this.options), options);\r\n if (hasOrientationChanged) {\r\n this.gridview.orientation = options.orientation;\r\n }\r\n if (hasFloatingGroupOptionsChanged) {\r\n for (const group of this.floatingGroups) {\r\n switch (this.options.floatingGroupBounds) {\r\n case 'boundedWithinViewport':\r\n group.overlay.minimumInViewportHeight = undefined;\r\n group.overlay.minimumInViewportWidth = undefined;\r\n break;\r\n case undefined:\r\n group.overlay.minimumInViewportHeight =\r\n DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;\r\n group.overlay.minimumInViewportWidth =\r\n DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;\r\n break;\r\n default:\r\n group.overlay.minimumInViewportHeight =\r\n (_a = this.options.floatingGroupBounds) === null || _a === void 0 ? void 0 : _a.minimumHeightWithinViewport;\r\n group.overlay.minimumInViewportWidth =\r\n (_b = this.options.floatingGroupBounds) === null || _b === void 0 ? void 0 : _b.minimumWidthWithinViewport;\r\n }\r\n group.overlay.setBounds({});\r\n }\r\n }\r\n this.layout(this.gridview.width, this.gridview.height, true);\r\n }\r\n layout(width, height, forceResize) {\r\n super.layout(width, height, forceResize);\r\n if (this.floatingGroups) {\r\n for (const floating of this.floatingGroups) {\r\n // ensure floting groups stay within visible boundaries\r\n floating.overlay.setBounds();\r\n }\r\n }\r\n }\r\n focus() {\r\n var _a;\r\n (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();\r\n }\r\n getGroupPanel(id) {\r\n return this.panels.find((panel) => panel.id === id);\r\n }\r\n setActivePanel(panel) {\r\n this.doSetGroupActive(panel.group);\r\n panel.group.model.openPanel(panel);\r\n }\r\n moveToNext(options = {}) {\r\n var _a;\r\n if (!options.group) {\r\n if (!this.activeGroup) {\r\n return;\r\n }\r\n options.group = this.activeGroup;\r\n }\r\n if (options.includePanel && options.group) {\r\n if (options.group.activePanel !==\r\n options.group.panels[options.group.panels.length - 1]) {\r\n options.group.model.moveToNext({ suppressRoll: true });\r\n return;\r\n }\r\n }\r\n const location = getGridLocation(options.group.element);\r\n const next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;\r\n this.doSetGroupActive(next);\r\n }\r\n moveToPrevious(options = {}) {\r\n var _a;\r\n if (!options.group) {\r\n if (!this.activeGroup) {\r\n return;\r\n }\r\n options.group = this.activeGroup;\r\n }\r\n if (options.includePanel && options.group) {\r\n if (options.group.activePanel !== options.group.panels[0]) {\r\n options.group.model.moveToPrevious({ suppressRoll: true });\r\n return;\r\n }\r\n }\r\n const location = getGridLocation(options.group.element);\r\n const next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;\r\n if (next) {\r\n this.doSetGroupActive(next);\r\n }\r\n }\r\n /**\r\n * Serialize the current state of the layout\r\n *\r\n * @returns A JSON respresentation of the layout\r\n */\r\n toJSON() {\r\n var _a;\r\n const data = this.gridview.serialize();\r\n const panels = this.panels.reduce((collection, panel) => {\r\n collection[panel.id] = panel.toJSON();\r\n return collection;\r\n }, {});\r\n const floats = this.floatingGroups.map((floatingGroup) => {\r\n return {\r\n data: floatingGroup.group.toJSON(),\r\n position: floatingGroup.overlay.toJSON(),\r\n };\r\n });\r\n const result = {\r\n grid: data,\r\n panels,\r\n activeGroup: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,\r\n };\r\n if (floats.length > 0) {\r\n result.floatingGroups = floats;\r\n }\r\n return result;\r\n }\r\n fromJSON(data) {\r\n var _a;\r\n this.clear();\r\n if (typeof data !== 'object' || data === null) {\r\n throw new Error('serialized layout must be a non-null object');\r\n }\r\n const { grid, panels, activeGroup } = data;\r\n if (grid.root.type !== 'branch' || !Array.isArray(grid.root.data)) {\r\n throw new Error('root must be of type branch');\r\n }\r\n try {\r\n // take note of the existing dimensions\r\n const width = this.width;\r\n const height = this.height;\r\n const createGroupFromSerializedState = (data) => {\r\n const { id, locked, hideHeader, views, activeView } = data;\r\n if (typeof id !== 'string') {\r\n throw new Error('group id must be of type string');\r\n }\r\n const group = this.createGroup({\r\n id,\r\n locked: !!locked,\r\n hideHeader: !!hideHeader,\r\n });\r\n const createdPanels = [];\r\n for (const child of views) {\r\n /**\r\n * Run the deserializer step seperately since this may fail to due corrupted external state.\r\n * In running this section first we avoid firing lots of 'add' events in the event of a failure\r\n * due to a corruption of input data.\r\n */\r\n const panel = this._deserializer.fromJSON(panels[child], group);\r\n createdPanels.push(panel);\r\n }\r\n this._onDidAddGroup.fire(group);\r\n for (let i = 0; i < views.length; i++) {\r\n const panel = createdPanels[i];\r\n const isActive = typeof activeView === 'string' &&\r\n activeView === panel.id;\r\n group.model.openPanel(panel, {\r\n skipSetPanelActive: !isActive,\r\n skipSetGroupActive: true,\r\n });\r\n }\r\n if (!group.activePanel && group.panels.length > 0) {\r\n group.model.openPanel(group.panels[group.panels.length - 1], {\r\n skipSetGroupActive: true,\r\n });\r\n }\r\n return group;\r\n };\r\n this.gridview.deserialize(grid, {\r\n fromJSON: (node) => {\r\n return createGroupFromSerializedState(node.data);\r\n },\r\n });\r\n this.layout(width, height, true);\r\n const serializedFloatingGroups = (_a = data.floatingGroups) !== null && _a !== void 0 ? _a : [];\r\n for (const serializedFloatingGroup of serializedFloatingGroups) {\r\n const { data, position } = serializedFloatingGroup;\r\n const group = createGroupFromSerializedState(data);\r\n this.addFloatingGroup(group, {\r\n x: position.left,\r\n y: position.top,\r\n height: position.height,\r\n width: position.width,\r\n }, { skipRemoveGroup: true, inDragMode: false });\r\n }\r\n for (const floatingGroup of this.floatingGroups) {\r\n floatingGroup.overlay.setBounds();\r\n }\r\n if (typeof activeGroup === 'string') {\r\n const panel = this.getPanel(activeGroup);\r\n if (panel) {\r\n this.doSetGroupActive(panel);\r\n }\r\n }\r\n }\r\n catch (err) {\r\n /**\r\n * Takes all the successfully created groups and remove all of their panels.\r\n */\r\n for (const group of this.groups) {\r\n for (const panel of group.panels) {\r\n this.removePanel(panel, {\r\n removeEmptyGroup: false,\r\n skipDispose: false,\r\n });\r\n }\r\n }\r\n /**\r\n * To remove a group we cannot call this.removeGroup(...) since this makes assumptions about\r\n * the underlying HTMLElement existing in the Gridview.\r\n */\r\n for (const group of this.groups) {\r\n group.dispose();\r\n this._groups.delete(group.id);\r\n this._onDidRemoveGroup.fire(group);\r\n }\r\n // iterate over a reassigned array since original array will be modified\r\n for (const floatingGroup of [...this.floatingGroups]) {\r\n floatingGroup.dispose();\r\n }\r\n // fires clean-up events and clears the underlying HTML gridview.\r\n this.clear();\r\n /**\r\n * even though we have cleaned-up we still want to inform the caller of their error\r\n * and we'll do this through re-throwing the original error since afterall you would\r\n * expect trying to load a corrupted layout to result in an error and not silently fail...\r\n */\r\n throw err;\r\n }\r\n this._onDidLayoutFromJSON.fire();\r\n }\r\n clear() {\r\n const groups = Array.from(this._groups.values()).map((_) => _.value);\r\n const hasActiveGroup = !!this.activeGroup;\r\n const hasActivePanel = !!this.activePanel;\r\n for (const group of groups) {\r\n // remove the group will automatically remove the panels\r\n this.removeGroup(group, { skipActive: true });\r\n }\r\n if (hasActiveGroup) {\r\n this.doSetGroupActive(undefined);\r\n }\r\n if (hasActivePanel) {\r\n this._onDidActivePanelChange.fire(undefined);\r\n }\r\n this.gridview.clear();\r\n }\r\n closeAllGroups() {\r\n for (const entry of this._groups.entries()) {\r\n const [_, group] = entry;\r\n group.value.model.closeAllPanels();\r\n }\r\n }\r\n addPanel(options) {\r\n var _a, _b;\r\n if (this.panels.find((_) => _.id === options.id)) {\r\n throw new Error(`panel with id ${options.id} already exists`);\r\n }\r\n let referenceGroup;\r\n if (options.position && options.floating) {\r\n throw new Error('you can only provide one of: position, floating as arguments to .addPanel(...)');\r\n }\r\n if (options.position) {\r\n if (isPanelOptionsWithPanel(options.position)) {\r\n const referencePanel = typeof options.position.referencePanel === 'string'\r\n ? this.getGroupPanel(options.position.referencePanel)\r\n : options.position.referencePanel;\r\n if (!referencePanel) {\r\n throw new Error(`referencePanel ${options.position.referencePanel} does not exist`);\r\n }\r\n referenceGroup = this.findGroup(referencePanel);\r\n }\r\n else if (isPanelOptionsWithGroup(options.position)) {\r\n referenceGroup =\r\n typeof options.position.referenceGroup === 'string'\r\n ? (_a = this._groups.get(options.position.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value\r\n : options.position.referenceGroup;\r\n if (!referenceGroup) {\r\n throw new Error(`referencePanel ${options.position.referenceGroup} does not exist`);\r\n }\r\n }\r\n else {\r\n const group = this.orthogonalize(directionToPosition(options.position.direction));\r\n const panel = this.createPanel(options, group);\r\n group.model.openPanel(panel);\r\n return panel;\r\n }\r\n }\r\n else {\r\n referenceGroup = this.activeGroup;\r\n }\r\n let panel;\r\n if (referenceGroup) {\r\n const target = toTarget(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');\r\n if (options.floating) {\r\n const group = this.createGroup();\r\n panel = this.createPanel(options, group);\r\n group.model.openPanel(panel);\r\n const o = typeof options.floating === 'object' &&\r\n options.floating !== null\r\n ? options.floating\r\n : {};\r\n this.addFloatingGroup(group, o, {\r\n inDragMode: false,\r\n skipRemoveGroup: true,\r\n });\r\n }\r\n else if (referenceGroup.api.isFloating || target === 'center') {\r\n panel = this.createPanel(options, referenceGroup);\r\n referenceGroup.model.openPanel(panel);\r\n }\r\n else {\r\n const location = getGridLocation(referenceGroup.element);\r\n const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\r\n const group = this.createGroupAtLocation(relativeLocation);\r\n panel = this.createPanel(options, group);\r\n group.model.openPanel(panel);\r\n }\r\n }\r\n else if (options.floating) {\r\n const group = this.createGroup();\r\n panel = this.createPanel(options, group);\r\n group.model.openPanel(panel);\r\n const o = typeof options.floating === 'object' &&\r\n options.floating !== null\r\n ? options.floating\r\n : {};\r\n this.addFloatingGroup(group, o, {\r\n inDragMode: false,\r\n skipRemoveGroup: true,\r\n });\r\n }\r\n else {\r\n const group = this.createGroupAtLocation();\r\n panel = this.createPanel(options, group);\r\n group.model.openPanel(panel);\r\n }\r\n return panel;\r\n }\r\n removePanel(panel, options = {\r\n removeEmptyGroup: true,\r\n skipDispose: false,\r\n }) {\r\n const group = panel.group;\r\n if (!group) {\r\n throw new Error(`cannot remove panel ${panel.id}. it's missing a group.`);\r\n }\r\n group.model.removePanel(panel);\r\n if (!options.skipDispose) {\r\n panel.dispose();\r\n }\r\n if (group.size === 0 && options.removeEmptyGroup) {\r\n this.removeGroup(group);\r\n }\r\n }\r\n createWatermarkComponent() {\r\n var _a;\r\n return createComponent('watermark-id', 'watermark-name', this.options.watermarkComponent\r\n ? { 'watermark-name': this.options.watermarkComponent }\r\n : {}, this.options.watermarkFrameworkComponent\r\n ? { 'watermark-name': this.options.watermarkFrameworkComponent }\r\n : {}, (_a = this.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.watermark);\r\n }\r\n updateWatermark() {\r\n var _a, _b;\r\n if (this.groups.filter((x) => !x.api.isFloating).length === 0) {\r\n if (!this.watermark) {\r\n this.watermark = this.createWatermarkComponent();\r\n this.watermark.init({\r\n containerApi: new DockviewApi(this),\r\n });\r\n const watermarkContainer = document.createElement('div');\r\n watermarkContainer.className = 'dv-watermark-container';\r\n watermarkContainer.appendChild(this.watermark.element);\r\n this.gridview.element.appendChild(watermarkContainer);\r\n }\r\n }\r\n else if (this.watermark) {\r\n this.watermark.element.parentElement.remove();\r\n (_b = (_a = this.watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n this.watermark = null;\r\n }\r\n }\r\n addGroup(options) {\r\n var _a;\r\n const group = this.createGroup();\r\n if (options) {\r\n let referenceGroup;\r\n if (isGroupOptionsWithPanel(options)) {\r\n const referencePanel = typeof options.referencePanel === 'string'\r\n ? this.panels.find((panel) => panel.id === options.referencePanel)\r\n : options.referencePanel;\r\n if (!referencePanel) {\r\n throw new Error(`reference panel ${options.referencePanel} does not exist`);\r\n }\r\n referenceGroup = this.findGroup(referencePanel);\r\n if (!referenceGroup) {\r\n throw new Error(`reference group for reference panel ${options.referencePanel} does not exist`);\r\n }\r\n }\r\n else if (isGroupOptionsWithGroup(options)) {\r\n referenceGroup =\r\n typeof options.referenceGroup === 'string'\r\n ? (_a = this._groups.get(options.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value\r\n : options.referenceGroup;\r\n if (!referenceGroup) {\r\n throw new Error(`reference group ${options.referenceGroup} does not exist`);\r\n }\r\n }\r\n else {\r\n const group = this.orthogonalize(directionToPosition(options.direction));\r\n return group;\r\n }\r\n const target = toTarget(options.direction || 'within');\r\n const location = getGridLocation(referenceGroup.element);\r\n const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\r\n this.doAddGroup(group, relativeLocation);\r\n return group;\r\n }\r\n else {\r\n this.doAddGroup(group);\r\n return group;\r\n }\r\n }\r\n removeGroup(group, options) {\r\n var _a;\r\n const panels = [...group.panels]; // reassign since group panels will mutate\r\n for (const panel of panels) {\r\n this.removePanel(panel, {\r\n removeEmptyGroup: false,\r\n skipDispose: (_a = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _a !== void 0 ? _a : false,\r\n });\r\n }\r\n this.doRemoveGroup(group, options);\r\n }\r\n doRemoveGroup(group, options) {\r\n const floatingGroup = this.floatingGroups.find((_) => _.group === group);\r\n if (floatingGroup) {\r\n if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {\r\n floatingGroup.group.dispose();\r\n this._groups.delete(group.id);\r\n // TODO: fire group removed event?\r\n }\r\n floatingGroup.dispose();\r\n return floatingGroup.group;\r\n }\r\n return super.doRemoveGroup(group, options);\r\n }\r\n moveGroupOrPanel(destinationGroup, sourceGroupId, sourceItemId, destinationTarget, destinationIndex) {\r\n var _a;\r\n const sourceGroup = sourceGroupId\r\n ? (_a = this._groups.get(sourceGroupId)) === null || _a === void 0 ? void 0 : _a.value\r\n : undefined;\r\n if (sourceItemId === undefined) {\r\n if (sourceGroup) {\r\n this.moveGroup(sourceGroup, destinationGroup, destinationTarget);\r\n }\r\n return;\r\n }\r\n if (!destinationTarget || destinationTarget === 'center') {\r\n const groupItem = (sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(sourceItemId)) ||\r\n this.panels.find((panel) => panel.id === sourceItemId);\r\n if (!groupItem) {\r\n throw new Error(`No panel with id ${sourceItemId}`);\r\n }\r\n if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {\r\n this.doRemoveGroup(sourceGroup);\r\n }\r\n destinationGroup.model.openPanel(groupItem, {\r\n index: destinationIndex,\r\n });\r\n }\r\n else {\r\n const referenceLocation = getGridLocation(destinationGroup.element);\r\n const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);\r\n if (sourceGroup && sourceGroup.size < 2) {\r\n const [targetParentLocation, to] = tail(targetLocation);\r\n const isFloating = this.floatingGroups.find((x) => x.group === sourceGroup);\r\n if (!isFloating) {\r\n const sourceLocation = getGridLocation(sourceGroup.element);\r\n const [sourceParentLocation, from] = tail(sourceLocation);\r\n if (sequenceEquals(sourceParentLocation, targetParentLocation)) {\r\n // special case when 'swapping' two views within same grid location\r\n // if a group has one tab - we are essentially moving the 'group'\r\n // which is equivalent to swapping two views in this case\r\n this.gridview.moveView(sourceParentLocation, from, to);\r\n }\r\n }\r\n // source group will become empty so delete the group\r\n const targetGroup = this.doRemoveGroup(sourceGroup, {\r\n skipActive: true,\r\n skipDispose: true,\r\n });\r\n // after deleting the group we need to re-evaulate the ref location\r\n const updatedReferenceLocation = getGridLocation(destinationGroup.element);\r\n const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, destinationTarget);\r\n this.doAddGroup(targetGroup, location);\r\n }\r\n else {\r\n const groupItem = (sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(sourceItemId)) ||\r\n this.panels.find((panel) => panel.id === sourceItemId);\r\n if (!groupItem) {\r\n throw new Error(`No panel with id ${sourceItemId}`);\r\n }\r\n const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);\r\n const group = this.createGroupAtLocation(dropLocation);\r\n group.model.openPanel(groupItem);\r\n }\r\n }\r\n }\r\n moveGroup(sourceGroup, referenceGroup, target) {\r\n if (sourceGroup) {\r\n if (!target || target === 'center') {\r\n const activePanel = sourceGroup.activePanel;\r\n const panels = [...sourceGroup.panels].map((p) => sourceGroup.model.removePanel(p.id));\r\n if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {\r\n this.doRemoveGroup(sourceGroup);\r\n }\r\n for (const panel of panels) {\r\n referenceGroup.model.openPanel(panel, {\r\n skipSetPanelActive: panel !== activePanel,\r\n });\r\n }\r\n }\r\n else {\r\n const floatingGroup = this.floatingGroups.find((x) => x.group === sourceGroup);\r\n if (floatingGroup) {\r\n floatingGroup.dispose();\r\n }\r\n else {\r\n this.gridview.removeView(getGridLocation(sourceGroup.element));\r\n }\r\n const referenceLocation = getGridLocation(referenceGroup.element);\r\n const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);\r\n this.gridview.addView(sourceGroup, Sizing.Distribute, dropLocation);\r\n }\r\n }\r\n }\r\n doSetGroupActive(group, skipFocus) {\r\n var _a, _b;\r\n const isGroupAlreadyFocused = this._activeGroup === group;\r\n super.doSetGroupActive(group, skipFocus);\r\n if (!isGroupAlreadyFocused && ((_a = this._activeGroup) === null || _a === void 0 ? void 0 : _a.activePanel)) {\r\n this._onDidActivePanelChange.fire((_b = this._activeGroup) === null || _b === void 0 ? void 0 : _b.activePanel);\r\n }\r\n }\r\n createGroup(options) {\r\n if (!options) {\r\n options = {};\r\n }\r\n let id = options === null || options === void 0 ? void 0 : options.id;\r\n if (id && this._groups.has(options.id)) {\r\n console.warn(`Duplicate group id ${options === null || options === void 0 ? void 0 : options.id}. reassigning group id to avoid errors`);\r\n id = undefined;\r\n }\r\n if (!id) {\r\n id = this.nextGroupId.next();\r\n while (this._groups.has(id)) {\r\n id = this.nextGroupId.next();\r\n }\r\n }\r\n const view = new DockviewGroupPanel(this, id, options);\r\n view.init({ params: {}, accessor: null }); // required to initialized .part and allow for correct disposal of group\r\n if (!this._groups.has(view.id)) {\r\n const disposable = new CompositeDisposable(view.model.onTabDragStart((event) => {\r\n this._onWillDragPanel.fire(event);\r\n }), view.model.onGroupDragStart((event) => {\r\n this._onWillDragGroup.fire(event);\r\n }), view.model.onMove((event) => {\r\n const { groupId, itemId, target, index } = event;\r\n this.moveGroupOrPanel(view, groupId, itemId, target, index);\r\n }), view.model.onDidDrop((event) => {\r\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: view }));\r\n }), view.model.onDidAddPanel((event) => {\r\n this._onDidAddPanel.fire(event.panel);\r\n }), view.model.onDidRemovePanel((event) => {\r\n this._onDidRemovePanel.fire(event.panel);\r\n }), view.model.onDidActivePanelChange((event) => {\r\n this._onDidActivePanelChange.fire(event.panel);\r\n }));\r\n this._groups.set(view.id, { value: view, disposable });\r\n }\r\n // TODO: must be called after the above listeners have been setup,\r\n // not an ideal pattern\r\n view.initialize();\r\n return view;\r\n }\r\n createPanel(options, group) {\r\n const contentComponent = options.component;\r\n const tabComponent = options.tabComponent || this.options.defaultTabComponent;\r\n const view = new DockviewPanelModel(this, options.id, contentComponent, tabComponent);\r\n const panel = new DockviewPanel(options.id, this, this._api, group, view);\r\n panel.init({\r\n title: options.title || options.id,\r\n params: (options === null || options === void 0 ? void 0 : options.params) || {},\r\n });\r\n return panel;\r\n }\r\n createGroupAtLocation(location = [0]) {\r\n const group = this.createGroup();\r\n this.doAddGroup(group, location);\r\n return group;\r\n }\r\n findGroup(panel) {\r\n var _a;\r\n return (_a = Array.from(this._groups.values()).find((group) => group.value.model.containsPanel(panel))) === null || _a === void 0 ? void 0 : _a.value;\r\n }\r\n}\r\n//# sourceMappingURL=dockviewComponent.js.map","import { getRelativeLocation, getGridLocation, } from './gridview';\r\nimport { tail, sequenceEquals } from '../array';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nimport { BaseGrid, toTarget, } from './baseComponentGridview';\r\nimport { createComponent } from '../panel/componentFactory';\r\nimport { Emitter } from '../events';\r\nexport class GridviewComponent extends BaseGrid {\r\n get orientation() {\r\n return this.gridview.orientation;\r\n }\r\n set orientation(value) {\r\n this.gridview.orientation = value;\r\n }\r\n get options() {\r\n return this._options;\r\n }\r\n get deserializer() {\r\n return this._deserializer;\r\n }\r\n set deserializer(value) {\r\n this._deserializer = value;\r\n }\r\n constructor(options) {\r\n super({\r\n parentElement: options.parentElement,\r\n proportionalLayout: options.proportionalLayout,\r\n orientation: options.orientation,\r\n styles: options.styles,\r\n });\r\n this._onDidLayoutfromJSON = new Emitter();\r\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\r\n this._options = options;\r\n if (!this.options.components) {\r\n this.options.components = {};\r\n }\r\n if (!this.options.frameworkComponents) {\r\n this.options.frameworkComponents = {};\r\n }\r\n }\r\n updateOptions(options) {\r\n const hasOrientationChanged = typeof options.orientation === 'string' &&\r\n this.gridview.orientation !== options.orientation;\r\n this._options = Object.assign(Object.assign({}, this.options), options);\r\n if (hasOrientationChanged) {\r\n this.gridview.orientation = options.orientation;\r\n }\r\n this.layout(this.gridview.width, this.gridview.height, true);\r\n }\r\n removePanel(panel) {\r\n this.removeGroup(panel);\r\n }\r\n /**\r\n * Serialize the current state of the layout\r\n *\r\n * @returns A JSON respresentation of the layout\r\n */\r\n toJSON() {\r\n var _a;\r\n const data = this.gridview.serialize();\r\n return {\r\n grid: data,\r\n activePanel: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,\r\n };\r\n }\r\n setVisible(panel, visible) {\r\n this.gridview.setViewVisible(getGridLocation(panel.element), visible);\r\n }\r\n setActive(panel) {\r\n this._groups.forEach((value, _key) => {\r\n value.value.setActive(panel === value.value);\r\n });\r\n }\r\n focus() {\r\n var _a;\r\n (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();\r\n }\r\n fromJSON(serializedGridview) {\r\n this.clear();\r\n const { grid, activePanel } = serializedGridview;\r\n try {\r\n const queue = [];\r\n // take note of the existing dimensions\r\n const width = this.width;\r\n const height = this.height;\r\n this.gridview.deserialize(grid, {\r\n fromJSON: (node) => {\r\n const { data } = node;\r\n const view = createComponent(data.id, data.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkComponentFactory\r\n ? {\r\n createComponent: this.options.frameworkComponentFactory\r\n .createComponent,\r\n }\r\n : undefined);\r\n queue.push(() => view.init({\r\n params: data.params,\r\n minimumWidth: data.minimumWidth,\r\n maximumWidth: data.maximumWidth,\r\n minimumHeight: data.minimumHeight,\r\n maximumHeight: data.maximumHeight,\r\n priority: data.priority,\r\n snap: !!data.snap,\r\n accessor: this,\r\n isVisible: node.visible,\r\n }));\r\n this._onDidAddGroup.fire(view);\r\n this.registerPanel(view);\r\n return view;\r\n },\r\n });\r\n this.layout(width, height, true);\r\n queue.forEach((f) => f());\r\n if (typeof activePanel === 'string') {\r\n const panel = this.getPanel(activePanel);\r\n if (panel) {\r\n this.doSetGroupActive(panel);\r\n }\r\n }\r\n }\r\n catch (err) {\r\n /**\r\n * To remove a group we cannot call this.removeGroup(...) since this makes assumptions about\r\n * the underlying HTMLElement existing in the Gridview.\r\n */\r\n for (const group of this.groups) {\r\n group.dispose();\r\n this._groups.delete(group.id);\r\n this._onDidRemoveGroup.fire(group);\r\n }\r\n // fires clean-up events and clears the underlying HTML gridview.\r\n this.clear();\r\n /**\r\n * even though we have cleaned-up we still want to inform the caller of their error\r\n * and we'll do this through re-throwing the original error since afterall you would\r\n * expect trying to load a corrupted layout to result in an error and not silently fail...\r\n */\r\n throw err;\r\n }\r\n this._onDidLayoutfromJSON.fire();\r\n }\r\n clear() {\r\n const hasActiveGroup = this.activeGroup;\r\n const groups = Array.from(this._groups.values()); // reassign since group panels will mutate\r\n for (const group of groups) {\r\n group.disposable.dispose();\r\n this.doRemoveGroup(group.value, { skipActive: true });\r\n }\r\n if (hasActiveGroup) {\r\n this.doSetGroupActive(undefined);\r\n }\r\n this.gridview.clear();\r\n }\r\n movePanel(panel, options) {\r\n var _a;\r\n let relativeLocation;\r\n const removedPanel = this.gridview.remove(panel);\r\n const referenceGroup = (_a = this._groups.get(options.reference)) === null || _a === void 0 ? void 0 : _a.value;\r\n if (!referenceGroup) {\r\n throw new Error(`reference group ${options.reference} does not exist`);\r\n }\r\n const target = toTarget(options.direction);\r\n if (target === 'center') {\r\n throw new Error(`${target} not supported as an option`);\r\n }\r\n else {\r\n const location = getGridLocation(referenceGroup.element);\r\n relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\r\n }\r\n this.doAddGroup(removedPanel, relativeLocation, options.size);\r\n }\r\n addPanel(options) {\r\n var _a, _b;\r\n let relativeLocation = options.location || [0];\r\n if ((_a = options.position) === null || _a === void 0 ? void 0 : _a.referencePanel) {\r\n const referenceGroup = (_b = this._groups.get(options.position.referencePanel)) === null || _b === void 0 ? void 0 : _b.value;\r\n if (!referenceGroup) {\r\n throw new Error(`reference group ${options.position.referencePanel} does not exist`);\r\n }\r\n const target = toTarget(options.position.direction);\r\n if (target === 'center') {\r\n throw new Error(`${target} not supported as an option`);\r\n }\r\n else {\r\n const location = getGridLocation(referenceGroup.element);\r\n relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\r\n }\r\n }\r\n const view = createComponent(options.id, options.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkComponentFactory\r\n ? {\r\n createComponent: this.options.frameworkComponentFactory\r\n .createComponent,\r\n }\r\n : undefined);\r\n view.init({\r\n params: options.params || {},\r\n minimumWidth: options.minimumWidth,\r\n maximumWidth: options.maximumWidth,\r\n minimumHeight: options.minimumHeight,\r\n maximumHeight: options.maximumHeight,\r\n priority: options.priority,\r\n snap: !!options.snap,\r\n accessor: this,\r\n isVisible: true,\r\n });\r\n this.registerPanel(view);\r\n this.doAddGroup(view, relativeLocation, options.size);\r\n return view;\r\n }\r\n registerPanel(panel) {\r\n const disposable = new CompositeDisposable(panel.api.onDidFocusChange((event) => {\r\n if (!event.isFocused) {\r\n return;\r\n }\r\n this._groups.forEach((groupItem) => {\r\n const group = groupItem.value;\r\n if (group !== panel) {\r\n group.setActive(false);\r\n }\r\n else {\r\n group.setActive(true);\r\n }\r\n });\r\n }));\r\n this._groups.set(panel.id, {\r\n value: panel,\r\n disposable,\r\n });\r\n }\r\n moveGroup(referenceGroup, groupId, target) {\r\n const sourceGroup = this.getPanel(groupId);\r\n if (!sourceGroup) {\r\n throw new Error('invalid operation');\r\n }\r\n const referenceLocation = getGridLocation(referenceGroup.element);\r\n const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);\r\n const [targetParentLocation, to] = tail(targetLocation);\r\n const sourceLocation = getGridLocation(sourceGroup.element);\r\n const [sourceParentLocation, from] = tail(sourceLocation);\r\n if (sequenceEquals(sourceParentLocation, targetParentLocation)) {\r\n // special case when 'swapping' two views within same grid location\r\n // if a group has one tab - we are essentially moving the 'group'\r\n // which is equivalent to swapping two views in this case\r\n this.gridview.moveView(sourceParentLocation, from, to);\r\n return;\r\n }\r\n // source group will become empty so delete the group\r\n const targetGroup = this.doRemoveGroup(sourceGroup, {\r\n skipActive: true,\r\n skipDispose: true,\r\n });\r\n // after deleting the group we need to re-evaulate the ref location\r\n const updatedReferenceLocation = getGridLocation(referenceGroup.element);\r\n const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, target);\r\n this.doAddGroup(targetGroup, location);\r\n }\r\n removeGroup(group) {\r\n super.removeGroup(group);\r\n }\r\n dispose() {\r\n super.dispose();\r\n this._onDidLayoutfromJSON.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=gridviewComponent.js.map","import { CompositeDisposable, MutableDisposable, } from '../lifecycle';\r\nimport { Orientation, Sizing, Splitview, } from './splitview';\r\nimport { Emitter } from '../events';\r\nimport { createComponent } from '../panel/componentFactory';\r\nimport { Resizable } from '../resizable';\r\n/**\r\n * A high-level implementation of splitview that works using 'panels'\r\n */\r\nexport class SplitviewComponent extends Resizable {\r\n get panels() {\r\n return this.splitview.getViews();\r\n }\r\n get options() {\r\n return this._options;\r\n }\r\n get length() {\r\n return this._panels.size;\r\n }\r\n get orientation() {\r\n return this.splitview.orientation;\r\n }\r\n get splitview() {\r\n return this._splitview;\r\n }\r\n set splitview(value) {\r\n this._splitview = value;\r\n this._splitviewChangeDisposable.value = new CompositeDisposable(this._splitview.onDidSashEnd(() => {\r\n this._onDidLayoutChange.fire(undefined);\r\n }), this._splitview.onDidAddView((e) => this._onDidAddView.fire(e)), this._splitview.onDidRemoveView((e) => this._onDidRemoveView.fire(e)));\r\n }\r\n get minimumSize() {\r\n return this.splitview.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.splitview.maximumSize;\r\n }\r\n get height() {\r\n return this.splitview.orientation === Orientation.HORIZONTAL\r\n ? this.splitview.orthogonalSize\r\n : this.splitview.size;\r\n }\r\n get width() {\r\n return this.splitview.orientation === Orientation.HORIZONTAL\r\n ? this.splitview.size\r\n : this.splitview.orthogonalSize;\r\n }\r\n constructor(options) {\r\n super(options.parentElement);\r\n this._splitviewChangeDisposable = new MutableDisposable();\r\n this._panels = new Map();\r\n this._onDidLayoutfromJSON = new Emitter();\r\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\r\n this._onDidAddView = new Emitter();\r\n this.onDidAddView = this._onDidAddView.event;\r\n this._onDidRemoveView = new Emitter();\r\n this.onDidRemoveView = this._onDidRemoveView.event;\r\n this._onDidLayoutChange = new Emitter();\r\n this.onDidLayoutChange = this._onDidLayoutChange.event;\r\n this._options = options;\r\n if (!options.components) {\r\n options.components = {};\r\n }\r\n if (!options.frameworkComponents) {\r\n options.frameworkComponents = {};\r\n }\r\n this.splitview = new Splitview(this.element, options);\r\n this.addDisposables(this._onDidAddView, this._onDidLayoutfromJSON, this._onDidRemoveView, this._onDidLayoutChange);\r\n }\r\n updateOptions(options) {\r\n const hasOrientationChanged = typeof options.orientation === 'string' &&\r\n this.options.orientation !== options.orientation;\r\n this._options = Object.assign(Object.assign({}, this.options), options);\r\n if (hasOrientationChanged) {\r\n this.splitview.orientation = options.orientation;\r\n }\r\n this.splitview.layout(this.splitview.size, this.splitview.orthogonalSize);\r\n }\r\n focus() {\r\n var _a;\r\n (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();\r\n }\r\n movePanel(from, to) {\r\n this.splitview.moveView(from, to);\r\n }\r\n setVisible(panel, visible) {\r\n const index = this.panels.indexOf(panel);\r\n this.splitview.setViewVisible(index, visible);\r\n }\r\n setActive(view, skipFocus) {\r\n this._activePanel = view;\r\n this.panels\r\n .filter((v) => v !== view)\r\n .forEach((v) => {\r\n v.api._onDidActiveChange.fire({ isActive: false });\r\n if (!skipFocus) {\r\n v.focus();\r\n }\r\n });\r\n view.api._onDidActiveChange.fire({ isActive: true });\r\n if (!skipFocus) {\r\n view.focus();\r\n }\r\n }\r\n removePanel(panel, sizing) {\r\n const item = this._panels.get(panel.id);\r\n if (!item) {\r\n throw new Error(`unknown splitview panel ${panel.id}`);\r\n }\r\n item.dispose();\r\n this._panels.delete(panel.id);\r\n const index = this.panels.findIndex((_) => _ === panel);\r\n const removedView = this.splitview.removeView(index, sizing);\r\n removedView.dispose();\r\n const panels = this.panels;\r\n if (panels.length > 0) {\r\n this.setActive(panels[panels.length - 1]);\r\n }\r\n }\r\n getPanel(id) {\r\n return this.panels.find((view) => view.id === id);\r\n }\r\n addPanel(options) {\r\n if (this._panels.has(options.id)) {\r\n throw new Error(`panel ${options.id} already exists`);\r\n }\r\n const view = createComponent(options.id, options.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkWrapper\r\n ? {\r\n createComponent: this.options.frameworkWrapper.createComponent,\r\n }\r\n : undefined);\r\n view.orientation = this.splitview.orientation;\r\n view.init({\r\n params: options.params || {},\r\n minimumSize: options.minimumSize,\r\n maximumSize: options.maximumSize,\r\n snap: options.snap,\r\n priority: options.priority,\r\n accessor: this,\r\n });\r\n const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;\r\n const index = typeof options.index === 'number' ? options.index : undefined;\r\n this.splitview.addView(view, size, index);\r\n this.doAddView(view);\r\n this.setActive(view);\r\n return view;\r\n }\r\n layout(width, height) {\r\n const [size, orthogonalSize] = this.splitview.orientation === Orientation.HORIZONTAL\r\n ? [width, height]\r\n : [height, width];\r\n this.splitview.layout(size, orthogonalSize);\r\n }\r\n doAddView(view) {\r\n const disposable = view.api.onDidFocusChange((event) => {\r\n if (!event.isFocused) {\r\n return;\r\n }\r\n this.setActive(view, true);\r\n });\r\n this._panels.set(view.id, disposable);\r\n }\r\n toJSON() {\r\n var _a;\r\n const views = this.splitview\r\n .getViews()\r\n .map((view, i) => {\r\n const size = this.splitview.getViewSize(i);\r\n return {\r\n size,\r\n data: view.toJSON(),\r\n snap: !!view.snap,\r\n priority: view.priority,\r\n };\r\n });\r\n return {\r\n views,\r\n activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,\r\n size: this.splitview.size,\r\n orientation: this.splitview.orientation,\r\n };\r\n }\r\n fromJSON(serializedSplitview) {\r\n this.clear();\r\n const { views, orientation, size, activeView } = serializedSplitview;\r\n const queue = [];\r\n // take note of the existing dimensions\r\n const width = this.width;\r\n const height = this.height;\r\n this.splitview = new Splitview(this.element, {\r\n orientation,\r\n proportionalLayout: this.options.proportionalLayout,\r\n descriptor: {\r\n size,\r\n views: views.map((view) => {\r\n const data = view.data;\r\n if (this._panels.has(data.id)) {\r\n throw new Error(`panel ${data.id} already exists`);\r\n }\r\n const panel = createComponent(data.id, data.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkWrapper\r\n ? {\r\n createComponent: this.options.frameworkWrapper\r\n .createComponent,\r\n }\r\n : undefined);\r\n queue.push(() => {\r\n panel.init({\r\n params: data.params || {},\r\n minimumSize: data.minimumSize,\r\n maximumSize: data.maximumSize,\r\n snap: view.snap,\r\n priority: view.priority,\r\n accessor: this,\r\n });\r\n });\r\n panel.orientation = orientation;\r\n this.doAddView(panel);\r\n setTimeout(() => {\r\n // the original onDidAddView events are missed since they are fired before we can subcribe to them\r\n this._onDidAddView.fire(panel);\r\n }, 0);\r\n return { size: view.size, view: panel };\r\n }),\r\n },\r\n });\r\n this.layout(width, height);\r\n queue.forEach((f) => f());\r\n if (typeof activeView === 'string') {\r\n const panel = this.getPanel(activeView);\r\n if (panel) {\r\n this.setActive(panel);\r\n }\r\n }\r\n this._onDidLayoutfromJSON.fire();\r\n }\r\n clear() {\r\n for (const disposable of this._panels.values()) {\r\n disposable.dispose();\r\n }\r\n this._panels.clear();\r\n while (this.splitview.length > 0) {\r\n const view = this.splitview.removeView(0, Sizing.Distribute, true);\r\n view.dispose();\r\n }\r\n }\r\n dispose() {\r\n for (const disposable of this._panels.values()) {\r\n disposable.dispose();\r\n }\r\n this._panels.clear();\r\n const views = this.splitview.getViews();\r\n this._splitviewChangeDisposable.dispose();\r\n this.splitview.dispose();\r\n for (const view of views) {\r\n view.dispose();\r\n }\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=splitviewComponent.js.map","import { addDisposableListener } from '../events';\r\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\r\nimport { toggleClass } from '../dom';\r\nimport { createChevronRightButton, createExpandMoreButton } from '../svg';\r\nexport class DefaultHeader extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor() {\r\n super();\r\n this._expandedIcon = createExpandMoreButton();\r\n this._collapsedIcon = createChevronRightButton();\r\n this.disposable = new MutableDisposable();\r\n this.apiRef = { api: null };\r\n this._element = document.createElement('div');\r\n this.element.className = 'default-header';\r\n this._content = document.createElement('span');\r\n this._expander = document.createElement('div');\r\n this._expander.className = 'dockview-pane-header-icon';\r\n this.element.appendChild(this._expander);\r\n this.element.appendChild(this._content);\r\n this.addDisposables(addDisposableListener(this._element, 'click', () => {\r\n var _a;\r\n (_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.setExpanded(!this.apiRef.api.isExpanded);\r\n }));\r\n }\r\n init(params) {\r\n this.apiRef.api = params.api;\r\n this._content.textContent = params.title;\r\n this.updateIcon();\r\n this.disposable.value = params.api.onDidExpansionChange(() => {\r\n this.updateIcon();\r\n });\r\n }\r\n updateIcon() {\r\n var _a;\r\n const isExpanded = !!((_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.isExpanded);\r\n toggleClass(this._expander, 'collapsed', !isExpanded);\r\n if (isExpanded) {\r\n if (this._expander.contains(this._collapsedIcon)) {\r\n this._collapsedIcon.remove();\r\n }\r\n if (!this._expander.contains(this._expandedIcon)) {\r\n this._expander.appendChild(this._expandedIcon);\r\n }\r\n }\r\n else {\r\n if (this._expander.contains(this._expandedIcon)) {\r\n this._expandedIcon.remove();\r\n }\r\n if (!this._expander.contains(this._collapsedIcon)) {\r\n this._expander.appendChild(this._collapsedIcon);\r\n }\r\n }\r\n }\r\n update(_params) {\r\n //\r\n }\r\n dispose() {\r\n this.disposable.dispose();\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=defaultPaneviewHeader.js.map","import { PaneviewApi } from '../api/component.api';\r\nimport { createComponent } from '../panel/componentFactory';\r\nimport { Emitter } from '../events';\r\nimport { CompositeDisposable, MutableDisposable, } from '../lifecycle';\r\nimport { Orientation, Sizing } from '../splitview/splitview';\r\nimport { Paneview } from './paneview';\r\nimport { DraggablePaneviewPanel, } from './draggablePaneviewPanel';\r\nimport { DefaultHeader } from './defaultPaneviewHeader';\r\nimport { sequentialNumberGenerator } from '../math';\r\nimport { Resizable } from '../resizable';\r\nconst nextLayoutId = sequentialNumberGenerator();\r\nexport class PaneFramework extends DraggablePaneviewPanel {\r\n constructor(options) {\r\n super(options.accessor, options.id, options.component, options.headerComponent, options.orientation, options.isExpanded, options.disableDnd);\r\n this.options = options;\r\n }\r\n getBodyComponent() {\r\n return this.options.body;\r\n }\r\n getHeaderComponent() {\r\n return this.options.header;\r\n }\r\n}\r\nexport class PaneviewComponent extends Resizable {\r\n get id() {\r\n return this._id;\r\n }\r\n get panels() {\r\n return this.paneview.getPanes();\r\n }\r\n set paneview(value) {\r\n this._paneview = value;\r\n this._disposable.value = new CompositeDisposable(this._paneview.onDidChange(() => {\r\n this._onDidLayoutChange.fire(undefined);\r\n }), this._paneview.onDidAddView((e) => this._onDidAddView.fire(e)), this._paneview.onDidRemoveView((e) => this._onDidRemoveView.fire(e)));\r\n }\r\n get paneview() {\r\n return this._paneview;\r\n }\r\n get minimumSize() {\r\n return this.paneview.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.paneview.maximumSize;\r\n }\r\n get height() {\r\n return this.paneview.orientation === Orientation.HORIZONTAL\r\n ? this.paneview.orthogonalSize\r\n : this.paneview.size;\r\n }\r\n get width() {\r\n return this.paneview.orientation === Orientation.HORIZONTAL\r\n ? this.paneview.size\r\n : this.paneview.orthogonalSize;\r\n }\r\n get options() {\r\n return this._options;\r\n }\r\n constructor(options) {\r\n super(options.parentElement);\r\n this._id = nextLayoutId.next();\r\n this._disposable = new MutableDisposable();\r\n this._viewDisposables = new Map();\r\n this._onDidLayoutfromJSON = new Emitter();\r\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\r\n this._onDidLayoutChange = new Emitter();\r\n this.onDidLayoutChange = this._onDidLayoutChange.event;\r\n this._onDidDrop = new Emitter();\r\n this.onDidDrop = this._onDidDrop.event;\r\n this._onDidAddView = new Emitter();\r\n this.onDidAddView = this._onDidAddView.event;\r\n this._onDidRemoveView = new Emitter();\r\n this.onDidRemoveView = this._onDidRemoveView.event;\r\n this.addDisposables(this._onDidLayoutChange, this._onDidLayoutfromJSON, this._onDidDrop, this._onDidAddView, this._onDidRemoveView);\r\n this._options = options;\r\n if (!options.components) {\r\n options.components = {};\r\n }\r\n if (!options.frameworkComponents) {\r\n options.frameworkComponents = {};\r\n }\r\n this.paneview = new Paneview(this.element, {\r\n // only allow paneview in the vertical orientation for now\r\n orientation: Orientation.VERTICAL,\r\n });\r\n this.addDisposables(this._disposable);\r\n }\r\n focus() {\r\n //noop\r\n }\r\n updateOptions(options) {\r\n this._options = Object.assign(Object.assign({}, this.options), options);\r\n }\r\n addPanel(options) {\r\n const body = createComponent(options.id, options.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkWrapper\r\n ? {\r\n createComponent: this.options.frameworkWrapper.body.createComponent,\r\n }\r\n : undefined);\r\n let header;\r\n if (options.headerComponent) {\r\n header = createComponent(options.id, options.headerComponent, this.options.headerComponents || {}, this.options.headerframeworkComponents, this.options.frameworkWrapper\r\n ? {\r\n createComponent: this.options.frameworkWrapper.header\r\n .createComponent,\r\n }\r\n : undefined);\r\n }\r\n else {\r\n header = new DefaultHeader();\r\n }\r\n const view = new PaneFramework({\r\n id: options.id,\r\n component: options.component,\r\n headerComponent: options.headerComponent,\r\n header,\r\n body,\r\n orientation: Orientation.VERTICAL,\r\n isExpanded: !!options.isExpanded,\r\n disableDnd: !!this.options.disableDnd,\r\n accessor: this,\r\n });\r\n this.doAddPanel(view);\r\n const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;\r\n const index = typeof options.index === 'number' ? options.index : undefined;\r\n view.init({\r\n params: options.params || {},\r\n minimumBodySize: options.minimumBodySize,\r\n maximumBodySize: options.maximumBodySize,\r\n isExpanded: options.isExpanded,\r\n title: options.title,\r\n containerApi: new PaneviewApi(this),\r\n });\r\n this.paneview.addPane(view, size, index);\r\n view.orientation = this.paneview.orientation;\r\n return view;\r\n }\r\n removePanel(panel) {\r\n const views = this.panels;\r\n const index = views.findIndex((_) => _ === panel);\r\n this.paneview.removePane(index);\r\n this.doRemovePanel(panel);\r\n }\r\n movePanel(from, to) {\r\n this.paneview.moveView(from, to);\r\n }\r\n getPanel(id) {\r\n return this.panels.find((view) => view.id === id);\r\n }\r\n layout(width, height) {\r\n const [size, orthogonalSize] = this.paneview.orientation === Orientation.HORIZONTAL\r\n ? [width, height]\r\n : [height, width];\r\n this.paneview.layout(size, orthogonalSize);\r\n }\r\n toJSON() {\r\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ||\r\n value === Number.POSITIVE_INFINITY\r\n ? undefined\r\n : value;\r\n const minimum = (value) => (value <= 0 ? undefined : value);\r\n const views = this.paneview\r\n .getPanes()\r\n .map((view, i) => {\r\n const size = this.paneview.getViewSize(i);\r\n return {\r\n size,\r\n data: view.toJSON(),\r\n minimumSize: minimum(view.minimumBodySize),\r\n maximumSize: maximum(view.maximumBodySize),\r\n expanded: view.isExpanded(),\r\n };\r\n });\r\n return {\r\n views,\r\n size: this.paneview.size,\r\n };\r\n }\r\n fromJSON(serializedPaneview) {\r\n this.clear();\r\n const { views, size } = serializedPaneview;\r\n const queue = [];\r\n // take note of the existing dimensions\r\n const width = this.width;\r\n const height = this.height;\r\n this.paneview = new Paneview(this.element, {\r\n orientation: Orientation.VERTICAL,\r\n descriptor: {\r\n size,\r\n views: views.map((view) => {\r\n const data = view.data;\r\n const body = createComponent(data.id, data.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkWrapper\r\n ? {\r\n createComponent: this.options.frameworkWrapper.body\r\n .createComponent,\r\n }\r\n : undefined);\r\n let header;\r\n if (data.headerComponent) {\r\n header = createComponent(data.id, data.headerComponent, this.options.headerComponents || {}, this.options.headerframeworkComponents || {}, this.options.frameworkWrapper\r\n ? {\r\n createComponent: this.options.frameworkWrapper.header\r\n .createComponent,\r\n }\r\n : undefined);\r\n }\r\n else {\r\n header = new DefaultHeader();\r\n }\r\n const panel = new PaneFramework({\r\n id: data.id,\r\n component: data.component,\r\n headerComponent: data.headerComponent,\r\n header,\r\n body,\r\n orientation: Orientation.VERTICAL,\r\n isExpanded: !!view.expanded,\r\n disableDnd: !!this.options.disableDnd,\r\n accessor: this,\r\n });\r\n this.doAddPanel(panel);\r\n queue.push(() => {\r\n panel.init({\r\n params: data.params || {},\r\n minimumBodySize: view.minimumSize,\r\n maximumBodySize: view.maximumSize,\r\n title: data.title,\r\n isExpanded: !!view.expanded,\r\n containerApi: new PaneviewApi(this),\r\n });\r\n panel.orientation = this.paneview.orientation;\r\n });\r\n setTimeout(() => {\r\n // the original onDidAddView events are missed since they are fired before we can subcribe to them\r\n this._onDidAddView.fire(panel);\r\n }, 0);\r\n return { size: view.size, view: panel };\r\n }),\r\n },\r\n });\r\n this.layout(width, height);\r\n queue.forEach((f) => f());\r\n this._onDidLayoutfromJSON.fire();\r\n }\r\n clear() {\r\n for (const [_, value] of this._viewDisposables.entries()) {\r\n value.dispose();\r\n }\r\n this._viewDisposables.clear();\r\n this.paneview.dispose();\r\n }\r\n doAddPanel(panel) {\r\n const disposable = panel.onDidDrop((event) => {\r\n this._onDidDrop.fire(event);\r\n });\r\n this._viewDisposables.set(panel.id, disposable);\r\n }\r\n doRemovePanel(panel) {\r\n const disposable = this._viewDisposables.get(panel.id);\r\n if (disposable) {\r\n disposable.dispose();\r\n this._viewDisposables.delete(panel.id);\r\n }\r\n }\r\n dispose() {\r\n super.dispose();\r\n for (const [_, value] of this._viewDisposables.entries()) {\r\n value.dispose();\r\n }\r\n this._viewDisposables.clear();\r\n this.paneview.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=paneviewComponent.js.map","import { BasePanelView, } from '../gridview/basePanelView';\r\nimport { SplitviewPanelApiImpl } from '../api/splitviewPanelApi';\r\nimport { Orientation } from './splitview';\r\nimport { Emitter } from '../events';\r\nexport class SplitviewPanel extends BasePanelView {\r\n get priority() {\r\n return this._priority;\r\n }\r\n set orientation(value) {\r\n this._orientation = value;\r\n }\r\n get orientation() {\r\n return this._orientation;\r\n }\r\n get minimumSize() {\r\n const size = typeof this._minimumSize === 'function'\r\n ? this._minimumSize()\r\n : this._minimumSize;\r\n if (size !== this._evaluatedMinimumSize) {\r\n this._evaluatedMinimumSize = size;\r\n this.updateConstraints();\r\n }\r\n return size;\r\n }\r\n get maximumSize() {\r\n const size = typeof this._maximumSize === 'function'\r\n ? this._maximumSize()\r\n : this._maximumSize;\r\n if (size !== this._evaluatedMaximumSize) {\r\n this._evaluatedMaximumSize = size;\r\n this.updateConstraints();\r\n }\r\n return size;\r\n }\r\n get snap() {\r\n return this._snap;\r\n }\r\n constructor(id, componentName) {\r\n super(id, componentName, new SplitviewPanelApiImpl(id));\r\n this._evaluatedMinimumSize = 0;\r\n this._evaluatedMaximumSize = Number.POSITIVE_INFINITY;\r\n this._minimumSize = 0;\r\n this._maximumSize = Number.POSITIVE_INFINITY;\r\n this._snap = false;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this.api.initialize(this);\r\n this.addDisposables(this._onDidChange, this.api.onVisibilityChange((event) => {\r\n const { isVisible } = event;\r\n const { accessor } = this._params;\r\n accessor.setVisible(this, isVisible);\r\n }), this.api.onActiveChange(() => {\r\n const { accessor } = this._params;\r\n accessor.setActive(this);\r\n }), this.api.onDidConstraintsChangeInternal((event) => {\r\n if (typeof event.minimumSize === 'number' ||\r\n typeof event.minimumSize === 'function') {\r\n this._minimumSize = event.minimumSize;\r\n }\r\n if (typeof event.maximumSize === 'number' ||\r\n typeof event.maximumSize === 'function') {\r\n this._maximumSize = event.maximumSize;\r\n }\r\n this.updateConstraints();\r\n }), this.api.onDidSizeChange((event) => {\r\n this._onDidChange.fire({ size: event.size });\r\n }));\r\n }\r\n setVisible(isVisible) {\r\n this.api._onDidVisibilityChange.fire({ isVisible });\r\n }\r\n setActive(isActive) {\r\n this.api._onDidActiveChange.fire({ isActive });\r\n }\r\n layout(size, orthogonalSize) {\r\n const [width, height] = this.orientation === Orientation.HORIZONTAL\r\n ? [size, orthogonalSize]\r\n : [orthogonalSize, size];\r\n super.layout(width, height);\r\n }\r\n init(parameters) {\r\n super.init(parameters);\r\n this._priority = parameters.priority;\r\n if (parameters.minimumSize) {\r\n this._minimumSize = parameters.minimumSize;\r\n }\r\n if (parameters.maximumSize) {\r\n this._maximumSize = parameters.maximumSize;\r\n }\r\n if (parameters.snap) {\r\n this._snap = parameters.snap;\r\n }\r\n }\r\n toJSON() {\r\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ||\r\n value === Number.POSITIVE_INFINITY\r\n ? undefined\r\n : value;\r\n const minimum = (value) => (value <= 0 ? undefined : value);\r\n return Object.assign(Object.assign({}, super.toJSON()), { minimumSize: minimum(this.minimumSize), maximumSize: maximum(this.maximumSize) });\r\n }\r\n updateConstraints() {\r\n this.api._onDidConstraintsChange.fire({\r\n maximumSize: this._evaluatedMaximumSize,\r\n minimumSize: this._evaluatedMinimumSize,\r\n });\r\n }\r\n}\r\n//# sourceMappingURL=splitviewPanel.js.map",null,null,null,null,null,null,"/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n",null,null,null,null,null,null,null,null],"names":["Disposable","TransferObject","constructor","PanelTransfer","viewId","groupId","panelId","super","this","PaneTransfer","paneId","LocalSelectionTransfer","getInstance","INSTANCE","hasData","proto","clearData","undefined","data","getData","setData","getPanelData","panelTransfer","prototype","getPaneData","paneTransfer","exports","DockviewEvent","Event","any","children","listener","disposables","map","child","dispose","forEach","d","Stacktrace","create","_a","Error","stack","value","print","console","warn","Listener","callback","stacktrace","Emitter","setLeakageMonitorEnabled","isEnabled","ENABLE_TRACKING","MEMORY_LEAK_WATCHER","clear","options","_listeners","_disposed","event","_event","replay","_last","push","index","indexOf","splice","add","fire","e","length","queueMicrotask","delete","addDisposableWindowListener","element","type","addEventListener","removeEventListener","addDisposableListener","events","Map","size","set","TickDelayedEvent","_onFired","onEvent","timer","clearTimeout","setTimeout","NONE","CompositeDisposable","isDisposed","_isDisposed","args","_disposables","addDisposables","arg","MutableDisposable","_disposable","disposable","createComponent","id","componentName","components","frameworkComponents","createFrameworkComponent","fallback","Component","FrameworkComponent","watchElementResize","cb","observer","ResizeObserver","entires","requestAnimationFrame","firstEntry","observe","unobserve","disconnect","removeClasses","classes","classname","classList","contains","remove","addClasses","toggleClass","className","isToggled","hasClass","isAncestor","testChild","testAncestor","parentNode","getElementsByTagName","tag","Array","slice","call","document","trackFocus","FocusTracker","_onDidFocus","onDidFocus","_onDidBlur","onDidBlur","hasFocus","activeElement","loosingFocus","onFocus","onBlur","window","_refreshStateHandler","HTMLElement","refreshState","QUASI_PREVENT_DEFAULT_KEY","quasiDefaultPrevented","tail","arr","sequenceEquals","arr1","arr2","i","pushToStart","unshift","pushToEnd","clamp","min","max","Math","sequentialNumberGenerator","next","toString","range","from","to","result","ViewItem","_size","cachedVisibleSize","_cachedVisibleSize","visible","minimumSize","view","viewMinimumSize","maximumSize","viewMaximumSize","priority","snap","enabled","container","style","pointerEvents","setVisible","toggle","Orientation","SashState","LayoutPriority","Sizing","Distribute","Split","Invisible","Splitview","orthogonalSize","_orthogonalSize","viewItems","proportions","_proportions","orientation","_orientation","tmp","HORIZONTAL","reduce","r","item","Number","POSITIVE_INFINITY","startSnappingEnabled","_startSnappingEnabled","updateSashEnablement","endSnappingEnabled","_endSnappingEnabled","sashes","contentSize","_onDidSashEnd","onDidSashEnd","_onDidAddView","onDidAddView","_onDidRemoveView","onDidRemoveView","resize","delta","sizes","x","lowPriorityIndexes","highPriorityIndexes","overloadMinDelta","NEGATIVE_INFINITY","overloadMaxDelta","snapBefore","snapAfter","upIndexes","downIndexes","upItems","upSizes","downItems","downSizes","minDeltaUp","_","maxDeltaUp","maxDeltaDown","minDeltaDown","minDelta","maxDelta","snapped","snapView","limitDelta","actualDelta","deltaUp","viewDelta","deltaDown","createContainer","proportionalLayout","viewContainer","createViewContainer","sashContainer","createSashContainer","appendChild","styles","descriptor","views","viewDescriptor","sizing","addView","saveProportions","separatorBorder","removeProperty","setProperty","isViewVisible","setViewVisible","viewItem","distributeEmptySpace","layoutViews","getViewSize","resizeView","indexes","filter","Low","High","round","relayout","getViews","onDidChange","skipLayout","createElement","viewSize","newSize","removeChild","insertBefore","sash","onPointerStart","iframes","iframe","start","clientX","clientY","sashIndex","array","fn","firstIndex","s","snapBeforeIndex","findFirstSnapIndex","snapAfterIndex","snappedViewItem","halfSize","floor","onPointerMove","end","sashItem","distributeViewSizes","flexibleViewItems","flexibleSize","removeView","getViewCachedVisibleSize","moveView","layout","previousSize","lowPriorityIndex","emptyDelta","sum","offset","left","top","VERTICAL","width","height","previous","collapsesDown","expandsDown","reverseViews","reverse","collapsesUp","expandsUp","position","snappedBefore","snappedAfter","updateSash","MINIMUM","MAXIMUM","DISABLED","ENABLED","state","orientationClassname","Paneview","splitview","paneItems","skipAnimation","_onDidChange","getPanes","pane","onDidChangeExpansionState","setupAnimation","paneItem","addPane","removePane","skipDispose","animationTimer","LeafNode","minimumWidth","maximumWidth","minimumHeight","maximumHeight","minimumOrthogonalSize","maximumOrthogonalSize","BranchNode","c","Normal","priorities","some","p","childDescriptors","_childrenDisposable","childDescriptor","node","setupChildrenEvents","isChildVisible","setChildVisible","moveChild","_removeChild","_addChild","getChildSize","resizeChild","addChild","getChildCachedVisibleSize","findLeaf","candiateNode","last","flipNode","orthogonal","totalSize","childSize","indexInParent","parentElement","el","firstElementChild","lastElementChild","nextElementSibling","getGridLocation","test","getRelativeLocation","rootOrientation","location","direction","getLocationOrientation","getDirectionOrientation","rest","_index","isGridBranchNode","serializeBranchNode","box","toJSON","Gridview","_root","root","serialize","getView","deserialize","json","deserializer","_deserialize","_deserializeNode","serializedChild","fromJSON","oldRoot","insertOrthogonalSplitviewAtRoot","childReference","progmaticSelect","getNode","_getViews","nodeCachedVisibleSize","path","n","l","parent","parentLocation","pathToParent","grandParent","parentIndex","__","newSiblingSize","newSiblingCachedVisibleSize","newParent","newSibling","nodeToRemove","sibling","isSiblingVisible","siblingSizing","SplitviewApi","component","panels","onDidLayoutFromJSON","onDidLayoutChange","updateOptions","removePanel","panel","focus","getPanel","addPanel","movePanel","PaneviewApi","onDidDrop","emitter","Object","assign","api","GridviewApi","onDidAddPanel","onDidAddGroup","onDidRemovePanel","onDidRemoveGroup","onDidActivePanelChange","onDidActiveGroupChange","groups","force","DockviewApi","totalPanels","onWillDragGroup","onWillDragPanel","activePanel","activeGroup","getGroupPanel","addGroup","moveToNext","moveToPrevious","closeAllGroups","removeGroup","group","getGroup","addFloatingGroup","coord","DragAndDropObserver","callbacks","target","registerListeners","onDragEnter","preventDefault","onDragOver","onDragLeave","onDragEnd","onDrop","directionToPosition","Droptarget","_state","_onDrop","_acceptedTargetZonesSet","Set","acceptedTargetZones","removeDropTarget","clientWidth","clientHeight","rect","currentTarget","getBoundingClientRect","y","quadrant","calculateQuadrant","isAlreadyUsed","canDisplayOverlay","markAsUsed","targetElement","overlayElement","append","toggleClasses","setState","stopPropagation","nativeEvent","setTargetZones","USED_EVENT_ID","_b","_c","_d","isSmallX","isSmallY","isLeft","isRight","isTop","isBottom","rightClass","leftClass","topClass","bottomClass","overlayModel","translate","transform","overlayType","_e","_f","isPercentage","activationSize","maybeNumber","threshold","xp","yp","has","calculateQuadrantAsPercentage","calculateQuadrantAsPixels","ContentContainer","_element","tabIndex","show","display","hide","openPanel","content","focusTracker","_width","_height","closePanel","DockviewDropTargets","DragHandler","dataDisposable","pointerEventsDisposable","_onDragStart","onDragStart","configure","isCancelled","defaultPrevented","dataTransfer","effectAllowed","items","TabDragHandler","accessor","Tab","_onChanged","onChanged","_onDropped","draggable","dragHandler","droptarget","locked","model","setActive","isActive","setContent","part","GroupDragHandler","shiftKey","isFloating","dragEvent","getComputedStyle","bgColor","getPropertyValue","color","ghostElement","backgroundColor","padding","fontSize","lineHeight","borderRadius","textContent","body","setDragImage","addGhostImage","VoidContainer","doSetGroupActive","handler","voidDropTarget","Panel","TabsContainer","tabs","hidden","_hidden","setRightActionsElement","rightActions","rightActionsContainer","setLeftActionsElement","leftActions","leftActionsContainer","setPrefixActionsElement","preActions","preActionsContainer","tab","selectedIndex","findIndex","_onTabDragStart","onTabDragStart","_onGroupDragStart","onGroupDragStart","singleTabMode","tabContainer","voidContainer","disableFloatingGroups","rootTop","rootLeft","inDragMode","button","_isGroupActive","addTab","tabToRemove","setActivePanel","isActivePanel","find","isFloatingGroupsEnabled","isFloatingWithOnePanel","alreadyFocused","isContentFocused","skipFocus","DockviewGroupPanelModel","_activePanel","_locked","_panels","isEmpty","hasWatermark","watermark","header","tabsContainer","contentContainer","_isFloating","dropTarget","groupPanel","_onDidFloatingStateChange","mostRecentlyUsed","_onMove","onMove","_onDidDrop","_onDidAddPanel","_onDidRemovePanel","_onDidActivePanelChange","hideHeader","handleDropEvent","initialize","doAddPanel","updateContainer","createRightHeaderActionsElement","_rightHeaderActions","init","containerApi","createLeftHeaderActionsElement","_leftHeaderActions","createPrefixHeaderActionsElement","_prefixHeaderActions","activeView","normalizedIndex","suppressRoll","containsPanel","includes","_params","update","skipSetPanelActive","skipSetGroupActive","updateParentGroup","doSetActivePanel","groupItemOrId","panelToRemove","_removePanel","closeAllPanels","arrPanelCpy","doClose","isPanelActive","updateActions","isGroupActive","doRemovePanel","nextPanel","skipSetActive","hasExistingPanel","updateMru","createWatermarkComponent","showDndOverlay","itemId","Resizable","entry","contentRect","nextLayoutId","toTarget","BaseGrid","_id","_groups","values","gridview","_activeGroup","_onDidLayoutChange","_onDidRemoveGroup","_onDidAddGroup","_onDidActiveGroupChange","_bufferOnDidLayoutChange","isVisible","doAddGroup","doRemoveGroup","get","skipActive","forceResize","PanelApiImpl","isFocused","_isFocused","_isActive","_isVisible","panelUpdatesDisposable","_onDidDimensionChange","onDidDimensionsChange","_onDidChangeFocus","onDidFocusChange","_onFocusEvent","onFocusEvent","_onDidVisibilityChange","onDidVisibilityChange","_onVisibilityChange","onVisibilityChange","_onDidActiveChange","onDidActiveChange","_onActiveChange","onActiveChange","_onUpdateParameters","onUpdateParameters","parameters","params","updateParameters","SplitviewPanelApiImpl","_onDidConstraintsChangeInternal","onDidConstraintsChangeInternal","_onDidConstraintsChange","onDidConstraintsChange","_onDidSizeChange","onDidSizeChange","setConstraints","setSize","PaneviewPanelApiImpl","_pane","_onDidExpansionChange","onDidExpansionChange","_onMouseEnter","onMouseEnter","_onMouseLeave","onMouseLeave","setExpanded","isExpanded","BasePanelView","outline","overflow","getComponent","key","keys","PaneviewPanel","headerSize","_minimumBodySize","_maximumBodySize","minimumBodySize","maximumBodySize","headerVisible","_headerVisible","headerComponent","isHeaderVisible","_onDidChangeExpansionState","_isExpanded","expandedSize","ev","isPanelExpanded","renderOnce","expanded","bodyPart","getBodyComponent","headerPart","getHeaderComponent","title","minHeight","maxHeight","DraggablePaneviewPanel","disableDnd","initDragFeatures","accessorId","existingPanel","allPanels","fromIndex","toIndex","GridviewPanelApiImpl","GridviewPanel","_priority","_snap","_minimumWidth","_evaluatedMinimumWidth","updateConstraints","_minimumHeight","_evaluatedMinimumHeight","_maximumHeight","_evaluatedMaximumHeight","_maximumWidth","_evaluatedMaximumWidth","MAX_SAFE_INTEGER","maximum","minimum","DockviewGroupPanelApiImpl","_group","onDidFloatingStateChange","moveTo","moveGroupOrPanel","DockviewGroupPanel","_model","isPanelOptionsWithPanel","referencePanel","isPanelOptionsWithGroup","referenceGroup","isGroupOptionsWithPanel","isGroupOptionsWithGroup","DockviewPanelApiImpl","isOldGroupActive","_onDidGroupChange","_onDidTitleChange","onDidTitleChange","onDidGroupChange","setTitle","close","DockviewPanel","_title","contentComponent","tabComponent","isPanelVisible","createSvgElementFromPath","svg","createElementNS","setAttributeNS","viewbox","createCloseButton","DefaultTab","_content","_actionContainer","_list","action","render","onGroupChange","onPanelVisibleChange","_isPanelVisible","DockviewPanelModel","_tab","createContentComponent","createTabComponent","frameworkComponentFactory","tabComponents","frameworkTabComponents","defaultTabComponent","DefaultDockviewDeserialzier","panelData","viewData","Watermark","emptySpace","flexGrow","actionsContainer","closeAnchor","_api","_visible","isOneGroup","bringElementToFront","Overlay","minimumInViewportWidth","minimumInViewportHeight","_onDidChangeEnd","onDidChangeEnd","setupResize","setBounds","bounds","containerRect","overlayRect","xOffset","getMinimumWidth","yOffset","getMinimumHeight","setupDrag","dragTarget","move","track","resizeHandleElement","startPosition","originalY","originalHeight","originalX","originalWidth","moveTop","MAX_VALUE","MINIMUM_HEIGHT","moveBottom","moveLeft","MINIMUM_WIDTH","moveRight","DockviewFloatingGroupPanel","overlay","DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE","DockviewComponent","flatMap","_options","nextGroupId","_deserializer","_onWillDragPanel","_onWillDragGroup","_onDidLayoutFromJSON","floatingGroups","updateWatermark","watermarkComponent","watermarkFrameworkComponent","Edge","orthogonalize","createGroup","removeEmptyGroup","skipRemoveGroup","overlayLeft","overlayTop","floatingGroupBounds","minimumWidthWithinViewport","minimumHeightWithinViewport","querySelector","floatingGroupPanel","t","createGroupAtLocation","hasOrientationChanged","hasFloatingGroupOptionsChanged","floating","includePanel","collection","floats","floatingGroup","grid","isArray","createGroupFromSerializedState","createdPanels","serializedFloatingGroups","serializedFloatingGroup","err","hasActiveGroup","hasActivePanel","entries","findGroup","createPanel","o","relativeLocation","watermarkContainer","destinationGroup","sourceGroupId","sourceItemId","destinationTarget","destinationIndex","sourceGroup","referenceLocation","targetLocation","targetParentLocation","sourceLocation","sourceParentLocation","targetGroup","updatedReferenceLocation","groupItem","dropLocation","moveGroup","isGroupAlreadyFocused","GridviewComponent","_onDidLayoutfromJSON","_key","serializedGridview","queue","registerPanel","f","removedPanel","reference","SplitviewComponent","_splitview","_splitviewChangeDisposable","v","frameworkWrapper","doAddView","serializedSplitview","DefaultHeader","_expandedIcon","_collapsedIcon","apiRef","_expander","updateIcon","PaneFramework","PaneviewComponent","paneview","_paneview","_viewDisposables","headerComponents","headerframeworkComponents","serializedPaneview","SplitviewPanel","_minimumSize","_evaluatedMinimumSize","_maximumSize","_evaluatedMaximumSize","ReactComponentBridge","props","ref","triggerRender","React","useState","_props","useRef","componentProps","useImperativeHandle","current","Date","now","displayName","uniquePortalKeyGenerator","ReactPartContext","createContext","ReactPart","portalStore","context","_initialProps","disposed","createPortal","componentInstance","bridgeComponent","forwardRef","Provider","portal","ReactDOM","addPortal","usePortalsLifecycle","portals","setPortals","useDebugValue","useCallback","existingPortals","ReactPanelContentPart","reactPortalStore","DockviewEmitter","ReactPanelHeaderPart","ReactWatermarkPart","ReactHeaderActionsRendererPart","_part","mutableDisposable","DockviewMutableDisposable","DockviewCompositeDisposable","updatePanels","updateActivePanel","updateGroupActive","createGroupControlElement","store","DEFAULT_REACT_TAB","DockviewReact","domRef","dockviewRef","useEffect","factory","componentId","dockview","hideBorders","leftHeaderActionsComponent","rightHeaderActionsComponent","prefixHeaderActionsComponent","onReady","SuppressedError","CloseButton","viewBox","focusable","ReactPanelView","reactComponent","SplitviewReact","splitviewRef","ReactGridPanelView","GridviewReact","gridviewRef","PanePanelSection","PaneviewReact","paneviewRef","_componentId","_containerApi","hideClose","closeActionOverride","hasOwnProperty","getOwnPropertySymbols","propertyIsEnumerable","__rest","onClose","onMouseDown","onClick"],"mappings":"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","x_google_ignoreList":[59]}