dockview-angular 0.0.0-beta-0 → 0.0.0-experimental-e3d91d1-20251227

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 (98) hide show
  1. package/README.md +56 -56
  2. package/dist/cjs/index.d.ts +1 -1
  3. package/dist/cjs/index.js +1 -1
  4. package/dist/cjs/lib/dockview/dockview-angular.component.d.ts +49 -0
  5. package/dist/cjs/lib/dockview/dockview-angular.component.js +256 -0
  6. package/dist/cjs/lib/dockview/types.d.ts +27 -0
  7. package/dist/cjs/lib/dockview/types.js +8 -0
  8. package/dist/cjs/lib/dockview-angular.module.d.ts +2 -0
  9. package/dist/cjs/lib/dockview-angular.module.js +35 -0
  10. package/dist/cjs/lib/gridview/angular-gridview-panel.d.ts +9 -0
  11. package/dist/cjs/lib/gridview/angular-gridview-panel.js +21 -0
  12. package/dist/cjs/lib/gridview/gridview-angular.component.d.ts +28 -0
  13. package/dist/cjs/lib/gridview/gridview-angular.component.js +140 -0
  14. package/dist/cjs/lib/gridview/types.d.ts +12 -0
  15. package/dist/cjs/lib/gridview/types.js +6 -0
  16. package/dist/cjs/lib/paneview/angular-pane-part.d.ts +13 -0
  17. package/dist/cjs/lib/paneview/angular-pane-part.js +29 -0
  18. package/dist/cjs/lib/paneview/paneview-angular.component.d.ts +31 -0
  19. package/dist/cjs/lib/paneview/paneview-angular.component.js +166 -0
  20. package/dist/cjs/lib/paneview/types.d.ts +14 -0
  21. package/dist/cjs/lib/paneview/types.js +6 -0
  22. package/dist/cjs/lib/splitview/angular-splitview-panel.d.ts +9 -0
  23. package/dist/cjs/lib/splitview/angular-splitview-panel.js +21 -0
  24. package/dist/cjs/lib/splitview/splitview-angular.component.d.ts +28 -0
  25. package/dist/cjs/lib/splitview/splitview-angular.component.js +140 -0
  26. package/dist/cjs/lib/splitview/types.d.ts +12 -0
  27. package/dist/cjs/lib/splitview/types.js +6 -0
  28. package/dist/cjs/lib/utils/angular-renderer.d.ts +18 -0
  29. package/dist/cjs/lib/utils/angular-renderer.js +70 -0
  30. package/dist/cjs/lib/utils/component-factory.d.ts +20 -0
  31. package/dist/cjs/lib/utils/component-factory.js +103 -0
  32. package/dist/cjs/lib/utils/lifecycle-utils.d.ts +18 -0
  33. package/dist/cjs/lib/utils/lifecycle-utils.js +74 -0
  34. package/dist/cjs/public-api.d.ts +13 -0
  35. package/dist/cjs/public-api.js +32 -0
  36. package/dist/dockview-angular.amd.js +7632 -3730
  37. package/dist/dockview-angular.amd.js.map +1 -1
  38. package/dist/dockview-angular.amd.min.js +2 -2
  39. package/dist/dockview-angular.amd.min.js.map +1 -1
  40. package/dist/dockview-angular.amd.min.noStyle.js +2 -2
  41. package/dist/dockview-angular.amd.min.noStyle.js.map +1 -1
  42. package/dist/dockview-angular.amd.noStyle.js +7629 -3727
  43. package/dist/dockview-angular.amd.noStyle.js.map +1 -1
  44. package/dist/dockview-angular.cjs.js +7644 -3738
  45. package/dist/dockview-angular.cjs.js.map +1 -1
  46. package/dist/dockview-angular.esm.js +7607 -3721
  47. package/dist/dockview-angular.esm.js.map +1 -1
  48. package/dist/dockview-angular.esm.min.js +2 -2
  49. package/dist/dockview-angular.esm.min.js.map +1 -1
  50. package/dist/dockview-angular.js +7635 -3733
  51. package/dist/dockview-angular.js.map +1 -1
  52. package/dist/dockview-angular.min.js +2 -2
  53. package/dist/dockview-angular.min.js.map +1 -1
  54. package/dist/dockview-angular.min.noStyle.js +2 -2
  55. package/dist/dockview-angular.min.noStyle.js.map +1 -1
  56. package/dist/dockview-angular.noStyle.js +7632 -3730
  57. package/dist/dockview-angular.noStyle.js.map +1 -1
  58. package/dist/dockview.css +1229 -0
  59. package/dist/esm/index.d.ts +1 -1
  60. package/dist/esm/index.js +1 -1
  61. package/dist/esm/lib/dockview/dockview-angular.component.d.ts +49 -0
  62. package/dist/esm/lib/dockview/dockview-angular.component.js +253 -0
  63. package/dist/esm/lib/dockview/types.d.ts +27 -0
  64. package/dist/esm/lib/dockview/types.js +2 -0
  65. package/dist/esm/lib/dockview-angular.module.d.ts +2 -0
  66. package/dist/esm/lib/dockview-angular.module.js +32 -0
  67. package/dist/esm/lib/gridview/angular-gridview-panel.d.ts +9 -0
  68. package/dist/esm/lib/gridview/angular-gridview-panel.js +17 -0
  69. package/dist/esm/lib/gridview/gridview-angular.component.d.ts +28 -0
  70. package/dist/esm/lib/gridview/gridview-angular.component.js +137 -0
  71. package/dist/esm/lib/gridview/types.d.ts +12 -0
  72. package/dist/esm/lib/gridview/types.js +2 -0
  73. package/dist/esm/lib/paneview/angular-pane-part.d.ts +13 -0
  74. package/dist/esm/lib/paneview/angular-pane-part.js +25 -0
  75. package/dist/esm/lib/paneview/paneview-angular.component.d.ts +31 -0
  76. package/dist/esm/lib/paneview/paneview-angular.component.js +163 -0
  77. package/dist/esm/lib/paneview/types.d.ts +14 -0
  78. package/dist/esm/lib/paneview/types.js +2 -0
  79. package/dist/esm/lib/splitview/angular-splitview-panel.d.ts +9 -0
  80. package/dist/esm/lib/splitview/angular-splitview-panel.js +17 -0
  81. package/dist/esm/lib/splitview/splitview-angular.component.d.ts +28 -0
  82. package/dist/esm/lib/splitview/splitview-angular.component.js +137 -0
  83. package/dist/esm/lib/splitview/types.d.ts +12 -0
  84. package/dist/esm/lib/splitview/types.js +2 -0
  85. package/dist/esm/lib/utils/angular-renderer.d.ts +18 -0
  86. package/dist/esm/lib/utils/angular-renderer.js +66 -0
  87. package/dist/esm/lib/utils/component-factory.d.ts +20 -0
  88. package/dist/esm/lib/utils/component-factory.js +99 -0
  89. package/dist/esm/lib/utils/lifecycle-utils.d.ts +18 -0
  90. package/dist/esm/lib/utils/lifecycle-utils.js +68 -0
  91. package/dist/esm/public-api.d.ts +13 -0
  92. package/dist/esm/public-api.js +16 -0
  93. package/package.json +67 -58
  94. package/dist/cjs/utils.d.ts +0 -49
  95. package/dist/cjs/utils.js +0 -141
  96. package/dist/esm/utils.d.ts +0 -49
  97. package/dist/esm/utils.js +0 -119
  98. package/dist/styles/dockview.css +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"dockview-angular.amd.noStyle.js","sources":["../../dockview-core/dist/esm/dnd/dataTransfer.js","../../dockview-core/dist/esm/events.js","../../dockview-core/dist/esm/lifecycle.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/dnd/abstractDragHandler.js","../../dockview-core/dist/esm/dockview/components/tab/tab.js","../../dockview-core/dist/esm/dnd/ghost.js","../../dockview-core/dist/esm/dnd/groupDragHandler.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/constants.js","../../dockview-core/dist/esm/overlayRenderContainer.js","../../dockview-core/dist/esm/popoutWindow.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"],"sourcesContent":["class TransferObject {\n}\nexport class PanelTransfer extends TransferObject {\n constructor(viewId, groupId, panelId) {\n super();\n this.viewId = viewId;\n this.groupId = groupId;\n this.panelId = panelId;\n }\n}\nexport class PaneTransfer extends TransferObject {\n constructor(viewId, paneId) {\n super();\n this.viewId = viewId;\n this.paneId = paneId;\n }\n}\n/**\n * A singleton to store transfer data during drag & drop operations that are only valid within the application.\n */\nexport class LocalSelectionTransfer {\n constructor() {\n // protect against external instantiation\n }\n static getInstance() {\n return LocalSelectionTransfer.INSTANCE;\n }\n hasData(proto) {\n return proto && proto === this.proto;\n }\n clearData(proto) {\n if (this.hasData(proto)) {\n this.proto = undefined;\n this.data = undefined;\n }\n }\n getData(proto) {\n if (this.hasData(proto)) {\n return this.data;\n }\n return undefined;\n }\n setData(data, proto) {\n if (proto) {\n this.data = data;\n this.proto = proto;\n }\n }\n}\nLocalSelectionTransfer.INSTANCE = new LocalSelectionTransfer();\nexport function getPanelData() {\n const panelTransfer = LocalSelectionTransfer.getInstance();\n const isPanelEvent = panelTransfer.hasData(PanelTransfer.prototype);\n if (!isPanelEvent) {\n return undefined;\n }\n return panelTransfer.getData(PanelTransfer.prototype)[0];\n}\nexport function getPaneData() {\n const paneTransfer = LocalSelectionTransfer.getInstance();\n const isPanelEvent = paneTransfer.hasData(PaneTransfer.prototype);\n if (!isPanelEvent) {\n return undefined;\n }\n return paneTransfer.getData(PaneTransfer.prototype)[0];\n}\n","export var Event;\n(function (Event) {\n Event.any = (...children) => {\n return (listener) => {\n const disposables = children.map((child) => child(listener));\n return {\n dispose: () => {\n disposables.forEach((d) => {\n d.dispose();\n });\n },\n };\n };\n };\n})(Event || (Event = {}));\nexport class DockviewEvent {\n constructor() {\n this._defaultPrevented = false;\n }\n get defaultPrevented() {\n return this._defaultPrevented;\n }\n preventDefault() {\n this._defaultPrevented = true;\n }\n}\nclass LeakageMonitor {\n constructor() {\n this.events = new Map();\n }\n get size() {\n return this.events.size;\n }\n add(event, stacktrace) {\n this.events.set(event, stacktrace);\n }\n delete(event) {\n this.events.delete(event);\n }\n clear() {\n this.events.clear();\n }\n}\nclass Stacktrace {\n static create() {\n var _a;\n return new Stacktrace((_a = new Error().stack) !== null && _a !== void 0 ? _a : '');\n }\n constructor(value) {\n this.value = value;\n }\n print() {\n console.warn(this.value);\n }\n}\nclass Listener {\n constructor(callback, stacktrace) {\n this.callback = callback;\n this.stacktrace = stacktrace;\n }\n}\n// relatively simple event emitter taken from https://github.com/microsoft/vscode/blob/master/src/vs/base/common/event.ts\nexport class Emitter {\n static setLeakageMonitorEnabled(isEnabled) {\n if (isEnabled !== Emitter.ENABLE_TRACKING) {\n Emitter.MEMORY_LEAK_WATCHER.clear();\n }\n Emitter.ENABLE_TRACKING = isEnabled;\n }\n get value() {\n return this._last;\n }\n constructor(options) {\n this.options = options;\n this._listeners = [];\n this._disposed = false;\n }\n get event() {\n if (!this._event) {\n this._event = (callback) => {\n var _a;\n if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.replay) && this._last !== undefined) {\n callback(this._last);\n }\n const listener = new Listener(callback, Emitter.ENABLE_TRACKING ? Stacktrace.create() : undefined);\n this._listeners.push(listener);\n return {\n dispose: () => {\n const index = this._listeners.indexOf(listener);\n if (index > -1) {\n this._listeners.splice(index, 1);\n }\n else if (Emitter.ENABLE_TRACKING) {\n // console.warn(\n // `Listener already disposed`,\n // Stacktrace.create().print()\n // );\n }\n },\n };\n };\n if (Emitter.ENABLE_TRACKING) {\n Emitter.MEMORY_LEAK_WATCHER.add(this._event, Stacktrace.create());\n }\n }\n return this._event;\n }\n fire(e) {\n this._last = e;\n for (const listener of this._listeners) {\n listener.callback(e);\n }\n }\n dispose() {\n if (!this._disposed) {\n this._disposed = true;\n if (this._listeners.length > 0) {\n if (Emitter.ENABLE_TRACKING) {\n queueMicrotask(() => {\n var _a;\n // don't check until stack of execution is completed to allow for out-of-order disposals within the same execution block\n for (const listener of this._listeners) {\n console.warn((_a = listener.stacktrace) === null || _a === void 0 ? void 0 : _a.print());\n }\n });\n }\n this._listeners = [];\n }\n if (Emitter.ENABLE_TRACKING && this._event) {\n Emitter.MEMORY_LEAK_WATCHER.delete(this._event);\n }\n }\n }\n}\nEmitter.ENABLE_TRACKING = false;\nEmitter.MEMORY_LEAK_WATCHER = new LeakageMonitor();\nexport function addDisposableWindowListener(element, type, listener, options) {\n element.addEventListener(type, listener, options);\n return {\n dispose: () => {\n element.removeEventListener(type, listener, options);\n },\n };\n}\nexport function addDisposableListener(element, type, listener, options) {\n element.addEventListener(type, listener, options);\n return {\n dispose: () => {\n element.removeEventListener(type, listener, options);\n },\n };\n}\nexport class TickDelayedEvent {\n constructor() {\n this._onFired = new Emitter();\n this.onEvent = this._onFired.event;\n }\n fire() {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n this.timer = setTimeout(() => {\n this._onFired.fire();\n clearTimeout(this.timer);\n });\n }\n dispose() {\n this._onFired.dispose();\n }\n}\n","export var Disposable;\n(function (Disposable) {\n Disposable.NONE = {\n dispose: () => {\n // noop\n },\n };\n function from(func) {\n return {\n dispose: () => {\n func();\n },\n };\n }\n Disposable.from = from;\n})(Disposable || (Disposable = {}));\nexport class CompositeDisposable {\n get isDisposed() {\n return this._isDisposed;\n }\n constructor(...args) {\n this._isDisposed = false;\n this._disposables = args;\n }\n addDisposables(...args) {\n args.forEach((arg) => this._disposables.push(arg));\n }\n dispose() {\n if (this._isDisposed) {\n return;\n }\n this._isDisposed = true;\n this._disposables.forEach((arg) => arg.dispose());\n this._disposables = [];\n }\n}\nexport class MutableDisposable {\n constructor() {\n this._disposable = Disposable.NONE;\n }\n set value(disposable) {\n if (this._disposable) {\n this._disposable.dispose();\n }\n this._disposable = disposable;\n }\n dispose() {\n if (this._disposable) {\n this._disposable.dispose();\n this._disposable = Disposable.NONE;\n }\n }\n}\n","export function createComponent(id, componentName, components = {}, frameworkComponents = {}, createFrameworkComponent, fallback) {\n const Component = typeof componentName === 'string'\n ? components[componentName]\n : undefined;\n const FrameworkComponent = typeof componentName === 'string'\n ? frameworkComponents[componentName]\n : undefined;\n if (Component && FrameworkComponent) {\n throw new Error(`Cannot create '${id}'. component '${componentName}' registered as both a component and frameworkComponent`);\n }\n if (FrameworkComponent) {\n if (!createFrameworkComponent) {\n throw new Error(`Cannot create '${id}' for framework component '${componentName}'. you must register a frameworkPanelWrapper to use framework components`);\n }\n return createFrameworkComponent.createComponent(id, componentName, FrameworkComponent);\n }\n if (!Component) {\n if (fallback) {\n return fallback();\n }\n throw new Error(`Cannot create '${id}', no component '${componentName}' provided`);\n }\n return new Component(id, componentName);\n}\n","import { Emitter, addDisposableListener, addDisposableWindowListener, } from './events';\nimport { CompositeDisposable } from './lifecycle';\nexport function watchElementResize(element, cb) {\n const observer = new ResizeObserver((entires) => {\n /**\n * Fast browser window resize produces Error: ResizeObserver loop limit exceeded.\n * The error isn't visible in browser console, doesn't affect functionality, but degrades performance.\n * See https://stackoverflow.com/questions/49384120/resizeobserver-loop-limit-exceeded/58701523#58701523\n */\n requestAnimationFrame(() => {\n const firstEntry = entires[0];\n cb(firstEntry);\n });\n });\n observer.observe(element);\n return {\n dispose: () => {\n observer.unobserve(element);\n observer.disconnect();\n },\n };\n}\nexport const removeClasses = (element, ...classes) => {\n for (const classname of classes) {\n if (element.classList.contains(classname)) {\n element.classList.remove(classname);\n }\n }\n};\nexport const addClasses = (element, ...classes) => {\n for (const classname of classes) {\n if (!element.classList.contains(classname)) {\n element.classList.add(classname);\n }\n }\n};\nexport const toggleClass = (element, className, isToggled) => {\n const hasClass = element.classList.contains(className);\n if (isToggled && !hasClass) {\n element.classList.add(className);\n }\n if (!isToggled && hasClass) {\n element.classList.remove(className);\n }\n};\nexport function isAncestor(testChild, testAncestor) {\n while (testChild) {\n if (testChild === testAncestor) {\n return true;\n }\n testChild = testChild.parentNode;\n }\n return false;\n}\nexport function getElementsByTagName(tag) {\n return Array.prototype.slice.call(document.getElementsByTagName(tag), 0);\n}\nexport function trackFocus(element) {\n return new FocusTracker(element);\n}\n/**\n * Track focus on an element. Ensure tabIndex is set when an HTMLElement is not focusable by default\n */\nclass FocusTracker extends CompositeDisposable {\n constructor(element) {\n super();\n this._onDidFocus = new Emitter();\n this.onDidFocus = this._onDidFocus.event;\n this._onDidBlur = new Emitter();\n this.onDidBlur = this._onDidBlur.event;\n this.addDisposables(this._onDidFocus, this._onDidBlur);\n let hasFocus = isAncestor(document.activeElement, element);\n let loosingFocus = false;\n const onFocus = () => {\n loosingFocus = false;\n if (!hasFocus) {\n hasFocus = true;\n this._onDidFocus.fire();\n }\n };\n const onBlur = () => {\n if (hasFocus) {\n loosingFocus = true;\n window.setTimeout(() => {\n if (loosingFocus) {\n loosingFocus = false;\n hasFocus = false;\n this._onDidBlur.fire();\n }\n }, 0);\n }\n };\n this._refreshStateHandler = () => {\n const currentNodeHasFocus = isAncestor(document.activeElement, element);\n if (currentNodeHasFocus !== hasFocus) {\n if (hasFocus) {\n onBlur();\n }\n else {\n onFocus();\n }\n }\n };\n if (element instanceof HTMLElement) {\n this.addDisposables(addDisposableListener(element, 'focus', onFocus, true));\n this.addDisposables(addDisposableListener(element, 'blur', onBlur, true));\n }\n else {\n this.addDisposables(addDisposableWindowListener(element, 'focus', onFocus, true));\n this.addDisposables(addDisposableWindowListener(element, 'blur', onBlur, true));\n }\n }\n refreshState() {\n this._refreshStateHandler();\n }\n}\n// quasi: apparently, but not really; seemingly\nconst QUASI_PREVENT_DEFAULT_KEY = 'dv-quasiPreventDefault';\n// mark an event directly for other listeners to check\nexport function quasiPreventDefault(event) {\n event[QUASI_PREVENT_DEFAULT_KEY] = true;\n}\n// check if this event has been marked\nexport function quasiDefaultPrevented(event) {\n return event[QUASI_PREVENT_DEFAULT_KEY];\n}\nexport function addStyles(document, styleSheetList) {\n const styleSheets = Array.from(styleSheetList);\n for (const styleSheet of styleSheets) {\n if (styleSheet.href) {\n const link = document.createElement('link');\n link.href = styleSheet.href;\n link.type = styleSheet.type;\n link.rel = 'stylesheet';\n document.head.appendChild(link);\n }\n let cssTexts = [];\n try {\n if (styleSheet.cssRules) {\n cssTexts = Array.from(styleSheet.cssRules).map((rule) => rule.cssText);\n }\n }\n catch (err) {\n // security errors (lack of permissions), ignore\n }\n for (const rule of cssTexts) {\n const style = document.createElement('style');\n style.appendChild(document.createTextNode(rule));\n document.head.appendChild(style);\n }\n }\n}\nexport function getDomNodePagePosition(domNode) {\n const { left, top, width, height } = domNode.getBoundingClientRect();\n return {\n left: left + window.scrollX,\n top: top + window.scrollY,\n width: width,\n height: height,\n };\n}\n/**\n * Check whether an element is in the DOM (including the Shadow DOM)\n * @see https://terodox.tech/how-to-tell-if-an-element-is-in-the-dom-including-the-shadow-dom/\n */\nexport function isInDocument(element) {\n let currentElement = element;\n while (currentElement === null || currentElement === void 0 ? void 0 : currentElement.parentNode) {\n if (currentElement.parentNode === document) {\n return true;\n }\n else if (currentElement.parentNode instanceof DocumentFragment) {\n // handle shadow DOMs\n currentElement = currentElement.parentNode.host;\n }\n else {\n currentElement = currentElement.parentNode;\n }\n }\n return false;\n}\n","export function tail(arr) {\n if (arr.length === 0) {\n throw new Error('Invalid tail call');\n }\n return [arr.slice(0, arr.length - 1), arr[arr.length - 1]];\n}\nexport function last(arr) {\n return arr.length > 0 ? arr[arr.length - 1] : undefined;\n}\nexport function sequenceEquals(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0; i < arr1.length; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Pushes an element to the start of the array, if found.\n */\nexport function pushToStart(arr, value) {\n const index = arr.indexOf(value);\n if (index > -1) {\n arr.splice(index, 1);\n arr.unshift(value);\n }\n}\n/**\n * Pushes an element to the end of the array, if found.\n */\nexport function pushToEnd(arr, value) {\n const index = arr.indexOf(value);\n if (index > -1) {\n arr.splice(index, 1);\n arr.push(value);\n }\n}\nexport function firstIndex(array, fn) {\n for (let i = 0; i < array.length; i++) {\n const element = array[i];\n if (fn(element)) {\n return i;\n }\n }\n return -1;\n}\nexport function remove(array, value) {\n const index = array.findIndex((t) => t === value);\n if (index > -1) {\n array.splice(index, 1);\n return true;\n }\n return false;\n}\n","export const clamp = (value, min, max) => {\n if (min > max) {\n throw new Error(`${min} > ${max} is an invalid condition`);\n }\n return Math.min(max, Math.max(value, min));\n};\nexport const sequentialNumberGenerator = () => {\n let value = 1;\n return { next: () => (value++).toString() };\n};\nexport const range = (from, to) => {\n const result = [];\n if (typeof to !== 'number') {\n to = from;\n from = 0;\n }\n if (from <= to) {\n for (let i = from; i < to; i++) {\n result.push(i);\n }\n }\n else {\n for (let i = from; i > to; i--) {\n result.push(i);\n }\n }\n return result;\n};\n","import { clamp } from '../math';\nexport class ViewItem {\n set size(size) {\n this._size = size;\n }\n get size() {\n return this._size;\n }\n get cachedVisibleSize() {\n return this._cachedVisibleSize;\n }\n get visible() {\n return typeof this._cachedVisibleSize === 'undefined';\n }\n get minimumSize() {\n return this.visible ? this.view.minimumSize : 0;\n }\n get viewMinimumSize() {\n return this.view.minimumSize;\n }\n get maximumSize() {\n return this.visible ? this.view.maximumSize : 0;\n }\n get viewMaximumSize() {\n return this.view.maximumSize;\n }\n get priority() {\n return this.view.priority;\n }\n get snap() {\n return !!this.view.snap;\n }\n set enabled(enabled) {\n this.container.style.pointerEvents = enabled ? '' : 'none';\n }\n constructor(container, view, size, disposable) {\n this.container = container;\n this.view = view;\n this.disposable = disposable;\n this._cachedVisibleSize = undefined;\n if (typeof size === 'number') {\n this._size = size;\n this._cachedVisibleSize = undefined;\n container.classList.add('visible');\n }\n else {\n this._size = 0;\n this._cachedVisibleSize = size.cachedVisibleSize;\n }\n }\n setVisible(visible, size) {\n var _a;\n if (visible === this.visible) {\n return;\n }\n if (visible) {\n this.size = clamp((_a = this._cachedVisibleSize) !== null && _a !== void 0 ? _a : 0, this.viewMinimumSize, this.viewMaximumSize);\n this._cachedVisibleSize = undefined;\n }\n else {\n this._cachedVisibleSize =\n typeof size === 'number' ? size : this.size;\n this.size = 0;\n }\n this.container.classList.toggle('visible', visible);\n if (this.view.setVisible) {\n this.view.setVisible(visible);\n }\n }\n dispose() {\n this.disposable.dispose();\n return this.view;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/splitview\n *--------------------------------------------------------------------------------------------*/\nimport { removeClasses, addClasses, toggleClass, getElementsByTagName, } from '../dom';\nimport { Emitter } from '../events';\nimport { pushToStart, pushToEnd, firstIndex } from '../array';\nimport { range, clamp } from '../math';\nimport { ViewItem } from './viewItem';\nexport var Orientation;\n(function (Orientation) {\n Orientation[\"HORIZONTAL\"] = \"HORIZONTAL\";\n Orientation[\"VERTICAL\"] = \"VERTICAL\";\n})(Orientation || (Orientation = {}));\nexport var SashState;\n(function (SashState) {\n SashState[SashState[\"MAXIMUM\"] = 0] = \"MAXIMUM\";\n SashState[SashState[\"MINIMUM\"] = 1] = \"MINIMUM\";\n SashState[SashState[\"DISABLED\"] = 2] = \"DISABLED\";\n SashState[SashState[\"ENABLED\"] = 3] = \"ENABLED\";\n})(SashState || (SashState = {}));\nexport var LayoutPriority;\n(function (LayoutPriority) {\n LayoutPriority[\"Low\"] = \"low\";\n LayoutPriority[\"High\"] = \"high\";\n LayoutPriority[\"Normal\"] = \"normal\";\n})(LayoutPriority || (LayoutPriority = {}));\nexport var Sizing;\n(function (Sizing) {\n Sizing.Distribute = { type: 'distribute' };\n function Split(index) {\n return { type: 'split', index };\n }\n Sizing.Split = Split;\n function Invisible(cachedVisibleSize) {\n return { type: 'invisible', cachedVisibleSize };\n }\n Sizing.Invisible = Invisible;\n})(Sizing || (Sizing = {}));\nexport class Splitview {\n get contentSize() {\n return this._contentSize;\n }\n get size() {\n return this._size;\n }\n set size(value) {\n this._size = value;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n set orthogonalSize(value) {\n this._orthogonalSize = value;\n }\n get length() {\n return this.viewItems.length;\n }\n get proportions() {\n return this._proportions ? [...this._proportions] : undefined;\n }\n get orientation() {\n return this._orientation;\n }\n set orientation(value) {\n this._orientation = value;\n const tmp = this.size;\n this.size = this.orthogonalSize;\n this.orthogonalSize = tmp;\n removeClasses(this.element, 'horizontal', 'vertical');\n this.element.classList.add(this.orientation == Orientation.HORIZONTAL\n ? 'horizontal'\n : 'vertical');\n }\n get minimumSize() {\n return this.viewItems.reduce((r, item) => r + item.minimumSize, 0);\n }\n get maximumSize() {\n return this.length === 0\n ? Number.POSITIVE_INFINITY\n : this.viewItems.reduce((r, item) => r + item.maximumSize, 0);\n }\n get startSnappingEnabled() {\n return this._startSnappingEnabled;\n }\n set startSnappingEnabled(startSnappingEnabled) {\n if (this._startSnappingEnabled === startSnappingEnabled) {\n return;\n }\n this._startSnappingEnabled = startSnappingEnabled;\n this.updateSashEnablement();\n }\n get endSnappingEnabled() {\n return this._endSnappingEnabled;\n }\n set endSnappingEnabled(endSnappingEnabled) {\n if (this._endSnappingEnabled === endSnappingEnabled) {\n return;\n }\n this._endSnappingEnabled = endSnappingEnabled;\n this.updateSashEnablement();\n }\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = value;\n toggleClass(this.element, 'dv-splitview-disabled', value);\n }\n constructor(container, options) {\n this.container = container;\n this.viewItems = [];\n this.sashes = [];\n this._size = 0;\n this._orthogonalSize = 0;\n this._contentSize = 0;\n this._proportions = undefined;\n this._startSnappingEnabled = true;\n this._endSnappingEnabled = true;\n this._disabled = false;\n this._onDidSashEnd = new Emitter();\n this.onDidSashEnd = this._onDidSashEnd.event;\n this._onDidAddView = new Emitter();\n this.onDidAddView = this._onDidAddView.event;\n this._onDidRemoveView = new Emitter();\n this.onDidRemoveView = this._onDidRemoveView.event;\n this.resize = (index, delta, sizes = this.viewItems.map((x) => x.size), lowPriorityIndexes, highPriorityIndexes, overloadMinDelta = Number.NEGATIVE_INFINITY, overloadMaxDelta = Number.POSITIVE_INFINITY, snapBefore, snapAfter) => {\n if (index < 0 || index > this.viewItems.length) {\n return 0;\n }\n const upIndexes = range(index, -1);\n const downIndexes = range(index + 1, this.viewItems.length);\n //\n if (highPriorityIndexes) {\n for (const i of highPriorityIndexes) {\n pushToStart(upIndexes, i);\n pushToStart(downIndexes, i);\n }\n }\n if (lowPriorityIndexes) {\n for (const i of lowPriorityIndexes) {\n pushToEnd(upIndexes, i);\n pushToEnd(downIndexes, i);\n }\n }\n //\n const upItems = upIndexes.map((i) => this.viewItems[i]);\n const upSizes = upIndexes.map((i) => sizes[i]);\n //\n const downItems = downIndexes.map((i) => this.viewItems[i]);\n const downSizes = downIndexes.map((i) => sizes[i]);\n //\n const minDeltaUp = upIndexes.reduce((_, i) => _ + this.viewItems[i].minimumSize - sizes[i], 0);\n const maxDeltaUp = upIndexes.reduce((_, i) => _ + this.viewItems[i].maximumSize - sizes[i], 0);\n //\n const maxDeltaDown = downIndexes.length === 0\n ? Number.POSITIVE_INFINITY\n : downIndexes.reduce((_, i) => _ + sizes[i] - this.viewItems[i].minimumSize, 0);\n const minDeltaDown = downIndexes.length === 0\n ? Number.NEGATIVE_INFINITY\n : downIndexes.reduce((_, i) => _ + sizes[i] - this.viewItems[i].maximumSize, 0);\n //\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\n //\n let snapped = false;\n if (snapBefore) {\n const snapView = this.viewItems[snapBefore.index];\n const visible = delta >= snapBefore.limitDelta;\n snapped = visible !== snapView.visible;\n snapView.setVisible(visible, snapBefore.size);\n }\n if (!snapped && snapAfter) {\n const snapView = this.viewItems[snapAfter.index];\n const visible = delta < snapAfter.limitDelta;\n snapped = visible !== snapView.visible;\n snapView.setVisible(visible, snapAfter.size);\n }\n if (snapped) {\n return this.resize(index, delta, sizes, lowPriorityIndexes, highPriorityIndexes, overloadMinDelta, overloadMaxDelta);\n }\n //\n const tentativeDelta = clamp(delta, minDelta, maxDelta);\n let actualDelta = 0;\n //\n let deltaUp = tentativeDelta;\n for (let i = 0; i < upItems.length; i++) {\n const item = upItems[i];\n const size = clamp(upSizes[i] + deltaUp, item.minimumSize, item.maximumSize);\n const viewDelta = size - upSizes[i];\n actualDelta += viewDelta;\n deltaUp -= viewDelta;\n item.size = size;\n }\n //\n let deltaDown = actualDelta;\n for (let i = 0; i < downItems.length; i++) {\n const item = downItems[i];\n const size = clamp(downSizes[i] - deltaDown, item.minimumSize, item.maximumSize);\n const viewDelta = size - downSizes[i];\n deltaDown += viewDelta;\n item.size = size;\n }\n //\n return delta;\n };\n this._orientation = options.orientation;\n this.element = this.createContainer();\n this.proportionalLayout =\n options.proportionalLayout === undefined\n ? true\n : !!options.proportionalLayout;\n this.viewContainer = this.createViewContainer();\n this.sashContainer = this.createSashContainer();\n this.element.appendChild(this.sashContainer);\n this.element.appendChild(this.viewContainer);\n this.container.appendChild(this.element);\n this.style(options.styles);\n // We have an existing set of view, add them now\n if (options.descriptor) {\n this._size = options.descriptor.size;\n options.descriptor.views.forEach((viewDescriptor, index) => {\n const sizing = viewDescriptor.visible === undefined ||\n viewDescriptor.visible\n ? viewDescriptor.size\n : {\n type: 'invisible',\n cachedVisibleSize: viewDescriptor.size,\n };\n const view = viewDescriptor.view;\n this.addView(view, sizing, index, true\n // true skip layout\n );\n });\n // Initialize content size and proportions for first layout\n this._contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n this.saveProportions();\n }\n }\n style(styles) {\n if ((styles === null || styles === void 0 ? void 0 : styles.separatorBorder) === 'transparent') {\n removeClasses(this.element, 'separator-border');\n this.element.style.removeProperty('--dv-separator-border');\n }\n else {\n addClasses(this.element, 'separator-border');\n if (styles === null || styles === void 0 ? void 0 : styles.separatorBorder) {\n this.element.style.setProperty('--dv-separator-border', styles.separatorBorder);\n }\n }\n }\n isViewVisible(index) {\n if (index < 0 || index >= this.viewItems.length) {\n throw new Error('Index out of bounds');\n }\n const viewItem = this.viewItems[index];\n return viewItem.visible;\n }\n setViewVisible(index, visible) {\n if (index < 0 || index >= this.viewItems.length) {\n throw new Error('Index out of bounds');\n }\n toggleClass(this.container, 'visible', visible);\n const viewItem = this.viewItems[index];\n toggleClass(this.container, 'visible', visible);\n viewItem.setVisible(visible, viewItem.size);\n this.distributeEmptySpace(index);\n this.layoutViews();\n this.saveProportions();\n }\n getViewSize(index) {\n if (index < 0 || index >= this.viewItems.length) {\n return -1;\n }\n return this.viewItems[index].size;\n }\n resizeView(index, size) {\n if (index < 0 || index >= this.viewItems.length) {\n return;\n }\n const indexes = range(this.viewItems.length).filter((i) => i !== index);\n const lowPriorityIndexes = [\n ...indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low),\n index,\n ];\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n const item = this.viewItems[index];\n size = Math.round(size);\n size = clamp(size, item.minimumSize, Math.min(item.maximumSize, this._size));\n item.size = size;\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\n }\n getViews() {\n return this.viewItems.map((x) => x.view);\n }\n onDidChange(item, size) {\n const index = this.viewItems.indexOf(item);\n if (index < 0 || index >= this.viewItems.length) {\n return;\n }\n size = typeof size === 'number' ? size : item.size;\n size = clamp(size, item.minimumSize, item.maximumSize);\n item.size = size;\n const indexes = range(this.viewItems.length).filter((i) => i !== index);\n const lowPriorityIndexes = [\n ...indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low),\n index,\n ];\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n /**\n * add this view we are changing to the low-index list since we have determined the size\n * here and don't want it changed\n */\n this.relayout([...lowPriorityIndexes, index], highPriorityIndexes);\n }\n addView(view, size = { type: 'distribute' }, index = this.viewItems.length, skipLayout) {\n const container = document.createElement('div');\n container.className = 'view';\n container.appendChild(view.element);\n let viewSize;\n if (typeof size === 'number') {\n viewSize = size;\n }\n else if (size.type === 'split') {\n viewSize = this.getViewSize(size.index) / 2;\n }\n else if (size.type === 'invisible') {\n viewSize = { cachedVisibleSize: size.cachedVisibleSize };\n }\n else {\n viewSize = view.minimumSize;\n }\n const disposable = view.onDidChange((newSize) => this.onDidChange(viewItem, newSize.size));\n const viewItem = new ViewItem(container, view, viewSize, {\n dispose: () => {\n disposable.dispose();\n this.viewContainer.removeChild(container);\n },\n });\n if (index === this.viewItems.length) {\n this.viewContainer.appendChild(container);\n }\n else {\n this.viewContainer.insertBefore(container, this.viewContainer.children.item(index));\n }\n this.viewItems.splice(index, 0, viewItem);\n if (this.viewItems.length > 1) {\n //add sash\n const sash = document.createElement('div');\n sash.className = 'sash';\n const onPointerStart = (event) => {\n for (const item of this.viewItems) {\n item.enabled = false;\n }\n const iframes = [\n ...getElementsByTagName('iframe'),\n ...getElementsByTagName('webview'),\n ];\n for (const iframe of iframes) {\n iframe.style.pointerEvents = 'none';\n }\n const start = this._orientation === Orientation.HORIZONTAL\n ? event.clientX\n : event.clientY;\n const sashIndex = firstIndex(this.sashes, (s) => s.container === sash);\n //\n const sizes = this.viewItems.map((x) => x.size);\n //\n let snapBefore;\n let snapAfter;\n const upIndexes = range(sashIndex, -1);\n const downIndexes = range(sashIndex + 1, this.viewItems.length);\n const minDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].minimumSize - sizes[i]), 0);\n const maxDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].viewMaximumSize - sizes[i]), 0);\n const maxDeltaDown = downIndexes.length === 0\n ? Number.POSITIVE_INFINITY\n : downIndexes.reduce((r, i) => r +\n (sizes[i] - this.viewItems[i].minimumSize), 0);\n const minDeltaDown = downIndexes.length === 0\n ? Number.NEGATIVE_INFINITY\n : downIndexes.reduce((r, i) => r +\n (sizes[i] -\n this.viewItems[i].viewMaximumSize), 0);\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\n if (typeof snapBeforeIndex === 'number') {\n const snappedViewItem = this.viewItems[snapBeforeIndex];\n const halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);\n snapBefore = {\n index: snapBeforeIndex,\n limitDelta: snappedViewItem.visible\n ? minDelta - halfSize\n : minDelta + halfSize,\n size: snappedViewItem.size,\n };\n }\n if (typeof snapAfterIndex === 'number') {\n const snappedViewItem = this.viewItems[snapAfterIndex];\n const halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);\n snapAfter = {\n index: snapAfterIndex,\n limitDelta: snappedViewItem.visible\n ? maxDelta + halfSize\n : maxDelta - halfSize,\n size: snappedViewItem.size,\n };\n }\n const onPointerMove = (event) => {\n const current = this._orientation === Orientation.HORIZONTAL\n ? event.clientX\n : event.clientY;\n const delta = current - start;\n this.resize(sashIndex, delta, sizes, undefined, undefined, minDelta, maxDelta, snapBefore, snapAfter);\n this.distributeEmptySpace();\n this.layoutViews();\n };\n const end = () => {\n for (const item of this.viewItems) {\n item.enabled = true;\n }\n for (const iframe of iframes) {\n iframe.style.pointerEvents = 'auto';\n }\n this.saveProportions();\n document.removeEventListener('pointermove', onPointerMove);\n document.removeEventListener('pointerup', end);\n document.removeEventListener('pointercancel', end);\n this._onDidSashEnd.fire(undefined);\n };\n document.addEventListener('pointermove', onPointerMove);\n document.addEventListener('pointerup', end);\n document.addEventListener('pointercancel', end);\n };\n sash.addEventListener('pointerdown', onPointerStart);\n const sashItem = {\n container: sash,\n disposable: () => {\n sash.removeEventListener('pointerdown', onPointerStart);\n this.sashContainer.removeChild(sash);\n },\n };\n this.sashContainer.appendChild(sash);\n this.sashes.push(sashItem);\n }\n if (!skipLayout) {\n this.relayout([index]);\n }\n if (!skipLayout &&\n typeof size !== 'number' &&\n size.type === 'distribute') {\n this.distributeViewSizes();\n }\n this._onDidAddView.fire(view);\n }\n distributeViewSizes() {\n const flexibleViewItems = [];\n let flexibleSize = 0;\n for (const item of this.viewItems) {\n if (item.maximumSize - item.minimumSize > 0) {\n flexibleViewItems.push(item);\n flexibleSize += item.size;\n }\n }\n const size = Math.floor(flexibleSize / flexibleViewItems.length);\n for (const item of flexibleViewItems) {\n item.size = clamp(size, item.minimumSize, item.maximumSize);\n }\n const indexes = range(this.viewItems.length);\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\n }\n removeView(index, sizing, skipLayout = false) {\n // Remove view\n const viewItem = this.viewItems.splice(index, 1)[0];\n viewItem.dispose();\n // Remove sash\n if (this.viewItems.length >= 1) {\n const sashIndex = Math.max(index - 1, 0);\n const sashItem = this.sashes.splice(sashIndex, 1)[0];\n sashItem.disposable();\n }\n if (!skipLayout) {\n this.relayout();\n }\n if (sizing && sizing.type === 'distribute') {\n this.distributeViewSizes();\n }\n this._onDidRemoveView.fire(viewItem.view);\n return viewItem.view;\n }\n getViewCachedVisibleSize(index) {\n if (index < 0 || index >= this.viewItems.length) {\n throw new Error('Index out of bounds');\n }\n const viewItem = this.viewItems[index];\n return viewItem.cachedVisibleSize;\n }\n moveView(from, to) {\n const cachedVisibleSize = this.getViewCachedVisibleSize(from);\n const sizing = typeof cachedVisibleSize === 'undefined'\n ? this.getViewSize(from)\n : Sizing.Invisible(cachedVisibleSize);\n const view = this.removeView(from, undefined, true);\n this.addView(view, sizing, to);\n }\n layout(size, orthogonalSize) {\n const previousSize = Math.max(this.size, this._contentSize);\n this.size = size;\n this.orthogonalSize = orthogonalSize;\n if (!this.proportions) {\n const indexes = range(this.viewItems.length);\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n this.resize(this.viewItems.length - 1, size - previousSize, undefined, lowPriorityIndexes, highPriorityIndexes);\n }\n else {\n let total = 0;\n for (let i = 0; i < this.viewItems.length; i++) {\n const item = this.viewItems[i];\n const proportion = this.proportions[i];\n if (typeof proportion === 'number') {\n total += proportion;\n }\n else {\n size -= item.size;\n }\n }\n for (let i = 0; i < this.viewItems.length; i++) {\n const item = this.viewItems[i];\n const proportion = this.proportions[i];\n if (typeof proportion === 'number' && total > 0) {\n item.size = clamp(Math.round((proportion * size) / total), item.minimumSize, item.maximumSize);\n }\n }\n }\n this.distributeEmptySpace();\n this.layoutViews();\n }\n relayout(lowPriorityIndexes, highPriorityIndexes) {\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n this.resize(this.viewItems.length - 1, this._size - contentSize, undefined, lowPriorityIndexes, highPriorityIndexes);\n this.distributeEmptySpace();\n this.layoutViews();\n this.saveProportions();\n }\n distributeEmptySpace(lowPriorityIndex) {\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n let emptyDelta = this.size - contentSize;\n const indexes = range(this.viewItems.length - 1, -1);\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n for (const index of highPriorityIndexes) {\n pushToStart(indexes, index);\n }\n for (const index of lowPriorityIndexes) {\n pushToEnd(indexes, index);\n }\n if (typeof lowPriorityIndex === 'number') {\n pushToEnd(indexes, lowPriorityIndex);\n }\n for (let i = 0; emptyDelta !== 0 && i < indexes.length; i++) {\n const item = this.viewItems[indexes[i]];\n const size = clamp(item.size + emptyDelta, item.minimumSize, item.maximumSize);\n const viewDelta = size - item.size;\n emptyDelta -= viewDelta;\n item.size = size;\n }\n }\n saveProportions() {\n if (this.proportionalLayout && this._contentSize > 0) {\n this._proportions = this.viewItems.map((i) => i.visible ? i.size / this._contentSize : undefined);\n }\n }\n layoutViews() {\n this._contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n let sum = 0;\n const x = [];\n this.updateSashEnablement();\n for (let i = 0; i < this.viewItems.length - 1; i++) {\n sum += this.viewItems[i].size;\n x.push(sum);\n const offset = Math.min(Math.max(0, sum - 2), this.size - 4);\n if (this._orientation === Orientation.HORIZONTAL) {\n this.sashes[i].container.style.left = `${offset}px`;\n this.sashes[i].container.style.top = `0px`;\n }\n if (this._orientation === Orientation.VERTICAL) {\n this.sashes[i].container.style.left = `0px`;\n this.sashes[i].container.style.top = `${offset}px`;\n }\n }\n this.viewItems.forEach((view, i) => {\n if (this._orientation === Orientation.HORIZONTAL) {\n view.container.style.width = `${view.size}px`;\n view.container.style.left = i == 0 ? '0px' : `${x[i - 1]}px`;\n view.container.style.top = '';\n view.container.style.height = '';\n }\n if (this._orientation === Orientation.VERTICAL) {\n view.container.style.height = `${view.size}px`;\n view.container.style.top = i == 0 ? '0px' : `${x[i - 1]}px`;\n view.container.style.width = '';\n view.container.style.left = '';\n }\n view.view.layout(view.size, this._orthogonalSize);\n });\n }\n findFirstSnapIndex(indexes) {\n // visible views first\n for (const index of indexes) {\n const viewItem = this.viewItems[index];\n if (!viewItem.visible) {\n continue;\n }\n if (viewItem.snap) {\n return index;\n }\n }\n // then, hidden views\n for (const index of indexes) {\n const viewItem = this.viewItems[index];\n if (viewItem.visible &&\n viewItem.maximumSize - viewItem.minimumSize > 0) {\n return undefined;\n }\n if (!viewItem.visible && viewItem.snap) {\n return index;\n }\n }\n return undefined;\n }\n updateSashEnablement() {\n let previous = false;\n const collapsesDown = this.viewItems.map((i) => (previous = i.size - i.minimumSize > 0 || previous));\n previous = false;\n const expandsDown = this.viewItems.map((i) => (previous = i.maximumSize - i.size > 0 || previous));\n const reverseViews = [...this.viewItems].reverse();\n previous = false;\n const collapsesUp = reverseViews\n .map((i) => (previous = i.size - i.minimumSize > 0 || previous))\n .reverse();\n previous = false;\n const expandsUp = reverseViews\n .map((i) => (previous = i.maximumSize - i.size > 0 || previous))\n .reverse();\n let position = 0;\n for (let index = 0; index < this.sashes.length; index++) {\n const sash = this.sashes[index];\n const viewItem = this.viewItems[index];\n position += viewItem.size;\n const min = !(collapsesDown[index] && expandsUp[index + 1]);\n const max = !(expandsDown[index] && collapsesUp[index + 1]);\n if (min && max) {\n const upIndexes = range(index, -1);\n const downIndexes = range(index + 1, this.viewItems.length);\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\n const snappedBefore = typeof snapBeforeIndex === 'number' &&\n !this.viewItems[snapBeforeIndex].visible;\n const snappedAfter = typeof snapAfterIndex === 'number' &&\n !this.viewItems[snapAfterIndex].visible;\n if (snappedBefore &&\n collapsesUp[index] &&\n (position > 0 || this.startSnappingEnabled)) {\n this.updateSash(sash, SashState.MINIMUM);\n }\n else if (snappedAfter &&\n collapsesDown[index] &&\n (position < this._contentSize || this.endSnappingEnabled)) {\n this.updateSash(sash, SashState.MAXIMUM);\n }\n else {\n this.updateSash(sash, SashState.DISABLED);\n }\n }\n else if (min && !max) {\n this.updateSash(sash, SashState.MINIMUM);\n }\n else if (!min && max) {\n this.updateSash(sash, SashState.MAXIMUM);\n }\n else {\n this.updateSash(sash, SashState.ENABLED);\n }\n }\n }\n updateSash(sash, state) {\n toggleClass(sash.container, 'disabled', state === SashState.DISABLED);\n toggleClass(sash.container, 'enabled', state === SashState.ENABLED);\n toggleClass(sash.container, 'maximum', state === SashState.MAXIMUM);\n toggleClass(sash.container, 'minimum', state === SashState.MINIMUM);\n }\n createViewContainer() {\n const element = document.createElement('div');\n element.className = 'view-container';\n return element;\n }\n createSashContainer() {\n const element = document.createElement('div');\n element.className = 'sash-container';\n return element;\n }\n createContainer() {\n const element = document.createElement('div');\n const orientationClassname = this._orientation === Orientation.HORIZONTAL\n ? 'horizontal'\n : 'vertical';\n element.className = `split-view-container ${orientationClassname}`;\n return element;\n }\n dispose() {\n this._onDidSashEnd.dispose();\n this._onDidAddView.dispose();\n this._onDidRemoveView.dispose();\n for (let i = 0; i < this.element.children.length; i++) {\n if (this.element.children.item(i) === this.element) {\n this.element.removeChild(this.element);\n break;\n }\n }\n for (const viewItem of this.viewItems) {\n viewItem.dispose();\n }\n this.element.remove();\n }\n}\n","import { Splitview, Orientation, } from '../splitview/splitview';\nimport { CompositeDisposable } from '../lifecycle';\nimport { Emitter } from '../events';\nimport { addClasses, removeClasses } from '../dom';\nexport class Paneview extends CompositeDisposable {\n get onDidAddView() {\n return this.splitview.onDidAddView;\n }\n get onDidRemoveView() {\n return this.splitview.onDidRemoveView;\n }\n get minimumSize() {\n return this.splitview.minimumSize;\n }\n get maximumSize() {\n return this.splitview.maximumSize;\n }\n get orientation() {\n return this.splitview.orientation;\n }\n get size() {\n return this.splitview.size;\n }\n get orthogonalSize() {\n return this.splitview.orthogonalSize;\n }\n constructor(container, options) {\n var _a;\n super();\n this.paneItems = [];\n this.skipAnimation = false;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._orientation = (_a = options.orientation) !== null && _a !== void 0 ? _a : Orientation.VERTICAL;\n this.element = document.createElement('div');\n this.element.className = 'pane-container';\n container.appendChild(this.element);\n this.splitview = new Splitview(this.element, {\n orientation: this._orientation,\n proportionalLayout: false,\n descriptor: options.descriptor,\n });\n // if we've added views from the descriptor we need to\n // add the panes to our Pane array and setup animation\n this.getPanes().forEach((pane) => {\n const disposable = new CompositeDisposable(pane.onDidChangeExpansionState(() => {\n this.setupAnimation();\n this._onDidChange.fire(undefined);\n }));\n const paneItem = {\n pane,\n disposable: {\n dispose: () => {\n disposable.dispose();\n },\n },\n };\n this.paneItems.push(paneItem);\n pane.orthogonalSize = this.splitview.orthogonalSize;\n });\n this.addDisposables(this._onDidChange, this.splitview.onDidSashEnd(() => {\n this._onDidChange.fire(undefined);\n }), this.splitview.onDidAddView(() => {\n this._onDidChange.fire();\n }), this.splitview.onDidRemoveView(() => {\n this._onDidChange.fire();\n }));\n }\n setViewVisible(index, visible) {\n this.splitview.setViewVisible(index, visible);\n }\n addPane(pane, size, index = this.splitview.length, skipLayout = false) {\n const disposable = pane.onDidChangeExpansionState(() => {\n this.setupAnimation();\n this._onDidChange.fire(undefined);\n });\n const paneItem = {\n pane,\n disposable: {\n dispose: () => {\n disposable.dispose();\n },\n },\n };\n this.paneItems.splice(index, 0, paneItem);\n pane.orthogonalSize = this.splitview.orthogonalSize;\n this.splitview.addView(pane, size, index, skipLayout);\n }\n getViewSize(index) {\n return this.splitview.getViewSize(index);\n }\n getPanes() {\n return this.splitview.getViews();\n }\n removePane(index, options = { skipDispose: false }) {\n const paneItem = this.paneItems.splice(index, 1)[0];\n this.splitview.removeView(index);\n if (!options.skipDispose) {\n paneItem.disposable.dispose();\n paneItem.pane.dispose();\n }\n return paneItem;\n }\n moveView(from, to) {\n if (from === to) {\n return;\n }\n const view = this.removePane(from, { skipDispose: true });\n this.skipAnimation = true;\n try {\n this.addPane(view.pane, view.pane.size, to, false);\n }\n finally {\n this.skipAnimation = false;\n }\n }\n layout(size, orthogonalSize) {\n this.splitview.layout(size, orthogonalSize);\n }\n setupAnimation() {\n if (this.skipAnimation) {\n return;\n }\n if (this.animationTimer) {\n clearTimeout(this.animationTimer);\n this.animationTimer = undefined;\n }\n addClasses(this.element, 'animated');\n this.animationTimer = setTimeout(() => {\n this.animationTimer = undefined;\n removeClasses(this.element, 'animated');\n }, 200);\n }\n dispose() {\n super.dispose();\n if (this.animationTimer) {\n clearTimeout(this.animationTimer);\n this.animationTimer = undefined;\n }\n this.paneItems.forEach((paneItem) => {\n paneItem.disposable.dispose();\n paneItem.pane.dispose();\n });\n this.paneItems = [];\n this.splitview.dispose();\n this.element.remove();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\n *--------------------------------------------------------------------------------------------*/\nimport { Orientation } from '../splitview/splitview';\nimport { Emitter } from '../events';\nexport class LeafNode {\n get minimumWidth() {\n return this.view.minimumWidth;\n }\n get maximumWidth() {\n return this.view.maximumWidth;\n }\n get minimumHeight() {\n return this.view.minimumHeight;\n }\n get maximumHeight() {\n return this.view.maximumHeight;\n }\n get priority() {\n return this.view.priority;\n }\n get snap() {\n return this.view.snap;\n }\n get minimumSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumHeight\n : this.minimumWidth;\n }\n get maximumSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumHeight\n : this.maximumWidth;\n }\n get minimumOrthogonalSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumWidth\n : this.minimumHeight;\n }\n get maximumOrthogonalSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumWidth\n : this.maximumHeight;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n get size() {\n return this._size;\n }\n get element() {\n return this.view.element;\n }\n get width() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.orthogonalSize\n : this.size;\n }\n get height() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.size\n : this.orthogonalSize;\n }\n constructor(view, orientation, orthogonalSize, size = 0) {\n this.view = view;\n this.orientation = orientation;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._orthogonalSize = orthogonalSize;\n this._size = size;\n this._disposable = this.view.onDidChange((event) => {\n if (event) {\n this._onDidChange.fire({\n size: this.orientation === Orientation.VERTICAL\n ? event.width\n : event.height,\n orthogonalSize: this.orientation === Orientation.VERTICAL\n ? event.height\n : event.width,\n });\n }\n else {\n this._onDidChange.fire({});\n }\n });\n }\n setVisible(visible) {\n if (this.view.setVisible) {\n this.view.setVisible(visible);\n }\n }\n layout(size, orthogonalSize) {\n this._size = size;\n this._orthogonalSize = orthogonalSize;\n this.view.layout(this.width, this.height);\n }\n dispose() {\n this._onDidChange.dispose();\n this._disposable.dispose();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\n *--------------------------------------------------------------------------------------------*/\nimport { Splitview, Orientation, LayoutPriority, } from '../splitview/splitview';\nimport { Emitter, Event } from '../events';\nimport { LeafNode } from './leafNode';\nimport { CompositeDisposable, Disposable } from '../lifecycle';\nexport class BranchNode extends CompositeDisposable {\n get width() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.size\n : this.orthogonalSize;\n }\n get height() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.orthogonalSize\n : this.size;\n }\n get minimumSize() {\n return this.children.length === 0\n ? 0\n : Math.max(...this.children.map((c, index) => this.splitview.isViewVisible(index)\n ? c.minimumOrthogonalSize\n : 0));\n }\n get maximumSize() {\n return Math.min(...this.children.map((c, index) => this.splitview.isViewVisible(index)\n ? c.maximumOrthogonalSize\n : Number.POSITIVE_INFINITY));\n }\n get minimumOrthogonalSize() {\n return this.splitview.minimumSize;\n }\n get maximumOrthogonalSize() {\n return this.splitview.maximumSize;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n get size() {\n return this._size;\n }\n get minimumWidth() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumOrthogonalSize\n : this.minimumSize;\n }\n get minimumHeight() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumSize\n : this.minimumOrthogonalSize;\n }\n get maximumWidth() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumOrthogonalSize\n : this.maximumSize;\n }\n get maximumHeight() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumSize\n : this.maximumOrthogonalSize;\n }\n get priority() {\n if (this.children.length === 0) {\n return LayoutPriority.Normal;\n }\n const priorities = this.children.map((c) => typeof c.priority === 'undefined'\n ? LayoutPriority.Normal\n : c.priority);\n if (priorities.some((p) => p === LayoutPriority.High)) {\n return LayoutPriority.High;\n }\n else if (priorities.some((p) => p === LayoutPriority.Low)) {\n return LayoutPriority.Low;\n }\n return LayoutPriority.Normal;\n }\n get disabled() {\n return this.splitview.disabled;\n }\n set disabled(value) {\n this.splitview.disabled = value;\n }\n constructor(orientation, proportionalLayout, styles, size, orthogonalSize, disabled, childDescriptors) {\n super();\n this.orientation = orientation;\n this.proportionalLayout = proportionalLayout;\n this.styles = styles;\n this._childrenDisposable = Disposable.NONE;\n this.children = [];\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._onDidVisibilityChange = new Emitter();\n this.onDidVisibilityChange = this._onDidVisibilityChange.event;\n this._orthogonalSize = orthogonalSize;\n this._size = size;\n this.element = document.createElement('div');\n this.element.className = 'branch-node';\n if (!childDescriptors) {\n this.splitview = new Splitview(this.element, {\n orientation: this.orientation,\n proportionalLayout,\n styles,\n });\n this.splitview.layout(this.size, this.orthogonalSize);\n }\n else {\n const descriptor = {\n views: childDescriptors.map((childDescriptor) => {\n return {\n view: childDescriptor.node,\n size: childDescriptor.node.size,\n visible: childDescriptor.node instanceof LeafNode &&\n childDescriptor.visible !== undefined\n ? childDescriptor.visible\n : true,\n };\n }),\n size: this.orthogonalSize,\n };\n this.children = childDescriptors.map((c) => c.node);\n this.splitview = new Splitview(this.element, {\n orientation: this.orientation,\n descriptor,\n proportionalLayout,\n styles,\n });\n }\n this.disabled = disabled;\n this.addDisposables(this._onDidChange, this._onDidVisibilityChange, this.splitview.onDidSashEnd(() => {\n this._onDidChange.fire({});\n }));\n this.setupChildrenEvents();\n }\n setVisible(visible) {\n for (const child of this.children) {\n child.setVisible(visible);\n }\n }\n isChildVisible(index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n return this.splitview.isViewVisible(index);\n }\n setChildVisible(index, visible) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n if (this.splitview.isViewVisible(index) === visible) {\n return;\n }\n const wereAllChildrenHidden = this.splitview.contentSize === 0;\n this.splitview.setViewVisible(index, visible);\n const areAllChildrenHidden = this.splitview.contentSize === 0;\n // If all children are hidden then the parent should hide the entire splitview\n // If the entire splitview is hidden then the parent should show the splitview when a child is shown\n if ((visible && wereAllChildrenHidden) ||\n (!visible && areAllChildrenHidden)) {\n this._onDidVisibilityChange.fire(visible);\n }\n }\n moveChild(from, to) {\n if (from === to) {\n return;\n }\n if (from < 0 || from >= this.children.length) {\n throw new Error('Invalid from index');\n }\n if (from < to) {\n to--;\n }\n this.splitview.moveView(from, to);\n const child = this._removeChild(from);\n this._addChild(child, to);\n }\n getChildSize(index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n return this.splitview.getViewSize(index);\n }\n resizeChild(index, size) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n this.splitview.resizeView(index, size);\n }\n layout(size, orthogonalSize) {\n this._size = orthogonalSize;\n this._orthogonalSize = size;\n this.splitview.layout(orthogonalSize, size);\n }\n addChild(node, size, index, skipLayout) {\n if (index < 0 || index > this.children.length) {\n throw new Error('Invalid index');\n }\n this.splitview.addView(node, size, index, skipLayout);\n this._addChild(node, index);\n }\n getChildCachedVisibleSize(index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n return this.splitview.getViewCachedVisibleSize(index);\n }\n removeChild(index, sizing) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n this.splitview.removeView(index, sizing);\n return this._removeChild(index);\n }\n _addChild(node, index) {\n this.children.splice(index, 0, node);\n this.setupChildrenEvents();\n }\n _removeChild(index) {\n const [child] = this.children.splice(index, 1);\n this.setupChildrenEvents();\n return child;\n }\n setupChildrenEvents() {\n this._childrenDisposable.dispose();\n this._childrenDisposable = new CompositeDisposable(Event.any(...this.children.map((c) => c.onDidChange))((e) => {\n /**\n * indicate a change has occured to allows any re-rendering but don't bubble\n * event because that was specific to this branch\n */\n this._onDidChange.fire({ size: e.orthogonalSize });\n }), ...this.children.map((c, i) => {\n if (c instanceof BranchNode) {\n return c.onDidVisibilityChange((visible) => {\n this.setChildVisible(i, visible);\n });\n }\n return Disposable.NONE;\n }));\n }\n dispose() {\n this._childrenDisposable.dispose();\n this.splitview.dispose();\n this.children.forEach((child) => child.dispose());\n super.dispose();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\n *--------------------------------------------------------------------------------------------*/\nimport { Orientation, Sizing, } from '../splitview/splitview';\nimport { tail } from '../array';\nimport { LeafNode } from './leafNode';\nimport { BranchNode } from './branchNode';\nimport { Emitter } from '../events';\nimport { MutableDisposable } from '../lifecycle';\nfunction findLeaf(candiateNode, last) {\n if (candiateNode instanceof LeafNode) {\n return candiateNode;\n }\n if (candiateNode instanceof BranchNode) {\n return findLeaf(candiateNode.children[last ? candiateNode.children.length - 1 : 0], last);\n }\n throw new Error('invalid node');\n}\nfunction flipNode(node, size, orthogonalSize) {\n if (node instanceof BranchNode) {\n const result = new BranchNode(orthogonal(node.orientation), node.proportionalLayout, node.styles, size, orthogonalSize, node.disabled);\n let totalSize = 0;\n for (let i = node.children.length - 1; i >= 0; i--) {\n const child = node.children[i];\n const childSize = child instanceof BranchNode ? child.orthogonalSize : child.size;\n let newSize = node.size === 0\n ? 0\n : Math.round((size * childSize) / node.size);\n totalSize += newSize;\n // The last view to add should adjust to rounding errors\n if (i === 0) {\n newSize += size - totalSize;\n }\n result.addChild(flipNode(child, orthogonalSize, newSize), newSize, 0, true);\n }\n return result;\n }\n else {\n return new LeafNode(node.view, orthogonal(node.orientation), orthogonalSize);\n }\n}\nexport function indexInParent(element) {\n const parentElement = element.parentElement;\n if (!parentElement) {\n throw new Error('Invalid grid element');\n }\n let el = parentElement.firstElementChild;\n let index = 0;\n while (el !== element && el !== parentElement.lastElementChild && el) {\n el = el.nextElementSibling;\n index++;\n }\n return index;\n}\n/**\n * Find the grid location of a specific DOM element by traversing the parent\n * chain and finding each child index on the way.\n *\n * This will break as soon as DOM structures of the Splitview or Gridview change.\n */\nexport function getGridLocation(element) {\n const parentElement = element.parentElement;\n if (!parentElement) {\n throw new Error('Invalid grid element');\n }\n if (/\\bgrid-view\\b/.test(parentElement.className)) {\n return [];\n }\n const index = indexInParent(parentElement);\n const ancestor = parentElement.parentElement.parentElement.parentElement;\n return [...getGridLocation(ancestor), index];\n}\nexport function getRelativeLocation(rootOrientation, location, direction) {\n const orientation = getLocationOrientation(rootOrientation, location);\n const directionOrientation = getDirectionOrientation(direction);\n if (orientation === directionOrientation) {\n const [rest, _index] = tail(location);\n let index = _index;\n if (direction === 'right' || direction === 'bottom') {\n index += 1;\n }\n return [...rest, index];\n }\n else {\n const index = direction === 'right' || direction === 'bottom' ? 1 : 0;\n return [...location, index];\n }\n}\nexport function getDirectionOrientation(direction) {\n return direction === 'top' || direction === 'bottom'\n ? Orientation.VERTICAL\n : Orientation.HORIZONTAL;\n}\nexport function getLocationOrientation(rootOrientation, location) {\n return location.length % 2 === 0\n ? orthogonal(rootOrientation)\n : rootOrientation;\n}\nexport const orthogonal = (orientation) => orientation === Orientation.HORIZONTAL\n ? Orientation.VERTICAL\n : Orientation.HORIZONTAL;\nexport function isGridBranchNode(node) {\n return !!node.children;\n}\nconst serializeBranchNode = (node, orientation) => {\n const size = orientation === Orientation.VERTICAL ? node.box.width : node.box.height;\n if (!isGridBranchNode(node)) {\n if (typeof node.cachedVisibleSize === 'number') {\n return {\n type: 'leaf',\n data: node.view.toJSON(),\n size: node.cachedVisibleSize,\n visible: false,\n };\n }\n return { type: 'leaf', data: node.view.toJSON(), size };\n }\n return {\n type: 'branch',\n data: node.children.map((c) => serializeBranchNode(c, orthogonal(orientation))),\n size,\n };\n};\nexport class Gridview {\n get length() {\n return this._root ? this._root.children.length : 0;\n }\n get orientation() {\n return this.root.orientation;\n }\n set orientation(orientation) {\n if (this.root.orientation === orientation) {\n return;\n }\n const { size, orthogonalSize } = this.root;\n this.root = flipNode(this.root, orthogonalSize, size);\n this.root.layout(size, orthogonalSize);\n }\n get width() {\n return this.root.width;\n }\n get height() {\n return this.root.height;\n }\n get minimumWidth() {\n return this.root.minimumWidth;\n }\n get minimumHeight() {\n return this.root.minimumHeight;\n }\n get maximumWidth() {\n return this.root.maximumHeight;\n }\n get maximumHeight() {\n return this.root.maximumHeight;\n }\n get locked() {\n return this._locked;\n }\n set locked(value) {\n this._locked = value;\n const branch = [this.root];\n /**\n * simple depth-first-search to cover all nodes\n *\n * @see https://en.wikipedia.org/wiki/Depth-first_search\n */\n while (branch.length > 0) {\n const node = branch.pop();\n if (node instanceof BranchNode) {\n node.disabled = value;\n branch.push(...node.children);\n }\n }\n }\n maximizedView() {\n var _a;\n return (_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.leaf.view;\n }\n hasMaximizedView() {\n return this._maximizedNode !== undefined;\n }\n maximizeView(view) {\n var _a;\n const location = getGridLocation(view.element);\n const [_, node] = this.getNode(location);\n if (!(node instanceof LeafNode)) {\n return;\n }\n if (((_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.leaf) === node) {\n return;\n }\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const hiddenOnMaximize = [];\n function hideAllViewsBut(parent, exclude) {\n for (let i = 0; i < parent.children.length; i++) {\n const child = parent.children[i];\n if (child instanceof LeafNode) {\n if (child !== exclude) {\n if (parent.isChildVisible(i)) {\n parent.setChildVisible(i, false);\n }\n else {\n hiddenOnMaximize.push(child);\n }\n }\n }\n else {\n hideAllViewsBut(child, exclude);\n }\n }\n }\n hideAllViewsBut(this.root, node);\n this._maximizedNode = { leaf: node, hiddenOnMaximize };\n this._onDidMaximizedNodeChange.fire();\n }\n exitMaximizedView() {\n if (!this._maximizedNode) {\n return;\n }\n const hiddenOnMaximize = this._maximizedNode.hiddenOnMaximize;\n function showViewsInReverseOrder(parent) {\n for (let index = parent.children.length - 1; index >= 0; index--) {\n const child = parent.children[index];\n if (child instanceof LeafNode) {\n if (!hiddenOnMaximize.includes(child)) {\n parent.setChildVisible(index, true);\n }\n }\n else {\n showViewsInReverseOrder(child);\n }\n }\n }\n showViewsInReverseOrder(this.root);\n this._maximizedNode = undefined;\n this._onDidMaximizedNodeChange.fire();\n }\n serialize() {\n if (this.hasMaximizedView()) {\n /**\n * do not persist maximized view state\n * firstly exit any maximized views to ensure the correct dimensions are persisted\n */\n this.exitMaximizedView();\n }\n const root = serializeBranchNode(this.getView(), this.orientation);\n return {\n root,\n width: this.width,\n height: this.height,\n orientation: this.orientation,\n };\n }\n dispose() {\n this.disposable.dispose();\n this._onDidChange.dispose();\n this._onDidMaximizedNodeChange.dispose();\n this.root.dispose();\n this._maximizedNode = undefined;\n this.element.remove();\n }\n clear() {\n const orientation = this.root.orientation;\n this.root = new BranchNode(orientation, this.proportionalLayout, this.styles, this.root.size, this.root.orthogonalSize, this._locked);\n }\n deserialize(json, deserializer) {\n const orientation = json.orientation;\n const height = orientation === Orientation.VERTICAL ? json.height : json.width;\n this._deserialize(json.root, orientation, deserializer, height);\n }\n _deserialize(root, orientation, deserializer, orthogonalSize) {\n this.root = this._deserializeNode(root, orientation, deserializer, orthogonalSize);\n }\n _deserializeNode(node, orientation, deserializer, orthogonalSize) {\n let result;\n if (node.type === 'branch') {\n const serializedChildren = node.data;\n const children = serializedChildren.map((serializedChild) => {\n return {\n node: this._deserializeNode(serializedChild, orthogonal(orientation), deserializer, node.size),\n visible: serializedChild.visible,\n };\n });\n result = new BranchNode(orientation, this.proportionalLayout, this.styles, node.size, // <- orthogonal size - flips at each depth\n orthogonalSize, // <- size - flips at each depth,\n this._locked, children);\n }\n else {\n result = new LeafNode(deserializer.fromJSON(node), orientation, orthogonalSize, node.size);\n }\n return result;\n }\n get root() {\n return this._root;\n }\n set root(root) {\n const oldRoot = this._root;\n if (oldRoot) {\n oldRoot.dispose();\n this._maximizedNode = undefined;\n this.element.removeChild(oldRoot.element);\n }\n this._root = root;\n this.element.appendChild(this._root.element);\n this.disposable.value = this._root.onDidChange((e) => {\n this._onDidChange.fire(e);\n });\n }\n /**\n * If the root is orientated as a VERTICAL node then nest the existing root within a new HORIZIONTAL root node\n * If the root is orientated as a HORIZONTAL node then nest the existing root within a new VERITCAL root node\n */\n insertOrthogonalSplitviewAtRoot() {\n if (!this._root) {\n return;\n }\n const oldRoot = this.root;\n oldRoot.element.remove();\n this._root = new BranchNode(orthogonal(oldRoot.orientation), this.proportionalLayout, this.styles, this.root.orthogonalSize, this.root.size, this._locked);\n if (oldRoot.children.length === 0) {\n // no data so no need to add anything back in\n }\n else if (oldRoot.children.length === 1) {\n // can remove one level of redundant branching if there is only a single child\n const childReference = oldRoot.children[0];\n const child = oldRoot.removeChild(0); // remove to prevent disposal when disposing of unwanted root\n child.dispose();\n oldRoot.dispose();\n this._root.addChild(\n /**\n * the child node will have the same orientation as the new root since\n * we are removing the inbetween node.\n * the entire 'tree' must be flipped recursively to ensure that the orientation\n * flips at each level\n */\n flipNode(childReference, childReference.orthogonalSize, childReference.size), Sizing.Distribute, 0);\n }\n else {\n this._root.addChild(oldRoot, Sizing.Distribute, 0);\n }\n this.element.appendChild(this._root.element);\n this.disposable.value = this._root.onDidChange((e) => {\n this._onDidChange.fire(e);\n });\n }\n next(location) {\n return this.progmaticSelect(location);\n }\n previous(location) {\n return this.progmaticSelect(location, true);\n }\n getView(location) {\n const node = location ? this.getNode(location)[1] : this.root;\n return this._getViews(node, this.orientation);\n }\n _getViews(node, orientation, cachedVisibleSize) {\n const box = { height: node.height, width: node.width };\n if (node instanceof LeafNode) {\n return { box, view: node.view, cachedVisibleSize };\n }\n const children = [];\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n const nodeCachedVisibleSize = node.getChildCachedVisibleSize(i);\n children.push(this._getViews(child, orthogonal(orientation), nodeCachedVisibleSize));\n }\n return { box, children };\n }\n progmaticSelect(location, reverse = false) {\n const [path, node] = this.getNode(location);\n if (!(node instanceof LeafNode)) {\n throw new Error('invalid location');\n }\n for (let i = path.length - 1; i > -1; i--) {\n const n = path[i];\n const l = location[i] || 0;\n const canProgressInCurrentLevel = reverse\n ? l - 1 > -1\n : l + 1 < n.children.length;\n if (canProgressInCurrentLevel) {\n return findLeaf(n.children[reverse ? l - 1 : l + 1], reverse);\n }\n }\n return findLeaf(this.root, reverse);\n }\n constructor(proportionalLayout, styles, orientation) {\n this.proportionalLayout = proportionalLayout;\n this.styles = styles;\n this._locked = false;\n this._maximizedNode = undefined;\n this.disposable = new MutableDisposable();\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._onDidMaximizedNodeChange = new Emitter();\n this.onDidMaximizedNodeChange = this._onDidMaximizedNodeChange.event;\n this.element = document.createElement('div');\n this.element.className = 'grid-view';\n this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0, this._locked);\n }\n isViewVisible(location) {\n const [rest, index] = tail(location);\n const [, parent] = this.getNode(rest);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid from location');\n }\n return parent.isChildVisible(index);\n }\n setViewVisible(location, visible) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [rest, index] = tail(location);\n const [, parent] = this.getNode(rest);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid from location');\n }\n parent.setChildVisible(index, visible);\n }\n moveView(parentLocation, from, to) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [, parent] = this.getNode(parentLocation);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid location');\n }\n parent.moveChild(from, to);\n }\n addView(view, size, location) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [rest, index] = tail(location);\n const [pathToParent, parent] = this.getNode(rest);\n if (parent instanceof BranchNode) {\n const node = new LeafNode(view, orthogonal(parent.orientation), parent.orthogonalSize);\n parent.addChild(node, size, index);\n }\n else {\n const [grandParent, ..._] = [...pathToParent].reverse();\n const [parentIndex, ...__] = [...rest].reverse();\n let newSiblingSize = 0;\n const newSiblingCachedVisibleSize = grandParent.getChildCachedVisibleSize(parentIndex);\n if (typeof newSiblingCachedVisibleSize === 'number') {\n newSiblingSize = Sizing.Invisible(newSiblingCachedVisibleSize);\n }\n const child = grandParent.removeChild(parentIndex);\n child.dispose();\n const newParent = new BranchNode(parent.orientation, this.proportionalLayout, this.styles, parent.size, parent.orthogonalSize, this._locked);\n grandParent.addChild(newParent, parent.size, parentIndex);\n const newSibling = new LeafNode(parent.view, grandParent.orientation, parent.size);\n newParent.addChild(newSibling, newSiblingSize, 0);\n if (typeof size !== 'number' && size.type === 'split') {\n size = { type: 'split', index: 0 };\n }\n const node = new LeafNode(view, grandParent.orientation, parent.size);\n newParent.addChild(node, size, index);\n }\n }\n remove(view, sizing) {\n const location = getGridLocation(view.element);\n return this.removeView(location, sizing);\n }\n removeView(location, sizing) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [rest, index] = tail(location);\n const [pathToParent, parent] = this.getNode(rest);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid location');\n }\n const nodeToRemove = parent.children[index];\n if (!(nodeToRemove instanceof LeafNode)) {\n throw new Error('Invalid location');\n }\n parent.removeChild(index, sizing);\n nodeToRemove.dispose();\n if (parent.children.length !== 1) {\n return nodeToRemove.view;\n }\n // if the parent has only one child and we know the parent is a BranchNode we can make the tree\n // more efficiently spaced by replacing the parent BranchNode with the child.\n // if that child is a LeafNode then we simply replace the BranchNode with the child otherwise if the child\n // is a BranchNode too we should spread it's children into the grandparent.\n // refer to the remaining child as the sibling\n const sibling = parent.children[0];\n if (pathToParent.length === 0) {\n // if the parent is root\n if (sibling instanceof LeafNode) {\n // if the sibling is a leaf node no action is required\n return nodeToRemove.view;\n }\n // otherwise the sibling is a branch node. since the parent is the root and the root has only one child\n // which is a branch node we can just set this branch node to be the new root node\n // for good housekeeping we'll removing the sibling from it's existing tree\n parent.removeChild(0, sizing);\n // and set that sibling node to be root\n this.root = sibling;\n return nodeToRemove.view;\n }\n // otherwise the parent is apart of a large sub-tree\n const [grandParent, ..._] = [...pathToParent].reverse();\n const [parentIndex, ...__] = [...rest].reverse();\n const isSiblingVisible = parent.isChildVisible(0);\n // either way we need to remove the sibling from it's existing tree\n parent.removeChild(0, sizing);\n // note the sizes of all of the grandparents children\n const sizes = grandParent.children.map((_size, i) => grandParent.getChildSize(i));\n // remove the parent from the grandparent since we are moving the sibling to take the parents place\n // this parent is no longer used and can be disposed of\n grandParent.removeChild(parentIndex, sizing).dispose();\n if (sibling instanceof BranchNode) {\n // replace the parent with the siblings children\n sizes.splice(parentIndex, 1, ...sibling.children.map((c) => c.size));\n // and add those siblings to the grandparent\n for (let i = 0; i < sibling.children.length; i++) {\n const child = sibling.children[i];\n grandParent.addChild(child, child.size, parentIndex + i);\n }\n /**\n * clean down the branch node since we need to dipose of it and\n * when .dispose() it called on a branch it will dispose of any\n * views it is holding onto.\n */\n while (sibling.children.length > 0) {\n sibling.removeChild(0);\n }\n }\n else {\n // otherwise create a new leaf node and add that to the grandparent\n const newSibling = new LeafNode(sibling.view, orthogonal(sibling.orientation), sibling.size);\n const siblingSizing = isSiblingVisible\n ? sibling.orthogonalSize\n : Sizing.Invisible(sibling.orthogonalSize);\n grandParent.addChild(newSibling, siblingSizing, parentIndex);\n }\n // the containing node of the sibling is no longer required and can be disposed of\n sibling.dispose();\n // resize everything\n for (let i = 0; i < sizes.length; i++) {\n grandParent.resizeChild(i, sizes[i]);\n }\n return nodeToRemove.view;\n }\n layout(width, height) {\n const [size, orthogonalSize] = this.root.orientation === Orientation.HORIZONTAL\n ? [height, width]\n : [width, height];\n this.root.layout(size, orthogonalSize);\n }\n getNode(location, node = this.root, path = []) {\n if (location.length === 0) {\n return [path, node];\n }\n if (!(node instanceof BranchNode)) {\n throw new Error('Invalid location');\n }\n const [index, ...rest] = location;\n if (index < 0 || index >= node.children.length) {\n throw new Error('Invalid location');\n }\n const child = node.children[index];\n path.push(node);\n return this.getNode(rest, child, path);\n }\n}\n","import { Emitter } from '../events';\nexport class SplitviewApi {\n /**\n * The minimum size the component can reach where size is measured in the direction of orientation provided.\n */\n get minimumSize() {\n return this.component.minimumSize;\n }\n /**\n * The maximum size the component can reach where size is measured in the direction of orientation provided.\n */\n get maximumSize() {\n return this.component.maximumSize;\n }\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * The current number of panels.\n */\n get length() {\n return this.component.length;\n }\n /**\n * The current orientation of the component.\n */\n get orientation() {\n return this.component.orientation;\n }\n /**\n * The list of current panels.\n */\n get panels() {\n return this.component.panels;\n }\n /**\n * Invoked after a layout is loaded through the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * Invoked whenever any aspect of the layout changes.\n * If listening to this event it may be worth debouncing ouputs.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked when a view is added.\n */\n get onDidAddView() {\n return this.component.onDidAddView;\n }\n /**\n * Invoked when a view is removed.\n */\n get onDidRemoveView() {\n return this.component.onDidRemoveView;\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Update configuratable options.\n */\n updateOptions(options) {\n this.component.updateOptions(options);\n }\n /**\n * Removes an existing panel and optionally provide a `Sizing` method\n * for the subsequent resize.\n */\n removePanel(panel, sizing) {\n this.component.removePanel(panel, sizing);\n }\n /**\n * Focus the component.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Get the reference to a panel given it's `string` id.\n */\n getPanel(id) {\n return this.component.getPanel(id);\n }\n /**\n * Layout the panel with a width and height.\n */\n layout(width, height) {\n return this.component.layout(width, height);\n }\n /**\n * Add a new panel and return the created instance.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Move a panel given it's current and desired index.\n */\n movePanel(from, to) {\n this.component.movePanel(from, to);\n }\n /**\n * Deserialize a layout to built a splitivew.\n */\n fromJSON(data) {\n this.component.fromJSON(data);\n }\n /** Serialize a layout */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Remove all panels and clear the component.\n */\n clear() {\n this.component.clear();\n }\n}\nexport class PaneviewApi {\n /**\n * The minimum size the component can reach where size is measured in the direction of orientation provided.\n */\n get minimumSize() {\n return this.component.minimumSize;\n }\n /**\n * The maximum size the component can reach where size is measured in the direction of orientation provided.\n */\n get maximumSize() {\n return this.component.maximumSize;\n }\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * All panel objects.\n */\n get panels() {\n return this.component.panels;\n }\n /**\n * Invoked when any layout change occures, an aggregation of many events.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked after a layout is deserialzied using the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * Invoked when a panel is added. May be called multiple times when moving panels.\n */\n get onDidAddView() {\n return this.component.onDidAddView;\n }\n /**\n * Invoked when a panel is removed. May be called multiple times when moving panels.\n */\n get onDidRemoveView() {\n return this.component.onDidRemoveView;\n }\n /**\n * Invoked when a Drag'n'Drop event occurs that the component was unable to handle. Exposed for custom Drag'n'Drop functionality.\n */\n get onDidDrop() {\n const emitter = new Emitter();\n const disposable = this.component.onDidDrop((e) => {\n emitter.fire(Object.assign(Object.assign({}, e), { api: this }));\n });\n emitter.dispose = () => {\n disposable.dispose();\n emitter.dispose();\n };\n return emitter.event;\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Remove a panel given the panel object.\n */\n removePanel(panel) {\n this.component.removePanel(panel);\n }\n /**\n * Get a panel object given a `string` id. May return `undefined`.\n */\n getPanel(id) {\n return this.component.getPanel(id);\n }\n /**\n * Move a panel given it's current and desired index.\n */\n movePanel(from, to) {\n this.component.movePanel(from, to);\n }\n /**\n * Focus the component. Will try to focus an active panel if one exists.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Force resize the component to an exact width and height. Read about auto-resizing before using.\n */\n layout(width, height) {\n this.component.layout(width, height);\n }\n /**\n * Add a panel and return the created object.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Create a component from a serialized object.\n */\n fromJSON(data) {\n this.component.fromJSON(data);\n }\n /**\n * Create a serialized object of the current component.\n */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Reset the component back to an empty and default state.\n */\n clear() {\n this.component.clear();\n }\n}\nexport class GridviewApi {\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * Minimum height of the component.\n */\n get minimumHeight() {\n return this.component.minimumHeight;\n }\n /**\n * Maximum height of the component.\n */\n get maximumHeight() {\n return this.component.maximumHeight;\n }\n /**\n * Minimum width of the component.\n */\n get minimumWidth() {\n return this.component.minimumWidth;\n }\n /**\n * Maximum width of the component.\n */\n get maximumWidth() {\n return this.component.maximumWidth;\n }\n /**\n * Invoked when any layout change occures, an aggregation of many events.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked when a panel is added. May be called multiple times when moving panels.\n */\n get onDidAddPanel() {\n return this.component.onDidAddGroup;\n }\n /**\n * Invoked when a panel is removed. May be called multiple times when moving panels.\n */\n get onDidRemovePanel() {\n return this.component.onDidRemoveGroup;\n }\n /**\n * Invoked when the active panel changes. May be undefined if no panel is active.\n */\n get onDidActivePanelChange() {\n return this.component.onDidActiveGroupChange;\n }\n /**\n * Invoked after a layout is deserialzied using the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * All panel objects.\n */\n get panels() {\n return this.component.groups;\n }\n /**\n * Current orientation. Can be changed after initialization.\n */\n get orientation() {\n return this.component.orientation;\n }\n set orientation(value) {\n this.component.updateOptions({ orientation: value });\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Focus the component. Will try to focus an active panel if one exists.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Force resize the component to an exact width and height. Read about auto-resizing before using.\n */\n layout(width, height, force = false) {\n this.component.layout(width, height, force);\n }\n /**\n * Add a panel and return the created object.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Remove a panel given the panel object.\n */\n removePanel(panel, sizing) {\n this.component.removePanel(panel, sizing);\n }\n /**\n * Move a panel in a particular direction relative to another panel.\n */\n movePanel(panel, options) {\n this.component.movePanel(panel, options);\n }\n /**\n * Get a panel object given a `string` id. May return `undefined`.\n */\n getPanel(id) {\n return this.component.getPanel(id);\n }\n /**\n * Create a component from a serialized object.\n */\n fromJSON(data) {\n return this.component.fromJSON(data);\n }\n /**\n * Create a serialized object of the current component.\n */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Reset the component back to an empty and default state.\n */\n clear() {\n this.component.clear();\n }\n}\nexport class DockviewApi {\n /**\n * The unique identifier for this instance. Used to manage scope of Drag'n'Drop events.\n */\n get id() {\n return this.component.id;\n }\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * Minimum height of the component.\n */\n get minimumHeight() {\n return this.component.minimumHeight;\n }\n /**\n * Maximum height of the component.\n */\n get maximumHeight() {\n return this.component.maximumHeight;\n }\n /**\n * Minimum width of the component.\n */\n get minimumWidth() {\n return this.component.minimumWidth;\n }\n /**\n * Maximum width of the component.\n */\n get maximumWidth() {\n return this.component.maximumWidth;\n }\n /**\n * Total number of groups.\n */\n get size() {\n return this.component.size;\n }\n /**\n * Total number of panels.\n */\n get totalPanels() {\n return this.component.totalPanels;\n }\n /**\n * Invoked when the active group changes. May be undefined if no group is active.\n */\n get onDidActiveGroupChange() {\n return this.component.onDidActiveGroupChange;\n }\n /**\n * Invoked when a group is added. May be called multiple times when moving groups.\n */\n get onDidAddGroup() {\n return this.component.onDidAddGroup;\n }\n /**\n * Invoked when a group is removed. May be called multiple times when moving groups.\n */\n get onDidRemoveGroup() {\n return this.component.onDidRemoveGroup;\n }\n /**\n * Invoked when the active panel changes. May be undefined if no panel is active.\n */\n get onDidActivePanelChange() {\n return this.component.onDidActivePanelChange;\n }\n /**\n * Invoked when a panel is added. May be called multiple times when moving panels.\n */\n get onDidAddPanel() {\n return this.component.onDidAddPanel;\n }\n /**\n * Invoked when a panel is removed. May be called multiple times when moving panels.\n */\n get onDidRemovePanel() {\n return this.component.onDidRemovePanel;\n }\n /**\n * Invoked after a layout is deserialzied using the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * Invoked when any layout change occures, an aggregation of many events.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked when a Drag'n'Drop event occurs that the component was unable to handle. Exposed for custom Drag'n'Drop functionality.\n */\n get onDidDrop() {\n return this.component.onDidDrop;\n }\n /**\n * Invoked when a Drag'n'Drop event occurs but before dockview handles it giving the user an opportunity to intecept and\n * prevent the event from occuring using the standard `preventDefault()` syntax.\n *\n * Preventing certain events may causes unexpected behaviours, use carefully.\n */\n get onWillDrop() {\n return this.component.onWillDrop;\n }\n /**\n * Invoked before an overlay is shown indicating a drop target.\n *\n * Calling `event.preventDefault()` will prevent the overlay being shown and prevent\n * the any subsequent drop event.\n */\n get onWillShowOverlay() {\n return this.component.onWillShowOverlay;\n }\n /**\n * Invoked before a group is dragged.\n *\n * Calling `event.nativeEvent.preventDefault()` will prevent the group drag starting.\n *\n */\n get onWillDragGroup() {\n return this.component.onWillDragGroup;\n }\n /**\n * Invoked before a panel is dragged.\n *\n * Calling `event.nativeEvent.preventDefault()` will prevent the panel drag starting.\n */\n get onWillDragPanel() {\n return this.component.onWillDragPanel;\n }\n /**\n * All panel objects.\n */\n get panels() {\n return this.component.panels;\n }\n /**\n * All group objects.\n */\n get groups() {\n return this.component.groups;\n }\n /**\n * Active panel object.\n */\n get activePanel() {\n return this.component.activePanel;\n }\n /**\n * Active group object.\n */\n get activeGroup() {\n return this.component.activeGroup;\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Focus the component. Will try to focus an active panel if one exists.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Get a panel object given a `string` id. May return `undefined`.\n */\n getPanel(id) {\n return this.component.getGroupPanel(id);\n }\n /**\n * Force resize the component to an exact width and height. Read about auto-resizing before using.\n */\n layout(width, height, force = false) {\n this.component.layout(width, height, force);\n }\n /**\n * Add a panel and return the created object.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Remove a panel given the panel object.\n */\n removePanel(panel) {\n this.component.removePanel(panel);\n }\n /**\n * Add a group and return the created object.\n */\n addGroup(options) {\n return this.component.addGroup(options);\n }\n /**\n * Close all groups and panels.\n */\n closeAllGroups() {\n return this.component.closeAllGroups();\n }\n /**\n * Remove a group and any panels within the group.\n */\n removeGroup(group) {\n this.component.removeGroup(group);\n }\n /**\n * Get a group object given a `string` id. May return undefined.\n */\n getGroup(id) {\n return this.component.getPanel(id);\n }\n /**\n * Add a floating group\n */\n addFloatingGroup(item, coord) {\n return this.component.addFloatingGroup(item, coord);\n }\n /**\n * Create a component from a serialized object.\n */\n fromJSON(data) {\n this.component.fromJSON(data);\n }\n /**\n * Create a serialized object of the current component.\n */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Reset the component back to an empty and default state.\n */\n clear() {\n this.component.clear();\n }\n /**\n * Move the focus progmatically to the next panel or group.\n */\n moveToNext(options) {\n this.component.moveToNext(options);\n }\n /**\n * Move the focus progmatically to the previous panel or group.\n */\n moveToPrevious(options) {\n this.component.moveToPrevious(options);\n }\n maximizeGroup(panel) {\n this.component.maximizeGroup(panel.group);\n }\n hasMaximizedGroup() {\n return this.component.hasMaximizedGroup();\n }\n exitMaximizedGroup() {\n this.component.exitMaximizedGroup();\n }\n get onDidMaximizedGroupChange() {\n return this.component.onDidMaximizedGroupChange;\n }\n /**\n * Add a popout group in a new Window\n */\n addPopoutGroup(item, options) {\n return this.component.addPopoutGroup(item, options);\n }\n}\n","import { addDisposableListener } from '../events';\nimport { CompositeDisposable } from '../lifecycle';\nexport class DragAndDropObserver extends CompositeDisposable {\n constructor(element, callbacks) {\n super();\n this.element = element;\n this.callbacks = callbacks;\n this.target = null;\n this.registerListeners();\n }\n onDragEnter(e) {\n this.target = e.target;\n this.callbacks.onDragEnter(e);\n }\n onDragOver(e) {\n e.preventDefault(); // needed so that the drop event fires (https://stackoverflow.com/questions/21339924/drop-event-not-firing-in-chrome)\n if (this.callbacks.onDragOver) {\n this.callbacks.onDragOver(e);\n }\n }\n onDragLeave(e) {\n if (this.target === e.target) {\n this.target = null;\n this.callbacks.onDragLeave(e);\n }\n }\n onDragEnd(e) {\n this.target = null;\n this.callbacks.onDragEnd(e);\n }\n onDrop(e) {\n this.callbacks.onDrop(e);\n }\n registerListeners() {\n this.addDisposables(addDisposableListener(this.element, 'dragenter', (e) => {\n this.onDragEnter(e);\n }, true));\n this.addDisposables(addDisposableListener(this.element, 'dragover', (e) => {\n this.onDragOver(e);\n }, true));\n this.addDisposables(addDisposableListener(this.element, 'dragleave', (e) => {\n this.onDragLeave(e);\n }));\n this.addDisposables(addDisposableListener(this.element, 'dragend', (e) => {\n this.onDragEnd(e);\n }));\n this.addDisposables(addDisposableListener(this.element, 'drop', (e) => {\n this.onDrop(e);\n }));\n }\n}\n","import { toggleClass } from '../dom';\nimport { DockviewEvent, Emitter } from '../events';\nimport { CompositeDisposable } from '../lifecycle';\nimport { DragAndDropObserver } from './dnd';\nimport { clamp } from '../math';\nexport class WillShowOverlayEvent extends DockviewEvent {\n get nativeEvent() {\n return this.options.nativeEvent;\n }\n get position() {\n return this.options.position;\n }\n constructor(options) {\n super();\n this.options = options;\n }\n}\nexport function directionToPosition(direction) {\n switch (direction) {\n case 'above':\n return 'top';\n case 'below':\n return 'bottom';\n case 'left':\n return 'left';\n case 'right':\n return 'right';\n case 'within':\n return 'center';\n default:\n throw new Error(`invalid direction '${direction}'`);\n }\n}\nexport function positionToDirection(position) {\n switch (position) {\n case 'top':\n return 'above';\n case 'bottom':\n return 'below';\n case 'left':\n return 'left';\n case 'right':\n return 'right';\n case 'center':\n return 'within';\n default:\n throw new Error(`invalid position '${position}'`);\n }\n}\nconst DEFAULT_ACTIVATION_SIZE = {\n value: 20,\n type: 'percentage',\n};\nconst DEFAULT_SIZE = {\n value: 50,\n type: 'percentage',\n};\nconst SMALL_WIDTH_BOUNDARY = 100;\nconst SMALL_HEIGHT_BOUNDARY = 100;\nexport class Droptarget extends CompositeDisposable {\n get state() {\n return this._state;\n }\n constructor(element, options) {\n super();\n this.element = element;\n this.options = options;\n this._onDrop = new Emitter();\n this.onDrop = this._onDrop.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n // use a set to take advantage of #<set>.has\n this._acceptedTargetZonesSet = new Set(this.options.acceptedTargetZones);\n this.dnd = new DragAndDropObserver(this.element, {\n onDragEnter: () => undefined,\n onDragOver: (e) => {\n if (this._acceptedTargetZonesSet.size === 0) {\n this.removeDropTarget();\n return;\n }\n const width = this.element.clientWidth;\n const height = this.element.clientHeight;\n if (width === 0 || height === 0) {\n return; // avoid div!0\n }\n const rect = e.currentTarget.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n const quadrant = this.calculateQuadrant(this._acceptedTargetZonesSet, x, y, width, height);\n /**\n * If the event has already been used by another DropTarget instance\n * then don't show a second drop target, only one target should be\n * active at any one time\n */\n if (this.isAlreadyUsed(e) || quadrant === null) {\n // no drop target should be displayed\n this.removeDropTarget();\n return;\n }\n const willShowOverlayEvent = new WillShowOverlayEvent({\n nativeEvent: e,\n position: quadrant,\n });\n /**\n * Provide an opportunity to prevent the overlay appearing and in turn\n * any dnd behaviours\n */\n this._onWillShowOverlay.fire(willShowOverlayEvent);\n if (willShowOverlayEvent.defaultPrevented) {\n this.removeDropTarget();\n return;\n }\n if (typeof this.options.canDisplayOverlay === 'boolean') {\n if (!this.options.canDisplayOverlay) {\n this.removeDropTarget();\n return;\n }\n }\n else if (!this.options.canDisplayOverlay(e, quadrant)) {\n this.removeDropTarget();\n return;\n }\n this.markAsUsed(e);\n if (!this.targetElement) {\n this.targetElement = document.createElement('div');\n this.targetElement.className = 'drop-target-dropzone';\n this.overlayElement = document.createElement('div');\n this.overlayElement.className = 'drop-target-selection';\n this._state = 'center';\n this.targetElement.appendChild(this.overlayElement);\n this.element.classList.add('drop-target');\n this.element.append(this.targetElement);\n }\n this.toggleClasses(quadrant, width, height);\n this._state = quadrant;\n },\n onDragLeave: () => {\n this.removeDropTarget();\n },\n onDragEnd: () => {\n this.removeDropTarget();\n },\n onDrop: (e) => {\n e.preventDefault();\n const state = this._state;\n this.removeDropTarget();\n if (state) {\n // only stop the propagation of the event if we are dealing with it\n // which is only when the target has state\n e.stopPropagation();\n this._onDrop.fire({ position: state, nativeEvent: e });\n }\n },\n });\n this.addDisposables(this._onDrop, this._onWillShowOverlay, this.dnd);\n }\n setTargetZones(acceptedTargetZones) {\n this._acceptedTargetZonesSet = new Set(acceptedTargetZones);\n }\n setOverlayModel(model) {\n this.options.overlayModel = model;\n }\n dispose() {\n this.removeDropTarget();\n super.dispose();\n }\n /**\n * Add a property to the event object for other potential listeners to check\n */\n markAsUsed(event) {\n event[Droptarget.USED_EVENT_ID] = true;\n }\n /**\n * Check is the event has already been used by another instance of DropTarget\n */\n isAlreadyUsed(event) {\n const value = event[Droptarget.USED_EVENT_ID];\n return typeof value === 'boolean' && value;\n }\n toggleClasses(quadrant, width, height) {\n var _a, _b;\n if (!this.overlayElement) {\n return;\n }\n const isSmallX = width < SMALL_WIDTH_BOUNDARY;\n const isSmallY = height < SMALL_HEIGHT_BOUNDARY;\n const isLeft = quadrant === 'left';\n const isRight = quadrant === 'right';\n const isTop = quadrant === 'top';\n const isBottom = quadrant === 'bottom';\n const rightClass = !isSmallX && isRight;\n const leftClass = !isSmallX && isLeft;\n const topClass = !isSmallY && isTop;\n const bottomClass = !isSmallY && isBottom;\n let size = 1;\n const sizeOptions = (_b = (_a = this.options.overlayModel) === null || _a === void 0 ? void 0 : _a.size) !== null && _b !== void 0 ? _b : DEFAULT_SIZE;\n if (sizeOptions.type === 'percentage') {\n size = clamp(sizeOptions.value, 0, 100) / 100;\n }\n else {\n if (rightClass || leftClass) {\n size = clamp(0, sizeOptions.value, width) / width;\n }\n if (topClass || bottomClass) {\n size = clamp(0, sizeOptions.value, height) / height;\n }\n }\n const box = { top: '0px', left: '0px', width: '100%', height: '100%' };\n /**\n * You can also achieve the overlay placement using the transform CSS property\n * to translate and scale the element however this has the undesired effect of\n * 'skewing' the element. Comment left here for anybody that ever revisits this.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/transform\n *\n * right\n * translateX(${100 * (1 - size) / 2}%) scaleX(${scale})\n *\n * left\n * translateX(-${100 * (1 - size) / 2}%) scaleX(${scale})\n *\n * top\n * translateY(-${100 * (1 - size) / 2}%) scaleY(${scale})\n *\n * bottom\n * translateY(${100 * (1 - size) / 2}%) scaleY(${scale})\n */\n if (rightClass) {\n box.left = `${100 * (1 - size)}%`;\n box.width = `${100 * size}%`;\n }\n else if (leftClass) {\n box.width = `${100 * size}%`;\n }\n else if (topClass) {\n box.height = `${100 * size}%`;\n }\n else if (bottomClass) {\n box.top = `${100 * (1 - size)}%`;\n box.height = `${100 * size}%`;\n }\n this.overlayElement.style.top = box.top;\n this.overlayElement.style.left = box.left;\n this.overlayElement.style.width = box.width;\n this.overlayElement.style.height = box.height;\n toggleClass(this.overlayElement, 'dv-drop-target-small-vertical', isSmallY);\n toggleClass(this.overlayElement, 'dv-drop-target-small-horizontal', isSmallX);\n toggleClass(this.overlayElement, 'dv-drop-target-left', isLeft);\n toggleClass(this.overlayElement, 'dv-drop-target-right', isRight);\n toggleClass(this.overlayElement, 'dv-drop-target-top', isTop);\n toggleClass(this.overlayElement, 'dv-drop-target-bottom', isBottom);\n toggleClass(this.overlayElement, 'dv-drop-target-center', quadrant === 'center');\n }\n calculateQuadrant(overlayType, x, y, width, height) {\n var _a, _b;\n const activationSizeOptions = (_b = (_a = this.options.overlayModel) === null || _a === void 0 ? void 0 : _a.activationSize) !== null && _b !== void 0 ? _b : DEFAULT_ACTIVATION_SIZE;\n const isPercentage = activationSizeOptions.type === 'percentage';\n if (isPercentage) {\n return calculateQuadrantAsPercentage(overlayType, x, y, width, height, activationSizeOptions.value);\n }\n return calculateQuadrantAsPixels(overlayType, x, y, width, height, activationSizeOptions.value);\n }\n removeDropTarget() {\n if (this.targetElement) {\n this._state = undefined;\n this.element.removeChild(this.targetElement);\n this.targetElement = undefined;\n this.overlayElement = undefined;\n this.element.classList.remove('drop-target');\n }\n }\n}\nDroptarget.USED_EVENT_ID = '__dockview_droptarget_event_is_used__';\nexport function calculateQuadrantAsPercentage(overlayType, x, y, width, height, threshold) {\n const xp = (100 * x) / width;\n const yp = (100 * y) / height;\n if (overlayType.has('left') && xp < threshold) {\n return 'left';\n }\n if (overlayType.has('right') && xp > 100 - threshold) {\n return 'right';\n }\n if (overlayType.has('top') && yp < threshold) {\n return 'top';\n }\n if (overlayType.has('bottom') && yp > 100 - threshold) {\n return 'bottom';\n }\n if (!overlayType.has('center')) {\n return null;\n }\n return 'center';\n}\nexport function calculateQuadrantAsPixels(overlayType, x, y, width, height, threshold) {\n if (overlayType.has('left') && x < threshold) {\n return 'left';\n }\n if (overlayType.has('right') && x > width - threshold) {\n return 'right';\n }\n if (overlayType.has('top') && y < threshold) {\n return 'top';\n }\n if (overlayType.has('bottom') && y > height - threshold) {\n return 'bottom';\n }\n if (!overlayType.has('center')) {\n return null;\n }\n return 'center';\n}\n","import { CompositeDisposable, MutableDisposable, } from '../../../lifecycle';\nimport { Emitter } from '../../../events';\nimport { trackFocus } from '../../../dom';\nimport { Droptarget } from '../../../dnd/droptarget';\nimport { getPanelData } from '../../../dnd/dataTransfer';\nexport class ContentContainer extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor(accessor, group) {\n super();\n this.accessor = accessor;\n this.group = group;\n this.disposable = new MutableDisposable();\n this._onDidFocus = new Emitter();\n this.onDidFocus = this._onDidFocus.event;\n this._onDidBlur = new Emitter();\n this.onDidBlur = this._onDidBlur.event;\n this._element = document.createElement('div');\n this._element.className = 'content-container';\n this._element.tabIndex = -1;\n this.addDisposables(this._onDidFocus, this._onDidBlur);\n this.dropTarget = new Droptarget(this.element, {\n acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],\n canDisplayOverlay: (event, position) => {\n if (this.group.locked === 'no-drop-target' ||\n (this.group.locked && position === 'center')) {\n return false;\n }\n const data = getPanelData();\n if (!data &&\n event.shiftKey &&\n this.group.location.type !== 'floating') {\n return false;\n }\n if (data && data.viewId === this.accessor.id) {\n if (data.groupId === this.group.id) {\n if (position === 'center') {\n // don't allow to drop on self for center position\n return false;\n }\n if (data.panelId === null) {\n // don't allow group move to drop anywhere on self\n return false;\n }\n }\n const groupHasOnePanelAndIsActiveDragElement = this.group.panels.length === 1 &&\n data.groupId === this.group.id;\n return !groupHasOnePanelAndIsActiveDragElement;\n }\n return this.group.canDisplayOverlay(event, position, 'content');\n },\n });\n this.addDisposables(this.dropTarget);\n }\n show() {\n this.element.style.display = '';\n }\n hide() {\n this.element.style.display = 'none';\n }\n renderPanel(panel, options = { asActive: true }) {\n const doRender = options.asActive ||\n (this.panel && this.group.isPanelActive(this.panel));\n if (this.panel &&\n this.panel.view.content.element.parentElement === this._element) {\n /**\n * If the currently attached panel is mounted directly to the content then remove it\n */\n this._element.removeChild(this.panel.view.content.element);\n }\n this.panel = panel;\n let container;\n switch (panel.api.renderer) {\n case 'onlyWhenVisibile':\n this.group.renderContainer.detatch(panel);\n if (this.panel) {\n if (doRender) {\n this._element.appendChild(this.panel.view.content.element);\n }\n }\n container = this._element;\n break;\n case 'always':\n if (panel.view.content.element.parentElement === this._element) {\n this._element.removeChild(panel.view.content.element);\n }\n container = this.group.renderContainer.attach({\n panel,\n referenceContainer: this,\n });\n break;\n }\n if (doRender) {\n const focusTracker = trackFocus(container);\n const disposable = new CompositeDisposable();\n disposable.addDisposables(focusTracker, focusTracker.onDidFocus(() => this._onDidFocus.fire()), focusTracker.onDidBlur(() => this._onDidBlur.fire()));\n this.disposable.value = disposable;\n }\n }\n openPanel(panel) {\n if (this.panel === panel) {\n return;\n }\n this.renderPanel(panel);\n }\n layout(_width, _height) {\n // noop\n }\n closePanel() {\n var _a;\n if (this.panel) {\n if (this.panel.api.renderer === 'onlyWhenVisibile') {\n (_a = this.panel.view.content.element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.panel.view.content.element);\n }\n }\n this.panel = undefined;\n }\n dispose() {\n this.disposable.dispose();\n super.dispose();\n }\n}\n","import { getElementsByTagName } from '../dom';\nimport { addDisposableListener, Emitter } from '../events';\nimport { CompositeDisposable, MutableDisposable, } from '../lifecycle';\nexport class DragHandler extends CompositeDisposable {\n constructor(el) {\n super();\n this.el = el;\n this.dataDisposable = new MutableDisposable();\n this.pointerEventsDisposable = new MutableDisposable();\n this._onDragStart = new Emitter();\n this.onDragStart = this._onDragStart.event;\n this.addDisposables(this._onDragStart, this.dataDisposable, this.pointerEventsDisposable);\n this.configure();\n }\n isCancelled(_event) {\n return false;\n }\n configure() {\n this.addDisposables(this._onDragStart, addDisposableListener(this.el, 'dragstart', (event) => {\n if (event.defaultPrevented || this.isCancelled(event)) {\n event.preventDefault();\n return;\n }\n const iframes = [\n ...getElementsByTagName('iframe'),\n ...getElementsByTagName('webview'),\n ];\n this.pointerEventsDisposable.value = {\n dispose: () => {\n for (const iframe of iframes) {\n iframe.style.pointerEvents = 'auto';\n }\n },\n };\n for (const iframe of iframes) {\n iframe.style.pointerEvents = 'none';\n }\n this.el.classList.add('dv-dragged');\n setTimeout(() => this.el.classList.remove('dv-dragged'), 0);\n this.dataDisposable.value = this.getData(event);\n this._onDragStart.fire(event);\n if (event.dataTransfer) {\n event.dataTransfer.effectAllowed = 'move';\n const hasData = event.dataTransfer.items.length > 0;\n if (!hasData) {\n /**\n * Although this is not used by dockview many third party dnd libraries will check\n * dataTransfer.types to determine valid drag events.\n *\n * For example: in react-dnd if dataTransfer.types is not set then the dragStart event will be cancelled\n * through .preventDefault(). Since this is applied globally to all drag events this would break dockviews\n * dnd logic. You can see the code at\n * https://github.com/react-dnd/react-dnd/blob/main/packages/backend-html5/src/HTML5BackendImpl.ts#L542\n */\n event.dataTransfer.setData('text/plain', '__dockview_internal_drag_event__');\n }\n }\n }), addDisposableListener(this.el, 'dragend', () => {\n this.pointerEventsDisposable.dispose();\n this.dataDisposable.dispose();\n }));\n }\n}\n","import { addDisposableListener, Emitter } from '../../../events';\nimport { CompositeDisposable } from '../../../lifecycle';\nimport { getPanelData, LocalSelectionTransfer, PanelTransfer, } from '../../../dnd/dataTransfer';\nimport { toggleClass } from '../../../dom';\nimport { Droptarget, } from '../../../dnd/droptarget';\nimport { DragHandler } from '../../../dnd/abstractDragHandler';\nclass TabDragHandler extends DragHandler {\n constructor(element, accessor, group, panel) {\n super(element);\n this.accessor = accessor;\n this.group = group;\n this.panel = panel;\n this.panelTransfer = LocalSelectionTransfer.getInstance();\n }\n getData(event) {\n this.panelTransfer.setData([new PanelTransfer(this.accessor.id, this.group.id, this.panel.id)], PanelTransfer.prototype);\n return {\n dispose: () => {\n this.panelTransfer.clearData(PanelTransfer.prototype);\n },\n };\n }\n}\nexport class Tab extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor(panel, accessor, group) {\n super();\n this.panel = panel;\n this.accessor = accessor;\n this.group = group;\n this.content = undefined;\n this._onChanged = new Emitter();\n this.onChanged = this._onChanged.event;\n this._onDropped = new Emitter();\n this.onDrop = this._onDropped.event;\n this._onDragStart = new Emitter();\n this.onDragStart = this._onDragStart.event;\n this._element = document.createElement('div');\n this._element.className = 'tab';\n this._element.tabIndex = 0;\n this._element.draggable = true;\n toggleClass(this.element, 'inactive-tab', true);\n const dragHandler = new TabDragHandler(this._element, this.accessor, this.group, this.panel);\n this.dropTarget = new Droptarget(this._element, {\n acceptedTargetZones: ['center'],\n canDisplayOverlay: (event, position) => {\n if (this.group.locked) {\n return false;\n }\n const data = getPanelData();\n if (data && this.accessor.id === data.viewId) {\n if (data.panelId === null &&\n data.groupId === this.group.id) {\n // don't allow group move to drop on self\n return false;\n }\n return this.panel.id !== data.panelId;\n }\n return this.group.model.canDisplayOverlay(event, position, 'tab');\n },\n });\n this.onWillShowOverlay = this.dropTarget.onWillShowOverlay;\n this.addDisposables(this._onChanged, this._onDropped, this._onDragStart, dragHandler.onDragStart((event) => {\n this._onDragStart.fire(event);\n }), dragHandler, addDisposableListener(this._element, 'mousedown', (event) => {\n if (event.defaultPrevented) {\n return;\n }\n this._onChanged.fire(event);\n }), this.dropTarget.onDrop((event) => {\n this._onDropped.fire(event);\n }), this.dropTarget);\n }\n setActive(isActive) {\n toggleClass(this.element, 'active-tab', isActive);\n toggleClass(this.element, 'inactive-tab', !isActive);\n }\n setContent(part) {\n if (this.content) {\n this._element.removeChild(this.content.element);\n }\n this.content = part;\n this._element.appendChild(this.content.element);\n }\n dispose() {\n super.dispose();\n }\n}\n","import { addClasses, removeClasses } from '../dom';\nexport function addGhostImage(dataTransfer, ghostElement) {\n // class dockview provides to force ghost image to be drawn on a different layer and prevent weird rendering issues\n addClasses(ghostElement, 'dv-dragged');\n document.body.appendChild(ghostElement);\n dataTransfer.setDragImage(ghostElement, 0, 0);\n setTimeout(() => {\n removeClasses(ghostElement, 'dv-dragged');\n ghostElement.remove();\n }, 0);\n}\n","import { quasiPreventDefault } from '../dom';\nimport { addDisposableListener } from '../events';\nimport { DragHandler } from './abstractDragHandler';\nimport { LocalSelectionTransfer, PanelTransfer } from './dataTransfer';\nimport { addGhostImage } from './ghost';\nexport class GroupDragHandler extends DragHandler {\n constructor(element, accessor, group) {\n super(element);\n this.accessor = accessor;\n this.group = group;\n this.panelTransfer = LocalSelectionTransfer.getInstance();\n this.addDisposables(addDisposableListener(element, 'mousedown', (e) => {\n if (e.shiftKey) {\n /**\n * You cannot call e.preventDefault() because that will prevent drag events from firing\n * but we also need to stop any group overlay drag events from occuring\n * Use a custom event marker that can be checked by the overlay drag events\n */\n quasiPreventDefault(e);\n }\n }, true));\n }\n isCancelled(_event) {\n if (this.group.api.location.type === 'floating' && !_event.shiftKey) {\n return true;\n }\n return false;\n }\n getData(dragEvent) {\n const dataTransfer = dragEvent.dataTransfer;\n this.panelTransfer.setData([new PanelTransfer(this.accessor.id, this.group.id, null)], PanelTransfer.prototype);\n const style = window.getComputedStyle(this.el);\n const bgColor = style.getPropertyValue('--dv-activegroup-visiblepanel-tab-background-color');\n const color = style.getPropertyValue('--dv-activegroup-visiblepanel-tab-color');\n if (dataTransfer) {\n const ghostElement = document.createElement('div');\n ghostElement.style.backgroundColor = bgColor;\n ghostElement.style.color = color;\n ghostElement.style.padding = '2px 8px';\n ghostElement.style.height = '24px';\n ghostElement.style.fontSize = '11px';\n ghostElement.style.lineHeight = '20px';\n ghostElement.style.borderRadius = '12px';\n ghostElement.style.position = 'absolute';\n ghostElement.textContent = `Multiple Panels (${this.group.size})`;\n addGhostImage(dataTransfer, ghostElement);\n }\n return {\n dispose: () => {\n this.panelTransfer.clearData(PanelTransfer.prototype);\n },\n };\n }\n}\n","import { last } from '../../../array';\nimport { getPanelData } from '../../../dnd/dataTransfer';\nimport { Droptarget, } from '../../../dnd/droptarget';\nimport { GroupDragHandler } from '../../../dnd/groupDragHandler';\nimport { addDisposableListener, Emitter } from '../../../events';\nimport { CompositeDisposable } from '../../../lifecycle';\nexport class VoidContainer extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor(accessor, group) {\n super();\n this.accessor = accessor;\n this.group = group;\n this._onDrop = new Emitter();\n this.onDrop = this._onDrop.event;\n this._onDragStart = new Emitter();\n this.onDragStart = this._onDragStart.event;\n this._element = document.createElement('div');\n this._element.className = 'void-container';\n this._element.tabIndex = 0;\n this._element.draggable = true;\n this.addDisposables(this._onDrop, this._onDragStart, addDisposableListener(this._element, 'click', () => {\n this.accessor.doSetGroupActive(this.group);\n }));\n const handler = new GroupDragHandler(this._element, accessor, group);\n this.dropTraget = new Droptarget(this._element, {\n acceptedTargetZones: ['center'],\n canDisplayOverlay: (event, position) => {\n var _a;\n const data = getPanelData();\n if (data && this.accessor.id === data.viewId) {\n if (data.panelId === null &&\n data.groupId === this.group.id) {\n // don't allow group move to drop on self\n return false;\n }\n // don't show the overlay if the tab being dragged is the last panel of this group\n return ((_a = last(this.group.panels)) === null || _a === void 0 ? void 0 : _a.id) !== data.panelId;\n }\n return group.model.canDisplayOverlay(event, position, 'header_space');\n },\n });\n this.onWillShowOverlay = this.dropTraget.onWillShowOverlay;\n this.addDisposables(handler, handler.onDragStart((event) => {\n this._onDragStart.fire(event);\n }), this.dropTraget.onDrop((event) => {\n this._onDrop.fire(event);\n }), this.dropTraget);\n }\n}\n","import { CompositeDisposable, } from '../../../lifecycle';\nimport { addDisposableListener, Emitter } from '../../../events';\nimport { Tab } from '../tab/tab';\nimport { VoidContainer } from './voidContainer';\nimport { toggleClass } from '../../../dom';\nimport { WillShowOverlayLocationEvent, } from '../../dockviewGroupPanelModel';\nexport class TabsContainer extends CompositeDisposable {\n get panels() {\n return this.tabs.map((_) => _.value.panel.id);\n }\n get size() {\n return this.tabs.length;\n }\n get hidden() {\n return this._hidden;\n }\n set hidden(value) {\n this._hidden = value;\n this.element.style.display = value ? 'none' : '';\n }\n show() {\n if (!this.hidden) {\n this.element.style.display = '';\n }\n }\n hide() {\n this._element.style.display = 'none';\n }\n setRightActionsElement(element) {\n if (this.rightActions === element) {\n return;\n }\n if (this.rightActions) {\n this.rightActions.remove();\n this.rightActions = undefined;\n }\n if (element) {\n this.rightActionsContainer.appendChild(element);\n this.rightActions = element;\n }\n }\n setLeftActionsElement(element) {\n if (this.leftActions === element) {\n return;\n }\n if (this.leftActions) {\n this.leftActions.remove();\n this.leftActions = undefined;\n }\n if (element) {\n this.leftActionsContainer.appendChild(element);\n this.leftActions = element;\n }\n }\n setPrefixActionsElement(element) {\n if (this.preActions === element) {\n return;\n }\n if (this.preActions) {\n this.preActions.remove();\n this.preActions = undefined;\n }\n if (element) {\n this.preActionsContainer.appendChild(element);\n this.preActions = element;\n }\n }\n get element() {\n return this._element;\n }\n isActive(tab) {\n return (this.selectedIndex > -1 &&\n this.tabs[this.selectedIndex].value === tab);\n }\n indexOf(id) {\n return this.tabs.findIndex((tab) => tab.value.panel.id === id);\n }\n constructor(accessor, group) {\n super();\n this.accessor = accessor;\n this.group = group;\n this.tabs = [];\n this.selectedIndex = -1;\n this._hidden = false;\n this._onDrop = new Emitter();\n this.onDrop = this._onDrop.event;\n this._onTabDragStart = new Emitter();\n this.onTabDragStart = this._onTabDragStart.event;\n this._onGroupDragStart = new Emitter();\n this.onGroupDragStart = this._onGroupDragStart.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._element = document.createElement('div');\n this._element.className = 'tabs-and-actions-container';\n toggleClass(this._element, 'dv-full-width-single-tab', this.accessor.options.singleTabMode === 'fullwidth');\n this.rightActionsContainer = document.createElement('div');\n this.rightActionsContainer.className = 'right-actions-container';\n this.leftActionsContainer = document.createElement('div');\n this.leftActionsContainer.className = 'left-actions-container';\n this.preActionsContainer = document.createElement('div');\n this.preActionsContainer.className = 'pre-actions-container';\n this.tabContainer = document.createElement('div');\n this.tabContainer.className = 'tabs-container';\n this.voidContainer = new VoidContainer(this.accessor, this.group);\n this._element.appendChild(this.preActionsContainer);\n this._element.appendChild(this.tabContainer);\n this._element.appendChild(this.leftActionsContainer);\n this._element.appendChild(this.voidContainer.element);\n this._element.appendChild(this.rightActionsContainer);\n this.addDisposables(this.accessor.onDidAddPanel((e) => {\n if (e.api.group === this.group) {\n toggleClass(this._element, 'dv-single-tab', this.size === 1);\n }\n }), this.accessor.onDidRemovePanel((e) => {\n if (e.api.group === this.group) {\n toggleClass(this._element, 'dv-single-tab', this.size === 1);\n }\n }), this._onWillShowOverlay, this._onDrop, this._onTabDragStart, this._onGroupDragStart, this.voidContainer, this.voidContainer.onDragStart((event) => {\n this._onGroupDragStart.fire({\n nativeEvent: event,\n group: this.group,\n });\n }), this.voidContainer.onDrop((event) => {\n this._onDrop.fire({\n event: event.nativeEvent,\n index: this.tabs.length,\n });\n }), this.voidContainer.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {\n kind: 'header_space',\n }));\n }), addDisposableListener(this.voidContainer.element, 'mousedown', (event) => {\n const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;\n if (isFloatingGroupsEnabled &&\n event.shiftKey &&\n this.group.api.location.type !== 'floating') {\n event.preventDefault();\n const { top, left } = this.element.getBoundingClientRect();\n const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();\n this.accessor.addFloatingGroup(this.group, {\n x: left - rootLeft + 20,\n y: top - rootTop + 20,\n }, { inDragMode: true });\n }\n }), addDisposableListener(this.tabContainer, 'mousedown', (event) => {\n if (event.defaultPrevented) {\n return;\n }\n const isLeftClick = event.button === 0;\n if (isLeftClick) {\n this.accessor.doSetGroupActive(this.group);\n }\n }));\n }\n setActive(_isGroupActive) {\n // noop\n }\n addTab(tab, index = this.tabs.length) {\n if (index < 0 || index > this.tabs.length) {\n throw new Error('invalid location');\n }\n this.tabContainer.insertBefore(tab.value.element, this.tabContainer.children[index]);\n this.tabs = [\n ...this.tabs.slice(0, index),\n tab,\n ...this.tabs.slice(index),\n ];\n if (this.selectedIndex < 0) {\n this.selectedIndex = index;\n }\n }\n delete(id) {\n const index = this.tabs.findIndex((tab) => tab.value.panel.id === id);\n const tabToRemove = this.tabs.splice(index, 1)[0];\n const { value, disposable } = tabToRemove;\n disposable.dispose();\n value.dispose();\n value.element.remove();\n }\n setActivePanel(panel) {\n this.tabs.forEach((tab) => {\n const isActivePanel = panel.id === tab.value.panel.id;\n tab.value.setActive(isActivePanel);\n });\n }\n openPanel(panel, index = this.tabs.length) {\n var _a;\n if (this.tabs.find((tab) => tab.value.panel.id === panel.id)) {\n return;\n }\n const tab = new Tab(panel, this.accessor, this.group);\n if (!((_a = panel.view) === null || _a === void 0 ? void 0 : _a.tab)) {\n throw new Error('invalid header component');\n }\n tab.setContent(panel.view.tab);\n const disposable = new CompositeDisposable(tab.onDragStart((event) => {\n this._onTabDragStart.fire({ nativeEvent: event, panel });\n }), tab.onChanged((event) => {\n const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;\n const isFloatingWithOnePanel = this.group.api.location.type === 'floating' &&\n this.size === 1;\n if (isFloatingGroupsEnabled &&\n !isFloatingWithOnePanel &&\n event.shiftKey) {\n event.preventDefault();\n const panel = this.accessor.getGroupPanel(tab.panel.id);\n const { top, left } = tab.element.getBoundingClientRect();\n const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();\n this.accessor.addFloatingGroup(panel, {\n x: left - rootLeft,\n y: top - rootTop,\n }, { inDragMode: true });\n return;\n }\n const isLeftClick = event.button === 0;\n if (!isLeftClick || event.defaultPrevented) {\n return;\n }\n if (this.group.activePanel !== panel) {\n this.group.model.openPanel(panel);\n }\n }), tab.onDrop((event) => {\n this._onDrop.fire({\n event: event.nativeEvent,\n index: this.tabs.findIndex((x) => x.value === tab),\n });\n }), tab.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, { kind: 'tab' }));\n }));\n const value = { value: tab, disposable };\n this.addTab(value, index);\n }\n closePanel(panel) {\n this.delete(panel.id);\n }\n dispose() {\n super.dispose();\n for (const { value, disposable } of this.tabs) {\n disposable.dispose();\n value.dispose();\n }\n this.tabs = [];\n }\n}\n","import { DockviewApi } from '../api/component.api';\nimport { getPanelData } from '../dnd/dataTransfer';\nimport { isAncestor, toggleClass } from '../dom';\nimport { addDisposableListener, DockviewEvent, Emitter, } from '../events';\nimport { CompositeDisposable } from '../lifecycle';\nimport { ContentContainer, } from './components/panel/content';\nimport { TabsContainer, } from './components/titlebar/tabsContainer';\nexport class DockviewDidDropEvent extends DockviewEvent {\n get nativeEvent() {\n return this.options.nativeEvent;\n }\n get position() {\n return this.options.position;\n }\n get panel() {\n return this.options.panel;\n }\n get group() {\n return this.options.group;\n }\n get api() {\n return this.options.api;\n }\n constructor(options) {\n super();\n this.options = options;\n }\n getData() {\n return this.options.getData();\n }\n}\nexport class DockviewWillDropEvent extends DockviewDidDropEvent {\n get kind() {\n return this._kind;\n }\n constructor(options) {\n super(options);\n this._kind = options.kind;\n }\n}\nexport class WillShowOverlayLocationEvent {\n get kind() {\n return this._kind;\n }\n get nativeEvent() {\n return this.event.nativeEvent;\n }\n get position() {\n return this.event.position;\n }\n get defaultPrevented() {\n return this.event.defaultPrevented;\n }\n preventDefault() {\n this.event.preventDefault();\n }\n constructor(event, options) {\n this.event = event;\n this._kind = options.kind;\n }\n}\nexport class DockviewGroupPanelModel extends CompositeDisposable {\n get element() {\n throw new Error('not supported');\n }\n get activePanel() {\n return this._activePanel;\n }\n get locked() {\n return this._locked;\n }\n set locked(value) {\n this._locked = value;\n toggleClass(this.container, 'locked-groupview', value === 'no-drop-target' || value);\n }\n get isActive() {\n return this._isGroupActive;\n }\n get panels() {\n return this._panels;\n }\n get size() {\n return this._panels.length;\n }\n get isEmpty() {\n return this._panels.length === 0;\n }\n get hasWatermark() {\n return !!(this.watermark && this.container.contains(this.watermark.element));\n }\n get header() {\n return this.tabsContainer;\n }\n get isContentFocused() {\n if (!document.activeElement) {\n return false;\n }\n return isAncestor(document.activeElement, this.contentContainer.element);\n }\n get location() {\n return this._location;\n }\n set location(value) {\n this._location = value;\n toggleClass(this.container, 'dv-groupview-floating', false);\n toggleClass(this.container, 'dv-groupview-popout', false);\n switch (value.type) {\n case 'grid':\n this.contentContainer.dropTarget.setTargetZones([\n 'top',\n 'bottom',\n 'left',\n 'right',\n 'center',\n ]);\n break;\n case 'floating':\n this.contentContainer.dropTarget.setTargetZones(['center']);\n this.contentContainer.dropTarget.setTargetZones(value\n ? ['center']\n : ['top', 'bottom', 'left', 'right', 'center']);\n toggleClass(this.container, 'dv-groupview-floating', true);\n break;\n case 'popout':\n this.contentContainer.dropTarget.setTargetZones(['center']);\n toggleClass(this.container, 'dv-groupview-popout', true);\n break;\n }\n this.groupPanel.api._onDidLocationChange.fire({\n location: this.location,\n });\n }\n constructor(container, accessor, id, options, groupPanel) {\n var _a;\n super();\n this.container = container;\n this.accessor = accessor;\n this.id = id;\n this.options = options;\n this.groupPanel = groupPanel;\n this._isGroupActive = false;\n this._locked = false;\n this._location = { type: 'grid' };\n this.mostRecentlyUsed = [];\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._width = 0;\n this._height = 0;\n this._panels = [];\n this._onMove = new Emitter();\n this.onMove = this._onMove.event;\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n this._onWillDrop = new Emitter();\n this.onWillDrop = this._onWillDrop.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._onTabDragStart = new Emitter();\n this.onTabDragStart = this._onTabDragStart.event;\n this._onGroupDragStart = new Emitter();\n this.onGroupDragStart = this._onGroupDragStart.event;\n this._onDidAddPanel = new Emitter();\n this.onDidAddPanel = this._onDidAddPanel.event;\n this._onDidRemovePanel = new Emitter();\n this.onDidRemovePanel = this._onDidRemovePanel.event;\n this._onDidActivePanelChange = new Emitter();\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\n this._overwriteRenderContainer = null;\n toggleClass(this.container, 'groupview', true);\n this._api = new DockviewApi(this.accessor);\n this.tabsContainer = new TabsContainer(this.accessor, this.groupPanel);\n this.contentContainer = new ContentContainer(this.accessor, this);\n container.append(this.tabsContainer.element, this.contentContainer.element);\n this.header.hidden = !!options.hideHeader;\n this.locked = (_a = options.locked) !== null && _a !== void 0 ? _a : false;\n this.addDisposables(this._onTabDragStart, this._onGroupDragStart, this._onWillShowOverlay, this.tabsContainer.onTabDragStart((event) => {\n this._onTabDragStart.fire(event);\n }), this.tabsContainer.onGroupDragStart((event) => {\n this._onGroupDragStart.fire(event);\n }), this.tabsContainer.onDrop((event) => {\n this.handleDropEvent('header', event.event, 'center', event.index);\n }), this.contentContainer.onDidFocus(() => {\n this.accessor.doSetGroupActive(this.groupPanel);\n }), this.contentContainer.onDidBlur(() => {\n // noop\n }), this.contentContainer.dropTarget.onDrop((event) => {\n this.handleDropEvent('content', event.nativeEvent, event.position);\n }), this.tabsContainer.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(event);\n }), this.contentContainer.dropTarget.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {\n kind: 'content',\n }));\n }), this._onMove, this._onDidChange, this._onDidDrop, this._onWillDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange);\n }\n focusContent() {\n this.contentContainer.element.focus();\n }\n set renderContainer(value) {\n this.panels.forEach((panel) => {\n this.renderContainer.detatch(panel);\n });\n this._overwriteRenderContainer = value;\n this.panels.forEach((panel) => {\n this.rerender(panel);\n });\n }\n get renderContainer() {\n var _a;\n return ((_a = this._overwriteRenderContainer) !== null && _a !== void 0 ? _a : this.accessor.overlayRenderContainer);\n }\n initialize() {\n if (this.options.panels) {\n this.options.panels.forEach((panel) => {\n this.doAddPanel(panel);\n });\n }\n if (this.options.activePanel) {\n this.openPanel(this.options.activePanel);\n }\n // must be run after the constructor otherwise this.parent may not be\n // correctly initialized\n this.setActive(this.isActive, true);\n this.updateContainer();\n if (this.accessor.options.createRightHeaderActionsElement) {\n this._rightHeaderActions =\n this.accessor.options.createRightHeaderActionsElement(this.groupPanel);\n this.addDisposables(this._rightHeaderActions);\n this._rightHeaderActions.init({\n containerApi: this._api,\n api: this.groupPanel.api,\n });\n this.tabsContainer.setRightActionsElement(this._rightHeaderActions.element);\n }\n if (this.accessor.options.createLeftHeaderActionsElement) {\n this._leftHeaderActions =\n this.accessor.options.createLeftHeaderActionsElement(this.groupPanel);\n this.addDisposables(this._leftHeaderActions);\n this._leftHeaderActions.init({\n containerApi: this._api,\n api: this.groupPanel.api,\n });\n this.tabsContainer.setLeftActionsElement(this._leftHeaderActions.element);\n }\n if (this.accessor.options.createPrefixHeaderActionsElement) {\n this._prefixHeaderActions =\n this.accessor.options.createPrefixHeaderActionsElement(this.groupPanel);\n this.addDisposables(this._prefixHeaderActions);\n this._prefixHeaderActions.init({\n containerApi: this._api,\n api: this.groupPanel.api,\n });\n this.tabsContainer.setPrefixActionsElement(this._prefixHeaderActions.element);\n }\n }\n rerender(panel) {\n this.contentContainer.renderPanel(panel, { asActive: false });\n }\n indexOf(panel) {\n return this.tabsContainer.indexOf(panel.id);\n }\n toJSON() {\n var _a;\n const result = {\n views: this.tabsContainer.panels,\n activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,\n id: this.id,\n };\n if (this.locked !== false) {\n result.locked = this.locked;\n }\n if (this.header.hidden) {\n result.hideHeader = true;\n }\n return result;\n }\n moveToNext(options) {\n if (!options) {\n options = {};\n }\n if (!options.panel) {\n options.panel = this.activePanel;\n }\n const index = options.panel ? this.panels.indexOf(options.panel) : -1;\n let normalizedIndex;\n if (index < this.panels.length - 1) {\n normalizedIndex = index + 1;\n }\n else if (!options.suppressRoll) {\n normalizedIndex = 0;\n }\n else {\n return;\n }\n this.openPanel(this.panels[normalizedIndex]);\n }\n moveToPrevious(options) {\n if (!options) {\n options = {};\n }\n if (!options.panel) {\n options.panel = this.activePanel;\n }\n if (!options.panel) {\n return;\n }\n const index = this.panels.indexOf(options.panel);\n let normalizedIndex;\n if (index > 0) {\n normalizedIndex = index - 1;\n }\n else if (!options.suppressRoll) {\n normalizedIndex = this.panels.length - 1;\n }\n else {\n return;\n }\n this.openPanel(this.panels[normalizedIndex]);\n }\n containsPanel(panel) {\n return this.panels.includes(panel);\n }\n init(_params) {\n //noop\n }\n update(_params) {\n //noop\n }\n focus() {\n var _a;\n (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();\n }\n openPanel(panel, options = {}) {\n /**\n * set the panel group\n * add the panel\n * check if group active\n * check if panel active\n */\n if (typeof options.index !== 'number' ||\n options.index > this.panels.length) {\n options.index = this.panels.length;\n }\n const skipSetActive = !!options.skipSetActive;\n // ensure the group is updated before we fire any events\n panel.updateParentGroup(this.groupPanel, {\n skipSetActive: options.skipSetActive,\n });\n this.doAddPanel(panel, options.index, {\n skipSetActive: skipSetActive,\n });\n if (this._activePanel === panel) {\n this.contentContainer.renderPanel(panel, { asActive: true });\n return;\n }\n if (!skipSetActive) {\n this.doSetActivePanel(panel);\n }\n if (!options.skipSetGroupActive) {\n this.accessor.doSetGroupActive(this.groupPanel);\n }\n if (!options.skipSetActive) {\n this.updateContainer();\n }\n }\n removePanel(groupItemOrId, options = {\n skipSetActive: false,\n }) {\n const id = typeof groupItemOrId === 'string'\n ? groupItemOrId\n : groupItemOrId.id;\n const panelToRemove = this._panels.find((panel) => panel.id === id);\n if (!panelToRemove) {\n throw new Error('invalid operation');\n }\n return this._removePanel(panelToRemove, options);\n }\n closeAllPanels() {\n if (this.panels.length > 0) {\n // take a copy since we will be edting the array as we iterate through\n const arrPanelCpy = [...this.panels];\n for (const panel of arrPanelCpy) {\n this.doClose(panel);\n }\n }\n else {\n this.accessor.removeGroup(this.groupPanel);\n }\n }\n closePanel(panel) {\n this.doClose(panel);\n }\n doClose(panel) {\n this.accessor.removePanel(panel);\n }\n isPanelActive(panel) {\n return this._activePanel === panel;\n }\n updateActions(element) {\n this.tabsContainer.setRightActionsElement(element);\n }\n setActive(isGroupActive, force = false) {\n if (!force && this.isActive === isGroupActive) {\n return;\n }\n this._isGroupActive = isGroupActive;\n toggleClass(this.container, 'active-group', isGroupActive);\n toggleClass(this.container, 'inactive-group', !isGroupActive);\n this.tabsContainer.setActive(this.isActive);\n if (!this._activePanel && this.panels.length > 0) {\n this.doSetActivePanel(this.panels[0]);\n }\n this.updateContainer();\n }\n layout(width, height) {\n var _a;\n this._width = width;\n this._height = height;\n this.contentContainer.layout(this._width, this._height);\n if ((_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.layout) {\n this._activePanel.layout(this._width, this._height);\n }\n }\n _removePanel(panel, options) {\n const isActivePanel = this._activePanel === panel;\n this.doRemovePanel(panel);\n if (isActivePanel && this.panels.length > 0) {\n const nextPanel = this.mostRecentlyUsed[0];\n this.openPanel(nextPanel, {\n skipSetActive: options.skipSetActive,\n skipSetGroupActive: options.skipSetActiveGroup,\n });\n }\n if (this._activePanel && this.panels.length === 0) {\n this.doSetActivePanel(undefined);\n }\n if (!options.skipSetActive) {\n this.updateContainer();\n }\n return panel;\n }\n doRemovePanel(panel) {\n const index = this.panels.indexOf(panel);\n if (this._activePanel === panel) {\n this.contentContainer.closePanel();\n }\n this.tabsContainer.delete(panel.id);\n this._panels.splice(index, 1);\n if (this.mostRecentlyUsed.includes(panel)) {\n this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);\n }\n this._onDidRemovePanel.fire({ panel });\n }\n doAddPanel(panel, index = this.panels.length, options = { skipSetActive: false }) {\n const existingPanel = this._panels.indexOf(panel);\n const hasExistingPanel = existingPanel > -1;\n this.tabsContainer.show();\n this.contentContainer.show();\n this.tabsContainer.openPanel(panel, index);\n if (!options.skipSetActive) {\n this.contentContainer.openPanel(panel);\n }\n if (hasExistingPanel) {\n // TODO - need to ensure ordering hasn't changed and if it has need to re-order this.panels\n return;\n }\n this.updateMru(panel);\n this.panels.splice(index, 0, panel);\n this._onDidAddPanel.fire({ panel });\n }\n doSetActivePanel(panel) {\n if (this._activePanel === panel) {\n return;\n }\n this._activePanel = panel;\n if (panel) {\n this.tabsContainer.setActivePanel(panel);\n panel.layout(this._width, this._height);\n this.updateMru(panel);\n this._onDidActivePanelChange.fire({\n panel,\n });\n }\n }\n updateMru(panel) {\n if (this.mostRecentlyUsed.includes(panel)) {\n this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);\n }\n this.mostRecentlyUsed = [panel, ...this.mostRecentlyUsed];\n }\n updateContainer() {\n var _a, _b;\n toggleClass(this.container, 'empty', this.isEmpty);\n this.panels.forEach((panel) => panel.runEvents());\n if (this.isEmpty && !this.watermark) {\n const watermark = this.accessor.createWatermarkComponent();\n watermark.init({\n containerApi: this._api,\n group: this.groupPanel,\n });\n this.watermark = watermark;\n addDisposableListener(this.watermark.element, 'click', () => {\n if (!this.isActive) {\n this.accessor.doSetGroupActive(this.groupPanel);\n }\n });\n this.tabsContainer.hide();\n this.contentContainer.element.appendChild(this.watermark.element);\n this.watermark.updateParentGroup(this.groupPanel, true);\n }\n if (!this.isEmpty && this.watermark) {\n this.watermark.element.remove();\n (_b = (_a = this.watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.watermark = undefined;\n this.tabsContainer.show();\n }\n }\n canDisplayOverlay(event, position, target) {\n // custom overlay handler\n if (this.accessor.options.showDndOverlay) {\n return this.accessor.options.showDndOverlay({\n nativeEvent: event,\n target,\n group: this.accessor.getPanel(this.id),\n position,\n getData: getPanelData,\n });\n }\n return false;\n }\n handleDropEvent(type, event, position, index) {\n if (this.locked === 'no-drop-target') {\n return;\n }\n function getKind() {\n switch (type) {\n case 'header':\n return typeof index === 'number' ? 'tab' : 'header_space';\n case 'content':\n return 'content';\n }\n }\n const panel = typeof index === 'number' ? this.panels[index] : undefined;\n const willDropEvent = new DockviewWillDropEvent({\n nativeEvent: event,\n position,\n panel,\n getData: () => getPanelData(),\n kind: getKind(),\n group: this.groupPanel,\n api: this._api,\n });\n this._onWillDrop.fire(willDropEvent);\n if (willDropEvent.defaultPrevented) {\n return;\n }\n const data = getPanelData();\n if (data && data.viewId === this.accessor.id) {\n if (data.panelId === null) {\n // this is a group move dnd event\n const { groupId } = data;\n this._onMove.fire({\n target: position,\n groupId: groupId,\n index,\n });\n return;\n }\n const fromSameGroup = this.tabsContainer.indexOf(data.panelId) !== -1;\n if (fromSameGroup && this.tabsContainer.size === 1) {\n return;\n }\n const { groupId, panelId } = data;\n const isSameGroup = this.id === groupId;\n if (isSameGroup && !position) {\n const oldIndex = this.tabsContainer.indexOf(panelId);\n if (oldIndex === index) {\n return;\n }\n }\n this._onMove.fire({\n target: position,\n groupId: data.groupId,\n itemId: data.panelId,\n index,\n });\n }\n else {\n this._onDidDrop.fire(new DockviewDidDropEvent({\n nativeEvent: event,\n position,\n panel,\n getData: () => getPanelData(),\n group: this.groupPanel,\n api: this._api,\n }));\n }\n }\n dispose() {\n var _a, _b, _c;\n super.dispose();\n (_a = this.watermark) === null || _a === void 0 ? void 0 : _a.element.remove();\n (_c = (_b = this.watermark) === null || _b === void 0 ? void 0 : _b.dispose) === null || _c === void 0 ? void 0 : _c.call(_b);\n this.watermark = undefined;\n for (const panel of this.panels) {\n panel.dispose();\n }\n this.tabsContainer.dispose();\n this.contentContainer.dispose();\n }\n}\n","import { isInDocument, watchElementResize } from './dom';\nimport { CompositeDisposable } from './lifecycle';\nexport class Resizable extends CompositeDisposable {\n get element() {\n return this._element;\n }\n get disableResizing() {\n return this._disableResizing;\n }\n set disableResizing(value) {\n this._disableResizing = value;\n }\n constructor(parentElement, disableResizing = false) {\n super();\n this._disableResizing = disableResizing;\n this._element = parentElement;\n this.addDisposables(watchElementResize(this._element, (entry) => {\n if (this.isDisposed) {\n /**\n * resize is delayed through requestAnimationFrame so there is a small chance\n * the component has already been disposed of\n */\n return;\n }\n if (this.disableResizing) {\n return;\n }\n if (!this._element.offsetParent) {\n /**\n * offsetParent === null is equivalent to display: none being set on the element or one\n * of it's parents. In the display: none case the size will become (0, 0) which we do\n * not want to propagate.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetParent\n *\n * You could use checkVisibility() but at the time of writing it's not supported across\n * all Browsers\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/checkVisibility\n */\n return;\n }\n if (!isInDocument(this._element)) {\n /**\n * since the event is dispatched through requestAnimationFrame there is a small chance\n * the component is no longer attached to the DOM, if that is the case the dimensions\n * are mostly likely all zero and meaningless. we should skip this case.\n */\n return;\n }\n const { width, height } = entry.contentRect;\n this.layout(width, height);\n }));\n }\n}\n","import { Emitter, Event, TickDelayedEvent } from '../events';\nimport { getGridLocation, Gridview } from './gridview';\nimport { Disposable } from '../lifecycle';\nimport { sequentialNumberGenerator } from '../math';\nimport { Sizing } from '../splitview/splitview';\nimport { Resizable } from '../resizable';\nconst nextLayoutId = sequentialNumberGenerator();\nexport function toTarget(direction) {\n switch (direction) {\n case 'left':\n return 'left';\n case 'right':\n return 'right';\n case 'above':\n return 'top';\n case 'below':\n return 'bottom';\n case 'within':\n default:\n return 'center';\n }\n}\nexport class BaseGrid extends Resizable {\n get id() {\n return this._id;\n }\n get size() {\n return this._groups.size;\n }\n get groups() {\n return Array.from(this._groups.values()).map((_) => _.value);\n }\n get width() {\n return this.gridview.width;\n }\n get height() {\n return this.gridview.height;\n }\n get minimumHeight() {\n return this.gridview.minimumHeight;\n }\n get maximumHeight() {\n return this.gridview.maximumHeight;\n }\n get minimumWidth() {\n return this.gridview.minimumWidth;\n }\n get maximumWidth() {\n return this.gridview.maximumWidth;\n }\n get activeGroup() {\n return this._activeGroup;\n }\n get locked() {\n return this.gridview.locked;\n }\n set locked(value) {\n this.gridview.locked = value;\n }\n constructor(options) {\n super(document.createElement('div'), options.disableAutoResizing);\n this._id = nextLayoutId.next();\n this._groups = new Map();\n this._onDidLayoutChange = new Emitter();\n this.onDidLayoutChange = this._onDidLayoutChange.event;\n this._onDidRemove = new Emitter();\n this.onDidRemove = this._onDidRemove.event;\n this._onDidAdd = new Emitter();\n this.onDidAdd = this._onDidAdd.event;\n this._onDidActiveChange = new Emitter();\n this.onDidActiveChange = this._onDidActiveChange.event;\n this._bufferOnDidLayoutChange = new TickDelayedEvent();\n this.element.style.height = '100%';\n this.element.style.width = '100%';\n options.parentElement.appendChild(this.element);\n this.gridview = new Gridview(!!options.proportionalLayout, options.styles, options.orientation);\n this.gridview.locked = !!options.locked;\n this.element.appendChild(this.gridview.element);\n this.layout(0, 0, true); // set some elements height/widths\n this.addDisposables(Disposable.from(() => {\n var _a;\n (_a = this.element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.element);\n }), this.gridview.onDidChange(() => {\n this._bufferOnDidLayoutChange.fire();\n }), Event.any(this.onDidAdd, this.onDidRemove, this.onDidActiveChange)(() => {\n this._bufferOnDidLayoutChange.fire();\n }), this._bufferOnDidLayoutChange.onEvent(() => {\n this._onDidLayoutChange.fire();\n }), this._bufferOnDidLayoutChange);\n }\n setVisible(panel, visible) {\n this.gridview.setViewVisible(getGridLocation(panel.element), visible);\n this._onDidLayoutChange.fire();\n }\n isVisible(panel) {\n return this.gridview.isViewVisible(getGridLocation(panel.element));\n }\n maximizeGroup(panel) {\n this.gridview.maximizeView(panel);\n this.doSetGroupActive(panel);\n }\n isMaximizedGroup(panel) {\n return this.gridview.maximizedView() === panel;\n }\n exitMaximizedGroup() {\n this.gridview.exitMaximizedView();\n }\n hasMaximizedGroup() {\n return this.gridview.hasMaximizedView();\n }\n get onDidMaximizedGroupChange() {\n return this.gridview.onDidMaximizedNodeChange;\n }\n doAddGroup(group, location = [0], size) {\n this.gridview.addView(group, size !== null && size !== void 0 ? size : Sizing.Distribute, location);\n this._onDidAdd.fire(group);\n }\n doRemoveGroup(group, options) {\n if (!this._groups.has(group.id)) {\n throw new Error('invalid operation');\n }\n const item = this._groups.get(group.id);\n const view = this.gridview.remove(group, Sizing.Distribute);\n if (item && !(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n item.disposable.dispose();\n item.value.dispose();\n this._groups.delete(group.id);\n this._onDidRemove.fire(group);\n }\n if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {\n const groups = Array.from(this._groups.values());\n this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);\n }\n return view;\n }\n getPanel(id) {\n var _a;\n return (_a = this._groups.get(id)) === null || _a === void 0 ? void 0 : _a.value;\n }\n doSetGroupActive(group) {\n if (this._activeGroup === group) {\n return;\n }\n if (this._activeGroup) {\n this._activeGroup.setActive(false);\n }\n if (group) {\n group.setActive(true);\n }\n this._activeGroup = group;\n this._onDidActiveChange.fire(group);\n }\n removeGroup(group) {\n this.doRemoveGroup(group);\n }\n moveToNext(options) {\n var _a;\n if (!options) {\n options = {};\n }\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;\n this.doSetGroupActive(next);\n }\n moveToPrevious(options) {\n var _a;\n if (!options) {\n options = {};\n }\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;\n this.doSetGroupActive(next);\n }\n layout(width, height, forceResize) {\n const different = forceResize !== null && forceResize !== void 0 ? forceResize : (width !== this.width || height !== this.height);\n if (!different) {\n return;\n }\n this.gridview.element.style.height = `${height}px`;\n this.gridview.element.style.width = `${width}px`;\n this.gridview.layout(width, height);\n }\n dispose() {\n this._onDidActiveChange.dispose();\n this._onDidAdd.dispose();\n this._onDidRemove.dispose();\n this._onDidLayoutChange.dispose();\n for (const group of this.groups) {\n group.dispose();\n }\n this.gridview.dispose();\n super.dispose();\n }\n}\n","import { DockviewEvent, Emitter } from '../events';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nexport class WillFocusEvent extends DockviewEvent {\n constructor() {\n super();\n }\n}\n/**\n * A core api implementation that should be used across all panel-like objects\n */\nexport class PanelApiImpl extends CompositeDisposable {\n get isFocused() {\n return this._isFocused;\n }\n get isActive() {\n return this._isActive;\n }\n get isVisible() {\n return this._isVisible;\n }\n get width() {\n return this._width;\n }\n get height() {\n return this._height;\n }\n constructor(id) {\n super();\n this.id = id;\n this._isFocused = false;\n this._isActive = false;\n this._isVisible = true;\n this._width = 0;\n this._height = 0;\n this.panelUpdatesDisposable = new MutableDisposable();\n this._onDidDimensionChange = new Emitter();\n this.onDidDimensionsChange = this._onDidDimensionChange.event;\n this._onDidChangeFocus = new Emitter();\n this.onDidFocusChange = this._onDidChangeFocus.event;\n //\n this._onWillFocus = new Emitter();\n this.onWillFocus = this._onWillFocus.event;\n //\n this._onDidVisibilityChange = new Emitter();\n this.onDidVisibilityChange = this._onDidVisibilityChange.event;\n this._onWillVisibilityChange = new Emitter();\n this.onWillVisibilityChange = this._onWillVisibilityChange.event;\n this._onDidActiveChange = new Emitter();\n this.onDidActiveChange = this._onDidActiveChange.event;\n this._onActiveChange = new Emitter();\n this.onActiveChange = this._onActiveChange.event;\n this._onUpdateParameters = new Emitter();\n this.onUpdateParameters = this._onUpdateParameters.event;\n this.addDisposables(this.onDidFocusChange((event) => {\n this._isFocused = event.isFocused;\n }), this.onDidActiveChange((event) => {\n this._isActive = event.isActive;\n }), this.onDidVisibilityChange((event) => {\n this._isVisible = event.isVisible;\n }), this.onDidDimensionsChange((event) => {\n this._width = event.width;\n this._height = event.height;\n }), this.panelUpdatesDisposable, this._onDidDimensionChange, this._onDidChangeFocus, this._onDidVisibilityChange, this._onDidActiveChange, this._onWillFocus, this._onActiveChange, this._onUpdateParameters, this._onWillFocus, this._onWillVisibilityChange, this._onUpdateParameters);\n }\n initialize(panel) {\n this.panelUpdatesDisposable.value = this._onUpdateParameters.event((parameters) => {\n panel.update({\n params: parameters,\n });\n });\n }\n setVisible(isVisible) {\n this._onWillVisibilityChange.fire({ isVisible });\n }\n setActive() {\n this._onActiveChange.fire();\n }\n updateParameters(parameters) {\n this._onUpdateParameters.fire(parameters);\n }\n}\n","import { Emitter } from '../events';\nimport { PanelApiImpl } from './panelApi';\nexport class SplitviewPanelApiImpl extends PanelApiImpl {\n //\n constructor(id) {\n super(id);\n this._onDidConstraintsChangeInternal = new Emitter();\n this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;\n //\n this._onDidConstraintsChange = new Emitter({\n replay: true,\n });\n this.onDidConstraintsChange = this._onDidConstraintsChange.event;\n //\n this._onDidSizeChange = new Emitter();\n this.onDidSizeChange = this._onDidSizeChange.event;\n this.addDisposables(this._onDidConstraintsChangeInternal, this._onDidConstraintsChange, this._onDidSizeChange);\n }\n setConstraints(value) {\n this._onDidConstraintsChangeInternal.fire(value);\n }\n setSize(event) {\n this._onDidSizeChange.fire(event);\n }\n}\n","import { Emitter } from '../events';\nimport { SplitviewPanelApiImpl } from './splitviewPanelApi';\nexport class PaneviewPanelApiImpl extends SplitviewPanelApiImpl {\n set pane(pane) {\n this._pane = pane;\n }\n constructor(id) {\n super(id);\n this._onDidExpansionChange = new Emitter({\n replay: true,\n });\n this.onDidExpansionChange = this._onDidExpansionChange.event;\n this._onMouseEnter = new Emitter({});\n this.onMouseEnter = this._onMouseEnter.event;\n this._onMouseLeave = new Emitter({});\n this.onMouseLeave = this._onMouseLeave.event;\n this.addDisposables(this._onDidExpansionChange, this._onMouseEnter, this._onMouseLeave);\n }\n setExpanded(isExpanded) {\n var _a;\n (_a = this._pane) === null || _a === void 0 ? void 0 : _a.setExpanded(isExpanded);\n }\n get isExpanded() {\n var _a;\n return !!((_a = this._pane) === null || _a === void 0 ? void 0 : _a.isExpanded());\n }\n}\n","import { trackFocus } from '../dom';\nimport { CompositeDisposable } from '../lifecycle';\nimport { WillFocusEvent } from '../api/panelApi';\nexport class BasePanelView extends CompositeDisposable {\n get element() {\n return this._element;\n }\n get width() {\n return this._width;\n }\n get height() {\n return this._height;\n }\n get params() {\n var _a;\n return (_a = this._params) === null || _a === void 0 ? void 0 : _a.params;\n }\n constructor(id, component, api) {\n super();\n this.id = id;\n this.component = component;\n this.api = api;\n this._height = 0;\n this._width = 0;\n this._element = document.createElement('div');\n this._element.tabIndex = -1;\n this._element.style.outline = 'none';\n this._element.style.height = '100%';\n this._element.style.width = '100%';\n this._element.style.overflow = 'hidden';\n const focusTracker = trackFocus(this._element);\n this.addDisposables(this.api, focusTracker.onDidFocus(() => {\n this.api._onDidChangeFocus.fire({ isFocused: true });\n }), focusTracker.onDidBlur(() => {\n this.api._onDidChangeFocus.fire({ isFocused: false });\n }), focusTracker);\n }\n focus() {\n const event = new WillFocusEvent();\n this.api._onWillFocus.fire(event);\n if (event.defaultPrevented) {\n return;\n }\n this._element.focus();\n }\n layout(width, height) {\n this._width = width;\n this._height = height;\n this.api._onDidDimensionChange.fire({ width, height });\n if (this.part) {\n if (this._params) {\n this.part.update(this._params.params);\n }\n }\n }\n init(parameters) {\n this._params = parameters;\n this.part = this.getComponent();\n }\n update(event) {\n var _a, _b;\n // merge the new parameters with the existing parameters\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) });\n /**\n * delete new keys that have a value of undefined,\n * allow values of null\n */\n for (const key of Object.keys(event.params)) {\n if (event.params[key] === undefined) {\n delete this._params.params[key];\n }\n }\n // update the view with the updated props\n (_b = this.part) === null || _b === void 0 ? void 0 : _b.update({ params: this._params.params });\n }\n toJSON() {\n var _a, _b;\n const params = (_b = (_a = this._params) === null || _a === void 0 ? void 0 : _a.params) !== null && _b !== void 0 ? _b : {};\n return {\n id: this.id,\n component: this.component,\n params: Object.keys(params).length > 0 ? params : undefined,\n };\n }\n dispose() {\n var _a;\n this.api.dispose();\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();\n super.dispose();\n }\n}\n","import { PaneviewPanelApiImpl } from '../api/paneviewPanelApi';\nimport { addClasses, removeClasses } from '../dom';\nimport { addDisposableListener, Emitter } from '../events';\nimport { BasePanelView, } from '../gridview/basePanelView';\nimport { Orientation } from '../splitview/splitview';\nexport class PaneviewPanel extends BasePanelView {\n set orientation(value) {\n this._orientation = value;\n }\n get orientation() {\n return this._orientation;\n }\n get minimumSize() {\n const headerSize = this.headerSize;\n const expanded = this.isExpanded();\n const minimumBodySize = expanded ? this._minimumBodySize : 0;\n return headerSize + minimumBodySize;\n }\n get maximumSize() {\n const headerSize = this.headerSize;\n const expanded = this.isExpanded();\n const maximumBodySize = expanded ? this._maximumBodySize : 0;\n return headerSize + maximumBodySize;\n }\n get size() {\n return this._size;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n set orthogonalSize(size) {\n this._orthogonalSize = size;\n }\n get minimumBodySize() {\n return this._minimumBodySize;\n }\n set minimumBodySize(value) {\n this._minimumBodySize = typeof value === 'number' ? value : 0;\n }\n get maximumBodySize() {\n return this._maximumBodySize;\n }\n set maximumBodySize(value) {\n this._maximumBodySize =\n typeof value === 'number' ? value : Number.POSITIVE_INFINITY;\n }\n get headerVisible() {\n return this._headerVisible;\n }\n set headerVisible(value) {\n this._headerVisible = value;\n this.header.style.display = value ? '' : 'none';\n }\n constructor(id, component, headerComponent, orientation, isExpanded, isHeaderVisible) {\n super(id, component, new PaneviewPanelApiImpl(id));\n this.headerComponent = headerComponent;\n this._onDidChangeExpansionState = new Emitter({ replay: true });\n this.onDidChangeExpansionState = this._onDidChangeExpansionState.event;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this.headerSize = 22;\n this._orthogonalSize = 0;\n this._size = 0;\n this._minimumBodySize = 100;\n this._maximumBodySize = Number.POSITIVE_INFINITY;\n this._isExpanded = false;\n this.expandedSize = 0;\n this.api.pane = this; // TODO cannot use 'this' before 'super'\n this.api.initialize(this);\n this._isExpanded = isExpanded;\n this._headerVisible = isHeaderVisible;\n this._onDidChangeExpansionState.fire(this.isExpanded()); // initialize value\n this._orientation = orientation;\n this.element.classList.add('pane');\n this.addDisposables(this.api.onWillVisibilityChange((event) => {\n const { isVisible } = event;\n const { accessor } = this._params;\n accessor.setVisible(this, isVisible);\n }), this.api.onDidSizeChange((event) => {\n this._onDidChange.fire({ size: event.size });\n }), addDisposableListener(this.element, 'mouseenter', (ev) => {\n this.api._onMouseEnter.fire(ev);\n }), addDisposableListener(this.element, 'mouseleave', (ev) => {\n this.api._onMouseLeave.fire(ev);\n }));\n this.addDisposables(this._onDidChangeExpansionState, this.onDidChangeExpansionState((isPanelExpanded) => {\n this.api._onDidExpansionChange.fire({\n isExpanded: isPanelExpanded,\n });\n }), this.api.onDidFocusChange((e) => {\n if (!this.header) {\n return;\n }\n if (e.isFocused) {\n addClasses(this.header, 'focused');\n }\n else {\n removeClasses(this.header, 'focused');\n }\n }));\n this.renderOnce();\n }\n setVisible(isVisible) {\n this.api._onDidVisibilityChange.fire({ isVisible });\n }\n setActive(isActive) {\n this.api._onDidActiveChange.fire({ isActive });\n }\n isExpanded() {\n return this._isExpanded;\n }\n setExpanded(expanded) {\n if (this._isExpanded === expanded) {\n return;\n }\n this._isExpanded = expanded;\n if (expanded) {\n if (this.animationTimer) {\n clearTimeout(this.animationTimer);\n }\n if (this.body) {\n this.element.appendChild(this.body);\n }\n }\n else {\n this.animationTimer = setTimeout(() => {\n var _a;\n (_a = this.body) === null || _a === void 0 ? void 0 : _a.remove();\n }, 200);\n }\n this._onDidChange.fire(expanded ? { size: this.width } : {});\n this._onDidChangeExpansionState.fire(expanded);\n }\n layout(size, orthogonalSize) {\n this._size = size;\n this._orthogonalSize = orthogonalSize;\n const [width, height] = this.orientation === Orientation.HORIZONTAL\n ? [size, orthogonalSize]\n : [orthogonalSize, size];\n if (this.isExpanded()) {\n this.expandedSize = width;\n }\n super.layout(width, height);\n }\n init(parameters) {\n var _a, _b;\n super.init(parameters);\n if (typeof parameters.minimumBodySize === 'number') {\n this.minimumBodySize = parameters.minimumBodySize;\n }\n if (typeof parameters.maximumBodySize === 'number') {\n this.maximumBodySize = parameters.maximumBodySize;\n }\n this.bodyPart = this.getBodyComponent();\n this.headerPart = this.getHeaderComponent();\n this.bodyPart.init(Object.assign(Object.assign({}, parameters), { api: this.api }));\n this.headerPart.init(Object.assign(Object.assign({}, parameters), { api: this.api }));\n (_a = this.body) === null || _a === void 0 ? void 0 : _a.append(this.bodyPart.element);\n (_b = this.header) === null || _b === void 0 ? void 0 : _b.append(this.headerPart.element);\n if (typeof parameters.isExpanded === 'boolean') {\n this.setExpanded(parameters.isExpanded);\n }\n }\n toJSON() {\n const params = this._params;\n return Object.assign(Object.assign({}, super.toJSON()), { headerComponent: this.headerComponent, title: params.title });\n }\n renderOnce() {\n this.header = document.createElement('div');\n this.header.tabIndex = 0;\n this.header.className = 'pane-header';\n this.header.style.height = `${this.headerSize}px`;\n this.header.style.lineHeight = `${this.headerSize}px`;\n this.header.style.minHeight = `${this.headerSize}px`;\n this.header.style.maxHeight = `${this.headerSize}px`;\n this.element.appendChild(this.header);\n this.body = document.createElement('div');\n this.body.className = 'pane-body';\n this.element.appendChild(this.body);\n }\n // TODO slightly hacky by-pass of the component to create a body and header component\n getComponent() {\n return {\n update: (params) => {\n var _a, _b;\n (_a = this.bodyPart) === null || _a === void 0 ? void 0 : _a.update({ params });\n (_b = this.headerPart) === null || _b === void 0 ? void 0 : _b.update({ params });\n },\n dispose: () => {\n var _a, _b;\n (_a = this.bodyPart) === null || _a === void 0 ? void 0 : _a.dispose();\n (_b = this.headerPart) === null || _b === void 0 ? void 0 : _b.dispose();\n },\n };\n }\n}\n","import { PaneviewApi } from '../api/component.api';\nimport { DragHandler } from '../dnd/abstractDragHandler';\nimport { getPaneData, LocalSelectionTransfer, PaneTransfer, } from '../dnd/dataTransfer';\nimport { Droptarget } from '../dnd/droptarget';\nimport { Emitter } from '../events';\nimport { PaneviewPanel, } from './paneviewPanel';\nexport class DraggablePaneviewPanel extends PaneviewPanel {\n constructor(accessor, id, component, headerComponent, orientation, isExpanded, disableDnd) {\n super(id, component, headerComponent, orientation, isExpanded, true);\n this.accessor = accessor;\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n if (!disableDnd) {\n this.initDragFeatures();\n }\n }\n initDragFeatures() {\n if (!this.header) {\n return;\n }\n const id = this.id;\n const accessorId = this.accessor.id;\n this.header.draggable = true;\n this.handler = new (class PaneDragHandler extends DragHandler {\n getData() {\n LocalSelectionTransfer.getInstance().setData([new PaneTransfer(accessorId, id)], PaneTransfer.prototype);\n return {\n dispose: () => {\n LocalSelectionTransfer.getInstance().clearData(PaneTransfer.prototype);\n },\n };\n }\n })(this.header);\n this.target = new Droptarget(this.element, {\n acceptedTargetZones: ['top', 'bottom'],\n overlayModel: {\n activationSize: { type: 'percentage', value: 50 },\n },\n canDisplayOverlay: (event) => {\n const data = getPaneData();\n if (data) {\n if (data.paneId !== this.id &&\n data.viewId === this.accessor.id) {\n return true;\n }\n }\n if (this.accessor.options.showDndOverlay) {\n return this.accessor.options.showDndOverlay({\n nativeEvent: event,\n getData: getPaneData,\n panel: this,\n });\n }\n return false;\n },\n });\n this.addDisposables(this._onDidDrop, this.handler, this.target, this.target.onDrop((event) => {\n this.onDrop(event);\n }));\n }\n onDrop(event) {\n const data = getPaneData();\n if (!data || data.viewId !== this.accessor.id) {\n // if there is no local drag event for this panel\n // or if the drag event was creating by another Paneview instance\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, api: new PaneviewApi(this.accessor), getData: getPaneData }));\n return;\n }\n const containerApi = this._params\n .containerApi;\n const panelId = data.paneId;\n const existingPanel = containerApi.getPanel(panelId);\n if (!existingPanel) {\n // if the panel doesn't exist\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: getPaneData, api: new PaneviewApi(this.accessor) }));\n return;\n }\n const allPanels = containerApi.panels;\n const fromIndex = allPanels.indexOf(existingPanel);\n let toIndex = containerApi.panels.indexOf(this);\n if (event.position === 'left' || event.position === 'top') {\n toIndex = Math.max(0, toIndex - 1);\n }\n if (event.position === 'right' || event.position === 'bottom') {\n if (fromIndex > toIndex) {\n toIndex++;\n }\n toIndex = Math.min(allPanels.length - 1, toIndex);\n }\n containerApi.movePanel(fromIndex, toIndex);\n }\n}\n","import { Emitter } from '../events';\nimport { PanelApiImpl } from './panelApi';\nexport class GridviewPanelApiImpl extends PanelApiImpl {\n constructor(id, panel) {\n super(id);\n this._onDidConstraintsChangeInternal = new Emitter();\n this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;\n this._onDidConstraintsChange = new Emitter();\n this.onDidConstraintsChange = this._onDidConstraintsChange.event;\n this._onDidSizeChange = new Emitter();\n this.onDidSizeChange = this._onDidSizeChange.event;\n this.addDisposables(this._onDidConstraintsChangeInternal, this._onDidConstraintsChange, this._onDidSizeChange);\n if (panel) {\n this.initialize(panel);\n }\n }\n setConstraints(value) {\n this._onDidConstraintsChangeInternal.fire(value);\n }\n setSize(event) {\n this._onDidSizeChange.fire(event);\n }\n}\n","import { BasePanelView, } from './basePanelView';\nimport { GridviewPanelApiImpl, } from '../api/gridviewPanelApi';\nimport { Emitter } from '../events';\nexport class GridviewPanel extends BasePanelView {\n get priority() {\n return this._priority;\n }\n get snap() {\n return this._snap;\n }\n get minimumWidth() {\n const width = typeof this._minimumWidth === 'function'\n ? this._minimumWidth()\n : this._minimumWidth;\n if (width !== this._evaluatedMinimumWidth) {\n this._evaluatedMinimumWidth = width;\n this.updateConstraints();\n }\n return width;\n }\n get minimumHeight() {\n const height = typeof this._minimumHeight === 'function'\n ? this._minimumHeight()\n : this._minimumHeight;\n if (height !== this._evaluatedMinimumHeight) {\n this._evaluatedMinimumHeight = height;\n this.updateConstraints();\n }\n return height;\n }\n get maximumHeight() {\n const height = typeof this._maximumHeight === 'function'\n ? this._maximumHeight()\n : this._maximumHeight;\n if (height !== this._evaluatedMaximumHeight) {\n this._evaluatedMaximumHeight = height;\n this.updateConstraints();\n }\n return height;\n }\n get maximumWidth() {\n const width = typeof this._maximumWidth === 'function'\n ? this._maximumWidth()\n : this._maximumWidth;\n if (width !== this._evaluatedMaximumWidth) {\n this._evaluatedMaximumWidth = width;\n this.updateConstraints();\n }\n return width;\n }\n get isActive() {\n return this.api.isActive;\n }\n constructor(id, component, options, api) {\n super(id, component, api !== null && api !== void 0 ? api : new GridviewPanelApiImpl(id));\n this._evaluatedMinimumWidth = 0;\n this._evaluatedMaximumWidth = Number.MAX_SAFE_INTEGER;\n this._evaluatedMinimumHeight = 0;\n this._evaluatedMaximumHeight = Number.MAX_SAFE_INTEGER;\n this._minimumWidth = 0;\n this._minimumHeight = 0;\n this._maximumWidth = Number.MAX_SAFE_INTEGER;\n this._maximumHeight = Number.MAX_SAFE_INTEGER;\n this._snap = false;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n if (typeof (options === null || options === void 0 ? void 0 : options.minimumWidth) === 'number') {\n this._minimumWidth = options.minimumWidth;\n }\n if (typeof (options === null || options === void 0 ? void 0 : options.maximumWidth) === 'number') {\n this._maximumWidth = options.maximumWidth;\n }\n if (typeof (options === null || options === void 0 ? void 0 : options.minimumHeight) === 'number') {\n this._minimumHeight = options.minimumHeight;\n }\n if (typeof (options === null || options === void 0 ? void 0 : options.maximumHeight) === 'number') {\n this._maximumHeight = options.maximumHeight;\n }\n this.api.initialize(this); // TODO: required to by-pass 'super before this' requirement\n this.addDisposables(this.api.onWillVisibilityChange((event) => {\n const { isVisible } = event;\n const { accessor } = this._params;\n accessor.setVisible(this, isVisible);\n }), this.api.onActiveChange(() => {\n const { accessor } = this._params;\n accessor.doSetGroupActive(this);\n }), this.api.onDidConstraintsChangeInternal((event) => {\n if (typeof event.minimumWidth === 'number' ||\n typeof event.minimumWidth === 'function') {\n this._minimumWidth = event.minimumWidth;\n }\n if (typeof event.minimumHeight === 'number' ||\n typeof event.minimumHeight === 'function') {\n this._minimumHeight = event.minimumHeight;\n }\n if (typeof event.maximumWidth === 'number' ||\n typeof event.maximumWidth === 'function') {\n this._maximumWidth = event.maximumWidth;\n }\n if (typeof event.maximumHeight === 'number' ||\n typeof event.maximumHeight === 'function') {\n this._maximumHeight = event.maximumHeight;\n }\n }), this.api.onDidSizeChange((event) => {\n this._onDidChange.fire({\n height: event.height,\n width: event.width,\n });\n }), this._onDidChange);\n }\n setVisible(isVisible) {\n this.api._onDidVisibilityChange.fire({ isVisible });\n }\n setActive(isActive) {\n this.api._onDidActiveChange.fire({ isActive });\n }\n init(parameters) {\n if (parameters.maximumHeight) {\n this._maximumHeight = parameters.maximumHeight;\n }\n if (parameters.minimumHeight) {\n this._minimumHeight = parameters.minimumHeight;\n }\n if (parameters.maximumWidth) {\n this._maximumWidth = parameters.maximumWidth;\n }\n if (parameters.minimumWidth) {\n this._minimumWidth = parameters.minimumWidth;\n }\n this._priority = parameters.priority;\n this._snap = !!parameters.snap;\n super.init(parameters);\n if (typeof parameters.isVisible === 'boolean') {\n this.setVisible(parameters.isVisible);\n }\n }\n updateConstraints() {\n this.api._onDidConstraintsChange.fire({\n minimumWidth: this._evaluatedMinimumWidth,\n maximumWidth: this._evaluatedMaximumWidth,\n minimumHeight: this._evaluatedMinimumHeight,\n maximumHeight: this._evaluatedMaximumHeight,\n });\n }\n toJSON() {\n const state = super.toJSON();\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ? undefined : value;\n const minimum = (value) => (value <= 0 ? undefined : value);\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 });\n }\n}\n","import { positionToDirection } from '../dnd/droptarget';\nimport { Emitter } from '../events';\nimport { GridviewPanelApiImpl } from './gridviewPanelApi';\n// TODO find a better way to initialize and avoid needing null checks\nconst NOT_INITIALIZED_MESSAGE = 'DockviewGroupPanelApiImpl not initialized';\nexport class DockviewGroupPanelApiImpl extends GridviewPanelApiImpl {\n get location() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n return this._group.model.location;\n }\n constructor(id, accessor) {\n super(id);\n this.accessor = accessor;\n this._onDidLocationChange = new Emitter();\n this.onDidLocationChange = this._onDidLocationChange.event;\n this.addDisposables(this._onDidLocationChange);\n }\n close() {\n if (!this._group) {\n return;\n }\n return this.accessor.removeGroup(this._group);\n }\n getWindow() {\n return this.location.type === 'popout'\n ? this.location.getWindow()\n : window;\n }\n moveTo(options) {\n var _a, _b, _c;\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n const group = (_a = options.group) !== null && _a !== void 0 ? _a : this.accessor.addGroup({\n direction: positionToDirection((_b = options.position) !== null && _b !== void 0 ? _b : 'right'),\n skipSetActive: true,\n });\n this.accessor.moveGroupOrPanel({\n from: { groupId: this._group.id },\n to: {\n group,\n position: options.group\n ? (_c = options.position) !== null && _c !== void 0 ? _c : 'center'\n : 'center',\n },\n });\n }\n maximize() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n if (this.location.type !== 'grid') {\n // only grid groups can be maximized\n return;\n }\n this.accessor.maximizeGroup(this._group);\n }\n isMaximized() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n return this.accessor.isMaximizedGroup(this._group);\n }\n exitMaximized() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n if (this.isMaximized()) {\n this.accessor.exitMaximizedGroup();\n }\n }\n initialize(group) {\n this._group = group;\n }\n}\n","import { DockviewGroupPanelModel, } from './dockviewGroupPanelModel';\nimport { GridviewPanel } from '../gridview/gridviewPanel';\nimport { DockviewGroupPanelApiImpl, } from '../api/dockviewGroupPanelApi';\nconst MINIMUM_DOCKVIEW_GROUP_PANEL_WIDTH = 100;\nconst MINIMUM_DOCKVIEW_GROUP_PANEL_HEIGHT = 100;\nexport class DockviewGroupPanel extends GridviewPanel {\n get panels() {\n return this._model.panels;\n }\n get activePanel() {\n return this._model.activePanel;\n }\n get size() {\n return this._model.size;\n }\n get model() {\n return this._model;\n }\n get locked() {\n return this._model.locked;\n }\n set locked(value) {\n this._model.locked = value;\n }\n get header() {\n return this._model.header;\n }\n constructor(accessor, id, options) {\n super(id, 'groupview_default', {\n minimumHeight: MINIMUM_DOCKVIEW_GROUP_PANEL_HEIGHT,\n minimumWidth: MINIMUM_DOCKVIEW_GROUP_PANEL_WIDTH,\n }, new DockviewGroupPanelApiImpl(id, accessor));\n this.api.initialize(this); // cannot use 'this' after after 'super' call\n this._model = new DockviewGroupPanelModel(this.element, accessor, id, options, this);\n }\n focus() {\n if (!this.api.isActive) {\n this.api.setActive();\n }\n super.focus();\n }\n initialize() {\n this._model.initialize();\n }\n setActive(isActive) {\n super.setActive(isActive);\n this.model.setActive(isActive);\n }\n layout(width, height) {\n super.layout(width, height);\n this.model.layout(width, height);\n }\n getComponent() {\n return this._model;\n }\n toJSON() {\n return this.model.toJSON();\n }\n}\n","export function isPanelOptionsWithPanel(data) {\n if (data.referencePanel) {\n return true;\n }\n return false;\n}\nexport function isPanelOptionsWithGroup(data) {\n if (data.referenceGroup) {\n return true;\n }\n return false;\n}\nexport function isGroupOptionsWithPanel(data) {\n if (data.referencePanel) {\n return true;\n }\n return false;\n}\nexport function isGroupOptionsWithGroup(data) {\n if (data.referenceGroup) {\n return true;\n }\n return false;\n}\n","import { Emitter } from '../events';\nimport { GridviewPanelApiImpl } from './gridviewPanelApi';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nexport class DockviewPanelApiImpl extends GridviewPanelApiImpl {\n get location() {\n return this.group.api.location;\n }\n get title() {\n return this.panel.title;\n }\n get isGroupActive() {\n return this.group.isActive;\n }\n get renderer() {\n return this.panel.renderer;\n }\n set group(value) {\n const oldGroup = this._group;\n if (this._group !== value) {\n this._group = value;\n this._onDidGroupChange.fire({});\n this.setupGroupEventListeners(oldGroup);\n this._onDidLocationChange.fire({\n location: this.group.api.location,\n });\n }\n }\n get group() {\n return this._group;\n }\n constructor(panel, group, accessor) {\n super(panel.id);\n this.panel = panel;\n this.accessor = accessor;\n this._onDidTitleChange = new Emitter();\n this.onDidTitleChange = this._onDidTitleChange.event;\n this._onDidActiveGroupChange = new Emitter();\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\n this._onDidGroupChange = new Emitter();\n this.onDidGroupChange = this._onDidGroupChange.event;\n this._onDidRendererChange = new Emitter();\n this.onDidRendererChange = this._onDidRendererChange.event;\n this._onDidLocationChange = new Emitter();\n this.onDidLocationChange = this._onDidLocationChange.event;\n this.groupEventsDisposable = new MutableDisposable();\n this.initialize(panel);\n this._group = group;\n this.setupGroupEventListeners();\n this.addDisposables(this.groupEventsDisposable, this._onDidRendererChange, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange, this._onDidLocationChange);\n }\n getWindow() {\n return this.group.api.getWindow();\n }\n moveTo(options) {\n var _a;\n this.accessor.moveGroupOrPanel({\n from: { groupId: this._group.id, panelId: this.panel.id },\n to: {\n group: options.group,\n position: (_a = options.position) !== null && _a !== void 0 ? _a : 'center',\n index: options.index,\n },\n });\n }\n setTitle(title) {\n this.panel.setTitle(title);\n }\n setRenderer(renderer) {\n this.panel.setRenderer(renderer);\n }\n close() {\n this.group.model.closePanel(this.panel);\n }\n maximize() {\n this.group.api.maximize();\n }\n isMaximized() {\n return this.group.api.isMaximized();\n }\n exitMaximized() {\n this.group.api.exitMaximized();\n }\n setupGroupEventListeners(previousGroup) {\n var _a;\n let _trackGroupActive = (_a = previousGroup === null || previousGroup === void 0 ? void 0 : previousGroup.isActive) !== null && _a !== void 0 ? _a : false; // prevent duplicate events with same state\n this.groupEventsDisposable.value = new CompositeDisposable(this.group.api.onDidVisibilityChange((event) => {\n if (!event.isVisible && this.isVisible) {\n this._onDidVisibilityChange.fire(event);\n }\n else if (event.isVisible &&\n !this.isVisible &&\n this.group.model.isPanelActive(this.panel)) {\n this._onDidVisibilityChange.fire(event);\n }\n }), this.group.api.onDidLocationChange((event) => {\n if (this.group !== this.panel.group) {\n return;\n }\n this._onDidLocationChange.fire(event);\n }), this.group.api.onDidActiveChange(() => {\n if (this.group !== this.panel.group) {\n return;\n }\n if (_trackGroupActive !== this.isGroupActive) {\n _trackGroupActive = this.isGroupActive;\n this._onDidActiveGroupChange.fire({\n isActive: this.isGroupActive,\n });\n }\n }));\n }\n}\n","import { DockviewPanelApiImpl, } from '../api/dockviewPanelApi';\nimport { CompositeDisposable } from '../lifecycle';\nimport { WillFocusEvent } from '../api/panelApi';\nexport class DockviewPanel extends CompositeDisposable {\n get params() {\n return this._params;\n }\n get title() {\n return this._title;\n }\n get group() {\n return this._group;\n }\n get renderer() {\n var _a;\n return (_a = this._renderer) !== null && _a !== void 0 ? _a : this.accessor.renderer;\n }\n constructor(id, accessor, containerApi, group, view, options) {\n super();\n this.id = id;\n this.accessor = accessor;\n this.containerApi = containerApi;\n this.view = view;\n this._renderer = options.renderer;\n this._group = group;\n this.api = new DockviewPanelApiImpl(this, this._group, accessor);\n this.addDisposables(this.api.onActiveChange(() => {\n accessor.setActivePanel(this);\n }), this.api.onDidSizeChange((event) => {\n // forward the resize event to the group since if you want to resize a panel\n // you are actually just resizing the panels parent which is the group\n this.group.api.setSize(event);\n }), this.api.onDidRendererChange((event) => {\n this.group.model.rerender(this);\n }));\n }\n init(params) {\n this._params = params.params;\n this.view.init(Object.assign(Object.assign({}, params), { api: this.api, containerApi: this.containerApi }));\n this.setTitle(params.title);\n }\n focus() {\n const event = new WillFocusEvent();\n this.api._onWillFocus.fire(event);\n if (event.defaultPrevented) {\n return;\n }\n if (!this.api.isActive) {\n this.api.setActive();\n }\n }\n toJSON() {\n return {\n id: this.id,\n contentComponent: this.view.contentComponent,\n tabComponent: this.view.tabComponent,\n params: Object.keys(this._params || {}).length > 0\n ? this._params\n : undefined,\n title: this.title,\n renderer: this._renderer,\n };\n }\n setTitle(title) {\n const didTitleChange = title !== this.title;\n if (didTitleChange) {\n this._title = title;\n this.view.update({\n params: {\n params: this._params,\n title: this.title,\n },\n });\n this.api._onDidTitleChange.fire({ title });\n }\n }\n setRenderer(renderer) {\n const didChange = renderer !== this.renderer;\n if (didChange) {\n this._renderer = renderer;\n this.api._onDidRendererChange.fire({\n renderer: renderer,\n });\n }\n }\n update(event) {\n var _a;\n // merge the new parameters with the existing parameters\n this._params = Object.assign(Object.assign({}, ((_a = this._params) !== null && _a !== void 0 ? _a : {})), event.params);\n /**\n * delete new keys that have a value of undefined,\n * allow values of null\n */\n for (const key of Object.keys(event.params)) {\n if (event.params[key] === undefined) {\n delete this._params[key];\n }\n }\n // update the view with the updated props\n this.view.update({\n params: {\n params: this._params,\n title: this.title,\n },\n });\n }\n updateParentGroup(group, options) {\n this._group = group;\n this.api.group = this._group;\n const isPanelVisible = this._group.model.isPanelActive(this);\n const isActive = this.group.api.isActive && isPanelVisible;\n if (!(options === null || options === void 0 ? void 0 : options.skipSetActive)) {\n if (this.api.isActive !== isActive) {\n this.api._onDidActiveChange.fire({\n isActive: this.group.api.isActive && isPanelVisible,\n });\n }\n }\n if (this.api.isVisible !== isPanelVisible) {\n this.api._onDidVisibilityChange.fire({\n isVisible: isPanelVisible,\n });\n }\n }\n runEvents() {\n const isPanelVisible = this._group.model.isPanelActive(this);\n const isActive = this.group.api.isActive && isPanelVisible;\n if (this.api.isActive !== isActive) {\n this.api._onDidActiveChange.fire({\n isActive: this.group.api.isActive && isPanelVisible,\n });\n }\n if (this.api.isVisible !== isPanelVisible) {\n this.api._onDidVisibilityChange.fire({\n isVisible: isPanelVisible,\n });\n }\n }\n layout(width, height) {\n // TODO: Can we somehow do height without header height or indicate what the header height is?\n this.api._onDidDimensionChange.fire({\n width,\n height: height,\n });\n this.view.layout(width, height);\n }\n dispose() {\n this.api.dispose();\n this.view.dispose();\n }\n}\n","const createSvgElementFromPath = (params) => {\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttributeNS(null, 'height', params.height);\n svg.setAttributeNS(null, 'width', params.width);\n svg.setAttributeNS(null, 'viewBox', params.viewbox);\n svg.setAttributeNS(null, 'aria-hidden', 'false');\n svg.setAttributeNS(null, 'focusable', 'false');\n svg.classList.add('dockview-svg');\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttributeNS(null, 'd', params.path);\n svg.appendChild(path);\n return svg;\n};\nexport const createCloseButton = () => createSvgElementFromPath({\n width: '11',\n height: '11',\n viewbox: '0 0 28 28',\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',\n});\nexport const createExpandMoreButton = () => createSvgElementFromPath({\n width: '11',\n height: '11',\n viewbox: '0 0 24 15',\n path: 'M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z',\n});\nexport const createChevronRightButton = () => createSvgElementFromPath({\n width: '11',\n height: '11',\n viewbox: '0 0 15 25',\n path: 'M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z',\n});\n","import { CompositeDisposable } from '../../../lifecycle';\nimport { addDisposableListener } from '../../../events';\nimport { createCloseButton } from '../../../svg';\nexport class DefaultTab extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor() {\n super();\n //\n this.params = {};\n this._element = document.createElement('div');\n this._element.className = 'default-tab';\n //\n this._content = document.createElement('div');\n this._content.className = 'tab-content';\n //\n this._actionContainer = document.createElement('div');\n this._actionContainer.className = 'action-container';\n //\n this._list = document.createElement('ul');\n this._list.className = 'tab-list';\n //\n this.action = document.createElement('div');\n this.action.className = 'tab-action';\n this.action.appendChild(createCloseButton());\n //\n this._element.appendChild(this._content);\n this._element.appendChild(this._actionContainer);\n this._actionContainer.appendChild(this._list);\n this._list.appendChild(this.action);\n //\n this.addDisposables(addDisposableListener(this._actionContainer, 'mousedown', (ev) => {\n ev.preventDefault();\n }));\n this.render();\n }\n update(event) {\n this.params = Object.assign(Object.assign({}, this.params), event.params);\n this.render();\n }\n focus() {\n //noop\n }\n init(params) {\n this.params = params;\n this._content.textContent = params.title;\n addDisposableListener(this.action, 'click', (ev) => {\n ev.preventDefault(); //\n this.params.api.close();\n });\n }\n onGroupChange(_group) {\n this.render();\n }\n onPanelVisibleChange(_isPanelVisible) {\n this.render();\n }\n layout(_width, _height) {\n // noop\n }\n render() {\n if (this._content.textContent !== this.params.title) {\n this._content.textContent = this.params.title;\n }\n }\n}\n","import { DefaultTab } from './components/tab/defaultTab';\nimport { createComponent } from '../panel/componentFactory';\nexport class DockviewPanelModel {\n get content() {\n return this._content;\n }\n get tab() {\n return this._tab;\n }\n constructor(accessor, id, contentComponent, tabComponent) {\n this.accessor = accessor;\n this.id = id;\n this.contentComponent = contentComponent;\n this.tabComponent = tabComponent;\n this._content = this.createContentComponent(this.id, contentComponent);\n this._tab = this.createTabComponent(this.id, tabComponent);\n }\n init(params) {\n this.content.init(params);\n this.tab.init(params);\n }\n updateParentGroup(_group, _isPanelVisible) {\n // noop\n }\n layout(width, height) {\n var _a, _b;\n (_b = (_a = this.content).layout) === null || _b === void 0 ? void 0 : _b.call(_a, width, height);\n }\n update(event) {\n var _a, _b, _c, _d;\n (_b = (_a = this.content).update) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n (_d = (_c = this.tab).update) === null || _d === void 0 ? void 0 : _d.call(_c, event);\n }\n dispose() {\n var _a, _b, _c, _d;\n (_b = (_a = this.content).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_d = (_c = this.tab).dispose) === null || _d === void 0 ? void 0 : _d.call(_c);\n }\n createContentComponent(id, componentName) {\n var _a, _b;\n return createComponent(id, componentName, (_a = this.accessor.options.components) !== null && _a !== void 0 ? _a : {}, this.accessor.options.frameworkComponents, (_b = this.accessor.options.frameworkComponentFactory) === null || _b === void 0 ? void 0 : _b.content);\n }\n createTabComponent(id, componentName) {\n var _a, _b;\n if (componentName) {\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());\n }\n else if (this.accessor.options.defaultTabComponent) {\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());\n }\n else {\n return new DefaultTab();\n }\n }\n}\n","import { DockviewPanel } from './dockviewPanel';\nimport { DockviewPanelModel } from './dockviewPanelModel';\nimport { DockviewApi } from '../api/component.api';\nexport class DefaultDockviewDeserialzier {\n constructor(accessor) {\n this.accessor = accessor;\n }\n fromJSON(panelData, group) {\n var _a, _b;\n const panelId = panelData.id;\n const params = panelData.params;\n const title = panelData.title;\n const viewData = panelData.view;\n const contentComponent = viewData\n ? viewData.content.id\n : (_a = panelData.contentComponent) !== null && _a !== void 0 ? _a : 'unknown';\n const tabComponent = viewData\n ? (_b = viewData.tab) === null || _b === void 0 ? void 0 : _b.id\n : panelData.tabComponent;\n const view = new DockviewPanelModel(this.accessor, panelId, contentComponent, tabComponent);\n const panel = new DockviewPanel(panelId, this.accessor, new DockviewApi(this.accessor), group, view, {\n renderer: panelData.renderer,\n });\n panel.init({\n title: title !== null && title !== void 0 ? title : panelId,\n params: params !== null && params !== void 0 ? params : {},\n });\n return panel;\n }\n}\n","import { addDisposableListener } from '../../../events';\nimport { toggleClass } from '../../../dom';\nimport { CompositeDisposable } from '../../../lifecycle';\nimport { createCloseButton } from '../../../svg';\nexport class Watermark extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor() {\n super();\n this._element = document.createElement('div');\n this._element.className = 'watermark';\n const title = document.createElement('div');\n title.className = 'watermark-title';\n const emptySpace = document.createElement('span');\n emptySpace.style.flexGrow = '1';\n const content = document.createElement('div');\n content.className = 'watermark-content';\n this._element.appendChild(title);\n this._element.appendChild(content);\n const actionsContainer = document.createElement('div');\n actionsContainer.className = 'actions-container';\n const closeAnchor = document.createElement('div');\n closeAnchor.className = 'close-action';\n closeAnchor.appendChild(createCloseButton());\n actionsContainer.appendChild(closeAnchor);\n title.appendChild(emptySpace);\n title.appendChild(actionsContainer);\n this.addDisposables(addDisposableListener(closeAnchor, 'click', (ev) => {\n var _a;\n ev.preventDefault();\n if (this._group) {\n (_a = this._api) === null || _a === void 0 ? void 0 : _a.removeGroup(this._group);\n }\n }));\n }\n update(_event) {\n // noop\n }\n focus() {\n // noop\n }\n layout(_width, _height) {\n // noop\n }\n init(_params) {\n this._api = _params.containerApi;\n this.render();\n }\n updateParentGroup(group, _visible) {\n this._group = group;\n this.render();\n }\n dispose() {\n super.dispose();\n }\n render() {\n const isOneGroup = !!(this._api && this._api.size <= 1);\n toggleClass(this.element, 'has-actions', isOneGroup);\n }\n}\n","import { getElementsByTagName, quasiDefaultPrevented, toggleClass, } from '../dom';\nimport { Emitter, addDisposableListener, addDisposableWindowListener, } from '../events';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nimport { clamp } from '../math';\nconst bringElementToFront = (() => {\n let previous = null;\n function pushToTop(element) {\n if (previous !== element && previous !== null) {\n toggleClass(previous, 'dv-bring-to-front', false);\n }\n toggleClass(element, 'dv-bring-to-front', true);\n previous = element;\n }\n return pushToTop;\n})();\nexport class Overlay extends CompositeDisposable {\n set minimumInViewportWidth(value) {\n this.options.minimumInViewportWidth = value;\n }\n set minimumInViewportHeight(value) {\n this.options.minimumInViewportHeight = value;\n }\n constructor(options) {\n super();\n this.options = options;\n this._element = document.createElement('div');\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._onDidChangeEnd = new Emitter();\n this.onDidChangeEnd = this._onDidChangeEnd.event;\n this.addDisposables(this._onDidChange, this._onDidChangeEnd);\n this._element.className = 'dv-resize-container';\n this.setupResize('top');\n this.setupResize('bottom');\n this.setupResize('left');\n this.setupResize('right');\n this.setupResize('topleft');\n this.setupResize('topright');\n this.setupResize('bottomleft');\n this.setupResize('bottomright');\n this._element.appendChild(this.options.content);\n this.options.container.appendChild(this._element);\n // if input bad resize within acceptable boundaries\n this.setBounds({\n height: this.options.height,\n width: this.options.width,\n top: this.options.top,\n left: this.options.left,\n });\n }\n setBounds(bounds = {}) {\n if (typeof bounds.height === 'number') {\n this._element.style.height = `${bounds.height}px`;\n }\n if (typeof bounds.width === 'number') {\n this._element.style.width = `${bounds.width}px`;\n }\n if (typeof bounds.top === 'number') {\n this._element.style.top = `${bounds.top}px`;\n }\n if (typeof bounds.left === 'number') {\n this._element.style.left = `${bounds.left}px`;\n }\n const containerRect = this.options.container.getBoundingClientRect();\n const overlayRect = this._element.getBoundingClientRect();\n // region: ensure bounds within allowable limits\n // a minimum width of minimumViewportWidth must be inside the viewport\n const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));\n // a minimum height of minimumViewportHeight must be inside the viewport\n const yOffset = typeof this.options.minimumInViewportHeight === 'number'\n ? Math.max(0, this.getMinimumHeight(overlayRect.height))\n : 0;\n const left = clamp(overlayRect.left - containerRect.left, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\n const top = clamp(overlayRect.top - containerRect.top, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\n this._element.style.left = `${left}px`;\n this._element.style.top = `${top}px`;\n this._onDidChange.fire();\n }\n toJSON() {\n const container = this.options.container.getBoundingClientRect();\n const element = this._element.getBoundingClientRect();\n return {\n top: element.top - container.top,\n left: element.left - container.left,\n width: element.width,\n height: element.height,\n };\n }\n setupDrag(dragTarget, options = { inDragMode: false }) {\n const move = new MutableDisposable();\n const track = () => {\n let offset = null;\n const iframes = [\n ...getElementsByTagName('iframe'),\n ...getElementsByTagName('webview'),\n ];\n for (const iframe of iframes) {\n iframe.style.pointerEvents = 'none';\n }\n move.value = new CompositeDisposable({\n dispose: () => {\n for (const iframe of iframes) {\n iframe.style.pointerEvents = 'auto';\n }\n },\n }, addDisposableWindowListener(window, 'mousemove', (e) => {\n const containerRect = this.options.container.getBoundingClientRect();\n const x = e.clientX - containerRect.left;\n const y = e.clientY - containerRect.top;\n toggleClass(this._element, 'dv-resize-container-dragging', true);\n const overlayRect = this._element.getBoundingClientRect();\n if (offset === null) {\n offset = {\n x: e.clientX - overlayRect.left,\n y: e.clientY - overlayRect.top,\n };\n }\n const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));\n const yOffset = Math.max(0, this.options.minimumInViewportHeight\n ? this.getMinimumHeight(overlayRect.height)\n : 0);\n const left = clamp(x - offset.x, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\n const top = clamp(y - offset.y, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\n this.setBounds({ top, left });\n }), addDisposableWindowListener(window, 'mouseup', () => {\n toggleClass(this._element, 'dv-resize-container-dragging', false);\n move.dispose();\n this._onDidChangeEnd.fire();\n }));\n };\n this.addDisposables(move, addDisposableListener(dragTarget, 'mousedown', (event) => {\n if (event.defaultPrevented) {\n event.preventDefault();\n return;\n }\n // if somebody has marked this event then treat as a defaultPrevented\n // without actually calling event.preventDefault()\n if (quasiDefaultPrevented(event)) {\n return;\n }\n track();\n }), addDisposableListener(this.options.content, 'mousedown', (event) => {\n if (event.defaultPrevented) {\n return;\n }\n // if somebody has marked this event then treat as a defaultPrevented\n // without actually calling event.preventDefault()\n if (quasiDefaultPrevented(event)) {\n return;\n }\n if (event.shiftKey) {\n track();\n }\n }), addDisposableListener(this.options.content, 'mousedown', () => {\n bringElementToFront(this._element);\n }, true));\n bringElementToFront(this._element);\n if (options.inDragMode) {\n track();\n }\n }\n setupResize(direction) {\n const resizeHandleElement = document.createElement('div');\n resizeHandleElement.className = `dv-resize-handle-${direction}`;\n this._element.appendChild(resizeHandleElement);\n const move = new MutableDisposable();\n this.addDisposables(move, addDisposableListener(resizeHandleElement, 'mousedown', (e) => {\n e.preventDefault();\n let startPosition = null;\n const iframes = [\n ...getElementsByTagName('iframe'),\n ...getElementsByTagName('webview'),\n ];\n for (const iframe of iframes) {\n iframe.style.pointerEvents = 'none';\n }\n move.value = new CompositeDisposable(addDisposableWindowListener(window, 'mousemove', (e) => {\n const containerRect = this.options.container.getBoundingClientRect();\n const overlayRect = this._element.getBoundingClientRect();\n const y = e.clientY - containerRect.top;\n const x = e.clientX - containerRect.left;\n if (startPosition === null) {\n // record the initial dimensions since as all subsequence moves are relative to this\n startPosition = {\n originalY: y,\n originalHeight: overlayRect.height,\n originalX: x,\n originalWidth: overlayRect.width,\n };\n }\n let top = undefined;\n let height = undefined;\n let left = undefined;\n let width = undefined;\n const moveTop = () => {\n top = clamp(y, -Number.MAX_VALUE, startPosition.originalY +\n startPosition.originalHeight >\n containerRect.height\n ? this.getMinimumHeight(containerRect.height)\n : Math.max(0, startPosition.originalY +\n startPosition.originalHeight -\n Overlay.MINIMUM_HEIGHT));\n height =\n startPosition.originalY +\n startPosition.originalHeight -\n top;\n };\n const moveBottom = () => {\n top =\n startPosition.originalY -\n startPosition.originalHeight;\n height = clamp(y - top, top < 0 &&\n typeof this.options\n .minimumInViewportHeight === 'number'\n ? -top +\n this.options.minimumInViewportHeight\n : Overlay.MINIMUM_HEIGHT, Number.MAX_VALUE);\n };\n const moveLeft = () => {\n left = clamp(x, -Number.MAX_VALUE, startPosition.originalX +\n startPosition.originalWidth >\n containerRect.width\n ? this.getMinimumWidth(containerRect.width)\n : Math.max(0, startPosition.originalX +\n startPosition.originalWidth -\n Overlay.MINIMUM_WIDTH));\n width =\n startPosition.originalX +\n startPosition.originalWidth -\n left;\n };\n const moveRight = () => {\n left =\n startPosition.originalX -\n startPosition.originalWidth;\n width = clamp(x - left, left < 0 &&\n typeof this.options\n .minimumInViewportWidth === 'number'\n ? -left +\n this.options.minimumInViewportWidth\n : Overlay.MINIMUM_WIDTH, Number.MAX_VALUE);\n };\n switch (direction) {\n case 'top':\n moveTop();\n break;\n case 'bottom':\n moveBottom();\n break;\n case 'left':\n moveLeft();\n break;\n case 'right':\n moveRight();\n break;\n case 'topleft':\n moveTop();\n moveLeft();\n break;\n case 'topright':\n moveTop();\n moveRight();\n break;\n case 'bottomleft':\n moveBottom();\n moveLeft();\n break;\n case 'bottomright':\n moveBottom();\n moveRight();\n break;\n }\n this.setBounds({ height, width, top, left });\n }), {\n dispose: () => {\n for (const iframe of iframes) {\n iframe.style.pointerEvents = 'auto';\n }\n },\n }, addDisposableWindowListener(window, 'mouseup', () => {\n move.dispose();\n this._onDidChangeEnd.fire();\n }));\n }));\n }\n getMinimumWidth(width) {\n if (typeof this.options.minimumInViewportWidth === 'number') {\n return width - this.options.minimumInViewportWidth;\n }\n return 0;\n }\n getMinimumHeight(height) {\n if (typeof this.options.minimumInViewportHeight === 'number') {\n return height - this.options.minimumInViewportHeight;\n }\n return height;\n }\n dispose() {\n this._element.remove();\n super.dispose();\n }\n}\nOverlay.MINIMUM_HEIGHT = 20;\nOverlay.MINIMUM_WIDTH = 20;\n","import { CompositeDisposable } from '../lifecycle';\nexport class DockviewFloatingGroupPanel extends CompositeDisposable {\n constructor(group, overlay) {\n super();\n this.group = group;\n this.overlay = overlay;\n this.addDisposables(overlay);\n }\n position(bounds) {\n this.overlay.setBounds(bounds);\n }\n}\n","export const DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;\nexport const DEFAULT_FLOATING_GROUP_POSITION = { left: 100, top: 100 };\n","import { DragAndDropObserver } from './dnd/dnd';\nimport { getDomNodePagePosition, toggleClass } from './dom';\nimport { CompositeDisposable, Disposable } from './lifecycle';\nfunction createFocusableElement() {\n const element = document.createElement('div');\n element.tabIndex = -1;\n return element;\n}\nexport class OverlayRenderContainer extends CompositeDisposable {\n constructor(element) {\n super();\n this.element = element;\n this.map = {};\n this._disposed = false;\n this.addDisposables(Disposable.from(() => {\n for (const value of Object.values(this.map)) {\n value.disposable.dispose();\n value.destroy.dispose();\n }\n this._disposed = true;\n }));\n }\n detatch(panel) {\n if (this.map[panel.api.id]) {\n const { disposable, destroy } = this.map[panel.api.id];\n disposable.dispose();\n destroy.dispose();\n delete this.map[panel.api.id];\n return true;\n }\n return false;\n }\n attach(options) {\n const { panel, referenceContainer } = options;\n if (!this.map[panel.api.id]) {\n const element = createFocusableElement();\n element.className = 'dv-render-overlay';\n this.map[panel.api.id] = {\n panel,\n disposable: Disposable.NONE,\n destroy: Disposable.NONE,\n element,\n };\n }\n const focusContainer = this.map[panel.api.id].element;\n if (panel.view.content.element.parentElement !== focusContainer) {\n focusContainer.appendChild(panel.view.content.element);\n }\n if (focusContainer.parentElement !== this.element) {\n this.element.appendChild(focusContainer);\n }\n const resize = () => {\n // TODO propagate position to avoid getDomNodePagePosition calls, possible performance bottleneck?\n const box = getDomNodePagePosition(referenceContainer.element);\n const box2 = getDomNodePagePosition(this.element);\n focusContainer.style.left = `${box.left - box2.left}px`;\n focusContainer.style.top = `${box.top - box2.top}px`;\n focusContainer.style.width = `${box.width}px`;\n focusContainer.style.height = `${box.height}px`;\n toggleClass(focusContainer, 'dv-render-overlay-float', panel.group.api.location.type === 'floating');\n };\n const visibilityChanged = () => {\n if (panel.api.isVisible) {\n resize();\n }\n focusContainer.style.display = panel.api.isVisible ? '' : 'none';\n };\n const disposable = new CompositeDisposable(\n /**\n * since container is positioned absoutely we must explicitly forward\n * the dnd events for the expect behaviours to continue to occur in terms of dnd\n *\n * the dnd observer does not need to be conditional on whether the panel is visible since\n * non-visible panels are 'display: none' and in such case the dnd observer will not fire.\n */\n new DragAndDropObserver(focusContainer, {\n onDragEnd: (e) => {\n referenceContainer.dropTarget.dnd.onDragEnd(e);\n },\n onDragEnter: (e) => {\n referenceContainer.dropTarget.dnd.onDragEnter(e);\n },\n onDragLeave: (e) => {\n referenceContainer.dropTarget.dnd.onDragLeave(e);\n },\n onDrop: (e) => {\n referenceContainer.dropTarget.dnd.onDrop(e);\n },\n onDragOver: (e) => {\n referenceContainer.dropTarget.dnd.onDragOver(e);\n },\n }), panel.api.onDidVisibilityChange((event) => {\n /**\n * Control the visibility of the content, however even when not visible (display: none)\n * the content is still maintained within the DOM hence DOM specific attributes\n * such as scroll position are maintained when next made visible.\n */\n visibilityChanged();\n }), panel.api.onDidDimensionsChange(() => {\n if (!panel.api.isVisible) {\n return;\n }\n resize();\n }));\n this.map[panel.api.id].destroy = Disposable.from(() => {\n var _a;\n if (panel.view.content.element.parentElement === focusContainer) {\n focusContainer.removeChild(panel.view.content.element);\n }\n (_a = focusContainer.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(focusContainer);\n });\n queueMicrotask(() => {\n if (this.isDisposed) {\n return;\n }\n /**\n * wait until everything has finished in the current stack-frame call before\n * calling the first resize as other size-altering events may still occur before\n * the end of the stack-frame.\n */\n visibilityChanged();\n });\n // dispose of logic asoccciated with previous reference-container\n this.map[panel.api.id].disposable.dispose();\n // and reset the disposable to the active reference-container\n this.map[panel.api.id].disposable = disposable;\n return focusContainer;\n }\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { addStyles } from './dom';\nimport { Emitter, addDisposableWindowListener } from './events';\nimport { CompositeDisposable } from './lifecycle';\nexport class PopoutWindow extends CompositeDisposable {\n get window() {\n var _a, _b;\n return (_b = (_a = this._window) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : null;\n }\n constructor(target, className, options) {\n super();\n this.target = target;\n this.className = className;\n this.options = options;\n this._onWillClose = new Emitter();\n this.onWillClose = this._onWillClose.event;\n this._onDidClose = new Emitter();\n this.onDidClose = this._onDidClose.event;\n this._window = null;\n this.addDisposables(this._onWillClose, this._onDidClose, {\n dispose: () => {\n this.close();\n },\n });\n }\n dimensions() {\n if (!this._window) {\n return null;\n }\n const left = this._window.value.screenX;\n const top = this._window.value.screenY;\n const width = this._window.value.innerWidth;\n const height = this._window.value.innerHeight;\n return { top, left, width, height };\n }\n close() {\n var _a, _b;\n if (this._window) {\n this._onWillClose.fire();\n (_b = (_a = this.options).onWillClose) === null || _b === void 0 ? void 0 : _b.call(_a, {\n id: this.target,\n window: this._window.value,\n });\n this._window.disposable.dispose();\n this._window.value.close();\n this._window = null;\n this._onDidClose.fire();\n }\n }\n open() {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n if (this._window) {\n throw new Error('instance of popout window is already open');\n }\n const url = `${this.options.url}`;\n const features = Object.entries({\n top: this.options.top,\n left: this.options.left,\n width: this.options.width,\n height: this.options.height,\n })\n .map(([key, value]) => `${key}=${value}`)\n .join(',');\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/open\n */\n const externalWindow = window.open(url, this.target, features);\n if (!externalWindow) {\n /**\n * Popup blocked\n */\n return null;\n }\n const disposable = new CompositeDisposable();\n this._window = { value: externalWindow, disposable };\n disposable.addDisposables(addDisposableWindowListener(window, 'beforeunload', () => {\n /**\n * before the main window closes we should close this popup too\n * to be good citizens\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event\n */\n this.close();\n }));\n const container = this.createPopoutWindowContainer();\n if (this.className) {\n container.classList.add(this.className);\n }\n (_b = (_a = this.options).onDidOpen) === null || _b === void 0 ? void 0 : _b.call(_a, {\n id: this.target,\n window: externalWindow,\n });\n return new Promise((resolve) => {\n externalWindow.addEventListener('unload', (e) => {\n // if page fails to load before unloading\n // this.close();\n });\n externalWindow.addEventListener('load', () => {\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/load_event\n */\n const externalDocument = externalWindow.document;\n externalDocument.title = document.title;\n externalDocument.body.appendChild(container);\n addStyles(externalDocument, window.document.styleSheets);\n /**\n * beforeunload must be registered after load for reasons I could not determine\n * otherwise the beforeunload event will not fire when the window is closed\n */\n addDisposableWindowListener(externalWindow, 'beforeunload', () => {\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event\n */\n this.close();\n });\n resolve(container);\n });\n });\n });\n }\n createPopoutWindowContainer() {\n const el = document.createElement('div');\n el.classList.add('dv-popout-window');\n el.id = 'dv-popout-window';\n el.style.position = 'absolute';\n el.style.width = '100%';\n el.style.height = '100%';\n el.style.top = '0px';\n el.style.left = '0px';\n return el;\n }\n}\n","import { getRelativeLocation, getGridLocation, } from '../gridview/gridview';\nimport { directionToPosition, Droptarget, } from '../dnd/droptarget';\nimport { tail, sequenceEquals, remove } from '../array';\nimport { DockviewPanel } from './dockviewPanel';\nimport { CompositeDisposable, Disposable } from '../lifecycle';\nimport { Event, Emitter, addDisposableWindowListener } from '../events';\nimport { Watermark } from './components/watermark/watermark';\nimport { sequentialNumberGenerator } from '../math';\nimport { DefaultDockviewDeserialzier } from './deserializer';\nimport { createComponent } from '../panel/componentFactory';\nimport { isGroupOptionsWithGroup, isGroupOptionsWithPanel, isPanelOptionsWithGroup, isPanelOptionsWithPanel, } from './options';\nimport { BaseGrid, toTarget, } from '../gridview/baseComponentGridview';\nimport { DockviewApi } from '../api/component.api';\nimport { Orientation, Sizing } from '../splitview/splitview';\nimport { DockviewDidDropEvent, DockviewWillDropEvent, WillShowOverlayLocationEvent, } from './dockviewGroupPanelModel';\nimport { DockviewGroupPanel } from './dockviewGroupPanel';\nimport { DockviewPanelModel } from './dockviewPanelModel';\nimport { getPanelData } from '../dnd/dataTransfer';\nimport { Overlay } from '../dnd/overlay';\nimport { toggleClass, watchElementResize } from '../dom';\nimport { DockviewFloatingGroupPanel } from './dockviewFloatingGroupPanel';\nimport { DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE, DEFAULT_FLOATING_GROUP_POSITION, } from '../constants';\nimport { OverlayRenderContainer, } from '../overlayRenderContainer';\nimport { PopoutWindow } from '../popoutWindow';\nconst DEFAULT_ROOT_OVERLAY_MODEL = {\n activationSize: { type: 'pixels', value: 10 },\n size: { type: 'pixels', value: 20 },\n};\nfunction moveGroupWithoutDestroying(options) {\n const activePanel = options.from.activePanel;\n const panels = [...options.from.panels].map((panel) => {\n const removedPanel = options.from.model.removePanel(panel);\n options.from.model.renderContainer.detatch(panel);\n return removedPanel;\n });\n panels.forEach((panel) => {\n options.to.model.openPanel(panel, {\n skipSetActive: activePanel !== panel,\n skipSetGroupActive: true,\n });\n });\n}\nfunction getDockviewTheme(element) {\n function toClassList(element) {\n const list = [];\n for (let i = 0; i < element.classList.length; i++) {\n list.push(element.classList.item(i));\n }\n return list;\n }\n let theme = undefined;\n let parent = element;\n while (parent !== null) {\n theme = toClassList(parent).find((cls) => cls.startsWith('dockview-theme-'));\n if (typeof theme === 'string') {\n break;\n }\n parent = parent.parentElement;\n }\n return theme;\n}\nfunction typeValidate3(data, path) {\n if (typeof data.id !== 'string') {\n throw new Error(`${path}.id must be a string`);\n }\n if (typeof data.activeView !== 'string' ||\n typeof data.activeView !== 'undefined') {\n throw new Error(`${path}.activeView must be a string of undefined`);\n }\n}\nfunction typeValidate2(data, path) {\n if (typeof data.size !== 'number' && typeof data.size !== 'undefined') {\n throw new Error(`${path}.size must be a number or undefined`);\n }\n if (typeof data.visible !== 'boolean' &&\n typeof data.visible !== 'undefined') {\n throw new Error(`${path}.visible must be a boolean or undefined`);\n }\n if (data.type === 'leaf') {\n if (typeof data.data !== 'object' ||\n data.data === null ||\n Array.isArray(data.data)) {\n throw new Error('object must be a non-null object');\n }\n typeValidate3(data.data, `${path}.data`);\n }\n else if (data.type === 'branch') {\n if (!Array.isArray(data.data)) {\n throw new Error(`${path}.data must be an array`);\n }\n }\n else {\n throw new Error(`${path}.type must be onew of {'branch', 'leaf'}`);\n }\n}\nfunction typeValidate(data) {\n if (typeof data !== 'object' || data === null) {\n throw new Error('object must be a non-null object');\n }\n const { grid, panels, activeGroup, floatingGroups } = data;\n if (typeof grid !== 'object' || grid === null) {\n throw new Error(\"'.grid' must be a non-null object\");\n }\n if (typeof grid.height !== 'number') {\n throw new Error(\"'.grid.height' must be a number\");\n }\n if (typeof grid.width !== 'number') {\n throw new Error(\"'.grid.width' must be a number\");\n }\n if (typeof grid.root !== 'object' || grid.root === null) {\n throw new Error(\"'.grid.root' must be a non-null object\");\n }\n if (grid.root.type !== 'branch') {\n throw new Error(\".grid.root.type must be of type 'branch'\");\n }\n if (grid.orientation !== Orientation.HORIZONTAL &&\n grid.orientation !== Orientation.VERTICAL) {\n throw new Error(`'.grid.width' must be one of {${Orientation.HORIZONTAL}, ${Orientation.VERTICAL}}`);\n }\n typeValidate2(grid.root, '.grid.root');\n}\nexport class DockviewComponent extends BaseGrid {\n get orientation() {\n return this.gridview.orientation;\n }\n get totalPanels() {\n return this.panels.length;\n }\n get panels() {\n return this.groups.flatMap((group) => group.panels);\n }\n get options() {\n return this._options;\n }\n get activePanel() {\n const activeGroup = this.activeGroup;\n if (!activeGroup) {\n return undefined;\n }\n return activeGroup.activePanel;\n }\n get renderer() {\n var _a;\n return (_a = this.options.defaultRenderer) !== null && _a !== void 0 ? _a : 'onlyWhenVisibile';\n }\n constructor(options) {\n var _a, _b;\n super({\n proportionalLayout: true,\n orientation: (_a = options.orientation) !== null && _a !== void 0 ? _a : Orientation.HORIZONTAL,\n styles: options.styles,\n parentElement: options.parentElement,\n disableAutoResizing: options.disableAutoResizing,\n locked: options.locked,\n });\n this.nextGroupId = sequentialNumberGenerator();\n this._deserializer = new DefaultDockviewDeserialzier(this);\n this.watermark = null;\n this._onWillDragPanel = new Emitter();\n this.onWillDragPanel = this._onWillDragPanel.event;\n this._onWillDragGroup = new Emitter();\n this.onWillDragGroup = this._onWillDragGroup.event;\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n this._onWillDrop = new Emitter();\n this.onWillDrop = this._onWillDrop.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._onDidRemovePanel = new Emitter();\n this.onDidRemovePanel = this._onDidRemovePanel.event;\n this._onDidAddPanel = new Emitter();\n this.onDidAddPanel = this._onDidAddPanel.event;\n this._onDidLayoutFromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;\n this._onDidActivePanelChange = new Emitter();\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\n this._onDidMovePanel = new Emitter();\n this._floatingGroups = [];\n this._popoutGroups = [];\n this._ignoreEvents = 0;\n this._onDidRemoveGroup = new Emitter();\n this.onDidRemoveGroup = this._onDidRemoveGroup.event;\n this._onDidAddGroup = new Emitter();\n this.onDidAddGroup = this._onDidAddGroup.event;\n this._onDidActiveGroupChange = new Emitter();\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\n this._moving = false;\n const gready = document.createElement('div');\n gready.className = 'dv-overlay-render-container';\n this.gridview.element.appendChild(gready);\n this.overlayRenderContainer = new OverlayRenderContainer(gready);\n toggleClass(this.gridview.element, 'dv-dockview', true);\n toggleClass(this.element, 'dv-debug', !!options.debug);\n this.addDisposables(this.overlayRenderContainer, this._onWillDragPanel, this._onWillDragGroup, this._onWillShowOverlay, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, this._onWillDrop, this._onDidMovePanel, this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this.onDidAdd((event) => {\n if (!this._moving) {\n this._onDidAddGroup.fire(event);\n }\n }), this.onDidRemove((event) => {\n if (!this._moving) {\n this._onDidRemoveGroup.fire(event);\n }\n }), this.onDidActiveChange((event) => {\n if (!this._moving) {\n this._onDidActiveGroupChange.fire(event);\n }\n }), Event.any(this.onDidAdd, this.onDidRemove)(() => {\n this.updateWatermark();\n }), Event.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {\n this._bufferOnDidLayoutChange.fire();\n }), Disposable.from(() => {\n // iterate over a copy of the array since .dispose() mutates the original array\n for (const group of [...this._floatingGroups]) {\n group.dispose();\n }\n // iterate over a copy of the array since .dispose() mutates the original array\n for (const group of [...this._popoutGroups]) {\n group.disposable.dispose();\n }\n }));\n this._options = options;\n if (!this.options.components) {\n this.options.components = {};\n }\n if (!this.options.frameworkComponents) {\n this.options.frameworkComponents = {};\n }\n if (!this.options.frameworkTabComponents) {\n this.options.frameworkTabComponents = {};\n }\n if (!this.options.tabComponents) {\n this.options.tabComponents = {};\n }\n if (!this.options.watermarkComponent &&\n !this.options.watermarkFrameworkComponent) {\n this.options.watermarkComponent = Watermark;\n }\n this._rootDropTarget = new Droptarget(this.element, {\n canDisplayOverlay: (event, position) => {\n const data = getPanelData();\n if (data) {\n if (data.viewId !== this.id) {\n return false;\n }\n if (position === 'center') {\n // center drop target is only allowed if there are no panels in the grid\n // floating panels are allowed\n return this.gridview.length === 0;\n }\n return true;\n }\n if (this.options.showDndOverlay) {\n if (position === 'center' && this.gridview.length !== 0) {\n /**\n * for external events only show the four-corner drag overlays, disable\n * the center position so that external drag events can fall through to the group\n * and panel drop target handlers\n */\n return false;\n }\n return this.options.showDndOverlay({\n nativeEvent: event,\n position: position,\n target: 'edge',\n getData: getPanelData,\n });\n }\n return false;\n },\n acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],\n overlayModel: (_b = this.options.rootOverlayModel) !== null && _b !== void 0 ? _b : DEFAULT_ROOT_OVERLAY_MODEL,\n });\n this.addDisposables(this._rootDropTarget, this._rootDropTarget.onWillShowOverlay((event) => {\n if (this.gridview.length > 0 && event.position === 'center') {\n // option only available when no panels in primary grid\n return;\n }\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {\n kind: 'edge',\n }));\n }), this._rootDropTarget.onDrop((event) => {\n var _a;\n const willDropEvent = new DockviewWillDropEvent({\n nativeEvent: event.nativeEvent,\n position: event.position,\n panel: undefined,\n api: this._api,\n group: undefined,\n getData: getPanelData,\n kind: 'edge',\n });\n this._onWillDrop.fire(willDropEvent);\n if (willDropEvent.defaultPrevented) {\n return;\n }\n const data = getPanelData();\n if (data) {\n this.moveGroupOrPanel({\n from: {\n groupId: data.groupId,\n panelId: (_a = data.panelId) !== null && _a !== void 0 ? _a : undefined,\n },\n to: {\n group: this.orthogonalize(event.position),\n position: 'center',\n },\n });\n }\n else {\n this._onDidDrop.fire(new DockviewDidDropEvent({\n nativeEvent: event.nativeEvent,\n position: event.position,\n panel: undefined,\n api: this._api,\n group: undefined,\n getData: getPanelData,\n }));\n }\n }), this._rootDropTarget);\n this._api = new DockviewApi(this);\n this.updateWatermark();\n }\n addPopoutGroup(itemToPopout, options) {\n var _a, _b, _c;\n if (itemToPopout instanceof DockviewPanel &&\n itemToPopout.group.size === 1) {\n return this.addPopoutGroup(itemToPopout.group);\n }\n const theme = getDockviewTheme(this.gridview.element);\n const element = this.element;\n function getBox() {\n if (options === null || options === void 0 ? void 0 : options.position) {\n return options.position;\n }\n if (itemToPopout instanceof DockviewGroupPanel) {\n return itemToPopout.element.getBoundingClientRect();\n }\n if (itemToPopout.group) {\n return itemToPopout.group.element.getBoundingClientRect();\n }\n return element.getBoundingClientRect();\n }\n const box = getBox();\n const groupId = (_b = (_a = options === null || options === void 0 ? void 0 : options.overridePopoutGroup) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : this.getNextGroupId(); //item.id;\n if (itemToPopout.api.location.type === 'grid') {\n itemToPopout.api.setVisible(false);\n }\n const _window = new PopoutWindow(`${this.id}-${groupId}`, // unique id\n theme !== null && theme !== void 0 ? theme : '', {\n url: (_c = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _c !== void 0 ? _c : '/popout.html',\n left: window.screenX + box.left,\n top: window.screenY + box.top,\n width: box.width,\n height: box.height,\n onDidOpen: options === null || options === void 0 ? void 0 : options.onDidOpen,\n onWillClose: options === null || options === void 0 ? void 0 : options.onWillClose,\n });\n const popoutWindowDisposable = new CompositeDisposable(_window, _window.onDidClose(() => {\n popoutWindowDisposable.dispose();\n }));\n return _window\n .open()\n .then((popoutContainer) => {\n var _a;\n if (_window.isDisposed) {\n return;\n }\n if (popoutContainer === null) {\n popoutWindowDisposable.dispose();\n return;\n }\n const gready = document.createElement('div');\n gready.className = 'dv-overlay-render-container';\n const overlayRenderContainer = new OverlayRenderContainer(gready);\n const referenceGroup = itemToPopout instanceof DockviewPanel\n ? itemToPopout.group\n : itemToPopout;\n const referenceLocation = itemToPopout.api.location.type;\n const group = (_a = options === null || options === void 0 ? void 0 : options.overridePopoutGroup) !== null && _a !== void 0 ? _a : this.createGroup({ id: groupId });\n group.model.renderContainer = overlayRenderContainer;\n if (!(options === null || options === void 0 ? void 0 : options.overridePopoutGroup)) {\n this._onDidAddGroup.fire(group);\n }\n if (itemToPopout instanceof DockviewPanel) {\n this.movingLock(() => {\n const panel = referenceGroup.model.removePanel(itemToPopout);\n group.model.openPanel(panel);\n });\n }\n else {\n this.movingLock(() => moveGroupWithoutDestroying({\n from: referenceGroup,\n to: group,\n }));\n switch (referenceLocation) {\n case 'grid':\n referenceGroup.api.setVisible(false);\n break;\n case 'floating':\n case 'popout':\n this.removeGroup(referenceGroup);\n break;\n }\n }\n popoutContainer.classList.add('dv-dockview');\n popoutContainer.style.overflow = 'hidden';\n popoutContainer.appendChild(gready);\n popoutContainer.appendChild(group.element);\n group.model.location = {\n type: 'popout',\n getWindow: () => _window.window,\n };\n this.doSetGroupAndPanelActive(group);\n popoutWindowDisposable.addDisposables(group.api.onDidActiveChange((event) => {\n var _a;\n if (event.isActive) {\n (_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();\n }\n }), group.api.onWillFocus(() => {\n var _a;\n (_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();\n }));\n let returnedGroup;\n const value = {\n window: _window,\n popoutGroup: group,\n referenceGroup: this.getPanel(referenceGroup.id)\n ? referenceGroup.id\n : undefined,\n disposable: {\n dispose: () => {\n popoutWindowDisposable.dispose();\n return returnedGroup;\n },\n },\n };\n popoutWindowDisposable.addDisposables(\n /**\n * ResizeObserver seems slow here, I do not know why but we don't need it\n * since we can reply on the window resize event as we will occupy the full\n * window dimensions\n */\n addDisposableWindowListener(_window.window, 'resize', () => {\n group.layout(window.innerWidth, window.innerHeight);\n }), overlayRenderContainer, Disposable.from(() => {\n if (this.getPanel(referenceGroup.id)) {\n this.movingLock(() => moveGroupWithoutDestroying({\n from: group,\n to: referenceGroup,\n }));\n if (!referenceGroup.api.isVisible) {\n referenceGroup.api.setVisible(true);\n }\n if (this.getPanel(group.id)) {\n this.doRemoveGroup(group, {\n skipPopoutAssociated: true,\n });\n }\n }\n else {\n if (this.getPanel(group.id)) {\n const removedGroup = this.doRemoveGroup(group, {\n skipDispose: true,\n skipActive: true,\n });\n removedGroup.model.renderContainer =\n this.overlayRenderContainer;\n removedGroup.model.location = { type: 'grid' };\n returnedGroup = removedGroup;\n }\n }\n }));\n this._popoutGroups.push(value);\n this.updateWatermark();\n })\n .catch((err) => {\n console.error(err);\n });\n }\n addFloatingGroup(item, coord, options) {\n var _a, _b, _c, _d, _e, _f, _g;\n let group;\n if (item instanceof DockviewPanel) {\n group = this.createGroup();\n this._onDidAddGroup.fire(group);\n this.movingLock(() => this.removePanel(item, {\n removeEmptyGroup: true,\n skipDispose: true,\n skipSetActiveGroup: true,\n }));\n group.model.openPanel(item, { skipSetGroupActive: true });\n }\n else {\n group = item;\n const popoutReferenceGroupId = (_a = this._popoutGroups.find((_) => _.popoutGroup === group)) === null || _a === void 0 ? void 0 : _a.referenceGroup;\n const popoutReferenceGroup = popoutReferenceGroupId\n ? this.getPanel(popoutReferenceGroupId)\n : undefined;\n const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&\n options.skipRemoveGroup;\n if (!skip) {\n if (popoutReferenceGroup) {\n this.movingLock(() => moveGroupWithoutDestroying({\n from: item,\n to: popoutReferenceGroup,\n }));\n this.doRemoveGroup(item, {\n skipPopoutReturn: true,\n skipPopoutAssociated: true,\n });\n this.doRemoveGroup(popoutReferenceGroup, {\n skipDispose: true,\n });\n group = popoutReferenceGroup;\n }\n else {\n this.doRemoveGroup(item, {\n skipDispose: true,\n skipPopoutReturn: true,\n skipPopoutAssociated: !!popoutReferenceGroup,\n });\n }\n }\n }\n group.model.location = { type: 'floating' };\n const overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number'\n ? Math.max(coord.x, 0)\n : DEFAULT_FLOATING_GROUP_POSITION.left;\n const overlayTop = typeof (coord === null || coord === void 0 ? void 0 : coord.y) === 'number'\n ? Math.max(coord.y, 0)\n : DEFAULT_FLOATING_GROUP_POSITION.top;\n const overlay = new Overlay({\n container: this.gridview.element,\n content: group.element,\n height: (_b = coord === null || coord === void 0 ? void 0 : coord.height) !== null && _b !== void 0 ? _b : 300,\n width: (_c = coord === null || coord === void 0 ? void 0 : coord.width) !== null && _c !== void 0 ? _c : 300,\n left: overlayLeft,\n top: overlayTop,\n minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'\n ? undefined\n : (_e = (_d = this.options.floatingGroupBounds) === null || _d === void 0 ? void 0 : _d.minimumWidthWithinViewport) !== null && _e !== void 0 ? _e : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,\n minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'\n ? undefined\n : (_g = (_f = this.options.floatingGroupBounds) === null || _f === void 0 ? void 0 : _f.minimumHeightWithinViewport) !== null && _g !== void 0 ? _g : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,\n });\n const el = group.element.querySelector('.void-container');\n if (!el) {\n throw new Error('failed to find drag handle');\n }\n overlay.setupDrag(el, {\n inDragMode: typeof (options === null || options === void 0 ? void 0 : options.inDragMode) === 'boolean'\n ? options.inDragMode\n : false,\n });\n const floatingGroupPanel = new DockviewFloatingGroupPanel(group, overlay);\n const disposable = watchElementResize(group.element, (entry) => {\n const { width, height } = entry.contentRect;\n group.layout(width, height); // let the group know it's size is changing so it can fire events to the panel\n });\n floatingGroupPanel.addDisposables(overlay.onDidChange(() => {\n // this is either a resize or a move\n // to inform the panels .layout(...) the group with it's current size\n // don't care about resize since the above watcher handles that\n group.layout(group.height, group.width);\n }), overlay.onDidChangeEnd(() => {\n this._bufferOnDidLayoutChange.fire();\n }), group.onDidChange((event) => {\n overlay.setBounds({\n height: event === null || event === void 0 ? void 0 : event.height,\n width: event === null || event === void 0 ? void 0 : event.width,\n });\n }), {\n dispose: () => {\n disposable.dispose();\n group.model.location = { type: 'grid' };\n remove(this._floatingGroups, floatingGroupPanel);\n this.updateWatermark();\n },\n });\n this._floatingGroups.push(floatingGroupPanel);\n if (!(options === null || options === void 0 ? void 0 : options.skipActiveGroup)) {\n this.doSetGroupAndPanelActive(group);\n }\n this.updateWatermark();\n }\n orthogonalize(position) {\n switch (position) {\n case 'top':\n case 'bottom':\n if (this.gridview.orientation === Orientation.HORIZONTAL) {\n // we need to add to a vertical splitview but the current root is a horizontal splitview.\n // insert a vertical splitview at the root level and add the existing view as a child\n this.gridview.insertOrthogonalSplitviewAtRoot();\n }\n break;\n case 'left':\n case 'right':\n if (this.gridview.orientation === Orientation.VERTICAL) {\n // we need to add to a horizontal splitview but the current root is a vertical splitview.\n // insert a horiziontal splitview at the root level and add the existing view as a child\n this.gridview.insertOrthogonalSplitviewAtRoot();\n }\n break;\n default:\n break;\n }\n switch (position) {\n case 'top':\n case 'left':\n case 'center':\n return this.createGroupAtLocation([0]); // insert into first position\n case 'bottom':\n case 'right':\n return this.createGroupAtLocation([this.gridview.length]); // insert into last position\n default:\n throw new Error(`unsupported position ${position}`);\n }\n }\n updateOptions(options) {\n var _a, _b;\n const changed_orientation = typeof options.orientation === 'string' &&\n this.gridview.orientation !== options.orientation;\n const changed_floatingGroupBounds = options.floatingGroupBounds !== undefined &&\n options.floatingGroupBounds !== this.options.floatingGroupBounds;\n const changed_rootOverlayOptions = options.rootOverlayModel !== undefined &&\n options.rootOverlayModel !== this.options.rootOverlayModel;\n this._options = Object.assign(Object.assign({}, this.options), options);\n if (changed_orientation) {\n this.gridview.orientation = options.orientation;\n }\n if (changed_floatingGroupBounds) {\n for (const group of this._floatingGroups) {\n switch (this.options.floatingGroupBounds) {\n case 'boundedWithinViewport':\n group.overlay.minimumInViewportHeight = undefined;\n group.overlay.minimumInViewportWidth = undefined;\n break;\n case undefined:\n group.overlay.minimumInViewportHeight =\n DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;\n group.overlay.minimumInViewportWidth =\n DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;\n break;\n default:\n group.overlay.minimumInViewportHeight =\n (_a = this.options.floatingGroupBounds) === null || _a === void 0 ? void 0 : _a.minimumHeightWithinViewport;\n group.overlay.minimumInViewportWidth =\n (_b = this.options.floatingGroupBounds) === null || _b === void 0 ? void 0 : _b.minimumWidthWithinViewport;\n }\n group.overlay.setBounds({});\n }\n }\n if (changed_rootOverlayOptions) {\n this._rootDropTarget.setOverlayModel(options.rootOverlayModel);\n }\n this.layout(this.gridview.width, this.gridview.height, true);\n }\n layout(width, height, forceResize) {\n super.layout(width, height, forceResize);\n if (this._floatingGroups) {\n for (const floating of this._floatingGroups) {\n // ensure floting groups stay within visible boundaries\n floating.overlay.setBounds();\n }\n }\n }\n focus() {\n var _a;\n (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();\n }\n getGroupPanel(id) {\n return this.panels.find((panel) => panel.id === id);\n }\n setActivePanel(panel) {\n panel.group.model.openPanel(panel);\n this.doSetGroupAndPanelActive(panel.group);\n }\n moveToNext(options = {}) {\n var _a;\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n if (options.includePanel && options.group) {\n if (options.group.activePanel !==\n options.group.panels[options.group.panels.length - 1]) {\n options.group.model.moveToNext({ suppressRoll: true });\n return;\n }\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;\n this.doSetGroupAndPanelActive(next);\n }\n moveToPrevious(options = {}) {\n var _a;\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n if (options.includePanel && options.group) {\n if (options.group.activePanel !== options.group.panels[0]) {\n options.group.model.moveToPrevious({ suppressRoll: true });\n return;\n }\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;\n if (next) {\n this.doSetGroupAndPanelActive(next);\n }\n }\n /**\n * Serialize the current state of the layout\n *\n * @returns A JSON respresentation of the layout\n */\n toJSON() {\n var _a;\n const data = this.gridview.serialize();\n const panels = this.panels.reduce((collection, panel) => {\n collection[panel.id] = panel.toJSON();\n return collection;\n }, {});\n const floats = this._floatingGroups.map((group) => {\n return {\n data: group.group.toJSON(),\n position: group.overlay.toJSON(),\n };\n });\n const popoutGroups = this._popoutGroups.map((group) => {\n return {\n data: group.popoutGroup.toJSON(),\n gridReferenceGroup: group.referenceGroup,\n position: group.window.dimensions(),\n };\n });\n const result = {\n grid: data,\n panels,\n activeGroup: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,\n };\n if (floats.length > 0) {\n result.floatingGroups = floats;\n }\n if (popoutGroups.length > 0) {\n result.popoutGroups = popoutGroups;\n }\n return result;\n }\n fromJSON(data) {\n var _a, _b, _c;\n this.clear();\n if (typeof data !== 'object' || data === null) {\n throw new Error('serialized layout must be a non-null object');\n }\n const { grid, panels, activeGroup } = data;\n if (grid.root.type !== 'branch' || !Array.isArray(grid.root.data)) {\n throw new Error('root must be of type branch');\n }\n try {\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n const createGroupFromSerializedState = (data) => {\n const { id, locked, hideHeader, views, activeView } = data;\n if (typeof id !== 'string') {\n throw new Error('group id must be of type string');\n }\n const group = this.createGroup({\n id,\n locked: !!locked,\n hideHeader: !!hideHeader,\n });\n const createdPanels = [];\n for (const child of views) {\n /**\n * Run the deserializer step seperately since this may fail to due corrupted external state.\n * In running this section first we avoid firing lots of 'add' events in the event of a failure\n * due to a corruption of input data.\n */\n const panel = this._deserializer.fromJSON(panels[child], group);\n createdPanels.push(panel);\n }\n this._onDidAddGroup.fire(group);\n for (let i = 0; i < views.length; i++) {\n const panel = createdPanels[i];\n const isActive = typeof activeView === 'string' &&\n activeView === panel.id;\n group.model.openPanel(panel, {\n skipSetActive: !isActive,\n skipSetGroupActive: true,\n });\n }\n if (!group.activePanel && group.panels.length > 0) {\n group.model.openPanel(group.panels[group.panels.length - 1], {\n skipSetGroupActive: true,\n });\n }\n return group;\n };\n this.gridview.deserialize(grid, {\n fromJSON: (node) => {\n return createGroupFromSerializedState(node.data);\n },\n });\n this.layout(width, height, true);\n const serializedFloatingGroups = (_a = data.floatingGroups) !== null && _a !== void 0 ? _a : [];\n for (const serializedFloatingGroup of serializedFloatingGroups) {\n const { data, position } = serializedFloatingGroup;\n const group = createGroupFromSerializedState(data);\n this.addFloatingGroup(group, {\n x: position.left,\n y: position.top,\n height: position.height,\n width: position.width,\n }, { skipRemoveGroup: true, inDragMode: false });\n }\n const serializedPopoutGroups = (_b = data.popoutGroups) !== null && _b !== void 0 ? _b : [];\n for (const serializedPopoutGroup of serializedPopoutGroups) {\n const { data, position, gridReferenceGroup } = serializedPopoutGroup;\n const group = createGroupFromSerializedState(data);\n this.addPopoutGroup((_c = (gridReferenceGroup\n ? this.getPanel(gridReferenceGroup)\n : undefined)) !== null && _c !== void 0 ? _c : group, {\n skipRemoveGroup: true,\n position: position !== null && position !== void 0 ? position : undefined,\n overridePopoutGroup: gridReferenceGroup\n ? group\n : undefined,\n });\n }\n for (const floatingGroup of this._floatingGroups) {\n floatingGroup.overlay.setBounds();\n }\n if (typeof activeGroup === 'string') {\n const panel = this.getPanel(activeGroup);\n if (panel) {\n this.doSetGroupAndPanelActive(panel);\n }\n }\n }\n catch (err) {\n /**\n * Takes all the successfully created groups and remove all of their panels.\n */\n for (const group of this.groups) {\n for (const panel of group.panels) {\n this.removePanel(panel, {\n removeEmptyGroup: false,\n skipDispose: false,\n });\n }\n }\n /**\n * To remove a group we cannot call this.removeGroup(...) since this makes assumptions about\n * the underlying HTMLElement existing in the Gridview.\n */\n for (const group of this.groups) {\n group.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n // iterate over a reassigned array since original array will be modified\n for (const floatingGroup of [...this._floatingGroups]) {\n floatingGroup.dispose();\n }\n // fires clean-up events and clears the underlying HTML gridview.\n this.clear();\n /**\n * even though we have cleaned-up we still want to inform the caller of their error\n * and we'll do this through re-throwing the original error since afterall you would\n * expect trying to load a corrupted layout to result in an error and not silently fail...\n */\n throw err;\n }\n this.updateWatermark();\n this._onDidLayoutFromJSON.fire();\n }\n clear() {\n const groups = Array.from(this._groups.values()).map((_) => _.value);\n const hasActiveGroup = !!this.activeGroup;\n const hasActivePanel = !!this.activePanel;\n for (const group of groups) {\n // remove the group will automatically remove the panels\n this.removeGroup(group, { skipActive: true });\n }\n if (hasActiveGroup) {\n this.doSetGroupAndPanelActive(undefined);\n }\n this.gridview.clear();\n }\n closeAllGroups() {\n for (const entry of this._groups.entries()) {\n const [_, group] = entry;\n group.value.model.closeAllPanels();\n }\n }\n addPanel(options) {\n var _a, _b;\n if (this.panels.find((_) => _.id === options.id)) {\n throw new Error(`panel with id ${options.id} already exists`);\n }\n let referenceGroup;\n if (options.position && options.floating) {\n throw new Error('you can only provide one of: position, floating as arguments to .addPanel(...)');\n }\n if (options.position) {\n if (isPanelOptionsWithPanel(options.position)) {\n const referencePanel = typeof options.position.referencePanel === 'string'\n ? this.getGroupPanel(options.position.referencePanel)\n : options.position.referencePanel;\n if (!referencePanel) {\n throw new Error(`referencePanel ${options.position.referencePanel} does not exist`);\n }\n referenceGroup = this.findGroup(referencePanel);\n }\n else if (isPanelOptionsWithGroup(options.position)) {\n referenceGroup =\n typeof options.position.referenceGroup === 'string'\n ? (_a = this._groups.get(options.position.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value\n : options.position.referenceGroup;\n if (!referenceGroup) {\n throw new Error(`referencePanel ${options.position.referenceGroup} does not exist`);\n }\n }\n else {\n const group = this.orthogonalize(directionToPosition(options.position.direction));\n const panel = this.createPanel(options, group);\n group.model.openPanel(panel);\n this.doSetGroupAndPanelActive(group);\n return panel;\n }\n }\n else {\n referenceGroup = this.activeGroup;\n }\n let panel;\n if (referenceGroup) {\n const target = toTarget(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');\n if (options.floating) {\n const group = this.createGroup();\n this._onDidAddGroup.fire(group);\n const o = typeof options.floating === 'object' &&\n options.floating !== null\n ? options.floating\n : {};\n this.addFloatingGroup(group, o, {\n inDragMode: false,\n skipRemoveGroup: true,\n skipActiveGroup: true,\n });\n panel = this.createPanel(options, group);\n group.model.openPanel(panel);\n }\n else if (referenceGroup.api.location.type === 'floating' ||\n target === 'center') {\n panel = this.createPanel(options, referenceGroup);\n referenceGroup.model.openPanel(panel);\n this.doSetGroupAndPanelActive(referenceGroup);\n }\n else {\n const location = getGridLocation(referenceGroup.element);\n const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n const group = this.createGroupAtLocation(relativeLocation);\n panel = this.createPanel(options, group);\n group.model.openPanel(panel);\n this.doSetGroupAndPanelActive(group);\n }\n }\n else if (options.floating) {\n const group = this.createGroup();\n this._onDidAddGroup.fire(group);\n const o = typeof options.floating === 'object' &&\n options.floating !== null\n ? options.floating\n : {};\n this.addFloatingGroup(group, o, {\n inDragMode: false,\n skipRemoveGroup: true,\n skipActiveGroup: true,\n });\n panel = this.createPanel(options, group);\n group.model.openPanel(panel);\n }\n else {\n const group = this.createGroupAtLocation();\n panel = this.createPanel(options, group);\n group.model.openPanel(panel);\n this.doSetGroupAndPanelActive(group);\n }\n return panel;\n }\n removePanel(panel, options = {\n removeEmptyGroup: true,\n skipDispose: false,\n }) {\n const group = panel.group;\n if (!group) {\n throw new Error(`cannot remove panel ${panel.id}. it's missing a group.`);\n }\n group.model.removePanel(panel, {\n skipSetActiveGroup: options.skipSetActiveGroup,\n });\n if (!options.skipDispose) {\n panel.group.model.renderContainer.detatch(panel);\n panel.dispose();\n }\n if (group.size === 0 && options.removeEmptyGroup) {\n this.removeGroup(group, { skipActive: options.skipSetActiveGroup });\n }\n }\n createWatermarkComponent() {\n var _a;\n return createComponent('watermark-id', 'watermark-name', this.options.watermarkComponent\n ? { 'watermark-name': this.options.watermarkComponent }\n : {}, this.options.watermarkFrameworkComponent\n ? { 'watermark-name': this.options.watermarkFrameworkComponent }\n : {}, (_a = this.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.watermark);\n }\n updateWatermark() {\n var _a, _b;\n if (this.groups.filter((x) => x.api.location.type === 'grid' && x.api.isVisible).length === 0) {\n if (!this.watermark) {\n this.watermark = this.createWatermarkComponent();\n this.watermark.init({\n containerApi: new DockviewApi(this),\n });\n const watermarkContainer = document.createElement('div');\n watermarkContainer.className = 'dv-watermark-container';\n watermarkContainer.appendChild(this.watermark.element);\n this.gridview.element.appendChild(watermarkContainer);\n }\n }\n else if (this.watermark) {\n this.watermark.element.parentElement.remove();\n (_b = (_a = this.watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.watermark = null;\n }\n }\n addGroup(options) {\n var _a;\n const group = this.createGroup(options);\n if (options) {\n let referenceGroup;\n if (isGroupOptionsWithPanel(options)) {\n const referencePanel = typeof options.referencePanel === 'string'\n ? this.panels.find((panel) => panel.id === options.referencePanel)\n : options.referencePanel;\n if (!referencePanel) {\n throw new Error(`reference panel ${options.referencePanel} does not exist`);\n }\n referenceGroup = this.findGroup(referencePanel);\n if (!referenceGroup) {\n throw new Error(`reference group for reference panel ${options.referencePanel} does not exist`);\n }\n }\n else if (isGroupOptionsWithGroup(options)) {\n referenceGroup =\n typeof options.referenceGroup === 'string'\n ? (_a = this._groups.get(options.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value\n : options.referenceGroup;\n if (!referenceGroup) {\n throw new Error(`reference group ${options.referenceGroup} does not exist`);\n }\n }\n else {\n const group = this.orthogonalize(directionToPosition(options.direction));\n if (!options.skipSetActive) {\n this.doSetGroupAndPanelActive(group);\n }\n return group;\n }\n const target = toTarget(options.direction || 'within');\n const location = getGridLocation(referenceGroup.element);\n const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n this.doAddGroup(group, relativeLocation);\n if (!options.skipSetActive) {\n this.doSetGroupAndPanelActive(group);\n }\n return group;\n }\n else {\n this.doAddGroup(group);\n this.doSetGroupAndPanelActive(group);\n return group;\n }\n }\n removeGroup(group, options) {\n this.doRemoveGroup(group, options);\n }\n doRemoveGroup(group, options) {\n var _a;\n const panels = [...group.panels]; // reassign since group panels will mutate\n if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n for (const panel of panels) {\n this.removePanel(panel, {\n removeEmptyGroup: false,\n skipDispose: (_a = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _a !== void 0 ? _a : false,\n });\n }\n }\n const activePanel = this.activePanel;\n if (group.api.location.type === 'floating') {\n const floatingGroup = this._floatingGroups.find((_) => _.group === group);\n if (floatingGroup) {\n if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n floatingGroup.group.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n remove(this._floatingGroups, floatingGroup);\n floatingGroup.dispose();\n if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {\n const groups = Array.from(this._groups.values());\n this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);\n }\n return floatingGroup.group;\n }\n throw new Error('failed to find floating group');\n }\n if (group.api.location.type === 'popout') {\n const selectedGroup = this._popoutGroups.find((_) => _.popoutGroup === group);\n if (selectedGroup) {\n if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n if (!(options === null || options === void 0 ? void 0 : options.skipPopoutAssociated)) {\n const refGroup = selectedGroup.referenceGroup\n ? this.getPanel(selectedGroup.referenceGroup)\n : undefined;\n if (refGroup) {\n this.removeGroup(refGroup);\n }\n }\n selectedGroup.popoutGroup.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n const removedGroup = selectedGroup.disposable.dispose();\n if (!(options === null || options === void 0 ? void 0 : options.skipPopoutReturn) && removedGroup) {\n this.doAddGroup(removedGroup, [0]);\n this.doSetGroupAndPanelActive(removedGroup);\n }\n if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {\n const groups = Array.from(this._groups.values());\n this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);\n }\n this.updateWatermark();\n return selectedGroup.popoutGroup;\n }\n throw new Error('failed to find popout group');\n }\n const re = super.doRemoveGroup(group, options);\n if (!(options === null || options === void 0 ? void 0 : options.skipActive)) {\n if (this.activePanel !== activePanel) {\n this._onDidActivePanelChange.fire(this.activePanel);\n }\n }\n return re;\n }\n movingLock(func) {\n const isMoving = this._moving;\n try {\n this._moving = true;\n return func();\n }\n finally {\n this._moving = isMoving;\n }\n }\n moveGroupOrPanel(options) {\n var _a;\n const destinationGroup = options.to.group;\n const sourceGroupId = options.from.groupId;\n const sourceItemId = options.from.panelId;\n const destinationTarget = options.to.position;\n const destinationIndex = options.to.index;\n const sourceGroup = sourceGroupId\n ? (_a = this._groups.get(sourceGroupId)) === null || _a === void 0 ? void 0 : _a.value\n : undefined;\n if (!sourceGroup) {\n throw new Error(`Failed to find group id ${sourceGroupId}`);\n }\n if (sourceItemId === undefined) {\n /**\n * Moving an entire group into another group\n */\n this.moveGroup({\n from: { group: sourceGroup },\n to: {\n group: destinationGroup,\n position: destinationTarget,\n },\n });\n return;\n }\n if (!destinationTarget || destinationTarget === 'center') {\n /**\n * Dropping a panel within another group\n */\n const removedPanel = this.movingLock(() => sourceGroup.model.removePanel(sourceItemId, {\n skipSetActive: false,\n skipSetActiveGroup: true,\n }));\n if (!removedPanel) {\n throw new Error(`No panel with id ${sourceItemId}`);\n }\n if (sourceGroup.model.size === 0) {\n // remove the group and do not set a new group as active\n this.doRemoveGroup(sourceGroup, { skipActive: true });\n }\n this.movingLock(() => destinationGroup.model.openPanel(removedPanel, {\n index: destinationIndex,\n skipSetGroupActive: true,\n }));\n this.doSetGroupAndPanelActive(destinationGroup);\n this._onDidMovePanel.fire({\n panel: removedPanel,\n });\n }\n else {\n /**\n * Dropping a panel to the extremities of a group which will place that panel\n * into an adjacent group\n */\n const referenceLocation = getGridLocation(destinationGroup.element);\n const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);\n if (sourceGroup.size < 2) {\n /**\n * If we are moving from a group which only has one panel left we will consider\n * moving the group itself rather than moving the panel into a newly created group\n */\n const [targetParentLocation, to] = tail(targetLocation);\n if (sourceGroup.api.location.type === 'grid') {\n const sourceLocation = getGridLocation(sourceGroup.element);\n const [sourceParentLocation, from] = tail(sourceLocation);\n if (sequenceEquals(sourceParentLocation, targetParentLocation)) {\n // special case when 'swapping' two views within same grid location\n // if a group has one tab - we are essentially moving the 'group'\n // which is equivalent to swapping two views in this case\n this.gridview.moveView(sourceParentLocation, from, to);\n return;\n }\n }\n // source group will become empty so delete the group\n const targetGroup = this.movingLock(() => this.doRemoveGroup(sourceGroup, {\n skipActive: true,\n skipDispose: true,\n }));\n // after deleting the group we need to re-evaulate the ref location\n const updatedReferenceLocation = getGridLocation(destinationGroup.element);\n const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, destinationTarget);\n this.movingLock(() => this.doAddGroup(targetGroup, location));\n this.doSetGroupAndPanelActive(targetGroup);\n }\n else {\n /**\n * The group we are removing from has many panels, we need to remove the panels we are moving,\n * create a new group, add the panels to that new group and add the new group in an appropiate position\n */\n const removedPanel = this.movingLock(() => sourceGroup.model.removePanel(sourceItemId, {\n skipSetActive: false,\n skipSetActiveGroup: true,\n }));\n if (!removedPanel) {\n throw new Error(`No panel with id ${sourceItemId}`);\n }\n const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);\n const group = this.createGroupAtLocation(dropLocation);\n this.movingLock(() => group.model.openPanel(removedPanel, {\n skipSetGroupActive: true,\n }));\n this.doSetGroupAndPanelActive(group);\n }\n }\n }\n moveGroup(options) {\n const from = options.from.group;\n const to = options.to.group;\n const target = options.to.position;\n if (target === 'center') {\n const activePanel = from.activePanel;\n const panels = this.movingLock(() => [...from.panels].map((p) => from.model.removePanel(p.id, {\n skipSetActive: true,\n })));\n if ((from === null || from === void 0 ? void 0 : from.model.size) === 0) {\n this.doRemoveGroup(from, { skipActive: true });\n }\n this.movingLock(() => {\n for (const panel of panels) {\n to.model.openPanel(panel, {\n skipSetActive: panel !== activePanel,\n skipSetGroupActive: true,\n });\n }\n });\n this.doSetGroupAndPanelActive(to);\n panels.forEach((panel) => {\n this._onDidMovePanel.fire({ panel });\n });\n }\n else {\n switch (from.api.location.type) {\n case 'grid':\n this.gridview.removeView(getGridLocation(from.element));\n break;\n case 'floating': {\n const selectedFloatingGroup = this._floatingGroups.find((x) => x.group === from);\n if (!selectedFloatingGroup) {\n throw new Error('failed to find floating group');\n }\n selectedFloatingGroup.dispose();\n break;\n }\n case 'popout': {\n const selectedPopoutGroup = this._popoutGroups.find((x) => x.popoutGroup === from);\n if (!selectedPopoutGroup) {\n throw new Error('failed to find popout group');\n }\n selectedPopoutGroup.disposable.dispose();\n }\n }\n const referenceLocation = getGridLocation(to.element);\n const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);\n this.gridview.addView(from, Sizing.Distribute, dropLocation);\n from.panels.forEach((panel) => {\n this._onDidMovePanel.fire({ panel });\n });\n }\n }\n doSetGroupActive(group) {\n super.doSetGroupActive(group);\n const activePanel = this.activePanel;\n if (!this._moving &&\n activePanel !== this._onDidActivePanelChange.value) {\n this._onDidActivePanelChange.fire(activePanel);\n }\n }\n doSetGroupAndPanelActive(group) {\n super.doSetGroupActive(group);\n const activePanel = this.activePanel;\n if (group &&\n this.hasMaximizedGroup() &&\n !this.isMaximizedGroup(group)) {\n this.exitMaximizedGroup();\n }\n if (!this._moving &&\n activePanel !== this._onDidActivePanelChange.value) {\n this._onDidActivePanelChange.fire(activePanel);\n }\n }\n getNextGroupId() {\n let id = this.nextGroupId.next();\n while (this._groups.has(id)) {\n id = this.nextGroupId.next();\n }\n return id;\n }\n createGroup(options) {\n if (!options) {\n options = {};\n }\n let id = options === null || options === void 0 ? void 0 : options.id;\n if (id && this._groups.has(options.id)) {\n console.warn(`Duplicate group id ${options === null || options === void 0 ? void 0 : options.id}. reassigning group id to avoid errors`);\n id = undefined;\n }\n if (!id) {\n id = this.nextGroupId.next();\n while (this._groups.has(id)) {\n id = this.nextGroupId.next();\n }\n }\n const view = new DockviewGroupPanel(this, id, options);\n view.init({ params: {}, accessor: this });\n if (!this._groups.has(view.id)) {\n const disposable = new CompositeDisposable(view.model.onTabDragStart((event) => {\n this._onWillDragPanel.fire(event);\n }), view.model.onGroupDragStart((event) => {\n this._onWillDragGroup.fire(event);\n }), view.model.onMove((event) => {\n const { groupId, itemId, target, index } = event;\n this.moveGroupOrPanel({\n from: { groupId: groupId, panelId: itemId },\n to: {\n group: view,\n position: target,\n index,\n },\n });\n }), view.model.onDidDrop((event) => {\n this._onDidDrop.fire(event);\n }), view.model.onWillDrop((event) => {\n this._onWillDrop.fire(event);\n }), view.model.onWillShowOverlay((event) => {\n if (this.options.disableDnd) {\n event.preventDefault();\n return;\n }\n this._onWillShowOverlay.fire(event);\n }), view.model.onDidAddPanel((event) => {\n if (this._moving) {\n return;\n }\n this._onDidAddPanel.fire(event.panel);\n }), view.model.onDidRemovePanel((event) => {\n if (this._moving) {\n return;\n }\n this._onDidRemovePanel.fire(event.panel);\n }), view.model.onDidActivePanelChange((event) => {\n if (this._moving) {\n return;\n }\n if (event.panel !== this.activePanel) {\n return;\n }\n if (this._onDidActivePanelChange.value !== event.panel) {\n this._onDidActivePanelChange.fire(event.panel);\n }\n }));\n this._groups.set(view.id, { value: view, disposable });\n }\n // TODO: must be called after the above listeners have been setup, not an ideal pattern\n view.initialize();\n return view;\n }\n createPanel(options, group) {\n var _a, _b, _c;\n const contentComponent = options.component;\n const tabComponent = (_a = options.tabComponent) !== null && _a !== void 0 ? _a : this.options.defaultTabComponent;\n const view = new DockviewPanelModel(this, options.id, contentComponent, tabComponent);\n const panel = new DockviewPanel(options.id, this, this._api, group, view, { renderer: options.renderer });\n panel.init({\n title: (_b = options.title) !== null && _b !== void 0 ? _b : options.id,\n params: (_c = options === null || options === void 0 ? void 0 : options.params) !== null && _c !== void 0 ? _c : {},\n });\n return panel;\n }\n createGroupAtLocation(location = [0]) {\n const group = this.createGroup();\n this.doAddGroup(group, location);\n return group;\n }\n findGroup(panel) {\n var _a;\n return (_a = Array.from(this._groups.values()).find((group) => group.value.model.containsPanel(panel))) === null || _a === void 0 ? void 0 : _a.value;\n }\n}\n","import { getRelativeLocation, getGridLocation, } from './gridview';\nimport { tail, sequenceEquals } from '../array';\nimport { CompositeDisposable } from '../lifecycle';\nimport { BaseGrid, toTarget, } from './baseComponentGridview';\nimport { createComponent } from '../panel/componentFactory';\nimport { Emitter } from '../events';\nexport class GridviewComponent extends BaseGrid {\n get orientation() {\n return this.gridview.orientation;\n }\n set orientation(value) {\n this.gridview.orientation = value;\n }\n get options() {\n return this._options;\n }\n get deserializer() {\n return this._deserializer;\n }\n set deserializer(value) {\n this._deserializer = value;\n }\n constructor(options) {\n super({\n parentElement: options.parentElement,\n proportionalLayout: options.proportionalLayout,\n orientation: options.orientation,\n styles: options.styles,\n disableAutoResizing: options.disableAutoResizing,\n });\n this._onDidLayoutfromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\n this._onDidRemoveGroup = new Emitter();\n this.onDidRemoveGroup = this._onDidRemoveGroup.event;\n this._onDidAddGroup = new Emitter();\n this.onDidAddGroup = this._onDidAddGroup.event;\n this._onDidActiveGroupChange = new Emitter();\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\n this._options = options;\n this.addDisposables(this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this.onDidAdd((event) => {\n this._onDidAddGroup.fire(event);\n }), this.onDidRemove((event) => {\n this._onDidRemoveGroup.fire(event);\n }), this.onDidActiveChange((event) => {\n this._onDidActiveGroupChange.fire(event);\n }));\n if (!this.options.components) {\n this.options.components = {};\n }\n if (!this.options.frameworkComponents) {\n this.options.frameworkComponents = {};\n }\n }\n updateOptions(options) {\n const hasOrientationChanged = typeof options.orientation === 'string' &&\n this.gridview.orientation !== options.orientation;\n this._options = Object.assign(Object.assign({}, this.options), options);\n if (hasOrientationChanged) {\n this.gridview.orientation = options.orientation;\n }\n this.layout(this.gridview.width, this.gridview.height, true);\n }\n removePanel(panel) {\n this.removeGroup(panel);\n }\n /**\n * Serialize the current state of the layout\n *\n * @returns A JSON respresentation of the layout\n */\n toJSON() {\n var _a;\n const data = this.gridview.serialize();\n return {\n grid: data,\n activePanel: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,\n };\n }\n setVisible(panel, visible) {\n this.gridview.setViewVisible(getGridLocation(panel.element), visible);\n }\n setActive(panel) {\n this._groups.forEach((value, _key) => {\n value.value.setActive(panel === value.value);\n });\n }\n focus() {\n var _a;\n (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();\n }\n fromJSON(serializedGridview) {\n this.clear();\n const { grid, activePanel } = serializedGridview;\n try {\n const queue = [];\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n this.gridview.deserialize(grid, {\n fromJSON: (node) => {\n var _a, _b;\n const { data } = node;\n const view = createComponent(data.id, data.component, (_a = this.options.components) !== null && _a !== void 0 ? _a : {}, (_b = this.options.frameworkComponents) !== null && _b !== void 0 ? _b : {}, this.options.frameworkComponentFactory\n ? {\n createComponent: this.options.frameworkComponentFactory\n .createComponent,\n }\n : undefined);\n queue.push(() => view.init({\n params: data.params,\n minimumWidth: data.minimumWidth,\n maximumWidth: data.maximumWidth,\n minimumHeight: data.minimumHeight,\n maximumHeight: data.maximumHeight,\n priority: data.priority,\n snap: !!data.snap,\n accessor: this,\n isVisible: node.visible,\n }));\n this._onDidAddGroup.fire(view);\n this.registerPanel(view);\n return view;\n },\n });\n this.layout(width, height, true);\n queue.forEach((f) => f());\n if (typeof activePanel === 'string') {\n const panel = this.getPanel(activePanel);\n if (panel) {\n this.doSetGroupActive(panel);\n }\n }\n }\n catch (err) {\n /**\n * To remove a group we cannot call this.removeGroup(...) since this makes assumptions about\n * the underlying HTMLElement existing in the Gridview.\n */\n for (const group of this.groups) {\n group.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n // fires clean-up events and clears the underlying HTML gridview.\n this.clear();\n /**\n * even though we have cleaned-up we still want to inform the caller of their error\n * and we'll do this through re-throwing the original error since afterall you would\n * expect trying to load a corrupted layout to result in an error and not silently fail...\n */\n throw err;\n }\n this._onDidLayoutfromJSON.fire();\n }\n clear() {\n const hasActiveGroup = this.activeGroup;\n const groups = Array.from(this._groups.values()); // reassign since group panels will mutate\n for (const group of groups) {\n group.disposable.dispose();\n this.doRemoveGroup(group.value, { skipActive: true });\n }\n if (hasActiveGroup) {\n this.doSetGroupActive(undefined);\n }\n this.gridview.clear();\n }\n movePanel(panel, options) {\n var _a;\n let relativeLocation;\n const removedPanel = this.gridview.remove(panel);\n const referenceGroup = (_a = this._groups.get(options.reference)) === null || _a === void 0 ? void 0 : _a.value;\n if (!referenceGroup) {\n throw new Error(`reference group ${options.reference} does not exist`);\n }\n const target = toTarget(options.direction);\n if (target === 'center') {\n throw new Error(`${target} not supported as an option`);\n }\n else {\n const location = getGridLocation(referenceGroup.element);\n relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n }\n this.doAddGroup(removedPanel, relativeLocation, options.size);\n }\n addPanel(options) {\n var _a, _b, _c, _d, _e, _f;\n let relativeLocation = (_a = options.location) !== null && _a !== void 0 ? _a : [0];\n if ((_b = options.position) === null || _b === void 0 ? void 0 : _b.referencePanel) {\n const referenceGroup = (_c = this._groups.get(options.position.referencePanel)) === null || _c === void 0 ? void 0 : _c.value;\n if (!referenceGroup) {\n throw new Error(`reference group ${options.position.referencePanel} does not exist`);\n }\n const target = toTarget(options.position.direction);\n if (target === 'center') {\n throw new Error(`${target} not supported as an option`);\n }\n else {\n const location = getGridLocation(referenceGroup.element);\n relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n }\n }\n const view = createComponent(options.id, options.component, (_d = this.options.components) !== null && _d !== void 0 ? _d : {}, (_e = this.options.frameworkComponents) !== null && _e !== void 0 ? _e : {}, this.options.frameworkComponentFactory\n ? {\n createComponent: this.options.frameworkComponentFactory\n .createComponent,\n }\n : undefined);\n view.init({\n params: (_f = options.params) !== null && _f !== void 0 ? _f : {},\n minimumWidth: options.minimumWidth,\n maximumWidth: options.maximumWidth,\n minimumHeight: options.minimumHeight,\n maximumHeight: options.maximumHeight,\n priority: options.priority,\n snap: !!options.snap,\n accessor: this,\n isVisible: true,\n });\n this.registerPanel(view);\n this.doAddGroup(view, relativeLocation, options.size);\n this.doSetGroupActive(view);\n return view;\n }\n registerPanel(panel) {\n const disposable = new CompositeDisposable(panel.api.onDidFocusChange((event) => {\n if (!event.isFocused) {\n return;\n }\n this._groups.forEach((groupItem) => {\n const group = groupItem.value;\n if (group !== panel) {\n group.setActive(false);\n }\n else {\n group.setActive(true);\n }\n });\n }));\n this._groups.set(panel.id, {\n value: panel,\n disposable,\n });\n }\n moveGroup(referenceGroup, groupId, target) {\n const sourceGroup = this.getPanel(groupId);\n if (!sourceGroup) {\n throw new Error('invalid operation');\n }\n const referenceLocation = getGridLocation(referenceGroup.element);\n const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);\n const [targetParentLocation, to] = tail(targetLocation);\n const sourceLocation = getGridLocation(sourceGroup.element);\n const [sourceParentLocation, from] = tail(sourceLocation);\n if (sequenceEquals(sourceParentLocation, targetParentLocation)) {\n // special case when 'swapping' two views within same grid location\n // if a group has one tab - we are essentially moving the 'group'\n // which is equivalent to swapping two views in this case\n this.gridview.moveView(sourceParentLocation, from, to);\n return;\n }\n // source group will become empty so delete the group\n const targetGroup = this.doRemoveGroup(sourceGroup, {\n skipActive: true,\n skipDispose: true,\n });\n // after deleting the group we need to re-evaulate the ref location\n const updatedReferenceLocation = getGridLocation(referenceGroup.element);\n const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, target);\n this.doAddGroup(targetGroup, location);\n }\n removeGroup(group) {\n super.removeGroup(group);\n }\n dispose() {\n super.dispose();\n this._onDidLayoutfromJSON.dispose();\n }\n}\n","import { CompositeDisposable, MutableDisposable, } from '../lifecycle';\nimport { Orientation, Sizing, Splitview, } from './splitview';\nimport { Emitter } from '../events';\nimport { createComponent } from '../panel/componentFactory';\nimport { Resizable } from '../resizable';\n/**\n * A high-level implementation of splitview that works using 'panels'\n */\nexport class SplitviewComponent extends Resizable {\n get panels() {\n return this.splitview.getViews();\n }\n get options() {\n return this._options;\n }\n get length() {\n return this._panels.size;\n }\n get orientation() {\n return this.splitview.orientation;\n }\n get splitview() {\n return this._splitview;\n }\n set splitview(value) {\n this._splitview = value;\n this._splitviewChangeDisposable.value = new CompositeDisposable(this._splitview.onDidSashEnd(() => {\n this._onDidLayoutChange.fire(undefined);\n }), this._splitview.onDidAddView((e) => this._onDidAddView.fire(e)), this._splitview.onDidRemoveView((e) => this._onDidRemoveView.fire(e)));\n }\n get minimumSize() {\n return this.splitview.minimumSize;\n }\n get maximumSize() {\n return this.splitview.maximumSize;\n }\n get height() {\n return this.splitview.orientation === Orientation.HORIZONTAL\n ? this.splitview.orthogonalSize\n : this.splitview.size;\n }\n get width() {\n return this.splitview.orientation === Orientation.HORIZONTAL\n ? this.splitview.size\n : this.splitview.orthogonalSize;\n }\n constructor(options) {\n super(options.parentElement, options.disableAutoResizing);\n this._splitviewChangeDisposable = new MutableDisposable();\n this._panels = new Map();\n this._onDidLayoutfromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\n this._onDidAddView = new Emitter();\n this.onDidAddView = this._onDidAddView.event;\n this._onDidRemoveView = new Emitter();\n this.onDidRemoveView = this._onDidRemoveView.event;\n this._onDidLayoutChange = new Emitter();\n this.onDidLayoutChange = this._onDidLayoutChange.event;\n this._options = options;\n if (!options.components) {\n options.components = {};\n }\n if (!options.frameworkComponents) {\n options.frameworkComponents = {};\n }\n this.splitview = new Splitview(this.element, options);\n this.addDisposables(this._onDidAddView, this._onDidLayoutfromJSON, this._onDidRemoveView, this._onDidLayoutChange);\n }\n updateOptions(options) {\n const hasOrientationChanged = typeof options.orientation === 'string' &&\n this.options.orientation !== options.orientation;\n this._options = Object.assign(Object.assign({}, this.options), options);\n if (hasOrientationChanged) {\n this.splitview.orientation = options.orientation;\n }\n this.splitview.layout(this.splitview.size, this.splitview.orthogonalSize);\n }\n focus() {\n var _a;\n (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();\n }\n movePanel(from, to) {\n this.splitview.moveView(from, to);\n }\n setVisible(panel, visible) {\n const index = this.panels.indexOf(panel);\n this.splitview.setViewVisible(index, visible);\n }\n setActive(panel, skipFocus) {\n this._activePanel = panel;\n this.panels\n .filter((v) => v !== panel)\n .forEach((v) => {\n v.api._onDidActiveChange.fire({ isActive: false });\n if (!skipFocus) {\n v.focus();\n }\n });\n panel.api._onDidActiveChange.fire({ isActive: true });\n if (!skipFocus) {\n panel.focus();\n }\n }\n removePanel(panel, sizing) {\n const item = this._panels.get(panel.id);\n if (!item) {\n throw new Error(`unknown splitview panel ${panel.id}`);\n }\n item.dispose();\n this._panels.delete(panel.id);\n const index = this.panels.findIndex((_) => _ === panel);\n const removedView = this.splitview.removeView(index, sizing);\n removedView.dispose();\n const panels = this.panels;\n if (panels.length > 0) {\n this.setActive(panels[panels.length - 1]);\n }\n }\n getPanel(id) {\n return this.panels.find((view) => view.id === id);\n }\n addPanel(options) {\n var _a, _b, _c;\n if (this._panels.has(options.id)) {\n throw new Error(`panel ${options.id} already exists`);\n }\n const view = createComponent(options.id, options.component, (_a = this.options.components) !== null && _a !== void 0 ? _a : {}, (_b = this.options.frameworkComponents) !== null && _b !== void 0 ? _b : {}, this.options.frameworkWrapper\n ? {\n createComponent: this.options.frameworkWrapper.createComponent,\n }\n : undefined);\n view.orientation = this.splitview.orientation;\n view.init({\n params: (_c = options.params) !== null && _c !== void 0 ? _c : {},\n minimumSize: options.minimumSize,\n maximumSize: options.maximumSize,\n snap: options.snap,\n priority: options.priority,\n accessor: this,\n });\n const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;\n const index = typeof options.index === 'number' ? options.index : undefined;\n this.splitview.addView(view, size, index);\n this.doAddView(view);\n this.setActive(view);\n return view;\n }\n layout(width, height) {\n const [size, orthogonalSize] = this.splitview.orientation === Orientation.HORIZONTAL\n ? [width, height]\n : [height, width];\n this.splitview.layout(size, orthogonalSize);\n }\n doAddView(view) {\n const disposable = view.api.onDidFocusChange((event) => {\n if (!event.isFocused) {\n return;\n }\n this.setActive(view, true);\n });\n this._panels.set(view.id, disposable);\n }\n toJSON() {\n var _a;\n const views = this.splitview\n .getViews()\n .map((view, i) => {\n const size = this.splitview.getViewSize(i);\n return {\n size,\n data: view.toJSON(),\n snap: !!view.snap,\n priority: view.priority,\n };\n });\n return {\n views,\n activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,\n size: this.splitview.size,\n orientation: this.splitview.orientation,\n };\n }\n fromJSON(serializedSplitview) {\n this.clear();\n const { views, orientation, size, activeView } = serializedSplitview;\n const queue = [];\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n this.splitview = new Splitview(this.element, {\n orientation,\n proportionalLayout: this.options.proportionalLayout,\n descriptor: {\n size,\n views: views.map((view) => {\n var _a, _b;\n const data = view.data;\n if (this._panels.has(data.id)) {\n throw new Error(`panel ${data.id} already exists`);\n }\n const panel = createComponent(data.id, data.component, (_a = this.options.components) !== null && _a !== void 0 ? _a : {}, (_b = this.options.frameworkComponents) !== null && _b !== void 0 ? _b : {}, this.options.frameworkWrapper\n ? {\n createComponent: this.options.frameworkWrapper\n .createComponent,\n }\n : undefined);\n queue.push(() => {\n var _a;\n panel.init({\n params: (_a = data.params) !== null && _a !== void 0 ? _a : {},\n minimumSize: data.minimumSize,\n maximumSize: data.maximumSize,\n snap: view.snap,\n priority: view.priority,\n accessor: this,\n });\n });\n panel.orientation = orientation;\n this.doAddView(panel);\n setTimeout(() => {\n // the original onDidAddView events are missed since they are fired before we can subcribe to them\n this._onDidAddView.fire(panel);\n }, 0);\n return { size: view.size, view: panel };\n }),\n },\n });\n this.layout(width, height);\n queue.forEach((f) => f());\n if (typeof activeView === 'string') {\n const panel = this.getPanel(activeView);\n if (panel) {\n this.setActive(panel);\n }\n }\n this._onDidLayoutfromJSON.fire();\n }\n clear() {\n for (const disposable of this._panels.values()) {\n disposable.dispose();\n }\n this._panels.clear();\n while (this.splitview.length > 0) {\n const view = this.splitview.removeView(0, Sizing.Distribute, true);\n view.dispose();\n }\n }\n dispose() {\n for (const disposable of this._panels.values()) {\n disposable.dispose();\n }\n this._panels.clear();\n const views = this.splitview.getViews();\n this._splitviewChangeDisposable.dispose();\n this.splitview.dispose();\n for (const view of views) {\n view.dispose();\n }\n super.dispose();\n }\n}\n","import { addDisposableListener } from '../events';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nimport { toggleClass } from '../dom';\nimport { createChevronRightButton, createExpandMoreButton } from '../svg';\nexport class DefaultHeader extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor() {\n super();\n this._expandedIcon = createExpandMoreButton();\n this._collapsedIcon = createChevronRightButton();\n this.disposable = new MutableDisposable();\n this.apiRef = { api: null };\n this._element = document.createElement('div');\n this.element.className = 'default-header';\n this._content = document.createElement('span');\n this._expander = document.createElement('div');\n this._expander.className = 'dockview-pane-header-icon';\n this.element.appendChild(this._expander);\n this.element.appendChild(this._content);\n this.addDisposables(addDisposableListener(this._element, 'click', () => {\n var _a;\n (_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.setExpanded(!this.apiRef.api.isExpanded);\n }));\n }\n init(params) {\n this.apiRef.api = params.api;\n this._content.textContent = params.title;\n this.updateIcon();\n this.disposable.value = params.api.onDidExpansionChange(() => {\n this.updateIcon();\n });\n }\n updateIcon() {\n var _a;\n const isExpanded = !!((_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.isExpanded);\n toggleClass(this._expander, 'collapsed', !isExpanded);\n if (isExpanded) {\n if (this._expander.contains(this._collapsedIcon)) {\n this._collapsedIcon.remove();\n }\n if (!this._expander.contains(this._expandedIcon)) {\n this._expander.appendChild(this._expandedIcon);\n }\n }\n else {\n if (this._expander.contains(this._expandedIcon)) {\n this._expandedIcon.remove();\n }\n if (!this._expander.contains(this._collapsedIcon)) {\n this._expander.appendChild(this._collapsedIcon);\n }\n }\n }\n update(_params) {\n //\n }\n dispose() {\n this.disposable.dispose();\n super.dispose();\n }\n}\n","import { PaneviewApi } from '../api/component.api';\nimport { createComponent } from '../panel/componentFactory';\nimport { Emitter } from '../events';\nimport { CompositeDisposable, MutableDisposable, } from '../lifecycle';\nimport { Orientation, Sizing } from '../splitview/splitview';\nimport { Paneview } from './paneview';\nimport { DraggablePaneviewPanel, } from './draggablePaneviewPanel';\nimport { DefaultHeader } from './defaultPaneviewHeader';\nimport { sequentialNumberGenerator } from '../math';\nimport { Resizable } from '../resizable';\nconst nextLayoutId = sequentialNumberGenerator();\nexport class PaneFramework extends DraggablePaneviewPanel {\n constructor(options) {\n super(options.accessor, options.id, options.component, options.headerComponent, options.orientation, options.isExpanded, options.disableDnd);\n this.options = options;\n }\n getBodyComponent() {\n return this.options.body;\n }\n getHeaderComponent() {\n return this.options.header;\n }\n}\nexport class PaneviewComponent extends Resizable {\n get id() {\n return this._id;\n }\n get panels() {\n return this.paneview.getPanes();\n }\n set paneview(value) {\n this._paneview = value;\n this._disposable.value = new CompositeDisposable(this._paneview.onDidChange(() => {\n this._onDidLayoutChange.fire(undefined);\n }), this._paneview.onDidAddView((e) => this._onDidAddView.fire(e)), this._paneview.onDidRemoveView((e) => this._onDidRemoveView.fire(e)));\n }\n get paneview() {\n return this._paneview;\n }\n get minimumSize() {\n return this.paneview.minimumSize;\n }\n get maximumSize() {\n return this.paneview.maximumSize;\n }\n get height() {\n return this.paneview.orientation === Orientation.HORIZONTAL\n ? this.paneview.orthogonalSize\n : this.paneview.size;\n }\n get width() {\n return this.paneview.orientation === Orientation.HORIZONTAL\n ? this.paneview.size\n : this.paneview.orthogonalSize;\n }\n get options() {\n return this._options;\n }\n constructor(options) {\n super(options.parentElement, options.disableAutoResizing);\n this._id = nextLayoutId.next();\n this._disposable = new MutableDisposable();\n this._viewDisposables = new Map();\n this._onDidLayoutfromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\n this._onDidLayoutChange = new Emitter();\n this.onDidLayoutChange = this._onDidLayoutChange.event;\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n this._onDidAddView = new Emitter();\n this.onDidAddView = this._onDidAddView.event;\n this._onDidRemoveView = new Emitter();\n this.onDidRemoveView = this._onDidRemoveView.event;\n this.addDisposables(this._onDidLayoutChange, this._onDidLayoutfromJSON, this._onDidDrop, this._onDidAddView, this._onDidRemoveView);\n this._options = options;\n if (!options.components) {\n options.components = {};\n }\n if (!options.frameworkComponents) {\n options.frameworkComponents = {};\n }\n this.paneview = new Paneview(this.element, {\n // only allow paneview in the vertical orientation for now\n orientation: Orientation.VERTICAL,\n });\n this.addDisposables(this._disposable);\n }\n setVisible(panel, visible) {\n const index = this.panels.indexOf(panel);\n this.paneview.setViewVisible(index, visible);\n }\n focus() {\n //noop\n }\n updateOptions(options) {\n this._options = Object.assign(Object.assign({}, this.options), options);\n }\n addPanel(options) {\n var _a, _b, _c, _d;\n const body = createComponent(options.id, options.component, (_a = this.options.components) !== null && _a !== void 0 ? _a : {}, (_b = this.options.frameworkComponents) !== null && _b !== void 0 ? _b : {}, this.options.frameworkWrapper\n ? {\n createComponent: this.options.frameworkWrapper.body.createComponent,\n }\n : undefined);\n let header;\n if (options.headerComponent) {\n header = createComponent(options.id, options.headerComponent, (_c = this.options.headerComponents) !== null && _c !== void 0 ? _c : {}, this.options.headerframeworkComponents, this.options.frameworkWrapper\n ? {\n createComponent: this.options.frameworkWrapper.header\n .createComponent,\n }\n : undefined);\n }\n else {\n header = new DefaultHeader();\n }\n const view = new PaneFramework({\n id: options.id,\n component: options.component,\n headerComponent: options.headerComponent,\n header,\n body,\n orientation: Orientation.VERTICAL,\n isExpanded: !!options.isExpanded,\n disableDnd: !!this.options.disableDnd,\n accessor: this,\n });\n this.doAddPanel(view);\n const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;\n const index = typeof options.index === 'number' ? options.index : undefined;\n view.init({\n params: (_d = options.params) !== null && _d !== void 0 ? _d : {},\n minimumBodySize: options.minimumBodySize,\n maximumBodySize: options.maximumBodySize,\n isExpanded: options.isExpanded,\n title: options.title,\n containerApi: new PaneviewApi(this),\n accessor: this,\n });\n this.paneview.addPane(view, size, index);\n view.orientation = this.paneview.orientation;\n return view;\n }\n removePanel(panel) {\n const views = this.panels;\n const index = views.findIndex((_) => _ === panel);\n this.paneview.removePane(index);\n this.doRemovePanel(panel);\n }\n movePanel(from, to) {\n this.paneview.moveView(from, to);\n }\n getPanel(id) {\n return this.panels.find((view) => view.id === id);\n }\n layout(width, height) {\n const [size, orthogonalSize] = this.paneview.orientation === Orientation.HORIZONTAL\n ? [width, height]\n : [height, width];\n this.paneview.layout(size, orthogonalSize);\n }\n toJSON() {\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ||\n value === Number.POSITIVE_INFINITY\n ? undefined\n : value;\n const minimum = (value) => (value <= 0 ? undefined : value);\n const views = this.paneview\n .getPanes()\n .map((view, i) => {\n const size = this.paneview.getViewSize(i);\n return {\n size,\n data: view.toJSON(),\n minimumSize: minimum(view.minimumBodySize),\n maximumSize: maximum(view.maximumBodySize),\n expanded: view.isExpanded(),\n };\n });\n return {\n views,\n size: this.paneview.size,\n };\n }\n fromJSON(serializedPaneview) {\n this.clear();\n const { views, size } = serializedPaneview;\n const queue = [];\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n this.paneview = new Paneview(this.element, {\n orientation: Orientation.VERTICAL,\n descriptor: {\n size,\n views: views.map((view) => {\n var _a, _b, _c, _d;\n const data = view.data;\n const body = createComponent(data.id, data.component, (_a = this.options.components) !== null && _a !== void 0 ? _a : {}, (_b = this.options.frameworkComponents) !== null && _b !== void 0 ? _b : {}, this.options.frameworkWrapper\n ? {\n createComponent: this.options.frameworkWrapper.body\n .createComponent,\n }\n : undefined);\n let header;\n if (data.headerComponent) {\n header = createComponent(data.id, data.headerComponent, (_c = this.options.headerComponents) !== null && _c !== void 0 ? _c : {}, (_d = this.options.headerframeworkComponents) !== null && _d !== void 0 ? _d : {}, this.options.frameworkWrapper\n ? {\n createComponent: this.options.frameworkWrapper.header\n .createComponent,\n }\n : undefined);\n }\n else {\n header = new DefaultHeader();\n }\n const panel = new PaneFramework({\n id: data.id,\n component: data.component,\n headerComponent: data.headerComponent,\n header,\n body,\n orientation: Orientation.VERTICAL,\n isExpanded: !!view.expanded,\n disableDnd: !!this.options.disableDnd,\n accessor: this,\n });\n this.doAddPanel(panel);\n queue.push(() => {\n var _a;\n panel.init({\n params: (_a = data.params) !== null && _a !== void 0 ? _a : {},\n minimumBodySize: view.minimumSize,\n maximumBodySize: view.maximumSize,\n title: data.title,\n isExpanded: !!view.expanded,\n containerApi: new PaneviewApi(this),\n accessor: this,\n });\n panel.orientation = this.paneview.orientation;\n });\n setTimeout(() => {\n // the original onDidAddView events are missed since they are fired before we can subcribe to them\n this._onDidAddView.fire(panel);\n }, 0);\n return { size: view.size, view: panel };\n }),\n },\n });\n this.layout(width, height);\n queue.forEach((f) => f());\n this._onDidLayoutfromJSON.fire();\n }\n clear() {\n for (const [_, value] of this._viewDisposables.entries()) {\n value.dispose();\n }\n this._viewDisposables.clear();\n this.paneview.dispose();\n }\n doAddPanel(panel) {\n const disposable = panel.onDidDrop((event) => {\n this._onDidDrop.fire(event);\n });\n this._viewDisposables.set(panel.id, disposable);\n }\n doRemovePanel(panel) {\n const disposable = this._viewDisposables.get(panel.id);\n if (disposable) {\n disposable.dispose();\n this._viewDisposables.delete(panel.id);\n }\n }\n dispose() {\n super.dispose();\n for (const [_, value] of this._viewDisposables.entries()) {\n value.dispose();\n }\n this._viewDisposables.clear();\n this.paneview.dispose();\n }\n}\n","import { BasePanelView, } from '../gridview/basePanelView';\nimport { SplitviewPanelApiImpl } from '../api/splitviewPanelApi';\nimport { Orientation } from './splitview';\nimport { Emitter } from '../events';\nexport class SplitviewPanel extends BasePanelView {\n get priority() {\n return this._priority;\n }\n set orientation(value) {\n this._orientation = value;\n }\n get orientation() {\n return this._orientation;\n }\n get minimumSize() {\n const size = typeof this._minimumSize === 'function'\n ? this._minimumSize()\n : this._minimumSize;\n if (size !== this._evaluatedMinimumSize) {\n this._evaluatedMinimumSize = size;\n this.updateConstraints();\n }\n return size;\n }\n get maximumSize() {\n const size = typeof this._maximumSize === 'function'\n ? this._maximumSize()\n : this._maximumSize;\n if (size !== this._evaluatedMaximumSize) {\n this._evaluatedMaximumSize = size;\n this.updateConstraints();\n }\n return size;\n }\n get snap() {\n return this._snap;\n }\n constructor(id, componentName) {\n super(id, componentName, new SplitviewPanelApiImpl(id));\n this._evaluatedMinimumSize = 0;\n this._evaluatedMaximumSize = Number.POSITIVE_INFINITY;\n this._minimumSize = 0;\n this._maximumSize = Number.POSITIVE_INFINITY;\n this._snap = false;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this.api.initialize(this);\n this.addDisposables(this._onDidChange, this.api.onWillVisibilityChange((event) => {\n const { isVisible } = event;\n const { accessor } = this._params;\n accessor.setVisible(this, isVisible);\n }), this.api.onActiveChange(() => {\n const { accessor } = this._params;\n accessor.setActive(this);\n }), this.api.onDidConstraintsChangeInternal((event) => {\n if (typeof event.minimumSize === 'number' ||\n typeof event.minimumSize === 'function') {\n this._minimumSize = event.minimumSize;\n }\n if (typeof event.maximumSize === 'number' ||\n typeof event.maximumSize === 'function') {\n this._maximumSize = event.maximumSize;\n }\n this.updateConstraints();\n }), this.api.onDidSizeChange((event) => {\n this._onDidChange.fire({ size: event.size });\n }));\n }\n setVisible(isVisible) {\n this.api._onDidVisibilityChange.fire({ isVisible });\n }\n setActive(isActive) {\n this.api._onDidActiveChange.fire({ isActive });\n }\n layout(size, orthogonalSize) {\n const [width, height] = this.orientation === Orientation.HORIZONTAL\n ? [size, orthogonalSize]\n : [orthogonalSize, size];\n super.layout(width, height);\n }\n init(parameters) {\n super.init(parameters);\n this._priority = parameters.priority;\n if (parameters.minimumSize) {\n this._minimumSize = parameters.minimumSize;\n }\n if (parameters.maximumSize) {\n this._maximumSize = parameters.maximumSize;\n }\n if (parameters.snap) {\n this._snap = parameters.snap;\n }\n }\n toJSON() {\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ||\n value === Number.POSITIVE_INFINITY\n ? undefined\n : value;\n const minimum = (value) => (value <= 0 ? undefined : value);\n return Object.assign(Object.assign({}, super.toJSON()), { minimumSize: minimum(this.minimumSize), maximumSize: maximum(this.maximumSize) });\n }\n updateConstraints() {\n this.api._onDidConstraintsChange.fire({\n maximumSize: this._evaluatedMaximumSize,\n minimumSize: this._evaluatedMinimumSize,\n });\n }\n}\n"],"names":["Event","Orientation","SashState","LayoutPriority","Sizing","nextLayoutId","this"],"mappings":"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"}
1
+ {"version":3,"file":"dockview-angular.amd.noStyle.js","sources":["../../dockview-core/dist/esm/dnd/dataTransfer.js","../../dockview-core/dist/esm/events.js","../../dockview-core/dist/esm/lifecycle.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/splitview/options.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/gridview/options.js","../../dockview-core/dist/esm/resizable.js","../../dockview-core/dist/esm/gridview/baseComponentGridview.js","../../dockview-core/dist/esm/api/component.api.js","../../dockview-core/dist/esm/dnd/abstractDragHandler.js","../../dockview-core/dist/esm/dnd/dnd.js","../../dockview-core/dist/esm/dnd/droptarget.js","../../dockview-core/dist/esm/paneview/options.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/dockview/components/panel/content.js","../../dockview-core/dist/esm/dnd/ghost.js","../../dockview-core/dist/esm/dockview/components/tab/tab.js","../../dockview-core/dist/esm/dockview/events.js","../../dockview-core/dist/esm/dnd/groupDragHandler.js","../../dockview-core/dist/esm/dockview/components/titlebar/voidContainer.js","../../dockview-core/dist/esm/scrollbar.js","../../dockview-core/dist/esm/dockview/components/titlebar/tabs.js","../../dockview-core/dist/esm/svg.js","../../dockview-core/dist/esm/dockview/components/titlebar/tabOverflowControl.js","../../dockview-core/dist/esm/dockview/components/titlebar/tabsContainer.js","../../dockview-core/dist/esm/dockview/options.js","../../dockview-core/dist/esm/dockview/dockviewGroupPanelModel.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/theme.js","../../dockview-core/dist/esm/api/dockviewPanelApi.js","../../dockview-core/dist/esm/dockview/dockviewPanel.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/overlay/overlay.js","../../dockview-core/dist/esm/dockview/dockviewFloatingGroupPanel.js","../../dockview-core/dist/esm/constants.js","../../dockview-core/dist/esm/overlay/overlayRenderContainer.js","../../dockview-core/dist/esm/popoutWindow.js","../../dockview-core/dist/esm/dockview/strictEventsSequencing.js","../../dockview-core/dist/esm/dockview/components/popupService.js","../../dockview-core/dist/esm/dnd/dropTargetAnchorContainer.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","../../dockview-core/dist/esm/api/entryPoints.js","../../../node_modules/tslib/tslib.es6.js","../../src/lib/utils/angular-renderer.ts","../../src/lib/gridview/angular-gridview-panel.ts","../../src/lib/splitview/angular-splitview-panel.ts","../../src/lib/paneview/angular-pane-part.ts","../../src/lib/utils/component-factory.ts","../../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js","../../../node_modules/rxjs/dist/esm5/internal/util/lift.js","../../../node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js","../../../node_modules/rxjs/dist/esm5/internal/util/isPromise.js","../../../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","../../../node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","../../../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","../../../node_modules/rxjs/dist/esm5/internal/Subscription.js","../../../node_modules/rxjs/dist/esm5/internal/config.js","../../../node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","../../../node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","../../../node_modules/rxjs/dist/esm5/internal/util/noop.js","../../../node_modules/rxjs/dist/esm5/internal/util/errorContext.js","../../../node_modules/rxjs/dist/esm5/internal/Subscriber.js","../../../node_modules/rxjs/dist/esm5/internal/symbol/observable.js","../../../node_modules/rxjs/dist/esm5/internal/util/identity.js","../../../node_modules/rxjs/dist/esm5/internal/util/pipe.js","../../../node_modules/rxjs/dist/esm5/internal/Observable.js","../../../node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js","../../../node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js","../../../node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js","../../../node_modules/rxjs/dist/esm5/internal/symbol/iterator.js","../../../node_modules/rxjs/dist/esm5/internal/util/isIterable.js","../../../node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js","../../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js","../../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js","../../../node_modules/rxjs/dist/esm5/internal/operators/takeUntil.js","../../src/lib/utils/lifecycle-utils.ts","../../src/lib/dockview/dockview-angular.component.ts","../../src/lib/gridview/gridview-angular.component.ts","../../src/lib/paneview/paneview-angular.component.ts","../../src/lib/splitview/splitview-angular.component.ts","../../src/lib/dockview-angular.module.ts"],"sourcesContent":["class TransferObject {\n}\nexport class PanelTransfer extends TransferObject {\n constructor(viewId, groupId, panelId) {\n super();\n this.viewId = viewId;\n this.groupId = groupId;\n this.panelId = panelId;\n }\n}\nexport class PaneTransfer extends TransferObject {\n constructor(viewId, paneId) {\n super();\n this.viewId = viewId;\n this.paneId = paneId;\n }\n}\n/**\n * A singleton to store transfer data during drag & drop operations that are only valid within the application.\n */\nexport class LocalSelectionTransfer {\n constructor() {\n // protect against external instantiation\n }\n static getInstance() {\n return LocalSelectionTransfer.INSTANCE;\n }\n hasData(proto) {\n return proto && proto === this.proto;\n }\n clearData(proto) {\n if (this.hasData(proto)) {\n this.proto = undefined;\n this.data = undefined;\n }\n }\n getData(proto) {\n if (this.hasData(proto)) {\n return this.data;\n }\n return undefined;\n }\n setData(data, proto) {\n if (proto) {\n this.data = data;\n this.proto = proto;\n }\n }\n}\nLocalSelectionTransfer.INSTANCE = new LocalSelectionTransfer();\nexport function getPanelData() {\n const panelTransfer = LocalSelectionTransfer.getInstance();\n const isPanelEvent = panelTransfer.hasData(PanelTransfer.prototype);\n if (!isPanelEvent) {\n return undefined;\n }\n return panelTransfer.getData(PanelTransfer.prototype)[0];\n}\nexport function getPaneData() {\n const paneTransfer = LocalSelectionTransfer.getInstance();\n const isPanelEvent = paneTransfer.hasData(PaneTransfer.prototype);\n if (!isPanelEvent) {\n return undefined;\n }\n return paneTransfer.getData(PaneTransfer.prototype)[0];\n}\n","export var Event;\n(function (Event) {\n Event.any = (...children) => {\n return (listener) => {\n const disposables = children.map((child) => child(listener));\n return {\n dispose: () => {\n disposables.forEach((d) => {\n d.dispose();\n });\n },\n };\n };\n };\n})(Event || (Event = {}));\nexport class DockviewEvent {\n constructor() {\n this._defaultPrevented = false;\n }\n get defaultPrevented() {\n return this._defaultPrevented;\n }\n preventDefault() {\n this._defaultPrevented = true;\n }\n}\nexport class AcceptableEvent {\n constructor() {\n this._isAccepted = false;\n }\n get isAccepted() {\n return this._isAccepted;\n }\n accept() {\n this._isAccepted = true;\n }\n}\nclass LeakageMonitor {\n constructor() {\n this.events = new Map();\n }\n get size() {\n return this.events.size;\n }\n add(event, stacktrace) {\n this.events.set(event, stacktrace);\n }\n delete(event) {\n this.events.delete(event);\n }\n clear() {\n this.events.clear();\n }\n}\nclass Stacktrace {\n static create() {\n var _a;\n return new Stacktrace((_a = new Error().stack) !== null && _a !== void 0 ? _a : '');\n }\n constructor(value) {\n this.value = value;\n }\n print() {\n console.warn('dockview: stacktrace', this.value);\n }\n}\nclass Listener {\n constructor(callback, stacktrace) {\n this.callback = callback;\n this.stacktrace = stacktrace;\n }\n}\n// relatively simple event emitter taken from https://github.com/microsoft/vscode/blob/master/src/vs/base/common/event.ts\nexport class Emitter {\n static setLeakageMonitorEnabled(isEnabled) {\n if (isEnabled !== Emitter.ENABLE_TRACKING) {\n Emitter.MEMORY_LEAK_WATCHER.clear();\n }\n Emitter.ENABLE_TRACKING = isEnabled;\n }\n get value() {\n return this._last;\n }\n constructor(options) {\n this.options = options;\n this._listeners = [];\n this._disposed = false;\n }\n get event() {\n if (!this._event) {\n this._event = (callback) => {\n var _a;\n if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.replay) && this._last !== undefined) {\n callback(this._last);\n }\n const listener = new Listener(callback, Emitter.ENABLE_TRACKING ? Stacktrace.create() : undefined);\n this._listeners.push(listener);\n return {\n dispose: () => {\n const index = this._listeners.indexOf(listener);\n if (index > -1) {\n this._listeners.splice(index, 1);\n }\n else if (Emitter.ENABLE_TRACKING) {\n // console.warn(\n // `dockview: listener already disposed`,\n // Stacktrace.create().print()\n // );\n }\n },\n };\n };\n if (Emitter.ENABLE_TRACKING) {\n Emitter.MEMORY_LEAK_WATCHER.add(this._event, Stacktrace.create());\n }\n }\n return this._event;\n }\n fire(e) {\n var _a;\n if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.replay) {\n this._last = e;\n }\n for (const listener of this._listeners) {\n listener.callback(e);\n }\n }\n dispose() {\n if (!this._disposed) {\n this._disposed = true;\n if (this._listeners.length > 0) {\n if (Emitter.ENABLE_TRACKING) {\n queueMicrotask(() => {\n var _a;\n // don't check until stack of execution is completed to allow for out-of-order disposals within the same execution block\n for (const listener of this._listeners) {\n console.warn('dockview: stacktrace', (_a = listener.stacktrace) === null || _a === void 0 ? void 0 : _a.print());\n }\n });\n }\n this._listeners = [];\n }\n if (Emitter.ENABLE_TRACKING && this._event) {\n Emitter.MEMORY_LEAK_WATCHER.delete(this._event);\n }\n }\n }\n}\nEmitter.ENABLE_TRACKING = false;\nEmitter.MEMORY_LEAK_WATCHER = new LeakageMonitor();\nexport function addDisposableListener(element, type, listener, options) {\n element.addEventListener(type, listener, options);\n return {\n dispose: () => {\n element.removeEventListener(type, listener, options);\n },\n };\n}\n/**\n *\n * Event Emitter that fires events from a Microtask callback, only one event will fire per event-loop cycle.\n *\n * It's kind of like using an `asapScheduler` in RxJs with additional logic to only fire once per event-loop cycle.\n * This implementation exists to avoid external dependencies.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/queueMicrotask\n * @see https://rxjs.dev/api/index/const/asapScheduler\n */\nexport class AsapEvent {\n constructor() {\n this._onFired = new Emitter();\n this._currentFireCount = 0;\n this._queued = false;\n this.onEvent = (e) => {\n /**\n * when the event is first subscribed to take note of the current fire count\n */\n const fireCountAtTimeOfEventSubscription = this._currentFireCount;\n return this._onFired.event(() => {\n /**\n * if the current fire count is greater than the fire count at event subscription\n * then the event has been fired since we subscribed and it's ok to \"on_next\" the event.\n *\n * if the count is not greater then what we are recieving is an event from the microtask\n * queue that was triggered before we actually subscribed and therfore we should ignore it.\n */\n if (this._currentFireCount > fireCountAtTimeOfEventSubscription) {\n e();\n }\n });\n };\n }\n fire() {\n this._currentFireCount++;\n if (this._queued) {\n return;\n }\n this._queued = true;\n queueMicrotask(() => {\n this._queued = false;\n this._onFired.fire();\n });\n }\n dispose() {\n this._onFired.dispose();\n }\n}\n","export var Disposable;\n(function (Disposable) {\n Disposable.NONE = {\n dispose: () => {\n // noop\n },\n };\n function from(func) {\n return {\n dispose: () => {\n func();\n },\n };\n }\n Disposable.from = from;\n})(Disposable || (Disposable = {}));\nexport class CompositeDisposable {\n get isDisposed() {\n return this._isDisposed;\n }\n constructor(...args) {\n this._isDisposed = false;\n this._disposables = args;\n }\n addDisposables(...args) {\n args.forEach((arg) => this._disposables.push(arg));\n }\n dispose() {\n if (this._isDisposed) {\n return;\n }\n this._isDisposed = true;\n this._disposables.forEach((arg) => arg.dispose());\n this._disposables = [];\n }\n}\nexport class MutableDisposable {\n constructor() {\n this._disposable = Disposable.NONE;\n }\n set value(disposable) {\n if (this._disposable) {\n this._disposable.dispose();\n }\n this._disposable = disposable;\n }\n dispose() {\n if (this._disposable) {\n this._disposable.dispose();\n this._disposable = Disposable.NONE;\n }\n }\n}\n","import { Emitter, addDisposableListener, } from './events';\nimport { CompositeDisposable } from './lifecycle';\nexport class OverflowObserver extends CompositeDisposable {\n constructor(el) {\n super();\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._value = null;\n this.addDisposables(this._onDidChange, watchElementResize(el, (entry) => {\n const hasScrollX = entry.target.scrollWidth > entry.target.clientWidth;\n const hasScrollY = entry.target.scrollHeight > entry.target.clientHeight;\n this._value = { hasScrollX, hasScrollY };\n this._onDidChange.fire(this._value);\n }));\n }\n}\nexport function watchElementResize(element, cb) {\n const observer = new ResizeObserver((entires) => {\n /**\n * Fast browser window resize produces Error: ResizeObserver loop limit exceeded.\n * The error isn't visible in browser console, doesn't affect functionality, but degrades performance.\n * See https://stackoverflow.com/questions/49384120/resizeobserver-loop-limit-exceeded/58701523#58701523\n */\n requestAnimationFrame(() => {\n const firstEntry = entires[0];\n cb(firstEntry);\n });\n });\n observer.observe(element);\n return {\n dispose: () => {\n observer.unobserve(element);\n observer.disconnect();\n },\n };\n}\nexport const removeClasses = (element, ...classes) => {\n for (const classname of classes) {\n if (element.classList.contains(classname)) {\n element.classList.remove(classname);\n }\n }\n};\nexport const addClasses = (element, ...classes) => {\n for (const classname of classes) {\n if (!element.classList.contains(classname)) {\n element.classList.add(classname);\n }\n }\n};\nexport const toggleClass = (element, className, isToggled) => {\n const hasClass = element.classList.contains(className);\n if (isToggled && !hasClass) {\n element.classList.add(className);\n }\n if (!isToggled && hasClass) {\n element.classList.remove(className);\n }\n};\nexport function isAncestor(testChild, testAncestor) {\n while (testChild) {\n if (testChild === testAncestor) {\n return true;\n }\n testChild = testChild.parentNode;\n }\n return false;\n}\nexport function getElementsByTagName(tag, document) {\n return Array.prototype.slice.call(document.querySelectorAll(tag), 0);\n}\nexport function trackFocus(element) {\n return new FocusTracker(element);\n}\n/**\n * Track focus on an element. Ensure tabIndex is set when an HTMLElement is not focusable by default\n */\nclass FocusTracker extends CompositeDisposable {\n constructor(element) {\n super();\n this._onDidFocus = new Emitter();\n this.onDidFocus = this._onDidFocus.event;\n this._onDidBlur = new Emitter();\n this.onDidBlur = this._onDidBlur.event;\n this.addDisposables(this._onDidFocus, this._onDidBlur);\n let hasFocus = isAncestor(document.activeElement, element);\n let loosingFocus = false;\n const onFocus = () => {\n loosingFocus = false;\n if (!hasFocus) {\n hasFocus = true;\n this._onDidFocus.fire();\n }\n };\n const onBlur = () => {\n if (hasFocus) {\n loosingFocus = true;\n window.setTimeout(() => {\n if (loosingFocus) {\n loosingFocus = false;\n hasFocus = false;\n this._onDidBlur.fire();\n }\n }, 0);\n }\n };\n this._refreshStateHandler = () => {\n const currentNodeHasFocus = isAncestor(document.activeElement, element);\n if (currentNodeHasFocus !== hasFocus) {\n if (hasFocus) {\n onBlur();\n }\n else {\n onFocus();\n }\n }\n };\n this.addDisposables(addDisposableListener(element, 'focus', onFocus, true));\n this.addDisposables(addDisposableListener(element, 'blur', onBlur, true));\n }\n refreshState() {\n this._refreshStateHandler();\n }\n}\n// quasi: apparently, but not really; seemingly\nconst QUASI_PREVENT_DEFAULT_KEY = 'dv-quasiPreventDefault';\n// mark an event directly for other listeners to check\nexport function quasiPreventDefault(event) {\n event[QUASI_PREVENT_DEFAULT_KEY] = true;\n}\n// check if this event has been marked\nexport function quasiDefaultPrevented(event) {\n return event[QUASI_PREVENT_DEFAULT_KEY];\n}\nexport function addStyles(document, styleSheetList) {\n const styleSheets = Array.from(styleSheetList);\n for (const styleSheet of styleSheets) {\n if (styleSheet.href) {\n const link = document.createElement('link');\n link.href = styleSheet.href;\n link.type = styleSheet.type;\n link.rel = 'stylesheet';\n document.head.appendChild(link);\n }\n let cssTexts = [];\n try {\n if (styleSheet.cssRules) {\n cssTexts = Array.from(styleSheet.cssRules).map((rule) => rule.cssText);\n }\n }\n catch (err) {\n // security errors (lack of permissions), ignore\n }\n for (const rule of cssTexts) {\n const style = document.createElement('style');\n style.appendChild(document.createTextNode(rule));\n document.head.appendChild(style);\n }\n }\n}\nexport function getDomNodePagePosition(domNode) {\n const { left, top, width, height } = domNode.getBoundingClientRect();\n return {\n left: left + window.scrollX,\n top: top + window.scrollY,\n width: width,\n height: height,\n };\n}\n/**\n * Check whether an element is in the DOM (including the Shadow DOM)\n * @see https://terodox.tech/how-to-tell-if-an-element-is-in-the-dom-including-the-shadow-dom/\n */\nexport function isInDocument(element) {\n let currentElement = element;\n while (currentElement === null || currentElement === void 0 ? void 0 : currentElement.parentNode) {\n if (currentElement.parentNode === document) {\n return true;\n }\n else if (currentElement.parentNode instanceof DocumentFragment) {\n // handle shadow DOMs\n currentElement = currentElement.parentNode.host;\n }\n else {\n currentElement = currentElement.parentNode;\n }\n }\n return false;\n}\nexport function addTestId(element, id) {\n element.setAttribute('data-testid', id);\n}\n/**\n * Should be more efficient than element.querySelectorAll(\"*\") since there\n * is no need to store every element in-memory using this approach\n */\nfunction allTagsNamesInclusiveOfShadowDoms(tagNames) {\n const iframes = [];\n function findIframesInNode(node) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n if (tagNames.includes(node.tagName)) {\n iframes.push(node);\n }\n if (node.shadowRoot) {\n findIframesInNode(node.shadowRoot);\n }\n for (const child of node.children) {\n findIframesInNode(child);\n }\n }\n }\n findIframesInNode(document.documentElement);\n return iframes;\n}\nexport function disableIframePointEvents(rootNode = document) {\n const iframes = allTagsNamesInclusiveOfShadowDoms(['IFRAME', 'WEBVIEW']);\n const original = new WeakMap(); // don't hold onto HTMLElement references longer than required\n for (const iframe of iframes) {\n original.set(iframe, iframe.style.pointerEvents);\n iframe.style.pointerEvents = 'none';\n }\n return {\n release: () => {\n var _a;\n for (const iframe of iframes) {\n iframe.style.pointerEvents = (_a = original.get(iframe)) !== null && _a !== void 0 ? _a : 'auto';\n }\n iframes.splice(0, iframes.length); // don't hold onto HTMLElement references longer than required\n },\n };\n}\nexport function getDockviewTheme(element) {\n function toClassList(element) {\n const list = [];\n for (let i = 0; i < element.classList.length; i++) {\n list.push(element.classList.item(i));\n }\n return list;\n }\n let theme = undefined;\n let parent = element;\n while (parent !== null) {\n theme = toClassList(parent).find((cls) => cls.startsWith('dockview-theme-'));\n if (typeof theme === 'string') {\n break;\n }\n parent = parent.parentElement;\n }\n return theme;\n}\nexport class Classnames {\n constructor(element) {\n this.element = element;\n this._classNames = [];\n }\n setClassNames(classNames) {\n for (const className of this._classNames) {\n toggleClass(this.element, className, false);\n }\n this._classNames = classNames\n .split(' ')\n .filter((v) => v.trim().length > 0);\n for (const className of this._classNames) {\n toggleClass(this.element, className, true);\n }\n }\n}\nconst DEBOUCE_DELAY = 100;\nexport function isChildEntirelyVisibleWithinParent(child, parent) {\n //\n const childPosition = getDomNodePagePosition(child);\n const parentPosition = getDomNodePagePosition(parent);\n if (childPosition.left < parentPosition.left) {\n return false;\n }\n if (childPosition.left + childPosition.width >\n parentPosition.left + parentPosition.width) {\n return false;\n }\n return true;\n}\nexport function onDidWindowMoveEnd(window) {\n const emitter = new Emitter();\n let previousScreenX = window.screenX;\n let previousScreenY = window.screenY;\n let timeout;\n const checkMovement = () => {\n if (window.closed) {\n return;\n }\n const currentScreenX = window.screenX;\n const currentScreenY = window.screenY;\n if (currentScreenX !== previousScreenX ||\n currentScreenY !== previousScreenY) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n emitter.fire();\n }, DEBOUCE_DELAY);\n previousScreenX = currentScreenX;\n previousScreenY = currentScreenY;\n }\n requestAnimationFrame(checkMovement);\n };\n checkMovement();\n return emitter;\n}\nexport function onDidWindowResizeEnd(element, cb) {\n let resizeTimeout;\n const disposable = new CompositeDisposable(addDisposableListener(element, 'resize', () => {\n clearTimeout(resizeTimeout);\n resizeTimeout = setTimeout(() => {\n cb();\n }, DEBOUCE_DELAY);\n }));\n return disposable;\n}\nexport function shiftAbsoluteElementIntoView(element, root, options = { buffer: 10 }) {\n const buffer = options.buffer;\n const rect = element.getBoundingClientRect();\n const rootRect = root.getBoundingClientRect();\n let translateX = 0;\n let translateY = 0;\n const left = rect.left - rootRect.left;\n const top = rect.top - rootRect.top;\n const bottom = rect.bottom - rootRect.bottom;\n const right = rect.right - rootRect.right;\n // Check horizontal overflow\n if (left < buffer) {\n translateX = buffer - left;\n }\n else if (right > buffer) {\n translateX = -buffer - right;\n }\n // Check vertical overflow\n if (top < buffer) {\n translateY = buffer - top;\n }\n else if (bottom > buffer) {\n translateY = -bottom - buffer;\n }\n // Apply the translation if needed\n if (translateX !== 0 || translateY !== 0) {\n element.style.transform = `translate(${translateX}px, ${translateY}px)`;\n }\n}\nexport function findRelativeZIndexParent(el) {\n let tmp = el;\n while (tmp && (tmp.style.zIndex === 'auto' || tmp.style.zIndex === '')) {\n tmp = tmp.parentElement;\n }\n return tmp;\n}\n","export function tail(arr) {\n if (arr.length === 0) {\n throw new Error('Invalid tail call');\n }\n return [arr.slice(0, arr.length - 1), arr[arr.length - 1]];\n}\nexport function last(arr) {\n return arr.length > 0 ? arr[arr.length - 1] : undefined;\n}\nexport function sequenceEquals(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0; i < arr1.length; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Pushes an element to the start of the array, if found.\n */\nexport function pushToStart(arr, value) {\n const index = arr.indexOf(value);\n if (index > -1) {\n arr.splice(index, 1);\n arr.unshift(value);\n }\n}\n/**\n * Pushes an element to the end of the array, if found.\n */\nexport function pushToEnd(arr, value) {\n const index = arr.indexOf(value);\n if (index > -1) {\n arr.splice(index, 1);\n arr.push(value);\n }\n}\nexport function firstIndex(array, fn) {\n for (let i = 0; i < array.length; i++) {\n const element = array[i];\n if (fn(element)) {\n return i;\n }\n }\n return -1;\n}\nexport function remove(array, value) {\n const index = array.findIndex((t) => t === value);\n if (index > -1) {\n array.splice(index, 1);\n return true;\n }\n return false;\n}\n","export const clamp = (value, min, max) => {\n if (min > max) {\n /**\n * caveat: an error should be thrown here if this was a proper `clamp` function but we need to handle\n * cases where `min` > `max` and in those cases return `min`.\n */\n return min;\n }\n return Math.min(max, Math.max(value, min));\n};\nexport const sequentialNumberGenerator = () => {\n let value = 1;\n return { next: () => (value++).toString() };\n};\nexport const range = (from, to) => {\n const result = [];\n if (typeof to !== 'number') {\n to = from;\n from = 0;\n }\n if (from <= to) {\n for (let i = from; i < to; i++) {\n result.push(i);\n }\n }\n else {\n for (let i = from; i > to; i--) {\n result.push(i);\n }\n }\n return result;\n};\n","import { clamp } from '../math';\nexport class ViewItem {\n set size(size) {\n this._size = size;\n }\n get size() {\n return this._size;\n }\n get cachedVisibleSize() {\n return this._cachedVisibleSize;\n }\n get visible() {\n return typeof this._cachedVisibleSize === 'undefined';\n }\n get minimumSize() {\n return this.visible ? this.view.minimumSize : 0;\n }\n get viewMinimumSize() {\n return this.view.minimumSize;\n }\n get maximumSize() {\n return this.visible ? this.view.maximumSize : 0;\n }\n get viewMaximumSize() {\n return this.view.maximumSize;\n }\n get priority() {\n return this.view.priority;\n }\n get snap() {\n return !!this.view.snap;\n }\n set enabled(enabled) {\n this.container.style.pointerEvents = enabled ? '' : 'none';\n }\n constructor(container, view, size, disposable) {\n this.container = container;\n this.view = view;\n this.disposable = disposable;\n this._cachedVisibleSize = undefined;\n if (typeof size === 'number') {\n this._size = size;\n this._cachedVisibleSize = undefined;\n container.classList.add('visible');\n }\n else {\n this._size = 0;\n this._cachedVisibleSize = size.cachedVisibleSize;\n }\n }\n setVisible(visible, size) {\n var _a;\n if (visible === this.visible) {\n return;\n }\n if (visible) {\n this.size = clamp((_a = this._cachedVisibleSize) !== null && _a !== void 0 ? _a : 0, this.viewMinimumSize, this.viewMaximumSize);\n this._cachedVisibleSize = undefined;\n }\n else {\n this._cachedVisibleSize =\n typeof size === 'number' ? size : this.size;\n this.size = 0;\n }\n this.container.classList.toggle('visible', visible);\n if (this.view.setVisible) {\n this.view.setVisible(visible);\n }\n }\n dispose() {\n this.disposable.dispose();\n return this.view;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/splitview\n *--------------------------------------------------------------------------------------------*/\nimport { removeClasses, addClasses, toggleClass, disableIframePointEvents, } from '../dom';\nimport { Emitter } from '../events';\nimport { pushToStart, pushToEnd, firstIndex } from '../array';\nimport { range, clamp } from '../math';\nimport { ViewItem } from './viewItem';\nexport var Orientation;\n(function (Orientation) {\n Orientation[\"HORIZONTAL\"] = \"HORIZONTAL\";\n Orientation[\"VERTICAL\"] = \"VERTICAL\";\n})(Orientation || (Orientation = {}));\nexport var SashState;\n(function (SashState) {\n SashState[SashState[\"MAXIMUM\"] = 0] = \"MAXIMUM\";\n SashState[SashState[\"MINIMUM\"] = 1] = \"MINIMUM\";\n SashState[SashState[\"DISABLED\"] = 2] = \"DISABLED\";\n SashState[SashState[\"ENABLED\"] = 3] = \"ENABLED\";\n})(SashState || (SashState = {}));\nexport var LayoutPriority;\n(function (LayoutPriority) {\n LayoutPriority[\"Low\"] = \"low\";\n LayoutPriority[\"High\"] = \"high\";\n LayoutPriority[\"Normal\"] = \"normal\";\n})(LayoutPriority || (LayoutPriority = {}));\nexport var Sizing;\n(function (Sizing) {\n Sizing.Distribute = { type: 'distribute' };\n function Split(index) {\n return { type: 'split', index };\n }\n Sizing.Split = Split;\n function Invisible(cachedVisibleSize) {\n return { type: 'invisible', cachedVisibleSize };\n }\n Sizing.Invisible = Invisible;\n})(Sizing || (Sizing = {}));\nexport class Splitview {\n get contentSize() {\n return this._contentSize;\n }\n get size() {\n return this._size;\n }\n set size(value) {\n this._size = value;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n set orthogonalSize(value) {\n this._orthogonalSize = value;\n }\n get length() {\n return this.viewItems.length;\n }\n get proportions() {\n return this._proportions ? [...this._proportions] : undefined;\n }\n get orientation() {\n return this._orientation;\n }\n set orientation(value) {\n this._orientation = value;\n const tmp = this.size;\n this.size = this.orthogonalSize;\n this.orthogonalSize = tmp;\n removeClasses(this.element, 'dv-horizontal', 'dv-vertical');\n this.element.classList.add(this.orientation == Orientation.HORIZONTAL\n ? 'dv-horizontal'\n : 'dv-vertical');\n }\n get minimumSize() {\n return this.viewItems.reduce((r, item) => r + item.minimumSize, 0);\n }\n get maximumSize() {\n return this.length === 0\n ? Number.POSITIVE_INFINITY\n : this.viewItems.reduce((r, item) => r + item.maximumSize, 0);\n }\n get startSnappingEnabled() {\n return this._startSnappingEnabled;\n }\n set startSnappingEnabled(startSnappingEnabled) {\n if (this._startSnappingEnabled === startSnappingEnabled) {\n return;\n }\n this._startSnappingEnabled = startSnappingEnabled;\n this.updateSashEnablement();\n }\n get endSnappingEnabled() {\n return this._endSnappingEnabled;\n }\n set endSnappingEnabled(endSnappingEnabled) {\n if (this._endSnappingEnabled === endSnappingEnabled) {\n return;\n }\n this._endSnappingEnabled = endSnappingEnabled;\n this.updateSashEnablement();\n }\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = value;\n toggleClass(this.element, 'dv-splitview-disabled', value);\n }\n get margin() {\n return this._margin;\n }\n set margin(value) {\n this._margin = value;\n toggleClass(this.element, 'dv-splitview-has-margin', value !== 0);\n }\n constructor(container, options) {\n var _a, _b;\n this.container = container;\n this.viewItems = [];\n this.sashes = [];\n this._size = 0;\n this._orthogonalSize = 0;\n this._contentSize = 0;\n this._proportions = undefined;\n this._startSnappingEnabled = true;\n this._endSnappingEnabled = true;\n this._disabled = false;\n this._margin = 0;\n this._onDidSashEnd = new Emitter();\n this.onDidSashEnd = this._onDidSashEnd.event;\n this._onDidAddView = new Emitter();\n this.onDidAddView = this._onDidAddView.event;\n this._onDidRemoveView = new Emitter();\n this.onDidRemoveView = this._onDidRemoveView.event;\n this.resize = (index, delta, sizes = this.viewItems.map((x) => x.size), lowPriorityIndexes, highPriorityIndexes, overloadMinDelta = Number.NEGATIVE_INFINITY, overloadMaxDelta = Number.POSITIVE_INFINITY, snapBefore, snapAfter) => {\n if (index < 0 || index > this.viewItems.length) {\n return 0;\n }\n const upIndexes = range(index, -1);\n const downIndexes = range(index + 1, this.viewItems.length);\n //\n if (highPriorityIndexes) {\n for (const i of highPriorityIndexes) {\n pushToStart(upIndexes, i);\n pushToStart(downIndexes, i);\n }\n }\n if (lowPriorityIndexes) {\n for (const i of lowPriorityIndexes) {\n pushToEnd(upIndexes, i);\n pushToEnd(downIndexes, i);\n }\n }\n //\n const upItems = upIndexes.map((i) => this.viewItems[i]);\n const upSizes = upIndexes.map((i) => sizes[i]);\n //\n const downItems = downIndexes.map((i) => this.viewItems[i]);\n const downSizes = downIndexes.map((i) => sizes[i]);\n //\n const minDeltaUp = upIndexes.reduce((_, i) => _ + this.viewItems[i].minimumSize - sizes[i], 0);\n const maxDeltaUp = upIndexes.reduce((_, i) => _ + this.viewItems[i].maximumSize - sizes[i], 0);\n //\n const maxDeltaDown = downIndexes.length === 0\n ? Number.POSITIVE_INFINITY\n : downIndexes.reduce((_, i) => _ + sizes[i] - this.viewItems[i].minimumSize, 0);\n const minDeltaDown = downIndexes.length === 0\n ? Number.NEGATIVE_INFINITY\n : downIndexes.reduce((_, i) => _ + sizes[i] - this.viewItems[i].maximumSize, 0);\n //\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\n //\n let snapped = false;\n if (snapBefore) {\n const snapView = this.viewItems[snapBefore.index];\n const visible = delta >= snapBefore.limitDelta;\n snapped = visible !== snapView.visible;\n snapView.setVisible(visible, snapBefore.size);\n }\n if (!snapped && snapAfter) {\n const snapView = this.viewItems[snapAfter.index];\n const visible = delta < snapAfter.limitDelta;\n snapped = visible !== snapView.visible;\n snapView.setVisible(visible, snapAfter.size);\n }\n if (snapped) {\n return this.resize(index, delta, sizes, lowPriorityIndexes, highPriorityIndexes, overloadMinDelta, overloadMaxDelta);\n }\n //\n const tentativeDelta = clamp(delta, minDelta, maxDelta);\n let actualDelta = 0;\n //\n let deltaUp = tentativeDelta;\n for (let i = 0; i < upItems.length; i++) {\n const item = upItems[i];\n const size = clamp(upSizes[i] + deltaUp, item.minimumSize, item.maximumSize);\n const viewDelta = size - upSizes[i];\n actualDelta += viewDelta;\n deltaUp -= viewDelta;\n item.size = size;\n }\n //\n let deltaDown = actualDelta;\n for (let i = 0; i < downItems.length; i++) {\n const item = downItems[i];\n const size = clamp(downSizes[i] - deltaDown, item.minimumSize, item.maximumSize);\n const viewDelta = size - downSizes[i];\n deltaDown += viewDelta;\n item.size = size;\n }\n //\n return delta;\n };\n this._orientation = (_a = options.orientation) !== null && _a !== void 0 ? _a : Orientation.VERTICAL;\n this.element = this.createContainer();\n this.margin = (_b = options.margin) !== null && _b !== void 0 ? _b : 0;\n this.proportionalLayout =\n options.proportionalLayout === undefined\n ? true\n : !!options.proportionalLayout;\n this.viewContainer = this.createViewContainer();\n this.sashContainer = this.createSashContainer();\n this.element.appendChild(this.sashContainer);\n this.element.appendChild(this.viewContainer);\n this.container.appendChild(this.element);\n this.style(options.styles);\n // We have an existing set of view, add them now\n if (options.descriptor) {\n this._size = options.descriptor.size;\n options.descriptor.views.forEach((viewDescriptor, index) => {\n const sizing = viewDescriptor.visible === undefined ||\n viewDescriptor.visible\n ? viewDescriptor.size\n : {\n type: 'invisible',\n cachedVisibleSize: viewDescriptor.size,\n };\n const view = viewDescriptor.view;\n this.addView(view, sizing, index, true\n // true skip layout\n );\n });\n // Initialize content size and proportions for first layout\n this._contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n this.saveProportions();\n }\n }\n style(styles) {\n if ((styles === null || styles === void 0 ? void 0 : styles.separatorBorder) === 'transparent') {\n removeClasses(this.element, 'dv-separator-border');\n this.element.style.removeProperty('--dv-separator-border');\n }\n else {\n addClasses(this.element, 'dv-separator-border');\n if (styles === null || styles === void 0 ? void 0 : styles.separatorBorder) {\n this.element.style.setProperty('--dv-separator-border', styles.separatorBorder);\n }\n }\n }\n isViewVisible(index) {\n if (index < 0 || index >= this.viewItems.length) {\n throw new Error('Index out of bounds');\n }\n const viewItem = this.viewItems[index];\n return viewItem.visible;\n }\n setViewVisible(index, visible) {\n if (index < 0 || index >= this.viewItems.length) {\n throw new Error('Index out of bounds');\n }\n const viewItem = this.viewItems[index];\n viewItem.setVisible(visible, viewItem.size);\n this.distributeEmptySpace(index);\n this.layoutViews();\n this.saveProportions();\n }\n getViewSize(index) {\n if (index < 0 || index >= this.viewItems.length) {\n return -1;\n }\n return this.viewItems[index].size;\n }\n resizeView(index, size) {\n if (index < 0 || index >= this.viewItems.length) {\n return;\n }\n const indexes = range(this.viewItems.length).filter((i) => i !== index);\n const lowPriorityIndexes = [\n ...indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low),\n index,\n ];\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n const item = this.viewItems[index];\n size = Math.round(size);\n size = clamp(size, item.minimumSize, Math.min(item.maximumSize, this._size));\n item.size = size;\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\n }\n getViews() {\n return this.viewItems.map((x) => x.view);\n }\n onDidChange(item, size) {\n const index = this.viewItems.indexOf(item);\n if (index < 0 || index >= this.viewItems.length) {\n return;\n }\n size = typeof size === 'number' ? size : item.size;\n size = clamp(size, item.minimumSize, item.maximumSize);\n item.size = size;\n const indexes = range(this.viewItems.length).filter((i) => i !== index);\n const lowPriorityIndexes = [\n ...indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low),\n index,\n ];\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n /**\n * add this view we are changing to the low-index list since we have determined the size\n * here and don't want it changed\n */\n this.relayout([...lowPriorityIndexes, index], highPriorityIndexes);\n }\n addView(view, size = { type: 'distribute' }, index = this.viewItems.length, skipLayout) {\n const container = document.createElement('div');\n container.className = 'dv-view';\n container.appendChild(view.element);\n let viewSize;\n if (typeof size === 'number') {\n viewSize = size;\n }\n else if (size.type === 'split') {\n viewSize = this.getViewSize(size.index) / 2;\n }\n else if (size.type === 'invisible') {\n viewSize = { cachedVisibleSize: size.cachedVisibleSize };\n }\n else {\n viewSize = view.minimumSize;\n }\n const disposable = view.onDidChange((newSize) => this.onDidChange(viewItem, newSize.size));\n const viewItem = new ViewItem(container, view, viewSize, {\n dispose: () => {\n disposable.dispose();\n this.viewContainer.removeChild(container);\n },\n });\n if (index === this.viewItems.length) {\n this.viewContainer.appendChild(container);\n }\n else {\n this.viewContainer.insertBefore(container, this.viewContainer.children.item(index));\n }\n this.viewItems.splice(index, 0, viewItem);\n if (this.viewItems.length > 1) {\n //add sash\n const sash = document.createElement('div');\n sash.className = 'dv-sash';\n const onPointerStart = (event) => {\n for (const item of this.viewItems) {\n item.enabled = false;\n }\n const iframes = disableIframePointEvents();\n const start = this._orientation === Orientation.HORIZONTAL\n ? event.clientX\n : event.clientY;\n const sashIndex = firstIndex(this.sashes, (s) => s.container === sash);\n //\n const sizes = this.viewItems.map((x) => x.size);\n //\n let snapBefore;\n let snapAfter;\n const upIndexes = range(sashIndex, -1);\n const downIndexes = range(sashIndex + 1, this.viewItems.length);\n const minDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].minimumSize - sizes[i]), 0);\n const maxDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].viewMaximumSize - sizes[i]), 0);\n const maxDeltaDown = downIndexes.length === 0\n ? Number.POSITIVE_INFINITY\n : downIndexes.reduce((r, i) => r +\n (sizes[i] - this.viewItems[i].minimumSize), 0);\n const minDeltaDown = downIndexes.length === 0\n ? Number.NEGATIVE_INFINITY\n : downIndexes.reduce((r, i) => r +\n (sizes[i] -\n this.viewItems[i].viewMaximumSize), 0);\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\n if (typeof snapBeforeIndex === 'number') {\n const snappedViewItem = this.viewItems[snapBeforeIndex];\n const halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);\n snapBefore = {\n index: snapBeforeIndex,\n limitDelta: snappedViewItem.visible\n ? minDelta - halfSize\n : minDelta + halfSize,\n size: snappedViewItem.size,\n };\n }\n if (typeof snapAfterIndex === 'number') {\n const snappedViewItem = this.viewItems[snapAfterIndex];\n const halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);\n snapAfter = {\n index: snapAfterIndex,\n limitDelta: snappedViewItem.visible\n ? maxDelta + halfSize\n : maxDelta - halfSize,\n size: snappedViewItem.size,\n };\n }\n const onPointerMove = (event) => {\n const current = this._orientation === Orientation.HORIZONTAL\n ? event.clientX\n : event.clientY;\n const delta = current - start;\n this.resize(sashIndex, delta, sizes, undefined, undefined, minDelta, maxDelta, snapBefore, snapAfter);\n this.distributeEmptySpace();\n this.layoutViews();\n };\n const end = () => {\n for (const item of this.viewItems) {\n item.enabled = true;\n }\n iframes.release();\n this.saveProportions();\n document.removeEventListener('pointermove', onPointerMove);\n document.removeEventListener('pointerup', end);\n document.removeEventListener('pointercancel', end);\n document.removeEventListener('contextmenu', end);\n this._onDidSashEnd.fire(undefined);\n };\n document.addEventListener('pointermove', onPointerMove);\n document.addEventListener('pointerup', end);\n document.addEventListener('pointercancel', end);\n document.addEventListener('contextmenu', end);\n };\n sash.addEventListener('pointerdown', onPointerStart);\n const sashItem = {\n container: sash,\n disposable: () => {\n sash.removeEventListener('pointerdown', onPointerStart);\n this.sashContainer.removeChild(sash);\n },\n };\n this.sashContainer.appendChild(sash);\n this.sashes.push(sashItem);\n }\n if (!skipLayout) {\n this.relayout([index]);\n }\n if (!skipLayout &&\n typeof size !== 'number' &&\n size.type === 'distribute') {\n this.distributeViewSizes();\n }\n this._onDidAddView.fire(view);\n }\n distributeViewSizes() {\n const flexibleViewItems = [];\n let flexibleSize = 0;\n for (const item of this.viewItems) {\n if (item.maximumSize - item.minimumSize > 0) {\n flexibleViewItems.push(item);\n flexibleSize += item.size;\n }\n }\n const size = Math.floor(flexibleSize / flexibleViewItems.length);\n for (const item of flexibleViewItems) {\n item.size = clamp(size, item.minimumSize, item.maximumSize);\n }\n const indexes = range(this.viewItems.length);\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\n }\n removeView(index, sizing, skipLayout = false) {\n // Remove view\n const viewItem = this.viewItems.splice(index, 1)[0];\n viewItem.dispose();\n // Remove sash\n if (this.viewItems.length >= 1) {\n const sashIndex = Math.max(index - 1, 0);\n const sashItem = this.sashes.splice(sashIndex, 1)[0];\n sashItem.disposable();\n }\n if (!skipLayout) {\n this.relayout();\n }\n if (sizing && sizing.type === 'distribute') {\n this.distributeViewSizes();\n }\n this._onDidRemoveView.fire(viewItem.view);\n return viewItem.view;\n }\n getViewCachedVisibleSize(index) {\n if (index < 0 || index >= this.viewItems.length) {\n throw new Error('Index out of bounds');\n }\n const viewItem = this.viewItems[index];\n return viewItem.cachedVisibleSize;\n }\n moveView(from, to) {\n const cachedVisibleSize = this.getViewCachedVisibleSize(from);\n const sizing = typeof cachedVisibleSize === 'undefined'\n ? this.getViewSize(from)\n : Sizing.Invisible(cachedVisibleSize);\n const view = this.removeView(from, undefined, true);\n this.addView(view, sizing, to);\n }\n layout(size, orthogonalSize) {\n const previousSize = Math.max(this.size, this._contentSize);\n this.size = size;\n this.orthogonalSize = orthogonalSize;\n if (!this.proportions) {\n const indexes = range(this.viewItems.length);\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n this.resize(this.viewItems.length - 1, size - previousSize, undefined, lowPriorityIndexes, highPriorityIndexes);\n }\n else {\n let total = 0;\n for (let i = 0; i < this.viewItems.length; i++) {\n const item = this.viewItems[i];\n const proportion = this.proportions[i];\n if (typeof proportion === 'number') {\n total += proportion;\n }\n else {\n size -= item.size;\n }\n }\n for (let i = 0; i < this.viewItems.length; i++) {\n const item = this.viewItems[i];\n const proportion = this.proportions[i];\n if (typeof proportion === 'number' && total > 0) {\n item.size = clamp(Math.round((proportion * size) / total), item.minimumSize, item.maximumSize);\n }\n }\n }\n this.distributeEmptySpace();\n this.layoutViews();\n }\n relayout(lowPriorityIndexes, highPriorityIndexes) {\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n this.resize(this.viewItems.length - 1, this._size - contentSize, undefined, lowPriorityIndexes, highPriorityIndexes);\n this.distributeEmptySpace();\n this.layoutViews();\n this.saveProportions();\n }\n distributeEmptySpace(lowPriorityIndex) {\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n let emptyDelta = this.size - contentSize;\n const indexes = range(this.viewItems.length - 1, -1);\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n for (const index of highPriorityIndexes) {\n pushToStart(indexes, index);\n }\n for (const index of lowPriorityIndexes) {\n pushToEnd(indexes, index);\n }\n if (typeof lowPriorityIndex === 'number') {\n pushToEnd(indexes, lowPriorityIndex);\n }\n for (let i = 0; emptyDelta !== 0 && i < indexes.length; i++) {\n const item = this.viewItems[indexes[i]];\n const size = clamp(item.size + emptyDelta, item.minimumSize, item.maximumSize);\n const viewDelta = size - item.size;\n emptyDelta -= viewDelta;\n item.size = size;\n }\n }\n saveProportions() {\n if (this.proportionalLayout && this._contentSize > 0) {\n this._proportions = this.viewItems.map((i) => i.visible ? i.size / this._contentSize : undefined);\n }\n }\n /**\n * Margin explain:\n *\n * For `n` views in a splitview there will be `n-1` margins `m`.\n *\n * To fit the margins each view must reduce in size by `(m * (n - 1)) / n`.\n *\n * For each view `i` the offet must be adjusted by `m * i/(n - 1)`.\n */\n layoutViews() {\n this._contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n this.updateSashEnablement();\n if (this.viewItems.length === 0) {\n return;\n }\n const visibleViewItems = this.viewItems.filter((i) => i.visible);\n const sashCount = Math.max(0, visibleViewItems.length - 1);\n const marginReducedSize = (this.margin * sashCount) / Math.max(1, visibleViewItems.length);\n let totalLeftOffset = 0;\n const viewLeftOffsets = [];\n const sashWidth = 4; // hardcoded in css\n const runningVisiblePanelCount = this.viewItems.reduce((arr, viewItem, i) => {\n const flag = viewItem.visible ? 1 : 0;\n if (i === 0) {\n arr.push(flag);\n }\n else {\n arr.push(arr[i - 1] + flag);\n }\n return arr;\n }, []);\n // calculate both view and cash positions\n this.viewItems.forEach((view, i) => {\n totalLeftOffset += this.viewItems[i].size;\n viewLeftOffsets.push(totalLeftOffset);\n const size = view.visible ? view.size - marginReducedSize : 0;\n const visiblePanelsBeforeThisView = Math.max(0, runningVisiblePanelCount[i] - 1);\n const offset = i === 0 || visiblePanelsBeforeThisView === 0\n ? 0\n : viewLeftOffsets[i - 1] +\n (visiblePanelsBeforeThisView / sashCount) *\n marginReducedSize;\n if (i < this.viewItems.length - 1) {\n // calculate sash position\n const newSize = view.visible\n ? offset + size - sashWidth / 2 + this.margin / 2\n : offset;\n if (this._orientation === Orientation.HORIZONTAL) {\n this.sashes[i].container.style.left = `${newSize}px`;\n this.sashes[i].container.style.top = `0px`;\n }\n if (this._orientation === Orientation.VERTICAL) {\n this.sashes[i].container.style.left = `0px`;\n this.sashes[i].container.style.top = `${newSize}px`;\n }\n }\n // calculate view position\n if (this._orientation === Orientation.HORIZONTAL) {\n view.container.style.width = `${size}px`;\n view.container.style.left = `${offset}px`;\n view.container.style.top = '';\n view.container.style.height = '';\n }\n if (this._orientation === Orientation.VERTICAL) {\n view.container.style.height = `${size}px`;\n view.container.style.top = `${offset}px`;\n view.container.style.width = '';\n view.container.style.left = '';\n }\n view.view.layout(view.size - marginReducedSize, this._orthogonalSize);\n });\n }\n findFirstSnapIndex(indexes) {\n // visible views first\n for (const index of indexes) {\n const viewItem = this.viewItems[index];\n if (!viewItem.visible) {\n continue;\n }\n if (viewItem.snap) {\n return index;\n }\n }\n // then, hidden views\n for (const index of indexes) {\n const viewItem = this.viewItems[index];\n if (viewItem.visible &&\n viewItem.maximumSize - viewItem.minimumSize > 0) {\n return undefined;\n }\n if (!viewItem.visible && viewItem.snap) {\n return index;\n }\n }\n return undefined;\n }\n updateSashEnablement() {\n let previous = false;\n const collapsesDown = this.viewItems.map((i) => (previous = i.size - i.minimumSize > 0 || previous));\n previous = false;\n const expandsDown = this.viewItems.map((i) => (previous = i.maximumSize - i.size > 0 || previous));\n const reverseViews = [...this.viewItems].reverse();\n previous = false;\n const collapsesUp = reverseViews\n .map((i) => (previous = i.size - i.minimumSize > 0 || previous))\n .reverse();\n previous = false;\n const expandsUp = reverseViews\n .map((i) => (previous = i.maximumSize - i.size > 0 || previous))\n .reverse();\n let position = 0;\n for (let index = 0; index < this.sashes.length; index++) {\n const sash = this.sashes[index];\n const viewItem = this.viewItems[index];\n position += viewItem.size;\n const min = !(collapsesDown[index] && expandsUp[index + 1]);\n const max = !(expandsDown[index] && collapsesUp[index + 1]);\n if (min && max) {\n const upIndexes = range(index, -1);\n const downIndexes = range(index + 1, this.viewItems.length);\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\n const snappedBefore = typeof snapBeforeIndex === 'number' &&\n !this.viewItems[snapBeforeIndex].visible;\n const snappedAfter = typeof snapAfterIndex === 'number' &&\n !this.viewItems[snapAfterIndex].visible;\n if (snappedBefore &&\n collapsesUp[index] &&\n (position > 0 || this.startSnappingEnabled)) {\n this.updateSash(sash, SashState.MINIMUM);\n }\n else if (snappedAfter &&\n collapsesDown[index] &&\n (position < this._contentSize || this.endSnappingEnabled)) {\n this.updateSash(sash, SashState.MAXIMUM);\n }\n else {\n this.updateSash(sash, SashState.DISABLED);\n }\n }\n else if (min && !max) {\n this.updateSash(sash, SashState.MINIMUM);\n }\n else if (!min && max) {\n this.updateSash(sash, SashState.MAXIMUM);\n }\n else {\n this.updateSash(sash, SashState.ENABLED);\n }\n }\n }\n updateSash(sash, state) {\n toggleClass(sash.container, 'dv-disabled', state === SashState.DISABLED);\n toggleClass(sash.container, 'dv-enabled', state === SashState.ENABLED);\n toggleClass(sash.container, 'dv-maximum', state === SashState.MAXIMUM);\n toggleClass(sash.container, 'dv-minimum', state === SashState.MINIMUM);\n }\n createViewContainer() {\n const element = document.createElement('div');\n element.className = 'dv-view-container';\n return element;\n }\n createSashContainer() {\n const element = document.createElement('div');\n element.className = 'dv-sash-container';\n return element;\n }\n createContainer() {\n const element = document.createElement('div');\n const orientationClassname = this._orientation === Orientation.HORIZONTAL\n ? 'dv-horizontal'\n : 'dv-vertical';\n element.className = `dv-split-view-container ${orientationClassname}`;\n return element;\n }\n dispose() {\n this._onDidSashEnd.dispose();\n this._onDidAddView.dispose();\n this._onDidRemoveView.dispose();\n for (let i = 0; i < this.element.children.length; i++) {\n if (this.element.children.item(i) === this.element) {\n this.element.removeChild(this.element);\n break;\n }\n }\n for (const viewItem of this.viewItems) {\n viewItem.dispose();\n }\n this.element.remove();\n }\n}\n","export const PROPERTY_KEYS_SPLITVIEW = (() => {\n /**\n * by readong the keys from an empty value object TypeScript will error\n * when we add or remove new properties to `DockviewOptions`\n */\n const properties = {\n orientation: undefined,\n descriptor: undefined,\n proportionalLayout: undefined,\n styles: undefined,\n margin: undefined,\n disableAutoResizing: undefined,\n className: undefined,\n };\n return Object.keys(properties);\n})();\n","import { Splitview, Orientation, } from '../splitview/splitview';\nimport { CompositeDisposable } from '../lifecycle';\nimport { Emitter } from '../events';\nimport { addClasses, removeClasses } from '../dom';\nexport class Paneview extends CompositeDisposable {\n get onDidAddView() {\n return this.splitview.onDidAddView;\n }\n get onDidRemoveView() {\n return this.splitview.onDidRemoveView;\n }\n get minimumSize() {\n return this.splitview.minimumSize;\n }\n get maximumSize() {\n return this.splitview.maximumSize;\n }\n get orientation() {\n return this.splitview.orientation;\n }\n get size() {\n return this.splitview.size;\n }\n get orthogonalSize() {\n return this.splitview.orthogonalSize;\n }\n constructor(container, options) {\n var _a;\n super();\n this.paneItems = [];\n this.skipAnimation = false;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._orientation = (_a = options.orientation) !== null && _a !== void 0 ? _a : Orientation.VERTICAL;\n this.element = document.createElement('div');\n this.element.className = 'dv-pane-container';\n container.appendChild(this.element);\n this.splitview = new Splitview(this.element, {\n orientation: this._orientation,\n proportionalLayout: false,\n descriptor: options.descriptor,\n });\n // if we've added views from the descriptor we need to\n // add the panes to our Pane array and setup animation\n this.getPanes().forEach((pane) => {\n const disposable = new CompositeDisposable(pane.onDidChangeExpansionState(() => {\n this.setupAnimation();\n this._onDidChange.fire(undefined);\n }));\n const paneItem = {\n pane,\n disposable: {\n dispose: () => {\n disposable.dispose();\n },\n },\n };\n this.paneItems.push(paneItem);\n pane.orthogonalSize = this.splitview.orthogonalSize;\n });\n this.addDisposables(this._onDidChange, this.splitview.onDidSashEnd(() => {\n this._onDidChange.fire(undefined);\n }), this.splitview.onDidAddView(() => {\n this._onDidChange.fire();\n }), this.splitview.onDidRemoveView(() => {\n this._onDidChange.fire();\n }));\n }\n setViewVisible(index, visible) {\n this.splitview.setViewVisible(index, visible);\n }\n addPane(pane, size, index = this.splitview.length, skipLayout = false) {\n const disposable = pane.onDidChangeExpansionState(() => {\n this.setupAnimation();\n this._onDidChange.fire(undefined);\n });\n const paneItem = {\n pane,\n disposable: {\n dispose: () => {\n disposable.dispose();\n },\n },\n };\n this.paneItems.splice(index, 0, paneItem);\n pane.orthogonalSize = this.splitview.orthogonalSize;\n this.splitview.addView(pane, size, index, skipLayout);\n }\n getViewSize(index) {\n return this.splitview.getViewSize(index);\n }\n getPanes() {\n return this.splitview.getViews();\n }\n removePane(index, options = { skipDispose: false }) {\n const paneItem = this.paneItems.splice(index, 1)[0];\n this.splitview.removeView(index);\n if (!options.skipDispose) {\n paneItem.disposable.dispose();\n paneItem.pane.dispose();\n }\n return paneItem;\n }\n moveView(from, to) {\n if (from === to) {\n return;\n }\n const view = this.removePane(from, { skipDispose: true });\n this.skipAnimation = true;\n try {\n this.addPane(view.pane, view.pane.size, to, false);\n }\n finally {\n this.skipAnimation = false;\n }\n }\n layout(size, orthogonalSize) {\n this.splitview.layout(size, orthogonalSize);\n }\n setupAnimation() {\n if (this.skipAnimation) {\n return;\n }\n if (this.animationTimer) {\n clearTimeout(this.animationTimer);\n this.animationTimer = undefined;\n }\n addClasses(this.element, 'dv-animated');\n this.animationTimer = setTimeout(() => {\n this.animationTimer = undefined;\n removeClasses(this.element, 'dv-animated');\n }, 200);\n }\n dispose() {\n super.dispose();\n if (this.animationTimer) {\n clearTimeout(this.animationTimer);\n this.animationTimer = undefined;\n }\n this.paneItems.forEach((paneItem) => {\n paneItem.disposable.dispose();\n paneItem.pane.dispose();\n });\n this.paneItems = [];\n this.splitview.dispose();\n this.element.remove();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\n *--------------------------------------------------------------------------------------------*/\nimport { Orientation } from '../splitview/splitview';\nimport { Emitter } from '../events';\nexport class LeafNode {\n get minimumWidth() {\n return this.view.minimumWidth;\n }\n get maximumWidth() {\n return this.view.maximumWidth;\n }\n get minimumHeight() {\n return this.view.minimumHeight;\n }\n get maximumHeight() {\n return this.view.maximumHeight;\n }\n get priority() {\n return this.view.priority;\n }\n get snap() {\n return this.view.snap;\n }\n get minimumSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumHeight\n : this.minimumWidth;\n }\n get maximumSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumHeight\n : this.maximumWidth;\n }\n get minimumOrthogonalSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumWidth\n : this.minimumHeight;\n }\n get maximumOrthogonalSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumWidth\n : this.maximumHeight;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n get size() {\n return this._size;\n }\n get element() {\n return this.view.element;\n }\n get width() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.orthogonalSize\n : this.size;\n }\n get height() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.size\n : this.orthogonalSize;\n }\n constructor(view, orientation, orthogonalSize, size = 0) {\n this.view = view;\n this.orientation = orientation;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._orthogonalSize = orthogonalSize;\n this._size = size;\n this._disposable = this.view.onDidChange((event) => {\n if (event) {\n this._onDidChange.fire({\n size: this.orientation === Orientation.VERTICAL\n ? event.width\n : event.height,\n orthogonalSize: this.orientation === Orientation.VERTICAL\n ? event.height\n : event.width,\n });\n }\n else {\n this._onDidChange.fire({});\n }\n });\n }\n setVisible(visible) {\n if (this.view.setVisible) {\n this.view.setVisible(visible);\n }\n }\n layout(size, orthogonalSize) {\n this._size = size;\n this._orthogonalSize = orthogonalSize;\n this.view.layout(this.width, this.height);\n }\n dispose() {\n this._onDidChange.dispose();\n this._disposable.dispose();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\n *--------------------------------------------------------------------------------------------*/\nimport { Splitview, Orientation, LayoutPriority, } from '../splitview/splitview';\nimport { Emitter, Event } from '../events';\nimport { LeafNode } from './leafNode';\nimport { CompositeDisposable, Disposable } from '../lifecycle';\nexport class BranchNode extends CompositeDisposable {\n get width() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.size\n : this.orthogonalSize;\n }\n get height() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.orthogonalSize\n : this.size;\n }\n get minimumSize() {\n return this.children.length === 0\n ? 0\n : Math.max(...this.children.map((c, index) => this.splitview.isViewVisible(index)\n ? c.minimumOrthogonalSize\n : 0));\n }\n get maximumSize() {\n return Math.min(...this.children.map((c, index) => this.splitview.isViewVisible(index)\n ? c.maximumOrthogonalSize\n : Number.POSITIVE_INFINITY));\n }\n get minimumOrthogonalSize() {\n return this.splitview.minimumSize;\n }\n get maximumOrthogonalSize() {\n return this.splitview.maximumSize;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n get size() {\n return this._size;\n }\n get minimumWidth() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumOrthogonalSize\n : this.minimumSize;\n }\n get minimumHeight() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumSize\n : this.minimumOrthogonalSize;\n }\n get maximumWidth() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumOrthogonalSize\n : this.maximumSize;\n }\n get maximumHeight() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumSize\n : this.maximumOrthogonalSize;\n }\n get priority() {\n if (this.children.length === 0) {\n return LayoutPriority.Normal;\n }\n const priorities = this.children.map((c) => typeof c.priority === 'undefined'\n ? LayoutPriority.Normal\n : c.priority);\n if (priorities.some((p) => p === LayoutPriority.High)) {\n return LayoutPriority.High;\n }\n else if (priorities.some((p) => p === LayoutPriority.Low)) {\n return LayoutPriority.Low;\n }\n return LayoutPriority.Normal;\n }\n get disabled() {\n return this.splitview.disabled;\n }\n set disabled(value) {\n this.splitview.disabled = value;\n }\n get margin() {\n return this.splitview.margin;\n }\n set margin(value) {\n this.splitview.margin = value;\n this.children.forEach((child) => {\n if (child instanceof BranchNode) {\n child.margin = value;\n }\n });\n }\n constructor(orientation, proportionalLayout, styles, size, orthogonalSize, disabled, margin, childDescriptors) {\n super();\n this.orientation = orientation;\n this.proportionalLayout = proportionalLayout;\n this.styles = styles;\n this._childrenDisposable = Disposable.NONE;\n this.children = [];\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._onDidVisibilityChange = new Emitter();\n this.onDidVisibilityChange = this._onDidVisibilityChange.event;\n this._orthogonalSize = orthogonalSize;\n this._size = size;\n this.element = document.createElement('div');\n this.element.className = 'dv-branch-node';\n if (!childDescriptors) {\n this.splitview = new Splitview(this.element, {\n orientation: this.orientation,\n proportionalLayout,\n styles,\n margin,\n });\n this.splitview.layout(this.size, this.orthogonalSize);\n }\n else {\n const descriptor = {\n views: childDescriptors.map((childDescriptor) => {\n return {\n view: childDescriptor.node,\n size: childDescriptor.node.size,\n visible: childDescriptor.node instanceof LeafNode &&\n childDescriptor.visible !== undefined\n ? childDescriptor.visible\n : true,\n };\n }),\n size: this.orthogonalSize,\n };\n this.children = childDescriptors.map((c) => c.node);\n this.splitview = new Splitview(this.element, {\n orientation: this.orientation,\n descriptor,\n proportionalLayout,\n styles,\n margin,\n });\n }\n this.disabled = disabled;\n this.addDisposables(this._onDidChange, this._onDidVisibilityChange, this.splitview.onDidSashEnd(() => {\n this._onDidChange.fire({});\n }));\n this.setupChildrenEvents();\n }\n setVisible(_visible) {\n // noop\n }\n isChildVisible(index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n return this.splitview.isViewVisible(index);\n }\n setChildVisible(index, visible) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n if (this.splitview.isViewVisible(index) === visible) {\n return;\n }\n const wereAllChildrenHidden = this.splitview.contentSize === 0;\n this.splitview.setViewVisible(index, visible);\n // }\n const areAllChildrenHidden = this.splitview.contentSize === 0;\n // If all children are hidden then the parent should hide the entire splitview\n // If the entire splitview is hidden then the parent should show the splitview when a child is shown\n if ((visible && wereAllChildrenHidden) ||\n (!visible && areAllChildrenHidden)) {\n this._onDidVisibilityChange.fire({ visible });\n }\n }\n moveChild(from, to) {\n if (from === to) {\n return;\n }\n if (from < 0 || from >= this.children.length) {\n throw new Error('Invalid from index');\n }\n if (from < to) {\n to--;\n }\n this.splitview.moveView(from, to);\n const child = this._removeChild(from);\n this._addChild(child, to);\n }\n getChildSize(index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n return this.splitview.getViewSize(index);\n }\n resizeChild(index, size) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n this.splitview.resizeView(index, size);\n }\n layout(size, orthogonalSize) {\n this._size = orthogonalSize;\n this._orthogonalSize = size;\n this.splitview.layout(orthogonalSize, size);\n }\n addChild(node, size, index, skipLayout) {\n if (index < 0 || index > this.children.length) {\n throw new Error('Invalid index');\n }\n this.splitview.addView(node, size, index, skipLayout);\n this._addChild(node, index);\n }\n getChildCachedVisibleSize(index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n return this.splitview.getViewCachedVisibleSize(index);\n }\n removeChild(index, sizing) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n this.splitview.removeView(index, sizing);\n return this._removeChild(index);\n }\n _addChild(node, index) {\n this.children.splice(index, 0, node);\n this.setupChildrenEvents();\n }\n _removeChild(index) {\n const [child] = this.children.splice(index, 1);\n this.setupChildrenEvents();\n return child;\n }\n setupChildrenEvents() {\n this._childrenDisposable.dispose();\n this._childrenDisposable = new CompositeDisposable(Event.any(...this.children.map((c) => c.onDidChange))((e) => {\n /**\n * indicate a change has occured to allows any re-rendering but don't bubble\n * event because that was specific to this branch\n */\n this._onDidChange.fire({ size: e.orthogonalSize });\n }), ...this.children.map((c, i) => {\n if (c instanceof BranchNode) {\n return c.onDidVisibilityChange(({ visible }) => {\n this.setChildVisible(i, visible);\n });\n }\n return Disposable.NONE;\n }));\n }\n dispose() {\n this._childrenDisposable.dispose();\n this.splitview.dispose();\n this.children.forEach((child) => child.dispose());\n super.dispose();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\n *--------------------------------------------------------------------------------------------*/\nimport { Orientation, Sizing, } from '../splitview/splitview';\nimport { tail } from '../array';\nimport { LeafNode } from './leafNode';\nimport { BranchNode } from './branchNode';\nimport { Emitter } from '../events';\nimport { MutableDisposable } from '../lifecycle';\nfunction findLeaf(candiateNode, last) {\n if (candiateNode instanceof LeafNode) {\n return candiateNode;\n }\n if (candiateNode instanceof BranchNode) {\n return findLeaf(candiateNode.children[last ? candiateNode.children.length - 1 : 0], last);\n }\n throw new Error('invalid node');\n}\nfunction cloneNode(node, size, orthogonalSize) {\n if (node instanceof BranchNode) {\n const result = new BranchNode(node.orientation, node.proportionalLayout, node.styles, size, orthogonalSize, node.disabled, node.margin);\n for (let i = node.children.length - 1; i >= 0; i--) {\n const child = node.children[i];\n result.addChild(cloneNode(child, child.size, child.orthogonalSize), child.size, 0, true);\n }\n return result;\n }\n else {\n return new LeafNode(node.view, node.orientation, orthogonalSize);\n }\n}\nfunction flipNode(node, size, orthogonalSize) {\n if (node instanceof BranchNode) {\n const result = new BranchNode(orthogonal(node.orientation), node.proportionalLayout, node.styles, size, orthogonalSize, node.disabled, node.margin);\n let totalSize = 0;\n for (let i = node.children.length - 1; i >= 0; i--) {\n const child = node.children[i];\n const childSize = child instanceof BranchNode ? child.orthogonalSize : child.size;\n let newSize = node.size === 0\n ? 0\n : Math.round((size * childSize) / node.size);\n totalSize += newSize;\n // The last view to add should adjust to rounding errors\n if (i === 0) {\n newSize += size - totalSize;\n }\n result.addChild(flipNode(child, orthogonalSize, newSize), newSize, 0, true);\n }\n return result;\n }\n else {\n return new LeafNode(node.view, orthogonal(node.orientation), orthogonalSize);\n }\n}\nexport function indexInParent(element) {\n const parentElement = element.parentElement;\n if (!parentElement) {\n throw new Error('Invalid grid element');\n }\n let el = parentElement.firstElementChild;\n let index = 0;\n while (el !== element && el !== parentElement.lastElementChild && el) {\n el = el.nextElementSibling;\n index++;\n }\n return index;\n}\n/**\n * Find the grid location of a specific DOM element by traversing the parent\n * chain and finding each child index on the way.\n *\n * This will break as soon as DOM structures of the Splitview or Gridview change.\n */\nexport function getGridLocation(element) {\n const parentElement = element.parentElement;\n if (!parentElement) {\n throw new Error('Invalid grid element');\n }\n if (/\\bdv-grid-view\\b/.test(parentElement.className)) {\n return [];\n }\n const index = indexInParent(parentElement);\n const ancestor = parentElement.parentElement.parentElement.parentElement;\n return [...getGridLocation(ancestor), index];\n}\nexport function getRelativeLocation(rootOrientation, location, direction) {\n const orientation = getLocationOrientation(rootOrientation, location);\n const directionOrientation = getDirectionOrientation(direction);\n if (orientation === directionOrientation) {\n const [rest, _index] = tail(location);\n let index = _index;\n if (direction === 'right' || direction === 'bottom') {\n index += 1;\n }\n return [...rest, index];\n }\n else {\n const index = direction === 'right' || direction === 'bottom' ? 1 : 0;\n return [...location, index];\n }\n}\nexport function getDirectionOrientation(direction) {\n return direction === 'top' || direction === 'bottom'\n ? Orientation.VERTICAL\n : Orientation.HORIZONTAL;\n}\nexport function getLocationOrientation(rootOrientation, location) {\n return location.length % 2 === 0\n ? orthogonal(rootOrientation)\n : rootOrientation;\n}\nexport const orthogonal = (orientation) => orientation === Orientation.HORIZONTAL\n ? Orientation.VERTICAL\n : Orientation.HORIZONTAL;\nexport function isGridBranchNode(node) {\n return !!node.children;\n}\nconst serializeBranchNode = (node, orientation) => {\n const size = orientation === Orientation.VERTICAL ? node.box.width : node.box.height;\n if (!isGridBranchNode(node)) {\n if (typeof node.cachedVisibleSize === 'number') {\n return {\n type: 'leaf',\n data: node.view.toJSON(),\n size: node.cachedVisibleSize,\n visible: false,\n };\n }\n return { type: 'leaf', data: node.view.toJSON(), size };\n }\n return {\n type: 'branch',\n data: node.children.map((c) => serializeBranchNode(c, orthogonal(orientation))),\n size,\n };\n};\nexport class Gridview {\n get length() {\n return this._root ? this._root.children.length : 0;\n }\n get orientation() {\n return this.root.orientation;\n }\n set orientation(orientation) {\n if (this.root.orientation === orientation) {\n return;\n }\n const { size, orthogonalSize } = this.root;\n this.root = flipNode(this.root, orthogonalSize, size);\n this.root.layout(size, orthogonalSize);\n }\n get width() {\n return this.root.width;\n }\n get height() {\n return this.root.height;\n }\n get minimumWidth() {\n return this.root.minimumWidth;\n }\n get minimumHeight() {\n return this.root.minimumHeight;\n }\n get maximumWidth() {\n return this.root.maximumHeight;\n }\n get maximumHeight() {\n return this.root.maximumHeight;\n }\n get locked() {\n return this._locked;\n }\n set locked(value) {\n this._locked = value;\n const branch = [this.root];\n /**\n * simple depth-first-search to cover all nodes\n *\n * @see https://en.wikipedia.org/wiki/Depth-first_search\n */\n while (branch.length > 0) {\n const node = branch.pop();\n if (node instanceof BranchNode) {\n node.disabled = value;\n branch.push(...node.children);\n }\n }\n }\n get margin() {\n return this._margin;\n }\n set margin(value) {\n this._margin = value;\n this.root.margin = value;\n }\n maximizedView() {\n var _a;\n return (_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.leaf.view;\n }\n hasMaximizedView() {\n return this._maximizedNode !== undefined;\n }\n maximizeView(view) {\n var _a;\n const location = getGridLocation(view.element);\n const [_, node] = this.getNode(location);\n if (!(node instanceof LeafNode)) {\n return;\n }\n if (((_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.leaf) === node) {\n return;\n }\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n serializeBranchNode(this.getView(), this.orientation);\n const hiddenOnMaximize = [];\n function hideAllViewsBut(parent, exclude) {\n for (let i = 0; i < parent.children.length; i++) {\n const child = parent.children[i];\n if (child instanceof LeafNode) {\n if (child !== exclude) {\n if (parent.isChildVisible(i)) {\n parent.setChildVisible(i, false);\n }\n else {\n hiddenOnMaximize.push(child);\n }\n }\n }\n else {\n hideAllViewsBut(child, exclude);\n }\n }\n }\n hideAllViewsBut(this.root, node);\n this._maximizedNode = { leaf: node, hiddenOnMaximize };\n this._onDidMaximizedNodeChange.fire({\n view: node.view,\n isMaximized: true,\n });\n }\n exitMaximizedView() {\n if (!this._maximizedNode) {\n return;\n }\n const hiddenOnMaximize = this._maximizedNode.hiddenOnMaximize;\n function showViewsInReverseOrder(parent) {\n for (let index = parent.children.length - 1; index >= 0; index--) {\n const child = parent.children[index];\n if (child instanceof LeafNode) {\n if (!hiddenOnMaximize.includes(child)) {\n parent.setChildVisible(index, true);\n }\n }\n else {\n showViewsInReverseOrder(child);\n }\n }\n }\n showViewsInReverseOrder(this.root);\n const tmp = this._maximizedNode.leaf;\n this._maximizedNode = undefined;\n this._onDidMaximizedNodeChange.fire({\n view: tmp.view,\n isMaximized: false,\n });\n }\n serialize() {\n const maximizedView = this.maximizedView();\n let maxmizedViewLocation;\n if (maximizedView) {\n /**\n * The minimum information we can get away with in order to serialize a maxmized view is it's location within the grid\n * which is represented as a branch of indices\n */\n maxmizedViewLocation = getGridLocation(maximizedView.element);\n }\n if (this.hasMaximizedView()) {\n /**\n * the saved layout cannot be in its maxmized state otherwise all of the underlying\n * view dimensions will be wrong\n *\n * To counteract this we temporaily remove the maximized view to compute the serialized output\n * of the grid before adding back the maxmized view as to not alter the layout from the users\n * perspective when `.toJSON()` is called\n */\n this.exitMaximizedView();\n }\n const root = serializeBranchNode(this.getView(), this.orientation);\n const resullt = {\n root,\n width: this.width,\n height: this.height,\n orientation: this.orientation,\n };\n if (maxmizedViewLocation) {\n resullt.maximizedNode = {\n location: maxmizedViewLocation,\n };\n }\n if (maximizedView) {\n // replace any maximzied view that was removed for serialization purposes\n this.maximizeView(maximizedView);\n }\n return resullt;\n }\n dispose() {\n this.disposable.dispose();\n this._onDidChange.dispose();\n this._onDidMaximizedNodeChange.dispose();\n this._onDidViewVisibilityChange.dispose();\n this.root.dispose();\n this._maximizedNode = undefined;\n this.element.remove();\n }\n clear() {\n const orientation = this.root.orientation;\n this.root = new BranchNode(orientation, this.proportionalLayout, this.styles, this.root.size, this.root.orthogonalSize, this.locked, this.margin);\n }\n deserialize(json, deserializer) {\n const orientation = json.orientation;\n const height = orientation === Orientation.VERTICAL ? json.height : json.width;\n this._deserialize(json.root, orientation, deserializer, height);\n /**\n * The deserialied layout must be positioned through this.layout(...)\n * before any maximizedNode can be positioned\n */\n this.layout(json.width, json.height);\n if (json.maximizedNode) {\n const location = json.maximizedNode.location;\n const [_, node] = this.getNode(location);\n if (!(node instanceof LeafNode)) {\n return;\n }\n this.maximizeView(node.view);\n }\n }\n _deserialize(root, orientation, deserializer, orthogonalSize) {\n this.root = this._deserializeNode(root, orientation, deserializer, orthogonalSize);\n }\n _deserializeNode(node, orientation, deserializer, orthogonalSize) {\n var _a;\n let result;\n if (node.type === 'branch') {\n const serializedChildren = node.data;\n const children = serializedChildren.map((serializedChild) => {\n return {\n node: this._deserializeNode(serializedChild, orthogonal(orientation), deserializer, node.size),\n visible: serializedChild.visible,\n };\n });\n result = new BranchNode(orientation, this.proportionalLayout, this.styles, node.size, // <- orthogonal size - flips at each depth\n orthogonalSize, // <- size - flips at each depth,\n this.locked, this.margin, children);\n }\n else {\n const view = deserializer.fromJSON(node);\n if (typeof node.visible === 'boolean') {\n (_a = view.setVisible) === null || _a === void 0 ? void 0 : _a.call(view, node.visible);\n }\n result = new LeafNode(view, orientation, orthogonalSize, node.size);\n }\n return result;\n }\n get root() {\n return this._root;\n }\n set root(root) {\n const oldRoot = this._root;\n if (oldRoot) {\n oldRoot.dispose();\n this._maximizedNode = undefined;\n this.element.removeChild(oldRoot.element);\n }\n this._root = root;\n this.element.appendChild(this._root.element);\n this.disposable.value = this._root.onDidChange((e) => {\n this._onDidChange.fire(e);\n });\n }\n normalize() {\n if (!this._root) {\n return;\n }\n if (this._root.children.length !== 1) {\n return;\n }\n const oldRoot = this.root;\n // can remove one level of redundant branching if there is only a single child\n const childReference = oldRoot.children[0];\n if (childReference instanceof LeafNode) {\n return;\n }\n oldRoot.element.remove();\n const child = oldRoot.removeChild(0); // Remove child to prevent double disposal\n oldRoot.dispose(); // Dispose old root (won't dispose removed child)\n child.dispose(); // Dispose the removed child\n this._root = cloneNode(childReference, childReference.size, childReference.orthogonalSize);\n this.element.appendChild(this._root.element);\n this.disposable.value = this._root.onDidChange((e) => {\n this._onDidChange.fire(e);\n });\n }\n /**\n * If the root is orientated as a VERTICAL node then nest the existing root within a new HORIZIONTAL root node\n * If the root is orientated as a HORIZONTAL node then nest the existing root within a new VERITCAL root node\n */\n insertOrthogonalSplitviewAtRoot() {\n if (!this._root) {\n return;\n }\n const oldRoot = this.root;\n oldRoot.element.remove();\n this._root = new BranchNode(orthogonal(oldRoot.orientation), this.proportionalLayout, this.styles, this.root.orthogonalSize, this.root.size, this.locked, this.margin);\n if (oldRoot.children.length === 0) {\n // no data so no need to add anything back in\n }\n else if (oldRoot.children.length === 1) {\n // can remove one level of redundant branching if there is only a single child\n const childReference = oldRoot.children[0];\n const child = oldRoot.removeChild(0); // remove to prevent disposal when disposing of unwanted root\n child.dispose();\n oldRoot.dispose();\n this._root.addChild(\n /**\n * the child node will have the same orientation as the new root since\n * we are removing the inbetween node.\n * the entire 'tree' must be flipped recursively to ensure that the orientation\n * flips at each level\n */\n flipNode(childReference, childReference.orthogonalSize, childReference.size), Sizing.Distribute, 0);\n }\n else {\n this._root.addChild(oldRoot, Sizing.Distribute, 0);\n }\n this.element.appendChild(this._root.element);\n this.disposable.value = this._root.onDidChange((e) => {\n this._onDidChange.fire(e);\n });\n }\n next(location) {\n return this.progmaticSelect(location);\n }\n previous(location) {\n return this.progmaticSelect(location, true);\n }\n getView(location) {\n const node = location ? this.getNode(location)[1] : this.root;\n return this._getViews(node, this.orientation);\n }\n _getViews(node, orientation, cachedVisibleSize) {\n const box = { height: node.height, width: node.width };\n if (node instanceof LeafNode) {\n return { box, view: node.view, cachedVisibleSize };\n }\n const children = [];\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n const nodeCachedVisibleSize = node.getChildCachedVisibleSize(i);\n children.push(this._getViews(child, orthogonal(orientation), nodeCachedVisibleSize));\n }\n return { box, children };\n }\n progmaticSelect(location, reverse = false) {\n const [path, node] = this.getNode(location);\n if (!(node instanceof LeafNode)) {\n throw new Error('invalid location');\n }\n for (let i = path.length - 1; i > -1; i--) {\n const n = path[i];\n const l = location[i] || 0;\n const canProgressInCurrentLevel = reverse\n ? l - 1 > -1\n : l + 1 < n.children.length;\n if (canProgressInCurrentLevel) {\n return findLeaf(n.children[reverse ? l - 1 : l + 1], reverse);\n }\n }\n return findLeaf(this.root, reverse);\n }\n constructor(proportionalLayout, styles, orientation, locked, margin) {\n this.proportionalLayout = proportionalLayout;\n this.styles = styles;\n this._locked = false;\n this._margin = 0;\n this._maximizedNode = undefined;\n this.disposable = new MutableDisposable();\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._onDidViewVisibilityChange = new Emitter();\n this.onDidViewVisibilityChange = this._onDidViewVisibilityChange.event;\n this._onDidMaximizedNodeChange = new Emitter();\n this.onDidMaximizedNodeChange = this._onDidMaximizedNodeChange.event;\n this.element = document.createElement('div');\n this.element.className = 'dv-grid-view';\n this._locked = locked !== null && locked !== void 0 ? locked : false;\n this._margin = margin !== null && margin !== void 0 ? margin : 0;\n this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0, this.locked, this.margin);\n }\n isViewVisible(location) {\n const [rest, index] = tail(location);\n const [, parent] = this.getNode(rest);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid from location');\n }\n return parent.isChildVisible(index);\n }\n setViewVisible(location, visible) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [rest, index] = tail(location);\n const [, parent] = this.getNode(rest);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid from location');\n }\n this._onDidViewVisibilityChange.fire();\n parent.setChildVisible(index, visible);\n }\n moveView(parentLocation, from, to) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [, parent] = this.getNode(parentLocation);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid location');\n }\n parent.moveChild(from, to);\n }\n addView(view, size, location) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [rest, index] = tail(location);\n const [pathToParent, parent] = this.getNode(rest);\n if (parent instanceof BranchNode) {\n const node = new LeafNode(view, orthogonal(parent.orientation), parent.orthogonalSize);\n parent.addChild(node, size, index);\n }\n else {\n const [grandParent, ..._] = [...pathToParent].reverse();\n const [parentIndex, ...__] = [...rest].reverse();\n let newSiblingSize = 0;\n const newSiblingCachedVisibleSize = grandParent.getChildCachedVisibleSize(parentIndex);\n if (typeof newSiblingCachedVisibleSize === 'number') {\n newSiblingSize = Sizing.Invisible(newSiblingCachedVisibleSize);\n }\n const child = grandParent.removeChild(parentIndex);\n child.dispose();\n const newParent = new BranchNode(parent.orientation, this.proportionalLayout, this.styles, parent.size, parent.orthogonalSize, this.locked, this.margin);\n grandParent.addChild(newParent, parent.size, parentIndex);\n const newSibling = new LeafNode(parent.view, grandParent.orientation, parent.size);\n newParent.addChild(newSibling, newSiblingSize, 0);\n if (typeof size !== 'number' && size.type === 'split') {\n size = { type: 'split', index: 0 };\n }\n const node = new LeafNode(view, grandParent.orientation, parent.size);\n newParent.addChild(node, size, index);\n }\n }\n remove(view, sizing) {\n const location = getGridLocation(view.element);\n return this.removeView(location, sizing);\n }\n removeView(location, sizing) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [rest, index] = tail(location);\n const [pathToParent, parent] = this.getNode(rest);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid location');\n }\n const nodeToRemove = parent.children[index];\n if (!(nodeToRemove instanceof LeafNode)) {\n throw new Error('Invalid location');\n }\n parent.removeChild(index, sizing);\n nodeToRemove.dispose();\n if (parent.children.length !== 1) {\n return nodeToRemove.view;\n }\n // if the parent has only one child and we know the parent is a BranchNode we can make the tree\n // more efficiently spaced by replacing the parent BranchNode with the child.\n // if that child is a LeafNode then we simply replace the BranchNode with the child otherwise if the child\n // is a BranchNode too we should spread it's children into the grandparent.\n // refer to the remaining child as the sibling\n const sibling = parent.children[0];\n if (pathToParent.length === 0) {\n // if the parent is root\n if (sibling instanceof LeafNode) {\n // if the sibling is a leaf node no action is required\n return nodeToRemove.view;\n }\n // otherwise the sibling is a branch node. since the parent is the root and the root has only one child\n // which is a branch node we can just set this branch node to be the new root node\n // for good housekeeping we'll removing the sibling from it's existing tree\n parent.removeChild(0, sizing);\n // and set that sibling node to be root\n this.root = sibling;\n return nodeToRemove.view;\n }\n // otherwise the parent is apart of a large sub-tree\n const [grandParent, ..._] = [...pathToParent].reverse();\n const [parentIndex, ...__] = [...rest].reverse();\n const isSiblingVisible = parent.isChildVisible(0);\n // either way we need to remove the sibling from it's existing tree\n parent.removeChild(0, sizing);\n // note the sizes of all of the grandparents children\n const sizes = grandParent.children.map((_size, i) => grandParent.getChildSize(i));\n // remove the parent from the grandparent since we are moving the sibling to take the parents place\n // this parent is no longer used and can be disposed of\n grandParent.removeChild(parentIndex, sizing).dispose();\n if (sibling instanceof BranchNode) {\n // replace the parent with the siblings children\n sizes.splice(parentIndex, 1, ...sibling.children.map((c) => c.size));\n // and add those siblings to the grandparent\n for (let i = 0; i < sibling.children.length; i++) {\n const child = sibling.children[i];\n grandParent.addChild(child, child.size, parentIndex + i);\n }\n /**\n * clean down the branch node since we need to dipose of it and\n * when .dispose() it called on a branch it will dispose of any\n * views it is holding onto.\n */\n while (sibling.children.length > 0) {\n sibling.removeChild(0);\n }\n }\n else {\n // otherwise create a new leaf node and add that to the grandparent\n const newSibling = new LeafNode(sibling.view, orthogonal(sibling.orientation), sibling.size);\n const siblingSizing = isSiblingVisible\n ? sibling.orthogonalSize\n : Sizing.Invisible(sibling.orthogonalSize);\n grandParent.addChild(newSibling, siblingSizing, parentIndex);\n }\n // the containing node of the sibling is no longer required and can be disposed of\n sibling.dispose();\n // resize everything\n for (let i = 0; i < sizes.length; i++) {\n grandParent.resizeChild(i, sizes[i]);\n }\n return nodeToRemove.view;\n }\n layout(width, height) {\n const [size, orthogonalSize] = this.root.orientation === Orientation.HORIZONTAL\n ? [height, width]\n : [width, height];\n this.root.layout(size, orthogonalSize);\n }\n getNode(location, node = this.root, path = []) {\n if (location.length === 0) {\n return [path, node];\n }\n if (!(node instanceof BranchNode)) {\n throw new Error('Invalid location');\n }\n const [index, ...rest] = location;\n if (index < 0 || index >= node.children.length) {\n throw new Error('Invalid location');\n }\n const child = node.children[index];\n path.push(node);\n return this.getNode(rest, child, path);\n }\n}\n","export const PROPERTY_KEYS_GRIDVIEW = (() => {\n /**\n * by readong the keys from an empty value object TypeScript will error\n * when we add or remove new properties to `DockviewOptions`\n */\n const properties = {\n disableAutoResizing: undefined,\n proportionalLayout: undefined,\n orientation: undefined,\n hideBorders: undefined,\n className: undefined,\n };\n return Object.keys(properties);\n})();\n","import { isInDocument, watchElementResize } from './dom';\nimport { CompositeDisposable } from './lifecycle';\nexport class Resizable extends CompositeDisposable {\n get element() {\n return this._element;\n }\n get disableResizing() {\n return this._disableResizing;\n }\n set disableResizing(value) {\n this._disableResizing = value;\n }\n constructor(parentElement, disableResizing = false) {\n super();\n this._disableResizing = disableResizing;\n this._element = parentElement;\n this.addDisposables(watchElementResize(this._element, (entry) => {\n if (this.isDisposed) {\n /**\n * resize is delayed through requestAnimationFrame so there is a small chance\n * the component has already been disposed of\n */\n return;\n }\n if (this.disableResizing) {\n return;\n }\n if (!this._element.offsetParent) {\n /**\n * offsetParent === null is equivalent to display: none being set on the element or one\n * of it's parents. In the display: none case the size will become (0, 0) which we do\n * not want to propagate.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetParent\n *\n * You could use checkVisibility() but at the time of writing it's not supported across\n * all Browsers\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/checkVisibility\n */\n return;\n }\n if (!isInDocument(this._element)) {\n /**\n * since the event is dispatched through requestAnimationFrame there is a small chance\n * the component is no longer attached to the DOM, if that is the case the dimensions\n * are mostly likely all zero and meaningless. we should skip this case.\n */\n return;\n }\n const { width, height } = entry.contentRect;\n this.layout(width, height);\n }));\n }\n}\n","import { Emitter, Event, AsapEvent } from '../events';\nimport { getGridLocation, Gridview } from './gridview';\nimport { Disposable } from '../lifecycle';\nimport { sequentialNumberGenerator } from '../math';\nimport { Sizing } from '../splitview/splitview';\nimport { Resizable } from '../resizable';\nimport { Classnames } from '../dom';\nconst nextLayoutId = sequentialNumberGenerator();\nexport function toTarget(direction) {\n switch (direction) {\n case 'left':\n return 'left';\n case 'right':\n return 'right';\n case 'above':\n return 'top';\n case 'below':\n return 'bottom';\n case 'within':\n default:\n return 'center';\n }\n}\nexport class BaseGrid extends Resizable {\n get id() {\n return this._id;\n }\n get size() {\n return this._groups.size;\n }\n get groups() {\n return Array.from(this._groups.values()).map((_) => _.value);\n }\n get width() {\n return this.gridview.width;\n }\n get height() {\n return this.gridview.height;\n }\n get minimumHeight() {\n return this.gridview.minimumHeight;\n }\n get maximumHeight() {\n return this.gridview.maximumHeight;\n }\n get minimumWidth() {\n return this.gridview.minimumWidth;\n }\n get maximumWidth() {\n return this.gridview.maximumWidth;\n }\n get activeGroup() {\n return this._activeGroup;\n }\n get locked() {\n return this.gridview.locked;\n }\n set locked(value) {\n this.gridview.locked = value;\n }\n constructor(container, options) {\n var _a;\n super(document.createElement('div'), options.disableAutoResizing);\n this._id = nextLayoutId.next();\n this._groups = new Map();\n this._onDidRemove = new Emitter();\n this.onDidRemove = this._onDidRemove.event;\n this._onDidAdd = new Emitter();\n this.onDidAdd = this._onDidAdd.event;\n this._onDidMaximizedChange = new Emitter();\n this.onDidMaximizedChange = this._onDidMaximizedChange.event;\n this._onDidActiveChange = new Emitter();\n this.onDidActiveChange = this._onDidActiveChange.event;\n this._bufferOnDidLayoutChange = new AsapEvent();\n this.onDidLayoutChange = this._bufferOnDidLayoutChange.onEvent;\n this._onDidViewVisibilityChangeMicroTaskQueue = new AsapEvent();\n this.onDidViewVisibilityChangeMicroTaskQueue = this._onDidViewVisibilityChangeMicroTaskQueue.onEvent;\n this.element.style.height = '100%';\n this.element.style.width = '100%';\n this._classNames = new Classnames(this.element);\n this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');\n // the container is owned by the third-party, do not modify/delete it\n container.appendChild(this.element);\n this.gridview = new Gridview(!!options.proportionalLayout, options.styles, options.orientation, options.locked, options.margin);\n this.gridview.locked = !!options.locked;\n this.element.appendChild(this.gridview.element);\n this.layout(0, 0, true); // set some elements height/widths\n this.addDisposables(this.gridview.onDidMaximizedNodeChange((event) => {\n this._onDidMaximizedChange.fire({\n panel: event.view,\n isMaximized: event.isMaximized,\n });\n }), this.gridview.onDidViewVisibilityChange(() => this._onDidViewVisibilityChangeMicroTaskQueue.fire()), this.onDidViewVisibilityChangeMicroTaskQueue(() => {\n this.layout(this.width, this.height, true);\n }), Disposable.from(() => {\n var _a;\n (_a = this.element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.element);\n }), this.gridview.onDidChange(() => {\n this._bufferOnDidLayoutChange.fire();\n }), Event.any(this.onDidAdd, this.onDidRemove, this.onDidActiveChange)(() => {\n this._bufferOnDidLayoutChange.fire();\n }), this._onDidMaximizedChange, this._onDidViewVisibilityChangeMicroTaskQueue, this._bufferOnDidLayoutChange);\n }\n setVisible(panel, visible) {\n this.gridview.setViewVisible(getGridLocation(panel.element), visible);\n this._bufferOnDidLayoutChange.fire();\n }\n isVisible(panel) {\n return this.gridview.isViewVisible(getGridLocation(panel.element));\n }\n updateOptions(options) {\n var _a, _b, _c, _d;\n if (typeof options.proportionalLayout === 'boolean') {\n // this.gridview.proportionalLayout = options.proportionalLayout; // not supported\n }\n if (options.orientation) {\n this.gridview.orientation = options.orientation;\n }\n if ('styles' in options) {\n // this.gridview.styles = options.styles; // not supported\n }\n if ('disableResizing' in options) {\n this.disableResizing = (_a = options.disableAutoResizing) !== null && _a !== void 0 ? _a : false;\n }\n if ('locked' in options) {\n this.locked = (_b = options.locked) !== null && _b !== void 0 ? _b : false;\n }\n if ('margin' in options) {\n this.gridview.margin = (_c = options.margin) !== null && _c !== void 0 ? _c : 0;\n }\n if ('className' in options) {\n this._classNames.setClassNames((_d = options.className) !== null && _d !== void 0 ? _d : '');\n }\n }\n maximizeGroup(panel) {\n this.gridview.maximizeView(panel);\n this.doSetGroupActive(panel);\n }\n isMaximizedGroup(panel) {\n return this.gridview.maximizedView() === panel;\n }\n exitMaximizedGroup() {\n this.gridview.exitMaximizedView();\n }\n hasMaximizedGroup() {\n return this.gridview.hasMaximizedView();\n }\n doAddGroup(group, location = [0], size) {\n this.gridview.addView(group, size !== null && size !== void 0 ? size : Sizing.Distribute, location);\n this._onDidAdd.fire(group);\n }\n doRemoveGroup(group, options) {\n if (!this._groups.has(group.id)) {\n throw new Error('invalid operation');\n }\n const item = this._groups.get(group.id);\n const view = this.gridview.remove(group, Sizing.Distribute);\n if (item && !(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n item.disposable.dispose();\n item.value.dispose();\n this._groups.delete(group.id);\n this._onDidRemove.fire(group);\n }\n if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {\n const groups = Array.from(this._groups.values());\n this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);\n }\n return view;\n }\n getPanel(id) {\n var _a;\n return (_a = this._groups.get(id)) === null || _a === void 0 ? void 0 : _a.value;\n }\n doSetGroupActive(group) {\n if (this._activeGroup === group) {\n return;\n }\n if (this._activeGroup) {\n this._activeGroup.setActive(false);\n }\n if (group) {\n group.setActive(true);\n }\n this._activeGroup = group;\n this._onDidActiveChange.fire(group);\n }\n removeGroup(group) {\n this.doRemoveGroup(group);\n }\n moveToNext(options) {\n var _a;\n if (!options) {\n options = {};\n }\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;\n this.doSetGroupActive(next);\n }\n moveToPrevious(options) {\n var _a;\n if (!options) {\n options = {};\n }\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;\n this.doSetGroupActive(next);\n }\n layout(width, height, forceResize) {\n const different = forceResize || width !== this.width || height !== this.height;\n if (!different) {\n return;\n }\n this.gridview.element.style.height = `${height}px`;\n this.gridview.element.style.width = `${width}px`;\n this.gridview.layout(width, height);\n }\n dispose() {\n this._onDidActiveChange.dispose();\n this._onDidAdd.dispose();\n this._onDidRemove.dispose();\n for (const group of this.groups) {\n group.dispose();\n }\n this.gridview.dispose();\n super.dispose();\n }\n}\n","export class SplitviewApi {\n /**\n * The minimum size the component can reach where size is measured in the direction of orientation provided.\n */\n get minimumSize() {\n return this.component.minimumSize;\n }\n /**\n * The maximum size the component can reach where size is measured in the direction of orientation provided.\n */\n get maximumSize() {\n return this.component.maximumSize;\n }\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * The current number of panels.\n */\n get length() {\n return this.component.length;\n }\n /**\n * The current orientation of the component.\n */\n get orientation() {\n return this.component.orientation;\n }\n /**\n * The list of current panels.\n */\n get panels() {\n return this.component.panels;\n }\n /**\n * Invoked after a layout is loaded through the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * Invoked whenever any aspect of the layout changes.\n * If listening to this event it may be worth debouncing ouputs.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked when a view is added.\n */\n get onDidAddView() {\n return this.component.onDidAddView;\n }\n /**\n * Invoked when a view is removed.\n */\n get onDidRemoveView() {\n return this.component.onDidRemoveView;\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Removes an existing panel and optionally provide a `Sizing` method\n * for the subsequent resize.\n */\n removePanel(panel, sizing) {\n this.component.removePanel(panel, sizing);\n }\n /**\n * Focus the component.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Get the reference to a panel given it's `string` id.\n */\n getPanel(id) {\n return this.component.getPanel(id);\n }\n /**\n * Layout the panel with a width and height.\n */\n layout(width, height) {\n return this.component.layout(width, height);\n }\n /**\n * Add a new panel and return the created instance.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Move a panel given it's current and desired index.\n */\n movePanel(from, to) {\n this.component.movePanel(from, to);\n }\n /**\n * Deserialize a layout to built a splitivew.\n */\n fromJSON(data) {\n this.component.fromJSON(data);\n }\n /** Serialize a layout */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Remove all panels and clear the component.\n */\n clear() {\n this.component.clear();\n }\n /**\n * Update configuratable options.\n */\n updateOptions(options) {\n this.component.updateOptions(options);\n }\n /**\n * Release resources and teardown component. Do not call when using framework versions of dockview.\n */\n dispose() {\n this.component.dispose();\n }\n}\nexport class PaneviewApi {\n /**\n * The minimum size the component can reach where size is measured in the direction of orientation provided.\n */\n get minimumSize() {\n return this.component.minimumSize;\n }\n /**\n * The maximum size the component can reach where size is measured in the direction of orientation provided.\n */\n get maximumSize() {\n return this.component.maximumSize;\n }\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * All panel objects.\n */\n get panels() {\n return this.component.panels;\n }\n /**\n * Invoked when any layout change occures, an aggregation of many events.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked after a layout is deserialzied using the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * Invoked when a panel is added. May be called multiple times when moving panels.\n */\n get onDidAddView() {\n return this.component.onDidAddView;\n }\n /**\n * Invoked when a panel is removed. May be called multiple times when moving panels.\n */\n get onDidRemoveView() {\n return this.component.onDidRemoveView;\n }\n /**\n * Invoked when a Drag'n'Drop event occurs that the component was unable to handle. Exposed for custom Drag'n'Drop functionality.\n */\n get onDidDrop() {\n return this.component.onDidDrop;\n }\n get onUnhandledDragOverEvent() {\n return this.component.onUnhandledDragOverEvent;\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Remove a panel given the panel object.\n */\n removePanel(panel) {\n this.component.removePanel(panel);\n }\n /**\n * Get a panel object given a `string` id. May return `undefined`.\n */\n getPanel(id) {\n return this.component.getPanel(id);\n }\n /**\n * Move a panel given it's current and desired index.\n */\n movePanel(from, to) {\n this.component.movePanel(from, to);\n }\n /**\n * Focus the component. Will try to focus an active panel if one exists.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Force resize the component to an exact width and height. Read about auto-resizing before using.\n */\n layout(width, height) {\n this.component.layout(width, height);\n }\n /**\n * Add a panel and return the created object.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Create a component from a serialized object.\n */\n fromJSON(data) {\n this.component.fromJSON(data);\n }\n /**\n * Create a serialized object of the current component.\n */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Reset the component back to an empty and default state.\n */\n clear() {\n this.component.clear();\n }\n /**\n * Update configuratable options.\n */\n updateOptions(options) {\n this.component.updateOptions(options);\n }\n /**\n * Release resources and teardown component. Do not call when using framework versions of dockview.\n */\n dispose() {\n this.component.dispose();\n }\n}\nexport class GridviewApi {\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * Minimum height of the component.\n */\n get minimumHeight() {\n return this.component.minimumHeight;\n }\n /**\n * Maximum height of the component.\n */\n get maximumHeight() {\n return this.component.maximumHeight;\n }\n /**\n * Minimum width of the component.\n */\n get minimumWidth() {\n return this.component.minimumWidth;\n }\n /**\n * Maximum width of the component.\n */\n get maximumWidth() {\n return this.component.maximumWidth;\n }\n /**\n * Invoked when any layout change occures, an aggregation of many events.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked when a panel is added. May be called multiple times when moving panels.\n */\n get onDidAddPanel() {\n return this.component.onDidAddGroup;\n }\n /**\n * Invoked when a panel is removed. May be called multiple times when moving panels.\n */\n get onDidRemovePanel() {\n return this.component.onDidRemoveGroup;\n }\n /**\n * Invoked when the active panel changes. May be undefined if no panel is active.\n */\n get onDidActivePanelChange() {\n return this.component.onDidActiveGroupChange;\n }\n /**\n * Invoked after a layout is deserialzied using the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * All panel objects.\n */\n get panels() {\n return this.component.groups;\n }\n /**\n * Current orientation. Can be changed after initialization.\n */\n get orientation() {\n return this.component.orientation;\n }\n set orientation(value) {\n this.component.updateOptions({ orientation: value });\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Focus the component. Will try to focus an active panel if one exists.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Force resize the component to an exact width and height. Read about auto-resizing before using.\n */\n layout(width, height, force = false) {\n this.component.layout(width, height, force);\n }\n /**\n * Add a panel and return the created object.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Remove a panel given the panel object.\n */\n removePanel(panel, sizing) {\n this.component.removePanel(panel, sizing);\n }\n /**\n * Move a panel in a particular direction relative to another panel.\n */\n movePanel(panel, options) {\n this.component.movePanel(panel, options);\n }\n /**\n * Get a panel object given a `string` id. May return `undefined`.\n */\n getPanel(id) {\n return this.component.getPanel(id);\n }\n /**\n * Create a component from a serialized object.\n */\n fromJSON(data) {\n return this.component.fromJSON(data);\n }\n /**\n * Create a serialized object of the current component.\n */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Reset the component back to an empty and default state.\n */\n clear() {\n this.component.clear();\n }\n updateOptions(options) {\n this.component.updateOptions(options);\n }\n /**\n * Release resources and teardown component. Do not call when using framework versions of dockview.\n */\n dispose() {\n this.component.dispose();\n }\n}\nexport class DockviewApi {\n /**\n * The unique identifier for this instance. Used to manage scope of Drag'n'Drop events.\n */\n get id() {\n return this.component.id;\n }\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * Minimum height of the component.\n */\n get minimumHeight() {\n return this.component.minimumHeight;\n }\n /**\n * Maximum height of the component.\n */\n get maximumHeight() {\n return this.component.maximumHeight;\n }\n /**\n * Minimum width of the component.\n */\n get minimumWidth() {\n return this.component.minimumWidth;\n }\n /**\n * Maximum width of the component.\n */\n get maximumWidth() {\n return this.component.maximumWidth;\n }\n /**\n * Total number of groups.\n */\n get size() {\n return this.component.size;\n }\n /**\n * Total number of panels.\n */\n get totalPanels() {\n return this.component.totalPanels;\n }\n /**\n * Invoked when the active group changes. May be undefined if no group is active.\n */\n get onDidActiveGroupChange() {\n return this.component.onDidActiveGroupChange;\n }\n /**\n * Invoked when a group is added. May be called multiple times when moving groups.\n */\n get onDidAddGroup() {\n return this.component.onDidAddGroup;\n }\n /**\n * Invoked when a group is removed. May be called multiple times when moving groups.\n */\n get onDidRemoveGroup() {\n return this.component.onDidRemoveGroup;\n }\n /**\n * Invoked when the active panel changes. May be undefined if no panel is active.\n */\n get onDidActivePanelChange() {\n return this.component.onDidActivePanelChange;\n }\n /**\n * Invoked when a panel is added. May be called multiple times when moving panels.\n */\n get onDidAddPanel() {\n return this.component.onDidAddPanel;\n }\n /**\n * Invoked when a panel is removed. May be called multiple times when moving panels.\n */\n get onDidRemovePanel() {\n return this.component.onDidRemovePanel;\n }\n get onDidMovePanel() {\n return this.component.onDidMovePanel;\n }\n /**\n * Invoked after a layout is deserialzied using the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * Invoked when any layout change occures, an aggregation of many events.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked when a Drag'n'Drop event occurs that the component was unable to handle. Exposed for custom Drag'n'Drop functionality.\n */\n get onDidDrop() {\n return this.component.onDidDrop;\n }\n /**\n * Invoked when a Drag'n'Drop event occurs but before dockview handles it giving the user an opportunity to intecept and\n * prevent the event from occuring using the standard `preventDefault()` syntax.\n *\n * Preventing certain events may causes unexpected behaviours, use carefully.\n */\n get onWillDrop() {\n return this.component.onWillDrop;\n }\n /**\n * Invoked before an overlay is shown indicating a drop target.\n *\n * Calling `event.preventDefault()` will prevent the overlay being shown and prevent\n * the any subsequent drop event.\n */\n get onWillShowOverlay() {\n return this.component.onWillShowOverlay;\n }\n /**\n * Invoked before a group is dragged.\n *\n * Calling `event.nativeEvent.preventDefault()` will prevent the group drag starting.\n *\n */\n get onWillDragGroup() {\n return this.component.onWillDragGroup;\n }\n /**\n * Invoked before a panel is dragged.\n *\n * Calling `event.nativeEvent.preventDefault()` will prevent the panel drag starting.\n */\n get onWillDragPanel() {\n return this.component.onWillDragPanel;\n }\n get onUnhandledDragOverEvent() {\n return this.component.onUnhandledDragOverEvent;\n }\n get onDidPopoutGroupSizeChange() {\n return this.component.onDidPopoutGroupSizeChange;\n }\n get onDidPopoutGroupPositionChange() {\n return this.component.onDidPopoutGroupPositionChange;\n }\n get onDidOpenPopoutWindowFail() {\n return this.component.onDidOpenPopoutWindowFail;\n }\n /**\n * All panel objects.\n */\n get panels() {\n return this.component.panels;\n }\n /**\n * All group objects.\n */\n get groups() {\n return this.component.groups;\n }\n /**\n * Active panel object.\n */\n get activePanel() {\n return this.component.activePanel;\n }\n /**\n * Active group object.\n */\n get activeGroup() {\n return this.component.activeGroup;\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Focus the component. Will try to focus an active panel if one exists.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Get a panel object given a `string` id. May return `undefined`.\n */\n getPanel(id) {\n return this.component.getGroupPanel(id);\n }\n /**\n * Force resize the component to an exact width and height. Read about auto-resizing before using.\n */\n layout(width, height, force = false) {\n this.component.layout(width, height, force);\n }\n /**\n * Add a panel and return the created object.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Remove a panel given the panel object.\n */\n removePanel(panel) {\n this.component.removePanel(panel);\n }\n /**\n * Add a group and return the created object.\n */\n addGroup(options) {\n return this.component.addGroup(options);\n }\n /**\n * Close all groups and panels.\n */\n closeAllGroups() {\n return this.component.closeAllGroups();\n }\n /**\n * Remove a group and any panels within the group.\n */\n removeGroup(group) {\n this.component.removeGroup(group);\n }\n /**\n * Get a group object given a `string` id. May return undefined.\n */\n getGroup(id) {\n return this.component.getPanel(id);\n }\n /**\n * Add a floating group\n */\n addFloatingGroup(item, options) {\n return this.component.addFloatingGroup(item, options);\n }\n /**\n * Create a component from a serialized object.\n */\n fromJSON(data, options) {\n this.component.fromJSON(data, options);\n }\n /**\n * Create a serialized object of the current component.\n */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Reset the component back to an empty and default state.\n */\n clear() {\n this.component.clear();\n }\n /**\n * Move the focus progmatically to the next panel or group.\n */\n moveToNext(options) {\n this.component.moveToNext(options);\n }\n /**\n * Move the focus progmatically to the previous panel or group.\n */\n moveToPrevious(options) {\n this.component.moveToPrevious(options);\n }\n maximizeGroup(panel) {\n this.component.maximizeGroup(panel.group);\n }\n hasMaximizedGroup() {\n return this.component.hasMaximizedGroup();\n }\n exitMaximizedGroup() {\n this.component.exitMaximizedGroup();\n }\n get onDidMaximizedGroupChange() {\n return this.component.onDidMaximizedGroupChange;\n }\n /**\n * Add a popout group in a new Window\n */\n addPopoutGroup(item, options) {\n return this.component.addPopoutGroup(item, options);\n }\n updateOptions(options) {\n this.component.updateOptions(options);\n }\n /**\n * Release resources and teardown component. Do not call when using framework versions of dockview.\n */\n dispose() {\n this.component.dispose();\n }\n}\n","import { disableIframePointEvents } from '../dom';\nimport { addDisposableListener, Emitter } from '../events';\nimport { CompositeDisposable, MutableDisposable, } from '../lifecycle';\nexport class DragHandler extends CompositeDisposable {\n constructor(el, disabled) {\n super();\n this.el = el;\n this.disabled = disabled;\n this.dataDisposable = new MutableDisposable();\n this.pointerEventsDisposable = new MutableDisposable();\n this._onDragStart = new Emitter();\n this.onDragStart = this._onDragStart.event;\n this.addDisposables(this._onDragStart, this.dataDisposable, this.pointerEventsDisposable);\n this.configure();\n }\n setDisabled(disabled) {\n this.disabled = disabled;\n }\n isCancelled(_event) {\n return false;\n }\n configure() {\n this.addDisposables(this._onDragStart, addDisposableListener(this.el, 'dragstart', (event) => {\n if (event.defaultPrevented || this.isCancelled(event) || this.disabled) {\n event.preventDefault();\n return;\n }\n const iframes = disableIframePointEvents();\n this.pointerEventsDisposable.value = {\n dispose: () => {\n iframes.release();\n },\n };\n this.el.classList.add('dv-dragged');\n setTimeout(() => this.el.classList.remove('dv-dragged'), 0);\n this.dataDisposable.value = this.getData(event);\n this._onDragStart.fire(event);\n if (event.dataTransfer) {\n event.dataTransfer.effectAllowed = 'move';\n const hasData = event.dataTransfer.items.length > 0;\n if (!hasData) {\n /**\n * Although this is not used by dockview many third party dnd libraries will check\n * dataTransfer.types to determine valid drag events.\n *\n * For example: in react-dnd if dataTransfer.types is not set then the dragStart event will be cancelled\n * through .preventDefault(). Since this is applied globally to all drag events this would break dockviews\n * dnd logic. You can see the code at\n P * https://github.com/react-dnd/react-dnd/blob/main/packages/backend-html5/src/HTML5BackendImpl.ts#L542\n */\n event.dataTransfer.setData('text/plain', '');\n }\n }\n }), addDisposableListener(this.el, 'dragend', () => {\n this.pointerEventsDisposable.dispose();\n setTimeout(() => {\n this.dataDisposable.dispose(); // allow the data to be read by other handlers before disposing\n }, 0);\n }));\n }\n}\n","import { addDisposableListener } from '../events';\nimport { CompositeDisposable } from '../lifecycle';\nexport class DragAndDropObserver extends CompositeDisposable {\n constructor(element, callbacks) {\n super();\n this.element = element;\n this.callbacks = callbacks;\n this.target = null;\n this.registerListeners();\n }\n onDragEnter(e) {\n this.target = e.target;\n this.callbacks.onDragEnter(e);\n }\n onDragOver(e) {\n e.preventDefault(); // needed so that the drop event fires (https://stackoverflow.com/questions/21339924/drop-event-not-firing-in-chrome)\n if (this.callbacks.onDragOver) {\n this.callbacks.onDragOver(e);\n }\n }\n onDragLeave(e) {\n if (this.target === e.target) {\n this.target = null;\n this.callbacks.onDragLeave(e);\n }\n }\n onDragEnd(e) {\n this.target = null;\n this.callbacks.onDragEnd(e);\n }\n onDrop(e) {\n this.callbacks.onDrop(e);\n }\n registerListeners() {\n this.addDisposables(addDisposableListener(this.element, 'dragenter', (e) => {\n this.onDragEnter(e);\n }, true));\n this.addDisposables(addDisposableListener(this.element, 'dragover', (e) => {\n this.onDragOver(e);\n }, true));\n this.addDisposables(addDisposableListener(this.element, 'dragleave', (e) => {\n this.onDragLeave(e);\n }));\n this.addDisposables(addDisposableListener(this.element, 'dragend', (e) => {\n this.onDragEnd(e);\n }));\n this.addDisposables(addDisposableListener(this.element, 'drop', (e) => {\n this.onDrop(e);\n }));\n }\n}\n","import { toggleClass } from '../dom';\nimport { DockviewEvent, Emitter } from '../events';\nimport { CompositeDisposable } from '../lifecycle';\nimport { DragAndDropObserver } from './dnd';\nimport { clamp } from '../math';\nfunction setGPUOptimizedBounds(element, bounds) {\n const { top, left, width, height } = bounds;\n const topPx = `${Math.round(top)}px`;\n const leftPx = `${Math.round(left)}px`;\n const widthPx = `${Math.round(width)}px`;\n const heightPx = `${Math.round(height)}px`;\n // Use traditional positioning but maintain GPU layer\n element.style.top = topPx;\n element.style.left = leftPx;\n element.style.width = widthPx;\n element.style.height = heightPx;\n element.style.visibility = 'visible';\n // Ensure GPU layer is maintained\n if (!element.style.transform || element.style.transform === '') {\n element.style.transform = 'translate3d(0, 0, 0)';\n }\n}\nfunction setGPUOptimizedBoundsFromStrings(element, bounds) {\n const { top, left, width, height } = bounds;\n // Use traditional positioning but maintain GPU layer\n element.style.top = top;\n element.style.left = left;\n element.style.width = width;\n element.style.height = height;\n element.style.visibility = 'visible';\n // Ensure GPU layer is maintained\n if (!element.style.transform || element.style.transform === '') {\n element.style.transform = 'translate3d(0, 0, 0)';\n }\n}\nfunction checkBoundsChanged(element, bounds) {\n const { top, left, width, height } = bounds;\n const topPx = `${Math.round(top)}px`;\n const leftPx = `${Math.round(left)}px`;\n const widthPx = `${Math.round(width)}px`;\n const heightPx = `${Math.round(height)}px`;\n // Check if position or size changed (back to traditional method)\n return element.style.top !== topPx ||\n element.style.left !== leftPx ||\n element.style.width !== widthPx ||\n element.style.height !== heightPx;\n}\nexport class WillShowOverlayEvent extends DockviewEvent {\n get nativeEvent() {\n return this.options.nativeEvent;\n }\n get position() {\n return this.options.position;\n }\n constructor(options) {\n super();\n this.options = options;\n }\n}\nexport function directionToPosition(direction) {\n switch (direction) {\n case 'above':\n return 'top';\n case 'below':\n return 'bottom';\n case 'left':\n return 'left';\n case 'right':\n return 'right';\n case 'within':\n return 'center';\n default:\n throw new Error(`invalid direction '${direction}'`);\n }\n}\nexport function positionToDirection(position) {\n switch (position) {\n case 'top':\n return 'above';\n case 'bottom':\n return 'below';\n case 'left':\n return 'left';\n case 'right':\n return 'right';\n case 'center':\n return 'within';\n default:\n throw new Error(`invalid position '${position}'`);\n }\n}\nconst DEFAULT_ACTIVATION_SIZE = {\n value: 20,\n type: 'percentage',\n};\nconst DEFAULT_SIZE = {\n value: 50,\n type: 'percentage',\n};\nconst SMALL_WIDTH_BOUNDARY = 100;\nconst SMALL_HEIGHT_BOUNDARY = 100;\nexport class Droptarget extends CompositeDisposable {\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = value;\n }\n get state() {\n return this._state;\n }\n constructor(element, options) {\n super();\n this.element = element;\n this.options = options;\n this._onDrop = new Emitter();\n this.onDrop = this._onDrop.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._disabled = false;\n // use a set to take advantage of #<set>.has\n this._acceptedTargetZonesSet = new Set(this.options.acceptedTargetZones);\n this.dnd = new DragAndDropObserver(this.element, {\n onDragEnter: () => {\n var _a, _b, _c;\n (_c = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a)) === null || _c === void 0 ? void 0 : _c.getElements();\n },\n onDragOver: (e) => {\n var _a, _b, _c, _d, _e, _f, _g;\n Droptarget.ACTUAL_TARGET = this;\n const overrideTarget = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);\n if (this._acceptedTargetZonesSet.size === 0) {\n if (overrideTarget) {\n return;\n }\n this.removeDropTarget();\n return;\n }\n const target = (_e = (_d = (_c = this.options).getOverlayOutline) === null || _d === void 0 ? void 0 : _d.call(_c)) !== null && _e !== void 0 ? _e : this.element;\n const width = target.offsetWidth;\n const height = target.offsetHeight;\n if (width === 0 || height === 0) {\n return; // avoid div!0\n }\n const rect = e.currentTarget.getBoundingClientRect();\n const x = ((_f = e.clientX) !== null && _f !== void 0 ? _f : 0) - rect.left;\n const y = ((_g = e.clientY) !== null && _g !== void 0 ? _g : 0) - rect.top;\n const quadrant = this.calculateQuadrant(this._acceptedTargetZonesSet, x, y, width, height);\n /**\n * If the event has already been used by another DropTarget instance\n * then don't show a second drop target, only one target should be\n * active at any one time\n */\n if (this.isAlreadyUsed(e) || quadrant === null) {\n // no drop target should be displayed\n this.removeDropTarget();\n return;\n }\n if (!this.options.canDisplayOverlay(e, quadrant)) {\n if (overrideTarget) {\n return;\n }\n this.removeDropTarget();\n return;\n }\n const willShowOverlayEvent = new WillShowOverlayEvent({\n nativeEvent: e,\n position: quadrant,\n });\n /**\n * Provide an opportunity to prevent the overlay appearing and in turn\n * any dnd behaviours\n */\n this._onWillShowOverlay.fire(willShowOverlayEvent);\n if (willShowOverlayEvent.defaultPrevented) {\n this.removeDropTarget();\n return;\n }\n this.markAsUsed(e);\n if (overrideTarget) {\n //\n }\n else if (!this.targetElement) {\n this.targetElement = document.createElement('div');\n this.targetElement.className = 'dv-drop-target-dropzone';\n this.overlayElement = document.createElement('div');\n this.overlayElement.className = 'dv-drop-target-selection';\n this._state = 'center';\n this.targetElement.appendChild(this.overlayElement);\n target.classList.add('dv-drop-target');\n target.append(this.targetElement);\n // this.overlayElement.style.opacity = '0';\n // requestAnimationFrame(() => {\n // if (this.overlayElement) {\n // this.overlayElement.style.opacity = '';\n // }\n // });\n }\n this.toggleClasses(quadrant, width, height);\n this._state = quadrant;\n },\n onDragLeave: () => {\n var _a, _b;\n const target = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);\n if (target) {\n return;\n }\n this.removeDropTarget();\n },\n onDragEnd: (e) => {\n var _a, _b;\n const target = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);\n if (target && Droptarget.ACTUAL_TARGET === this) {\n if (this._state) {\n // only stop the propagation of the event if we are dealing with it\n // which is only when the target has state\n e.stopPropagation();\n this._onDrop.fire({\n position: this._state,\n nativeEvent: e,\n });\n }\n }\n this.removeDropTarget();\n target === null || target === void 0 ? void 0 : target.clear();\n },\n onDrop: (e) => {\n var _a, _b, _c;\n e.preventDefault();\n const state = this._state;\n this.removeDropTarget();\n (_c = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a)) === null || _c === void 0 ? void 0 : _c.clear();\n if (state) {\n // only stop the propagation of the event if we are dealing with it\n // which is only when the target has state\n e.stopPropagation();\n this._onDrop.fire({ position: state, nativeEvent: e });\n }\n },\n });\n this.addDisposables(this._onDrop, this._onWillShowOverlay, this.dnd);\n }\n setTargetZones(acceptedTargetZones) {\n this._acceptedTargetZonesSet = new Set(acceptedTargetZones);\n }\n setOverlayModel(model) {\n this.options.overlayModel = model;\n }\n dispose() {\n this.removeDropTarget();\n super.dispose();\n }\n /**\n * Add a property to the event object for other potential listeners to check\n */\n markAsUsed(event) {\n event[Droptarget.USED_EVENT_ID] = true;\n }\n /**\n * Check is the event has already been used by another instance of DropTarget\n */\n isAlreadyUsed(event) {\n const value = event[Droptarget.USED_EVENT_ID];\n return typeof value === 'boolean' && value;\n }\n toggleClasses(quadrant, width, height) {\n var _a, _b, _c, _d, _e, _f, _g;\n const target = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);\n if (!target && !this.overlayElement) {\n return;\n }\n const isSmallX = width < SMALL_WIDTH_BOUNDARY;\n const isSmallY = height < SMALL_HEIGHT_BOUNDARY;\n const isLeft = quadrant === 'left';\n const isRight = quadrant === 'right';\n const isTop = quadrant === 'top';\n const isBottom = quadrant === 'bottom';\n const rightClass = !isSmallX && isRight;\n const leftClass = !isSmallX && isLeft;\n const topClass = !isSmallY && isTop;\n const bottomClass = !isSmallY && isBottom;\n let size = 1;\n const sizeOptions = (_d = (_c = this.options.overlayModel) === null || _c === void 0 ? void 0 : _c.size) !== null && _d !== void 0 ? _d : DEFAULT_SIZE;\n if (sizeOptions.type === 'percentage') {\n size = clamp(sizeOptions.value, 0, 100) / 100;\n }\n else {\n if (rightClass || leftClass) {\n size = clamp(0, sizeOptions.value, width) / width;\n }\n if (topClass || bottomClass) {\n size = clamp(0, sizeOptions.value, height) / height;\n }\n }\n if (target) {\n const outlineEl = (_g = (_f = (_e = this.options).getOverlayOutline) === null || _f === void 0 ? void 0 : _f.call(_e)) !== null && _g !== void 0 ? _g : this.element;\n const elBox = outlineEl.getBoundingClientRect();\n const ta = target.getElements(undefined, outlineEl);\n const el = ta.root;\n const overlay = ta.overlay;\n const bigbox = el.getBoundingClientRect();\n const rootTop = elBox.top - bigbox.top;\n const rootLeft = elBox.left - bigbox.left;\n const box = {\n top: rootTop,\n left: rootLeft,\n width: width,\n height: height,\n };\n if (rightClass) {\n box.left = rootLeft + width * (1 - size);\n box.width = width * size;\n }\n else if (leftClass) {\n box.width = width * size;\n }\n else if (topClass) {\n box.height = height * size;\n }\n else if (bottomClass) {\n box.top = rootTop + height * (1 - size);\n box.height = height * size;\n }\n if (isSmallX && isLeft) {\n box.width = 4;\n }\n if (isSmallX && isRight) {\n box.left = rootLeft + width - 4;\n box.width = 4;\n }\n // Use GPU-optimized bounds checking and setting\n if (!checkBoundsChanged(overlay, box)) {\n return;\n }\n setGPUOptimizedBounds(overlay, box);\n overlay.className = `dv-drop-target-anchor${this.options.className ? ` ${this.options.className}` : ''}`;\n toggleClass(overlay, 'dv-drop-target-left', isLeft);\n toggleClass(overlay, 'dv-drop-target-right', isRight);\n toggleClass(overlay, 'dv-drop-target-top', isTop);\n toggleClass(overlay, 'dv-drop-target-bottom', isBottom);\n toggleClass(overlay, 'dv-drop-target-center', quadrant === 'center');\n if (ta.changed) {\n toggleClass(overlay, 'dv-drop-target-anchor-container-changed', true);\n setTimeout(() => {\n toggleClass(overlay, 'dv-drop-target-anchor-container-changed', false);\n }, 10);\n }\n return;\n }\n if (!this.overlayElement) {\n return;\n }\n const box = { top: '0px', left: '0px', width: '100%', height: '100%' };\n /**\n * You can also achieve the overlay placement using the transform CSS property\n * to translate and scale the element however this has the undesired effect of\n * 'skewing' the element. Comment left here for anybody that ever revisits this.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/transform\n *\n * right\n * translateX(${100 * (1 - size) / 2}%) scaleX(${scale})\n *\n * left\n * translateX(-${100 * (1 - size) / 2}%) scaleX(${scale})\n *\n * top\n * translateY(-${100 * (1 - size) / 2}%) scaleY(${scale})\n *\n * bottom\n * translateY(${100 * (1 - size) / 2}%) scaleY(${scale})\n */\n if (rightClass) {\n box.left = `${100 * (1 - size)}%`;\n box.width = `${100 * size}%`;\n }\n else if (leftClass) {\n box.width = `${100 * size}%`;\n }\n else if (topClass) {\n box.height = `${100 * size}%`;\n }\n else if (bottomClass) {\n box.top = `${100 * (1 - size)}%`;\n box.height = `${100 * size}%`;\n }\n setGPUOptimizedBoundsFromStrings(this.overlayElement, box);\n toggleClass(this.overlayElement, 'dv-drop-target-small-vertical', isSmallY);\n toggleClass(this.overlayElement, 'dv-drop-target-small-horizontal', isSmallX);\n toggleClass(this.overlayElement, 'dv-drop-target-left', isLeft);\n toggleClass(this.overlayElement, 'dv-drop-target-right', isRight);\n toggleClass(this.overlayElement, 'dv-drop-target-top', isTop);\n toggleClass(this.overlayElement, 'dv-drop-target-bottom', isBottom);\n toggleClass(this.overlayElement, 'dv-drop-target-center', quadrant === 'center');\n }\n calculateQuadrant(overlayType, x, y, width, height) {\n var _a, _b;\n const activationSizeOptions = (_b = (_a = this.options.overlayModel) === null || _a === void 0 ? void 0 : _a.activationSize) !== null && _b !== void 0 ? _b : DEFAULT_ACTIVATION_SIZE;\n const isPercentage = activationSizeOptions.type === 'percentage';\n if (isPercentage) {\n return calculateQuadrantAsPercentage(overlayType, x, y, width, height, activationSizeOptions.value);\n }\n return calculateQuadrantAsPixels(overlayType, x, y, width, height, activationSizeOptions.value);\n }\n removeDropTarget() {\n var _a;\n if (this.targetElement) {\n this._state = undefined;\n (_a = this.targetElement.parentElement) === null || _a === void 0 ? void 0 : _a.classList.remove('dv-drop-target');\n this.targetElement.remove();\n this.targetElement = undefined;\n this.overlayElement = undefined;\n }\n }\n}\nDroptarget.USED_EVENT_ID = '__dockview_droptarget_event_is_used__';\nexport function calculateQuadrantAsPercentage(overlayType, x, y, width, height, threshold) {\n const xp = (100 * x) / width;\n const yp = (100 * y) / height;\n if (overlayType.has('left') && xp < threshold) {\n return 'left';\n }\n if (overlayType.has('right') && xp > 100 - threshold) {\n return 'right';\n }\n if (overlayType.has('top') && yp < threshold) {\n return 'top';\n }\n if (overlayType.has('bottom') && yp > 100 - threshold) {\n return 'bottom';\n }\n if (!overlayType.has('center')) {\n return null;\n }\n return 'center';\n}\nexport function calculateQuadrantAsPixels(overlayType, x, y, width, height, threshold) {\n if (overlayType.has('left') && x < threshold) {\n return 'left';\n }\n if (overlayType.has('right') && x > width - threshold) {\n return 'right';\n }\n if (overlayType.has('top') && y < threshold) {\n return 'top';\n }\n if (overlayType.has('bottom') && y > height - threshold) {\n return 'bottom';\n }\n if (!overlayType.has('center')) {\n return null;\n }\n return 'center';\n}\n","import { AcceptableEvent } from '../events';\nexport const PROPERTY_KEYS_PANEVIEW = (() => {\n /**\n * by readong the keys from an empty value object TypeScript will error\n * when we add or remove new properties to `DockviewOptions`\n */\n const properties = {\n disableAutoResizing: undefined,\n disableDnd: undefined,\n className: undefined,\n };\n return Object.keys(properties);\n})();\nexport class PaneviewUnhandledDragOverEvent extends AcceptableEvent {\n constructor(nativeEvent, position, getData, panel) {\n super();\n this.nativeEvent = nativeEvent;\n this.position = position;\n this.getData = getData;\n this.panel = panel;\n }\n}\n","import { DockviewEvent, Emitter } from '../events';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nexport class WillFocusEvent extends DockviewEvent {\n constructor() {\n super();\n }\n}\n/**\n * A core api implementation that should be used across all panel-like objects\n */\nexport class PanelApiImpl extends CompositeDisposable {\n get isFocused() {\n return this._isFocused;\n }\n get isActive() {\n return this._isActive;\n }\n get isVisible() {\n return this._isVisible;\n }\n get width() {\n return this._width;\n }\n get height() {\n return this._height;\n }\n constructor(id, component) {\n super();\n this.id = id;\n this.component = component;\n this._isFocused = false;\n this._isActive = false;\n this._isVisible = true;\n this._width = 0;\n this._height = 0;\n this._parameters = {};\n this.panelUpdatesDisposable = new MutableDisposable();\n this._onDidDimensionChange = new Emitter();\n this.onDidDimensionsChange = this._onDidDimensionChange.event;\n this._onDidChangeFocus = new Emitter();\n this.onDidFocusChange = this._onDidChangeFocus.event;\n //\n this._onWillFocus = new Emitter();\n this.onWillFocus = this._onWillFocus.event;\n //\n this._onDidVisibilityChange = new Emitter();\n this.onDidVisibilityChange = this._onDidVisibilityChange.event;\n this._onWillVisibilityChange = new Emitter();\n this.onWillVisibilityChange = this._onWillVisibilityChange.event;\n this._onDidActiveChange = new Emitter();\n this.onDidActiveChange = this._onDidActiveChange.event;\n this._onActiveChange = new Emitter();\n this.onActiveChange = this._onActiveChange.event;\n this._onDidParametersChange = new Emitter();\n this.onDidParametersChange = this._onDidParametersChange.event;\n this.addDisposables(this.onDidFocusChange((event) => {\n this._isFocused = event.isFocused;\n }), this.onDidActiveChange((event) => {\n this._isActive = event.isActive;\n }), this.onDidVisibilityChange((event) => {\n this._isVisible = event.isVisible;\n }), this.onDidDimensionsChange((event) => {\n this._width = event.width;\n this._height = event.height;\n }), this.panelUpdatesDisposable, this._onDidDimensionChange, this._onDidChangeFocus, this._onDidVisibilityChange, this._onDidActiveChange, this._onWillFocus, this._onActiveChange, this._onWillFocus, this._onWillVisibilityChange, this._onDidParametersChange);\n }\n getParameters() {\n return this._parameters;\n }\n initialize(panel) {\n this.panelUpdatesDisposable.value = this._onDidParametersChange.event((parameters) => {\n this._parameters = parameters;\n panel.update({\n params: parameters,\n });\n });\n }\n setVisible(isVisible) {\n this._onWillVisibilityChange.fire({ isVisible });\n }\n setActive() {\n this._onActiveChange.fire();\n }\n updateParameters(parameters) {\n this._onDidParametersChange.fire(parameters);\n }\n}\n","import { Emitter } from '../events';\nimport { PanelApiImpl } from './panelApi';\nexport class SplitviewPanelApiImpl extends PanelApiImpl {\n //\n constructor(id, component) {\n super(id, component);\n this._onDidConstraintsChangeInternal = new Emitter();\n this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;\n //\n this._onDidConstraintsChange = new Emitter({\n replay: true,\n });\n this.onDidConstraintsChange = this._onDidConstraintsChange.event;\n //\n this._onDidSizeChange = new Emitter();\n this.onDidSizeChange = this._onDidSizeChange.event;\n this.addDisposables(this._onDidConstraintsChangeInternal, this._onDidConstraintsChange, this._onDidSizeChange);\n }\n setConstraints(value) {\n this._onDidConstraintsChangeInternal.fire(value);\n }\n setSize(event) {\n this._onDidSizeChange.fire(event);\n }\n}\n","import { Emitter } from '../events';\nimport { SplitviewPanelApiImpl } from './splitviewPanelApi';\nexport class PaneviewPanelApiImpl extends SplitviewPanelApiImpl {\n set pane(pane) {\n this._pane = pane;\n }\n constructor(id, component) {\n super(id, component);\n this._onDidExpansionChange = new Emitter({\n replay: true,\n });\n this.onDidExpansionChange = this._onDidExpansionChange.event;\n this._onMouseEnter = new Emitter({});\n this.onMouseEnter = this._onMouseEnter.event;\n this._onMouseLeave = new Emitter({});\n this.onMouseLeave = this._onMouseLeave.event;\n this.addDisposables(this._onDidExpansionChange, this._onMouseEnter, this._onMouseLeave);\n }\n setExpanded(isExpanded) {\n var _a;\n (_a = this._pane) === null || _a === void 0 ? void 0 : _a.setExpanded(isExpanded);\n }\n get isExpanded() {\n var _a;\n return !!((_a = this._pane) === null || _a === void 0 ? void 0 : _a.isExpanded());\n }\n}\n","import { trackFocus } from '../dom';\nimport { CompositeDisposable } from '../lifecycle';\nimport { WillFocusEvent } from '../api/panelApi';\nexport class BasePanelView extends CompositeDisposable {\n get element() {\n return this._element;\n }\n get width() {\n return this._width;\n }\n get height() {\n return this._height;\n }\n get params() {\n var _a;\n return (_a = this._params) === null || _a === void 0 ? void 0 : _a.params;\n }\n constructor(id, component, api) {\n super();\n this.id = id;\n this.component = component;\n this.api = api;\n this._height = 0;\n this._width = 0;\n this._element = document.createElement('div');\n this._element.tabIndex = -1;\n this._element.style.outline = 'none';\n this._element.style.height = '100%';\n this._element.style.width = '100%';\n this._element.style.overflow = 'hidden';\n const focusTracker = trackFocus(this._element);\n this.addDisposables(this.api, focusTracker.onDidFocus(() => {\n this.api._onDidChangeFocus.fire({ isFocused: true });\n }), focusTracker.onDidBlur(() => {\n this.api._onDidChangeFocus.fire({ isFocused: false });\n }), focusTracker);\n }\n focus() {\n const event = new WillFocusEvent();\n this.api._onWillFocus.fire(event);\n if (event.defaultPrevented) {\n return;\n }\n this._element.focus();\n }\n layout(width, height) {\n this._width = width;\n this._height = height;\n this.api._onDidDimensionChange.fire({ width, height });\n if (this.part) {\n if (this._params) {\n this.part.update(this._params.params);\n }\n }\n }\n init(parameters) {\n this._params = parameters;\n this.part = this.getComponent();\n }\n update(event) {\n var _a, _b;\n // merge the new parameters with the existing parameters\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) });\n /**\n * delete new keys that have a value of undefined,\n * allow values of null\n */\n for (const key of Object.keys(event.params)) {\n if (event.params[key] === undefined) {\n delete this._params.params[key];\n }\n }\n // update the view with the updated props\n (_b = this.part) === null || _b === void 0 ? void 0 : _b.update({ params: this._params.params });\n }\n toJSON() {\n var _a, _b;\n const params = (_b = (_a = this._params) === null || _a === void 0 ? void 0 : _a.params) !== null && _b !== void 0 ? _b : {};\n return {\n id: this.id,\n component: this.component,\n params: Object.keys(params).length > 0 ? params : undefined,\n };\n }\n dispose() {\n var _a;\n this.api.dispose();\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();\n super.dispose();\n }\n}\n","import { PaneviewPanelApiImpl } from '../api/paneviewPanelApi';\nimport { addClasses, removeClasses } from '../dom';\nimport { addDisposableListener, Emitter } from '../events';\nimport { BasePanelView, } from '../gridview/basePanelView';\nimport { Orientation } from '../splitview/splitview';\nexport class PaneviewPanel extends BasePanelView {\n set orientation(value) {\n this._orientation = value;\n }\n get orientation() {\n return this._orientation;\n }\n get minimumSize() {\n const headerSize = this.headerSize;\n const expanded = this.isExpanded();\n const minimumBodySize = expanded ? this._minimumBodySize : 0;\n return headerSize + minimumBodySize;\n }\n get maximumSize() {\n const headerSize = this.headerSize;\n const expanded = this.isExpanded();\n const maximumBodySize = expanded ? this._maximumBodySize : 0;\n return headerSize + maximumBodySize;\n }\n get size() {\n return this._size;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n set orthogonalSize(size) {\n this._orthogonalSize = size;\n }\n get minimumBodySize() {\n return this._minimumBodySize;\n }\n set minimumBodySize(value) {\n this._minimumBodySize = typeof value === 'number' ? value : 0;\n }\n get maximumBodySize() {\n return this._maximumBodySize;\n }\n set maximumBodySize(value) {\n this._maximumBodySize =\n typeof value === 'number' ? value : Number.POSITIVE_INFINITY;\n }\n get headerVisible() {\n return this._headerVisible;\n }\n set headerVisible(value) {\n this._headerVisible = value;\n this.header.style.display = value ? '' : 'none';\n }\n constructor(options) {\n super(options.id, options.component, new PaneviewPanelApiImpl(options.id, options.component));\n this._onDidChangeExpansionState = new Emitter({ replay: true });\n this.onDidChangeExpansionState = this._onDidChangeExpansionState.event;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._orthogonalSize = 0;\n this._size = 0;\n this._isExpanded = false;\n this.api.pane = this; // TODO cannot use 'this' before 'super'\n this.api.initialize(this);\n this.headerSize = options.headerSize;\n this.headerComponent = options.headerComponent;\n this._minimumBodySize = options.minimumBodySize;\n this._maximumBodySize = options.maximumBodySize;\n this._isExpanded = options.isExpanded;\n this._headerVisible = options.isHeaderVisible;\n this._onDidChangeExpansionState.fire(this.isExpanded()); // initialize value\n this._orientation = options.orientation;\n this.element.classList.add('dv-pane');\n this.addDisposables(this.api.onWillVisibilityChange((event) => {\n const { isVisible } = event;\n const { accessor } = this._params;\n accessor.setVisible(this, isVisible);\n }), this.api.onDidSizeChange((event) => {\n this._onDidChange.fire({ size: event.size });\n }), addDisposableListener(this.element, 'mouseenter', (ev) => {\n this.api._onMouseEnter.fire(ev);\n }), addDisposableListener(this.element, 'mouseleave', (ev) => {\n this.api._onMouseLeave.fire(ev);\n }));\n this.addDisposables(this._onDidChangeExpansionState, this.onDidChangeExpansionState((isPanelExpanded) => {\n this.api._onDidExpansionChange.fire({\n isExpanded: isPanelExpanded,\n });\n }), this.api.onDidFocusChange((e) => {\n if (!this.header) {\n return;\n }\n if (e.isFocused) {\n addClasses(this.header, 'focused');\n }\n else {\n removeClasses(this.header, 'focused');\n }\n }));\n this.renderOnce();\n }\n setVisible(isVisible) {\n this.api._onDidVisibilityChange.fire({ isVisible });\n }\n setActive(isActive) {\n this.api._onDidActiveChange.fire({ isActive });\n }\n isExpanded() {\n return this._isExpanded;\n }\n setExpanded(expanded) {\n if (this._isExpanded === expanded) {\n return;\n }\n this._isExpanded = expanded;\n if (expanded) {\n if (this.animationTimer) {\n clearTimeout(this.animationTimer);\n }\n if (this.body) {\n this.element.appendChild(this.body);\n }\n }\n else {\n this.animationTimer = setTimeout(() => {\n var _a;\n (_a = this.body) === null || _a === void 0 ? void 0 : _a.remove();\n }, 200);\n }\n this._onDidChange.fire(expanded ? { size: this.width } : {});\n this._onDidChangeExpansionState.fire(expanded);\n }\n layout(size, orthogonalSize) {\n this._size = size;\n this._orthogonalSize = orthogonalSize;\n const [width, height] = this.orientation === Orientation.HORIZONTAL\n ? [size, orthogonalSize]\n : [orthogonalSize, size];\n super.layout(width, height);\n }\n init(parameters) {\n var _a, _b;\n super.init(parameters);\n if (typeof parameters.minimumBodySize === 'number') {\n this.minimumBodySize = parameters.minimumBodySize;\n }\n if (typeof parameters.maximumBodySize === 'number') {\n this.maximumBodySize = parameters.maximumBodySize;\n }\n this.bodyPart = this.getBodyComponent();\n this.headerPart = this.getHeaderComponent();\n this.bodyPart.init(Object.assign(Object.assign({}, parameters), { api: this.api }));\n this.headerPart.init(Object.assign(Object.assign({}, parameters), { api: this.api }));\n (_a = this.body) === null || _a === void 0 ? void 0 : _a.append(this.bodyPart.element);\n (_b = this.header) === null || _b === void 0 ? void 0 : _b.append(this.headerPart.element);\n if (typeof parameters.isExpanded === 'boolean') {\n this.setExpanded(parameters.isExpanded);\n }\n }\n toJSON() {\n const params = this._params;\n return Object.assign(Object.assign({}, super.toJSON()), { headerComponent: this.headerComponent, title: params.title });\n }\n renderOnce() {\n this.header = document.createElement('div');\n this.header.tabIndex = 0;\n this.header.className = 'dv-pane-header';\n this.header.style.height = `${this.headerSize}px`;\n this.header.style.lineHeight = `${this.headerSize}px`;\n this.header.style.minHeight = `${this.headerSize}px`;\n this.header.style.maxHeight = `${this.headerSize}px`;\n this.element.appendChild(this.header);\n this.body = document.createElement('div');\n this.body.className = 'dv-pane-body';\n this.element.appendChild(this.body);\n }\n // TODO slightly hacky by-pass of the component to create a body and header component\n getComponent() {\n return {\n update: (params) => {\n var _a, _b;\n (_a = this.bodyPart) === null || _a === void 0 ? void 0 : _a.update({ params });\n (_b = this.headerPart) === null || _b === void 0 ? void 0 : _b.update({ params });\n },\n dispose: () => {\n var _a, _b;\n (_a = this.bodyPart) === null || _a === void 0 ? void 0 : _a.dispose();\n (_b = this.headerPart) === null || _b === void 0 ? void 0 : _b.dispose();\n },\n };\n }\n}\n","import { PaneviewApi } from '../api/component.api';\nimport { DragHandler } from '../dnd/abstractDragHandler';\nimport { getPaneData, LocalSelectionTransfer, PaneTransfer, } from '../dnd/dataTransfer';\nimport { Droptarget } from '../dnd/droptarget';\nimport { Emitter } from '../events';\nimport { PaneviewUnhandledDragOverEvent, } from './options';\nimport { PaneviewPanel, } from './paneviewPanel';\nexport class DraggablePaneviewPanel extends PaneviewPanel {\n constructor(options) {\n super({\n id: options.id,\n component: options.component,\n headerComponent: options.headerComponent,\n orientation: options.orientation,\n isExpanded: options.isExpanded,\n isHeaderVisible: true,\n headerSize: options.headerSize,\n minimumBodySize: options.minimumBodySize,\n maximumBodySize: options.maximumBodySize,\n });\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n this._onUnhandledDragOverEvent = new Emitter();\n this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;\n this.accessor = options.accessor;\n this.addDisposables(this._onDidDrop, this._onUnhandledDragOverEvent);\n if (!options.disableDnd) {\n this.initDragFeatures();\n }\n }\n initDragFeatures() {\n if (!this.header) {\n return;\n }\n const id = this.id;\n const accessorId = this.accessor.id;\n this.header.draggable = true;\n this.handler = new (class PaneDragHandler extends DragHandler {\n getData() {\n LocalSelectionTransfer.getInstance().setData([new PaneTransfer(accessorId, id)], PaneTransfer.prototype);\n return {\n dispose: () => {\n LocalSelectionTransfer.getInstance().clearData(PaneTransfer.prototype);\n },\n };\n }\n })(this.header);\n this.target = new Droptarget(this.element, {\n acceptedTargetZones: ['top', 'bottom'],\n overlayModel: {\n activationSize: { type: 'percentage', value: 50 },\n },\n canDisplayOverlay: (event, position) => {\n const data = getPaneData();\n if (data) {\n if (data.paneId !== this.id &&\n data.viewId === this.accessor.id) {\n return true;\n }\n }\n const firedEvent = new PaneviewUnhandledDragOverEvent(event, position, getPaneData, this);\n this._onUnhandledDragOverEvent.fire(firedEvent);\n return firedEvent.isAccepted;\n },\n });\n this.addDisposables(this._onDidDrop, this.handler, this.target, this.target.onDrop((event) => {\n this.onDrop(event);\n }));\n }\n onDrop(event) {\n const data = getPaneData();\n if (!data || data.viewId !== this.accessor.id) {\n // if there is no local drag event for this panel\n // or if the drag event was creating by another Paneview instance\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, api: new PaneviewApi(this.accessor), getData: getPaneData }));\n return;\n }\n const containerApi = this._params\n .containerApi;\n const panelId = data.paneId;\n const existingPanel = containerApi.getPanel(panelId);\n if (!existingPanel) {\n // if the panel doesn't exist\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: getPaneData, api: new PaneviewApi(this.accessor) }));\n return;\n }\n const allPanels = containerApi.panels;\n const fromIndex = allPanels.indexOf(existingPanel);\n let toIndex = containerApi.panels.indexOf(this);\n if (event.position === 'left' || event.position === 'top') {\n toIndex = Math.max(0, toIndex - 1);\n }\n if (event.position === 'right' || event.position === 'bottom') {\n if (fromIndex > toIndex) {\n toIndex++;\n }\n toIndex = Math.min(allPanels.length - 1, toIndex);\n }\n containerApi.movePanel(fromIndex, toIndex);\n }\n}\n","import { CompositeDisposable, MutableDisposable, } from '../../../lifecycle';\nimport { Emitter } from '../../../events';\nimport { trackFocus } from '../../../dom';\nimport { Droptarget } from '../../../dnd/droptarget';\nimport { getPanelData } from '../../../dnd/dataTransfer';\nexport class ContentContainer extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor(accessor, group) {\n super();\n this.accessor = accessor;\n this.group = group;\n this.disposable = new MutableDisposable();\n this._onDidFocus = new Emitter();\n this.onDidFocus = this._onDidFocus.event;\n this._onDidBlur = new Emitter();\n this.onDidBlur = this._onDidBlur.event;\n this._element = document.createElement('div');\n this._element.className = 'dv-content-container';\n this._element.tabIndex = -1;\n this.addDisposables(this._onDidFocus, this._onDidBlur);\n const target = group.dropTargetContainer;\n this.dropTarget = new Droptarget(this.element, {\n getOverlayOutline: () => {\n var _a;\n return ((_a = accessor.options.theme) === null || _a === void 0 ? void 0 : _a.dndPanelOverlay) === 'group'\n ? this.element.parentElement\n : null;\n },\n className: 'dv-drop-target-content',\n acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],\n canDisplayOverlay: (event, position) => {\n if (this.group.locked === 'no-drop-target' ||\n (this.group.locked && position === 'center')) {\n return false;\n }\n const data = getPanelData();\n if (!data &&\n event.shiftKey &&\n this.group.location.type !== 'floating') {\n return false;\n }\n if (data && data.viewId === this.accessor.id) {\n return true;\n }\n return this.group.canDisplayOverlay(event, position, 'content');\n },\n getOverrideTarget: target ? () => target.model : undefined,\n });\n this.addDisposables(this.dropTarget);\n }\n show() {\n this.element.style.display = '';\n }\n hide() {\n this.element.style.display = 'none';\n }\n renderPanel(panel, options = { asActive: true }) {\n const doRender = options.asActive ||\n (this.panel && this.group.isPanelActive(this.panel));\n if (this.panel &&\n this.panel.view.content.element.parentElement === this._element) {\n /**\n * If the currently attached panel is mounted directly to the content then remove it\n */\n this._element.removeChild(this.panel.view.content.element);\n }\n this.panel = panel;\n let container;\n switch (panel.api.renderer) {\n case 'onlyWhenVisible':\n this.group.renderContainer.detatch(panel);\n if (this.panel) {\n if (doRender) {\n this._element.appendChild(this.panel.view.content.element);\n }\n }\n container = this._element;\n break;\n case 'always':\n if (panel.view.content.element.parentElement === this._element) {\n this._element.removeChild(panel.view.content.element);\n }\n container = this.group.renderContainer.attach({\n panel,\n referenceContainer: this,\n });\n break;\n default:\n throw new Error(`dockview: invalid renderer type '${panel.api.renderer}'`);\n }\n if (doRender) {\n const focusTracker = trackFocus(container);\n this.focusTracker = focusTracker;\n const disposable = new CompositeDisposable();\n disposable.addDisposables(focusTracker, focusTracker.onDidFocus(() => this._onDidFocus.fire()), focusTracker.onDidBlur(() => this._onDidBlur.fire()));\n this.disposable.value = disposable;\n }\n }\n openPanel(panel) {\n if (this.panel === panel) {\n return;\n }\n this.renderPanel(panel);\n }\n layout(_width, _height) {\n // noop\n }\n closePanel() {\n var _a;\n if (this.panel) {\n if (this.panel.api.renderer === 'onlyWhenVisible') {\n (_a = this.panel.view.content.element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.panel.view.content.element);\n }\n }\n this.panel = undefined;\n }\n dispose() {\n this.disposable.dispose();\n super.dispose();\n }\n /**\n * Refresh the focus tracker state to handle cases where focus state\n * gets out of sync due to programmatic panel activation\n */\n refreshFocusState() {\n var _a;\n if ((_a = this.focusTracker) === null || _a === void 0 ? void 0 : _a.refreshState) {\n this.focusTracker.refreshState();\n }\n }\n}\n","import { addClasses, removeClasses } from '../dom';\nexport function addGhostImage(dataTransfer, ghostElement, options) {\n var _a, _b;\n // class dockview provides to force ghost image to be drawn on a different layer and prevent weird rendering issues\n addClasses(ghostElement, 'dv-dragged');\n // move the element off-screen initially otherwise it may in some cases be rendered at (0,0) momentarily\n ghostElement.style.top = '-9999px';\n document.body.appendChild(ghostElement);\n dataTransfer.setDragImage(ghostElement, (_a = options === null || options === void 0 ? void 0 : options.x) !== null && _a !== void 0 ? _a : 0, (_b = options === null || options === void 0 ? void 0 : options.y) !== null && _b !== void 0 ? _b : 0);\n setTimeout(() => {\n removeClasses(ghostElement, 'dv-dragged');\n ghostElement.remove();\n }, 0);\n}\n","import { addDisposableListener, Emitter } from '../../../events';\nimport { CompositeDisposable } from '../../../lifecycle';\nimport { getPanelData, LocalSelectionTransfer, PanelTransfer, } from '../../../dnd/dataTransfer';\nimport { toggleClass } from '../../../dom';\nimport { Droptarget, } from '../../../dnd/droptarget';\nimport { DragHandler } from '../../../dnd/abstractDragHandler';\nimport { addGhostImage } from '../../../dnd/ghost';\nclass TabDragHandler extends DragHandler {\n constructor(element, accessor, group, panel, disabled) {\n super(element, disabled);\n this.accessor = accessor;\n this.group = group;\n this.panel = panel;\n this.panelTransfer = LocalSelectionTransfer.getInstance();\n }\n getData(event) {\n this.panelTransfer.setData([new PanelTransfer(this.accessor.id, this.group.id, this.panel.id)], PanelTransfer.prototype);\n return {\n dispose: () => {\n this.panelTransfer.clearData(PanelTransfer.prototype);\n },\n };\n }\n}\nexport class Tab extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor(panel, accessor, group) {\n super();\n this.panel = panel;\n this.accessor = accessor;\n this.group = group;\n this.content = undefined;\n this._onPointDown = new Emitter();\n this.onPointerDown = this._onPointDown.event;\n this._onDropped = new Emitter();\n this.onDrop = this._onDropped.event;\n this._onDragStart = new Emitter();\n this.onDragStart = this._onDragStart.event;\n this._element = document.createElement('div');\n this._element.className = 'dv-tab';\n this._element.tabIndex = 0;\n this._element.draggable = !this.accessor.options.disableDnd;\n toggleClass(this.element, 'dv-inactive-tab', true);\n this.dragHandler = new TabDragHandler(this._element, this.accessor, this.group, this.panel, !!this.accessor.options.disableDnd);\n this.dropTarget = new Droptarget(this._element, {\n acceptedTargetZones: ['left', 'right'],\n overlayModel: { activationSize: { value: 50, type: 'percentage' } },\n canDisplayOverlay: (event, position) => {\n if (this.group.locked) {\n return false;\n }\n const data = getPanelData();\n if (data && this.accessor.id === data.viewId) {\n return true;\n }\n return this.group.model.canDisplayOverlay(event, position, 'tab');\n },\n getOverrideTarget: () => { var _a; return (_a = group.model.dropTargetContainer) === null || _a === void 0 ? void 0 : _a.model; },\n });\n this.onWillShowOverlay = this.dropTarget.onWillShowOverlay;\n this.addDisposables(this._onPointDown, this._onDropped, this._onDragStart, this.dragHandler.onDragStart((event) => {\n if (event.dataTransfer) {\n const style = getComputedStyle(this.element);\n const newNode = this.element.cloneNode(true);\n Array.from(style).forEach((key) => newNode.style.setProperty(key, style.getPropertyValue(key), style.getPropertyPriority(key)));\n newNode.style.position = 'absolute';\n addGhostImage(event.dataTransfer, newNode, {\n y: -10,\n x: 30,\n });\n }\n this._onDragStart.fire(event);\n }), this.dragHandler, addDisposableListener(this._element, 'pointerdown', (event) => {\n this._onPointDown.fire(event);\n }), this.dropTarget.onDrop((event) => {\n this._onDropped.fire(event);\n }), this.dropTarget);\n }\n setActive(isActive) {\n toggleClass(this.element, 'dv-active-tab', isActive);\n toggleClass(this.element, 'dv-inactive-tab', !isActive);\n }\n setContent(part) {\n if (this.content) {\n this._element.removeChild(this.content.element);\n }\n this.content = part;\n this._element.appendChild(this.content.element);\n }\n updateDragAndDropState() {\n this._element.draggable = !this.accessor.options.disableDnd;\n this.dragHandler.setDisabled(!!this.accessor.options.disableDnd);\n }\n dispose() {\n super.dispose();\n }\n}\n","export class WillShowOverlayLocationEvent {\n get kind() {\n return this.options.kind;\n }\n get nativeEvent() {\n return this.event.nativeEvent;\n }\n get position() {\n return this.event.position;\n }\n get defaultPrevented() {\n return this.event.defaultPrevented;\n }\n get panel() {\n return this.options.panel;\n }\n get api() {\n return this.options.api;\n }\n get group() {\n return this.options.group;\n }\n preventDefault() {\n this.event.preventDefault();\n }\n getData() {\n return this.options.getData();\n }\n constructor(event, options) {\n this.event = event;\n this.options = options;\n }\n}\n","import { quasiPreventDefault } from '../dom';\nimport { addDisposableListener } from '../events';\nimport { DragHandler } from './abstractDragHandler';\nimport { LocalSelectionTransfer, PanelTransfer } from './dataTransfer';\nimport { addGhostImage } from './ghost';\nexport class GroupDragHandler extends DragHandler {\n constructor(element, accessor, group, disabled) {\n super(element, disabled);\n this.accessor = accessor;\n this.group = group;\n this.panelTransfer = LocalSelectionTransfer.getInstance();\n this.addDisposables(addDisposableListener(element, 'pointerdown', (e) => {\n if (e.shiftKey) {\n /**\n * You cannot call e.preventDefault() because that will prevent drag events from firing\n * but we also need to stop any group overlay drag events from occuring\n * Use a custom event marker that can be checked by the overlay drag events\n */\n quasiPreventDefault(e);\n }\n }, true));\n }\n isCancelled(_event) {\n if (this.group.api.location.type === 'floating' && !_event.shiftKey) {\n return true;\n }\n return false;\n }\n getData(dragEvent) {\n const dataTransfer = dragEvent.dataTransfer;\n this.panelTransfer.setData([new PanelTransfer(this.accessor.id, this.group.id, null)], PanelTransfer.prototype);\n const style = window.getComputedStyle(this.el);\n const bgColor = style.getPropertyValue('--dv-activegroup-visiblepanel-tab-background-color');\n const color = style.getPropertyValue('--dv-activegroup-visiblepanel-tab-color');\n if (dataTransfer) {\n const ghostElement = document.createElement('div');\n ghostElement.style.backgroundColor = bgColor;\n ghostElement.style.color = color;\n ghostElement.style.padding = '2px 8px';\n ghostElement.style.height = '24px';\n ghostElement.style.fontSize = '11px';\n ghostElement.style.lineHeight = '20px';\n ghostElement.style.borderRadius = '12px';\n ghostElement.style.position = 'absolute';\n ghostElement.style.pointerEvents = 'none';\n ghostElement.style.top = '-9999px';\n ghostElement.textContent = `Multiple Panels (${this.group.size})`;\n addGhostImage(dataTransfer, ghostElement, { y: -10, x: 30 });\n }\n return {\n dispose: () => {\n this.panelTransfer.clearData(PanelTransfer.prototype);\n },\n };\n }\n}\n","import { getPanelData } from '../../../dnd/dataTransfer';\nimport { Droptarget, } from '../../../dnd/droptarget';\nimport { GroupDragHandler } from '../../../dnd/groupDragHandler';\nimport { addDisposableListener, Emitter } from '../../../events';\nimport { CompositeDisposable } from '../../../lifecycle';\nimport { toggleClass } from '../../../dom';\nexport class VoidContainer extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor(accessor, group) {\n super();\n this.accessor = accessor;\n this.group = group;\n this._onDrop = new Emitter();\n this.onDrop = this._onDrop.event;\n this._onDragStart = new Emitter();\n this.onDragStart = this._onDragStart.event;\n this._element = document.createElement('div');\n this._element.className = 'dv-void-container';\n this._element.draggable = !this.accessor.options.disableDnd;\n toggleClass(this._element, 'dv-draggable', !this.accessor.options.disableDnd);\n this.addDisposables(this._onDrop, this._onDragStart, addDisposableListener(this._element, 'pointerdown', () => {\n this.accessor.doSetGroupActive(this.group);\n }));\n this.handler = new GroupDragHandler(this._element, accessor, group, !!this.accessor.options.disableDnd);\n this.dropTarget = new Droptarget(this._element, {\n acceptedTargetZones: ['center'],\n canDisplayOverlay: (event, position) => {\n const data = getPanelData();\n if (data && this.accessor.id === data.viewId) {\n return true;\n }\n return group.model.canDisplayOverlay(event, position, 'header_space');\n },\n getOverrideTarget: () => { var _a; return (_a = group.model.dropTargetContainer) === null || _a === void 0 ? void 0 : _a.model; },\n });\n this.onWillShowOverlay = this.dropTarget.onWillShowOverlay;\n this.addDisposables(this.handler, this.handler.onDragStart((event) => {\n this._onDragStart.fire(event);\n }), this.dropTarget.onDrop((event) => {\n this._onDrop.fire(event);\n }), this.dropTarget);\n }\n updateDragAndDropState() {\n this._element.draggable = !this.accessor.options.disableDnd;\n toggleClass(this._element, 'dv-draggable', !this.accessor.options.disableDnd);\n this.handler.setDisabled(!!this.accessor.options.disableDnd);\n }\n}\n","import { toggleClass, watchElementResize } from './dom';\nimport { addDisposableListener } from './events';\nimport { CompositeDisposable } from './lifecycle';\nimport { clamp } from './math';\nexport class Scrollbar extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor(scrollableElement) {\n super();\n this.scrollableElement = scrollableElement;\n this._scrollLeft = 0;\n this._element = document.createElement('div');\n this._element.className = 'dv-scrollable';\n this._horizontalScrollbar = document.createElement('div');\n this._horizontalScrollbar.className = 'dv-scrollbar-horizontal';\n this.element.appendChild(scrollableElement);\n this.element.appendChild(this._horizontalScrollbar);\n this.addDisposables(addDisposableListener(this.element, 'wheel', (event) => {\n this._scrollLeft += event.deltaY * Scrollbar.MouseWheelSpeed;\n this.calculateScrollbarStyles();\n }), addDisposableListener(this._horizontalScrollbar, 'pointerdown', (event) => {\n event.preventDefault();\n toggleClass(this.element, 'dv-scrollable-scrolling', true);\n const originalClientX = event.clientX;\n const originalScrollLeft = this._scrollLeft;\n const onPointerMove = (event) => {\n const deltaX = event.clientX - originalClientX;\n const { clientWidth } = this.element;\n const { scrollWidth } = this.scrollableElement;\n const p = clientWidth / scrollWidth;\n this._scrollLeft = originalScrollLeft + deltaX / p;\n this.calculateScrollbarStyles();\n };\n const onEnd = () => {\n toggleClass(this.element, 'dv-scrollable-scrolling', false);\n document.removeEventListener('pointermove', onPointerMove);\n document.removeEventListener('pointerup', onEnd);\n document.removeEventListener('pointercancel', onEnd);\n };\n document.addEventListener('pointermove', onPointerMove);\n document.addEventListener('pointerup', onEnd);\n document.addEventListener('pointercancel', onEnd);\n }), addDisposableListener(this.element, 'scroll', () => {\n this.calculateScrollbarStyles();\n }), addDisposableListener(this.scrollableElement, 'scroll', () => {\n this._scrollLeft = this.scrollableElement.scrollLeft;\n this.calculateScrollbarStyles();\n }), watchElementResize(this.element, () => {\n toggleClass(this.element, 'dv-scrollable-resizing', true);\n if (this._animationTimer) {\n clearTimeout(this._animationTimer);\n }\n this._animationTimer = setTimeout(() => {\n clearTimeout(this._animationTimer);\n toggleClass(this.element, 'dv-scrollable-resizing', false);\n }, 500);\n this.calculateScrollbarStyles();\n }));\n }\n calculateScrollbarStyles() {\n const { clientWidth } = this.element;\n const { scrollWidth } = this.scrollableElement;\n const hasScrollbar = scrollWidth > clientWidth;\n if (hasScrollbar) {\n const px = clientWidth * (clientWidth / scrollWidth);\n this._horizontalScrollbar.style.width = `${px}px`;\n this._scrollLeft = clamp(this._scrollLeft, 0, this.scrollableElement.scrollWidth - clientWidth);\n this.scrollableElement.scrollLeft = this._scrollLeft;\n const percentageComplete = this._scrollLeft / (scrollWidth - clientWidth);\n this._horizontalScrollbar.style.left = `${(clientWidth - px) * percentageComplete}px`;\n }\n else {\n this._horizontalScrollbar.style.width = `0px`;\n this._horizontalScrollbar.style.left = `0px`;\n this._scrollLeft = 0;\n }\n }\n}\nScrollbar.MouseWheelSpeed = 1;\n","import { getPanelData } from '../../../dnd/dataTransfer';\nimport { isChildEntirelyVisibleWithinParent, OverflowObserver, } from '../../../dom';\nimport { addDisposableListener, Emitter } from '../../../events';\nimport { CompositeDisposable, Disposable, MutableDisposable, } from '../../../lifecycle';\nimport { Scrollbar } from '../../../scrollbar';\nimport { WillShowOverlayLocationEvent } from '../../events';\nimport { Tab } from '../tab/tab';\nexport class Tabs extends CompositeDisposable {\n get showTabsOverflowControl() {\n return this._showTabsOverflowControl;\n }\n set showTabsOverflowControl(value) {\n if (this._showTabsOverflowControl == value) {\n return;\n }\n this._showTabsOverflowControl = value;\n if (value) {\n const observer = new OverflowObserver(this._tabsList);\n this._observerDisposable.value = new CompositeDisposable(observer, observer.onDidChange((event) => {\n const hasOverflow = event.hasScrollX || event.hasScrollY;\n this.toggleDropdown({ reset: !hasOverflow });\n }), addDisposableListener(this._tabsList, 'scroll', () => {\n this.toggleDropdown({ reset: false });\n }));\n }\n }\n get element() {\n return this._element;\n }\n get panels() {\n return this._tabs.map((_) => _.value.panel.id);\n }\n get size() {\n return this._tabs.length;\n }\n get tabs() {\n return this._tabs.map((_) => _.value);\n }\n constructor(group, accessor, options) {\n super();\n this.group = group;\n this.accessor = accessor;\n this._observerDisposable = new MutableDisposable();\n this._tabs = [];\n this.selectedIndex = -1;\n this._showTabsOverflowControl = false;\n this._onTabDragStart = new Emitter();\n this.onTabDragStart = this._onTabDragStart.event;\n this._onDrop = new Emitter();\n this.onDrop = this._onDrop.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._onOverflowTabsChange = new Emitter();\n this.onOverflowTabsChange = this._onOverflowTabsChange.event;\n this._tabsList = document.createElement('div');\n this._tabsList.className = 'dv-tabs-container dv-horizontal';\n this.showTabsOverflowControl = options.showTabsOverflowControl;\n if (accessor.options.scrollbars === 'native') {\n this._element = this._tabsList;\n }\n else {\n const scrollbar = new Scrollbar(this._tabsList);\n this._element = scrollbar.element;\n this.addDisposables(scrollbar);\n }\n this.addDisposables(this._onOverflowTabsChange, this._observerDisposable, this._onWillShowOverlay, this._onDrop, this._onTabDragStart, addDisposableListener(this.element, 'pointerdown', (event) => {\n if (event.defaultPrevented) {\n return;\n }\n const isLeftClick = event.button === 0;\n if (isLeftClick) {\n this.accessor.doSetGroupActive(this.group);\n }\n }), Disposable.from(() => {\n for (const { value, disposable } of this._tabs) {\n disposable.dispose();\n value.dispose();\n }\n this._tabs = [];\n }));\n }\n indexOf(id) {\n return this._tabs.findIndex((tab) => tab.value.panel.id === id);\n }\n isActive(tab) {\n return (this.selectedIndex > -1 &&\n this._tabs[this.selectedIndex].value === tab);\n }\n setActivePanel(panel) {\n let runningWidth = 0;\n for (const tab of this._tabs) {\n const isActivePanel = panel.id === tab.value.panel.id;\n tab.value.setActive(isActivePanel);\n if (isActivePanel) {\n const element = tab.value.element;\n const parentElement = element.parentElement;\n if (runningWidth < parentElement.scrollLeft ||\n runningWidth + element.clientWidth >\n parentElement.scrollLeft + parentElement.clientWidth) {\n parentElement.scrollLeft = runningWidth;\n }\n }\n runningWidth += tab.value.element.clientWidth;\n }\n }\n openPanel(panel, index = this._tabs.length) {\n if (this._tabs.find((tab) => tab.value.panel.id === panel.id)) {\n return;\n }\n const tab = new Tab(panel, this.accessor, this.group);\n tab.setContent(panel.view.tab);\n const disposable = new CompositeDisposable(tab.onDragStart((event) => {\n this._onTabDragStart.fire({ nativeEvent: event, panel });\n }), tab.onPointerDown((event) => {\n if (event.defaultPrevented) {\n return;\n }\n const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;\n const isFloatingWithOnePanel = this.group.api.location.type === 'floating' &&\n this.size === 1;\n if (isFloatingGroupsEnabled &&\n !isFloatingWithOnePanel &&\n event.shiftKey) {\n event.preventDefault();\n const panel = this.accessor.getGroupPanel(tab.panel.id);\n const { top, left } = tab.element.getBoundingClientRect();\n const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();\n this.accessor.addFloatingGroup(panel, {\n x: left - rootLeft,\n y: top - rootTop,\n inDragMode: true,\n });\n return;\n }\n switch (event.button) {\n case 0: // left click or touch\n if (this.group.activePanel !== panel) {\n this.group.model.openPanel(panel);\n }\n break;\n }\n }), tab.onDrop((event) => {\n this._onDrop.fire({\n event: event.nativeEvent,\n index: this._tabs.findIndex((x) => x.value === tab),\n });\n }), tab.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {\n kind: 'tab',\n panel: this.group.activePanel,\n api: this.accessor.api,\n group: this.group,\n getData: getPanelData,\n }));\n }));\n const value = { value: tab, disposable };\n this.addTab(value, index);\n }\n delete(id) {\n const index = this.indexOf(id);\n const tabToRemove = this._tabs.splice(index, 1)[0];\n const { value, disposable } = tabToRemove;\n disposable.dispose();\n value.dispose();\n value.element.remove();\n }\n addTab(tab, index = this._tabs.length) {\n if (index < 0 || index > this._tabs.length) {\n throw new Error('invalid location');\n }\n this._tabsList.insertBefore(tab.value.element, this._tabsList.children[index]);\n this._tabs = [\n ...this._tabs.slice(0, index),\n tab,\n ...this._tabs.slice(index),\n ];\n if (this.selectedIndex < 0) {\n this.selectedIndex = index;\n }\n }\n toggleDropdown(options) {\n const tabs = options.reset\n ? []\n : this._tabs\n .filter((tab) => !isChildEntirelyVisibleWithinParent(tab.value.element, this._tabsList))\n .map((x) => x.value.panel.id);\n this._onOverflowTabsChange.fire({ tabs, reset: options.reset });\n }\n updateDragAndDropState() {\n for (const tab of this._tabs) {\n tab.value.updateDragAndDropState();\n }\n }\n}\n","const createSvgElementFromPath = (params) => {\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttributeNS(null, 'height', params.height);\n svg.setAttributeNS(null, 'width', params.width);\n svg.setAttributeNS(null, 'viewBox', params.viewbox);\n svg.setAttributeNS(null, 'aria-hidden', 'false');\n svg.setAttributeNS(null, 'focusable', 'false');\n svg.classList.add('dv-svg');\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttributeNS(null, 'd', params.path);\n svg.appendChild(path);\n return svg;\n};\nexport const createCloseButton = () => createSvgElementFromPath({\n width: '11',\n height: '11',\n viewbox: '0 0 28 28',\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',\n});\nexport const createExpandMoreButton = () => createSvgElementFromPath({\n width: '11',\n height: '11',\n viewbox: '0 0 24 15',\n path: 'M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z',\n});\nexport const createChevronRightButton = () => createSvgElementFromPath({\n width: '11',\n height: '11',\n viewbox: '0 0 15 25',\n path: 'M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z',\n});\n","import { createChevronRightButton } from '../../../svg';\nexport function createDropdownElementHandle() {\n const el = document.createElement('div');\n el.className = 'dv-tabs-overflow-dropdown-default';\n const text = document.createElement('span');\n text.textContent = ``;\n const icon = createChevronRightButton();\n el.appendChild(icon);\n el.appendChild(text);\n return {\n element: el,\n update: (params) => {\n text.textContent = `${params.tabs}`;\n },\n };\n}\n","import { CompositeDisposable, Disposable, MutableDisposable, } from '../../../lifecycle';\nimport { addDisposableListener, Emitter } from '../../../events';\nimport { VoidContainer } from './voidContainer';\nimport { findRelativeZIndexParent, toggleClass } from '../../../dom';\nimport { WillShowOverlayLocationEvent } from '../../events';\nimport { getPanelData } from '../../../dnd/dataTransfer';\nimport { Tabs } from './tabs';\nimport { createDropdownElementHandle, } from './tabOverflowControl';\nexport class TabsContainer extends CompositeDisposable {\n get onTabDragStart() {\n return this.tabs.onTabDragStart;\n }\n get panels() {\n return this.tabs.panels;\n }\n get size() {\n return this.tabs.size;\n }\n get hidden() {\n return this._hidden;\n }\n set hidden(value) {\n this._hidden = value;\n this.element.style.display = value ? 'none' : '';\n }\n get element() {\n return this._element;\n }\n constructor(accessor, group) {\n super();\n this.accessor = accessor;\n this.group = group;\n this._hidden = false;\n this.dropdownPart = null;\n this._overflowTabs = [];\n this._dropdownDisposable = new MutableDisposable();\n this._onDrop = new Emitter();\n this.onDrop = this._onDrop.event;\n this._onGroupDragStart = new Emitter();\n this.onGroupDragStart = this._onGroupDragStart.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._element = document.createElement('div');\n this._element.className = 'dv-tabs-and-actions-container';\n toggleClass(this._element, 'dv-full-width-single-tab', this.accessor.options.singleTabMode === 'fullwidth');\n this.rightActionsContainer = document.createElement('div');\n this.rightActionsContainer.className = 'dv-right-actions-container';\n this.leftActionsContainer = document.createElement('div');\n this.leftActionsContainer.className = 'dv-left-actions-container';\n this.preActionsContainer = document.createElement('div');\n this.preActionsContainer.className = 'dv-pre-actions-container';\n this.tabs = new Tabs(group, accessor, {\n showTabsOverflowControl: !accessor.options.disableTabsOverflowList,\n });\n this.voidContainer = new VoidContainer(this.accessor, this.group);\n this._element.appendChild(this.preActionsContainer);\n this._element.appendChild(this.tabs.element);\n this._element.appendChild(this.leftActionsContainer);\n this._element.appendChild(this.voidContainer.element);\n this._element.appendChild(this.rightActionsContainer);\n this.addDisposables(this.tabs.onDrop((e) => this._onDrop.fire(e)), this.tabs.onWillShowOverlay((e) => this._onWillShowOverlay.fire(e)), accessor.onDidOptionsChange(() => {\n this.tabs.showTabsOverflowControl =\n !accessor.options.disableTabsOverflowList;\n }), this.tabs.onOverflowTabsChange((event) => {\n this.toggleDropdown(event);\n }), this.tabs, this._onWillShowOverlay, this._onDrop, this._onGroupDragStart, this.voidContainer, this.voidContainer.onDragStart((event) => {\n this._onGroupDragStart.fire({\n nativeEvent: event,\n group: this.group,\n });\n }), this.voidContainer.onDrop((event) => {\n this._onDrop.fire({\n event: event.nativeEvent,\n index: this.tabs.size,\n });\n }), this.voidContainer.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {\n kind: 'header_space',\n panel: this.group.activePanel,\n api: this.accessor.api,\n group: this.group,\n getData: getPanelData,\n }));\n }), addDisposableListener(this.voidContainer.element, 'pointerdown', (event) => {\n if (event.defaultPrevented) {\n return;\n }\n const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;\n if (isFloatingGroupsEnabled &&\n event.shiftKey &&\n this.group.api.location.type !== 'floating') {\n event.preventDefault();\n const { top, left } = this.element.getBoundingClientRect();\n const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();\n this.accessor.addFloatingGroup(this.group, {\n x: left - rootLeft + 20,\n y: top - rootTop + 20,\n inDragMode: true,\n });\n }\n }));\n }\n show() {\n if (!this.hidden) {\n this.element.style.display = '';\n }\n }\n hide() {\n this._element.style.display = 'none';\n }\n setRightActionsElement(element) {\n if (this.rightActions === element) {\n return;\n }\n if (this.rightActions) {\n this.rightActions.remove();\n this.rightActions = undefined;\n }\n if (element) {\n this.rightActionsContainer.appendChild(element);\n this.rightActions = element;\n }\n }\n setLeftActionsElement(element) {\n if (this.leftActions === element) {\n return;\n }\n if (this.leftActions) {\n this.leftActions.remove();\n this.leftActions = undefined;\n }\n if (element) {\n this.leftActionsContainer.appendChild(element);\n this.leftActions = element;\n }\n }\n setPrefixActionsElement(element) {\n if (this.preActions === element) {\n return;\n }\n if (this.preActions) {\n this.preActions.remove();\n this.preActions = undefined;\n }\n if (element) {\n this.preActionsContainer.appendChild(element);\n this.preActions = element;\n }\n }\n isActive(tab) {\n return this.tabs.isActive(tab);\n }\n indexOf(id) {\n return this.tabs.indexOf(id);\n }\n setActive(_isGroupActive) {\n // noop\n }\n delete(id) {\n this.tabs.delete(id);\n this.updateClassnames();\n }\n setActivePanel(panel) {\n this.tabs.setActivePanel(panel);\n }\n openPanel(panel, index = this.tabs.size) {\n this.tabs.openPanel(panel, index);\n this.updateClassnames();\n }\n closePanel(panel) {\n this.delete(panel.id);\n }\n updateClassnames() {\n toggleClass(this._element, 'dv-single-tab', this.size === 1);\n }\n toggleDropdown(options) {\n const tabs = options.reset ? [] : options.tabs;\n this._overflowTabs = tabs;\n if (this._overflowTabs.length > 0 && this.dropdownPart) {\n this.dropdownPart.update({ tabs: tabs.length });\n return;\n }\n if (this._overflowTabs.length === 0) {\n this._dropdownDisposable.dispose();\n return;\n }\n const root = document.createElement('div');\n root.className = 'dv-tabs-overflow-dropdown-root';\n const part = createDropdownElementHandle();\n part.update({ tabs: tabs.length });\n this.dropdownPart = part;\n root.appendChild(part.element);\n this.rightActionsContainer.prepend(root);\n this._dropdownDisposable.value = new CompositeDisposable(Disposable.from(() => {\n var _a, _b;\n root.remove();\n (_b = (_a = this.dropdownPart) === null || _a === void 0 ? void 0 : _a.dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.dropdownPart = null;\n }), addDisposableListener(root, 'pointerdown', (event) => {\n event.preventDefault();\n }, { capture: true }), addDisposableListener(root, 'click', (event) => {\n const el = document.createElement('div');\n el.style.overflow = 'auto';\n el.className = 'dv-tabs-overflow-container';\n for (const tab of this.tabs.tabs.filter((tab) => this._overflowTabs.includes(tab.panel.id))) {\n const panelObject = this.group.panels.find((panel) => panel === tab.panel);\n const tabComponent = panelObject.view.createTabRenderer('headerOverflow');\n const child = tabComponent.element;\n const wrapper = document.createElement('div');\n toggleClass(wrapper, 'dv-tab', true);\n toggleClass(wrapper, 'dv-active-tab', panelObject.api.isActive);\n toggleClass(wrapper, 'dv-inactive-tab', !panelObject.api.isActive);\n wrapper.addEventListener('click', (event) => {\n this.accessor.popupService.close();\n if (event.defaultPrevented) {\n return;\n }\n tab.element.scrollIntoView();\n tab.panel.api.setActive();\n });\n wrapper.appendChild(child);\n el.appendChild(wrapper);\n }\n const relativeParent = findRelativeZIndexParent(root);\n this.accessor.popupService.openPopover(el, {\n x: event.clientX,\n y: event.clientY,\n zIndex: (relativeParent === null || relativeParent === void 0 ? void 0 : relativeParent.style.zIndex)\n ? `calc(${relativeParent.style.zIndex} * 2)`\n : undefined,\n });\n }));\n }\n updateDragAndDropState() {\n this.tabs.updateDragAndDropState();\n this.voidContainer.updateDragAndDropState();\n }\n}\n","import { AcceptableEvent } from '../events';\nexport class DockviewUnhandledDragOverEvent extends AcceptableEvent {\n constructor(nativeEvent, target, position, getData, group) {\n super();\n this.nativeEvent = nativeEvent;\n this.target = target;\n this.position = position;\n this.getData = getData;\n this.group = group;\n }\n}\nexport const PROPERTY_KEYS_DOCKVIEW = (() => {\n /**\n * by readong the keys from an empty value object TypeScript will error\n * when we add or remove new properties to `DockviewOptions`\n */\n const properties = {\n disableAutoResizing: undefined,\n hideBorders: undefined,\n singleTabMode: undefined,\n disableFloatingGroups: undefined,\n floatingGroupBounds: undefined,\n popoutUrl: undefined,\n defaultRenderer: undefined,\n debug: undefined,\n rootOverlayModel: undefined,\n locked: undefined,\n disableDnd: undefined,\n className: undefined,\n noPanelsOverlay: undefined,\n dndEdges: undefined,\n theme: undefined,\n disableTabsOverflowList: undefined,\n scrollbars: undefined,\n };\n return Object.keys(properties);\n})();\nexport function isPanelOptionsWithPanel(data) {\n if (data.referencePanel) {\n return true;\n }\n return false;\n}\nexport function isPanelOptionsWithGroup(data) {\n if (data.referenceGroup) {\n return true;\n }\n return false;\n}\nexport function isGroupOptionsWithPanel(data) {\n if (data.referencePanel) {\n return true;\n }\n return false;\n}\nexport function isGroupOptionsWithGroup(data) {\n if (data.referenceGroup) {\n return true;\n }\n return false;\n}\n","import { DockviewApi } from '../api/component.api';\nimport { getPanelData } from '../dnd/dataTransfer';\nimport { isAncestor, toggleClass } from '../dom';\nimport { addDisposableListener, DockviewEvent, Emitter, } from '../events';\nimport { WillShowOverlayLocationEvent } from './events';\nimport { CompositeDisposable } from '../lifecycle';\nimport { ContentContainer, } from './components/panel/content';\nimport { TabsContainer, } from './components/titlebar/tabsContainer';\nimport { DockviewUnhandledDragOverEvent, } from './options';\nexport class DockviewDidDropEvent extends DockviewEvent {\n get nativeEvent() {\n return this.options.nativeEvent;\n }\n get position() {\n return this.options.position;\n }\n get panel() {\n return this.options.panel;\n }\n get group() {\n return this.options.group;\n }\n get api() {\n return this.options.api;\n }\n constructor(options) {\n super();\n this.options = options;\n }\n getData() {\n return this.options.getData();\n }\n}\nexport class DockviewWillDropEvent extends DockviewDidDropEvent {\n get kind() {\n return this._kind;\n }\n constructor(options) {\n super(options);\n this._kind = options.kind;\n }\n}\nexport class DockviewGroupPanelModel extends CompositeDisposable {\n get element() {\n throw new Error('dockview: not supported');\n }\n get activePanel() {\n return this._activePanel;\n }\n get locked() {\n return this._locked;\n }\n set locked(value) {\n this._locked = value;\n toggleClass(this.container, 'dv-locked-groupview', value === 'no-drop-target' || value);\n }\n get isActive() {\n return this._isGroupActive;\n }\n get panels() {\n return this._panels;\n }\n get size() {\n return this._panels.length;\n }\n get isEmpty() {\n return this._panels.length === 0;\n }\n get hasWatermark() {\n return !!(this.watermark && this.container.contains(this.watermark.element));\n }\n get header() {\n return this.tabsContainer;\n }\n get isContentFocused() {\n if (!document.activeElement) {\n return false;\n }\n return isAncestor(document.activeElement, this.contentContainer.element);\n }\n get location() {\n return this._location;\n }\n set location(value) {\n this._location = value;\n toggleClass(this.container, 'dv-groupview-floating', false);\n toggleClass(this.container, 'dv-groupview-popout', false);\n switch (value.type) {\n case 'grid':\n this.contentContainer.dropTarget.setTargetZones([\n 'top',\n 'bottom',\n 'left',\n 'right',\n 'center',\n ]);\n break;\n case 'floating':\n this.contentContainer.dropTarget.setTargetZones(['center']);\n this.contentContainer.dropTarget.setTargetZones(value\n ? ['center']\n : ['top', 'bottom', 'left', 'right', 'center']);\n toggleClass(this.container, 'dv-groupview-floating', true);\n break;\n case 'popout':\n this.contentContainer.dropTarget.setTargetZones(['center']);\n toggleClass(this.container, 'dv-groupview-popout', true);\n break;\n }\n this.groupPanel.api._onDidLocationChange.fire({\n location: this.location,\n });\n }\n constructor(container, accessor, id, options, groupPanel) {\n var _a;\n super();\n this.container = container;\n this.accessor = accessor;\n this.id = id;\n this.options = options;\n this.groupPanel = groupPanel;\n this._isGroupActive = false;\n this._locked = false;\n this._location = { type: 'grid' };\n this.mostRecentlyUsed = [];\n this._overwriteRenderContainer = null;\n this._overwriteDropTargetContainer = null;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._width = 0;\n this._height = 0;\n this._panels = [];\n this._panelDisposables = new Map();\n this._onMove = new Emitter();\n this.onMove = this._onMove.event;\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n this._onWillDrop = new Emitter();\n this.onWillDrop = this._onWillDrop.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._onTabDragStart = new Emitter();\n this.onTabDragStart = this._onTabDragStart.event;\n this._onGroupDragStart = new Emitter();\n this.onGroupDragStart = this._onGroupDragStart.event;\n this._onDidAddPanel = new Emitter();\n this.onDidAddPanel = this._onDidAddPanel.event;\n this._onDidPanelTitleChange = new Emitter();\n this.onDidPanelTitleChange = this._onDidPanelTitleChange.event;\n this._onDidPanelParametersChange = new Emitter();\n this.onDidPanelParametersChange = this._onDidPanelParametersChange.event;\n this._onDidRemovePanel = new Emitter();\n this.onDidRemovePanel = this._onDidRemovePanel.event;\n this._onDidActivePanelChange = new Emitter();\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\n this._onUnhandledDragOverEvent = new Emitter();\n this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;\n toggleClass(this.container, 'dv-groupview', true);\n this._api = new DockviewApi(this.accessor);\n this.tabsContainer = new TabsContainer(this.accessor, this.groupPanel);\n this.contentContainer = new ContentContainer(this.accessor, this);\n container.append(this.tabsContainer.element, this.contentContainer.element);\n this.header.hidden = !!options.hideHeader;\n this.locked = (_a = options.locked) !== null && _a !== void 0 ? _a : false;\n this.addDisposables(this._onTabDragStart, this._onGroupDragStart, this._onWillShowOverlay, this.tabsContainer.onTabDragStart((event) => {\n this._onTabDragStart.fire(event);\n }), this.tabsContainer.onGroupDragStart((event) => {\n this._onGroupDragStart.fire(event);\n }), this.tabsContainer.onDrop((event) => {\n this.handleDropEvent('header', event.event, 'center', event.index);\n }), this.contentContainer.onDidFocus(() => {\n this.accessor.doSetGroupActive(this.groupPanel);\n }), this.contentContainer.onDidBlur(() => {\n // noop\n }), this.contentContainer.dropTarget.onDrop((event) => {\n this.handleDropEvent('content', event.nativeEvent, event.position);\n }), this.tabsContainer.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(event);\n }), this.contentContainer.dropTarget.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {\n kind: 'content',\n panel: this.activePanel,\n api: this._api,\n group: this.groupPanel,\n getData: getPanelData,\n }));\n }), this._onMove, this._onDidChange, this._onDidDrop, this._onWillDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange, this._onUnhandledDragOverEvent, this._onDidPanelTitleChange, this._onDidPanelParametersChange);\n }\n focusContent() {\n this.contentContainer.element.focus();\n }\n set renderContainer(value) {\n this.panels.forEach((panel) => {\n this.renderContainer.detatch(panel);\n });\n this._overwriteRenderContainer = value;\n this.panels.forEach((panel) => {\n this.rerender(panel);\n });\n }\n get renderContainer() {\n var _a;\n return ((_a = this._overwriteRenderContainer) !== null && _a !== void 0 ? _a : this.accessor.overlayRenderContainer);\n }\n set dropTargetContainer(value) {\n this._overwriteDropTargetContainer = value;\n }\n get dropTargetContainer() {\n var _a;\n return ((_a = this._overwriteDropTargetContainer) !== null && _a !== void 0 ? _a : this.accessor.rootDropTargetContainer);\n }\n initialize() {\n if (this.options.panels) {\n this.options.panels.forEach((panel) => {\n this.doAddPanel(panel);\n });\n }\n if (this.options.activePanel) {\n this.openPanel(this.options.activePanel);\n }\n // must be run after the constructor otherwise this.parent may not be\n // correctly initialized\n this.setActive(this.isActive, true);\n this.updateContainer();\n if (this.accessor.options.createRightHeaderActionComponent) {\n this._rightHeaderActions =\n this.accessor.options.createRightHeaderActionComponent(this.groupPanel);\n this.addDisposables(this._rightHeaderActions);\n this._rightHeaderActions.init({\n containerApi: this._api,\n api: this.groupPanel.api,\n group: this.groupPanel,\n });\n this.tabsContainer.setRightActionsElement(this._rightHeaderActions.element);\n }\n if (this.accessor.options.createLeftHeaderActionComponent) {\n this._leftHeaderActions =\n this.accessor.options.createLeftHeaderActionComponent(this.groupPanel);\n this.addDisposables(this._leftHeaderActions);\n this._leftHeaderActions.init({\n containerApi: this._api,\n api: this.groupPanel.api,\n group: this.groupPanel,\n });\n this.tabsContainer.setLeftActionsElement(this._leftHeaderActions.element);\n }\n if (this.accessor.options.createPrefixHeaderActionComponent) {\n this._prefixHeaderActions =\n this.accessor.options.createPrefixHeaderActionComponent(this.groupPanel);\n this.addDisposables(this._prefixHeaderActions);\n this._prefixHeaderActions.init({\n containerApi: this._api,\n api: this.groupPanel.api,\n group: this.groupPanel,\n });\n this.tabsContainer.setPrefixActionsElement(this._prefixHeaderActions.element);\n }\n }\n rerender(panel) {\n this.contentContainer.renderPanel(panel, { asActive: false });\n }\n indexOf(panel) {\n return this.tabsContainer.indexOf(panel.id);\n }\n toJSON() {\n var _a;\n const result = {\n views: this.tabsContainer.panels,\n activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,\n id: this.id,\n };\n if (this.locked !== false) {\n result.locked = this.locked;\n }\n if (this.header.hidden) {\n result.hideHeader = true;\n }\n return result;\n }\n moveToNext(options) {\n if (!options) {\n options = {};\n }\n if (!options.panel) {\n options.panel = this.activePanel;\n }\n const index = options.panel ? this.panels.indexOf(options.panel) : -1;\n let normalizedIndex;\n if (index < this.panels.length - 1) {\n normalizedIndex = index + 1;\n }\n else if (!options.suppressRoll) {\n normalizedIndex = 0;\n }\n else {\n return;\n }\n this.openPanel(this.panels[normalizedIndex]);\n }\n moveToPrevious(options) {\n if (!options) {\n options = {};\n }\n if (!options.panel) {\n options.panel = this.activePanel;\n }\n if (!options.panel) {\n return;\n }\n const index = this.panels.indexOf(options.panel);\n let normalizedIndex;\n if (index > 0) {\n normalizedIndex = index - 1;\n }\n else if (!options.suppressRoll) {\n normalizedIndex = this.panels.length - 1;\n }\n else {\n return;\n }\n this.openPanel(this.panels[normalizedIndex]);\n }\n containsPanel(panel) {\n return this.panels.includes(panel);\n }\n init(_params) {\n //noop\n }\n update(_params) {\n //noop\n }\n focus() {\n var _a;\n (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();\n }\n openPanel(panel, options = {}) {\n /**\n * set the panel group\n * add the panel\n * check if group active\n * check if panel active\n */\n if (typeof options.index !== 'number' ||\n options.index > this.panels.length) {\n options.index = this.panels.length;\n }\n const skipSetActive = !!options.skipSetActive;\n // ensure the group is updated before we fire any events\n panel.updateParentGroup(this.groupPanel, {\n skipSetActive: options.skipSetActive,\n });\n this.doAddPanel(panel, options.index, {\n skipSetActive: skipSetActive,\n });\n if (this._activePanel === panel) {\n this.contentContainer.renderPanel(panel, { asActive: true });\n return;\n }\n if (!skipSetActive) {\n this.doSetActivePanel(panel);\n }\n if (!options.skipSetGroupActive) {\n this.accessor.doSetGroupActive(this.groupPanel);\n }\n if (!options.skipSetActive) {\n this.updateContainer();\n }\n }\n removePanel(groupItemOrId, options = {\n skipSetActive: false,\n }) {\n const id = typeof groupItemOrId === 'string'\n ? groupItemOrId\n : groupItemOrId.id;\n const panelToRemove = this._panels.find((panel) => panel.id === id);\n if (!panelToRemove) {\n throw new Error('invalid operation');\n }\n return this._removePanel(panelToRemove, options);\n }\n closeAllPanels() {\n if (this.panels.length > 0) {\n // take a copy since we will be edting the array as we iterate through\n const arrPanelCpy = [...this.panels];\n for (const panel of arrPanelCpy) {\n this.doClose(panel);\n }\n }\n else {\n this.accessor.removeGroup(this.groupPanel);\n }\n }\n closePanel(panel) {\n this.doClose(panel);\n }\n doClose(panel) {\n const isLast = this.panels.length === 1 && this.accessor.groups.length === 1;\n this.accessor.removePanel(panel, isLast && this.accessor.options.noPanelsOverlay === 'emptyGroup'\n ? { removeEmptyGroup: false }\n : undefined);\n }\n isPanelActive(panel) {\n return this._activePanel === panel;\n }\n updateActions(element) {\n this.tabsContainer.setRightActionsElement(element);\n }\n setActive(isGroupActive, force = false) {\n if (!force && this.isActive === isGroupActive) {\n return;\n }\n this._isGroupActive = isGroupActive;\n toggleClass(this.container, 'dv-active-group', isGroupActive);\n toggleClass(this.container, 'dv-inactive-group', !isGroupActive);\n this.tabsContainer.setActive(this.isActive);\n if (!this._activePanel && this.panels.length > 0) {\n this.doSetActivePanel(this.panels[0]);\n }\n this.updateContainer();\n }\n layout(width, height) {\n var _a;\n this._width = width;\n this._height = height;\n this.contentContainer.layout(this._width, this._height);\n if ((_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.layout) {\n this._activePanel.layout(this._width, this._height);\n }\n }\n _removePanel(panel, options) {\n const isActivePanel = this._activePanel === panel;\n this.doRemovePanel(panel);\n if (isActivePanel && this.panels.length > 0) {\n const nextPanel = this.mostRecentlyUsed[0];\n this.openPanel(nextPanel, {\n skipSetActive: options.skipSetActive,\n skipSetGroupActive: options.skipSetActiveGroup,\n });\n }\n if (this._activePanel && this.panels.length === 0) {\n this.doSetActivePanel(undefined);\n }\n if (!options.skipSetActive) {\n this.updateContainer();\n }\n return panel;\n }\n doRemovePanel(panel) {\n const index = this.panels.indexOf(panel);\n if (this._activePanel === panel) {\n this.contentContainer.closePanel();\n }\n this.tabsContainer.delete(panel.id);\n this._panels.splice(index, 1);\n if (this.mostRecentlyUsed.includes(panel)) {\n const index = this.mostRecentlyUsed.indexOf(panel);\n this.mostRecentlyUsed.splice(index, 1);\n }\n const disposable = this._panelDisposables.get(panel.id);\n if (disposable) {\n disposable.dispose();\n this._panelDisposables.delete(panel.id);\n }\n this._onDidRemovePanel.fire({ panel });\n }\n doAddPanel(panel, index = this.panels.length, options = { skipSetActive: false }) {\n const existingPanel = this._panels.indexOf(panel);\n const hasExistingPanel = existingPanel > -1;\n this.tabsContainer.show();\n this.contentContainer.show();\n this.tabsContainer.openPanel(panel, index);\n if (!options.skipSetActive) {\n this.contentContainer.openPanel(panel);\n }\n if (hasExistingPanel) {\n // TODO - need to ensure ordering hasn't changed and if it has need to re-order this.panels\n return;\n }\n this.updateMru(panel);\n this.panels.splice(index, 0, panel);\n this._panelDisposables.set(panel.id, new CompositeDisposable(panel.api.onDidTitleChange((event) => this._onDidPanelTitleChange.fire(event)), panel.api.onDidParametersChange((event) => this._onDidPanelParametersChange.fire(event))));\n this._onDidAddPanel.fire({ panel });\n }\n doSetActivePanel(panel) {\n if (this._activePanel === panel) {\n return;\n }\n this._activePanel = panel;\n if (panel) {\n this.tabsContainer.setActivePanel(panel);\n this.contentContainer.openPanel(panel);\n panel.layout(this._width, this._height);\n this.updateMru(panel);\n // Refresh focus state to handle programmatic activation without DOM focus change\n this.contentContainer.refreshFocusState();\n this._onDidActivePanelChange.fire({\n panel,\n });\n }\n }\n updateMru(panel) {\n if (this.mostRecentlyUsed.includes(panel)) {\n this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);\n }\n this.mostRecentlyUsed = [panel, ...this.mostRecentlyUsed];\n }\n updateContainer() {\n var _a, _b;\n this.panels.forEach((panel) => panel.runEvents());\n if (this.isEmpty && !this.watermark) {\n const watermark = this.accessor.createWatermarkComponent();\n watermark.init({\n containerApi: this._api,\n group: this.groupPanel,\n });\n this.watermark = watermark;\n addDisposableListener(this.watermark.element, 'pointerdown', () => {\n if (!this.isActive) {\n this.accessor.doSetGroupActive(this.groupPanel);\n }\n });\n this.contentContainer.element.appendChild(this.watermark.element);\n }\n if (!this.isEmpty && this.watermark) {\n this.watermark.element.remove();\n (_b = (_a = this.watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.watermark = undefined;\n }\n }\n canDisplayOverlay(event, position, target) {\n const firedEvent = new DockviewUnhandledDragOverEvent(event, target, position, getPanelData, this.accessor.getPanel(this.id));\n this._onUnhandledDragOverEvent.fire(firedEvent);\n return firedEvent.isAccepted;\n }\n handleDropEvent(type, event, position, index) {\n if (this.locked === 'no-drop-target') {\n return;\n }\n function getKind() {\n switch (type) {\n case 'header':\n return typeof index === 'number' ? 'tab' : 'header_space';\n case 'content':\n return 'content';\n }\n }\n const panel = typeof index === 'number' ? this.panels[index] : undefined;\n const willDropEvent = new DockviewWillDropEvent({\n nativeEvent: event,\n position,\n panel,\n getData: () => getPanelData(),\n kind: getKind(),\n group: this.groupPanel,\n api: this._api,\n });\n this._onWillDrop.fire(willDropEvent);\n if (willDropEvent.defaultPrevented) {\n return;\n }\n const data = getPanelData();\n if (data && data.viewId === this.accessor.id) {\n if (type === 'content') {\n if (data.groupId === this.id) {\n // don't allow to drop on self for center position\n if (position === 'center') {\n return;\n }\n if (data.panelId === null) {\n // don't allow group move to drop anywhere on self\n return;\n }\n }\n }\n if (type === 'header') {\n if (data.groupId === this.id) {\n if (data.panelId === null) {\n return;\n }\n }\n }\n if (data.panelId === null) {\n // this is a group move dnd event\n const { groupId } = data;\n this._onMove.fire({\n target: position,\n groupId: groupId,\n index,\n });\n return;\n }\n const fromSameGroup = this.tabsContainer.indexOf(data.panelId) !== -1;\n if (fromSameGroup && this.tabsContainer.size === 1) {\n return;\n }\n const { groupId, panelId } = data;\n const isSameGroup = this.id === groupId;\n if (isSameGroup && !position) {\n const oldIndex = this.tabsContainer.indexOf(panelId);\n if (oldIndex === index) {\n return;\n }\n }\n this._onMove.fire({\n target: position,\n groupId: data.groupId,\n itemId: data.panelId,\n index,\n });\n }\n else {\n this._onDidDrop.fire(new DockviewDidDropEvent({\n nativeEvent: event,\n position,\n panel,\n getData: () => getPanelData(),\n group: this.groupPanel,\n api: this._api,\n }));\n }\n }\n updateDragAndDropState() {\n this.tabsContainer.updateDragAndDropState();\n }\n dispose() {\n var _a, _b, _c;\n super.dispose();\n (_a = this.watermark) === null || _a === void 0 ? void 0 : _a.element.remove();\n (_c = (_b = this.watermark) === null || _b === void 0 ? void 0 : _b.dispose) === null || _c === void 0 ? void 0 : _c.call(_b);\n this.watermark = undefined;\n for (const panel of this.panels) {\n panel.dispose();\n }\n this.tabsContainer.dispose();\n this.contentContainer.dispose();\n }\n}\n","import { Emitter } from '../events';\nimport { PanelApiImpl } from './panelApi';\nexport class GridviewPanelApiImpl extends PanelApiImpl {\n constructor(id, component, panel) {\n super(id, component);\n this._onDidConstraintsChangeInternal = new Emitter();\n this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;\n this._onDidConstraintsChange = new Emitter();\n this.onDidConstraintsChange = this._onDidConstraintsChange.event;\n this._onDidSizeChange = new Emitter();\n this.onDidSizeChange = this._onDidSizeChange.event;\n this.addDisposables(this._onDidConstraintsChangeInternal, this._onDidConstraintsChange, this._onDidSizeChange);\n if (panel) {\n this.initialize(panel);\n }\n }\n setConstraints(value) {\n this._onDidConstraintsChangeInternal.fire(value);\n }\n setSize(event) {\n this._onDidSizeChange.fire(event);\n }\n}\n","import { BasePanelView, } from './basePanelView';\nimport { GridviewPanelApiImpl, } from '../api/gridviewPanelApi';\nimport { Emitter } from '../events';\nexport class GridviewPanel extends BasePanelView {\n get priority() {\n return this._priority;\n }\n get snap() {\n return this._snap;\n }\n get minimumWidth() {\n /**\n * defer to protected function to allow subclasses to override easily.\n * see https://github.com/microsoft/TypeScript/issues/338\n */\n return this.__minimumWidth();\n }\n get minimumHeight() {\n /**\n * defer to protected function to allow subclasses to override easily.\n * see https://github.com/microsoft/TypeScript/issues/338\n */\n return this.__minimumHeight();\n }\n get maximumHeight() {\n /**\n * defer to protected function to allow subclasses to override easily.\n * see https://github.com/microsoft/TypeScript/issues/338\n */\n return this.__maximumHeight();\n }\n get maximumWidth() {\n /**\n * defer to protected function to allow subclasses to override easily.\n * see https://github.com/microsoft/TypeScript/issues/338\n */\n return this.__maximumWidth();\n }\n __minimumWidth() {\n const width = typeof this._minimumWidth === 'function'\n ? this._minimumWidth()\n : this._minimumWidth;\n if (width !== this._evaluatedMinimumWidth) {\n this._evaluatedMinimumWidth = width;\n this.updateConstraints();\n }\n return width;\n }\n __maximumWidth() {\n const width = typeof this._maximumWidth === 'function'\n ? this._maximumWidth()\n : this._maximumWidth;\n if (width !== this._evaluatedMaximumWidth) {\n this._evaluatedMaximumWidth = width;\n this.updateConstraints();\n }\n return width;\n }\n __minimumHeight() {\n const height = typeof this._minimumHeight === 'function'\n ? this._minimumHeight()\n : this._minimumHeight;\n if (height !== this._evaluatedMinimumHeight) {\n this._evaluatedMinimumHeight = height;\n this.updateConstraints();\n }\n return height;\n }\n __maximumHeight() {\n const height = typeof this._maximumHeight === 'function'\n ? this._maximumHeight()\n : this._maximumHeight;\n if (height !== this._evaluatedMaximumHeight) {\n this._evaluatedMaximumHeight = height;\n this.updateConstraints();\n }\n return height;\n }\n get isActive() {\n return this.api.isActive;\n }\n get isVisible() {\n return this.api.isVisible;\n }\n constructor(id, component, options, api) {\n super(id, component, api !== null && api !== void 0 ? api : new GridviewPanelApiImpl(id, component));\n this._evaluatedMinimumWidth = 0;\n this._evaluatedMaximumWidth = Number.MAX_SAFE_INTEGER;\n this._evaluatedMinimumHeight = 0;\n this._evaluatedMaximumHeight = Number.MAX_SAFE_INTEGER;\n this._minimumWidth = 0;\n this._minimumHeight = 0;\n this._maximumWidth = Number.MAX_SAFE_INTEGER;\n this._maximumHeight = Number.MAX_SAFE_INTEGER;\n this._snap = false;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n if (typeof (options === null || options === void 0 ? void 0 : options.minimumWidth) === 'number') {\n this._minimumWidth = options.minimumWidth;\n }\n if (typeof (options === null || options === void 0 ? void 0 : options.maximumWidth) === 'number') {\n this._maximumWidth = options.maximumWidth;\n }\n if (typeof (options === null || options === void 0 ? void 0 : options.minimumHeight) === 'number') {\n this._minimumHeight = options.minimumHeight;\n }\n if (typeof (options === null || options === void 0 ? void 0 : options.maximumHeight) === 'number') {\n this._maximumHeight = options.maximumHeight;\n }\n this.api.initialize(this); // TODO: required to by-pass 'super before this' requirement\n this.addDisposables(this.api.onWillVisibilityChange((event) => {\n const { isVisible } = event;\n const { accessor } = this._params;\n accessor.setVisible(this, isVisible);\n }), this.api.onActiveChange(() => {\n const { accessor } = this._params;\n accessor.doSetGroupActive(this);\n }), this.api.onDidConstraintsChangeInternal((event) => {\n if (typeof event.minimumWidth === 'number' ||\n typeof event.minimumWidth === 'function') {\n this._minimumWidth = event.minimumWidth;\n }\n if (typeof event.minimumHeight === 'number' ||\n typeof event.minimumHeight === 'function') {\n this._minimumHeight = event.minimumHeight;\n }\n if (typeof event.maximumWidth === 'number' ||\n typeof event.maximumWidth === 'function') {\n this._maximumWidth = event.maximumWidth;\n }\n if (typeof event.maximumHeight === 'number' ||\n typeof event.maximumHeight === 'function') {\n this._maximumHeight = event.maximumHeight;\n }\n }), this.api.onDidSizeChange((event) => {\n this._onDidChange.fire({\n height: event.height,\n width: event.width,\n });\n }), this._onDidChange);\n }\n setVisible(isVisible) {\n this.api._onDidVisibilityChange.fire({ isVisible });\n }\n setActive(isActive) {\n this.api._onDidActiveChange.fire({ isActive });\n }\n init(parameters) {\n if (parameters.maximumHeight) {\n this._maximumHeight = parameters.maximumHeight;\n }\n if (parameters.minimumHeight) {\n this._minimumHeight = parameters.minimumHeight;\n }\n if (parameters.maximumWidth) {\n this._maximumWidth = parameters.maximumWidth;\n }\n if (parameters.minimumWidth) {\n this._minimumWidth = parameters.minimumWidth;\n }\n this._priority = parameters.priority;\n this._snap = !!parameters.snap;\n super.init(parameters);\n if (typeof parameters.isVisible === 'boolean') {\n this.setVisible(parameters.isVisible);\n }\n }\n updateConstraints() {\n this.api._onDidConstraintsChange.fire({\n minimumWidth: this._evaluatedMinimumWidth,\n maximumWidth: this._evaluatedMaximumWidth,\n minimumHeight: this._evaluatedMinimumHeight,\n maximumHeight: this._evaluatedMaximumHeight,\n });\n }\n toJSON() {\n const state = super.toJSON();\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ? undefined : value;\n const minimum = (value) => (value <= 0 ? undefined : value);\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 });\n }\n}\n","import { positionToDirection } from '../dnd/droptarget';\nimport { Emitter } from '../events';\nimport { GridviewPanelApiImpl } from './gridviewPanelApi';\nconst NOT_INITIALIZED_MESSAGE = 'dockview: DockviewGroupPanelApiImpl not initialized';\nexport class DockviewGroupPanelApiImpl extends GridviewPanelApiImpl {\n get location() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n return this._group.model.location;\n }\n constructor(id, accessor) {\n super(id, '__dockviewgroup__');\n this.accessor = accessor;\n this._onDidLocationChange = new Emitter();\n this.onDidLocationChange = this._onDidLocationChange.event;\n this._onDidActivePanelChange = new Emitter();\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\n this.addDisposables(this._onDidLocationChange, this._onDidActivePanelChange);\n }\n close() {\n if (!this._group) {\n return;\n }\n return this.accessor.removeGroup(this._group);\n }\n getWindow() {\n return this.location.type === 'popout'\n ? this.location.getWindow()\n : window;\n }\n moveTo(options) {\n var _a, _b, _c, _d;\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n const group = (_a = options.group) !== null && _a !== void 0 ? _a : this.accessor.addGroup({\n direction: positionToDirection((_b = options.position) !== null && _b !== void 0 ? _b : 'right'),\n skipSetActive: (_c = options.skipSetActive) !== null && _c !== void 0 ? _c : false,\n });\n this.accessor.moveGroupOrPanel({\n from: { groupId: this._group.id },\n to: {\n group,\n position: options.group\n ? (_d = options.position) !== null && _d !== void 0 ? _d : 'center'\n : 'center',\n index: options.index,\n },\n skipSetActive: options.skipSetActive,\n });\n }\n maximize() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n if (this.location.type !== 'grid') {\n // only grid groups can be maximized\n return;\n }\n this.accessor.maximizeGroup(this._group);\n }\n isMaximized() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n return this.accessor.isMaximizedGroup(this._group);\n }\n exitMaximized() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n if (this.isMaximized()) {\n this.accessor.exitMaximizedGroup();\n }\n }\n initialize(group) {\n this._group = group;\n }\n}\n","import { DockviewGroupPanelModel, } from './dockviewGroupPanelModel';\nimport { GridviewPanel } from '../gridview/gridviewPanel';\nimport { DockviewGroupPanelApiImpl, } from '../api/dockviewGroupPanelApi';\n// GridConstraintChangeEvent2 is not exported, so we'll type it manually\nconst MINIMUM_DOCKVIEW_GROUP_PANEL_WIDTH = 100;\nconst MINIMUM_DOCKVIEW_GROUP_PANEL_HEIGHT = 100;\nexport class DockviewGroupPanel extends GridviewPanel {\n get minimumWidth() {\n var _a;\n // Check for explicitly set group constraint first\n if (typeof this._explicitConstraints.minimumWidth === 'number') {\n return this._explicitConstraints.minimumWidth;\n }\n const activePanelMinimumWidth = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.minimumWidth;\n if (typeof activePanelMinimumWidth === 'number') {\n return activePanelMinimumWidth;\n }\n return super.__minimumWidth();\n }\n get minimumHeight() {\n var _a;\n // Check for explicitly set group constraint first\n if (typeof this._explicitConstraints.minimumHeight === 'number') {\n return this._explicitConstraints.minimumHeight;\n }\n const activePanelMinimumHeight = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.minimumHeight;\n if (typeof activePanelMinimumHeight === 'number') {\n return activePanelMinimumHeight;\n }\n return super.__minimumHeight();\n }\n get maximumWidth() {\n var _a;\n // Check for explicitly set group constraint first\n if (typeof this._explicitConstraints.maximumWidth === 'number') {\n return this._explicitConstraints.maximumWidth;\n }\n const activePanelMaximumWidth = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.maximumWidth;\n if (typeof activePanelMaximumWidth === 'number') {\n return activePanelMaximumWidth;\n }\n return super.__maximumWidth();\n }\n get maximumHeight() {\n var _a;\n // Check for explicitly set group constraint first\n if (typeof this._explicitConstraints.maximumHeight === 'number') {\n return this._explicitConstraints.maximumHeight;\n }\n const activePanelMaximumHeight = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.maximumHeight;\n if (typeof activePanelMaximumHeight === 'number') {\n return activePanelMaximumHeight;\n }\n return super.__maximumHeight();\n }\n get panels() {\n return this._model.panels;\n }\n get activePanel() {\n return this._model.activePanel;\n }\n get size() {\n return this._model.size;\n }\n get model() {\n return this._model;\n }\n get locked() {\n return this._model.locked;\n }\n set locked(value) {\n this._model.locked = value;\n }\n get header() {\n return this._model.header;\n }\n constructor(accessor, id, options) {\n var _a, _b, _c, _d, _e, _f;\n super(id, 'groupview_default', {\n minimumHeight: (_b = (_a = options.constraints) === null || _a === void 0 ? void 0 : _a.minimumHeight) !== null && _b !== void 0 ? _b : MINIMUM_DOCKVIEW_GROUP_PANEL_HEIGHT,\n minimumWidth: (_d = (_c = options.constraints) === null || _c === void 0 ? void 0 : _c.minimumWidth) !== null && _d !== void 0 ? _d : MINIMUM_DOCKVIEW_GROUP_PANEL_WIDTH,\n maximumHeight: (_e = options.constraints) === null || _e === void 0 ? void 0 : _e.maximumHeight,\n maximumWidth: (_f = options.constraints) === null || _f === void 0 ? void 0 : _f.maximumWidth,\n }, new DockviewGroupPanelApiImpl(id, accessor));\n // Track explicitly set constraints to override panel constraints\n this._explicitConstraints = {};\n this.api.initialize(this); // cannot use 'this' after after 'super' call\n this._model = new DockviewGroupPanelModel(this.element, accessor, id, options, this);\n this.addDisposables(this.model.onDidActivePanelChange((event) => {\n this.api._onDidActivePanelChange.fire(event);\n }), this.api.onDidConstraintsChangeInternal((event) => {\n // Track explicitly set constraints to override panel constraints\n // Extract numeric values from functions or values\n if (event.minimumWidth !== undefined) {\n this._explicitConstraints.minimumWidth = typeof event.minimumWidth === 'function'\n ? event.minimumWidth()\n : event.minimumWidth;\n }\n if (event.minimumHeight !== undefined) {\n this._explicitConstraints.minimumHeight = typeof event.minimumHeight === 'function'\n ? event.minimumHeight()\n : event.minimumHeight;\n }\n if (event.maximumWidth !== undefined) {\n this._explicitConstraints.maximumWidth = typeof event.maximumWidth === 'function'\n ? event.maximumWidth()\n : event.maximumWidth;\n }\n if (event.maximumHeight !== undefined) {\n this._explicitConstraints.maximumHeight = typeof event.maximumHeight === 'function'\n ? event.maximumHeight()\n : event.maximumHeight;\n }\n }));\n }\n focus() {\n if (!this.api.isActive) {\n this.api.setActive();\n }\n super.focus();\n }\n initialize() {\n this._model.initialize();\n }\n setActive(isActive) {\n super.setActive(isActive);\n this.model.setActive(isActive);\n }\n layout(width, height) {\n super.layout(width, height);\n this.model.layout(width, height);\n }\n getComponent() {\n return this._model;\n }\n toJSON() {\n return this.model.toJSON();\n }\n}\n","export const themeDark = {\n name: 'dark',\n className: 'dockview-theme-dark',\n};\nexport const themeLight = {\n name: 'light',\n className: 'dockview-theme-light',\n};\nexport const themeVisualStudio = {\n name: 'visualStudio',\n className: 'dockview-theme-vs',\n};\nexport const themeAbyss = {\n name: 'abyss',\n className: 'dockview-theme-abyss',\n};\nexport const themeDracula = {\n name: 'dracula',\n className: 'dockview-theme-dracula',\n};\nexport const themeReplit = {\n name: 'replit',\n className: 'dockview-theme-replit',\n gap: 10,\n};\nexport const themeAbyssSpaced = {\n name: 'abyssSpaced',\n className: 'dockview-theme-abyss-spaced',\n gap: 10,\n dndOverlayMounting: 'absolute',\n dndPanelOverlay: 'group',\n};\nexport const themeLightSpaced = {\n name: 'lightSpaced',\n className: 'dockview-theme-light-spaced',\n gap: 10,\n dndOverlayMounting: 'absolute',\n dndPanelOverlay: 'group',\n};\n","import { Emitter } from '../events';\nimport { GridviewPanelApiImpl } from './gridviewPanelApi';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nexport class DockviewPanelApiImpl extends GridviewPanelApiImpl {\n get location() {\n return this.group.api.location;\n }\n get title() {\n return this.panel.title;\n }\n get isGroupActive() {\n return this.group.isActive;\n }\n get renderer() {\n return this.panel.renderer;\n }\n set group(value) {\n const oldGroup = this._group;\n if (this._group !== value) {\n this._group = value;\n this._onDidGroupChange.fire({});\n this.setupGroupEventListeners(oldGroup);\n this._onDidLocationChange.fire({\n location: this.group.api.location,\n });\n }\n }\n get group() {\n return this._group;\n }\n get tabComponent() {\n return this._tabComponent;\n }\n constructor(panel, group, accessor, component, tabComponent) {\n super(panel.id, component);\n this.panel = panel;\n this.accessor = accessor;\n this._onDidTitleChange = new Emitter();\n this.onDidTitleChange = this._onDidTitleChange.event;\n this._onDidActiveGroupChange = new Emitter();\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\n this._onDidGroupChange = new Emitter();\n this.onDidGroupChange = this._onDidGroupChange.event;\n this._onDidRendererChange = new Emitter();\n this.onDidRendererChange = this._onDidRendererChange.event;\n this._onDidLocationChange = new Emitter();\n this.onDidLocationChange = this._onDidLocationChange.event;\n this.groupEventsDisposable = new MutableDisposable();\n this._tabComponent = tabComponent;\n this.initialize(panel);\n this._group = group;\n this.setupGroupEventListeners();\n this.addDisposables(this.groupEventsDisposable, this._onDidRendererChange, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange, this._onDidLocationChange);\n }\n getWindow() {\n return this.group.api.getWindow();\n }\n moveTo(options) {\n var _a, _b;\n this.accessor.moveGroupOrPanel({\n from: { groupId: this._group.id, panelId: this.panel.id },\n to: {\n group: (_a = options.group) !== null && _a !== void 0 ? _a : this._group,\n position: options.group\n ? (_b = options.position) !== null && _b !== void 0 ? _b : 'center'\n : 'center',\n index: options.index,\n },\n skipSetActive: options.skipSetActive,\n });\n }\n setTitle(title) {\n this.panel.setTitle(title);\n }\n setRenderer(renderer) {\n this.panel.setRenderer(renderer);\n }\n close() {\n this.group.model.closePanel(this.panel);\n }\n maximize() {\n this.group.api.maximize();\n }\n isMaximized() {\n return this.group.api.isMaximized();\n }\n exitMaximized() {\n this.group.api.exitMaximized();\n }\n setupGroupEventListeners(previousGroup) {\n var _a;\n let _trackGroupActive = (_a = previousGroup === null || previousGroup === void 0 ? void 0 : previousGroup.isActive) !== null && _a !== void 0 ? _a : false; // prevent duplicate events with same state\n this.groupEventsDisposable.value = new CompositeDisposable(this.group.api.onDidVisibilityChange((event) => {\n const hasBecomeHidden = !event.isVisible && this.isVisible;\n const hasBecomeVisible = event.isVisible && !this.isVisible;\n const isActivePanel = this.group.model.isPanelActive(this.panel);\n if (hasBecomeHidden || (hasBecomeVisible && isActivePanel)) {\n this._onDidVisibilityChange.fire(event);\n }\n }), this.group.api.onDidLocationChange((event) => {\n if (this.group !== this.panel.group) {\n return;\n }\n this._onDidLocationChange.fire(event);\n }), this.group.api.onDidActiveChange(() => {\n if (this.group !== this.panel.group) {\n return;\n }\n if (_trackGroupActive !== this.isGroupActive) {\n _trackGroupActive = this.isGroupActive;\n this._onDidActiveGroupChange.fire({\n isActive: this.isGroupActive,\n });\n }\n }));\n }\n}\n","import { DockviewPanelApiImpl, } from '../api/dockviewPanelApi';\nimport { CompositeDisposable } from '../lifecycle';\nimport { WillFocusEvent } from '../api/panelApi';\nexport class DockviewPanel extends CompositeDisposable {\n get params() {\n return this._params;\n }\n get title() {\n return this._title;\n }\n get group() {\n return this._group;\n }\n get renderer() {\n var _a;\n return (_a = this._renderer) !== null && _a !== void 0 ? _a : this.accessor.renderer;\n }\n get minimumWidth() {\n return this._minimumWidth;\n }\n get minimumHeight() {\n return this._minimumHeight;\n }\n get maximumWidth() {\n return this._maximumWidth;\n }\n get maximumHeight() {\n return this._maximumHeight;\n }\n constructor(id, component, tabComponent, accessor, containerApi, group, view, options) {\n super();\n this.id = id;\n this.accessor = accessor;\n this.containerApi = containerApi;\n this.view = view;\n this._renderer = options.renderer;\n this._group = group;\n this._minimumWidth = options.minimumWidth;\n this._minimumHeight = options.minimumHeight;\n this._maximumWidth = options.maximumWidth;\n this._maximumHeight = options.maximumHeight;\n this.api = new DockviewPanelApiImpl(this, this._group, accessor, component, tabComponent);\n this.addDisposables(this.api.onActiveChange(() => {\n accessor.setActivePanel(this);\n }), this.api.onDidSizeChange((event) => {\n // forward the resize event to the group since if you want to resize a panel\n // you are actually just resizing the panels parent which is the group\n this.group.api.setSize(event);\n }), this.api.onDidRendererChange(() => {\n this.group.model.rerender(this);\n }));\n }\n init(params) {\n this._params = params.params;\n this.view.init(Object.assign(Object.assign({}, params), { api: this.api, containerApi: this.containerApi }));\n this.setTitle(params.title);\n }\n focus() {\n const event = new WillFocusEvent();\n this.api._onWillFocus.fire(event);\n if (event.defaultPrevented) {\n return;\n }\n if (!this.api.isActive) {\n this.api.setActive();\n }\n }\n toJSON() {\n return {\n id: this.id,\n contentComponent: this.view.contentComponent,\n tabComponent: this.view.tabComponent,\n params: Object.keys(this._params || {}).length > 0\n ? this._params\n : undefined,\n title: this.title,\n renderer: this._renderer,\n minimumHeight: this._minimumHeight,\n maximumHeight: this._maximumHeight,\n minimumWidth: this._minimumWidth,\n maximumWidth: this._maximumWidth,\n };\n }\n setTitle(title) {\n const didTitleChange = title !== this.title;\n if (didTitleChange) {\n this._title = title;\n this.api._onDidTitleChange.fire({ title });\n }\n }\n setRenderer(renderer) {\n const didChange = renderer !== this.renderer;\n if (didChange) {\n this._renderer = renderer;\n this.api._onDidRendererChange.fire({\n renderer: renderer,\n });\n }\n }\n update(event) {\n var _a;\n // merge the new parameters with the existing parameters\n this._params = Object.assign(Object.assign({}, ((_a = this._params) !== null && _a !== void 0 ? _a : {})), event.params);\n /**\n * delete new keys that have a value of undefined,\n * allow values of null\n */\n for (const key of Object.keys(event.params)) {\n if (event.params[key] === undefined) {\n delete this._params[key];\n }\n }\n // update the view with the updated props\n this.view.update({\n params: this._params,\n });\n }\n updateFromStateModel(state) {\n var _a, _b, _c;\n this._maximumHeight = state.maximumHeight;\n this._minimumHeight = state.minimumHeight;\n this._maximumWidth = state.maximumWidth;\n this._minimumWidth = state.minimumWidth;\n this.update({ params: (_a = state.params) !== null && _a !== void 0 ? _a : {} });\n this.setTitle((_b = state.title) !== null && _b !== void 0 ? _b : this.id);\n this.setRenderer((_c = state.renderer) !== null && _c !== void 0 ? _c : this.accessor.renderer);\n // state.contentComponent;\n // state.tabComponent;\n }\n updateParentGroup(group, options) {\n this._group = group;\n this.api.group = this._group;\n const isPanelVisible = this._group.model.isPanelActive(this);\n const isActive = this.group.api.isActive && isPanelVisible;\n if (!(options === null || options === void 0 ? void 0 : options.skipSetActive)) {\n if (this.api.isActive !== isActive) {\n this.api._onDidActiveChange.fire({\n isActive: this.group.api.isActive && isPanelVisible,\n });\n }\n }\n if (this.api.isVisible !== isPanelVisible) {\n this.api._onDidVisibilityChange.fire({\n isVisible: isPanelVisible,\n });\n }\n }\n runEvents() {\n const isPanelVisible = this._group.model.isPanelActive(this);\n const isActive = this.group.api.isActive && isPanelVisible;\n if (this.api.isActive !== isActive) {\n this.api._onDidActiveChange.fire({\n isActive: this.group.api.isActive && isPanelVisible,\n });\n }\n if (this.api.isVisible !== isPanelVisible) {\n this.api._onDidVisibilityChange.fire({\n isVisible: isPanelVisible,\n });\n }\n }\n layout(width, height) {\n // TODO: Can we somehow do height without header height or indicate what the header height is?\n this.api._onDidDimensionChange.fire({\n width,\n height: height,\n });\n this.view.layout(width, height);\n }\n dispose() {\n this.api.dispose();\n this.view.dispose();\n }\n}\n","import { CompositeDisposable } from '../../../lifecycle';\nimport { addDisposableListener } from '../../../events';\nimport { createCloseButton } from '../../../svg';\nexport class DefaultTab extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor() {\n super();\n this._element = document.createElement('div');\n this._element.className = 'dv-default-tab';\n this._content = document.createElement('div');\n this._content.className = 'dv-default-tab-content';\n this.action = document.createElement('div');\n this.action.className = 'dv-default-tab-action';\n this.action.appendChild(createCloseButton());\n this._element.appendChild(this._content);\n this._element.appendChild(this.action);\n this.render();\n }\n init(params) {\n this._title = params.title;\n this.addDisposables(params.api.onDidTitleChange((event) => {\n this._title = event.title;\n this.render();\n }), addDisposableListener(this.action, 'pointerdown', (ev) => {\n ev.preventDefault();\n }), addDisposableListener(this.action, 'click', (ev) => {\n if (ev.defaultPrevented) {\n return;\n }\n ev.preventDefault();\n params.api.close();\n }));\n this.render();\n }\n render() {\n var _a;\n if (this._content.textContent !== this._title) {\n this._content.textContent = (_a = this._title) !== null && _a !== void 0 ? _a : '';\n }\n }\n}\n","import { DefaultTab } from './components/tab/defaultTab';\nexport class DockviewPanelModel {\n get content() {\n return this._content;\n }\n get tab() {\n return this._tab;\n }\n constructor(accessor, id, contentComponent, tabComponent) {\n this.accessor = accessor;\n this.id = id;\n this.contentComponent = contentComponent;\n this.tabComponent = tabComponent;\n this._content = this.createContentComponent(this.id, contentComponent);\n this._tab = this.createTabComponent(this.id, tabComponent);\n }\n createTabRenderer(tabLocation) {\n var _a;\n const cmp = this.createTabComponent(this.id, this.tabComponent);\n if (this._params) {\n cmp.init(Object.assign(Object.assign({}, this._params), { tabLocation }));\n }\n if (this._updateEvent) {\n (_a = cmp.update) === null || _a === void 0 ? void 0 : _a.call(cmp, this._updateEvent);\n }\n return cmp;\n }\n init(params) {\n this._params = params;\n this.content.init(params);\n this.tab.init(Object.assign(Object.assign({}, params), { tabLocation: 'header' }));\n }\n layout(width, height) {\n var _a, _b;\n (_b = (_a = this.content).layout) === null || _b === void 0 ? void 0 : _b.call(_a, width, height);\n }\n update(event) {\n var _a, _b, _c, _d;\n this._updateEvent = event;\n (_b = (_a = this.content).update) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n (_d = (_c = this.tab).update) === null || _d === void 0 ? void 0 : _d.call(_c, event);\n }\n dispose() {\n var _a, _b, _c, _d;\n (_b = (_a = this.content).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_d = (_c = this.tab).dispose) === null || _d === void 0 ? void 0 : _d.call(_c);\n }\n createContentComponent(id, componentName) {\n return this.accessor.options.createComponent({\n id,\n name: componentName,\n });\n }\n createTabComponent(id, componentName) {\n const name = componentName !== null && componentName !== void 0 ? componentName : this.accessor.options.defaultTabComponent;\n if (name) {\n if (this.accessor.options.createTabComponent) {\n const component = this.accessor.options.createTabComponent({\n id,\n name,\n });\n if (component) {\n return component;\n }\n else {\n return new DefaultTab();\n }\n }\n console.warn(`dockview: tabComponent '${componentName}' was not found. falling back to the default tab.`);\n }\n return new DefaultTab();\n }\n}\n","import { DockviewPanel } from './dockviewPanel';\nimport { DockviewPanelModel } from './dockviewPanelModel';\nimport { DockviewApi } from '../api/component.api';\nexport class DefaultDockviewDeserialzier {\n constructor(accessor) {\n this.accessor = accessor;\n }\n fromJSON(panelData, group) {\n var _a, _b;\n const panelId = panelData.id;\n const params = panelData.params;\n const title = panelData.title;\n const viewData = panelData.view;\n const contentComponent = viewData\n ? viewData.content.id\n : (_a = panelData.contentComponent) !== null && _a !== void 0 ? _a : 'unknown';\n const tabComponent = viewData\n ? (_b = viewData.tab) === null || _b === void 0 ? void 0 : _b.id\n : panelData.tabComponent;\n const view = new DockviewPanelModel(this.accessor, panelId, contentComponent, tabComponent);\n const panel = new DockviewPanel(panelId, contentComponent, tabComponent, this.accessor, new DockviewApi(this.accessor), group, view, {\n renderer: panelData.renderer,\n minimumWidth: panelData.minimumWidth,\n minimumHeight: panelData.minimumHeight,\n maximumWidth: panelData.maximumWidth,\n maximumHeight: panelData.maximumHeight,\n });\n panel.init({\n title: title !== null && title !== void 0 ? title : panelId,\n params: params !== null && params !== void 0 ? params : {},\n });\n return panel;\n }\n}\n","import { CompositeDisposable } from '../../../lifecycle';\nexport class Watermark extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor() {\n super();\n this._element = document.createElement('div');\n this._element.className = 'dv-watermark';\n }\n init(_params) {\n // noop\n }\n}\n","import { disableIframePointEvents, quasiDefaultPrevented, toggleClass, } from '../dom';\nimport { Emitter, addDisposableListener, } from '../events';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nimport { clamp } from '../math';\nclass AriaLevelTracker {\n constructor() {\n this._orderedList = [];\n }\n push(element) {\n this._orderedList = [\n ...this._orderedList.filter((item) => item !== element),\n element,\n ];\n this.update();\n }\n destroy(element) {\n this._orderedList = this._orderedList.filter((item) => item !== element);\n this.update();\n }\n update() {\n for (let i = 0; i < this._orderedList.length; i++) {\n this._orderedList[i].setAttribute('aria-level', `${i}`);\n this._orderedList[i].style.zIndex = `calc(var(--dv-overlay-z-index, 999) + ${i * 2})`;\n }\n }\n}\nconst arialLevelTracker = new AriaLevelTracker();\nexport class Overlay extends CompositeDisposable {\n set minimumInViewportWidth(value) {\n this.options.minimumInViewportWidth = value;\n }\n set minimumInViewportHeight(value) {\n this.options.minimumInViewportHeight = value;\n }\n get element() {\n return this._element;\n }\n get isVisible() {\n return this._isVisible;\n }\n constructor(options) {\n super();\n this.options = options;\n this._element = document.createElement('div');\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._onDidChangeEnd = new Emitter();\n this.onDidChangeEnd = this._onDidChangeEnd.event;\n this.addDisposables(this._onDidChange, this._onDidChangeEnd);\n this._element.className = 'dv-resize-container';\n this._isVisible = true;\n this.setupResize('top');\n this.setupResize('bottom');\n this.setupResize('left');\n this.setupResize('right');\n this.setupResize('topleft');\n this.setupResize('topright');\n this.setupResize('bottomleft');\n this.setupResize('bottomright');\n this._element.appendChild(this.options.content);\n this.options.container.appendChild(this._element);\n // if input bad resize within acceptable boundaries\n this.setBounds(Object.assign(Object.assign(Object.assign(Object.assign({ height: this.options.height, width: this.options.width }, ('top' in this.options && { top: this.options.top })), ('bottom' in this.options && { bottom: this.options.bottom })), ('left' in this.options && { left: this.options.left })), ('right' in this.options && { right: this.options.right })));\n arialLevelTracker.push(this._element);\n }\n setVisible(isVisible) {\n if (isVisible === this.isVisible) {\n return;\n }\n this._isVisible = isVisible;\n toggleClass(this.element, 'dv-hidden', !this.isVisible);\n }\n bringToFront() {\n arialLevelTracker.push(this._element);\n }\n setBounds(bounds = {}) {\n if (typeof bounds.height === 'number') {\n this._element.style.height = `${bounds.height}px`;\n }\n if (typeof bounds.width === 'number') {\n this._element.style.width = `${bounds.width}px`;\n }\n if ('top' in bounds && typeof bounds.top === 'number') {\n this._element.style.top = `${bounds.top}px`;\n this._element.style.bottom = 'auto';\n this.verticalAlignment = 'top';\n }\n if ('bottom' in bounds && typeof bounds.bottom === 'number') {\n this._element.style.bottom = `${bounds.bottom}px`;\n this._element.style.top = 'auto';\n this.verticalAlignment = 'bottom';\n }\n if ('left' in bounds && typeof bounds.left === 'number') {\n this._element.style.left = `${bounds.left}px`;\n this._element.style.right = 'auto';\n this.horiziontalAlignment = 'left';\n }\n if ('right' in bounds && typeof bounds.right === 'number') {\n this._element.style.right = `${bounds.right}px`;\n this._element.style.left = 'auto';\n this.horiziontalAlignment = 'right';\n }\n const containerRect = this.options.container.getBoundingClientRect();\n const overlayRect = this._element.getBoundingClientRect();\n // region: ensure bounds within allowable limits\n // a minimum width of minimumViewportWidth must be inside the viewport\n const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));\n // a minimum height of minimumViewportHeight must be inside the viewport\n const yOffset = Math.max(0, this.getMinimumHeight(overlayRect.height));\n if (this.verticalAlignment === 'top') {\n const top = clamp(overlayRect.top - containerRect.top, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\n this._element.style.top = `${top}px`;\n this._element.style.bottom = 'auto';\n }\n if (this.verticalAlignment === 'bottom') {\n const bottom = clamp(containerRect.bottom - overlayRect.bottom, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\n this._element.style.bottom = `${bottom}px`;\n this._element.style.top = 'auto';\n }\n if (this.horiziontalAlignment === 'left') {\n const left = clamp(overlayRect.left - containerRect.left, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\n this._element.style.left = `${left}px`;\n this._element.style.right = 'auto';\n }\n if (this.horiziontalAlignment === 'right') {\n const right = clamp(containerRect.right - overlayRect.right, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\n this._element.style.right = `${right}px`;\n this._element.style.left = 'auto';\n }\n this._onDidChange.fire();\n }\n toJSON() {\n const container = this.options.container.getBoundingClientRect();\n const element = this._element.getBoundingClientRect();\n const result = {};\n if (this.verticalAlignment === 'top') {\n result.top = parseFloat(this._element.style.top);\n }\n else if (this.verticalAlignment === 'bottom') {\n result.bottom = parseFloat(this._element.style.bottom);\n }\n else {\n result.top = element.top - container.top;\n }\n if (this.horiziontalAlignment === 'left') {\n result.left = parseFloat(this._element.style.left);\n }\n else if (this.horiziontalAlignment === 'right') {\n result.right = parseFloat(this._element.style.right);\n }\n else {\n result.left = element.left - container.left;\n }\n result.width = element.width;\n result.height = element.height;\n return result;\n }\n setupDrag(dragTarget, options = { inDragMode: false }) {\n const move = new MutableDisposable();\n const track = () => {\n let offset = null;\n const iframes = disableIframePointEvents();\n move.value = new CompositeDisposable({\n dispose: () => {\n iframes.release();\n },\n }, addDisposableListener(window, 'pointermove', (e) => {\n const containerRect = this.options.container.getBoundingClientRect();\n const x = e.clientX - containerRect.left;\n const y = e.clientY - containerRect.top;\n toggleClass(this._element, 'dv-resize-container-dragging', true);\n const overlayRect = this._element.getBoundingClientRect();\n if (offset === null) {\n offset = {\n x: e.clientX - overlayRect.left,\n y: e.clientY - overlayRect.top,\n };\n }\n const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));\n const yOffset = Math.max(0, this.getMinimumHeight(overlayRect.height));\n const top = clamp(y - offset.y, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\n const bottom = clamp(offset.y -\n y +\n containerRect.height -\n overlayRect.height, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\n const left = clamp(x - offset.x, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\n const right = clamp(offset.x - x + containerRect.width - overlayRect.width, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\n const bounds = {};\n // Anchor to top or to bottom depending on which one is closer\n if (top <= bottom) {\n bounds.top = top;\n }\n else {\n bounds.bottom = bottom;\n }\n // Anchor to left or to right depending on which one is closer\n if (left <= right) {\n bounds.left = left;\n }\n else {\n bounds.right = right;\n }\n this.setBounds(bounds);\n }), addDisposableListener(window, 'pointerup', () => {\n toggleClass(this._element, 'dv-resize-container-dragging', false);\n move.dispose();\n this._onDidChangeEnd.fire();\n }));\n };\n this.addDisposables(move, addDisposableListener(dragTarget, 'pointerdown', (event) => {\n if (event.defaultPrevented) {\n event.preventDefault();\n return;\n }\n // if somebody has marked this event then treat as a defaultPrevented\n // without actually calling event.preventDefault()\n if (quasiDefaultPrevented(event)) {\n return;\n }\n track();\n }), addDisposableListener(this.options.content, 'pointerdown', (event) => {\n if (event.defaultPrevented) {\n return;\n }\n // if somebody has marked this event then treat as a defaultPrevented\n // without actually calling event.preventDefault()\n if (quasiDefaultPrevented(event)) {\n return;\n }\n if (event.shiftKey) {\n track();\n }\n }), addDisposableListener(this.options.content, 'pointerdown', () => {\n arialLevelTracker.push(this._element);\n }, true));\n if (options.inDragMode) {\n track();\n }\n }\n setupResize(direction) {\n const resizeHandleElement = document.createElement('div');\n resizeHandleElement.className = `dv-resize-handle-${direction}`;\n this._element.appendChild(resizeHandleElement);\n const move = new MutableDisposable();\n this.addDisposables(move, addDisposableListener(resizeHandleElement, 'pointerdown', (e) => {\n e.preventDefault();\n let startPosition = null;\n const iframes = disableIframePointEvents();\n move.value = new CompositeDisposable(addDisposableListener(window, 'pointermove', (e) => {\n const containerRect = this.options.container.getBoundingClientRect();\n const overlayRect = this._element.getBoundingClientRect();\n const y = e.clientY - containerRect.top;\n const x = e.clientX - containerRect.left;\n if (startPosition === null) {\n // record the initial dimensions since as all subsequence moves are relative to this\n startPosition = {\n originalY: y,\n originalHeight: overlayRect.height,\n originalX: x,\n originalWidth: overlayRect.width,\n };\n }\n let top = undefined;\n let bottom = undefined;\n let height = undefined;\n let left = undefined;\n let right = undefined;\n let width = undefined;\n const moveTop = () => {\n top = clamp(y, -Number.MAX_VALUE, startPosition.originalY +\n startPosition.originalHeight >\n containerRect.height\n ? this.getMinimumHeight(containerRect.height)\n : Math.max(0, startPosition.originalY +\n startPosition.originalHeight -\n Overlay.MINIMUM_HEIGHT));\n height =\n startPosition.originalY +\n startPosition.originalHeight -\n top;\n bottom = containerRect.height - top - height;\n };\n const moveBottom = () => {\n top =\n startPosition.originalY -\n startPosition.originalHeight;\n height = clamp(y - top, top < 0 &&\n typeof this.options\n .minimumInViewportHeight === 'number'\n ? -top +\n this.options.minimumInViewportHeight\n : Overlay.MINIMUM_HEIGHT, Number.MAX_VALUE);\n bottom = containerRect.height - top - height;\n };\n const moveLeft = () => {\n left = clamp(x, -Number.MAX_VALUE, startPosition.originalX +\n startPosition.originalWidth >\n containerRect.width\n ? this.getMinimumWidth(containerRect.width)\n : Math.max(0, startPosition.originalX +\n startPosition.originalWidth -\n Overlay.MINIMUM_WIDTH));\n width =\n startPosition.originalX +\n startPosition.originalWidth -\n left;\n right = containerRect.width - left - width;\n };\n const moveRight = () => {\n left =\n startPosition.originalX -\n startPosition.originalWidth;\n width = clamp(x - left, left < 0 &&\n typeof this.options\n .minimumInViewportWidth === 'number'\n ? -left +\n this.options.minimumInViewportWidth\n : Overlay.MINIMUM_WIDTH, Number.MAX_VALUE);\n right = containerRect.width - left - width;\n };\n switch (direction) {\n case 'top':\n moveTop();\n break;\n case 'bottom':\n moveBottom();\n break;\n case 'left':\n moveLeft();\n break;\n case 'right':\n moveRight();\n break;\n case 'topleft':\n moveTop();\n moveLeft();\n break;\n case 'topright':\n moveTop();\n moveRight();\n break;\n case 'bottomleft':\n moveBottom();\n moveLeft();\n break;\n case 'bottomright':\n moveBottom();\n moveRight();\n break;\n }\n const bounds = {};\n // Anchor to top or to bottom depending on which one is closer\n if (top <= bottom) {\n bounds.top = top;\n }\n else {\n bounds.bottom = bottom;\n }\n // Anchor to left or to right depending on which one is closer\n if (left <= right) {\n bounds.left = left;\n }\n else {\n bounds.right = right;\n }\n bounds.height = height;\n bounds.width = width;\n this.setBounds(bounds);\n }), {\n dispose: () => {\n iframes.release();\n },\n }, addDisposableListener(window, 'pointerup', () => {\n move.dispose();\n this._onDidChangeEnd.fire();\n }));\n }));\n }\n getMinimumWidth(width) {\n if (typeof this.options.minimumInViewportWidth === 'number') {\n return width - this.options.minimumInViewportWidth;\n }\n return 0;\n }\n getMinimumHeight(height) {\n if (typeof this.options.minimumInViewportHeight === 'number') {\n return height - this.options.minimumInViewportHeight;\n }\n return 0;\n }\n dispose() {\n arialLevelTracker.destroy(this._element);\n this._element.remove();\n super.dispose();\n }\n}\nOverlay.MINIMUM_HEIGHT = 20;\nOverlay.MINIMUM_WIDTH = 20;\n","import { CompositeDisposable } from '../lifecycle';\nexport class DockviewFloatingGroupPanel extends CompositeDisposable {\n constructor(group, overlay) {\n super();\n this.group = group;\n this.overlay = overlay;\n this.addDisposables(overlay);\n }\n position(bounds) {\n this.overlay.setBounds(bounds);\n }\n}\n","export const DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;\nexport const DEFAULT_FLOATING_GROUP_POSITION = { left: 100, top: 100, width: 300, height: 300 };\nexport const DESERIALIZATION_POPOUT_DELAY_MS = 100;\n","import { DragAndDropObserver } from '../dnd/dnd';\nimport { getDomNodePagePosition, toggleClass } from '../dom';\nimport { CompositeDisposable, Disposable, MutableDisposable, } from '../lifecycle';\nclass PositionCache {\n constructor() {\n this.cache = new Map();\n this.currentFrameId = 0;\n this.rafId = null;\n }\n getPosition(element) {\n const cached = this.cache.get(element);\n if (cached && cached.frameId === this.currentFrameId) {\n return cached.rect;\n }\n this.scheduleFrameUpdate();\n const rect = getDomNodePagePosition(element);\n this.cache.set(element, { rect, frameId: this.currentFrameId });\n return rect;\n }\n invalidate() {\n this.currentFrameId++;\n }\n scheduleFrameUpdate() {\n if (this.rafId)\n return;\n this.rafId = requestAnimationFrame(() => {\n this.currentFrameId++;\n this.rafId = null;\n });\n }\n}\nfunction createFocusableElement() {\n const element = document.createElement('div');\n element.tabIndex = -1;\n return element;\n}\nexport class OverlayRenderContainer extends CompositeDisposable {\n constructor(element, accessor) {\n super();\n this.element = element;\n this.accessor = accessor;\n this.map = {};\n this._disposed = false;\n this.positionCache = new PositionCache();\n this.pendingUpdates = new Set();\n this.addDisposables(Disposable.from(() => {\n for (const value of Object.values(this.map)) {\n value.disposable.dispose();\n value.destroy.dispose();\n }\n this._disposed = true;\n }));\n }\n updateAllPositions() {\n if (this._disposed) {\n return;\n }\n // Invalidate position cache to force recalculation\n this.positionCache.invalidate();\n // Call resize function directly for all visible panels\n for (const entry of Object.values(this.map)) {\n if (entry.panel.api.isVisible && entry.resize) {\n entry.resize();\n }\n }\n }\n detatch(panel) {\n if (this.map[panel.api.id]) {\n const { disposable, destroy } = this.map[panel.api.id];\n disposable.dispose();\n destroy.dispose();\n delete this.map[panel.api.id];\n return true;\n }\n return false;\n }\n attach(options) {\n const { panel, referenceContainer } = options;\n if (!this.map[panel.api.id]) {\n const element = createFocusableElement();\n element.className = 'dv-render-overlay';\n this.map[panel.api.id] = {\n panel,\n disposable: Disposable.NONE,\n destroy: Disposable.NONE,\n element,\n };\n }\n const focusContainer = this.map[panel.api.id].element;\n if (panel.view.content.element.parentElement !== focusContainer) {\n focusContainer.appendChild(panel.view.content.element);\n }\n if (focusContainer.parentElement !== this.element) {\n this.element.appendChild(focusContainer);\n }\n const resize = () => {\n const panelId = panel.api.id;\n if (this.pendingUpdates.has(panelId)) {\n return; // Update already scheduled\n }\n this.pendingUpdates.add(panelId);\n requestAnimationFrame(() => {\n this.pendingUpdates.delete(panelId);\n if (this.isDisposed || !this.map[panelId]) {\n return;\n }\n const box = this.positionCache.getPosition(referenceContainer.element);\n const box2 = this.positionCache.getPosition(this.element);\n // Use traditional positioning for overlay containers\n const left = box.left - box2.left;\n const top = box.top - box2.top;\n const width = box.width;\n const height = box.height;\n focusContainer.style.left = `${left}px`;\n focusContainer.style.top = `${top}px`;\n focusContainer.style.width = `${width}px`;\n focusContainer.style.height = `${height}px`;\n toggleClass(focusContainer, 'dv-render-overlay-float', panel.group.api.location.type === 'floating');\n });\n };\n const visibilityChanged = () => {\n if (panel.api.isVisible) {\n this.positionCache.invalidate();\n resize();\n }\n focusContainer.style.display = panel.api.isVisible ? '' : 'none';\n };\n const observerDisposable = new MutableDisposable();\n const correctLayerPosition = () => {\n if (panel.api.location.type === 'floating') {\n queueMicrotask(() => {\n const floatingGroup = this.accessor.floatingGroups.find((group) => group.group === panel.api.group);\n if (!floatingGroup) {\n return;\n }\n const element = floatingGroup.overlay.element;\n const update = () => {\n const level = Number(element.getAttribute('aria-level'));\n focusContainer.style.zIndex = `calc(var(--dv-overlay-z-index, 999) + ${level * 2 + 1})`;\n };\n const observer = new MutationObserver(() => {\n update();\n });\n observerDisposable.value = Disposable.from(() => observer.disconnect());\n observer.observe(element, {\n attributeFilter: ['aria-level'],\n attributes: true,\n });\n update();\n });\n }\n else {\n focusContainer.style.zIndex = ''; // reset the z-index, perhaps CSS will take over here\n }\n };\n const disposable = new CompositeDisposable(observerDisposable, \n /**\n * since container is positioned absoutely we must explicitly forward\n * the dnd events for the expect behaviours to continue to occur in terms of dnd\n *\n * the dnd observer does not need to be conditional on whether the panel is visible since\n * non-visible panels are 'display: none' and in such case the dnd observer will not fire.\n */\n new DragAndDropObserver(focusContainer, {\n onDragEnd: (e) => {\n referenceContainer.dropTarget.dnd.onDragEnd(e);\n },\n onDragEnter: (e) => {\n referenceContainer.dropTarget.dnd.onDragEnter(e);\n },\n onDragLeave: (e) => {\n referenceContainer.dropTarget.dnd.onDragLeave(e);\n },\n onDrop: (e) => {\n referenceContainer.dropTarget.dnd.onDrop(e);\n },\n onDragOver: (e) => {\n referenceContainer.dropTarget.dnd.onDragOver(e);\n },\n }), panel.api.onDidVisibilityChange(() => {\n /**\n * Control the visibility of the content, however even when not visible (display: none)\n * the content is still maintained within the DOM hence DOM specific attributes\n * such as scroll position are maintained when next made visible.\n */\n visibilityChanged();\n }), panel.api.onDidDimensionsChange(() => {\n if (!panel.api.isVisible) {\n return;\n }\n resize();\n }), panel.api.onDidLocationChange(() => {\n correctLayerPosition();\n }));\n this.map[panel.api.id].destroy = Disposable.from(() => {\n var _a;\n if (panel.view.content.element.parentElement === focusContainer) {\n focusContainer.removeChild(panel.view.content.element);\n }\n (_a = focusContainer.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(focusContainer);\n });\n correctLayerPosition();\n queueMicrotask(() => {\n if (this.isDisposed) {\n return;\n }\n /**\n * wait until everything has finished in the current stack-frame call before\n * calling the first resize as other size-altering events may still occur before\n * the end of the stack-frame.\n */\n visibilityChanged();\n });\n // dispose of logic asoccciated with previous reference-container\n this.map[panel.api.id].disposable.dispose();\n // and reset the disposable to the active reference-container\n this.map[panel.api.id].disposable = disposable;\n // store the resize function for direct access\n this.map[panel.api.id].resize = resize;\n return focusContainer;\n }\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { addStyles } from './dom';\nimport { Emitter, addDisposableListener } from './events';\nimport { CompositeDisposable, Disposable } from './lifecycle';\nexport class PopoutWindow extends CompositeDisposable {\n get window() {\n var _a, _b;\n return (_b = (_a = this._window) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : null;\n }\n constructor(target, className, options) {\n super();\n this.target = target;\n this.className = className;\n this.options = options;\n this._onWillClose = new Emitter();\n this.onWillClose = this._onWillClose.event;\n this._onDidClose = new Emitter();\n this.onDidClose = this._onDidClose.event;\n this._window = null;\n this.addDisposables(this._onWillClose, this._onDidClose, {\n dispose: () => {\n this.close();\n },\n });\n }\n dimensions() {\n if (!this._window) {\n return null;\n }\n const left = this._window.value.screenX;\n const top = this._window.value.screenY;\n const width = this._window.value.innerWidth;\n const height = this._window.value.innerHeight;\n return { top, left, width, height };\n }\n close() {\n var _a, _b;\n if (this._window) {\n this._onWillClose.fire();\n (_b = (_a = this.options).onWillClose) === null || _b === void 0 ? void 0 : _b.call(_a, {\n id: this.target,\n window: this._window.value,\n });\n this._window.disposable.dispose();\n this._window = null;\n this._onDidClose.fire();\n }\n }\n open() {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n if (this._window) {\n throw new Error('instance of popout window is already open');\n }\n const url = `${this.options.url}`;\n const features = Object.entries({\n top: this.options.top,\n left: this.options.left,\n width: this.options.width,\n height: this.options.height,\n })\n .map(([key, value]) => `${key}=${value}`)\n .join(',');\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/open\n */\n const externalWindow = window.open(url, this.target, features);\n if (!externalWindow) {\n /**\n * Popup blocked\n */\n return null;\n }\n const disposable = new CompositeDisposable();\n this._window = { value: externalWindow, disposable };\n disposable.addDisposables(Disposable.from(() => {\n externalWindow.close();\n }), addDisposableListener(window, 'beforeunload', () => {\n /**\n * before the main window closes we should close this popup too\n * to be good citizens\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event\n */\n this.close();\n }));\n const container = this.createPopoutWindowContainer();\n if (this.className) {\n container.classList.add(this.className);\n }\n (_b = (_a = this.options).onDidOpen) === null || _b === void 0 ? void 0 : _b.call(_a, {\n id: this.target,\n window: externalWindow,\n });\n return new Promise((resolve, reject) => {\n externalWindow.addEventListener('unload', (e) => {\n // if page fails to load before unloading\n // this.close();\n });\n externalWindow.addEventListener('load', () => {\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/load_event\n */\n try {\n const externalDocument = externalWindow.document;\n externalDocument.title = document.title;\n externalDocument.body.appendChild(container);\n addStyles(externalDocument, window.document.styleSheets);\n /**\n * beforeunload must be registered after load for reasons I could not determine\n * otherwise the beforeunload event will not fire when the window is closed\n */\n addDisposableListener(externalWindow, 'beforeunload', () => {\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event\n */\n this.close();\n });\n resolve(container);\n }\n catch (err) {\n // only except this is the DOM isn't setup. e.g. in a in correctly configured test\n reject(err);\n }\n });\n });\n });\n }\n createPopoutWindowContainer() {\n const el = document.createElement('div');\n el.classList.add('dv-popout-window');\n el.id = 'dv-popout-window';\n el.style.position = 'absolute';\n el.style.width = '100%';\n el.style.height = '100%';\n el.style.top = '0px';\n el.style.left = '0px';\n return el;\n }\n}\n","import { CompositeDisposable } from '../lifecycle';\nexport class StrictEventsSequencing extends CompositeDisposable {\n constructor(accessor) {\n super();\n this.accessor = accessor;\n this.init();\n }\n init() {\n const panels = new Set();\n const groups = new Set();\n this.addDisposables(this.accessor.onDidAddPanel((panel) => {\n if (panels.has(panel.api.id)) {\n throw new Error(`dockview: Invalid event sequence. [onDidAddPanel] called for panel ${panel.api.id} but panel already exists`);\n }\n else {\n panels.add(panel.api.id);\n }\n }), this.accessor.onDidRemovePanel((panel) => {\n if (!panels.has(panel.api.id)) {\n throw new Error(`dockview: Invalid event sequence. [onDidRemovePanel] called for panel ${panel.api.id} but panel does not exists`);\n }\n else {\n panels.delete(panel.api.id);\n }\n }), this.accessor.onDidAddGroup((group) => {\n if (groups.has(group.api.id)) {\n throw new Error(`dockview: Invalid event sequence. [onDidAddGroup] called for group ${group.api.id} but group already exists`);\n }\n else {\n groups.add(group.api.id);\n }\n }), this.accessor.onDidRemoveGroup((group) => {\n if (!groups.has(group.api.id)) {\n throw new Error(`dockview: Invalid event sequence. [onDidRemoveGroup] called for group ${group.api.id} but group does not exists`);\n }\n else {\n groups.delete(group.api.id);\n }\n }));\n }\n}\n","import { shiftAbsoluteElementIntoView } from '../../dom';\nimport { addDisposableListener } from '../../events';\nimport { CompositeDisposable, Disposable, MutableDisposable, } from '../../lifecycle';\nexport class PopupService extends CompositeDisposable {\n constructor(root) {\n super();\n this.root = root;\n this._active = null;\n this._activeDisposable = new MutableDisposable();\n this._element = document.createElement('div');\n this._element.className = 'dv-popover-anchor';\n this._element.style.position = 'relative';\n this.root.prepend(this._element);\n this.addDisposables(Disposable.from(() => {\n this.close();\n }), this._activeDisposable);\n }\n openPopover(element, position) {\n var _a;\n this.close();\n const wrapper = document.createElement('div');\n wrapper.style.position = 'absolute';\n wrapper.style.zIndex = (_a = position.zIndex) !== null && _a !== void 0 ? _a : 'var(--dv-overlay-z-index)';\n wrapper.appendChild(element);\n const anchorBox = this._element.getBoundingClientRect();\n const offsetX = anchorBox.left;\n const offsetY = anchorBox.top;\n wrapper.style.top = `${position.y - offsetY}px`;\n wrapper.style.left = `${position.x - offsetX}px`;\n this._element.appendChild(wrapper);\n this._active = wrapper;\n this._activeDisposable.value = new CompositeDisposable(addDisposableListener(window, 'pointerdown', (event) => {\n var _a;\n const target = event.target;\n if (!(target instanceof HTMLElement)) {\n return;\n }\n let el = target;\n while (el && el !== wrapper) {\n el = (_a = el === null || el === void 0 ? void 0 : el.parentElement) !== null && _a !== void 0 ? _a : null;\n }\n if (el) {\n return; // clicked within popover\n }\n this.close();\n }));\n requestAnimationFrame(() => {\n shiftAbsoluteElementIntoView(wrapper, this.root);\n });\n }\n close() {\n if (this._active) {\n this._active.remove();\n this._activeDisposable.dispose();\n this._active = null;\n }\n }\n}\n","import { CompositeDisposable, Disposable } from '../lifecycle';\nexport class DropTargetAnchorContainer extends CompositeDisposable {\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n var _a;\n if (this.disabled === value) {\n return;\n }\n this._disabled = value;\n if (value) {\n (_a = this.model) === null || _a === void 0 ? void 0 : _a.clear();\n }\n }\n get model() {\n if (this.disabled) {\n return undefined;\n }\n return {\n clear: () => {\n var _a;\n if (this._model) {\n (_a = this._model.root.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this._model.root);\n }\n this._model = undefined;\n },\n exists: () => {\n return !!this._model;\n },\n getElements: (event, outline) => {\n const changed = this._outline !== outline;\n this._outline = outline;\n if (this._model) {\n this._model.changed = changed;\n return this._model;\n }\n const container = this.createContainer();\n const anchor = this.createAnchor();\n this._model = { root: container, overlay: anchor, changed };\n container.appendChild(anchor);\n this.element.appendChild(container);\n if ((event === null || event === void 0 ? void 0 : event.target) instanceof HTMLElement) {\n const targetBox = event.target.getBoundingClientRect();\n const box = this.element.getBoundingClientRect();\n anchor.style.left = `${targetBox.left - box.left}px`;\n anchor.style.top = `${targetBox.top - box.top}px`;\n }\n return this._model;\n },\n };\n }\n constructor(element, options) {\n super();\n this.element = element;\n this._disabled = false;\n this._disabled = options.disabled;\n this.addDisposables(Disposable.from(() => {\n var _a;\n (_a = this.model) === null || _a === void 0 ? void 0 : _a.clear();\n }));\n }\n createContainer() {\n const el = document.createElement('div');\n el.className = 'dv-drop-target-container';\n return el;\n }\n createAnchor() {\n const el = document.createElement('div');\n el.className = 'dv-drop-target-anchor';\n el.style.visibility = 'hidden';\n return el;\n }\n}\n","import { getRelativeLocation, getGridLocation, orthogonal, } from '../gridview/gridview';\nimport { directionToPosition, Droptarget, } from '../dnd/droptarget';\nimport { tail, sequenceEquals, remove } from '../array';\nimport { DockviewPanel } from './dockviewPanel';\nimport { CompositeDisposable, Disposable } from '../lifecycle';\nimport { Event, Emitter, addDisposableListener } from '../events';\nimport { Watermark } from './components/watermark/watermark';\nimport { sequentialNumberGenerator } from '../math';\nimport { DefaultDockviewDeserialzier } from './deserializer';\nimport { DockviewUnhandledDragOverEvent, isGroupOptionsWithGroup, isGroupOptionsWithPanel, isPanelOptionsWithGroup, isPanelOptionsWithPanel, } from './options';\nimport { BaseGrid, toTarget, } from '../gridview/baseComponentGridview';\nimport { DockviewApi } from '../api/component.api';\nimport { Orientation } from '../splitview/splitview';\nimport { DockviewDidDropEvent, DockviewWillDropEvent, } from './dockviewGroupPanelModel';\nimport { WillShowOverlayLocationEvent } from './events';\nimport { DockviewGroupPanel } from './dockviewGroupPanel';\nimport { DockviewPanelModel } from './dockviewPanelModel';\nimport { getPanelData } from '../dnd/dataTransfer';\nimport { Overlay } from '../overlay/overlay';\nimport { addTestId, Classnames, getDockviewTheme, onDidWindowResizeEnd, onDidWindowMoveEnd, toggleClass, watchElementResize, } from '../dom';\nimport { DockviewFloatingGroupPanel } from './dockviewFloatingGroupPanel';\nimport { DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE, DEFAULT_FLOATING_GROUP_POSITION, DESERIALIZATION_POPOUT_DELAY_MS, } from '../constants';\nimport { OverlayRenderContainer, } from '../overlay/overlayRenderContainer';\nimport { PopoutWindow } from '../popoutWindow';\nimport { StrictEventsSequencing } from './strictEventsSequencing';\nimport { PopupService } from './components/popupService';\nimport { DropTargetAnchorContainer } from '../dnd/dropTargetAnchorContainer';\nimport { themeAbyss } from './theme';\nconst DEFAULT_ROOT_OVERLAY_MODEL = {\n activationSize: { type: 'pixels', value: 10 },\n size: { type: 'pixels', value: 20 },\n};\nfunction moveGroupWithoutDestroying(options) {\n const activePanel = options.from.activePanel;\n const panels = [...options.from.panels].map((panel) => {\n const removedPanel = options.from.model.removePanel(panel);\n options.from.model.renderContainer.detatch(panel);\n return removedPanel;\n });\n panels.forEach((panel) => {\n options.to.model.openPanel(panel, {\n skipSetActive: activePanel !== panel,\n skipSetGroupActive: true,\n });\n });\n}\nexport class DockviewComponent extends BaseGrid {\n get orientation() {\n return this.gridview.orientation;\n }\n get totalPanels() {\n return this.panels.length;\n }\n get panels() {\n return this.groups.flatMap((group) => group.panels);\n }\n get options() {\n return this._options;\n }\n get activePanel() {\n const activeGroup = this.activeGroup;\n if (!activeGroup) {\n return undefined;\n }\n return activeGroup.activePanel;\n }\n get renderer() {\n var _a;\n return (_a = this.options.defaultRenderer) !== null && _a !== void 0 ? _a : 'onlyWhenVisible';\n }\n get api() {\n return this._api;\n }\n get floatingGroups() {\n return this._floatingGroups;\n }\n /**\n * Promise that resolves when all popout groups from the last fromJSON call are restored.\n * Useful for tests that need to wait for delayed popout creation.\n */\n get popoutRestorationPromise() {\n return this._popoutRestorationPromise;\n }\n constructor(container, options) {\n var _a, _b, _c;\n super(container, {\n proportionalLayout: true,\n orientation: Orientation.HORIZONTAL,\n styles: options.hideBorders\n ? { separatorBorder: 'transparent' }\n : undefined,\n disableAutoResizing: options.disableAutoResizing,\n locked: options.locked,\n margin: (_b = (_a = options.theme) === null || _a === void 0 ? void 0 : _a.gap) !== null && _b !== void 0 ? _b : 0,\n className: options.className,\n });\n this.nextGroupId = sequentialNumberGenerator();\n this._deserializer = new DefaultDockviewDeserialzier(this);\n this._watermark = null;\n this._onWillDragPanel = new Emitter();\n this.onWillDragPanel = this._onWillDragPanel.event;\n this._onWillDragGroup = new Emitter();\n this.onWillDragGroup = this._onWillDragGroup.event;\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n this._onWillDrop = new Emitter();\n this.onWillDrop = this._onWillDrop.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._onUnhandledDragOverEvent = new Emitter();\n this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;\n this._onDidRemovePanel = new Emitter();\n this.onDidRemovePanel = this._onDidRemovePanel.event;\n this._onDidAddPanel = new Emitter();\n this.onDidAddPanel = this._onDidAddPanel.event;\n this._onDidPopoutGroupSizeChange = new Emitter();\n this.onDidPopoutGroupSizeChange = this._onDidPopoutGroupSizeChange.event;\n this._onDidPopoutGroupPositionChange = new Emitter();\n this.onDidPopoutGroupPositionChange = this._onDidPopoutGroupPositionChange.event;\n this._onDidOpenPopoutWindowFail = new Emitter();\n this.onDidOpenPopoutWindowFail = this._onDidOpenPopoutWindowFail.event;\n this._onDidLayoutFromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;\n this._onDidActivePanelChange = new Emitter({ replay: true });\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\n this._onDidMovePanel = new Emitter();\n this.onDidMovePanel = this._onDidMovePanel.event;\n this._onDidMaximizedGroupChange = new Emitter();\n this.onDidMaximizedGroupChange = this._onDidMaximizedGroupChange.event;\n this._floatingGroups = [];\n this._popoutGroups = [];\n this._popoutRestorationPromise = Promise.resolve();\n this._onDidRemoveGroup = new Emitter();\n this.onDidRemoveGroup = this._onDidRemoveGroup.event;\n this._onDidAddGroup = new Emitter();\n this.onDidAddGroup = this._onDidAddGroup.event;\n this._onDidOptionsChange = new Emitter();\n this.onDidOptionsChange = this._onDidOptionsChange.event;\n this._onDidActiveGroupChange = new Emitter();\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\n this._moving = false;\n this._options = options;\n this.popupService = new PopupService(this.element);\n this._themeClassnames = new Classnames(this.element);\n this._api = new DockviewApi(this);\n this.rootDropTargetContainer = new DropTargetAnchorContainer(this.element, { disabled: true });\n this.overlayRenderContainer = new OverlayRenderContainer(this.gridview.element, this);\n this._rootDropTarget = new Droptarget(this.element, {\n className: 'dv-drop-target-edge',\n canDisplayOverlay: (event, position) => {\n const data = getPanelData();\n if (data) {\n if (data.viewId !== this.id) {\n return false;\n }\n if (position === 'center') {\n // center drop target is only allowed if there are no panels in the grid\n // floating panels are allowed\n return this.gridview.length === 0;\n }\n return true;\n }\n if (position === 'center' && this.gridview.length !== 0) {\n /**\n * for external events only show the four-corner drag overlays, disable\n * the center position so that external drag events can fall through to the group\n * and panel drop target handlers\n */\n return false;\n }\n const firedEvent = new DockviewUnhandledDragOverEvent(event, 'edge', position, getPanelData);\n this._onUnhandledDragOverEvent.fire(firedEvent);\n return firedEvent.isAccepted;\n },\n acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],\n overlayModel: (_c = options.rootOverlayModel) !== null && _c !== void 0 ? _c : DEFAULT_ROOT_OVERLAY_MODEL,\n getOverrideTarget: () => { var _a; return (_a = this.rootDropTargetContainer) === null || _a === void 0 ? void 0 : _a.model; },\n });\n this.updateDropTargetModel(options);\n toggleClass(this.gridview.element, 'dv-dockview', true);\n toggleClass(this.element, 'dv-debug', !!options.debug);\n this.updateTheme();\n this.updateWatermark();\n if (options.debug) {\n this.addDisposables(new StrictEventsSequencing(this));\n }\n this.addDisposables(this.rootDropTargetContainer, this.overlayRenderContainer, this._onWillDragPanel, this._onWillDragGroup, this._onWillShowOverlay, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, this._onWillDrop, this._onDidMovePanel, this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this._onUnhandledDragOverEvent, this._onDidMaximizedGroupChange, this._onDidOptionsChange, this._onDidPopoutGroupSizeChange, this._onDidPopoutGroupPositionChange, this._onDidOpenPopoutWindowFail, this.onDidViewVisibilityChangeMicroTaskQueue(() => {\n this.updateWatermark();\n }), this.onDidAdd((event) => {\n if (!this._moving) {\n this._onDidAddGroup.fire(event);\n }\n }), this.onDidRemove((event) => {\n if (!this._moving) {\n this._onDidRemoveGroup.fire(event);\n }\n }), this.onDidActiveChange((event) => {\n if (!this._moving) {\n this._onDidActiveGroupChange.fire(event);\n }\n }), this.onDidMaximizedChange((event) => {\n this._onDidMaximizedGroupChange.fire({\n group: event.panel,\n isMaximized: event.isMaximized,\n });\n }), Event.any(this.onDidAdd, this.onDidRemove)(() => {\n this.updateWatermark();\n }), Event.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidAddGroup, this.onDidRemove, this.onDidMovePanel, this.onDidActivePanelChange, this.onDidPopoutGroupPositionChange, this.onDidPopoutGroupSizeChange)(() => {\n this._bufferOnDidLayoutChange.fire();\n }), Disposable.from(() => {\n // iterate over a copy of the array since .dispose() mutates the original array\n for (const group of [...this._floatingGroups]) {\n group.dispose();\n }\n // iterate over a copy of the array since .dispose() mutates the original array\n for (const group of [...this._popoutGroups]) {\n group.disposable.dispose();\n }\n }), this._rootDropTarget, this._rootDropTarget.onWillShowOverlay((event) => {\n if (this.gridview.length > 0 && event.position === 'center') {\n // option only available when no panels in primary grid\n return;\n }\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {\n kind: 'edge',\n panel: undefined,\n api: this._api,\n group: undefined,\n getData: getPanelData,\n }));\n }), this._rootDropTarget.onDrop((event) => {\n var _a;\n const willDropEvent = new DockviewWillDropEvent({\n nativeEvent: event.nativeEvent,\n position: event.position,\n panel: undefined,\n api: this._api,\n group: undefined,\n getData: getPanelData,\n kind: 'edge',\n });\n this._onWillDrop.fire(willDropEvent);\n if (willDropEvent.defaultPrevented) {\n return;\n }\n const data = getPanelData();\n if (data) {\n this.moveGroupOrPanel({\n from: {\n groupId: data.groupId,\n panelId: (_a = data.panelId) !== null && _a !== void 0 ? _a : undefined,\n },\n to: {\n group: this.orthogonalize(event.position),\n position: 'center',\n },\n });\n }\n else {\n this._onDidDrop.fire(new DockviewDidDropEvent({\n nativeEvent: event.nativeEvent,\n position: event.position,\n panel: undefined,\n api: this._api,\n group: undefined,\n getData: getPanelData,\n }));\n }\n }), this._rootDropTarget);\n }\n setVisible(panel, visible) {\n switch (panel.api.location.type) {\n case 'grid':\n super.setVisible(panel, visible);\n break;\n case 'floating': {\n const item = this.floatingGroups.find((floatingGroup) => floatingGroup.group === panel);\n if (item) {\n item.overlay.setVisible(visible);\n panel.api._onDidVisibilityChange.fire({\n isVisible: visible,\n });\n }\n break;\n }\n case 'popout':\n console.warn('dockview: You cannot hide a group that is in a popout window');\n break;\n }\n }\n addPopoutGroup(itemToPopout, options) {\n var _a, _b, _c, _d, _e;\n if (itemToPopout instanceof DockviewPanel &&\n itemToPopout.group.size === 1) {\n return this.addPopoutGroup(itemToPopout.group, options);\n }\n const theme = getDockviewTheme(this.gridview.element);\n const element = this.element;\n function getBox() {\n if (options === null || options === void 0 ? void 0 : options.position) {\n return options.position;\n }\n if (itemToPopout instanceof DockviewGroupPanel) {\n return itemToPopout.element.getBoundingClientRect();\n }\n if (itemToPopout.group) {\n return itemToPopout.group.element.getBoundingClientRect();\n }\n return element.getBoundingClientRect();\n }\n const box = getBox();\n const groupId = (_b = (_a = options === null || options === void 0 ? void 0 : options.overridePopoutGroup) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : this.getNextGroupId();\n const _window = new PopoutWindow(`${this.id}-${groupId}`, // unique id\n theme !== null && theme !== void 0 ? theme : '', {\n url: (_e = (_c = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _c !== void 0 ? _c : (_d = this.options) === null || _d === void 0 ? void 0 : _d.popoutUrl) !== null && _e !== void 0 ? _e : '/popout.html',\n left: window.screenX + box.left,\n top: window.screenY + box.top,\n width: box.width,\n height: box.height,\n onDidOpen: options === null || options === void 0 ? void 0 : options.onDidOpen,\n onWillClose: options === null || options === void 0 ? void 0 : options.onWillClose,\n });\n const popoutWindowDisposable = new CompositeDisposable(_window, _window.onDidClose(() => {\n popoutWindowDisposable.dispose();\n }));\n return _window\n .open()\n .then((popoutContainer) => {\n var _a;\n if (_window.isDisposed) {\n return false;\n }\n const referenceGroup = (options === null || options === void 0 ? void 0 : options.referenceGroup)\n ? options.referenceGroup\n : itemToPopout instanceof DockviewPanel\n ? itemToPopout.group\n : itemToPopout;\n const referenceLocation = itemToPopout.api.location.type;\n /**\n * The group that is being added doesn't already exist within the DOM, the most likely occurrence\n * of this case is when being called from the `fromJSON(...)` method\n */\n const isGroupAddedToDom = referenceGroup.element.parentElement !== null;\n let group;\n if (!isGroupAddedToDom) {\n group = referenceGroup;\n }\n else if (options === null || options === void 0 ? void 0 : options.overridePopoutGroup) {\n group = options.overridePopoutGroup;\n }\n else {\n group = this.createGroup({ id: groupId });\n if (popoutContainer) {\n this._onDidAddGroup.fire(group);\n }\n }\n if (popoutContainer === null) {\n console.error('dockview: failed to create popout. perhaps you need to allow pop-ups for this website');\n popoutWindowDisposable.dispose();\n this._onDidOpenPopoutWindowFail.fire();\n // if the popout window was blocked, we need to move the group back to the reference group\n // and set it to visible\n this.movingLock(() => moveGroupWithoutDestroying({\n from: group,\n to: referenceGroup,\n }));\n if (!referenceGroup.api.isVisible) {\n referenceGroup.api.setVisible(true);\n }\n return false;\n }\n const gready = document.createElement('div');\n gready.className = 'dv-overlay-render-container';\n const overlayRenderContainer = new OverlayRenderContainer(gready, this);\n group.model.renderContainer = overlayRenderContainer;\n group.layout(_window.window.innerWidth, _window.window.innerHeight);\n let floatingBox;\n if (!(options === null || options === void 0 ? void 0 : options.overridePopoutGroup) && isGroupAddedToDom) {\n if (itemToPopout instanceof DockviewPanel) {\n this.movingLock(() => {\n const panel = referenceGroup.model.removePanel(itemToPopout);\n group.model.openPanel(panel);\n });\n }\n else {\n this.movingLock(() => moveGroupWithoutDestroying({\n from: referenceGroup,\n to: group,\n }));\n switch (referenceLocation) {\n case 'grid':\n referenceGroup.api.setVisible(false);\n break;\n case 'floating':\n case 'popout':\n floatingBox = (_a = this._floatingGroups\n .find((value) => value.group.api.id ===\n itemToPopout.api.id)) === null || _a === void 0 ? void 0 : _a.overlay.toJSON();\n this.removeGroup(referenceGroup);\n break;\n }\n }\n }\n popoutContainer.classList.add('dv-dockview');\n popoutContainer.style.overflow = 'hidden';\n popoutContainer.appendChild(gready);\n popoutContainer.appendChild(group.element);\n const anchor = document.createElement('div');\n const dropTargetContainer = new DropTargetAnchorContainer(anchor, { disabled: this.rootDropTargetContainer.disabled });\n popoutContainer.appendChild(anchor);\n group.model.dropTargetContainer = dropTargetContainer;\n group.model.location = {\n type: 'popout',\n getWindow: () => _window.window,\n popoutUrl: options === null || options === void 0 ? void 0 : options.popoutUrl,\n };\n if (isGroupAddedToDom &&\n itemToPopout.api.location.type === 'grid') {\n itemToPopout.api.setVisible(false);\n }\n this.doSetGroupAndPanelActive(group);\n popoutWindowDisposable.addDisposables(group.api.onDidActiveChange((event) => {\n var _a;\n if (event.isActive) {\n (_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();\n }\n }), group.api.onWillFocus(() => {\n var _a;\n (_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();\n }));\n let returnedGroup;\n const isValidReferenceGroup = isGroupAddedToDom &&\n referenceGroup &&\n this.getPanel(referenceGroup.id);\n const value = {\n window: _window,\n popoutGroup: group,\n referenceGroup: isValidReferenceGroup\n ? referenceGroup.id\n : undefined,\n disposable: {\n dispose: () => {\n popoutWindowDisposable.dispose();\n return returnedGroup;\n },\n },\n };\n const _onDidWindowPositionChange = onDidWindowMoveEnd(_window.window);\n popoutWindowDisposable.addDisposables(_onDidWindowPositionChange, onDidWindowResizeEnd(_window.window, () => {\n this._onDidPopoutGroupSizeChange.fire({\n width: _window.window.innerWidth,\n height: _window.window.innerHeight,\n group,\n });\n }), _onDidWindowPositionChange.event(() => {\n this._onDidPopoutGroupPositionChange.fire({\n screenX: _window.window.screenX,\n screenY: _window.window.screenX,\n group,\n });\n }), \n /**\n * ResizeObserver seems slow here, I do not know why but we don't need it\n * since we can reply on the window resize event as we will occupy the full\n * window dimensions\n */\n addDisposableListener(_window.window, 'resize', () => {\n group.layout(_window.window.innerWidth, _window.window.innerHeight);\n }), overlayRenderContainer, Disposable.from(() => {\n if (this.isDisposed) {\n return; // cleanup may run after instance is disposed\n }\n if (isGroupAddedToDom &&\n this.getPanel(referenceGroup.id)) {\n this.movingLock(() => moveGroupWithoutDestroying({\n from: group,\n to: referenceGroup,\n }));\n if (!referenceGroup.api.isVisible) {\n referenceGroup.api.setVisible(true);\n }\n if (this.getPanel(group.id)) {\n this.doRemoveGroup(group, {\n skipPopoutAssociated: true,\n });\n }\n }\n else if (this.getPanel(group.id)) {\n group.model.renderContainer =\n this.overlayRenderContainer;\n group.model.dropTargetContainer =\n this.rootDropTargetContainer;\n returnedGroup = group;\n const alreadyRemoved = !this._popoutGroups.find((p) => p.popoutGroup === group);\n if (alreadyRemoved) {\n /**\n * If this popout group was explicitly removed then we shouldn't run the additional\n * steps. To tell if the running of this disposable is the result of this popout group\n * being explicitly removed we can check if this popout group is still referenced in\n * the `this._popoutGroups` list.\n */\n return;\n }\n if (floatingBox) {\n this.addFloatingGroup(group, {\n height: floatingBox.height,\n width: floatingBox.width,\n position: floatingBox,\n });\n }\n else {\n this.doRemoveGroup(group, {\n skipDispose: true,\n skipActive: true,\n skipPopoutReturn: true,\n });\n group.model.location = { type: 'grid' };\n this.movingLock(() => {\n // suppress group add events since the group already exists\n this.doAddGroup(group, [0]);\n });\n }\n this.doSetGroupAndPanelActive(group);\n }\n }));\n this._popoutGroups.push(value);\n this.updateWatermark();\n return true;\n })\n .catch((err) => {\n console.error('dockview: failed to create popout.', err);\n return false;\n });\n }\n addFloatingGroup(item, options) {\n var _a, _b, _c, _d, _e;\n let group;\n if (item instanceof DockviewPanel) {\n group = this.createGroup();\n this._onDidAddGroup.fire(group);\n this.movingLock(() => this.removePanel(item, {\n removeEmptyGroup: true,\n skipDispose: true,\n skipSetActiveGroup: true,\n }));\n this.movingLock(() => group.model.openPanel(item, { skipSetGroupActive: true }));\n }\n else {\n group = item;\n const popoutReferenceGroupId = (_a = this._popoutGroups.find((_) => _.popoutGroup === group)) === null || _a === void 0 ? void 0 : _a.referenceGroup;\n const popoutReferenceGroup = popoutReferenceGroupId\n ? this.getPanel(popoutReferenceGroupId)\n : undefined;\n const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&\n options.skipRemoveGroup;\n if (!skip) {\n if (popoutReferenceGroup) {\n this.movingLock(() => moveGroupWithoutDestroying({\n from: item,\n to: popoutReferenceGroup,\n }));\n this.doRemoveGroup(item, {\n skipPopoutReturn: true,\n skipPopoutAssociated: true,\n });\n this.doRemoveGroup(popoutReferenceGroup, {\n skipDispose: true,\n });\n group = popoutReferenceGroup;\n }\n else {\n this.doRemoveGroup(item, {\n skipDispose: true,\n skipPopoutReturn: true,\n skipPopoutAssociated: false,\n });\n }\n }\n }\n function getAnchoredBox() {\n if (options === null || options === void 0 ? void 0 : options.position) {\n const result = {};\n if ('left' in options.position) {\n result.left = Math.max(options.position.left, 0);\n }\n else if ('right' in options.position) {\n result.right = Math.max(options.position.right, 0);\n }\n else {\n result.left = DEFAULT_FLOATING_GROUP_POSITION.left;\n }\n if ('top' in options.position) {\n result.top = Math.max(options.position.top, 0);\n }\n else if ('bottom' in options.position) {\n result.bottom = Math.max(options.position.bottom, 0);\n }\n else {\n result.top = DEFAULT_FLOATING_GROUP_POSITION.top;\n }\n if (typeof options.width === 'number') {\n result.width = Math.max(options.width, 0);\n }\n else {\n result.width = DEFAULT_FLOATING_GROUP_POSITION.width;\n }\n if (typeof options.height === 'number') {\n result.height = Math.max(options.height, 0);\n }\n else {\n result.height = DEFAULT_FLOATING_GROUP_POSITION.height;\n }\n return result;\n }\n return {\n left: typeof (options === null || options === void 0 ? void 0 : options.x) === 'number'\n ? Math.max(options.x, 0)\n : DEFAULT_FLOATING_GROUP_POSITION.left,\n top: typeof (options === null || options === void 0 ? void 0 : options.y) === 'number'\n ? Math.max(options.y, 0)\n : DEFAULT_FLOATING_GROUP_POSITION.top,\n width: typeof (options === null || options === void 0 ? void 0 : options.width) === 'number'\n ? Math.max(options.width, 0)\n : DEFAULT_FLOATING_GROUP_POSITION.width,\n height: typeof (options === null || options === void 0 ? void 0 : options.height) === 'number'\n ? Math.max(options.height, 0)\n : DEFAULT_FLOATING_GROUP_POSITION.height,\n };\n }\n const anchoredBox = getAnchoredBox();\n const overlay = new Overlay(Object.assign(Object.assign({ container: this.gridview.element, content: group.element }, anchoredBox), { minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'\n ? undefined\n : (_c = (_b = this.options.floatingGroupBounds) === null || _b === void 0 ? void 0 : _b.minimumWidthWithinViewport) !== null && _c !== void 0 ? _c : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE, minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'\n ? undefined\n : (_e = (_d = this.options.floatingGroupBounds) === null || _d === void 0 ? void 0 : _d.minimumHeightWithinViewport) !== null && _e !== void 0 ? _e : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE }));\n const el = group.element.querySelector('.dv-void-container');\n if (!el) {\n throw new Error('dockview: failed to find drag handle');\n }\n overlay.setupDrag(el, {\n inDragMode: typeof (options === null || options === void 0 ? void 0 : options.inDragMode) === 'boolean'\n ? options.inDragMode\n : false,\n });\n const floatingGroupPanel = new DockviewFloatingGroupPanel(group, overlay);\n const disposable = new CompositeDisposable(group.api.onDidActiveChange((event) => {\n if (event.isActive) {\n overlay.bringToFront();\n }\n }), watchElementResize(group.element, (entry) => {\n const { width, height } = entry.contentRect;\n group.layout(width, height); // let the group know it's size is changing so it can fire events to the panel\n }));\n floatingGroupPanel.addDisposables(overlay.onDidChange(() => {\n // this is either a resize or a move\n // to inform the panels .layout(...) the group with it's current size\n // don't care about resize since the above watcher handles that\n group.layout(group.width, group.height);\n }), overlay.onDidChangeEnd(() => {\n this._bufferOnDidLayoutChange.fire();\n }), group.onDidChange((event) => {\n overlay.setBounds({\n height: event === null || event === void 0 ? void 0 : event.height,\n width: event === null || event === void 0 ? void 0 : event.width,\n });\n }), {\n dispose: () => {\n disposable.dispose();\n remove(this._floatingGroups, floatingGroupPanel);\n group.model.location = { type: 'grid' };\n this.updateWatermark();\n },\n });\n this._floatingGroups.push(floatingGroupPanel);\n group.model.location = { type: 'floating' };\n if (!(options === null || options === void 0 ? void 0 : options.skipActiveGroup)) {\n this.doSetGroupAndPanelActive(group);\n }\n this.updateWatermark();\n }\n orthogonalize(position, options) {\n this.gridview.normalize();\n switch (position) {\n case 'top':\n case 'bottom':\n if (this.gridview.orientation === Orientation.HORIZONTAL) {\n // we need to add to a vertical splitview but the current root is a horizontal splitview.\n // insert a vertical splitview at the root level and add the existing view as a child\n this.gridview.insertOrthogonalSplitviewAtRoot();\n }\n break;\n case 'left':\n case 'right':\n if (this.gridview.orientation === Orientation.VERTICAL) {\n // we need to add to a horizontal splitview but the current root is a vertical splitview.\n // insert a horiziontal splitview at the root level and add the existing view as a child\n this.gridview.insertOrthogonalSplitviewAtRoot();\n }\n break;\n default:\n break;\n }\n switch (position) {\n case 'top':\n case 'left':\n case 'center':\n return this.createGroupAtLocation([0], undefined, options); // insert into first position\n case 'bottom':\n case 'right':\n return this.createGroupAtLocation([this.gridview.length], undefined, options); // insert into last position\n default:\n throw new Error(`dockview: unsupported position ${position}`);\n }\n }\n updateOptions(options) {\n var _a, _b;\n super.updateOptions(options);\n if ('floatingGroupBounds' in options) {\n for (const group of this._floatingGroups) {\n switch (options.floatingGroupBounds) {\n case 'boundedWithinViewport':\n group.overlay.minimumInViewportHeight = undefined;\n group.overlay.minimumInViewportWidth = undefined;\n break;\n case undefined:\n group.overlay.minimumInViewportHeight =\n DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;\n group.overlay.minimumInViewportWidth =\n DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;\n break;\n default:\n group.overlay.minimumInViewportHeight =\n (_a = options.floatingGroupBounds) === null || _a === void 0 ? void 0 : _a.minimumHeightWithinViewport;\n group.overlay.minimumInViewportWidth =\n (_b = options.floatingGroupBounds) === null || _b === void 0 ? void 0 : _b.minimumWidthWithinViewport;\n }\n group.overlay.setBounds();\n }\n }\n this.updateDropTargetModel(options);\n const oldDisableDnd = this.options.disableDnd;\n this._options = Object.assign(Object.assign({}, this.options), options);\n const newDisableDnd = this.options.disableDnd;\n if (oldDisableDnd !== newDisableDnd) {\n this.updateDragAndDropState();\n }\n if ('theme' in options) {\n this.updateTheme();\n }\n this.layout(this.gridview.width, this.gridview.height, true);\n }\n layout(width, height, forceResize) {\n super.layout(width, height, forceResize);\n if (this._floatingGroups) {\n for (const floating of this._floatingGroups) {\n // ensure floting groups stay within visible boundaries\n floating.overlay.setBounds();\n }\n }\n }\n updateDragAndDropState() {\n // Update draggable state for all tabs and void containers\n for (const group of this.groups) {\n group.model.updateDragAndDropState();\n }\n }\n focus() {\n var _a;\n (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();\n }\n getGroupPanel(id) {\n return this.panels.find((panel) => panel.id === id);\n }\n setActivePanel(panel) {\n panel.group.model.openPanel(panel);\n this.doSetGroupAndPanelActive(panel.group);\n }\n moveToNext(options = {}) {\n var _a;\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n if (options.includePanel && options.group) {\n if (options.group.activePanel !==\n options.group.panels[options.group.panels.length - 1]) {\n options.group.model.moveToNext({ suppressRoll: true });\n return;\n }\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;\n this.doSetGroupAndPanelActive(next);\n }\n moveToPrevious(options = {}) {\n var _a;\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n if (options.includePanel && options.group) {\n if (options.group.activePanel !== options.group.panels[0]) {\n options.group.model.moveToPrevious({ suppressRoll: true });\n return;\n }\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;\n if (next) {\n this.doSetGroupAndPanelActive(next);\n }\n }\n /**\n * Serialize the current state of the layout\n *\n * @returns A JSON respresentation of the layout\n */\n toJSON() {\n var _a;\n const data = this.gridview.serialize();\n const panels = this.panels.reduce((collection, panel) => {\n collection[panel.id] = panel.toJSON();\n return collection;\n }, {});\n const floats = this._floatingGroups.map((group) => {\n return {\n data: group.group.toJSON(),\n position: group.overlay.toJSON(),\n };\n });\n const popoutGroups = this._popoutGroups.map((group) => {\n return {\n data: group.popoutGroup.toJSON(),\n gridReferenceGroup: group.referenceGroup,\n position: group.window.dimensions(),\n url: group.popoutGroup.api.location.type === 'popout'\n ? group.popoutGroup.api.location.popoutUrl\n : undefined,\n };\n });\n const result = {\n grid: data,\n panels,\n activeGroup: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,\n };\n if (floats.length > 0) {\n result.floatingGroups = floats;\n }\n if (popoutGroups.length > 0) {\n result.popoutGroups = popoutGroups;\n }\n return result;\n }\n fromJSON(data, options) {\n var _a, _b;\n const existingPanels = new Map();\n let tempGroup;\n if (options === null || options === void 0 ? void 0 : options.reuseExistingPanels) {\n /**\n * What are we doing here?\n *\n * 1. Create a temporary group to hold any panels that currently exist and that also exist in the new layout\n * 2. Remove that temporary group from the group mapping so that it doesn't get cleared when we clear the layout\n */\n tempGroup = this.createGroup();\n this._groups.delete(tempGroup.api.id);\n const newPanels = Object.keys(data.panels);\n for (const panel of this.panels) {\n if (newPanels.includes(panel.api.id)) {\n existingPanels.set(panel.api.id, panel);\n }\n }\n this.movingLock(() => {\n Array.from(existingPanels.values()).forEach((panel) => {\n this.moveGroupOrPanel({\n from: {\n groupId: panel.api.group.api.id,\n panelId: panel.api.id,\n },\n to: {\n group: tempGroup,\n position: 'center',\n },\n keepEmptyGroups: true,\n });\n });\n });\n }\n this.clear();\n if (typeof data !== 'object' || data === null) {\n throw new Error('dockview: serialized layout must be a non-null object');\n }\n const { grid, panels, activeGroup } = data;\n if (grid.root.type !== 'branch' || !Array.isArray(grid.root.data)) {\n throw new Error('dockview: root must be of type branch');\n }\n try {\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n const createGroupFromSerializedState = (data) => {\n const { id, locked, hideHeader, views, activeView } = data;\n if (typeof id !== 'string') {\n throw new Error('dockview: group id must be of type string');\n }\n const group = this.createGroup({\n id,\n locked: !!locked,\n hideHeader: !!hideHeader,\n });\n this._onDidAddGroup.fire(group);\n const createdPanels = [];\n for (const child of views) {\n /**\n * Run the deserializer step seperately since this may fail to due corrupted external state.\n * In running this section first we avoid firing lots of 'add' events in the event of a failure\n * due to a corruption of input data.\n */\n const existingPanel = existingPanels.get(child);\n if (tempGroup && existingPanel) {\n this.movingLock(() => {\n tempGroup.model.removePanel(existingPanel);\n });\n createdPanels.push(existingPanel);\n existingPanel.updateFromStateModel(panels[child]);\n }\n else {\n const panel = this._deserializer.fromJSON(panels[child], group);\n createdPanels.push(panel);\n }\n }\n for (let i = 0; i < views.length; i++) {\n const panel = createdPanels[i];\n const isActive = typeof activeView === 'string' &&\n activeView === panel.id;\n const hasExisting = existingPanels.has(panel.api.id);\n if (hasExisting) {\n this.movingLock(() => {\n group.model.openPanel(panel, {\n skipSetActive: !isActive,\n skipSetGroupActive: true,\n });\n });\n }\n else {\n group.model.openPanel(panel, {\n skipSetActive: !isActive,\n skipSetGroupActive: true,\n });\n }\n }\n if (!group.activePanel && group.panels.length > 0) {\n group.model.openPanel(group.panels[group.panels.length - 1], {\n skipSetGroupActive: true,\n });\n }\n return group;\n };\n this.gridview.deserialize(grid, {\n fromJSON: (node) => {\n return createGroupFromSerializedState(node.data);\n },\n });\n this.layout(width, height, true);\n const serializedFloatingGroups = (_a = data.floatingGroups) !== null && _a !== void 0 ? _a : [];\n for (const serializedFloatingGroup of serializedFloatingGroups) {\n const { data, position } = serializedFloatingGroup;\n const group = createGroupFromSerializedState(data);\n this.addFloatingGroup(group, {\n position: position,\n width: position.width,\n height: position.height,\n skipRemoveGroup: true,\n inDragMode: false,\n });\n }\n const serializedPopoutGroups = (_b = data.popoutGroups) !== null && _b !== void 0 ? _b : [];\n // Create a promise that resolves when all popout groups are created\n const popoutPromises = [];\n // Queue popup group creation with delays to avoid browser blocking\n serializedPopoutGroups.forEach((serializedPopoutGroup, index) => {\n const { data, position, gridReferenceGroup, url } = serializedPopoutGroup;\n const group = createGroupFromSerializedState(data);\n // Add a small delay for each popup after the first to avoid browser popup blocking\n const popoutPromise = new Promise((resolve) => {\n setTimeout(() => {\n this.addPopoutGroup(group, {\n position: position !== null && position !== void 0 ? position : undefined,\n overridePopoutGroup: gridReferenceGroup\n ? group\n : undefined,\n referenceGroup: gridReferenceGroup\n ? this.getPanel(gridReferenceGroup)\n : undefined,\n popoutUrl: url,\n });\n resolve();\n }, index * DESERIALIZATION_POPOUT_DELAY_MS); // 100ms delay between each popup\n });\n popoutPromises.push(popoutPromise);\n });\n // Store the promise for tests to wait on\n this._popoutRestorationPromise = Promise.all(popoutPromises).then(() => void 0);\n for (const floatingGroup of this._floatingGroups) {\n floatingGroup.overlay.setBounds();\n }\n if (typeof activeGroup === 'string') {\n const panel = this.getPanel(activeGroup);\n if (panel) {\n this.doSetGroupAndPanelActive(panel);\n }\n }\n }\n catch (err) {\n console.error('dockview: failed to deserialize layout. Reverting changes', err);\n /**\n * Takes all the successfully created groups and remove all of their panels.\n */\n for (const group of this.groups) {\n for (const panel of group.panels) {\n this.removePanel(panel, {\n removeEmptyGroup: false,\n skipDispose: false,\n });\n }\n }\n /**\n * To remove a group we cannot call this.removeGroup(...) since this makes assumptions about\n * the underlying HTMLElement existing in the Gridview.\n */\n for (const group of this.groups) {\n group.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n // iterate over a reassigned array since original array will be modified\n for (const floatingGroup of [...this._floatingGroups]) {\n floatingGroup.dispose();\n }\n // fires clean-up events and clears the underlying HTML gridview.\n this.clear();\n /**\n * even though we have cleaned-up we still want to inform the caller of their error\n * and we'll do this through re-throwing the original error since afterall you would\n * expect trying to load a corrupted layout to result in an error and not silently fail...\n */\n throw err;\n }\n this.updateWatermark();\n // Force position updates for always visible panels after DOM layout is complete\n requestAnimationFrame(() => {\n this.overlayRenderContainer.updateAllPositions();\n });\n this._onDidLayoutFromJSON.fire();\n }\n clear() {\n const groups = Array.from(this._groups.values()).map((_) => _.value);\n const hasActiveGroup = !!this.activeGroup;\n for (const group of groups) {\n // remove the group will automatically remove the panels\n this.removeGroup(group, { skipActive: true });\n }\n if (hasActiveGroup) {\n this.doSetGroupAndPanelActive(undefined);\n }\n this.gridview.clear();\n }\n closeAllGroups() {\n for (const entry of this._groups.entries()) {\n const [_, group] = entry;\n group.value.model.closeAllPanels();\n }\n }\n addPanel(options) {\n var _a, _b;\n if (this.panels.find((_) => _.id === options.id)) {\n throw new Error(`dockview: panel with id ${options.id} already exists`);\n }\n let referenceGroup;\n if (options.position && options.floating) {\n throw new Error('dockview: you can only provide one of: position, floating as arguments to .addPanel(...)');\n }\n const initial = {\n width: options.initialWidth,\n height: options.initialHeight,\n };\n let index;\n if (options.position) {\n if (isPanelOptionsWithPanel(options.position)) {\n const referencePanel = typeof options.position.referencePanel === 'string'\n ? this.getGroupPanel(options.position.referencePanel)\n : options.position.referencePanel;\n index = options.position.index;\n if (!referencePanel) {\n throw new Error(`dockview: referencePanel '${options.position.referencePanel}' does not exist`);\n }\n referenceGroup = this.findGroup(referencePanel);\n }\n else if (isPanelOptionsWithGroup(options.position)) {\n referenceGroup =\n typeof options.position.referenceGroup === 'string'\n ? (_a = this._groups.get(options.position.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value\n : options.position.referenceGroup;\n index = options.position.index;\n if (!referenceGroup) {\n throw new Error(`dockview: referenceGroup '${options.position.referenceGroup}' does not exist`);\n }\n }\n else {\n const group = this.orthogonalize(directionToPosition(options.position.direction));\n const panel = this.createPanel(options, group);\n group.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n if (!options.inactive) {\n this.doSetGroupAndPanelActive(group);\n }\n group.api.setSize({\n height: initial === null || initial === void 0 ? void 0 : initial.height,\n width: initial === null || initial === void 0 ? void 0 : initial.width,\n });\n return panel;\n }\n }\n else {\n referenceGroup = this.activeGroup;\n }\n let panel;\n if (referenceGroup) {\n const target = toTarget(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');\n if (options.floating) {\n const group = this.createGroup();\n this._onDidAddGroup.fire(group);\n const floatingGroupOptions = typeof options.floating === 'object' &&\n options.floating !== null\n ? options.floating\n : {};\n this.addFloatingGroup(group, Object.assign(Object.assign({}, floatingGroupOptions), { inDragMode: false, skipRemoveGroup: true, skipActiveGroup: true }));\n panel = this.createPanel(options, group);\n group.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n }\n else if (referenceGroup.api.location.type === 'floating' ||\n target === 'center') {\n panel = this.createPanel(options, referenceGroup);\n referenceGroup.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n referenceGroup.api.setSize({\n width: initial === null || initial === void 0 ? void 0 : initial.width,\n height: initial === null || initial === void 0 ? void 0 : initial.height,\n });\n if (!options.inactive) {\n this.doSetGroupAndPanelActive(referenceGroup);\n }\n }\n else {\n const location = getGridLocation(referenceGroup.element);\n const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n const group = this.createGroupAtLocation(relativeLocation, this.orientationAtLocation(relativeLocation) ===\n Orientation.VERTICAL\n ? initial === null || initial === void 0 ? void 0 : initial.height\n : initial === null || initial === void 0 ? void 0 : initial.width);\n panel = this.createPanel(options, group);\n group.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n if (!options.inactive) {\n this.doSetGroupAndPanelActive(group);\n }\n }\n }\n else if (options.floating) {\n const group = this.createGroup();\n this._onDidAddGroup.fire(group);\n const coordinates = typeof options.floating === 'object' &&\n options.floating !== null\n ? options.floating\n : {};\n this.addFloatingGroup(group, Object.assign(Object.assign({}, coordinates), { inDragMode: false, skipRemoveGroup: true, skipActiveGroup: true }));\n panel = this.createPanel(options, group);\n group.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n }\n else {\n const group = this.createGroupAtLocation([0], this.gridview.orientation === Orientation.VERTICAL\n ? initial === null || initial === void 0 ? void 0 : initial.height\n : initial === null || initial === void 0 ? void 0 : initial.width);\n panel = this.createPanel(options, group);\n group.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n if (!options.inactive) {\n this.doSetGroupAndPanelActive(group);\n }\n }\n return panel;\n }\n removePanel(panel, options = {\n removeEmptyGroup: true,\n }) {\n const group = panel.group;\n if (!group) {\n throw new Error(`dockview: cannot remove panel ${panel.id}. it's missing a group.`);\n }\n group.model.removePanel(panel, {\n skipSetActiveGroup: options.skipSetActiveGroup,\n });\n if (!options.skipDispose) {\n panel.group.model.renderContainer.detatch(panel);\n panel.dispose();\n }\n if (group.size === 0 && options.removeEmptyGroup) {\n this.removeGroup(group, { skipActive: options.skipSetActiveGroup });\n }\n }\n createWatermarkComponent() {\n if (this.options.createWatermarkComponent) {\n return this.options.createWatermarkComponent();\n }\n return new Watermark();\n }\n updateWatermark() {\n var _a, _b;\n if (this.groups.filter((x) => x.api.location.type === 'grid' && x.api.isVisible).length === 0) {\n if (!this._watermark) {\n this._watermark = this.createWatermarkComponent();\n this._watermark.init({\n containerApi: new DockviewApi(this),\n });\n const watermarkContainer = document.createElement('div');\n watermarkContainer.className = 'dv-watermark-container';\n addTestId(watermarkContainer, 'watermark-component');\n watermarkContainer.appendChild(this._watermark.element);\n this.gridview.element.appendChild(watermarkContainer);\n }\n }\n else if (this._watermark) {\n this._watermark.element.parentElement.remove();\n (_b = (_a = this._watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\n this._watermark = null;\n }\n }\n addGroup(options) {\n var _a;\n if (options) {\n let referenceGroup;\n if (isGroupOptionsWithPanel(options)) {\n const referencePanel = typeof options.referencePanel === 'string'\n ? this.panels.find((panel) => panel.id === options.referencePanel)\n : options.referencePanel;\n if (!referencePanel) {\n throw new Error(`dockview: reference panel ${options.referencePanel} does not exist`);\n }\n referenceGroup = this.findGroup(referencePanel);\n if (!referenceGroup) {\n throw new Error(`dockview: reference group for reference panel ${options.referencePanel} does not exist`);\n }\n }\n else if (isGroupOptionsWithGroup(options)) {\n referenceGroup =\n typeof options.referenceGroup === 'string'\n ? (_a = this._groups.get(options.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value\n : options.referenceGroup;\n if (!referenceGroup) {\n throw new Error(`dockview: reference group ${options.referenceGroup} does not exist`);\n }\n }\n else {\n const group = this.orthogonalize(directionToPosition(options.direction), options);\n if (!options.skipSetActive) {\n this.doSetGroupAndPanelActive(group);\n }\n return group;\n }\n const target = toTarget(options.direction || 'within');\n const location = getGridLocation(referenceGroup.element);\n const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n const group = this.createGroup(options);\n const size = this.getLocationOrientation(relativeLocation) ===\n Orientation.VERTICAL\n ? options.initialHeight\n : options.initialWidth;\n this.doAddGroup(group, relativeLocation, size);\n if (!options.skipSetActive) {\n this.doSetGroupAndPanelActive(group);\n }\n return group;\n }\n else {\n const group = this.createGroup(options);\n this.doAddGroup(group);\n this.doSetGroupAndPanelActive(group);\n return group;\n }\n }\n getLocationOrientation(location) {\n return location.length % 2 == 0 &&\n this.gridview.orientation === Orientation.HORIZONTAL\n ? Orientation.HORIZONTAL\n : Orientation.VERTICAL;\n }\n removeGroup(group, options) {\n this.doRemoveGroup(group, options);\n }\n doRemoveGroup(group, options) {\n var _a;\n const panels = [...group.panels]; // reassign since group panels will mutate\n if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n for (const panel of panels) {\n this.removePanel(panel, {\n removeEmptyGroup: false,\n skipDispose: (_a = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _a !== void 0 ? _a : false,\n });\n }\n }\n const activePanel = this.activePanel;\n if (group.api.location.type === 'floating') {\n const floatingGroup = this._floatingGroups.find((_) => _.group === group);\n if (floatingGroup) {\n if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n floatingGroup.group.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n remove(this._floatingGroups, floatingGroup);\n floatingGroup.dispose();\n if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {\n const groups = Array.from(this._groups.values());\n this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);\n }\n return floatingGroup.group;\n }\n throw new Error('dockview: failed to find floating group');\n }\n if (group.api.location.type === 'popout') {\n const selectedGroup = this._popoutGroups.find((_) => _.popoutGroup === group);\n if (selectedGroup) {\n if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n if (!(options === null || options === void 0 ? void 0 : options.skipPopoutAssociated)) {\n const refGroup = selectedGroup.referenceGroup\n ? this.getPanel(selectedGroup.referenceGroup)\n : undefined;\n if (refGroup && refGroup.panels.length === 0) {\n this.removeGroup(refGroup);\n }\n }\n selectedGroup.popoutGroup.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n remove(this._popoutGroups, selectedGroup);\n const removedGroup = selectedGroup.disposable.dispose();\n if (!(options === null || options === void 0 ? void 0 : options.skipPopoutReturn) && removedGroup) {\n this.doAddGroup(removedGroup, [0]);\n this.doSetGroupAndPanelActive(removedGroup);\n }\n if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {\n const groups = Array.from(this._groups.values());\n this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);\n }\n this.updateWatermark();\n return selectedGroup.popoutGroup;\n }\n throw new Error('dockview: failed to find popout group');\n }\n const re = super.doRemoveGroup(group, options);\n if (!(options === null || options === void 0 ? void 0 : options.skipActive)) {\n if (this.activePanel !== activePanel) {\n this._onDidActivePanelChange.fire(this.activePanel);\n }\n }\n return re;\n }\n movingLock(func) {\n const isMoving = this._moving;\n try {\n this._moving = true;\n return func();\n }\n finally {\n this._moving = isMoving;\n }\n }\n moveGroupOrPanel(options) {\n var _a;\n const destinationGroup = options.to.group;\n const sourceGroupId = options.from.groupId;\n const sourceItemId = options.from.panelId;\n const destinationTarget = options.to.position;\n const destinationIndex = options.to.index;\n const sourceGroup = sourceGroupId\n ? (_a = this._groups.get(sourceGroupId)) === null || _a === void 0 ? void 0 : _a.value\n : undefined;\n if (!sourceGroup) {\n throw new Error(`dockview: Failed to find group id ${sourceGroupId}`);\n }\n if (sourceItemId === undefined) {\n /**\n * Moving an entire group into another group\n */\n this.moveGroup({\n from: { group: sourceGroup },\n to: {\n group: destinationGroup,\n position: destinationTarget,\n },\n skipSetActive: options.skipSetActive,\n });\n return;\n }\n if (!destinationTarget || destinationTarget === 'center') {\n /**\n * Dropping a panel within another group\n */\n const removedPanel = this.movingLock(() => sourceGroup.model.removePanel(sourceItemId, {\n skipSetActive: false,\n skipSetActiveGroup: true,\n }));\n if (!removedPanel) {\n throw new Error(`dockview: No panel with id ${sourceItemId}`);\n }\n if (!options.keepEmptyGroups && sourceGroup.model.size === 0) {\n // remove the group and do not set a new group as active\n this.doRemoveGroup(sourceGroup, { skipActive: true });\n }\n // Check if destination group is empty - if so, force render the component\n const isDestinationGroupEmpty = destinationGroup.model.size === 0;\n this.movingLock(() => {\n var _a;\n return destinationGroup.model.openPanel(removedPanel, {\n index: destinationIndex,\n skipSetActive: ((_a = options.skipSetActive) !== null && _a !== void 0 ? _a : false) &&\n !isDestinationGroupEmpty,\n skipSetGroupActive: true,\n });\n });\n if (!options.skipSetActive) {\n this.doSetGroupAndPanelActive(destinationGroup);\n }\n this._onDidMovePanel.fire({\n panel: removedPanel,\n from: sourceGroup,\n });\n }\n else {\n /**\n * Dropping a panel to the extremities of a group which will place that panel\n * into an adjacent group\n */\n const referenceLocation = getGridLocation(destinationGroup.element);\n const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);\n if (sourceGroup.size < 2) {\n /**\n * If we are moving from a group which only has one panel left we will consider\n * moving the group itself rather than moving the panel into a newly created group\n */\n const [targetParentLocation, to] = tail(targetLocation);\n if (sourceGroup.api.location.type === 'grid') {\n const sourceLocation = getGridLocation(sourceGroup.element);\n const [sourceParentLocation, from] = tail(sourceLocation);\n if (sequenceEquals(sourceParentLocation, targetParentLocation)) {\n // special case when 'swapping' two views within same grid location\n // if a group has one tab - we are essentially moving the 'group'\n // which is equivalent to swapping two views in this case\n this.gridview.moveView(sourceParentLocation, from, to);\n this._onDidMovePanel.fire({\n panel: this.getGroupPanel(sourceItemId),\n from: sourceGroup,\n });\n return;\n }\n }\n if (sourceGroup.api.location.type === 'popout') {\n /**\n * the source group is a popout group with a single panel\n *\n * 1. remove the panel from the group without triggering any events\n * 2. remove the popout group\n * 3. create a new group at the requested location and add that panel\n */\n const popoutGroup = this._popoutGroups.find((group) => group.popoutGroup === sourceGroup);\n const removedPanel = this.movingLock(() => popoutGroup.popoutGroup.model.removePanel(popoutGroup.popoutGroup.panels[0], {\n skipSetActive: true,\n skipSetActiveGroup: true,\n }));\n this.doRemoveGroup(sourceGroup, { skipActive: true });\n const newGroup = this.createGroupAtLocation(targetLocation);\n this.movingLock(() => newGroup.model.openPanel(removedPanel, {\n skipSetActive: true,\n }));\n this.doSetGroupAndPanelActive(newGroup);\n this._onDidMovePanel.fire({\n panel: this.getGroupPanel(sourceItemId),\n from: sourceGroup,\n });\n return;\n }\n // source group will become empty so delete the group\n const targetGroup = this.movingLock(() => this.doRemoveGroup(sourceGroup, {\n skipActive: true,\n skipDispose: true,\n }));\n // after deleting the group we need to re-evaulate the ref location\n const updatedReferenceLocation = getGridLocation(destinationGroup.element);\n const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, destinationTarget);\n this.movingLock(() => this.doAddGroup(targetGroup, location));\n this.doSetGroupAndPanelActive(targetGroup);\n this._onDidMovePanel.fire({\n panel: this.getGroupPanel(sourceItemId),\n from: sourceGroup,\n });\n }\n else {\n /**\n * The group we are removing from has many panels, we need to remove the panels we are moving,\n * create a new group, add the panels to that new group and add the new group in an appropiate position\n */\n const removedPanel = this.movingLock(() => sourceGroup.model.removePanel(sourceItemId, {\n skipSetActive: false,\n skipSetActiveGroup: true,\n }));\n if (!removedPanel) {\n throw new Error(`dockview: No panel with id ${sourceItemId}`);\n }\n const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);\n const group = this.createGroupAtLocation(dropLocation);\n this.movingLock(() => group.model.openPanel(removedPanel, {\n skipSetGroupActive: true,\n }));\n this.doSetGroupAndPanelActive(group);\n this._onDidMovePanel.fire({\n panel: removedPanel,\n from: sourceGroup,\n });\n }\n }\n }\n moveGroup(options) {\n const from = options.from.group;\n const to = options.to.group;\n const target = options.to.position;\n if (target === 'center') {\n const activePanel = from.activePanel;\n const panels = this.movingLock(() => [...from.panels].map((p) => from.model.removePanel(p.id, {\n skipSetActive: true,\n })));\n if ((from === null || from === void 0 ? void 0 : from.model.size) === 0) {\n this.doRemoveGroup(from, { skipActive: true });\n }\n this.movingLock(() => {\n for (const panel of panels) {\n to.model.openPanel(panel, {\n skipSetActive: panel !== activePanel,\n skipSetGroupActive: true,\n });\n }\n });\n // Ensure group becomes active after move\n if (options.skipSetActive !== true) {\n // For center moves (merges), we need to ensure the target group is active\n // unless explicitly told not to (skipSetActive: true)\n this.doSetGroupAndPanelActive(to);\n }\n else if (!this.activePanel) {\n // Even with skipSetActive: true, ensure there's an active panel if none exists\n // This maintains basic functionality while respecting skipSetActive\n this.doSetGroupAndPanelActive(to);\n }\n }\n else {\n switch (from.api.location.type) {\n case 'grid':\n this.gridview.removeView(getGridLocation(from.element));\n break;\n case 'floating': {\n const selectedFloatingGroup = this._floatingGroups.find((x) => x.group === from);\n if (!selectedFloatingGroup) {\n throw new Error('dockview: failed to find floating group');\n }\n selectedFloatingGroup.dispose();\n break;\n }\n case 'popout': {\n const selectedPopoutGroup = this._popoutGroups.find((x) => x.popoutGroup === from);\n if (!selectedPopoutGroup) {\n throw new Error('dockview: failed to find popout group');\n }\n // Remove from popout groups list to prevent automatic restoration\n const index = this._popoutGroups.indexOf(selectedPopoutGroup);\n if (index >= 0) {\n this._popoutGroups.splice(index, 1);\n }\n // Clean up the reference group (ghost) if it exists and is hidden\n if (selectedPopoutGroup.referenceGroup) {\n const referenceGroup = this.getPanel(selectedPopoutGroup.referenceGroup);\n if (referenceGroup && !referenceGroup.api.isVisible) {\n this.doRemoveGroup(referenceGroup, {\n skipActive: true,\n });\n }\n }\n // Manually dispose the window without triggering restoration\n selectedPopoutGroup.window.dispose();\n // Update group's location and containers for target\n if (to.api.location.type === 'grid') {\n from.model.renderContainer =\n this.overlayRenderContainer;\n from.model.dropTargetContainer =\n this.rootDropTargetContainer;\n from.model.location = { type: 'grid' };\n }\n else if (to.api.location.type === 'floating') {\n from.model.renderContainer =\n this.overlayRenderContainer;\n from.model.dropTargetContainer =\n this.rootDropTargetContainer;\n from.model.location = { type: 'floating' };\n }\n break;\n }\n }\n // For moves to grid locations\n if (to.api.location.type === 'grid') {\n const referenceLocation = getGridLocation(to.element);\n const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);\n // Add to grid for all moves targeting grid location\n let size;\n switch (this.gridview.orientation) {\n case Orientation.VERTICAL:\n size =\n referenceLocation.length % 2 == 0\n ? from.api.width\n : from.api.height;\n break;\n case Orientation.HORIZONTAL:\n size =\n referenceLocation.length % 2 == 0\n ? from.api.height\n : from.api.width;\n break;\n }\n this.gridview.addView(from, size, dropLocation);\n }\n else if (to.api.location.type === 'floating') {\n // For moves to floating locations, add as floating group\n // Get the position/size from the target floating group\n const targetFloatingGroup = this._floatingGroups.find((x) => x.group === to);\n if (targetFloatingGroup) {\n const box = targetFloatingGroup.overlay.toJSON();\n // Calculate position based on available properties\n let left, top;\n if ('left' in box) {\n left = box.left + 50;\n }\n else if ('right' in box) {\n left = Math.max(0, box.right - box.width - 50);\n }\n else {\n left = 50; // Default fallback\n }\n if ('top' in box) {\n top = box.top + 50;\n }\n else if ('bottom' in box) {\n top = Math.max(0, box.bottom - box.height - 50);\n }\n else {\n top = 50; // Default fallback\n }\n this.addFloatingGroup(from, {\n height: box.height,\n width: box.width,\n position: {\n left,\n top,\n },\n });\n }\n }\n }\n from.panels.forEach((panel) => {\n this._onDidMovePanel.fire({ panel, from });\n });\n // Ensure group becomes active after move\n if (options.skipSetActive === false) {\n // Only activate when explicitly requested (skipSetActive: false)\n // Use 'to' group for non-center moves since 'from' may have been destroyed\n const targetGroup = to !== null && to !== void 0 ? to : from;\n this.doSetGroupAndPanelActive(targetGroup);\n }\n }\n doSetGroupActive(group) {\n super.doSetGroupActive(group);\n const activePanel = this.activePanel;\n if (!this._moving &&\n activePanel !== this._onDidActivePanelChange.value) {\n this._onDidActivePanelChange.fire(activePanel);\n }\n }\n doSetGroupAndPanelActive(group) {\n super.doSetGroupActive(group);\n const activePanel = this.activePanel;\n if (group &&\n this.hasMaximizedGroup() &&\n !this.isMaximizedGroup(group)) {\n this.exitMaximizedGroup();\n }\n if (!this._moving &&\n activePanel !== this._onDidActivePanelChange.value) {\n this._onDidActivePanelChange.fire(activePanel);\n }\n }\n getNextGroupId() {\n let id = this.nextGroupId.next();\n while (this._groups.has(id)) {\n id = this.nextGroupId.next();\n }\n return id;\n }\n createGroup(options) {\n if (!options) {\n options = {};\n }\n let id = options === null || options === void 0 ? void 0 : options.id;\n if (id && this._groups.has(options.id)) {\n console.warn(`dockview: Duplicate group id ${options === null || options === void 0 ? void 0 : options.id}. reassigning group id to avoid errors`);\n id = undefined;\n }\n if (!id) {\n id = this.nextGroupId.next();\n while (this._groups.has(id)) {\n id = this.nextGroupId.next();\n }\n }\n const view = new DockviewGroupPanel(this, id, options);\n view.init({ params: {}, accessor: this });\n if (!this._groups.has(view.id)) {\n const disposable = new CompositeDisposable(view.model.onTabDragStart((event) => {\n this._onWillDragPanel.fire(event);\n }), view.model.onGroupDragStart((event) => {\n this._onWillDragGroup.fire(event);\n }), view.model.onMove((event) => {\n const { groupId, itemId, target, index } = event;\n this.moveGroupOrPanel({\n from: { groupId: groupId, panelId: itemId },\n to: {\n group: view,\n position: target,\n index,\n },\n });\n }), view.model.onDidDrop((event) => {\n this._onDidDrop.fire(event);\n }), view.model.onWillDrop((event) => {\n this._onWillDrop.fire(event);\n }), view.model.onWillShowOverlay((event) => {\n if (this.options.disableDnd) {\n event.preventDefault();\n return;\n }\n this._onWillShowOverlay.fire(event);\n }), view.model.onUnhandledDragOverEvent((event) => {\n this._onUnhandledDragOverEvent.fire(event);\n }), view.model.onDidAddPanel((event) => {\n if (this._moving) {\n return;\n }\n this._onDidAddPanel.fire(event.panel);\n }), view.model.onDidRemovePanel((event) => {\n if (this._moving) {\n return;\n }\n this._onDidRemovePanel.fire(event.panel);\n }), view.model.onDidActivePanelChange((event) => {\n if (this._moving) {\n return;\n }\n if (event.panel !== this.activePanel) {\n return;\n }\n if (this._onDidActivePanelChange.value !== event.panel) {\n this._onDidActivePanelChange.fire(event.panel);\n }\n }), Event.any(view.model.onDidPanelTitleChange, view.model.onDidPanelParametersChange)(() => {\n this._bufferOnDidLayoutChange.fire();\n }));\n this._groups.set(view.id, { value: view, disposable });\n }\n // TODO: must be called after the above listeners have been setup, not an ideal pattern\n view.initialize();\n return view;\n }\n createPanel(options, group) {\n var _a, _b, _c;\n const contentComponent = options.component;\n const tabComponent = (_a = options.tabComponent) !== null && _a !== void 0 ? _a : this.options.defaultTabComponent;\n const view = new DockviewPanelModel(this, options.id, contentComponent, tabComponent);\n const panel = new DockviewPanel(options.id, contentComponent, tabComponent, this, this._api, group, view, {\n renderer: options.renderer,\n minimumWidth: options.minimumWidth,\n minimumHeight: options.minimumHeight,\n maximumWidth: options.maximumWidth,\n maximumHeight: options.maximumHeight,\n });\n panel.init({\n title: (_b = options.title) !== null && _b !== void 0 ? _b : options.id,\n params: (_c = options === null || options === void 0 ? void 0 : options.params) !== null && _c !== void 0 ? _c : {},\n });\n return panel;\n }\n createGroupAtLocation(location, size, options) {\n const group = this.createGroup(options);\n this.doAddGroup(group, location, size);\n return group;\n }\n findGroup(panel) {\n var _a;\n return (_a = Array.from(this._groups.values()).find((group) => group.value.model.containsPanel(panel))) === null || _a === void 0 ? void 0 : _a.value;\n }\n orientationAtLocation(location) {\n const rootOrientation = this.gridview.orientation;\n return location.length % 2 == 1\n ? rootOrientation\n : orthogonal(rootOrientation);\n }\n updateDropTargetModel(options) {\n if ('dndEdges' in options) {\n this._rootDropTarget.disabled =\n typeof options.dndEdges === 'boolean' &&\n options.dndEdges === false;\n if (typeof options.dndEdges === 'object' &&\n options.dndEdges !== null) {\n this._rootDropTarget.setOverlayModel(options.dndEdges);\n }\n else {\n this._rootDropTarget.setOverlayModel(DEFAULT_ROOT_OVERLAY_MODEL);\n }\n }\n if ('rootOverlayModel' in options) {\n this.updateDropTargetModel({ dndEdges: options.dndEdges });\n }\n }\n updateTheme() {\n var _a, _b;\n const theme = (_a = this._options.theme) !== null && _a !== void 0 ? _a : themeAbyss;\n this._themeClassnames.setClassNames(theme.className);\n this.gridview.margin = (_b = theme.gap) !== null && _b !== void 0 ? _b : 0;\n switch (theme.dndOverlayMounting) {\n case 'absolute':\n this.rootDropTargetContainer.disabled = false;\n break;\n case 'relative':\n default:\n this.rootDropTargetContainer.disabled = true;\n break;\n }\n }\n}\n","import { getRelativeLocation, getGridLocation, } from './gridview';\nimport { tail, sequenceEquals } from '../array';\nimport { CompositeDisposable } from '../lifecycle';\nimport { BaseGrid, toTarget, } from './baseComponentGridview';\nimport { Emitter } from '../events';\nexport class GridviewComponent extends BaseGrid {\n get orientation() {\n return this.gridview.orientation;\n }\n set orientation(value) {\n this.gridview.orientation = value;\n }\n get options() {\n return this._options;\n }\n get deserializer() {\n return this._deserializer;\n }\n set deserializer(value) {\n this._deserializer = value;\n }\n constructor(container, options) {\n var _a;\n super(container, {\n proportionalLayout: (_a = options.proportionalLayout) !== null && _a !== void 0 ? _a : true,\n orientation: options.orientation,\n styles: options.hideBorders\n ? { separatorBorder: 'transparent' }\n : undefined,\n disableAutoResizing: options.disableAutoResizing,\n className: options.className,\n });\n this._onDidLayoutfromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\n this._onDidRemoveGroup = new Emitter();\n this.onDidRemoveGroup = this._onDidRemoveGroup.event;\n this._onDidAddGroup = new Emitter();\n this.onDidAddGroup = this._onDidAddGroup.event;\n this._onDidActiveGroupChange = new Emitter();\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\n this._options = options;\n this.addDisposables(this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this.onDidAdd((event) => {\n this._onDidAddGroup.fire(event);\n }), this.onDidRemove((event) => {\n this._onDidRemoveGroup.fire(event);\n }), this.onDidActiveChange((event) => {\n this._onDidActiveGroupChange.fire(event);\n }));\n }\n updateOptions(options) {\n super.updateOptions(options);\n const hasOrientationChanged = typeof options.orientation === 'string' &&\n this.gridview.orientation !== options.orientation;\n this._options = Object.assign(Object.assign({}, this.options), options);\n if (hasOrientationChanged) {\n this.gridview.orientation = options.orientation;\n }\n this.layout(this.gridview.width, this.gridview.height, true);\n }\n removePanel(panel) {\n this.removeGroup(panel);\n }\n /**\n * Serialize the current state of the layout\n *\n * @returns A JSON respresentation of the layout\n */\n toJSON() {\n var _a;\n const data = this.gridview.serialize();\n return {\n grid: data,\n activePanel: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,\n };\n }\n setVisible(panel, visible) {\n this.gridview.setViewVisible(getGridLocation(panel.element), visible);\n }\n setActive(panel) {\n this._groups.forEach((value, _key) => {\n value.value.setActive(panel === value.value);\n });\n }\n focus() {\n var _a;\n (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();\n }\n fromJSON(serializedGridview) {\n this.clear();\n const { grid, activePanel } = serializedGridview;\n try {\n const queue = [];\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n this.gridview.deserialize(grid, {\n fromJSON: (node) => {\n const { data } = node;\n const view = this.options.createComponent({\n id: data.id,\n name: data.component,\n });\n queue.push(() => view.init({\n params: data.params,\n minimumWidth: data.minimumWidth,\n maximumWidth: data.maximumWidth,\n minimumHeight: data.minimumHeight,\n maximumHeight: data.maximumHeight,\n priority: data.priority,\n snap: !!data.snap,\n accessor: this,\n isVisible: node.visible,\n }));\n this._onDidAddGroup.fire(view);\n this.registerPanel(view);\n return view;\n },\n });\n this.layout(width, height, true);\n queue.forEach((f) => f());\n if (typeof activePanel === 'string') {\n const panel = this.getPanel(activePanel);\n if (panel) {\n this.doSetGroupActive(panel);\n }\n }\n }\n catch (err) {\n /**\n * To remove a group we cannot call this.removeGroup(...) since this makes assumptions about\n * the underlying HTMLElement existing in the Gridview.\n */\n for (const group of this.groups) {\n group.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n // fires clean-up events and clears the underlying HTML gridview.\n this.clear();\n /**\n * even though we have cleaned-up we still want to inform the caller of their error\n * and we'll do this through re-throwing the original error since afterall you would\n * expect trying to load a corrupted layout to result in an error and not silently fail...\n */\n throw err;\n }\n this._onDidLayoutfromJSON.fire();\n }\n clear() {\n const hasActiveGroup = this.activeGroup;\n const groups = Array.from(this._groups.values()); // reassign since group panels will mutate\n for (const group of groups) {\n group.disposable.dispose();\n this.doRemoveGroup(group.value, { skipActive: true });\n }\n if (hasActiveGroup) {\n this.doSetGroupActive(undefined);\n }\n this.gridview.clear();\n }\n movePanel(panel, options) {\n var _a;\n let relativeLocation;\n const removedPanel = this.gridview.remove(panel);\n const referenceGroup = (_a = this._groups.get(options.reference)) === null || _a === void 0 ? void 0 : _a.value;\n if (!referenceGroup) {\n throw new Error(`reference group ${options.reference} does not exist`);\n }\n const target = toTarget(options.direction);\n if (target === 'center') {\n throw new Error(`${target} not supported as an option`);\n }\n else {\n const location = getGridLocation(referenceGroup.element);\n relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n }\n this.doAddGroup(removedPanel, relativeLocation, options.size);\n }\n addPanel(options) {\n var _a, _b, _c, _d;\n let relativeLocation = (_a = options.location) !== null && _a !== void 0 ? _a : [0];\n if ((_b = options.position) === null || _b === void 0 ? void 0 : _b.referencePanel) {\n const referenceGroup = (_c = this._groups.get(options.position.referencePanel)) === null || _c === void 0 ? void 0 : _c.value;\n if (!referenceGroup) {\n throw new Error(`reference group ${options.position.referencePanel} does not exist`);\n }\n const target = toTarget(options.position.direction);\n if (target === 'center') {\n throw new Error(`${target} not supported as an option`);\n }\n else {\n const location = getGridLocation(referenceGroup.element);\n relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n }\n }\n const view = this.options.createComponent({\n id: options.id,\n name: options.component,\n });\n view.init({\n params: (_d = options.params) !== null && _d !== void 0 ? _d : {},\n minimumWidth: options.minimumWidth,\n maximumWidth: options.maximumWidth,\n minimumHeight: options.minimumHeight,\n maximumHeight: options.maximumHeight,\n priority: options.priority,\n snap: !!options.snap,\n accessor: this,\n isVisible: true,\n });\n this.doAddGroup(view, relativeLocation, options.size);\n this.registerPanel(view);\n this.doSetGroupActive(view);\n return view;\n }\n registerPanel(panel) {\n const disposable = new CompositeDisposable(panel.api.onDidFocusChange((event) => {\n if (!event.isFocused) {\n return;\n }\n this._groups.forEach((groupItem) => {\n const group = groupItem.value;\n if (group !== panel) {\n group.setActive(false);\n }\n else {\n group.setActive(true);\n }\n });\n }));\n this._groups.set(panel.id, {\n value: panel,\n disposable,\n });\n }\n moveGroup(referenceGroup, groupId, target) {\n const sourceGroup = this.getPanel(groupId);\n if (!sourceGroup) {\n throw new Error('invalid operation');\n }\n const referenceLocation = getGridLocation(referenceGroup.element);\n const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);\n const [targetParentLocation, to] = tail(targetLocation);\n const sourceLocation = getGridLocation(sourceGroup.element);\n const [sourceParentLocation, from] = tail(sourceLocation);\n if (sequenceEquals(sourceParentLocation, targetParentLocation)) {\n // special case when 'swapping' two views within same grid location\n // if a group has one tab - we are essentially moving the 'group'\n // which is equivalent to swapping two views in this case\n this.gridview.moveView(sourceParentLocation, from, to);\n return;\n }\n // source group will become empty so delete the group\n const targetGroup = this.doRemoveGroup(sourceGroup, {\n skipActive: true,\n skipDispose: true,\n });\n // after deleting the group we need to re-evaulate the ref location\n const updatedReferenceLocation = getGridLocation(referenceGroup.element);\n const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, target);\n this.doAddGroup(targetGroup, location);\n }\n removeGroup(group) {\n super.removeGroup(group);\n }\n dispose() {\n super.dispose();\n this._onDidLayoutfromJSON.dispose();\n }\n}\n","import { CompositeDisposable, MutableDisposable, } from '../lifecycle';\nimport { Orientation, Sizing, Splitview, } from './splitview';\nimport { Emitter } from '../events';\nimport { Resizable } from '../resizable';\nimport { Classnames } from '../dom';\n/**\n * A high-level implementation of splitview that works using 'panels'\n */\nexport class SplitviewComponent extends Resizable {\n get panels() {\n return this.splitview.getViews();\n }\n get options() {\n return this._options;\n }\n get length() {\n return this._panels.size;\n }\n get orientation() {\n return this.splitview.orientation;\n }\n get splitview() {\n return this._splitview;\n }\n set splitview(value) {\n if (this._splitview) {\n this._splitview.dispose();\n }\n this._splitview = value;\n this._splitviewChangeDisposable.value = new CompositeDisposable(this._splitview.onDidSashEnd(() => {\n this._onDidLayoutChange.fire(undefined);\n }), this._splitview.onDidAddView((e) => this._onDidAddView.fire(e)), this._splitview.onDidRemoveView((e) => this._onDidRemoveView.fire(e)));\n }\n get minimumSize() {\n return this.splitview.minimumSize;\n }\n get maximumSize() {\n return this.splitview.maximumSize;\n }\n get height() {\n return this.splitview.orientation === Orientation.HORIZONTAL\n ? this.splitview.orthogonalSize\n : this.splitview.size;\n }\n get width() {\n return this.splitview.orientation === Orientation.HORIZONTAL\n ? this.splitview.size\n : this.splitview.orthogonalSize;\n }\n constructor(container, options) {\n var _a;\n super(document.createElement('div'), options.disableAutoResizing);\n this._splitviewChangeDisposable = new MutableDisposable();\n this._panels = new Map();\n this._onDidLayoutfromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\n this._onDidAddView = new Emitter();\n this.onDidAddView = this._onDidAddView.event;\n this._onDidRemoveView = new Emitter();\n this.onDidRemoveView = this._onDidRemoveView.event;\n this._onDidLayoutChange = new Emitter();\n this.onDidLayoutChange = this._onDidLayoutChange.event;\n this.element.style.height = '100%';\n this.element.style.width = '100%';\n this._classNames = new Classnames(this.element);\n this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');\n // the container is owned by the third-party, do not modify/delete it\n container.appendChild(this.element);\n this._options = options;\n this.splitview = new Splitview(this.element, options);\n this.addDisposables(this._onDidAddView, this._onDidLayoutfromJSON, this._onDidRemoveView, this._onDidLayoutChange);\n }\n updateOptions(options) {\n var _a, _b;\n if ('className' in options) {\n this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');\n }\n if ('disableResizing' in options) {\n this.disableResizing = (_b = options.disableAutoResizing) !== null && _b !== void 0 ? _b : false;\n }\n if (typeof options.orientation === 'string') {\n this.splitview.orientation = options.orientation;\n }\n this._options = Object.assign(Object.assign({}, this.options), options);\n this.splitview.layout(this.splitview.size, this.splitview.orthogonalSize);\n }\n focus() {\n var _a;\n (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();\n }\n movePanel(from, to) {\n this.splitview.moveView(from, to);\n }\n setVisible(panel, visible) {\n const index = this.panels.indexOf(panel);\n this.splitview.setViewVisible(index, visible);\n }\n setActive(panel, skipFocus) {\n this._activePanel = panel;\n this.panels\n .filter((v) => v !== panel)\n .forEach((v) => {\n v.api._onDidActiveChange.fire({ isActive: false });\n if (!skipFocus) {\n v.focus();\n }\n });\n panel.api._onDidActiveChange.fire({ isActive: true });\n if (!skipFocus) {\n panel.focus();\n }\n }\n removePanel(panel, sizing) {\n const item = this._panels.get(panel.id);\n if (!item) {\n throw new Error(`unknown splitview panel ${panel.id}`);\n }\n item.dispose();\n this._panels.delete(panel.id);\n const index = this.panels.findIndex((_) => _ === panel);\n const removedView = this.splitview.removeView(index, sizing);\n removedView.dispose();\n const panels = this.panels;\n if (panels.length > 0) {\n this.setActive(panels[panels.length - 1]);\n }\n }\n getPanel(id) {\n return this.panels.find((view) => view.id === id);\n }\n addPanel(options) {\n var _a;\n if (this._panels.has(options.id)) {\n throw new Error(`panel ${options.id} already exists`);\n }\n const view = this.options.createComponent({\n id: options.id,\n name: options.component,\n });\n view.orientation = this.splitview.orientation;\n view.init({\n params: (_a = options.params) !== null && _a !== void 0 ? _a : {},\n minimumSize: options.minimumSize,\n maximumSize: options.maximumSize,\n snap: options.snap,\n priority: options.priority,\n accessor: this,\n });\n const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;\n const index = typeof options.index === 'number' ? options.index : undefined;\n this.splitview.addView(view, size, index);\n this.doAddView(view);\n this.setActive(view);\n return view;\n }\n layout(width, height) {\n const [size, orthogonalSize] = this.splitview.orientation === Orientation.HORIZONTAL\n ? [width, height]\n : [height, width];\n this.splitview.layout(size, orthogonalSize);\n }\n doAddView(view) {\n const disposable = view.api.onDidFocusChange((event) => {\n if (!event.isFocused) {\n return;\n }\n this.setActive(view, true);\n });\n this._panels.set(view.id, disposable);\n }\n toJSON() {\n var _a;\n const views = this.splitview\n .getViews()\n .map((view, i) => {\n const size = this.splitview.getViewSize(i);\n return {\n size,\n data: view.toJSON(),\n snap: !!view.snap,\n priority: view.priority,\n };\n });\n return {\n views,\n activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,\n size: this.splitview.size,\n orientation: this.splitview.orientation,\n };\n }\n fromJSON(serializedSplitview) {\n this.clear();\n const { views, orientation, size, activeView } = serializedSplitview;\n const queue = [];\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n this.splitview = new Splitview(this.element, {\n orientation,\n proportionalLayout: this.options.proportionalLayout,\n descriptor: {\n size,\n views: views.map((view) => {\n const data = view.data;\n if (this._panels.has(data.id)) {\n throw new Error(`panel ${data.id} already exists`);\n }\n const panel = this.options.createComponent({\n id: data.id,\n name: data.component,\n });\n queue.push(() => {\n var _a;\n panel.init({\n params: (_a = data.params) !== null && _a !== void 0 ? _a : {},\n minimumSize: data.minimumSize,\n maximumSize: data.maximumSize,\n snap: view.snap,\n priority: view.priority,\n accessor: this,\n });\n });\n panel.orientation = orientation;\n this.doAddView(panel);\n setTimeout(() => {\n // the original onDidAddView events are missed since they are fired before we can subcribe to them\n this._onDidAddView.fire(panel);\n }, 0);\n return { size: view.size, view: panel };\n }),\n },\n });\n this.layout(width, height);\n queue.forEach((f) => f());\n if (typeof activeView === 'string') {\n const panel = this.getPanel(activeView);\n if (panel) {\n this.setActive(panel);\n }\n }\n this._onDidLayoutfromJSON.fire();\n }\n clear() {\n for (const disposable of this._panels.values()) {\n disposable.dispose();\n }\n this._panels.clear();\n while (this.splitview.length > 0) {\n const view = this.splitview.removeView(0, Sizing.Distribute, true);\n view.dispose();\n }\n }\n dispose() {\n for (const disposable of this._panels.values()) {\n disposable.dispose();\n }\n this._panels.clear();\n const views = this.splitview.getViews();\n this._splitviewChangeDisposable.dispose();\n this.splitview.dispose();\n for (const view of views) {\n view.dispose();\n }\n this.element.remove();\n super.dispose();\n }\n}\n","import { addDisposableListener } from '../events';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nimport { toggleClass } from '../dom';\nimport { createChevronRightButton, createExpandMoreButton } from '../svg';\nexport class DefaultHeader extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor() {\n super();\n this._expandedIcon = createExpandMoreButton();\n this._collapsedIcon = createChevronRightButton();\n this.disposable = new MutableDisposable();\n this.apiRef = {\n api: null,\n };\n this._element = document.createElement('div');\n this.element.className = 'dv-default-header';\n this._content = document.createElement('span');\n this._expander = document.createElement('div');\n this._expander.className = 'dv-pane-header-icon';\n this.element.appendChild(this._expander);\n this.element.appendChild(this._content);\n this.addDisposables(addDisposableListener(this._element, 'click', () => {\n var _a;\n (_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.setExpanded(!this.apiRef.api.isExpanded);\n }));\n }\n init(params) {\n this.apiRef.api = params.api;\n this._content.textContent = params.title;\n this.updateIcon();\n this.disposable.value = params.api.onDidExpansionChange(() => {\n this.updateIcon();\n });\n }\n updateIcon() {\n var _a;\n const isExpanded = !!((_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.isExpanded);\n toggleClass(this._expander, 'collapsed', !isExpanded);\n if (isExpanded) {\n if (this._expander.contains(this._collapsedIcon)) {\n this._collapsedIcon.remove();\n }\n if (!this._expander.contains(this._expandedIcon)) {\n this._expander.appendChild(this._expandedIcon);\n }\n }\n else {\n if (this._expander.contains(this._expandedIcon)) {\n this._expandedIcon.remove();\n }\n if (!this._expander.contains(this._collapsedIcon)) {\n this._expander.appendChild(this._collapsedIcon);\n }\n }\n }\n update(_params) {\n //\n }\n dispose() {\n this.disposable.dispose();\n super.dispose();\n }\n}\n","import { PaneviewApi } from '../api/component.api';\nimport { Emitter } from '../events';\nimport { CompositeDisposable, MutableDisposable, } from '../lifecycle';\nimport { Orientation, Sizing } from '../splitview/splitview';\nimport { Paneview } from './paneview';\nimport { DraggablePaneviewPanel, } from './draggablePaneviewPanel';\nimport { DefaultHeader } from './defaultPaneviewHeader';\nimport { sequentialNumberGenerator } from '../math';\nimport { Resizable } from '../resizable';\nimport { Classnames } from '../dom';\nconst nextLayoutId = sequentialNumberGenerator();\nconst HEADER_SIZE = 22;\nconst MINIMUM_BODY_SIZE = 0;\nconst MAXIMUM_BODY_SIZE = Number.MAX_SAFE_INTEGER;\nexport class PaneFramework extends DraggablePaneviewPanel {\n constructor(options) {\n super({\n accessor: options.accessor,\n id: options.id,\n component: options.component,\n headerComponent: options.headerComponent,\n orientation: options.orientation,\n isExpanded: options.isExpanded,\n disableDnd: options.disableDnd,\n headerSize: options.headerSize,\n minimumBodySize: options.minimumBodySize,\n maximumBodySize: options.maximumBodySize,\n });\n this.options = options;\n }\n getBodyComponent() {\n return this.options.body;\n }\n getHeaderComponent() {\n return this.options.header;\n }\n}\nexport class PaneviewComponent extends Resizable {\n get id() {\n return this._id;\n }\n get panels() {\n return this.paneview.getPanes();\n }\n set paneview(value) {\n this._paneview = value;\n this._disposable.value = new CompositeDisposable(this._paneview.onDidChange(() => {\n this._onDidLayoutChange.fire(undefined);\n }), this._paneview.onDidAddView((e) => this._onDidAddView.fire(e)), this._paneview.onDidRemoveView((e) => this._onDidRemoveView.fire(e)));\n }\n get paneview() {\n return this._paneview;\n }\n get minimumSize() {\n return this.paneview.minimumSize;\n }\n get maximumSize() {\n return this.paneview.maximumSize;\n }\n get height() {\n return this.paneview.orientation === Orientation.HORIZONTAL\n ? this.paneview.orthogonalSize\n : this.paneview.size;\n }\n get width() {\n return this.paneview.orientation === Orientation.HORIZONTAL\n ? this.paneview.size\n : this.paneview.orthogonalSize;\n }\n get options() {\n return this._options;\n }\n constructor(container, options) {\n var _a;\n super(document.createElement('div'), options.disableAutoResizing);\n this._id = nextLayoutId.next();\n this._disposable = new MutableDisposable();\n this._viewDisposables = new Map();\n this._onDidLayoutfromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\n this._onDidLayoutChange = new Emitter();\n this.onDidLayoutChange = this._onDidLayoutChange.event;\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n this._onDidAddView = new Emitter();\n this.onDidAddView = this._onDidAddView.event;\n this._onDidRemoveView = new Emitter();\n this.onDidRemoveView = this._onDidRemoveView.event;\n this._onUnhandledDragOverEvent = new Emitter();\n this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;\n this.element.style.height = '100%';\n this.element.style.width = '100%';\n this.addDisposables(this._onDidLayoutChange, this._onDidLayoutfromJSON, this._onDidDrop, this._onDidAddView, this._onDidRemoveView, this._onUnhandledDragOverEvent);\n this._classNames = new Classnames(this.element);\n this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');\n // the container is owned by the third-party, do not modify/delete it\n container.appendChild(this.element);\n this._options = options;\n this.paneview = new Paneview(this.element, {\n // only allow paneview in the vertical orientation for now\n orientation: Orientation.VERTICAL,\n });\n this.addDisposables(this._disposable);\n }\n setVisible(panel, visible) {\n const index = this.panels.indexOf(panel);\n this.paneview.setViewVisible(index, visible);\n }\n focus() {\n //noop\n }\n updateOptions(options) {\n var _a, _b;\n if ('className' in options) {\n this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');\n }\n if ('disableResizing' in options) {\n this.disableResizing = (_b = options.disableAutoResizing) !== null && _b !== void 0 ? _b : false;\n }\n this._options = Object.assign(Object.assign({}, this.options), options);\n }\n addPanel(options) {\n var _a, _b;\n const body = this.options.createComponent({\n id: options.id,\n name: options.component,\n });\n let header;\n if (options.headerComponent && this.options.createHeaderComponent) {\n header = this.options.createHeaderComponent({\n id: options.id,\n name: options.headerComponent,\n });\n }\n if (!header) {\n header = new DefaultHeader();\n }\n const view = new PaneFramework({\n id: options.id,\n component: options.component,\n headerComponent: options.headerComponent,\n header,\n body,\n orientation: Orientation.VERTICAL,\n isExpanded: !!options.isExpanded,\n disableDnd: !!this.options.disableDnd,\n accessor: this,\n headerSize: (_a = options.headerSize) !== null && _a !== void 0 ? _a : HEADER_SIZE,\n minimumBodySize: MINIMUM_BODY_SIZE,\n maximumBodySize: MAXIMUM_BODY_SIZE,\n });\n this.doAddPanel(view);\n const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;\n const index = typeof options.index === 'number' ? options.index : undefined;\n view.init({\n params: (_b = options.params) !== null && _b !== void 0 ? _b : {},\n minimumBodySize: options.minimumBodySize,\n maximumBodySize: options.maximumBodySize,\n isExpanded: options.isExpanded,\n title: options.title,\n containerApi: new PaneviewApi(this),\n accessor: this,\n });\n this.paneview.addPane(view, size, index);\n view.orientation = this.paneview.orientation;\n return view;\n }\n removePanel(panel) {\n const views = this.panels;\n const index = views.findIndex((_) => _ === panel);\n this.paneview.removePane(index);\n this.doRemovePanel(panel);\n }\n movePanel(from, to) {\n this.paneview.moveView(from, to);\n }\n getPanel(id) {\n return this.panels.find((view) => view.id === id);\n }\n layout(width, height) {\n const [size, orthogonalSize] = this.paneview.orientation === Orientation.HORIZONTAL\n ? [width, height]\n : [height, width];\n this.paneview.layout(size, orthogonalSize);\n }\n toJSON() {\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ||\n value === Number.POSITIVE_INFINITY\n ? undefined\n : value;\n const minimum = (value) => (value <= 0 ? undefined : value);\n const views = this.paneview\n .getPanes()\n .map((view, i) => {\n const size = this.paneview.getViewSize(i);\n return {\n size,\n data: view.toJSON(),\n minimumSize: minimum(view.minimumBodySize),\n maximumSize: maximum(view.maximumBodySize),\n headerSize: view.headerSize,\n expanded: view.isExpanded(),\n };\n });\n return {\n views,\n size: this.paneview.size,\n };\n }\n fromJSON(serializedPaneview) {\n this.clear();\n const { views, size } = serializedPaneview;\n const queue = [];\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n this.paneview = new Paneview(this.element, {\n orientation: Orientation.VERTICAL,\n descriptor: {\n size,\n views: views.map((view) => {\n var _a, _b, _c;\n const data = view.data;\n const body = this.options.createComponent({\n id: data.id,\n name: data.component,\n });\n let header;\n if (data.headerComponent &&\n this.options.createHeaderComponent) {\n header = this.options.createHeaderComponent({\n id: data.id,\n name: data.headerComponent,\n });\n }\n if (!header) {\n header = new DefaultHeader();\n }\n const panel = new PaneFramework({\n id: data.id,\n component: data.component,\n headerComponent: data.headerComponent,\n header,\n body,\n orientation: Orientation.VERTICAL,\n isExpanded: !!view.expanded,\n disableDnd: !!this.options.disableDnd,\n accessor: this,\n headerSize: (_a = view.headerSize) !== null && _a !== void 0 ? _a : HEADER_SIZE,\n minimumBodySize: (_b = view.minimumSize) !== null && _b !== void 0 ? _b : MINIMUM_BODY_SIZE,\n maximumBodySize: (_c = view.maximumSize) !== null && _c !== void 0 ? _c : MAXIMUM_BODY_SIZE,\n });\n this.doAddPanel(panel);\n queue.push(() => {\n var _a;\n panel.init({\n params: (_a = data.params) !== null && _a !== void 0 ? _a : {},\n minimumBodySize: view.minimumSize,\n maximumBodySize: view.maximumSize,\n title: data.title,\n isExpanded: !!view.expanded,\n containerApi: new PaneviewApi(this),\n accessor: this,\n });\n panel.orientation = this.paneview.orientation;\n });\n setTimeout(() => {\n // the original onDidAddView events are missed since they are fired before we can subcribe to them\n this._onDidAddView.fire(panel);\n }, 0);\n return { size: view.size, view: panel };\n }),\n },\n });\n this.layout(width, height);\n queue.forEach((f) => f());\n this._onDidLayoutfromJSON.fire();\n }\n clear() {\n for (const [_, value] of this._viewDisposables.entries()) {\n value.dispose();\n }\n this._viewDisposables.clear();\n this.paneview.dispose();\n }\n doAddPanel(panel) {\n const disposable = new CompositeDisposable(panel.onDidDrop((event) => {\n this._onDidDrop.fire(event);\n }), panel.onUnhandledDragOverEvent((event) => {\n this._onUnhandledDragOverEvent.fire(event);\n }));\n this._viewDisposables.set(panel.id, disposable);\n }\n doRemovePanel(panel) {\n const disposable = this._viewDisposables.get(panel.id);\n if (disposable) {\n disposable.dispose();\n this._viewDisposables.delete(panel.id);\n }\n }\n dispose() {\n super.dispose();\n for (const [_, value] of this._viewDisposables.entries()) {\n value.dispose();\n }\n this._viewDisposables.clear();\n this.element.remove();\n this.paneview.dispose();\n }\n}\n","import { BasePanelView, } from '../gridview/basePanelView';\nimport { SplitviewPanelApiImpl } from '../api/splitviewPanelApi';\nimport { Orientation } from './splitview';\nimport { Emitter } from '../events';\nexport class SplitviewPanel extends BasePanelView {\n get priority() {\n return this._priority;\n }\n set orientation(value) {\n this._orientation = value;\n }\n get orientation() {\n return this._orientation;\n }\n get minimumSize() {\n const size = typeof this._minimumSize === 'function'\n ? this._minimumSize()\n : this._minimumSize;\n if (size !== this._evaluatedMinimumSize) {\n this._evaluatedMinimumSize = size;\n this.updateConstraints();\n }\n return size;\n }\n get maximumSize() {\n const size = typeof this._maximumSize === 'function'\n ? this._maximumSize()\n : this._maximumSize;\n if (size !== this._evaluatedMaximumSize) {\n this._evaluatedMaximumSize = size;\n this.updateConstraints();\n }\n return size;\n }\n get snap() {\n return this._snap;\n }\n constructor(id, componentName) {\n super(id, componentName, new SplitviewPanelApiImpl(id, componentName));\n this._evaluatedMinimumSize = 0;\n this._evaluatedMaximumSize = Number.POSITIVE_INFINITY;\n this._minimumSize = 0;\n this._maximumSize = Number.POSITIVE_INFINITY;\n this._snap = false;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this.api.initialize(this);\n this.addDisposables(this._onDidChange, this.api.onWillVisibilityChange((event) => {\n const { isVisible } = event;\n const { accessor } = this._params;\n accessor.setVisible(this, isVisible);\n }), this.api.onActiveChange(() => {\n const { accessor } = this._params;\n accessor.setActive(this);\n }), this.api.onDidConstraintsChangeInternal((event) => {\n if (typeof event.minimumSize === 'number' ||\n typeof event.minimumSize === 'function') {\n this._minimumSize = event.minimumSize;\n }\n if (typeof event.maximumSize === 'number' ||\n typeof event.maximumSize === 'function') {\n this._maximumSize = event.maximumSize;\n }\n this.updateConstraints();\n }), this.api.onDidSizeChange((event) => {\n this._onDidChange.fire({ size: event.size });\n }));\n }\n setVisible(isVisible) {\n this.api._onDidVisibilityChange.fire({ isVisible });\n }\n setActive(isActive) {\n this.api._onDidActiveChange.fire({ isActive });\n }\n layout(size, orthogonalSize) {\n const [width, height] = this.orientation === Orientation.HORIZONTAL\n ? [size, orthogonalSize]\n : [orthogonalSize, size];\n super.layout(width, height);\n }\n init(parameters) {\n super.init(parameters);\n this._priority = parameters.priority;\n if (parameters.minimumSize) {\n this._minimumSize = parameters.minimumSize;\n }\n if (parameters.maximumSize) {\n this._maximumSize = parameters.maximumSize;\n }\n if (parameters.snap) {\n this._snap = parameters.snap;\n }\n }\n toJSON() {\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ||\n value === Number.POSITIVE_INFINITY\n ? undefined\n : value;\n const minimum = (value) => (value <= 0 ? undefined : value);\n return Object.assign(Object.assign({}, super.toJSON()), { minimumSize: minimum(this.minimumSize), maximumSize: maximum(this.maximumSize) });\n }\n updateConstraints() {\n this.api._onDidConstraintsChange.fire({\n maximumSize: this._evaluatedMaximumSize,\n minimumSize: this._evaluatedMinimumSize,\n });\n }\n}\n","import { GridviewApi, PaneviewApi, SplitviewApi, } from '../api/component.api';\nimport { DockviewComponent } from '../dockview/dockviewComponent';\nimport { GridviewComponent } from '../gridview/gridviewComponent';\nimport { PaneviewComponent } from '../paneview/paneviewComponent';\nimport { SplitviewComponent } from '../splitview/splitviewComponent';\nexport function createDockview(element, options) {\n const component = new DockviewComponent(element, options);\n return component.api;\n}\nexport function createSplitview(element, options) {\n const component = new SplitviewComponent(element, options);\n return new SplitviewApi(component);\n}\nexport function createGridview(element, options) {\n const component = new GridviewComponent(element, options);\n return new GridviewApi(component);\n}\nexport function createPaneview(element, options) {\n const component = new PaneviewComponent(element, options);\n return new PaneviewApi(component);\n}\n","/******************************************************************************\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","import {\n ComponentRef,\n Injector,\n Type,\n ViewContainerRef,\n ApplicationRef,\n ComponentFactoryResolver,\n EmbeddedViewRef,\n createComponent,\n EnvironmentInjector\n} from '@angular/core';\nimport {\n IContentRenderer,\n IFrameworkPart,\n DockviewIDisposable,\n Parameters\n} from 'dockview-core';\n\nexport interface AngularRendererOptions {\n component: Type<any>;\n injector: Injector;\n environmentInjector?: EnvironmentInjector;\n}\n\nexport class AngularRenderer implements IContentRenderer, IFrameworkPart {\n private componentRef: ComponentRef<any> | null = null;\n private _element: HTMLElement | null = null;\n\n constructor(\n private options: AngularRendererOptions\n ) {}\n\n get element(): HTMLElement {\n if (!this._element) {\n throw new Error('Angular renderer not initialized');\n }\n return this._element;\n }\n\n init(parameters: Parameters): void {\n // If already initialized, just update the parameters\n if (this.componentRef) {\n this.update(parameters);\n } else {\n this.render(parameters);\n }\n }\n\n update(params: Parameters): void {\n if (this.componentRef) {\n Object.keys(params).forEach(key => {\n // Use 'in' operator instead of hasOwnProperty to support getter/setter properties\n if (key in this.componentRef!.instance) {\n this.componentRef!.instance[key] = params[key];\n }\n });\n this.componentRef.changeDetectorRef.detectChanges();\n }\n }\n\n private render(parameters: Parameters): void {\n try {\n // Create the component using modern Angular API\n this.componentRef = createComponent(this.options.component, {\n environmentInjector: this.options.environmentInjector || this.options.injector as EnvironmentInjector,\n elementInjector: this.options.injector\n });\n\n // Set initial parameters\n Object.keys(parameters).forEach(key => {\n // Use 'in' operator instead of hasOwnProperty to support getter/setter properties\n if (key in this.componentRef!.instance) {\n this.componentRef!.instance[key] = parameters[key];\n }\n });\n\n // Get the DOM element\n const hostView = this.componentRef.hostView as EmbeddedViewRef<any>;\n this._element = hostView.rootNodes[0] as HTMLElement;\n\n // Trigger change detection\n this.componentRef.changeDetectorRef.detectChanges();\n\n } catch (error) {\n console.error('Error creating Angular component:', error);\n throw error;\n }\n }\n\n dispose(): void {\n if (this.componentRef) {\n this.componentRef.destroy();\n this.componentRef = null;\n }\n this._element = null;\n }\n}","import { Type, Injector, EnvironmentInjector } from '@angular/core';\nimport {\n GridviewPanel,\n GridviewApi,\n GridviewInitParameters,\n IFrameworkPart,\n GridviewComponent,\n} from 'dockview-core';\nimport { AngularRenderer } from '../utils/angular-renderer';\n\nexport class AngularGridviewPanel extends GridviewPanel {\n constructor(\n id: string,\n component: string,\n private readonly angularComponent: Type<any>,\n private readonly injector: Injector,\n private readonly environmentInjector?: EnvironmentInjector\n ) {\n super(id, component);\n }\n\n getComponent(): IFrameworkPart {\n return new AngularRenderer({\n component: this.angularComponent,\n injector: this.injector,\n environmentInjector: this.environmentInjector\n });\n }\n}","import { Type, Injector, EnvironmentInjector } from '@angular/core';\nimport {\n SplitviewPanel,\n SplitviewApi,\n IFrameworkPart,\n SplitviewComponent,\n} from 'dockview-core';\nimport { AngularRenderer } from '../utils/angular-renderer';\n\nexport class AngularSplitviewPanel extends SplitviewPanel {\n constructor(\n id: string,\n component: string,\n private readonly angularComponent: Type<any>,\n private readonly injector: Injector,\n private readonly environmentInjector?: EnvironmentInjector\n ) {\n super(id, component);\n }\n\n getComponent(): IFrameworkPart {\n return new AngularRenderer({\n component: this.angularComponent,\n injector: this.injector,\n environmentInjector: this.environmentInjector\n });\n }\n}","import { Type, Injector, EnvironmentInjector } from '@angular/core';\nimport {\n IPanePart,\n PanelUpdateEvent,\n PanePanelComponentInitParameter\n} from 'dockview-core';\nimport { AngularRenderer } from '../utils/angular-renderer';\n\nexport class AngularPanePart implements IPanePart {\n private renderer: AngularRenderer;\n\n constructor(\n private readonly angularComponent: Type<any>,\n private readonly injector: Injector,\n private readonly environmentInjector?: EnvironmentInjector\n ) {\n this.renderer = new AngularRenderer({\n component: this.angularComponent,\n injector: this.injector,\n environmentInjector: this.environmentInjector\n });\n }\n\n get element(): HTMLElement {\n return this.renderer.element;\n }\n\n init(parameters: PanePanelComponentInitParameter): void {\n this.renderer.init(parameters);\n }\n\n update(params: PanelUpdateEvent): void {\n this.renderer.update(params);\n }\n\n dispose(): void {\n this.renderer.dispose();\n }\n}","import { Type, Injector, EnvironmentInjector } from '@angular/core';\nimport {\n IFrameworkPart,\n Parameters,\n IContentRenderer,\n ITabRenderer,\n IWatermarkRenderer,\n IHeaderActionsRenderer,\n TabPartInitParameters,\n WatermarkRendererInitParameters,\n GroupPanelPartInitParameters,\n CreateComponentOptions,\n GridviewPanel,\n SplitviewPanel,\n IPanePart\n} from 'dockview-core';\nimport { AngularRenderer, AngularRendererOptions } from './angular-renderer';\nimport { AngularGridviewPanel } from '../gridview/angular-gridview-panel';\nimport { AngularSplitviewPanel } from '../splitview/angular-splitview-panel';\nimport { AngularPanePart } from '../paneview/angular-pane-part';\n\nexport class AngularFrameworkComponentFactory {\n constructor(\n private components: Record<string, Type<any>>,\n private injector: Injector,\n private environmentInjector?: EnvironmentInjector,\n private tabComponents?: Record<string, Type<any>>,\n private watermarkComponent?: Type<any>,\n private headerActionsComponents?: Record<string, Type<any>>,\n private defaultTabComponent?: Type<any>\n ) {}\n\n // For DockviewComponent\n createDockviewComponent(options: CreateComponentOptions): IContentRenderer {\n const component = this.components[options.name];\n if (!component) {\n throw new Error(`Component '${options.name}' not found in component registry`);\n }\n\n const renderer = new AngularRenderer({\n component,\n injector: this.injector,\n environmentInjector: this.environmentInjector\n });\n \n renderer.init(options);\n return renderer;\n }\n\n // For GridviewComponent \n createGridviewComponent(options: CreateComponentOptions): GridviewPanel {\n const component = this.components[options.name];\n if (!component) {\n throw new Error(`Component '${options.name}' not found in component registry`);\n }\n\n return new AngularGridviewPanel(\n options.id,\n options.name,\n component,\n this.injector,\n this.environmentInjector\n );\n }\n\n // For SplitviewComponent\n createSplitviewComponent(options: CreateComponentOptions): SplitviewPanel {\n const component = this.components[options.name];\n if (!component) {\n throw new Error(`Component '${options.name}' not found in component registry`);\n }\n\n return new AngularSplitviewPanel(\n options.id,\n options.name,\n component,\n this.injector,\n this.environmentInjector\n );\n }\n\n // For PaneviewComponent\n createPaneviewComponent(options: CreateComponentOptions): IPanePart {\n const component = this.components[options.name];\n if (!component) {\n throw new Error(`Component '${options.name}' not found in component registry`);\n }\n\n return new AngularPanePart(\n component,\n this.injector,\n this.environmentInjector\n );\n }\n\n // Legacy method for backward compatibility\n createComponent(options: CreateComponentOptions): IContentRenderer {\n return this.createDockviewComponent(options);\n }\n\n createTabComponent(options: CreateComponentOptions): ITabRenderer | undefined {\n let component = this.tabComponents?.[options.name];\n \n if (!component && this.defaultTabComponent) {\n component = this.defaultTabComponent;\n }\n \n if (!component) {\n return undefined;\n }\n\n const renderer = new AngularRenderer({\n component,\n injector: this.injector,\n environmentInjector: this.environmentInjector\n });\n \n renderer.init(options);\n return renderer;\n }\n\n createWatermarkComponent(): IWatermarkRenderer {\n if (!this.watermarkComponent) {\n throw new Error('Watermark component not provided');\n }\n\n const renderer = new AngularRenderer({\n component: this.watermarkComponent,\n injector: this.injector,\n environmentInjector: this.environmentInjector\n });\n \n renderer.init({});\n return renderer;\n }\n\n createHeaderActionsComponent(name: string): IHeaderActionsRenderer | undefined {\n const component = this.headerActionsComponents?.[name];\n if (!component) {\n return undefined;\n }\n\n const renderer = new AngularRenderer({\n component,\n injector: this.injector,\n environmentInjector: this.environmentInjector\n });\n\n // Initialize with empty props - dockview-core will call init() again with actual IGroupHeaderProps\n renderer.init({});\n return renderer;\n }\n}","export function isFunction(value) {\n return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n return function (source) {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n//# sourceMappingURL=lift.js.map","export var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n//# sourceMappingURL=isPromise.js.map","export function createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","import { createErrorClass } from './createErrorClass';\nexport var UnsubscriptionError = createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ')\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrRemove.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nvar Subscription = (function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n Subscription.prototype.unsubscribe = function () {\n var e_1, _a, e_2, _b;\n var errors;\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n var initialFinalizer = this.initialTeardown;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n var _finalizers = this._finalizers;\n if (_finalizers) {\n this._finalizers = null;\n try {\n for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n var finalizer = _finalizers_1_1.value;\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n Subscription.prototype.add = function (teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n };\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n Subscription.prototype.remove = function (teardown) {\n var _finalizers = this._finalizers;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n Subscription.EMPTY = (function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n return Subscription;\n}());\nexport { Subscription };\nexport var EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.js.map","export var config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n setTimeout: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = timeoutProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(function () {\n var onUnhandledError = config.onUnhandledError;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","import { config } from '../config';\nvar context = null;\nexport function errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n var isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n var _a = context, errorThrown = _a.errorThrown, error = _a.error;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexport function captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n//# sourceMappingURL=errorContext.js.map","import { __extends } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n }\n else {\n _this.destination = EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n };\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n function ConsumerObserver(partialObserver) {\n this.partialObserver = partialObserver;\n }\n ConsumerObserver.prototype.next = function (value) {\n var partialObserver = this.partialObserver;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n ConsumerObserver.prototype.error = function (err) {\n var partialObserver = this.partialObserver;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n };\n ConsumerObserver.prototype.complete = function () {\n var partialObserver = this.partialObserver;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n var context_1;\n if (_this && config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n context_1.unsubscribe = function () { return _this.unsubscribe(); };\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context_1),\n error: observerOrNext.error && bind(observerOrNext.error, context_1),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n _this.destination = new ConsumerObserver(partialObserver);\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config.onStoppedNotification;\n onStoppedNotification && timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexport var EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","export var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n//# sourceMappingURL=observable.js.map","export function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map","import { identity } from './identity';\nexport function pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\n//# sourceMappingURL=pipe.js.map","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nvar Observable = (function () {\n function Observable(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var _this = this;\n var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(function () {\n var _a = _this, operator = _a.operator, source = _a.source;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n _this._subscribe(subscriber)\n :\n _this._trySubscribe(subscriber));\n });\n return subscriber;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n _this.subscribe(subscriber);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n//# sourceMappingURL=Observable.js.map","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n return isFunction(input[Symbol_observable]);\n}\n//# sourceMappingURL=isInteropObservable.js.map","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n//# sourceMappingURL=isAsyncIterable.js.map","export function createInvalidObservableTypeError(input) {\n return new TypeError(\"You provided \" + (input !== null && typeof input === 'object' ? 'an invalid object' : \"'\" + input + \"'\") + \" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.\");\n}\n//# sourceMappingURL=throwUnobservableError.js.map","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport var iterator = getSymbolIterator();\n//# sourceMappingURL=iterator.js.map","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n//# sourceMappingURL=isIterable.js.map","import { __asyncGenerator, __await, __generator } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {\n var reader, _a, value, done;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n reader = readableStream.getReader();\n _b.label = 1;\n case 1:\n _b.trys.push([1, , 9, 10]);\n _b.label = 2;\n case 2:\n if (!true) return [3, 8];\n return [4, __await(reader.read())];\n case 3:\n _a = _b.sent(), value = _a.value, done = _a.done;\n if (!done) return [3, 5];\n return [4, __await(void 0)];\n case 4: return [2, _b.sent()];\n case 5: return [4, __await(value)];\n case 6: return [4, _b.sent()];\n case 7:\n _b.sent();\n return [3, 2];\n case 8: return [3, 10];\n case 9:\n reader.releaseLock();\n return [7];\n case 10: return [2];\n }\n });\n });\n}\nexport function isReadableStreamLike(obj) {\n return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n//# sourceMappingURL=isReadableStreamLike.js.map","import { __asyncValues, __awaiter, __generator, __values } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function innerFrom(input) {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\nexport function fromInteropObservable(obj) {\n return new Observable(function (subscriber) {\n var obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nexport function fromArrayLike(array) {\n return new Observable(function (subscriber) {\n for (var i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nexport function fromPromise(promise) {\n return new Observable(function (subscriber) {\n promise\n .then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, reportUnhandledError);\n });\n}\nexport function fromIterable(iterable) {\n return new Observable(function (subscriber) {\n var e_1, _a;\n try {\n for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {\n var value = iterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\nexport function fromAsyncIterable(asyncIterable) {\n return new Observable(function (subscriber) {\n process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); });\n });\n}\nexport function fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_2, _a;\n return __awaiter(this, void 0, void 0, function () {\n var value, e_2_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 11]);\n asyncIterable_1 = __asyncValues(asyncIterable);\n _b.label = 1;\n case 1: return [4, asyncIterable_1.next()];\n case 2:\n if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];\n value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return [2];\n }\n _b.label = 3;\n case 3: return [3, 1];\n case 4: return [3, 11];\n case 5:\n e_2_1 = _b.sent();\n e_2 = { error: e_2_1 };\n return [3, 11];\n case 6:\n _b.trys.push([6, , 9, 10]);\n if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];\n return [4, _a.call(asyncIterable_1)];\n case 7:\n _b.sent();\n _b.label = 8;\n case 8: return [3, 10];\n case 9:\n if (e_2) throw e_2.error;\n return [7];\n case 10: return [7];\n case 11:\n subscriber.complete();\n return [2];\n }\n });\n });\n}\n//# sourceMappingURL=innerFrom.js.map","import { __extends } from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nvar OperatorSubscriber = (function (_super) {\n __extends(OperatorSubscriber, _super);\n function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n var _this = _super.call(this, destination) || this;\n _this.onFinalize = onFinalize;\n _this.shouldUnsubscribe = shouldUnsubscribe;\n _this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : _super.prototype._next;\n _this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._error;\n _this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._complete;\n return _this;\n }\n OperatorSubscriber.prototype.unsubscribe = function () {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n var closed_1 = this.closed;\n _super.prototype.unsubscribe.call(this);\n !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n };\n return OperatorSubscriber;\n}(Subscriber));\nexport { OperatorSubscriber };\n//# sourceMappingURL=OperatorSubscriber.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { noop } from '../util/noop';\nexport function takeUntil(notifier) {\n return operate(function (source, subscriber) {\n innerFrom(notifier).subscribe(createOperatorSubscriber(subscriber, function () { return subscriber.complete(); }, noop));\n !subscriber.closed && source.subscribe(subscriber);\n });\n}\n//# sourceMappingURL=takeUntil.js.map","import { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { DockviewIDisposable } from 'dockview-core';\n\nexport class AngularDisposable implements DockviewIDisposable {\n private _isDisposed = false;\n private disposeCallbacks: (() => void)[] = [];\n\n get isDisposed(): boolean {\n return this._isDisposed;\n }\n\n addDisposeCallback(callback: () => void): void {\n if (this._isDisposed) {\n callback();\n return;\n }\n this.disposeCallbacks.push(callback);\n }\n\n dispose(): void {\n if (this._isDisposed) {\n return;\n }\n\n this._isDisposed = true;\n this.disposeCallbacks.forEach(callback => {\n try {\n callback();\n } catch (error) {\n console.error('Error in dispose callback:', error);\n }\n });\n this.disposeCallbacks = [];\n }\n}\n\nexport class AngularLifecycleManager {\n private destroySubject = new Subject<void>();\n private disposables: DockviewIDisposable[] = [];\n\n get destroy$(): Observable<void> {\n return this.destroySubject.asObservable();\n }\n\n addDisposable(disposable: DockviewIDisposable): void {\n this.disposables.push(disposable);\n }\n\n takeUntilDestroy<T>(): (source: Observable<T>) => Observable<T> {\n return takeUntil(this.destroySubject);\n }\n\n destroy(): void {\n this.destroySubject.next();\n this.destroySubject.complete();\n \n this.disposables.forEach(disposable => {\n try {\n disposable.dispose();\n } catch (error) {\n console.error('Error disposing resource:', error);\n }\n });\n this.disposables = [];\n }\n}\n\nexport function createAngularDisposable(disposeCallback?: () => void): AngularDisposable {\n const disposable = new AngularDisposable();\n if (disposeCallback) {\n disposable.addDisposeCallback(disposeCallback);\n }\n return disposable;\n}","import {\n Component,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Type,\n ViewChild,\n ChangeDetectionStrategy,\n OnChanges,\n SimpleChanges,\n EnvironmentInjector,\n inject\n} from '@angular/core';\nimport {\n DockviewApi,\n DockviewOptions,\n DockviewReadyEvent,\n DockviewDidDropEvent,\n DockviewWillDropEvent,\n createDockview,\n PROPERTY_KEYS_DOCKVIEW,\n DockviewFrameworkOptions,\n DockviewComponentOptions\n} from 'dockview-core';\nimport { AngularFrameworkComponentFactory } from '../utils/component-factory';\nimport { AngularLifecycleManager } from '../utils/lifecycle-utils';\n\nexport interface DockviewAngularOptions extends DockviewOptions {\n components: Record<string, Type<any>>;\n tabComponents?: Record<string, Type<any>>;\n watermarkComponent?: Type<any>;\n defaultTabComponent?: Type<any>;\n leftHeaderActionsComponent?: Type<any>;\n rightHeaderActionsComponent?: Type<any>;\n prefixHeaderActionsComponent?: Type<any>;\n}\n\n@Component({\n selector: 'dv-dockview',\n standalone: true,\n template: '<div #dockviewContainer class=\"dockview-container\"></div>',\n styles: [`\n :host {\n display: block;\n width: 100%;\n height: 100%;\n }\n\n .dockview-container {\n width: 100%;\n height: 100%;\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DockviewAngularComponent implements OnInit, OnDestroy, OnChanges {\n @ViewChild('dockviewContainer', { static: true }) \n private containerRef!: ElementRef<HTMLDivElement>;\n\n @Input() components!: Record<string, Type<any>>;\n @Input() tabComponents?: Record<string, Type<any>>;\n @Input() watermarkComponent?: Type<any>;\n @Input() defaultTabComponent?: Type<any>;\n @Input() leftHeaderActionsComponent?: Type<any>;\n @Input() rightHeaderActionsComponent?: Type<any>;\n @Input() prefixHeaderActionsComponent?: Type<any>;\n\n // Core dockview options as inputs\n @Input() className?: string;\n @Input() orientation?: 'horizontal' | 'vertical';\n @Input() hideBorders?: boolean;\n @Input() rootOverlayModel?: 'always' | 'never';\n @Input() defaultTabComponent_?: string;\n @Input() tabHeight?: number;\n @Input() disableFloatingGroups?: boolean;\n @Input() floatingGroupBounds?: 'boundedWithinViewport';\n @Input() popoutUrl?: string;\n @Input() debug?: boolean;\n @Input() locked?: boolean;\n @Input() disableAutoResizing?: boolean;\n @Input() singleTabMode?: 'fullwidth' | 'default';\n\n @Output() ready = new EventEmitter<DockviewReadyEvent>();\n @Output() didDrop = new EventEmitter<DockviewDidDropEvent>();\n @Output() willDrop = new EventEmitter<DockviewWillDropEvent>();\n\n private dockviewApi?: DockviewApi;\n private lifecycleManager = new AngularLifecycleManager();\n private injector = inject(Injector);\n private environmentInjector = inject(EnvironmentInjector);\n\n ngOnInit(): void {\n this.initializeDockview();\n }\n\n ngOnDestroy(): void {\n this.lifecycleManager.destroy();\n if (this.dockviewApi) {\n this.dockviewApi.dispose();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.dockviewApi) {\n const coreChanges: Partial<DockviewOptions> = {};\n let hasChanges = false;\n\n // Check for changes in core dockview properties\n PROPERTY_KEYS_DOCKVIEW.forEach(key => {\n if (changes[key] && !changes[key].isFirstChange()) {\n (coreChanges as any)[key] = changes[key].currentValue;\n hasChanges = true;\n }\n });\n\n if (hasChanges) {\n this.dockviewApi.updateOptions(coreChanges);\n }\n }\n }\n\n getDockviewApi(): DockviewApi | undefined {\n return this.dockviewApi;\n }\n\n private initializeDockview(): void {\n if (!this.components) {\n throw new Error('DockviewAngularComponent: components input is required');\n }\n\n const coreOptions = this.extractCoreOptions();\n const frameworkOptions = this.createFrameworkOptions();\n\n this.dockviewApi = createDockview(\n this.containerRef.nativeElement,\n {\n ...coreOptions,\n ...frameworkOptions\n }\n );\n\n // Set up event listeners\n this.setupEventListeners();\n\n // Emit ready event\n this.ready.emit({ api: this.dockviewApi });\n }\n\n private extractCoreOptions(): DockviewOptions {\n const coreOptions: Partial<DockviewComponentOptions> = {};\n\n PROPERTY_KEYS_DOCKVIEW.forEach(key => {\n const value = (this as any)[key];\n if (value !== undefined) {\n (coreOptions as any)[key] = value;\n }\n });\n\n return coreOptions as DockviewOptions;\n }\n\n private createFrameworkOptions(): DockviewFrameworkOptions {\n const headerActionsComponents: Record<string, Type<any>> = {};\n if (this.leftHeaderActionsComponent) {\n headerActionsComponents['left'] = this.leftHeaderActionsComponent;\n }\n if (this.rightHeaderActionsComponent) {\n headerActionsComponents['right'] = this.rightHeaderActionsComponent;\n }\n if (this.prefixHeaderActionsComponent) {\n headerActionsComponents['prefix'] = this.prefixHeaderActionsComponent;\n }\n\n const componentFactory = new AngularFrameworkComponentFactory(\n this.components,\n this.injector,\n this.environmentInjector,\n this.tabComponents,\n this.watermarkComponent,\n headerActionsComponents,\n this.defaultTabComponent\n );\n\n return {\n createComponent: (options) => {\n return componentFactory.createDockviewComponent(options);\n },\n createTabComponent: (options) => {\n return componentFactory.createTabComponent(options);\n },\n createWatermarkComponent: this.watermarkComponent\n ? () => {\n return componentFactory.createWatermarkComponent();\n }\n : undefined,\n createLeftHeaderActionComponent: this.leftHeaderActionsComponent\n ? (group) => {\n return componentFactory.createHeaderActionsComponent('left')!;\n }\n : undefined,\n createRightHeaderActionComponent: this.rightHeaderActionsComponent\n ? (group) => {\n return componentFactory.createHeaderActionsComponent('right')!;\n }\n : undefined,\n createPrefixHeaderActionComponent: this.prefixHeaderActionsComponent\n ? (group) => {\n return componentFactory.createHeaderActionsComponent('prefix')!;\n }\n : undefined\n };\n }\n\n private setupEventListeners(): void {\n if (!this.dockviewApi) {\n return;\n }\n\n // Set up event subscriptions using lifecycle manager\n const api = this.dockviewApi;\n\n if (this.didDrop.observers.length > 0) {\n const disposable = api.onDidDrop(event => {\n this.didDrop.emit(event);\n });\n this.lifecycleManager.addDisposable(disposable);\n }\n\n if (this.willDrop.observers.length > 0) {\n const disposable = api.onWillDrop(event => {\n this.willDrop.emit(event);\n });\n this.lifecycleManager.addDisposable(disposable);\n }\n }\n}","import {\n Component,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Type,\n ViewChild,\n ChangeDetectionStrategy,\n OnChanges,\n SimpleChanges,\n EnvironmentInjector,\n inject\n} from '@angular/core';\nimport {\n GridviewApi,\n GridviewOptions,\n createGridview,\n PROPERTY_KEYS_GRIDVIEW,\n GridviewFrameworkOptions,\n GridviewComponentOptions\n} from 'dockview-core';\nimport { AngularFrameworkComponentFactory } from '../utils/component-factory';\nimport { AngularLifecycleManager } from '../utils/lifecycle-utils';\nimport { GridviewAngularReadyEvent } from './types';\n\nexport interface GridviewAngularOptions extends GridviewOptions {\n components: Record<string, Type<any>>;\n}\n\n@Component({\n selector: 'dv-gridview',\n standalone: true,\n template: '<div #gridviewContainer class=\"gridview-container\"></div>',\n styles: [`\n :host {\n display: block;\n width: 100%;\n height: 100%;\n }\n\n .gridview-container {\n width: 100%;\n height: 100%;\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GridviewAngularComponent implements OnInit, OnDestroy, OnChanges {\n @ViewChild('gridviewContainer', { static: true }) \n private containerRef!: ElementRef<HTMLDivElement>;\n\n @Input() components!: Record<string, Type<any>>;\n\n // Core gridview options as inputs\n @Input() className?: string;\n @Input() orientation?: 'horizontal' | 'vertical';\n @Input() proportionalLayout?: boolean;\n @Input() hideBorders?: boolean;\n @Input() debug?: boolean;\n @Input() disableAutoResizing?: boolean;\n\n @Output() ready = new EventEmitter<GridviewAngularReadyEvent>();\n\n private gridviewApi?: GridviewApi;\n private lifecycleManager = new AngularLifecycleManager();\n private injector = inject(Injector);\n private environmentInjector = inject(EnvironmentInjector);\n\n ngOnInit(): void {\n this.initializeGridview();\n }\n\n ngOnDestroy(): void {\n this.lifecycleManager.destroy();\n if (this.gridviewApi) {\n this.gridviewApi.dispose();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.gridviewApi) {\n const coreChanges: Partial<GridviewOptions> = {};\n let hasChanges = false;\n\n // Check for changes in core gridview properties\n PROPERTY_KEYS_GRIDVIEW.forEach(key => {\n if (changes[key] && !changes[key].isFirstChange()) {\n (coreChanges as any)[key] = changes[key].currentValue;\n hasChanges = true;\n }\n });\n\n if (hasChanges) {\n this.gridviewApi.updateOptions(coreChanges);\n }\n }\n }\n\n getGridviewApi(): GridviewApi | undefined {\n return this.gridviewApi;\n }\n\n private initializeGridview(): void {\n if (!this.components) {\n throw new Error('GridviewAngularComponent: components input is required');\n }\n\n const coreOptions = this.extractCoreOptions();\n const frameworkOptions = this.createFrameworkOptions();\n\n this.gridviewApi = createGridview(\n this.containerRef.nativeElement,\n {\n ...coreOptions,\n ...frameworkOptions\n }\n );\n\n // Emit ready event\n this.ready.emit({ api: this.gridviewApi });\n }\n\n private extractCoreOptions(): GridviewOptions {\n const coreOptions: Partial<GridviewComponentOptions> = {};\n\n PROPERTY_KEYS_GRIDVIEW.forEach(key => {\n const value = (this as any)[key];\n if (value !== undefined) {\n (coreOptions as any)[key] = value;\n }\n });\n\n return coreOptions as GridviewOptions;\n }\n\n private createFrameworkOptions(): GridviewFrameworkOptions {\n const componentFactory = new AngularFrameworkComponentFactory(\n this.components,\n this.injector,\n this.environmentInjector\n );\n\n return {\n createComponent: (options) => {\n return componentFactory.createGridviewComponent(options);\n }\n };\n }\n}","import {\n Component,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Type,\n ViewChild,\n ChangeDetectionStrategy,\n OnChanges,\n SimpleChanges,\n EnvironmentInjector,\n inject\n} from '@angular/core';\nimport {\n PaneviewApi,\n PaneviewOptions,\n PaneviewDropEvent,\n createPaneview,\n PROPERTY_KEYS_PANEVIEW,\n PaneviewFrameworkOptions,\n PaneviewComponentOptions\n} from 'dockview-core';\nimport { AngularFrameworkComponentFactory } from '../utils/component-factory';\nimport { AngularLifecycleManager } from '../utils/lifecycle-utils';\nimport { PaneviewAngularReadyEvent } from './types';\nimport { AngularPanePart } from './angular-pane-part';\n\nexport interface PaneviewAngularOptions extends PaneviewOptions {\n components: Record<string, Type<any>>;\n headerComponents?: Record<string, Type<any>>;\n}\n\n@Component({\n selector: 'dv-paneview',\n standalone: true,\n template: '<div #paneviewContainer class=\"paneview-container\"></div>',\n styles: [`\n :host {\n display: block;\n width: 100%;\n height: 100%;\n }\n\n .paneview-container {\n width: 100%;\n height: 100%;\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PaneviewAngularComponent implements OnInit, OnDestroy, OnChanges {\n @ViewChild('paneviewContainer', { static: true }) \n private containerRef!: ElementRef<HTMLDivElement>;\n\n @Input() components!: Record<string, Type<any>>;\n @Input() headerComponents?: Record<string, Type<any>>;\n\n // Core paneview options as inputs\n @Input() className?: string;\n @Input() orientation?: 'horizontal' | 'vertical';\n @Input() hideBorders?: boolean;\n @Input() debug?: boolean;\n @Input() disableAutoResizing?: boolean;\n\n @Output() ready = new EventEmitter<PaneviewAngularReadyEvent>();\n @Output() drop = new EventEmitter<PaneviewDropEvent>();\n\n private paneviewApi?: PaneviewApi;\n private lifecycleManager = new AngularLifecycleManager();\n private injector = inject(Injector);\n private environmentInjector = inject(EnvironmentInjector);\n\n ngOnInit(): void {\n this.initializePaneview();\n }\n\n ngOnDestroy(): void {\n this.lifecycleManager.destroy();\n if (this.paneviewApi) {\n this.paneviewApi.dispose();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.paneviewApi) {\n const coreChanges: Partial<PaneviewOptions> = {};\n let hasChanges = false;\n\n // Check for changes in core paneview properties\n PROPERTY_KEYS_PANEVIEW.forEach(key => {\n if (changes[key] && !changes[key].isFirstChange()) {\n (coreChanges as any)[key] = changes[key].currentValue;\n hasChanges = true;\n }\n });\n\n if (hasChanges) {\n this.paneviewApi.updateOptions(coreChanges);\n }\n }\n }\n\n getPaneviewApi(): PaneviewApi | undefined {\n return this.paneviewApi;\n }\n\n private initializePaneview(): void {\n if (!this.components) {\n throw new Error('PaneviewAngularComponent: components input is required');\n }\n\n const coreOptions = this.extractCoreOptions();\n const frameworkOptions = this.createFrameworkOptions();\n\n this.paneviewApi = createPaneview(\n this.containerRef.nativeElement,\n {\n ...coreOptions,\n ...frameworkOptions\n }\n );\n\n // Set up event listeners\n this.setupEventListeners();\n\n // Emit ready event\n this.ready.emit({ api: this.paneviewApi });\n }\n\n private extractCoreOptions(): PaneviewOptions {\n const coreOptions: Partial<PaneviewComponentOptions> = {};\n\n PROPERTY_KEYS_PANEVIEW.forEach(key => {\n const value = (this as any)[key];\n if (value !== undefined) {\n (coreOptions as any)[key] = value;\n }\n });\n\n return coreOptions as PaneviewOptions;\n }\n\n private createFrameworkOptions(): PaneviewFrameworkOptions {\n const componentFactory = new AngularFrameworkComponentFactory(\n this.components,\n this.injector,\n this.environmentInjector,\n this.headerComponents\n );\n\n return {\n createComponent: (options) => {\n return componentFactory.createPaneviewComponent(options);\n },\n createHeaderComponent: this.headerComponents\n ? (options) => {\n return new AngularPanePart(\n this.headerComponents![options.name],\n this.injector,\n this.environmentInjector\n );\n }\n : undefined\n };\n }\n\n private setupEventListeners(): void {\n if (!this.paneviewApi) {\n return;\n }\n\n // Set up event subscriptions using lifecycle manager\n const api = this.paneviewApi;\n\n if (this.drop.observers.length > 0) {\n const disposable = api.onDidDrop(event => {\n this.drop.emit(event);\n });\n this.lifecycleManager.addDisposable(disposable);\n }\n }\n}","import {\n Component,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Type,\n ViewChild,\n ChangeDetectionStrategy,\n OnChanges,\n SimpleChanges,\n EnvironmentInjector,\n inject\n} from '@angular/core';\nimport {\n SplitviewApi,\n SplitviewOptions,\n createSplitview,\n PROPERTY_KEYS_SPLITVIEW,\n SplitviewFrameworkOptions,\n SplitviewComponentOptions\n} from 'dockview-core';\nimport { AngularFrameworkComponentFactory } from '../utils/component-factory';\nimport { AngularLifecycleManager } from '../utils/lifecycle-utils';\nimport { SplitviewAngularReadyEvent } from './types';\n\nexport interface SplitviewAngularOptions extends SplitviewOptions {\n components: Record<string, Type<any>>;\n}\n\n@Component({\n selector: 'dv-splitview',\n standalone: true,\n template: '<div #splitviewContainer class=\"splitview-container\"></div>',\n styles: [`\n :host {\n display: block;\n width: 100%;\n height: 100%;\n }\n\n .splitview-container {\n width: 100%;\n height: 100%;\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SplitviewAngularComponent implements OnInit, OnDestroy, OnChanges {\n @ViewChild('splitviewContainer', { static: true }) \n private containerRef!: ElementRef<HTMLDivElement>;\n\n @Input() components!: Record<string, Type<any>>;\n\n // Core splitview options as inputs\n @Input() className?: string;\n @Input() orientation?: 'horizontal' | 'vertical';\n @Input() proportionalLayout?: boolean;\n @Input() hideBorders?: boolean;\n @Input() debug?: boolean;\n @Input() disableAutoResizing?: boolean;\n\n @Output() ready = new EventEmitter<SplitviewAngularReadyEvent>();\n\n private splitviewApi?: SplitviewApi;\n private lifecycleManager = new AngularLifecycleManager();\n private injector = inject(Injector);\n private environmentInjector = inject(EnvironmentInjector);\n\n ngOnInit(): void {\n this.initializeSplitview();\n }\n\n ngOnDestroy(): void {\n this.lifecycleManager.destroy();\n if (this.splitviewApi) {\n this.splitviewApi.dispose();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.splitviewApi) {\n const coreChanges: Partial<SplitviewOptions> = {};\n let hasChanges = false;\n\n // Check for changes in core splitview properties\n PROPERTY_KEYS_SPLITVIEW.forEach(key => {\n if (changes[key] && !changes[key].isFirstChange()) {\n (coreChanges as any)[key] = changes[key].currentValue;\n hasChanges = true;\n }\n });\n\n if (hasChanges) {\n this.splitviewApi.updateOptions(coreChanges);\n }\n }\n }\n\n getSplitviewApi(): SplitviewApi | undefined {\n return this.splitviewApi;\n }\n\n private initializeSplitview(): void {\n if (!this.components) {\n throw new Error('SplitviewAngularComponent: components input is required');\n }\n\n const coreOptions = this.extractCoreOptions();\n const frameworkOptions = this.createFrameworkOptions();\n\n this.splitviewApi = createSplitview(\n this.containerRef.nativeElement,\n {\n ...coreOptions,\n ...frameworkOptions\n }\n );\n\n // Emit ready event\n this.ready.emit({ api: this.splitviewApi });\n }\n\n private extractCoreOptions(): SplitviewOptions {\n const coreOptions: Partial<SplitviewComponentOptions> = {};\n\n PROPERTY_KEYS_SPLITVIEW.forEach(key => {\n const value = (this as any)[key];\n if (value !== undefined) {\n (coreOptions as any)[key] = value;\n }\n });\n\n return coreOptions as SplitviewOptions;\n }\n\n private createFrameworkOptions(): SplitviewFrameworkOptions {\n const componentFactory = new AngularFrameworkComponentFactory(\n this.components,\n this.injector,\n this.environmentInjector\n );\n\n return {\n createComponent: (options) => {\n return componentFactory.createSplitviewComponent(options);\n }\n };\n }\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { DockviewAngularComponent } from './dockview/dockview-angular.component';\nimport { GridviewAngularComponent } from './gridview/gridview-angular.component';\nimport { PaneviewAngularComponent } from './paneview/paneview-angular.component';\nimport { SplitviewAngularComponent } from './splitview/splitview-angular.component';\n\n@NgModule({\n imports: [\n CommonModule,\n DockviewAngularComponent,\n GridviewAngularComponent,\n PaneviewAngularComponent,\n SplitviewAngularComponent\n ],\n exports: [\n DockviewAngularComponent,\n GridviewAngularComponent,\n PaneviewAngularComponent,\n SplitviewAngularComponent\n ]\n})\nexport class DockviewAngularModule { }"],"names":["Event","Disposable","Orientation","SashState","LayoutPriority","Sizing","nextLayoutId","__awaiter","this","createComponent","Symbol_observable","Symbol_iterator","Subject","DockviewAngularComponent","EventEmitter","inject","Injector","EnvironmentInjector","ViewChild","ElementRef","Input","Type","Output","Component","ChangeDetectionStrategy","GridviewAngularComponent","PaneviewAngularComponent","SplitviewAngularComponent","DockviewAngularModule","NgModule","CommonModule"],"mappings":"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","x_google_ignoreList":[66,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98]}