dockview 1.8.3 → 1.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/dockview/dockview.d.ts +1 -0
- package/dist/cjs/dockview/dockview.d.ts.map +1 -1
- package/dist/cjs/dockview/dockview.js +9 -0
- package/dist/cjs/dockview/dockview.js.map +1 -1
- package/dist/dockview.amd.js +221 -84
- package/dist/dockview.amd.js.map +1 -1
- package/dist/dockview.amd.min.js +2 -2
- package/dist/dockview.amd.min.js.map +1 -1
- package/dist/dockview.amd.min.noStyle.js +2 -2
- package/dist/dockview.amd.min.noStyle.js.map +1 -1
- package/dist/dockview.amd.noStyle.js +221 -84
- package/dist/dockview.amd.noStyle.js.map +1 -1
- package/dist/dockview.cjs.js +221 -84
- package/dist/dockview.cjs.js.map +1 -1
- package/dist/dockview.esm.js +221 -84
- package/dist/dockview.esm.js.map +1 -1
- package/dist/dockview.esm.min.js +2 -2
- package/dist/dockview.esm.min.js.map +1 -1
- package/dist/dockview.js +221 -84
- package/dist/dockview.js.map +1 -1
- package/dist/dockview.min.js +2 -2
- package/dist/dockview.min.js.map +1 -1
- package/dist/dockview.min.noStyle.js +2 -2
- package/dist/dockview.min.noStyle.js.map +1 -1
- package/dist/dockview.noStyle.js +221 -84
- package/dist/dockview.noStyle.js.map +1 -1
- package/dist/esm/dockview/dockview.d.ts +1 -0
- package/dist/esm/dockview/dockview.d.ts.map +1 -1
- package/dist/esm/dockview/dockview.js +9 -0
- package/dist/esm/dockview/dockview.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dockview.esm.min.js","sources":["../../dockview-core/dist/esm/events.js","../../dockview-core/dist/esm/lifecycle.js","../../../node_modules/style-inject/dist/style-inject.es.js","../../dockview-core/dist/esm/dnd/dataTransfer.js","../../dockview-core/dist/esm/panel/componentFactory.js","../../dockview-core/dist/esm/dom.js","../../dockview-core/dist/esm/array.js","../../dockview-core/dist/esm/math.js","../../dockview-core/dist/esm/splitview/viewItem.js","../../dockview-core/dist/esm/splitview/splitview.js","../../dockview-core/dist/esm/paneview/paneview.js","../../dockview-core/dist/esm/gridview/leafNode.js","../../dockview-core/dist/esm/gridview/branchNode.js","../../dockview-core/dist/esm/gridview/gridview.js","../../dockview-core/dist/esm/api/component.api.js","../../dockview-core/dist/esm/dnd/dnd.js","../../dockview-core/dist/esm/dnd/droptarget.js","../../dockview-core/dist/esm/dockview/components/panel/content.js","../../dockview-core/dist/esm/dockview/types.js","../../dockview-core/dist/esm/dnd/abstractDragHandler.js","../../dockview-core/dist/esm/dockview/components/tab/tab.js","../../dockview-core/dist/esm/dnd/groupDragHandler.js","../../dockview-core/dist/esm/dnd/ghost.js","../../dockview-core/dist/esm/dockview/components/titlebar/voidContainer.js","../../dockview-core/dist/esm/dockview/components/titlebar/tabsContainer.js","../../dockview-core/dist/esm/dockview/dockviewGroupPanelModel.js","../../dockview-core/dist/esm/resizable.js","../../dockview-core/dist/esm/gridview/baseComponentGridview.js","../../dockview-core/dist/esm/api/panelApi.js","../../dockview-core/dist/esm/api/splitviewPanelApi.js","../../dockview-core/dist/esm/api/paneviewPanelApi.js","../../dockview-core/dist/esm/gridview/basePanelView.js","../../dockview-core/dist/esm/paneview/paneviewPanel.js","../../dockview-core/dist/esm/paneview/draggablePaneviewPanel.js","../../dockview-core/dist/esm/api/gridviewPanelApi.js","../../dockview-core/dist/esm/gridview/gridviewPanel.js","../../dockview-core/dist/esm/api/dockviewGroupPanelApi.js","../../dockview-core/dist/esm/dockview/dockviewGroupPanel.js","../../dockview-core/dist/esm/dockview/options.js","../../dockview-core/dist/esm/api/dockviewPanelApi.js","../../dockview-core/dist/esm/dockview/dockviewPanel.js","../../dockview-core/dist/esm/svg.js","../../dockview-core/dist/esm/dockview/components/tab/defaultTab.js","../../dockview-core/dist/esm/dockview/dockviewPanelModel.js","../../dockview-core/dist/esm/dockview/deserializer.js","../../dockview-core/dist/esm/dockview/components/watermark/watermark.js","../../dockview-core/dist/esm/dnd/overlay.js","../../dockview-core/dist/esm/dockview/dockviewFloatingGroupPanel.js","../../dockview-core/dist/esm/dockview/dockviewComponent.js","../../dockview-core/dist/esm/gridview/gridviewComponent.js","../../dockview-core/dist/esm/splitview/splitviewComponent.js","../../dockview-core/dist/esm/paneview/defaultPaneviewHeader.js","../../dockview-core/dist/esm/paneview/paneviewComponent.js","../../dockview-core/dist/esm/splitview/splitviewPanel.js","../../src/react.ts","../../src/dockview/reactContentPart.ts","../../src/dockview/reactHeaderPart.ts","../../src/dockview/reactWatermarkPart.ts","../../src/dockview/headerActionsRenderer.ts","../../src/dockview/dockview.tsx","../../../node_modules/tslib/tslib.es6.js","../../src/svg.tsx","../../src/dockview/defaultTab.tsx","../../src/splitview/view.ts","../../src/splitview/splitview.tsx","../../src/gridview/view.ts","../../src/gridview/gridview.tsx","../../src/paneview/view.tsx","../../src/paneview/paneview.tsx"],"sourcesContent":["export var Event;\r\n(function (Event) {\r\n Event.any = (...children) => {\r\n return (listener) => {\r\n const disposables = children.map((child) => child(listener));\r\n return {\r\n dispose: () => {\r\n disposables.forEach((d) => {\r\n d.dispose();\r\n });\r\n },\r\n };\r\n };\r\n };\r\n})(Event || (Event = {}));\r\nclass LeakageMonitor {\r\n constructor() {\r\n this.events = new Map();\r\n }\r\n get size() {\r\n return this.events.size;\r\n }\r\n add(event, stacktrace) {\r\n this.events.set(event, stacktrace);\r\n }\r\n delete(event) {\r\n this.events.delete(event);\r\n }\r\n clear() {\r\n this.events.clear();\r\n }\r\n}\r\nclass Stacktrace {\r\n static create() {\r\n var _a;\r\n return new Stacktrace((_a = new Error().stack) !== null && _a !== void 0 ? _a : '');\r\n }\r\n constructor(value) {\r\n this.value = value;\r\n }\r\n print() {\r\n console.warn(this.value);\r\n }\r\n}\r\nclass Listener {\r\n constructor(callback, stacktrace) {\r\n this.callback = callback;\r\n this.stacktrace = stacktrace;\r\n }\r\n}\r\n// relatively simple event emitter taken from https://github.com/microsoft/vscode/blob/master/src/vs/base/common/event.ts\r\nexport class Emitter {\r\n static setLeakageMonitorEnabled(isEnabled) {\r\n if (isEnabled !== Emitter.ENABLE_TRACKING) {\r\n Emitter.MEMORY_LEAK_WATCHER.clear();\r\n }\r\n Emitter.ENABLE_TRACKING = isEnabled;\r\n }\r\n constructor(options) {\r\n this.options = options;\r\n this._listeners = [];\r\n this._disposed = false;\r\n }\r\n get event() {\r\n if (!this._event) {\r\n this._event = (callback) => {\r\n var _a;\r\n if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.replay) && this._last !== undefined) {\r\n callback(this._last);\r\n }\r\n const listener = new Listener(callback, Emitter.ENABLE_TRACKING ? Stacktrace.create() : undefined);\r\n this._listeners.push(listener);\r\n return {\r\n dispose: () => {\r\n const index = this._listeners.indexOf(listener);\r\n if (index > -1) {\r\n this._listeners.splice(index, 1);\r\n }\r\n else if (Emitter.ENABLE_TRACKING) {\r\n // console.warn(\r\n // `Listener already disposed`,\r\n // Stacktrace.create().print()\r\n // );\r\n }\r\n },\r\n };\r\n };\r\n if (Emitter.ENABLE_TRACKING) {\r\n Emitter.MEMORY_LEAK_WATCHER.add(this._event, Stacktrace.create());\r\n }\r\n }\r\n return this._event;\r\n }\r\n fire(e) {\r\n this._last = e;\r\n for (const listener of this._listeners) {\r\n listener.callback(e);\r\n }\r\n }\r\n dispose() {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n if (this._listeners.length > 0) {\r\n if (Emitter.ENABLE_TRACKING) {\r\n queueMicrotask(() => {\r\n var _a;\r\n // don't check until stack of execution is completed to allow for out-of-order disposals within the same execution block\r\n for (const listener of this._listeners) {\r\n console.warn((_a = listener.stacktrace) === null || _a === void 0 ? void 0 : _a.print());\r\n }\r\n });\r\n }\r\n this._listeners = [];\r\n }\r\n if (Emitter.ENABLE_TRACKING && this._event) {\r\n Emitter.MEMORY_LEAK_WATCHER.delete(this._event);\r\n }\r\n }\r\n }\r\n}\r\nEmitter.ENABLE_TRACKING = false;\r\nEmitter.MEMORY_LEAK_WATCHER = new LeakageMonitor();\r\nexport function addDisposableWindowListener(element, type, listener, options) {\r\n element.addEventListener(type, listener, options);\r\n return {\r\n dispose: () => {\r\n element.removeEventListener(type, listener, options);\r\n },\r\n };\r\n}\r\nexport function addDisposableListener(element, type, listener, options) {\r\n element.addEventListener(type, listener, options);\r\n return {\r\n dispose: () => {\r\n element.removeEventListener(type, listener, options);\r\n },\r\n };\r\n}\r\nexport class TickDelayedEvent {\r\n constructor() {\r\n this._onFired = new Emitter();\r\n this.onEvent = this._onFired.event;\r\n }\r\n fire() {\r\n if (this.timer) {\r\n clearTimeout(this.timer);\r\n }\r\n this.timer = setTimeout(() => {\r\n this._onFired.fire();\r\n clearTimeout(this.timer);\r\n });\r\n }\r\n dispose() {\r\n this._onFired.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=events.js.map","export var Disposable;\r\n(function (Disposable) {\r\n Disposable.NONE = {\r\n dispose: () => {\r\n // noop\r\n },\r\n };\r\n})(Disposable || (Disposable = {}));\r\nexport class CompositeDisposable {\r\n get isDisposed() {\r\n return this._isDisposed;\r\n }\r\n constructor(...args) {\r\n this._isDisposed = false;\r\n this._disposables = args;\r\n }\r\n addDisposables(...args) {\r\n args.forEach((arg) => this._disposables.push(arg));\r\n }\r\n dispose() {\r\n this._disposables.forEach((arg) => arg.dispose());\r\n this._isDisposed = true;\r\n }\r\n}\r\nexport class MutableDisposable {\r\n constructor() {\r\n this._disposable = Disposable.NONE;\r\n }\r\n set value(disposable) {\r\n if (this._disposable) {\r\n this._disposable.dispose();\r\n }\r\n this._disposable = disposable;\r\n }\r\n dispose() {\r\n if (this._disposable) {\r\n this._disposable.dispose();\r\n this._disposable = Disposable.NONE;\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=lifecycle.js.map","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","class TransferObject {\r\n constructor() {\r\n //\r\n }\r\n}\r\nexport class PanelTransfer extends TransferObject {\r\n constructor(viewId, groupId, panelId) {\r\n super();\r\n this.viewId = viewId;\r\n this.groupId = groupId;\r\n this.panelId = panelId;\r\n }\r\n}\r\nexport class PaneTransfer extends TransferObject {\r\n constructor(viewId, paneId) {\r\n super();\r\n this.viewId = viewId;\r\n this.paneId = paneId;\r\n }\r\n}\r\n/**\r\n * A singleton to store transfer data during drag & drop operations that are only valid within the application.\r\n */\r\nexport class LocalSelectionTransfer {\r\n constructor() {\r\n // protect against external instantiation\r\n }\r\n static getInstance() {\r\n return LocalSelectionTransfer.INSTANCE;\r\n }\r\n hasData(proto) {\r\n return proto && proto === this.proto;\r\n }\r\n clearData(proto) {\r\n if (this.hasData(proto)) {\r\n this.proto = undefined;\r\n this.data = undefined;\r\n }\r\n }\r\n getData(proto) {\r\n if (this.hasData(proto)) {\r\n return this.data;\r\n }\r\n return undefined;\r\n }\r\n setData(data, proto) {\r\n if (proto) {\r\n this.data = data;\r\n this.proto = proto;\r\n }\r\n }\r\n}\r\nLocalSelectionTransfer.INSTANCE = new LocalSelectionTransfer();\r\nexport function getPanelData() {\r\n const panelTransfer = LocalSelectionTransfer.getInstance();\r\n const isPanelEvent = panelTransfer.hasData(PanelTransfer.prototype);\r\n if (!isPanelEvent) {\r\n return undefined;\r\n }\r\n return panelTransfer.getData(PanelTransfer.prototype)[0];\r\n}\r\nexport function getPaneData() {\r\n const paneTransfer = LocalSelectionTransfer.getInstance();\r\n const isPanelEvent = paneTransfer.hasData(PaneTransfer.prototype);\r\n if (!isPanelEvent) {\r\n return undefined;\r\n }\r\n return paneTransfer.getData(PaneTransfer.prototype)[0];\r\n}\r\n//# sourceMappingURL=dataTransfer.js.map","export function createComponent(id, componentName, components = {}, frameworkComponents = {}, createFrameworkComponent, fallback) {\r\n const Component = typeof componentName === 'string'\r\n ? components[componentName]\r\n : undefined;\r\n const FrameworkComponent = typeof componentName === 'string'\r\n ? frameworkComponents[componentName]\r\n : undefined;\r\n if (Component && FrameworkComponent) {\r\n throw new Error(`Cannot create '${id}'. component '${componentName}' registered as both a component and frameworkComponent`);\r\n }\r\n if (FrameworkComponent) {\r\n if (!createFrameworkComponent) {\r\n throw new Error(`Cannot create '${id}' for framework component '${componentName}'. you must register a frameworkPanelWrapper to use framework components`);\r\n }\r\n return createFrameworkComponent.createComponent(id, componentName, FrameworkComponent);\r\n }\r\n if (!Component) {\r\n if (fallback) {\r\n return fallback();\r\n }\r\n throw new Error(`Cannot create '${id}', no component '${componentName}' provided`);\r\n }\r\n return new Component(id, componentName);\r\n}\r\n//# sourceMappingURL=componentFactory.js.map","import { Emitter, addDisposableListener, addDisposableWindowListener, } from './events';\r\nimport { CompositeDisposable } from './lifecycle';\r\nexport function watchElementResize(element, cb) {\r\n const observer = new ResizeObserver((entires) => {\r\n /**\r\n * Fast browser window resize produces Error: ResizeObserver loop limit exceeded.\r\n * The error isn't visible in browser console, doesn't affect functionality, but degrades performance.\r\n * See https://stackoverflow.com/questions/49384120/resizeobserver-loop-limit-exceeded/58701523#58701523\r\n */\r\n requestAnimationFrame(() => {\r\n const firstEntry = entires[0];\r\n cb(firstEntry);\r\n });\r\n });\r\n observer.observe(element);\r\n return {\r\n dispose: () => {\r\n observer.unobserve(element);\r\n observer.disconnect();\r\n },\r\n };\r\n}\r\nexport const removeClasses = (element, ...classes) => {\r\n for (const classname of classes) {\r\n if (element.classList.contains(classname)) {\r\n element.classList.remove(classname);\r\n }\r\n }\r\n};\r\nexport const addClasses = (element, ...classes) => {\r\n for (const classname of classes) {\r\n if (!element.classList.contains(classname)) {\r\n element.classList.add(classname);\r\n }\r\n }\r\n};\r\nexport const toggleClass = (element, className, isToggled) => {\r\n const hasClass = element.classList.contains(className);\r\n if (isToggled && !hasClass) {\r\n element.classList.add(className);\r\n }\r\n if (!isToggled && hasClass) {\r\n element.classList.remove(className);\r\n }\r\n};\r\nexport function isAncestor(testChild, testAncestor) {\r\n while (testChild) {\r\n if (testChild === testAncestor) {\r\n return true;\r\n }\r\n testChild = testChild.parentNode;\r\n }\r\n return false;\r\n}\r\nexport function getElementsByTagName(tag) {\r\n return Array.prototype.slice.call(document.getElementsByTagName(tag), 0);\r\n}\r\nexport function trackFocus(element) {\r\n return new FocusTracker(element);\r\n}\r\n/**\r\n * Track focus on an element. Ensure tabIndex is set when an HTMLElement is not focusable by default\r\n */\r\nclass FocusTracker extends CompositeDisposable {\r\n constructor(element) {\r\n super();\r\n this._onDidFocus = new Emitter();\r\n this.onDidFocus = this._onDidFocus.event;\r\n this._onDidBlur = new Emitter();\r\n this.onDidBlur = this._onDidBlur.event;\r\n this.addDisposables(this._onDidFocus, this._onDidBlur);\r\n let hasFocus = isAncestor(document.activeElement, element);\r\n let loosingFocus = false;\r\n const onFocus = () => {\r\n loosingFocus = false;\r\n if (!hasFocus) {\r\n hasFocus = true;\r\n this._onDidFocus.fire();\r\n }\r\n };\r\n const onBlur = () => {\r\n if (hasFocus) {\r\n loosingFocus = true;\r\n window.setTimeout(() => {\r\n if (loosingFocus) {\r\n loosingFocus = false;\r\n hasFocus = false;\r\n this._onDidBlur.fire();\r\n }\r\n }, 0);\r\n }\r\n };\r\n this._refreshStateHandler = () => {\r\n const currentNodeHasFocus = isAncestor(document.activeElement, element);\r\n if (currentNodeHasFocus !== hasFocus) {\r\n if (hasFocus) {\r\n onBlur();\r\n }\r\n else {\r\n onFocus();\r\n }\r\n }\r\n };\r\n if (element instanceof HTMLElement) {\r\n this.addDisposables(addDisposableListener(element, 'focus', onFocus, true));\r\n this.addDisposables(addDisposableListener(element, 'blur', onBlur, true));\r\n }\r\n else {\r\n this.addDisposables(addDisposableWindowListener(element, 'focus', onFocus, true));\r\n this.addDisposables(addDisposableWindowListener(element, 'blur', onBlur, true));\r\n }\r\n }\r\n refreshState() {\r\n this._refreshStateHandler();\r\n }\r\n}\r\n// quasi: apparently, but not really; seemingly\r\nconst QUASI_PREVENT_DEFAULT_KEY = 'dv-quasiPreventDefault';\r\n// mark an event directly for other listeners to check\r\nexport function quasiPreventDefault(event) {\r\n event[QUASI_PREVENT_DEFAULT_KEY] = true;\r\n}\r\n// check if this event has been marked\r\nexport function quasiDefaultPrevented(event) {\r\n return event[QUASI_PREVENT_DEFAULT_KEY];\r\n}\r\n//# sourceMappingURL=dom.js.map","export function tail(arr) {\r\n if (arr.length === 0) {\r\n throw new Error('Invalid tail call');\r\n }\r\n return [arr.slice(0, arr.length - 1), arr[arr.length - 1]];\r\n}\r\nexport function last(arr) {\r\n return arr.length > 0 ? arr[arr.length - 1] : undefined;\r\n}\r\nexport function sequenceEquals(arr1, arr2) {\r\n if (arr1.length !== arr2.length) {\r\n return false;\r\n }\r\n for (let i = 0; i < arr1.length; i++) {\r\n if (arr1[i] !== arr2[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * Pushes an element to the start of the array, if found.\r\n */\r\nexport function pushToStart(arr, value) {\r\n const index = arr.indexOf(value);\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n arr.unshift(value);\r\n }\r\n}\r\n/**\r\n * Pushes an element to the end of the array, if found.\r\n */\r\nexport function pushToEnd(arr, value) {\r\n const index = arr.indexOf(value);\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n arr.push(value);\r\n }\r\n}\r\nexport function firstIndex(array, fn) {\r\n for (let i = 0; i < array.length; i++) {\r\n const element = array[i];\r\n if (fn(element)) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\nexport function remove(array, value) {\r\n const index = array.findIndex((t) => t === value);\r\n if (index > -1) {\r\n array.splice(index, 1);\r\n return true;\r\n }\r\n return false;\r\n}\r\n//# sourceMappingURL=array.js.map","export const clamp = (value, min, max) => {\r\n if (min > max) {\r\n throw new Error(`${min} > ${max} is an invalid condition`);\r\n }\r\n return Math.min(max, Math.max(value, min));\r\n};\r\nexport const sequentialNumberGenerator = () => {\r\n let value = 1;\r\n return { next: () => (value++).toString() };\r\n};\r\nexport const range = (from, to) => {\r\n const result = [];\r\n if (typeof to !== 'number') {\r\n to = from;\r\n from = 0;\r\n }\r\n if (from <= to) {\r\n for (let i = from; i < to; i++) {\r\n result.push(i);\r\n }\r\n }\r\n else {\r\n for (let i = from; i > to; i--) {\r\n result.push(i);\r\n }\r\n }\r\n return result;\r\n};\r\n//# sourceMappingURL=math.js.map","import { clamp } from '../math';\r\nexport class ViewItem {\r\n set size(size) {\r\n this._size = size;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n get cachedVisibleSize() {\r\n return this._cachedVisibleSize;\r\n }\r\n get visible() {\r\n return typeof this._cachedVisibleSize === 'undefined';\r\n }\r\n get minimumSize() {\r\n return this.visible ? this.view.minimumSize : 0;\r\n }\r\n get viewMinimumSize() {\r\n return this.view.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.visible ? this.view.maximumSize : 0;\r\n }\r\n get viewMaximumSize() {\r\n return this.view.maximumSize;\r\n }\r\n get priority() {\r\n return this.view.priority;\r\n }\r\n get snap() {\r\n return !!this.view.snap;\r\n }\r\n set enabled(enabled) {\r\n this.container.style.pointerEvents = enabled ? '' : 'none';\r\n }\r\n constructor(container, view, size, disposable) {\r\n this.container = container;\r\n this.view = view;\r\n this.disposable = disposable;\r\n this._cachedVisibleSize = undefined;\r\n if (typeof size === 'number') {\r\n this._size = size;\r\n this._cachedVisibleSize = undefined;\r\n container.classList.add('visible');\r\n }\r\n else {\r\n this._size = 0;\r\n this._cachedVisibleSize = size.cachedVisibleSize;\r\n }\r\n }\r\n setVisible(visible, size) {\r\n var _a;\r\n if (visible === this.visible) {\r\n return;\r\n }\r\n if (visible) {\r\n this.size = clamp((_a = this._cachedVisibleSize) !== null && _a !== void 0 ? _a : 0, this.viewMinimumSize, this.viewMaximumSize);\r\n this._cachedVisibleSize = undefined;\r\n }\r\n else {\r\n this._cachedVisibleSize =\r\n typeof size === 'number' ? size : this.size;\r\n this.size = 0;\r\n }\r\n this.container.classList.toggle('visible', visible);\r\n if (this.view.setVisible) {\r\n this.view.setVisible(visible);\r\n }\r\n }\r\n dispose() {\r\n this.disposable.dispose();\r\n return this.view;\r\n }\r\n}\r\n//# sourceMappingURL=viewItem.js.map","/*---------------------------------------------------------------------------------------------\r\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\r\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/splitview\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { removeClasses, addClasses, toggleClass, getElementsByTagName, } from '../dom';\r\nimport { Emitter } from '../events';\r\nimport { pushToStart, pushToEnd, firstIndex } from '../array';\r\nimport { range, clamp } from '../math';\r\nimport { ViewItem } from './viewItem';\r\nexport var Orientation;\r\n(function (Orientation) {\r\n Orientation[\"HORIZONTAL\"] = \"HORIZONTAL\";\r\n Orientation[\"VERTICAL\"] = \"VERTICAL\";\r\n})(Orientation || (Orientation = {}));\r\nexport var SashState;\r\n(function (SashState) {\r\n SashState[SashState[\"MAXIMUM\"] = 0] = \"MAXIMUM\";\r\n SashState[SashState[\"MINIMUM\"] = 1] = \"MINIMUM\";\r\n SashState[SashState[\"DISABLED\"] = 2] = \"DISABLED\";\r\n SashState[SashState[\"ENABLED\"] = 3] = \"ENABLED\";\r\n})(SashState || (SashState = {}));\r\nexport var LayoutPriority;\r\n(function (LayoutPriority) {\r\n LayoutPriority[\"Low\"] = \"low\";\r\n LayoutPriority[\"High\"] = \"high\";\r\n LayoutPriority[\"Normal\"] = \"normal\";\r\n})(LayoutPriority || (LayoutPriority = {}));\r\nexport var Sizing;\r\n(function (Sizing) {\r\n Sizing.Distribute = { type: 'distribute' };\r\n function Split(index) {\r\n return { type: 'split', index };\r\n }\r\n Sizing.Split = Split;\r\n function Invisible(cachedVisibleSize) {\r\n return { type: 'invisible', cachedVisibleSize };\r\n }\r\n Sizing.Invisible = Invisible;\r\n})(Sizing || (Sizing = {}));\r\nexport class Splitview {\r\n get size() {\r\n return this._size;\r\n }\r\n set size(value) {\r\n this._size = value;\r\n }\r\n get orthogonalSize() {\r\n return this._orthogonalSize;\r\n }\r\n set orthogonalSize(value) {\r\n this._orthogonalSize = value;\r\n }\r\n get length() {\r\n return this.viewItems.length;\r\n }\r\n get proportions() {\r\n return this._proportions ? [...this._proportions] : undefined;\r\n }\r\n get orientation() {\r\n return this._orientation;\r\n }\r\n set orientation(value) {\r\n this._orientation = value;\r\n const tmp = this.size;\r\n this.size = this.orthogonalSize;\r\n this.orthogonalSize = tmp;\r\n removeClasses(this.element, 'horizontal', 'vertical');\r\n this.element.classList.add(this.orientation == Orientation.HORIZONTAL\r\n ? 'horizontal'\r\n : 'vertical');\r\n }\r\n get minimumSize() {\r\n return this.viewItems.reduce((r, item) => r + item.minimumSize, 0);\r\n }\r\n get maximumSize() {\r\n return this.length === 0\r\n ? Number.POSITIVE_INFINITY\r\n : this.viewItems.reduce((r, item) => r + item.maximumSize, 0);\r\n }\r\n get startSnappingEnabled() {\r\n return this._startSnappingEnabled;\r\n }\r\n set startSnappingEnabled(startSnappingEnabled) {\r\n if (this._startSnappingEnabled === startSnappingEnabled) {\r\n return;\r\n }\r\n this._startSnappingEnabled = startSnappingEnabled;\r\n this.updateSashEnablement();\r\n }\r\n get endSnappingEnabled() {\r\n return this._endSnappingEnabled;\r\n }\r\n set endSnappingEnabled(endSnappingEnabled) {\r\n if (this._endSnappingEnabled === endSnappingEnabled) {\r\n return;\r\n }\r\n this._endSnappingEnabled = endSnappingEnabled;\r\n this.updateSashEnablement();\r\n }\r\n constructor(container, options) {\r\n this.container = container;\r\n this.viewItems = [];\r\n this.sashes = [];\r\n this._size = 0;\r\n this._orthogonalSize = 0;\r\n this.contentSize = 0;\r\n this._proportions = undefined;\r\n this._startSnappingEnabled = true;\r\n this._endSnappingEnabled = true;\r\n this._onDidSashEnd = new Emitter();\r\n this.onDidSashEnd = this._onDidSashEnd.event;\r\n this._onDidAddView = new Emitter();\r\n this.onDidAddView = this._onDidAddView.event;\r\n this._onDidRemoveView = new Emitter();\r\n this.onDidRemoveView = this._onDidRemoveView.event;\r\n this.resize = (index, delta, sizes = this.viewItems.map((x) => x.size), lowPriorityIndexes, highPriorityIndexes, overloadMinDelta = Number.NEGATIVE_INFINITY, overloadMaxDelta = Number.POSITIVE_INFINITY, snapBefore, snapAfter) => {\r\n if (index < 0 || index > this.viewItems.length) {\r\n return 0;\r\n }\r\n const upIndexes = range(index, -1);\r\n const downIndexes = range(index + 1, this.viewItems.length);\r\n //\r\n if (highPriorityIndexes) {\r\n for (const i of highPriorityIndexes) {\r\n pushToStart(upIndexes, i);\r\n pushToStart(downIndexes, i);\r\n }\r\n }\r\n if (lowPriorityIndexes) {\r\n for (const i of lowPriorityIndexes) {\r\n pushToEnd(upIndexes, i);\r\n pushToEnd(downIndexes, i);\r\n }\r\n }\r\n //\r\n const upItems = upIndexes.map((i) => this.viewItems[i]);\r\n const upSizes = upIndexes.map((i) => sizes[i]);\r\n //\r\n const downItems = downIndexes.map((i) => this.viewItems[i]);\r\n const downSizes = downIndexes.map((i) => sizes[i]);\r\n //\r\n const minDeltaUp = upIndexes.reduce((_, i) => _ + this.viewItems[i].minimumSize - sizes[i], 0);\r\n const maxDeltaUp = upIndexes.reduce((_, i) => _ + this.viewItems[i].maximumSize - sizes[i], 0);\r\n //\r\n const maxDeltaDown = downIndexes.length === 0\r\n ? Number.POSITIVE_INFINITY\r\n : downIndexes.reduce((_, i) => _ + sizes[i] - this.viewItems[i].minimumSize, 0);\r\n const minDeltaDown = downIndexes.length === 0\r\n ? Number.NEGATIVE_INFINITY\r\n : downIndexes.reduce((_, i) => _ + sizes[i] - this.viewItems[i].maximumSize, 0);\r\n //\r\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\r\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\r\n //\r\n let snapped = false;\r\n if (snapBefore) {\r\n const snapView = this.viewItems[snapBefore.index];\r\n const visible = delta >= snapBefore.limitDelta;\r\n snapped = visible !== snapView.visible;\r\n snapView.setVisible(visible, snapBefore.size);\r\n }\r\n if (!snapped && snapAfter) {\r\n const snapView = this.viewItems[snapAfter.index];\r\n const visible = delta < snapAfter.limitDelta;\r\n snapped = visible !== snapView.visible;\r\n snapView.setVisible(visible, snapAfter.size);\r\n }\r\n if (snapped) {\r\n return this.resize(index, delta, sizes, lowPriorityIndexes, highPriorityIndexes, overloadMinDelta, overloadMaxDelta);\r\n }\r\n //\r\n const tentativeDelta = clamp(delta, minDelta, maxDelta);\r\n let actualDelta = 0;\r\n //\r\n let deltaUp = tentativeDelta;\r\n for (let i = 0; i < upItems.length; i++) {\r\n const item = upItems[i];\r\n const size = clamp(upSizes[i] + deltaUp, item.minimumSize, item.maximumSize);\r\n const viewDelta = size - upSizes[i];\r\n actualDelta += viewDelta;\r\n deltaUp -= viewDelta;\r\n item.size = size;\r\n }\r\n //\r\n let deltaDown = actualDelta;\r\n for (let i = 0; i < downItems.length; i++) {\r\n const item = downItems[i];\r\n const size = clamp(downSizes[i] - deltaDown, item.minimumSize, item.maximumSize);\r\n const viewDelta = size - downSizes[i];\r\n deltaDown += viewDelta;\r\n item.size = size;\r\n }\r\n //\r\n return delta;\r\n };\r\n this._orientation = options.orientation;\r\n this.element = this.createContainer();\r\n this.proportionalLayout =\r\n options.proportionalLayout === undefined\r\n ? true\r\n : !!options.proportionalLayout;\r\n this.viewContainer = this.createViewContainer();\r\n this.sashContainer = this.createSashContainer();\r\n this.element.appendChild(this.sashContainer);\r\n this.element.appendChild(this.viewContainer);\r\n this.container.appendChild(this.element);\r\n this.style(options.styles);\r\n // We have an existing set of view, add them now\r\n if (options.descriptor) {\r\n this._size = options.descriptor.size;\r\n options.descriptor.views.forEach((viewDescriptor, index) => {\r\n const sizing = viewDescriptor.visible === undefined ||\r\n viewDescriptor.visible\r\n ? viewDescriptor.size\r\n : {\r\n type: 'invisible',\r\n cachedVisibleSize: viewDescriptor.size,\r\n };\r\n const view = viewDescriptor.view;\r\n this.addView(view, sizing, index, true\r\n // true skip layout\r\n );\r\n });\r\n // Initialize content size and proportions for first layout\r\n this.contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n this.saveProportions();\r\n }\r\n }\r\n style(styles) {\r\n if ((styles === null || styles === void 0 ? void 0 : styles.separatorBorder) === 'transparent') {\r\n removeClasses(this.element, 'separator-border');\r\n this.element.style.removeProperty('--dv-separator-border');\r\n }\r\n else {\r\n addClasses(this.element, 'separator-border');\r\n if (styles === null || styles === void 0 ? void 0 : styles.separatorBorder) {\r\n this.element.style.setProperty('--dv-separator-border', styles.separatorBorder);\r\n }\r\n }\r\n }\r\n isViewVisible(index) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n throw new Error('Index out of bounds');\r\n }\r\n const viewItem = this.viewItems[index];\r\n return viewItem.visible;\r\n }\r\n setViewVisible(index, visible) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n throw new Error('Index out of bounds');\r\n }\r\n toggleClass(this.container, 'visible', visible);\r\n const viewItem = this.viewItems[index];\r\n toggleClass(this.container, 'visible', visible);\r\n viewItem.setVisible(visible, viewItem.size);\r\n this.distributeEmptySpace(index);\r\n this.layoutViews();\r\n this.saveProportions();\r\n }\r\n getViewSize(index) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n return -1;\r\n }\r\n return this.viewItems[index].size;\r\n }\r\n resizeView(index, size) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n return;\r\n }\r\n const indexes = range(this.viewItems.length).filter((i) => i !== index);\r\n const lowPriorityIndexes = [\r\n ...indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low),\r\n index,\r\n ];\r\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\r\n const item = this.viewItems[index];\r\n size = Math.round(size);\r\n size = clamp(size, item.minimumSize, Math.min(item.maximumSize, this._size));\r\n item.size = size;\r\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\r\n }\r\n getViews() {\r\n return this.viewItems.map((x) => x.view);\r\n }\r\n onDidChange(item, size) {\r\n const index = this.viewItems.indexOf(item);\r\n if (index < 0 || index >= this.viewItems.length) {\r\n return;\r\n }\r\n size = typeof size === 'number' ? size : item.size;\r\n size = clamp(size, item.minimumSize, item.maximumSize);\r\n item.size = size;\r\n this.relayout([index]);\r\n }\r\n addView(view, size = { type: 'distribute' }, index = this.viewItems.length, skipLayout) {\r\n const container = document.createElement('div');\r\n container.className = 'view';\r\n container.appendChild(view.element);\r\n let viewSize;\r\n if (typeof size === 'number') {\r\n viewSize = size;\r\n }\r\n else if (size.type === 'split') {\r\n viewSize = this.getViewSize(size.index) / 2;\r\n }\r\n else if (size.type === 'invisible') {\r\n viewSize = { cachedVisibleSize: size.cachedVisibleSize };\r\n }\r\n else {\r\n viewSize = view.minimumSize;\r\n }\r\n const disposable = view.onDidChange((newSize) => this.onDidChange(viewItem, newSize.size));\r\n const viewItem = new ViewItem(container, view, viewSize, {\r\n dispose: () => {\r\n disposable.dispose();\r\n this.viewContainer.removeChild(container);\r\n },\r\n });\r\n if (index === this.viewItems.length) {\r\n this.viewContainer.appendChild(container);\r\n }\r\n else {\r\n this.viewContainer.insertBefore(container, this.viewContainer.children.item(index));\r\n }\r\n this.viewItems.splice(index, 0, viewItem);\r\n if (this.viewItems.length > 1) {\r\n //add sash\r\n const sash = document.createElement('div');\r\n sash.className = 'sash';\r\n const onPointerStart = (event) => {\r\n for (const item of this.viewItems) {\r\n item.enabled = false;\r\n }\r\n const iframes = [\r\n ...getElementsByTagName('iframe'),\r\n ...getElementsByTagName('webview'),\r\n ];\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'none';\r\n }\r\n const start = this._orientation === Orientation.HORIZONTAL\r\n ? event.clientX\r\n : event.clientY;\r\n const sashIndex = firstIndex(this.sashes, (s) => s.container === sash);\r\n //\r\n const sizes = this.viewItems.map((x) => x.size);\r\n //\r\n let snapBefore;\r\n let snapAfter;\r\n const upIndexes = range(sashIndex, -1);\r\n const downIndexes = range(sashIndex + 1, this.viewItems.length);\r\n const minDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].minimumSize - sizes[i]), 0);\r\n const maxDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].viewMaximumSize - sizes[i]), 0);\r\n const maxDeltaDown = downIndexes.length === 0\r\n ? Number.POSITIVE_INFINITY\r\n : downIndexes.reduce((r, i) => r +\r\n (sizes[i] - this.viewItems[i].minimumSize), 0);\r\n const minDeltaDown = downIndexes.length === 0\r\n ? Number.NEGATIVE_INFINITY\r\n : downIndexes.reduce((r, i) => r +\r\n (sizes[i] -\r\n this.viewItems[i].viewMaximumSize), 0);\r\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\r\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\r\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\r\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\r\n if (typeof snapBeforeIndex === 'number') {\r\n const snappedViewItem = this.viewItems[snapBeforeIndex];\r\n const halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);\r\n snapBefore = {\r\n index: snapBeforeIndex,\r\n limitDelta: snappedViewItem.visible\r\n ? minDelta - halfSize\r\n : minDelta + halfSize,\r\n size: snappedViewItem.size,\r\n };\r\n }\r\n if (typeof snapAfterIndex === 'number') {\r\n const snappedViewItem = this.viewItems[snapAfterIndex];\r\n const halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);\r\n snapAfter = {\r\n index: snapAfterIndex,\r\n limitDelta: snappedViewItem.visible\r\n ? maxDelta + halfSize\r\n : maxDelta - halfSize,\r\n size: snappedViewItem.size,\r\n };\r\n }\r\n const onPointerMove = (event) => {\r\n const current = this._orientation === Orientation.HORIZONTAL\r\n ? event.clientX\r\n : event.clientY;\r\n const delta = current - start;\r\n this.resize(sashIndex, delta, sizes, undefined, undefined, minDelta, maxDelta, snapBefore, snapAfter);\r\n this.distributeEmptySpace();\r\n this.layoutViews();\r\n };\r\n const end = () => {\r\n for (const item of this.viewItems) {\r\n item.enabled = true;\r\n }\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'auto';\r\n }\r\n this.saveProportions();\r\n document.removeEventListener('pointermove', onPointerMove);\r\n document.removeEventListener('pointerup', end);\r\n document.removeEventListener('pointercancel', end);\r\n this._onDidSashEnd.fire(undefined);\r\n };\r\n document.addEventListener('pointermove', onPointerMove);\r\n document.addEventListener('pointerup', end);\r\n document.addEventListener('pointercancel', end);\r\n };\r\n sash.addEventListener('pointerdown', onPointerStart);\r\n const sashItem = {\r\n container: sash,\r\n disposable: () => {\r\n sash.removeEventListener('pointerdown', onPointerStart);\r\n this.sashContainer.removeChild(sash);\r\n },\r\n };\r\n this.sashContainer.appendChild(sash);\r\n this.sashes.push(sashItem);\r\n }\r\n if (!skipLayout) {\r\n this.relayout([index]);\r\n }\r\n if (!skipLayout &&\r\n typeof size !== 'number' &&\r\n size.type === 'distribute') {\r\n this.distributeViewSizes();\r\n }\r\n this._onDidAddView.fire(view);\r\n }\r\n distributeViewSizes() {\r\n const flexibleViewItems = [];\r\n let flexibleSize = 0;\r\n for (const item of this.viewItems) {\r\n if (item.maximumSize - item.minimumSize > 0) {\r\n flexibleViewItems.push(item);\r\n flexibleSize += item.size;\r\n }\r\n }\r\n const size = Math.floor(flexibleSize / flexibleViewItems.length);\r\n for (const item of flexibleViewItems) {\r\n item.size = clamp(size, item.minimumSize, item.maximumSize);\r\n }\r\n const indexes = range(this.viewItems.length);\r\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\r\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\r\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\r\n }\r\n removeView(index, sizing, skipLayout = false) {\r\n // Remove view\r\n const viewItem = this.viewItems.splice(index, 1)[0];\r\n viewItem.dispose();\r\n // Remove sash\r\n if (this.viewItems.length >= 1) {\r\n const sashIndex = Math.max(index - 1, 0);\r\n const sashItem = this.sashes.splice(sashIndex, 1)[0];\r\n sashItem.disposable();\r\n }\r\n if (!skipLayout) {\r\n this.relayout();\r\n }\r\n if (sizing && sizing.type === 'distribute') {\r\n this.distributeViewSizes();\r\n }\r\n this._onDidRemoveView.fire(viewItem.view);\r\n return viewItem.view;\r\n }\r\n getViewCachedVisibleSize(index) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n throw new Error('Index out of bounds');\r\n }\r\n const viewItem = this.viewItems[index];\r\n return viewItem.cachedVisibleSize;\r\n }\r\n moveView(from, to) {\r\n const cachedVisibleSize = this.getViewCachedVisibleSize(from);\r\n const sizing = typeof cachedVisibleSize === 'undefined'\r\n ? this.getViewSize(from)\r\n : Sizing.Invisible(cachedVisibleSize);\r\n const view = this.removeView(from, undefined, true);\r\n this.addView(view, sizing, to);\r\n }\r\n layout(size, orthogonalSize) {\r\n const previousSize = Math.max(this.size, this.contentSize);\r\n this.size = size;\r\n this.orthogonalSize = orthogonalSize;\r\n if (!this.proportions) {\r\n const indexes = range(this.viewItems.length);\r\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\r\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\r\n this.resize(this.viewItems.length - 1, size - previousSize, undefined, lowPriorityIndexes, highPriorityIndexes);\r\n }\r\n else {\r\n for (let i = 0; i < this.viewItems.length; i++) {\r\n const item = this.viewItems[i];\r\n item.size = clamp(Math.round(this.proportions[i] * size), item.minimumSize, item.maximumSize);\r\n }\r\n }\r\n this.distributeEmptySpace();\r\n this.layoutViews();\r\n }\r\n relayout(lowPriorityIndexes, highPriorityIndexes) {\r\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n this.resize(this.viewItems.length - 1, this._size - contentSize, undefined, lowPriorityIndexes, highPriorityIndexes);\r\n this.distributeEmptySpace();\r\n this.layoutViews();\r\n this.saveProportions();\r\n }\r\n distributeEmptySpace(lowPriorityIndex) {\r\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n let emptyDelta = this.size - contentSize;\r\n const indexes = range(this.viewItems.length - 1, -1);\r\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\r\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\r\n for (const index of highPriorityIndexes) {\r\n pushToStart(indexes, index);\r\n }\r\n for (const index of lowPriorityIndexes) {\r\n pushToEnd(indexes, index);\r\n }\r\n if (typeof lowPriorityIndex === 'number') {\r\n pushToEnd(indexes, lowPriorityIndex);\r\n }\r\n for (let i = 0; emptyDelta !== 0 && i < indexes.length; i++) {\r\n const item = this.viewItems[indexes[i]];\r\n const size = clamp(item.size + emptyDelta, item.minimumSize, item.maximumSize);\r\n const viewDelta = size - item.size;\r\n emptyDelta -= viewDelta;\r\n item.size = size;\r\n }\r\n }\r\n saveProportions() {\r\n if (this.proportionalLayout && this.contentSize > 0) {\r\n this._proportions = this.viewItems.map((i) => i.size / this.contentSize);\r\n }\r\n }\r\n layoutViews() {\r\n this.contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n let sum = 0;\r\n const x = [];\r\n this.updateSashEnablement();\r\n for (let i = 0; i < this.viewItems.length - 1; i++) {\r\n sum += this.viewItems[i].size;\r\n x.push(sum);\r\n const offset = Math.min(Math.max(0, sum - 2), this.size - 4);\r\n if (this._orientation === Orientation.HORIZONTAL) {\r\n this.sashes[i].container.style.left = `${offset}px`;\r\n this.sashes[i].container.style.top = `0px`;\r\n }\r\n if (this._orientation === Orientation.VERTICAL) {\r\n this.sashes[i].container.style.left = `0px`;\r\n this.sashes[i].container.style.top = `${offset}px`;\r\n }\r\n }\r\n this.viewItems.forEach((view, i) => {\r\n if (this._orientation === Orientation.HORIZONTAL) {\r\n view.container.style.width = `${view.size}px`;\r\n view.container.style.left = i == 0 ? '0px' : `${x[i - 1]}px`;\r\n view.container.style.top = '';\r\n view.container.style.height = '';\r\n }\r\n if (this._orientation === Orientation.VERTICAL) {\r\n view.container.style.height = `${view.size}px`;\r\n view.container.style.top = i == 0 ? '0px' : `${x[i - 1]}px`;\r\n view.container.style.width = '';\r\n view.container.style.left = '';\r\n }\r\n view.view.layout(view.size, this._orthogonalSize);\r\n });\r\n }\r\n findFirstSnapIndex(indexes) {\r\n // visible views first\r\n for (const index of indexes) {\r\n const viewItem = this.viewItems[index];\r\n if (!viewItem.visible) {\r\n continue;\r\n }\r\n if (viewItem.snap) {\r\n return index;\r\n }\r\n }\r\n // then, hidden views\r\n for (const index of indexes) {\r\n const viewItem = this.viewItems[index];\r\n if (viewItem.visible &&\r\n viewItem.maximumSize - viewItem.minimumSize > 0) {\r\n return undefined;\r\n }\r\n if (!viewItem.visible && viewItem.snap) {\r\n return index;\r\n }\r\n }\r\n return undefined;\r\n }\r\n updateSashEnablement() {\r\n let previous = false;\r\n const collapsesDown = this.viewItems.map((i) => (previous = i.size - i.minimumSize > 0 || previous));\r\n previous = false;\r\n const expandsDown = this.viewItems.map((i) => (previous = i.maximumSize - i.size > 0 || previous));\r\n const reverseViews = [...this.viewItems].reverse();\r\n previous = false;\r\n const collapsesUp = reverseViews\r\n .map((i) => (previous = i.size - i.minimumSize > 0 || previous))\r\n .reverse();\r\n previous = false;\r\n const expandsUp = reverseViews\r\n .map((i) => (previous = i.maximumSize - i.size > 0 || previous))\r\n .reverse();\r\n let position = 0;\r\n for (let index = 0; index < this.sashes.length; index++) {\r\n const sash = this.sashes[index];\r\n const viewItem = this.viewItems[index];\r\n position += viewItem.size;\r\n const min = !(collapsesDown[index] && expandsUp[index + 1]);\r\n const max = !(expandsDown[index] && collapsesUp[index + 1]);\r\n if (min && max) {\r\n const upIndexes = range(index, -1);\r\n const downIndexes = range(index + 1, this.viewItems.length);\r\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\r\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\r\n const snappedBefore = typeof snapBeforeIndex === 'number' &&\r\n !this.viewItems[snapBeforeIndex].visible;\r\n const snappedAfter = typeof snapAfterIndex === 'number' &&\r\n !this.viewItems[snapAfterIndex].visible;\r\n if (snappedBefore &&\r\n collapsesUp[index] &&\r\n (position > 0 || this.startSnappingEnabled)) {\r\n this.updateSash(sash, SashState.MINIMUM);\r\n }\r\n else if (snappedAfter &&\r\n collapsesDown[index] &&\r\n (position < this.contentSize || this.endSnappingEnabled)) {\r\n this.updateSash(sash, SashState.MAXIMUM);\r\n }\r\n else {\r\n this.updateSash(sash, SashState.DISABLED);\r\n }\r\n }\r\n else if (min && !max) {\r\n this.updateSash(sash, SashState.MINIMUM);\r\n }\r\n else if (!min && max) {\r\n this.updateSash(sash, SashState.MAXIMUM);\r\n }\r\n else {\r\n this.updateSash(sash, SashState.ENABLED);\r\n }\r\n }\r\n }\r\n updateSash(sash, state) {\r\n toggleClass(sash.container, 'disabled', state === SashState.DISABLED);\r\n toggleClass(sash.container, 'enabled', state === SashState.ENABLED);\r\n toggleClass(sash.container, 'maximum', state === SashState.MAXIMUM);\r\n toggleClass(sash.container, 'minimum', state === SashState.MINIMUM);\r\n }\r\n createViewContainer() {\r\n const element = document.createElement('div');\r\n element.className = 'view-container';\r\n return element;\r\n }\r\n createSashContainer() {\r\n const element = document.createElement('div');\r\n element.className = 'sash-container';\r\n return element;\r\n }\r\n createContainer() {\r\n const element = document.createElement('div');\r\n const orientationClassname = this._orientation === Orientation.HORIZONTAL\r\n ? 'horizontal'\r\n : 'vertical';\r\n element.className = `split-view-container ${orientationClassname}`;\r\n return element;\r\n }\r\n dispose() {\r\n this._onDidSashEnd.dispose();\r\n this._onDidAddView.dispose();\r\n this._onDidRemoveView.dispose();\r\n for (let i = 0; i < this.element.children.length; i++) {\r\n if (this.element.children.item(i) === this.element) {\r\n this.element.removeChild(this.element);\r\n break;\r\n }\r\n }\r\n for (const viewItem of this.viewItems) {\r\n viewItem.dispose();\r\n }\r\n this.element.remove();\r\n }\r\n}\r\n//# sourceMappingURL=splitview.js.map","import { Splitview, Orientation, } from '../splitview/splitview';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nimport { Emitter } from '../events';\r\nimport { addClasses, removeClasses } from '../dom';\r\nexport class Paneview extends CompositeDisposable {\r\n get onDidAddView() {\r\n return this.splitview.onDidAddView;\r\n }\r\n get onDidRemoveView() {\r\n return this.splitview.onDidRemoveView;\r\n }\r\n get minimumSize() {\r\n return this.splitview.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.splitview.maximumSize;\r\n }\r\n get orientation() {\r\n return this.splitview.orientation;\r\n }\r\n get size() {\r\n return this.splitview.size;\r\n }\r\n get orthogonalSize() {\r\n return this.splitview.orthogonalSize;\r\n }\r\n constructor(container, options) {\r\n var _a;\r\n super();\r\n this.paneItems = [];\r\n this.skipAnimation = false;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._orientation = (_a = options.orientation) !== null && _a !== void 0 ? _a : Orientation.VERTICAL;\r\n this.element = document.createElement('div');\r\n this.element.className = 'pane-container';\r\n container.appendChild(this.element);\r\n this.splitview = new Splitview(this.element, {\r\n orientation: this._orientation,\r\n proportionalLayout: false,\r\n descriptor: options.descriptor,\r\n });\r\n // if we've added views from the descriptor we need to\r\n // add the panes to our Pane array and setup animation\r\n this.getPanes().forEach((pane) => {\r\n const disposable = new CompositeDisposable(pane.onDidChangeExpansionState(() => {\r\n this.setupAnimation();\r\n this._onDidChange.fire(undefined);\r\n }));\r\n const paneItem = {\r\n pane,\r\n disposable: {\r\n dispose: () => {\r\n disposable.dispose();\r\n },\r\n },\r\n };\r\n this.paneItems.push(paneItem);\r\n pane.orthogonalSize = this.splitview.orthogonalSize;\r\n });\r\n this.addDisposables(this._onDidChange, this.splitview.onDidSashEnd(() => {\r\n this._onDidChange.fire(undefined);\r\n }), this.splitview.onDidAddView(() => {\r\n this._onDidChange.fire();\r\n }), this.splitview.onDidRemoveView(() => {\r\n this._onDidChange.fire();\r\n }));\r\n }\r\n addPane(pane, size, index = this.splitview.length, skipLayout = false) {\r\n const disposable = pane.onDidChangeExpansionState(() => {\r\n this.setupAnimation();\r\n this._onDidChange.fire(undefined);\r\n });\r\n const paneItem = {\r\n pane,\r\n disposable: {\r\n dispose: () => {\r\n disposable.dispose();\r\n },\r\n },\r\n };\r\n this.paneItems.splice(index, 0, paneItem);\r\n pane.orthogonalSize = this.splitview.orthogonalSize;\r\n this.splitview.addView(pane, size, index, skipLayout);\r\n }\r\n getViewSize(index) {\r\n return this.splitview.getViewSize(index);\r\n }\r\n getPanes() {\r\n return this.splitview.getViews();\r\n }\r\n removePane(index, options = { skipDispose: false }) {\r\n const paneItem = this.paneItems.splice(index, 1)[0];\r\n this.splitview.removeView(index);\r\n if (!options.skipDispose) {\r\n paneItem.disposable.dispose();\r\n paneItem.pane.dispose();\r\n }\r\n return paneItem;\r\n }\r\n moveView(from, to) {\r\n if (from === to) {\r\n return;\r\n }\r\n const view = this.removePane(from, { skipDispose: true });\r\n this.skipAnimation = true;\r\n try {\r\n this.addPane(view.pane, view.pane.size, to, false);\r\n }\r\n finally {\r\n this.skipAnimation = false;\r\n }\r\n }\r\n layout(size, orthogonalSize) {\r\n this.splitview.layout(size, orthogonalSize);\r\n }\r\n setupAnimation() {\r\n if (this.skipAnimation) {\r\n return;\r\n }\r\n if (this.animationTimer) {\r\n clearTimeout(this.animationTimer);\r\n this.animationTimer = undefined;\r\n }\r\n addClasses(this.element, 'animated');\r\n this.animationTimer = setTimeout(() => {\r\n this.animationTimer = undefined;\r\n removeClasses(this.element, 'animated');\r\n }, 200);\r\n }\r\n dispose() {\r\n super.dispose();\r\n if (this.animationTimer) {\r\n clearTimeout(this.animationTimer);\r\n this.animationTimer = undefined;\r\n }\r\n this.paneItems.forEach((paneItem) => {\r\n paneItem.disposable.dispose();\r\n paneItem.pane.dispose();\r\n });\r\n this.paneItems = [];\r\n this.splitview.dispose();\r\n this.element.remove();\r\n }\r\n}\r\n//# sourceMappingURL=paneview.js.map","/*---------------------------------------------------------------------------------------------\r\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\r\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Orientation } from '../splitview/splitview';\r\nimport { Emitter } from '../events';\r\nexport class LeafNode {\r\n get minimumWidth() {\r\n return this.view.minimumWidth;\r\n }\r\n get maximumWidth() {\r\n return this.view.maximumWidth;\r\n }\r\n get minimumHeight() {\r\n return this.view.minimumHeight;\r\n }\r\n get maximumHeight() {\r\n return this.view.maximumHeight;\r\n }\r\n get priority() {\r\n return this.view.priority;\r\n }\r\n get snap() {\r\n return this.view.snap;\r\n }\r\n get minimumSize() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.minimumHeight\r\n : this.minimumWidth;\r\n }\r\n get maximumSize() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.maximumHeight\r\n : this.maximumWidth;\r\n }\r\n get minimumOrthogonalSize() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.minimumWidth\r\n : this.minimumHeight;\r\n }\r\n get maximumOrthogonalSize() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.maximumWidth\r\n : this.maximumHeight;\r\n }\r\n get orthogonalSize() {\r\n return this._orthogonalSize;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n get element() {\r\n return this.view.element;\r\n }\r\n get width() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.orthogonalSize\r\n : this.size;\r\n }\r\n get height() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.size\r\n : this.orthogonalSize;\r\n }\r\n constructor(view, orientation, orthogonalSize, size = 0) {\r\n this.view = view;\r\n this.orientation = orientation;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._orthogonalSize = orthogonalSize;\r\n this._size = size;\r\n this._disposable = this.view.onDidChange((event) => {\r\n if (event) {\r\n this._onDidChange.fire({\r\n size: this.orientation === Orientation.VERTICAL\r\n ? event.width\r\n : event.height,\r\n orthogonalSize: this.orientation === Orientation.VERTICAL\r\n ? event.height\r\n : event.width,\r\n });\r\n }\r\n else {\r\n this._onDidChange.fire({});\r\n }\r\n });\r\n }\r\n setVisible(visible) {\r\n if (this.view.setVisible) {\r\n this.view.setVisible(visible);\r\n this._onDidChange.fire({});\r\n }\r\n }\r\n layout(size, orthogonalSize) {\r\n this._size = size;\r\n this._orthogonalSize = orthogonalSize;\r\n this.view.layout(this.width, this.height);\r\n }\r\n dispose() {\r\n this._onDidChange.dispose();\r\n this._disposable.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=leafNode.js.map","/*---------------------------------------------------------------------------------------------\r\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\r\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Splitview, Orientation, LayoutPriority, } from '../splitview/splitview';\r\nimport { Emitter, Event } from '../events';\r\nimport { LeafNode } from './leafNode';\r\nimport { CompositeDisposable, Disposable } from '../lifecycle';\r\nexport class BranchNode extends CompositeDisposable {\r\n get width() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.size\r\n : this.orthogonalSize;\r\n }\r\n get height() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.orthogonalSize\r\n : this.size;\r\n }\r\n get minimumSize() {\r\n return this.children.length === 0\r\n ? 0\r\n : Math.max(...this.children.map((c) => c.minimumOrthogonalSize));\r\n }\r\n get maximumSize() {\r\n return Math.min(...this.children.map((c) => c.maximumOrthogonalSize));\r\n }\r\n get minimumOrthogonalSize() {\r\n return this.splitview.minimumSize;\r\n }\r\n get maximumOrthogonalSize() {\r\n return this.splitview.maximumSize;\r\n }\r\n get orthogonalSize() {\r\n return this._orthogonalSize;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n get minimumWidth() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.minimumOrthogonalSize\r\n : this.minimumSize;\r\n }\r\n get minimumHeight() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.minimumSize\r\n : this.minimumOrthogonalSize;\r\n }\r\n get maximumWidth() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.maximumOrthogonalSize\r\n : this.maximumSize;\r\n }\r\n get maximumHeight() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.maximumSize\r\n : this.maximumOrthogonalSize;\r\n }\r\n get priority() {\r\n if (this.children.length === 0) {\r\n return LayoutPriority.Normal;\r\n }\r\n const priorities = this.children.map((c) => typeof c.priority === 'undefined'\r\n ? LayoutPriority.Normal\r\n : c.priority);\r\n if (priorities.some((p) => p === LayoutPriority.High)) {\r\n return LayoutPriority.High;\r\n }\r\n else if (priorities.some((p) => p === LayoutPriority.Low)) {\r\n return LayoutPriority.Low;\r\n }\r\n return LayoutPriority.Normal;\r\n }\r\n constructor(orientation, proportionalLayout, styles, size, orthogonalSize, childDescriptors) {\r\n super();\r\n this.orientation = orientation;\r\n this.proportionalLayout = proportionalLayout;\r\n this.styles = styles;\r\n this._childrenDisposable = Disposable.NONE;\r\n this.children = [];\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._orthogonalSize = orthogonalSize;\r\n this._size = size;\r\n this.element = document.createElement('div');\r\n this.element.className = 'branch-node';\r\n if (!childDescriptors) {\r\n this.splitview = new Splitview(this.element, {\r\n orientation: this.orientation,\r\n proportionalLayout,\r\n styles,\r\n });\r\n this.splitview.layout(this.size, this.orthogonalSize);\r\n }\r\n else {\r\n const descriptor = {\r\n views: childDescriptors.map((childDescriptor) => {\r\n return {\r\n view: childDescriptor.node,\r\n size: childDescriptor.node.size,\r\n visible: childDescriptor.node instanceof LeafNode &&\r\n childDescriptor.visible !== undefined\r\n ? childDescriptor.visible\r\n : true,\r\n };\r\n }),\r\n size: this.orthogonalSize,\r\n };\r\n this.children = childDescriptors.map((c) => c.node);\r\n this.splitview = new Splitview(this.element, {\r\n orientation: this.orientation,\r\n descriptor,\r\n proportionalLayout,\r\n });\r\n }\r\n this.addDisposables(this._onDidChange, this.splitview.onDidSashEnd(() => {\r\n this._onDidChange.fire({});\r\n }));\r\n this.setupChildrenEvents();\r\n }\r\n setVisible(visible) {\r\n for (const child of this.children) {\r\n child.setVisible(visible);\r\n }\r\n }\r\n isChildVisible(index) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n return this.splitview.isViewVisible(index);\r\n }\r\n setChildVisible(index, visible) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n if (this.splitview.isViewVisible(index) === visible) {\r\n return;\r\n }\r\n this.splitview.setViewVisible(index, visible);\r\n }\r\n moveChild(from, to) {\r\n if (from === to) {\r\n return;\r\n }\r\n if (from < 0 || from >= this.children.length) {\r\n throw new Error('Invalid from index');\r\n }\r\n if (from < to) {\r\n to--;\r\n }\r\n this.splitview.moveView(from, to);\r\n const child = this._removeChild(from);\r\n this._addChild(child, to);\r\n }\r\n getChildSize(index) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n return this.splitview.getViewSize(index);\r\n }\r\n resizeChild(index, size) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n this.splitview.resizeView(index, size);\r\n }\r\n layout(size, orthogonalSize) {\r\n this._size = orthogonalSize;\r\n this._orthogonalSize = size;\r\n this.splitview.layout(orthogonalSize, size);\r\n }\r\n addChild(node, size, index, skipLayout) {\r\n if (index < 0 || index > this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n this.splitview.addView(node, size, index, skipLayout);\r\n this._addChild(node, index);\r\n }\r\n getChildCachedVisibleSize(index) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n return this.splitview.getViewCachedVisibleSize(index);\r\n }\r\n removeChild(index, sizing) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n this.splitview.removeView(index, sizing);\r\n return this._removeChild(index);\r\n }\r\n _addChild(node, index) {\r\n this.children.splice(index, 0, node);\r\n this.setupChildrenEvents();\r\n }\r\n _removeChild(index) {\r\n const [child] = this.children.splice(index, 1);\r\n this.setupChildrenEvents();\r\n return child;\r\n }\r\n setupChildrenEvents() {\r\n this._childrenDisposable.dispose();\r\n this._childrenDisposable = Event.any(...this.children.map((c) => c.onDidChange))((e) => {\r\n /**\r\n * indicate a change has occured to allows any re-rendering but don't bubble\r\n * event because that was specific to this branch\r\n */\r\n this._onDidChange.fire({ size: e.orthogonalSize });\r\n });\r\n }\r\n dispose() {\r\n this._childrenDisposable.dispose();\r\n this.splitview.dispose();\r\n this.children.forEach((child) => child.dispose());\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=branchNode.js.map","/*---------------------------------------------------------------------------------------------\r\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\r\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Orientation, Sizing, } from '../splitview/splitview';\r\nimport { tail } from '../array';\r\nimport { LeafNode } from './leafNode';\r\nimport { BranchNode } from './branchNode';\r\nimport { Emitter } from '../events';\r\nimport { MutableDisposable } from '../lifecycle';\r\nfunction findLeaf(candiateNode, last) {\r\n if (candiateNode instanceof LeafNode) {\r\n return candiateNode;\r\n }\r\n if (candiateNode instanceof BranchNode) {\r\n return findLeaf(candiateNode.children[last ? candiateNode.children.length - 1 : 0], last);\r\n }\r\n throw new Error('invalid node');\r\n}\r\nfunction flipNode(node, size, orthogonalSize) {\r\n if (node instanceof BranchNode) {\r\n const result = new BranchNode(orthogonal(node.orientation), node.proportionalLayout, node.styles, size, orthogonalSize);\r\n let totalSize = 0;\r\n for (let i = node.children.length - 1; i >= 0; i--) {\r\n const child = node.children[i];\r\n const childSize = child instanceof BranchNode ? child.orthogonalSize : child.size;\r\n let newSize = node.size === 0\r\n ? 0\r\n : Math.round((size * childSize) / node.size);\r\n totalSize += newSize;\r\n // The last view to add should adjust to rounding errors\r\n if (i === 0) {\r\n newSize += size - totalSize;\r\n }\r\n result.addChild(flipNode(child, orthogonalSize, newSize), newSize, 0, true);\r\n }\r\n return result;\r\n }\r\n else {\r\n return new LeafNode(node.view, orthogonal(node.orientation), orthogonalSize);\r\n }\r\n}\r\nexport function indexInParent(element) {\r\n const parentElement = element.parentElement;\r\n if (!parentElement) {\r\n throw new Error('Invalid grid element');\r\n }\r\n let el = parentElement.firstElementChild;\r\n let index = 0;\r\n while (el !== element && el !== parentElement.lastElementChild && el) {\r\n el = el.nextElementSibling;\r\n index++;\r\n }\r\n return index;\r\n}\r\n/**\r\n * Find the grid location of a specific DOM element by traversing the parent\r\n * chain and finding each child index on the way.\r\n *\r\n * This will break as soon as DOM structures of the Splitview or Gridview change.\r\n */\r\nexport function getGridLocation(element) {\r\n const parentElement = element.parentElement;\r\n if (!parentElement) {\r\n throw new Error('Invalid grid element');\r\n }\r\n if (/\\bgrid-view\\b/.test(parentElement.className)) {\r\n return [];\r\n }\r\n const index = indexInParent(parentElement);\r\n const ancestor = parentElement.parentElement.parentElement.parentElement;\r\n return [...getGridLocation(ancestor), index];\r\n}\r\nexport function getRelativeLocation(rootOrientation, location, direction) {\r\n const orientation = getLocationOrientation(rootOrientation, location);\r\n const directionOrientation = getDirectionOrientation(direction);\r\n if (orientation === directionOrientation) {\r\n const [rest, _index] = tail(location);\r\n let index = _index;\r\n if (direction === 'right' || direction === 'bottom') {\r\n index += 1;\r\n }\r\n return [...rest, index];\r\n }\r\n else {\r\n const index = direction === 'right' || direction === 'bottom' ? 1 : 0;\r\n return [...location, index];\r\n }\r\n}\r\nexport function getDirectionOrientation(direction) {\r\n return direction === 'top' || direction === 'bottom'\r\n ? Orientation.VERTICAL\r\n : Orientation.HORIZONTAL;\r\n}\r\nexport function getLocationOrientation(rootOrientation, location) {\r\n return location.length % 2 === 0\r\n ? orthogonal(rootOrientation)\r\n : rootOrientation;\r\n}\r\nexport const orthogonal = (orientation) => orientation === Orientation.HORIZONTAL\r\n ? Orientation.VERTICAL\r\n : Orientation.HORIZONTAL;\r\nexport function isGridBranchNode(node) {\r\n return !!node.children;\r\n}\r\nconst serializeBranchNode = (node, orientation) => {\r\n const size = orientation === Orientation.VERTICAL ? node.box.width : node.box.height;\r\n if (!isGridBranchNode(node)) {\r\n if (typeof node.cachedVisibleSize === 'number') {\r\n return {\r\n type: 'leaf',\r\n data: node.view.toJSON(),\r\n size: node.cachedVisibleSize,\r\n visible: false,\r\n };\r\n }\r\n return { type: 'leaf', data: node.view.toJSON(), size };\r\n }\r\n return {\r\n type: 'branch',\r\n data: node.children.map((c) => serializeBranchNode(c, orthogonal(orientation))),\r\n size,\r\n };\r\n};\r\nexport class Gridview {\r\n get length() {\r\n return this._root ? this._root.children.length : 0;\r\n }\r\n get orientation() {\r\n return this.root.orientation;\r\n }\r\n set orientation(orientation) {\r\n if (this.root.orientation === orientation) {\r\n return;\r\n }\r\n const { size, orthogonalSize } = this.root;\r\n this.root = flipNode(this.root, orthogonalSize, size);\r\n this.root.layout(size, orthogonalSize);\r\n }\r\n get width() {\r\n return this.root.width;\r\n }\r\n get height() {\r\n return this.root.height;\r\n }\r\n get minimumWidth() {\r\n return this.root.minimumWidth;\r\n }\r\n get minimumHeight() {\r\n return this.root.minimumHeight;\r\n }\r\n get maximumWidth() {\r\n return this.root.maximumHeight;\r\n }\r\n get maximumHeight() {\r\n return this.root.maximumHeight;\r\n }\r\n serialize() {\r\n const root = serializeBranchNode(this.getView(), this.orientation);\r\n return {\r\n root,\r\n width: this.width,\r\n height: this.height,\r\n orientation: this.orientation,\r\n };\r\n }\r\n dispose() {\r\n this.disposable.dispose();\r\n this._onDidChange.dispose();\r\n this.root.dispose();\r\n this.element.remove();\r\n }\r\n clear() {\r\n const orientation = this.root.orientation;\r\n this.root = new BranchNode(orientation, this.proportionalLayout, this.styles, this.root.size, this.root.orthogonalSize);\r\n }\r\n deserialize(json, deserializer) {\r\n const orientation = json.orientation;\r\n const height = orientation === Orientation.VERTICAL ? json.height : json.width;\r\n this._deserialize(json.root, orientation, deserializer, height);\r\n }\r\n _deserialize(root, orientation, deserializer, orthogonalSize) {\r\n this.root = this._deserializeNode(root, orientation, deserializer, orthogonalSize);\r\n }\r\n _deserializeNode(node, orientation, deserializer, orthogonalSize) {\r\n let result;\r\n if (node.type === 'branch') {\r\n const serializedChildren = node.data;\r\n const children = serializedChildren.map((serializedChild) => {\r\n return {\r\n node: this._deserializeNode(serializedChild, orthogonal(orientation), deserializer, node.size),\r\n visible: serializedChild.visible,\r\n };\r\n });\r\n result = new BranchNode(orientation, this.proportionalLayout, this.styles, node.size, // <- orthogonal size - flips at each depth\r\n orthogonalSize, // <- size - flips at each depth\r\n children);\r\n }\r\n else {\r\n result = new LeafNode(deserializer.fromJSON(node), orientation, orthogonalSize, node.size);\r\n }\r\n return result;\r\n }\r\n get root() {\r\n return this._root;\r\n }\r\n set root(root) {\r\n const oldRoot = this._root;\r\n if (oldRoot) {\r\n oldRoot.dispose();\r\n this.element.removeChild(oldRoot.element);\r\n }\r\n this._root = root;\r\n this.element.appendChild(this._root.element);\r\n this.disposable.value = this._root.onDidChange((e) => {\r\n this._onDidChange.fire(e);\r\n });\r\n }\r\n /**\r\n * If the root is orientated as a VERTICAL node then nest the existing root within a new HORIZIONTAL root node\r\n * If the root is orientated as a HORIZONTAL node then nest the existing root within a new VERITCAL root node\r\n */\r\n insertOrthogonalSplitviewAtRoot() {\r\n if (!this._root) {\r\n return;\r\n }\r\n const oldRoot = this.root;\r\n oldRoot.element.remove();\r\n this._root = new BranchNode(orthogonal(oldRoot.orientation), this.proportionalLayout, this.styles, this.root.orthogonalSize, this.root.size);\r\n if (oldRoot.children.length === 0) {\r\n // no data so no need to add anything back in\r\n }\r\n else if (oldRoot.children.length === 1) {\r\n // can remove one level of redundant branching if there is only a single child\r\n const childReference = oldRoot.children[0];\r\n const child = oldRoot.removeChild(0); // remove to prevent disposal when disposing of unwanted root\r\n child.dispose();\r\n oldRoot.dispose();\r\n this._root.addChild(\r\n /**\r\n * the child node will have the same orientation as the new root since\r\n * we are removing the inbetween node.\r\n * the entire 'tree' must be flipped recursively to ensure that the orientation\r\n * flips at each level\r\n */\r\n flipNode(childReference, childReference.orthogonalSize, childReference.size), Sizing.Distribute, 0);\r\n }\r\n else {\r\n this._root.addChild(oldRoot, Sizing.Distribute, 0);\r\n }\r\n this.element.appendChild(this._root.element);\r\n this.disposable.value = this._root.onDidChange((e) => {\r\n this._onDidChange.fire(e);\r\n });\r\n }\r\n next(location) {\r\n return this.progmaticSelect(location);\r\n }\r\n previous(location) {\r\n return this.progmaticSelect(location, true);\r\n }\r\n getView(location) {\r\n const node = location ? this.getNode(location)[1] : this.root;\r\n return this._getViews(node, this.orientation);\r\n }\r\n _getViews(node, orientation, cachedVisibleSize) {\r\n const box = { height: node.height, width: node.width };\r\n if (node instanceof LeafNode) {\r\n return { box, view: node.view, cachedVisibleSize };\r\n }\r\n const children = [];\r\n for (let i = 0; i < node.children.length; i++) {\r\n const child = node.children[i];\r\n const nodeCachedVisibleSize = node.getChildCachedVisibleSize(i);\r\n children.push(this._getViews(child, orthogonal(orientation), nodeCachedVisibleSize));\r\n }\r\n return { box, children };\r\n }\r\n progmaticSelect(location, reverse = false) {\r\n const [path, node] = this.getNode(location);\r\n if (!(node instanceof LeafNode)) {\r\n throw new Error('invalid location');\r\n }\r\n for (let i = path.length - 1; i > -1; i--) {\r\n const n = path[i];\r\n const l = location[i] || 0;\r\n const canProgressInCurrentLevel = reverse\r\n ? l - 1 > -1\r\n : l + 1 < n.children.length;\r\n if (canProgressInCurrentLevel) {\r\n return findLeaf(n.children[reverse ? l - 1 : l + 1], reverse);\r\n }\r\n }\r\n return findLeaf(this.root, reverse);\r\n }\r\n constructor(proportionalLayout, styles, orientation) {\r\n this.proportionalLayout = proportionalLayout;\r\n this.styles = styles;\r\n this.disposable = new MutableDisposable();\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this.element = document.createElement('div');\r\n this.element.className = 'grid-view';\r\n this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0);\r\n }\r\n isViewVisible(location) {\r\n const [rest, index] = tail(location);\r\n const [, parent] = this.getNode(rest);\r\n if (!(parent instanceof BranchNode)) {\r\n throw new Error('Invalid from location');\r\n }\r\n return parent.isChildVisible(index);\r\n }\r\n setViewVisible(location, visible) {\r\n const [rest, index] = tail(location);\r\n const [, parent] = this.getNode(rest);\r\n if (!(parent instanceof BranchNode)) {\r\n throw new Error('Invalid from location');\r\n }\r\n parent.setChildVisible(index, visible);\r\n }\r\n moveView(parentLocation, from, to) {\r\n const [, parent] = this.getNode(parentLocation);\r\n if (!(parent instanceof BranchNode)) {\r\n throw new Error('Invalid location');\r\n }\r\n parent.moveChild(from, to);\r\n }\r\n addView(view, size, location) {\r\n const [rest, index] = tail(location);\r\n const [pathToParent, parent] = this.getNode(rest);\r\n if (parent instanceof BranchNode) {\r\n const node = new LeafNode(view, orthogonal(parent.orientation), parent.orthogonalSize);\r\n parent.addChild(node, size, index);\r\n }\r\n else {\r\n const [grandParent, ..._] = [...pathToParent].reverse();\r\n const [parentIndex, ...__] = [...rest].reverse();\r\n let newSiblingSize = 0;\r\n const newSiblingCachedVisibleSize = grandParent.getChildCachedVisibleSize(parentIndex);\r\n if (typeof newSiblingCachedVisibleSize === 'number') {\r\n newSiblingSize = Sizing.Invisible(newSiblingCachedVisibleSize);\r\n }\r\n const child = grandParent.removeChild(parentIndex);\r\n child.dispose();\r\n const newParent = new BranchNode(parent.orientation, this.proportionalLayout, this.styles, parent.size, parent.orthogonalSize);\r\n grandParent.addChild(newParent, parent.size, parentIndex);\r\n const newSibling = new LeafNode(parent.view, grandParent.orientation, parent.size);\r\n newParent.addChild(newSibling, newSiblingSize, 0);\r\n if (typeof size !== 'number' && size.type === 'split') {\r\n size = { type: 'split', index: 0 };\r\n }\r\n const node = new LeafNode(view, grandParent.orientation, parent.size);\r\n newParent.addChild(node, size, index);\r\n }\r\n }\r\n remove(view, sizing) {\r\n const location = getGridLocation(view.element);\r\n return this.removeView(location, sizing);\r\n }\r\n removeView(location, sizing) {\r\n const [rest, index] = tail(location);\r\n const [pathToParent, parent] = this.getNode(rest);\r\n if (!(parent instanceof BranchNode)) {\r\n throw new Error('Invalid location');\r\n }\r\n const nodeToRemove = parent.children[index];\r\n if (!(nodeToRemove instanceof LeafNode)) {\r\n throw new Error('Invalid location');\r\n }\r\n parent.removeChild(index, sizing);\r\n nodeToRemove.dispose();\r\n if (parent.children.length !== 1) {\r\n return nodeToRemove.view;\r\n }\r\n // if the parent has only one child and we know the parent is a BranchNode we can make the tree\r\n // more efficiently spaced by replacing the parent BranchNode with the child.\r\n // if that child is a LeafNode then we simply replace the BranchNode with the child otherwise if the child\r\n // is a BranchNode too we should spread it's children into the grandparent.\r\n // refer to the remaining child as the sibling\r\n const sibling = parent.children[0];\r\n if (pathToParent.length === 0) {\r\n // if the parent is root\r\n if (sibling instanceof LeafNode) {\r\n // if the sibling is a leaf node no action is required\r\n return nodeToRemove.view;\r\n }\r\n // otherwise the sibling is a branch node. since the parent is the root and the root has only one child\r\n // which is a branch node we can just set this branch node to be the new root node\r\n // for good housekeeping we'll removing the sibling from it's existing tree\r\n parent.removeChild(0, sizing);\r\n // and set that sibling node to be root\r\n this.root = sibling;\r\n return nodeToRemove.view;\r\n }\r\n // otherwise the parent is apart of a large sub-tree\r\n const [grandParent, ..._] = [...pathToParent].reverse();\r\n const [parentIndex, ...__] = [...rest].reverse();\r\n const isSiblingVisible = parent.isChildVisible(0);\r\n // either way we need to remove the sibling from it's existing tree\r\n parent.removeChild(0, sizing);\r\n // note the sizes of all of the grandparents children\r\n const sizes = grandParent.children.map((_size, i) => grandParent.getChildSize(i));\r\n // remove the parent from the grandparent since we are moving the sibling to take the parents place\r\n // this parent is no longer used and can be disposed of\r\n grandParent.removeChild(parentIndex, sizing).dispose();\r\n if (sibling instanceof BranchNode) {\r\n // replace the parent with the siblings children\r\n sizes.splice(parentIndex, 1, ...sibling.children.map((c) => c.size));\r\n // and add those siblings to the grandparent\r\n for (let i = 0; i < sibling.children.length; i++) {\r\n const child = sibling.children[i];\r\n grandParent.addChild(child, child.size, parentIndex + i);\r\n }\r\n }\r\n else {\r\n // otherwise create a new leaf node and add that to the grandparent\r\n const newSibling = new LeafNode(sibling.view, orthogonal(sibling.orientation), sibling.size);\r\n const siblingSizing = isSiblingVisible\r\n ? sibling.orthogonalSize\r\n : Sizing.Invisible(sibling.orthogonalSize);\r\n grandParent.addChild(newSibling, siblingSizing, parentIndex);\r\n }\r\n // the containing node of the sibling is no longer required and can be disposed of\r\n sibling.dispose();\r\n // resize everything\r\n for (let i = 0; i < sizes.length; i++) {\r\n grandParent.resizeChild(i, sizes[i]);\r\n }\r\n return nodeToRemove.view;\r\n }\r\n layout(width, height) {\r\n const [size, orthogonalSize] = this.root.orientation === Orientation.HORIZONTAL\r\n ? [height, width]\r\n : [width, height];\r\n this.root.layout(size, orthogonalSize);\r\n }\r\n getNode(location, node = this.root, path = []) {\r\n if (location.length === 0) {\r\n return [path, node];\r\n }\r\n if (!(node instanceof BranchNode)) {\r\n throw new Error('Invalid location');\r\n }\r\n const [index, ...rest] = location;\r\n if (index < 0 || index >= node.children.length) {\r\n throw new Error('Invalid location');\r\n }\r\n const child = node.children[index];\r\n path.push(node);\r\n return this.getNode(rest, child, path);\r\n }\r\n}\r\n//# sourceMappingURL=gridview.js.map","import { Emitter } from '../events';\r\nexport class SplitviewApi {\r\n get minimumSize() {\r\n return this.component.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.component.maximumSize;\r\n }\r\n get height() {\r\n return this.component.height;\r\n }\r\n get width() {\r\n return this.component.width;\r\n }\r\n get length() {\r\n return this.component.length;\r\n }\r\n get orientation() {\r\n return this.component.orientation;\r\n }\r\n get panels() {\r\n return this.component.panels;\r\n }\r\n get onDidLayoutFromJSON() {\r\n return this.component.onDidLayoutFromJSON;\r\n }\r\n get onDidLayoutChange() {\r\n return this.component.onDidLayoutChange;\r\n }\r\n get onDidAddView() {\r\n return this.component.onDidAddView;\r\n }\r\n get onDidRemoveView() {\r\n return this.component.onDidRemoveView;\r\n }\r\n constructor(component) {\r\n this.component = component;\r\n }\r\n updateOptions(options) {\r\n this.component.updateOptions(options);\r\n }\r\n removePanel(panel, sizing) {\r\n this.component.removePanel(panel, sizing);\r\n }\r\n focus() {\r\n this.component.focus();\r\n }\r\n getPanel(id) {\r\n return this.component.getPanel(id);\r\n }\r\n layout(width, height) {\r\n return this.component.layout(width, height);\r\n }\r\n addPanel(options) {\r\n return this.component.addPanel(options);\r\n }\r\n movePanel(from, to) {\r\n this.component.movePanel(from, to);\r\n }\r\n fromJSON(data) {\r\n this.component.fromJSON(data);\r\n }\r\n toJSON() {\r\n return this.component.toJSON();\r\n }\r\n clear() {\r\n this.component.clear();\r\n }\r\n}\r\nexport class PaneviewApi {\r\n get minimumSize() {\r\n return this.component.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.component.maximumSize;\r\n }\r\n get height() {\r\n return this.component.height;\r\n }\r\n get width() {\r\n return this.component.width;\r\n }\r\n get panels() {\r\n return this.component.panels;\r\n }\r\n get onDidLayoutChange() {\r\n return this.component.onDidLayoutChange;\r\n }\r\n get onDidLayoutFromJSON() {\r\n return this.component.onDidLayoutFromJSON;\r\n }\r\n get onDidAddView() {\r\n return this.component.onDidAddView;\r\n }\r\n get onDidRemoveView() {\r\n return this.component.onDidRemoveView;\r\n }\r\n get onDidDrop() {\r\n const emitter = new Emitter();\r\n const disposable = this.component.onDidDrop((e) => {\r\n emitter.fire(Object.assign(Object.assign({}, e), { api: this }));\r\n });\r\n emitter.dispose = () => {\r\n disposable.dispose();\r\n emitter.dispose();\r\n };\r\n return emitter.event;\r\n }\r\n constructor(component) {\r\n this.component = component;\r\n }\r\n removePanel(panel) {\r\n this.component.removePanel(panel);\r\n }\r\n getPanel(id) {\r\n return this.component.getPanel(id);\r\n }\r\n movePanel(from, to) {\r\n this.component.movePanel(from, to);\r\n }\r\n focus() {\r\n this.component.focus();\r\n }\r\n layout(width, height) {\r\n this.component.layout(width, height);\r\n }\r\n addPanel(options) {\r\n return this.component.addPanel(options);\r\n }\r\n fromJSON(data) {\r\n this.component.fromJSON(data);\r\n }\r\n toJSON() {\r\n return this.component.toJSON();\r\n }\r\n clear() {\r\n this.component.clear();\r\n }\r\n}\r\nexport class GridviewApi {\r\n get minimumHeight() {\r\n return this.component.minimumHeight;\r\n }\r\n get maximumHeight() {\r\n return this.component.maximumHeight;\r\n }\r\n get minimumWidth() {\r\n return this.component.minimumWidth;\r\n }\r\n get maximumWidth() {\r\n return this.component.maximumWidth;\r\n }\r\n get width() {\r\n return this.component.width;\r\n }\r\n get height() {\r\n return this.component.height;\r\n }\r\n get onDidLayoutChange() {\r\n return this.component.onDidLayoutChange;\r\n }\r\n get onDidAddPanel() {\r\n return this.component.onDidAddGroup;\r\n }\r\n get onDidRemovePanel() {\r\n return this.component.onDidRemoveGroup;\r\n }\r\n get onDidActivePanelChange() {\r\n return this.component.onDidActiveGroupChange;\r\n }\r\n get onDidLayoutFromJSON() {\r\n return this.component.onDidLayoutFromJSON;\r\n }\r\n get panels() {\r\n return this.component.groups;\r\n }\r\n get orientation() {\r\n return this.component.orientation;\r\n }\r\n set orientation(value) {\r\n this.component.updateOptions({ orientation: value });\r\n }\r\n constructor(component) {\r\n this.component = component;\r\n }\r\n focus() {\r\n this.component.focus();\r\n }\r\n layout(width, height, force = false) {\r\n this.component.layout(width, height, force);\r\n }\r\n addPanel(options) {\r\n return this.component.addPanel(options);\r\n }\r\n removePanel(panel, sizing) {\r\n this.component.removePanel(panel, sizing);\r\n }\r\n movePanel(panel, options) {\r\n this.component.movePanel(panel, options);\r\n }\r\n getPanel(id) {\r\n return this.component.getPanel(id);\r\n }\r\n fromJSON(data) {\r\n return this.component.fromJSON(data);\r\n }\r\n toJSON() {\r\n return this.component.toJSON();\r\n }\r\n clear() {\r\n this.component.clear();\r\n }\r\n}\r\nexport class DockviewApi {\r\n get id() {\r\n return this.component.id;\r\n }\r\n get width() {\r\n return this.component.width;\r\n }\r\n get height() {\r\n return this.component.height;\r\n }\r\n get minimumHeight() {\r\n return this.component.minimumHeight;\r\n }\r\n get maximumHeight() {\r\n return this.component.maximumHeight;\r\n }\r\n get minimumWidth() {\r\n return this.component.minimumWidth;\r\n }\r\n get maximumWidth() {\r\n return this.component.maximumWidth;\r\n }\r\n get size() {\r\n return this.component.size;\r\n }\r\n get totalPanels() {\r\n return this.component.totalPanels;\r\n }\r\n get onDidActiveGroupChange() {\r\n return this.component.onDidActiveGroupChange;\r\n }\r\n get onDidAddGroup() {\r\n return this.component.onDidAddGroup;\r\n }\r\n get onDidRemoveGroup() {\r\n return this.component.onDidRemoveGroup;\r\n }\r\n get onDidActivePanelChange() {\r\n return this.component.onDidActivePanelChange;\r\n }\r\n get onDidAddPanel() {\r\n return this.component.onDidAddPanel;\r\n }\r\n get onDidRemovePanel() {\r\n return this.component.onDidRemovePanel;\r\n }\r\n get onDidLayoutFromJSON() {\r\n return this.component.onDidLayoutFromJSON;\r\n }\r\n get onDidLayoutChange() {\r\n return this.component.onDidLayoutChange;\r\n }\r\n get onDidDrop() {\r\n return this.component.onDidDrop;\r\n }\r\n get onWillDragGroup() {\r\n return this.component.onWillDragGroup;\r\n }\r\n get onWillDragPanel() {\r\n return this.component.onWillDragPanel;\r\n }\r\n get panels() {\r\n return this.component.panels;\r\n }\r\n get groups() {\r\n return this.component.groups;\r\n }\r\n get activePanel() {\r\n return this.component.activePanel;\r\n }\r\n get activeGroup() {\r\n return this.component.activeGroup;\r\n }\r\n constructor(component) {\r\n this.component = component;\r\n }\r\n focus() {\r\n this.component.focus();\r\n }\r\n getPanel(id) {\r\n return this.component.getGroupPanel(id);\r\n }\r\n layout(width, height, force = false) {\r\n this.component.layout(width, height, force);\r\n }\r\n addPanel(options) {\r\n return this.component.addPanel(options);\r\n }\r\n removePanel(panel) {\r\n this.component.removePanel(panel);\r\n }\r\n addGroup(options) {\r\n return this.component.addGroup(options);\r\n }\r\n moveToNext(options) {\r\n this.component.moveToNext(options);\r\n }\r\n moveToPrevious(options) {\r\n this.component.moveToPrevious(options);\r\n }\r\n closeAllGroups() {\r\n return this.component.closeAllGroups();\r\n }\r\n removeGroup(group) {\r\n this.component.removeGroup(group);\r\n }\r\n getGroup(id) {\r\n return this.component.getPanel(id);\r\n }\r\n addFloatingGroup(item, coord) {\r\n return this.component.addFloatingGroup(item, coord);\r\n }\r\n fromJSON(data) {\r\n this.component.fromJSON(data);\r\n }\r\n toJSON() {\r\n return this.component.toJSON();\r\n }\r\n clear() {\r\n this.component.clear();\r\n }\r\n}\r\n//# sourceMappingURL=component.api.js.map","import { addDisposableListener } from '../events';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nexport class DragAndDropObserver extends CompositeDisposable {\r\n constructor(element, callbacks) {\r\n super();\r\n this.element = element;\r\n this.callbacks = callbacks;\r\n this.target = null;\r\n this.registerListeners();\r\n }\r\n registerListeners() {\r\n this.addDisposables(addDisposableListener(this.element, 'dragenter', (e) => {\r\n this.target = e.target;\r\n this.callbacks.onDragEnter(e);\r\n }, true));\r\n this.addDisposables(addDisposableListener(this.element, 'dragover', (e) => {\r\n e.preventDefault(); // needed so that the drop event fires (https://stackoverflow.com/questions/21339924/drop-event-not-firing-in-chrome)\r\n if (this.callbacks.onDragOver) {\r\n this.callbacks.onDragOver(e);\r\n }\r\n }, true));\r\n this.addDisposables(addDisposableListener(this.element, 'dragleave', (e) => {\r\n if (this.target === e.target) {\r\n this.target = null;\r\n this.callbacks.onDragLeave(e);\r\n }\r\n }));\r\n this.addDisposables(addDisposableListener(this.element, 'dragend', (e) => {\r\n this.target = null;\r\n this.callbacks.onDragEnd(e);\r\n }));\r\n this.addDisposables(addDisposableListener(this.element, 'drop', (e) => {\r\n this.callbacks.onDrop(e);\r\n }));\r\n }\r\n}\r\n//# sourceMappingURL=dnd.js.map","import { toggleClass } from '../dom';\r\nimport { Emitter } from '../events';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nimport { DragAndDropObserver } from './dnd';\r\nimport { clamp } from '../math';\r\nfunction numberOrFallback(maybeNumber, fallback) {\r\n return typeof maybeNumber === 'number' ? maybeNumber : fallback;\r\n}\r\nexport function directionToPosition(direction) {\r\n switch (direction) {\r\n case 'above':\r\n return 'top';\r\n case 'below':\r\n return 'bottom';\r\n case 'left':\r\n return 'left';\r\n case 'right':\r\n return 'right';\r\n case 'within':\r\n return 'center';\r\n default:\r\n throw new Error(`invalid direction '${direction}'`);\r\n }\r\n}\r\nexport function positionToDirection(position) {\r\n switch (position) {\r\n case 'top':\r\n return 'above';\r\n case 'bottom':\r\n return 'below';\r\n case 'left':\r\n return 'left';\r\n case 'right':\r\n return 'right';\r\n case 'center':\r\n return 'within';\r\n default:\r\n throw new Error(`invalid position '${position}'`);\r\n }\r\n}\r\nexport class Droptarget extends CompositeDisposable {\r\n get state() {\r\n return this._state;\r\n }\r\n constructor(element, options) {\r\n super();\r\n this.element = element;\r\n this.options = options;\r\n this._onDrop = new Emitter();\r\n this.onDrop = this._onDrop.event;\r\n // use a set to take advantage of #<set>.has\r\n this._acceptedTargetZonesSet = new Set(this.options.acceptedTargetZones);\r\n this.addDisposables(this._onDrop, new DragAndDropObserver(this.element, {\r\n onDragEnter: () => undefined,\r\n onDragOver: (e) => {\r\n if (this._acceptedTargetZonesSet.size === 0) {\r\n this.removeDropTarget();\r\n return;\r\n }\r\n const width = this.element.clientWidth;\r\n const height = this.element.clientHeight;\r\n if (width === 0 || height === 0) {\r\n return; // avoid div!0\r\n }\r\n const rect = e.currentTarget.getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n const y = e.clientY - rect.top;\r\n const quadrant = this.calculateQuadrant(this._acceptedTargetZonesSet, x, y, width, height);\r\n /**\r\n * If the event has already been used by another DropTarget instance\r\n * then don't show a second drop target, only one target should be\r\n * active at any one time\r\n */\r\n if (this.isAlreadyUsed(e) || quadrant === null) {\r\n // no drop target should be displayed\r\n this.removeDropTarget();\r\n return;\r\n }\r\n if (typeof this.options.canDisplayOverlay === 'boolean') {\r\n if (!this.options.canDisplayOverlay) {\r\n this.removeDropTarget();\r\n return;\r\n }\r\n }\r\n else if (!this.options.canDisplayOverlay(e, quadrant)) {\r\n this.removeDropTarget();\r\n return;\r\n }\r\n this.markAsUsed(e);\r\n if (!this.targetElement) {\r\n this.targetElement = document.createElement('div');\r\n this.targetElement.className = 'drop-target-dropzone';\r\n this.overlayElement = document.createElement('div');\r\n this.overlayElement.className = 'drop-target-selection';\r\n this._state = 'center';\r\n this.targetElement.appendChild(this.overlayElement);\r\n this.element.classList.add('drop-target');\r\n this.element.append(this.targetElement);\r\n }\r\n this.toggleClasses(quadrant, width, height);\r\n this.setState(quadrant);\r\n },\r\n onDragLeave: () => {\r\n this.removeDropTarget();\r\n },\r\n onDragEnd: () => {\r\n this.removeDropTarget();\r\n },\r\n onDrop: (e) => {\r\n e.preventDefault();\r\n const state = this._state;\r\n this.removeDropTarget();\r\n if (state) {\r\n // only stop the propagation of the event if we are dealing with it\r\n // which is only when the target has state\r\n e.stopPropagation();\r\n this._onDrop.fire({ position: state, nativeEvent: e });\r\n }\r\n },\r\n }));\r\n }\r\n setTargetZones(acceptedTargetZones) {\r\n this._acceptedTargetZonesSet = new Set(acceptedTargetZones);\r\n }\r\n dispose() {\r\n this.removeDropTarget();\r\n super.dispose();\r\n }\r\n /**\r\n * Add a property to the event object for other potential listeners to check\r\n */\r\n markAsUsed(event) {\r\n event[Droptarget.USED_EVENT_ID] = true;\r\n }\r\n /**\r\n * Check is the event has already been used by another instance od DropTarget\r\n */\r\n isAlreadyUsed(event) {\r\n const value = event[Droptarget.USED_EVENT_ID];\r\n return typeof value === 'boolean' && value;\r\n }\r\n toggleClasses(quadrant, width, height) {\r\n var _a, _b, _c, _d;\r\n if (!this.overlayElement) {\r\n return;\r\n }\r\n const isSmallX = width < 100;\r\n const isSmallY = height < 100;\r\n const isLeft = quadrant === 'left';\r\n const isRight = quadrant === 'right';\r\n const isTop = quadrant === 'top';\r\n const isBottom = quadrant === 'bottom';\r\n const rightClass = !isSmallX && isRight;\r\n const leftClass = !isSmallX && isLeft;\r\n const topClass = !isSmallY && isTop;\r\n const bottomClass = !isSmallY && isBottom;\r\n let size = 0.5;\r\n if (((_b = (_a = this.options.overlayModel) === null || _a === void 0 ? void 0 : _a.size) === null || _b === void 0 ? void 0 : _b.type) === 'percentage') {\r\n size = clamp(this.options.overlayModel.size.value, 0, 100) / 100;\r\n }\r\n if (((_d = (_c = this.options.overlayModel) === null || _c === void 0 ? void 0 : _c.size) === null || _d === void 0 ? void 0 : _d.type) === 'pixels') {\r\n if (rightClass || leftClass) {\r\n size =\r\n clamp(0, this.options.overlayModel.size.value, width) /\r\n width;\r\n }\r\n if (topClass || bottomClass) {\r\n size =\r\n clamp(0, this.options.overlayModel.size.value, height) /\r\n height;\r\n }\r\n }\r\n const translate = (1 - size) / 2;\r\n const scale = size;\r\n let transform;\r\n if (rightClass) {\r\n transform = `translateX(${100 * translate}%) scaleX(${scale})`;\r\n }\r\n else if (leftClass) {\r\n transform = `translateX(-${100 * translate}%) scaleX(${scale})`;\r\n }\r\n else if (topClass) {\r\n transform = `translateY(-${100 * translate}%) scaleY(${scale})`;\r\n }\r\n else if (bottomClass) {\r\n transform = `translateY(${100 * translate}%) scaleY(${scale})`;\r\n }\r\n else {\r\n transform = '';\r\n }\r\n this.overlayElement.style.transform = transform;\r\n toggleClass(this.overlayElement, 'small-right', isSmallX && isRight);\r\n toggleClass(this.overlayElement, 'small-left', isSmallX && isLeft);\r\n toggleClass(this.overlayElement, 'small-top', isSmallY && isTop);\r\n toggleClass(this.overlayElement, 'small-bottom', isSmallY && isBottom);\r\n }\r\n setState(quadrant) {\r\n switch (quadrant) {\r\n case 'top':\r\n this._state = 'top';\r\n break;\r\n case 'left':\r\n this._state = 'left';\r\n break;\r\n case 'bottom':\r\n this._state = 'bottom';\r\n break;\r\n case 'right':\r\n this._state = 'right';\r\n break;\r\n case 'center':\r\n this._state = 'center';\r\n break;\r\n }\r\n }\r\n calculateQuadrant(overlayType, x, y, width, height) {\r\n var _a, _b, _c, _d, _e, _f;\r\n const isPercentage = ((_a = this.options.overlayModel) === null || _a === void 0 ? void 0 : _a.activationSize) === undefined ||\r\n ((_c = (_b = this.options.overlayModel) === null || _b === void 0 ? void 0 : _b.activationSize) === null || _c === void 0 ? void 0 : _c.type) === 'percentage';\r\n const value = numberOrFallback((_f = (_e = (_d = this.options) === null || _d === void 0 ? void 0 : _d.overlayModel) === null || _e === void 0 ? void 0 : _e.activationSize) === null || _f === void 0 ? void 0 : _f.value, 20);\r\n if (isPercentage) {\r\n return calculateQuadrantAsPercentage(overlayType, x, y, width, height, value);\r\n }\r\n return calculateQuadrantAsPixels(overlayType, x, y, width, height, value);\r\n }\r\n removeDropTarget() {\r\n if (this.targetElement) {\r\n this._state = undefined;\r\n this.element.removeChild(this.targetElement);\r\n this.targetElement = undefined;\r\n this.overlayElement = undefined;\r\n this.element.classList.remove('drop-target');\r\n }\r\n }\r\n}\r\nDroptarget.USED_EVENT_ID = '__dockview_droptarget_event_is_used__';\r\nexport function calculateQuadrantAsPercentage(overlayType, x, y, width, height, threshold) {\r\n const xp = (100 * x) / width;\r\n const yp = (100 * y) / height;\r\n if (overlayType.has('left') && xp < threshold) {\r\n return 'left';\r\n }\r\n if (overlayType.has('right') && xp > 100 - threshold) {\r\n return 'right';\r\n }\r\n if (overlayType.has('top') && yp < threshold) {\r\n return 'top';\r\n }\r\n if (overlayType.has('bottom') && yp > 100 - threshold) {\r\n return 'bottom';\r\n }\r\n if (!overlayType.has('center')) {\r\n return null;\r\n }\r\n return 'center';\r\n}\r\nexport function calculateQuadrantAsPixels(overlayType, x, y, width, height, threshold) {\r\n if (overlayType.has('left') && x < threshold) {\r\n return 'left';\r\n }\r\n if (overlayType.has('right') && x > width - threshold) {\r\n return 'right';\r\n }\r\n if (overlayType.has('top') && y < threshold) {\r\n return 'top';\r\n }\r\n if (overlayType.has('bottom') && y > height - threshold) {\r\n return 'bottom';\r\n }\r\n if (!overlayType.has('center')) {\r\n return null;\r\n }\r\n return 'center';\r\n}\r\n//# sourceMappingURL=droptarget.js.map","import { CompositeDisposable, MutableDisposable, } from '../../../lifecycle';\r\nimport { Emitter } from '../../../events';\r\nimport { trackFocus } from '../../../dom';\r\nexport class ContentContainer extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor() {\r\n super();\r\n this.disposable = new MutableDisposable();\r\n this._onDidFocus = new Emitter();\r\n this.onDidFocus = this._onDidFocus.event;\r\n this._onDidBlur = new Emitter();\r\n this.onDidBlur = this._onDidBlur.event;\r\n this._element = document.createElement('div');\r\n this._element.className = 'content-container';\r\n this._element.tabIndex = -1;\r\n this.addDisposables(this._onDidFocus, this._onDidBlur);\r\n // for hosted containers\r\n // 1) register a drop target on the host\r\n // 2) register window dragStart events to disable pointer events\r\n // 3) register dragEnd events\r\n // 4) register mouseMove events (if no buttons are present we take this as a dragEnd event)\r\n }\r\n show() {\r\n this.element.style.display = '';\r\n }\r\n hide() {\r\n this.element.style.display = 'none';\r\n }\r\n openPanel(panel) {\r\n var _a;\r\n if (this.panel === panel) {\r\n return;\r\n }\r\n if (this.panel) {\r\n if ((_a = this.panel.view) === null || _a === void 0 ? void 0 : _a.content) {\r\n this._element.removeChild(this.panel.view.content.element);\r\n }\r\n this.panel = undefined;\r\n }\r\n this.panel = panel;\r\n const disposable = new CompositeDisposable();\r\n if (this.panel.view) {\r\n const _onDidFocus = this.panel.view.content.onDidFocus;\r\n const _onDidBlur = this.panel.view.content.onDidBlur;\r\n const focusTracker = trackFocus(this._element);\r\n disposable.addDisposables(focusTracker, focusTracker.onDidFocus(() => this._onDidFocus.fire()), focusTracker.onDidBlur(() => this._onDidBlur.fire()));\r\n if (_onDidFocus) {\r\n disposable.addDisposables(_onDidFocus(() => this._onDidFocus.fire()));\r\n }\r\n if (_onDidBlur) {\r\n disposable.addDisposables(_onDidBlur(() => this._onDidBlur.fire()));\r\n }\r\n this._element.appendChild(this.panel.view.content.element);\r\n }\r\n this.disposable.value = disposable;\r\n }\r\n layout(_width, _height) {\r\n // noop\r\n }\r\n closePanel() {\r\n var _a, _b, _c;\r\n if ((_c = (_b = (_a = this.panel) === null || _a === void 0 ? void 0 : _a.view) === null || _b === void 0 ? void 0 : _b.content) === null || _c === void 0 ? void 0 : _c.element) {\r\n this._element.removeChild(this.panel.view.content.element);\r\n this.panel = undefined;\r\n }\r\n }\r\n dispose() {\r\n this.disposable.dispose();\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=content.js.map","export var DockviewDropTargets;\r\n(function (DockviewDropTargets) {\r\n DockviewDropTargets[DockviewDropTargets[\"Tab\"] = 0] = \"Tab\";\r\n DockviewDropTargets[DockviewDropTargets[\"Panel\"] = 1] = \"Panel\";\r\n DockviewDropTargets[DockviewDropTargets[\"TabContainer\"] = 2] = \"TabContainer\";\r\n DockviewDropTargets[DockviewDropTargets[\"Edge\"] = 3] = \"Edge\";\r\n})(DockviewDropTargets || (DockviewDropTargets = {}));\r\n//# sourceMappingURL=types.js.map","import { getElementsByTagName } from '../dom';\r\nimport { addDisposableListener, Emitter } from '../events';\r\nimport { CompositeDisposable, MutableDisposable, } from '../lifecycle';\r\nexport class DragHandler extends CompositeDisposable {\r\n constructor(el) {\r\n super();\r\n this.el = el;\r\n this.dataDisposable = new MutableDisposable();\r\n this.pointerEventsDisposable = new MutableDisposable();\r\n this._onDragStart = new Emitter();\r\n this.onDragStart = this._onDragStart.event;\r\n this.addDisposables(this._onDragStart, this.dataDisposable, this.pointerEventsDisposable);\r\n this.configure();\r\n }\r\n isCancelled(_event) {\r\n return false;\r\n }\r\n configure() {\r\n this.addDisposables(this._onDragStart, addDisposableListener(this.el, 'dragstart', (event) => {\r\n if (event.defaultPrevented || this.isCancelled(event)) {\r\n event.preventDefault();\r\n return;\r\n }\r\n const iframes = [\r\n ...getElementsByTagName('iframe'),\r\n ...getElementsByTagName('webview'),\r\n ];\r\n this.pointerEventsDisposable.value = {\r\n dispose: () => {\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'auto';\r\n }\r\n },\r\n };\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'none';\r\n }\r\n this.el.classList.add('dv-dragged');\r\n setTimeout(() => this.el.classList.remove('dv-dragged'), 0);\r\n this.dataDisposable.value = this.getData(event);\r\n this._onDragStart.fire(event);\r\n if (event.dataTransfer) {\r\n event.dataTransfer.effectAllowed = 'move';\r\n const hasData = event.dataTransfer.items.length > 0;\r\n if (!hasData) {\r\n /**\r\n * Although this is not used by dockview many third party dnd libraries will check\r\n * dataTransfer.types to determine valid drag events.\r\n *\r\n * For example: in react-dnd if dataTransfer.types is not set then the dragStart event will be cancelled\r\n * through .preventDefault(). Since this is applied globally to all drag events this would break dockviews\r\n * dnd logic. You can see the code at\r\n * https://github.com/react-dnd/react-dnd/blob/main/packages/backend-html5/src/HTML5BackendImpl.ts#L542\r\n */\r\n event.dataTransfer.setData('text/plain', '__dockview_internal_drag_event__');\r\n }\r\n }\r\n }), addDisposableListener(this.el, 'dragend', () => {\r\n this.pointerEventsDisposable.dispose();\r\n this.dataDisposable.dispose();\r\n }));\r\n }\r\n}\r\n//# sourceMappingURL=abstractDragHandler.js.map","import { addDisposableListener, Emitter } from '../../../events';\r\nimport { CompositeDisposable } from '../../../lifecycle';\r\nimport { getPanelData, LocalSelectionTransfer, PanelTransfer, } from '../../../dnd/dataTransfer';\r\nimport { toggleClass } from '../../../dom';\r\nimport { DockviewDropTargets } from '../../types';\r\nimport { Droptarget } from '../../../dnd/droptarget';\r\nimport { DragHandler } from '../../../dnd/abstractDragHandler';\r\nclass TabDragHandler extends DragHandler {\r\n constructor(element, accessor, group, panel) {\r\n super(element);\r\n this.accessor = accessor;\r\n this.group = group;\r\n this.panel = panel;\r\n this.panelTransfer = LocalSelectionTransfer.getInstance();\r\n }\r\n getData(event) {\r\n this.panelTransfer.setData([new PanelTransfer(this.accessor.id, this.group.id, this.panel.id)], PanelTransfer.prototype);\r\n return {\r\n dispose: () => {\r\n this.panelTransfer.clearData(PanelTransfer.prototype);\r\n },\r\n };\r\n }\r\n}\r\nexport class Tab extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor(panel, accessor, group) {\r\n super();\r\n this.panel = panel;\r\n this.accessor = accessor;\r\n this.group = group;\r\n this.content = undefined;\r\n this._onChanged = new Emitter();\r\n this.onChanged = this._onChanged.event;\r\n this._onDropped = new Emitter();\r\n this.onDrop = this._onDropped.event;\r\n this._onDragStart = new Emitter();\r\n this.onDragStart = this._onDragStart.event;\r\n this._element = document.createElement('div');\r\n this._element.className = 'tab';\r\n this._element.tabIndex = 0;\r\n this._element.draggable = true;\r\n toggleClass(this.element, 'inactive-tab', true);\r\n const dragHandler = new TabDragHandler(this._element, this.accessor, this.group, this.panel);\r\n this.droptarget = new Droptarget(this._element, {\r\n acceptedTargetZones: ['center'],\r\n canDisplayOverlay: (event, position) => {\r\n if (this.group.locked) {\r\n return false;\r\n }\r\n const data = getPanelData();\r\n if (data && this.accessor.id === data.viewId) {\r\n if (data.panelId === null &&\r\n data.groupId === this.group.id) {\r\n // don't allow group move to drop on self\r\n return false;\r\n }\r\n return this.panel.id !== data.panelId;\r\n }\r\n return this.group.model.canDisplayOverlay(event, position, DockviewDropTargets.Tab);\r\n },\r\n });\r\n this.addDisposables(this._onChanged, this._onDropped, this._onDragStart, dragHandler.onDragStart((event) => {\r\n this._onDragStart.fire(event);\r\n }), dragHandler, addDisposableListener(this._element, 'mousedown', (event) => {\r\n if (event.defaultPrevented) {\r\n return;\r\n }\r\n this._onChanged.fire(event);\r\n }), this.droptarget.onDrop((event) => {\r\n this._onDropped.fire(event);\r\n }), this.droptarget);\r\n }\r\n setActive(isActive) {\r\n toggleClass(this.element, 'active-tab', isActive);\r\n toggleClass(this.element, 'inactive-tab', !isActive);\r\n }\r\n setContent(part) {\r\n if (this.content) {\r\n this._element.removeChild(this.content.element);\r\n }\r\n this.content = part;\r\n this._element.appendChild(this.content.element);\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=tab.js.map","import { quasiPreventDefault } from '../dom';\r\nimport { addDisposableListener } from '../events';\r\nimport { DragHandler } from './abstractDragHandler';\r\nimport { LocalSelectionTransfer, PanelTransfer } from './dataTransfer';\r\nimport { addGhostImage } from './ghost';\r\nexport class GroupDragHandler extends DragHandler {\r\n constructor(element, accessor, group) {\r\n super(element);\r\n this.accessor = accessor;\r\n this.group = group;\r\n this.panelTransfer = LocalSelectionTransfer.getInstance();\r\n this.addDisposables(addDisposableListener(element, 'mousedown', (e) => {\r\n if (e.shiftKey) {\r\n /**\r\n * You cannot call e.preventDefault() because that will prevent drag events from firing\r\n * but we also need to stop any group overlay drag events from occuring\r\n * Use a custom event marker that can be checked by the overlay drag events\r\n */\r\n quasiPreventDefault(e);\r\n }\r\n }, true));\r\n }\r\n isCancelled(_event) {\r\n if (this.group.api.isFloating && !_event.shiftKey) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n getData(dragEvent) {\r\n const dataTransfer = dragEvent.dataTransfer;\r\n this.panelTransfer.setData([new PanelTransfer(this.accessor.id, this.group.id, null)], PanelTransfer.prototype);\r\n const style = window.getComputedStyle(this.el);\r\n const bgColor = style.getPropertyValue('--dv-activegroup-visiblepanel-tab-background-color');\r\n const color = style.getPropertyValue('--dv-activegroup-visiblepanel-tab-color');\r\n if (dataTransfer) {\r\n const ghostElement = document.createElement('div');\r\n ghostElement.style.backgroundColor = bgColor;\r\n ghostElement.style.color = color;\r\n ghostElement.style.padding = '2px 8px';\r\n ghostElement.style.height = '24px';\r\n ghostElement.style.fontSize = '11px';\r\n ghostElement.style.lineHeight = '20px';\r\n ghostElement.style.borderRadius = '12px';\r\n ghostElement.style.position = 'absolute';\r\n ghostElement.textContent = `Multiple Panels (${this.group.size})`;\r\n addGhostImage(dataTransfer, ghostElement);\r\n }\r\n return {\r\n dispose: () => {\r\n this.panelTransfer.clearData(PanelTransfer.prototype);\r\n },\r\n };\r\n }\r\n}\r\n//# sourceMappingURL=groupDragHandler.js.map","import { addClasses, removeClasses } from '../dom';\r\nexport function addGhostImage(dataTransfer, ghostElement) {\r\n // class dockview provides to force ghost image to be drawn on a different layer and prevent weird rendering issues\r\n addClasses(ghostElement, 'dv-dragged');\r\n document.body.appendChild(ghostElement);\r\n dataTransfer.setDragImage(ghostElement, 0, 0);\r\n setTimeout(() => {\r\n removeClasses(ghostElement, 'dv-dragged');\r\n ghostElement.remove();\r\n }, 0);\r\n}\r\n//# sourceMappingURL=ghost.js.map","import { last } from '../../../array';\r\nimport { getPanelData } from '../../../dnd/dataTransfer';\r\nimport { Droptarget } from '../../../dnd/droptarget';\r\nimport { GroupDragHandler } from '../../../dnd/groupDragHandler';\r\nimport { addDisposableListener, Emitter } from '../../../events';\r\nimport { CompositeDisposable } from '../../../lifecycle';\r\nimport { DockviewDropTargets } from '../../types';\r\nexport class VoidContainer extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor(accessor, group) {\r\n super();\r\n this.accessor = accessor;\r\n this.group = group;\r\n this._onDrop = new Emitter();\r\n this.onDrop = this._onDrop.event;\r\n this._onDragStart = new Emitter();\r\n this.onDragStart = this._onDragStart.event;\r\n this._element = document.createElement('div');\r\n this._element.className = 'void-container';\r\n this._element.tabIndex = 0;\r\n this._element.draggable = true;\r\n this.addDisposables(this._onDrop, this._onDragStart, addDisposableListener(this._element, 'click', () => {\r\n this.accessor.doSetGroupActive(this.group);\r\n }));\r\n const handler = new GroupDragHandler(this._element, accessor, group);\r\n this.voidDropTarget = new Droptarget(this._element, {\r\n acceptedTargetZones: ['center'],\r\n canDisplayOverlay: (event, position) => {\r\n var _a;\r\n const data = getPanelData();\r\n if (data && this.accessor.id === data.viewId) {\r\n if (data.panelId === null &&\r\n data.groupId === this.group.id) {\r\n // don't allow group move to drop on self\r\n return false;\r\n }\r\n // don't show the overlay if the tab being dragged is the last panel of this group\r\n return ((_a = last(this.group.panels)) === null || _a === void 0 ? void 0 : _a.id) !== data.panelId;\r\n }\r\n return group.model.canDisplayOverlay(event, position, DockviewDropTargets.Panel);\r\n },\r\n });\r\n this.addDisposables(handler, handler.onDragStart((event) => {\r\n this._onDragStart.fire(event);\r\n }), this.voidDropTarget.onDrop((event) => {\r\n this._onDrop.fire(event);\r\n }), this.voidDropTarget);\r\n }\r\n}\r\n//# sourceMappingURL=voidContainer.js.map","import { CompositeDisposable, } from '../../../lifecycle';\r\nimport { addDisposableListener, Emitter } from '../../../events';\r\nimport { Tab } from '../tab/tab';\r\nimport { VoidContainer } from './voidContainer';\r\nimport { toggleClass } from '../../../dom';\r\nexport class TabsContainer extends CompositeDisposable {\r\n get panels() {\r\n return this.tabs.map((_) => _.value.panel.id);\r\n }\r\n get size() {\r\n return this.tabs.length;\r\n }\r\n get hidden() {\r\n return this._hidden;\r\n }\r\n set hidden(value) {\r\n this._hidden = value;\r\n this.element.style.display = value ? 'none' : '';\r\n }\r\n show() {\r\n if (!this.hidden) {\r\n this.element.style.display = '';\r\n }\r\n }\r\n hide() {\r\n this._element.style.display = 'none';\r\n }\r\n setRightActionsElement(element) {\r\n if (this.rightActions === element) {\r\n return;\r\n }\r\n if (this.rightActions) {\r\n this.rightActions.remove();\r\n this.rightActions = undefined;\r\n }\r\n if (element) {\r\n this.rightActionsContainer.appendChild(element);\r\n this.rightActions = element;\r\n }\r\n }\r\n setLeftActionsElement(element) {\r\n if (this.leftActions === element) {\r\n return;\r\n }\r\n if (this.leftActions) {\r\n this.leftActions.remove();\r\n this.leftActions = undefined;\r\n }\r\n if (element) {\r\n this.leftActionsContainer.appendChild(element);\r\n this.leftActions = element;\r\n }\r\n }\r\n get element() {\r\n return this._element;\r\n }\r\n isActive(tab) {\r\n return (this.selectedIndex > -1 &&\r\n this.tabs[this.selectedIndex].value === tab);\r\n }\r\n indexOf(id) {\r\n return this.tabs.findIndex((tab) => tab.value.panel.id === id);\r\n }\r\n constructor(accessor, group) {\r\n super();\r\n this.accessor = accessor;\r\n this.group = group;\r\n this.tabs = [];\r\n this.selectedIndex = -1;\r\n this._hidden = false;\r\n this._onDrop = new Emitter();\r\n this.onDrop = this._onDrop.event;\r\n this._onTabDragStart = new Emitter();\r\n this.onTabDragStart = this._onTabDragStart.event;\r\n this._onGroupDragStart = new Emitter();\r\n this.onGroupDragStart = this._onGroupDragStart.event;\r\n this.addDisposables(this._onDrop, this._onTabDragStart, this._onGroupDragStart);\r\n this._element = document.createElement('div');\r\n this._element.className = 'tabs-and-actions-container';\r\n toggleClass(this._element, 'dv-full-width-single-tab', this.accessor.options.singleTabMode === 'fullwidth');\r\n this.addDisposables(this.accessor.onDidAddPanel((e) => {\r\n if (e.api.group === this.group) {\r\n toggleClass(this._element, 'dv-single-tab', this.size === 1);\r\n }\r\n }), this.accessor.onDidRemovePanel((e) => {\r\n if (e.api.group === this.group) {\r\n toggleClass(this._element, 'dv-single-tab', this.size === 1);\r\n }\r\n }));\r\n this.rightActionsContainer = document.createElement('div');\r\n this.rightActionsContainer.className = 'right-actions-container';\r\n this.leftActionsContainer = document.createElement('div');\r\n this.leftActionsContainer.className = 'left-actions-container';\r\n this.tabContainer = document.createElement('div');\r\n this.tabContainer.className = 'tabs-container';\r\n this.voidContainer = new VoidContainer(this.accessor, this.group);\r\n this._element.appendChild(this.tabContainer);\r\n this._element.appendChild(this.leftActionsContainer);\r\n this._element.appendChild(this.voidContainer.element);\r\n this._element.appendChild(this.rightActionsContainer);\r\n this.addDisposables(this.voidContainer, this.voidContainer.onDragStart((event) => {\r\n this._onGroupDragStart.fire({\r\n nativeEvent: event,\r\n group: this.group,\r\n });\r\n }), this.voidContainer.onDrop((event) => {\r\n this._onDrop.fire({\r\n event: event.nativeEvent,\r\n index: this.tabs.length,\r\n });\r\n }), addDisposableListener(this.voidContainer.element, 'mousedown', (event) => {\r\n const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;\r\n if (isFloatingGroupsEnabled &&\r\n event.shiftKey &&\r\n !this.group.api.isFloating) {\r\n event.preventDefault();\r\n const { top, left } = this.element.getBoundingClientRect();\r\n const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();\r\n this.accessor.addFloatingGroup(this.group, {\r\n x: left - rootLeft + 20,\r\n y: top - rootTop + 20,\r\n }, { inDragMode: true });\r\n }\r\n }), addDisposableListener(this.tabContainer, 'mousedown', (event) => {\r\n if (event.defaultPrevented) {\r\n return;\r\n }\r\n const isLeftClick = event.button === 0;\r\n if (isLeftClick) {\r\n this.accessor.doSetGroupActive(this.group);\r\n }\r\n }));\r\n }\r\n setActive(_isGroupActive) {\r\n // noop\r\n }\r\n addTab(tab, index = this.tabs.length) {\r\n if (index < 0 || index > this.tabs.length) {\r\n throw new Error('invalid location');\r\n }\r\n this.tabContainer.insertBefore(tab.value.element, this.tabContainer.children[index]);\r\n this.tabs = [\r\n ...this.tabs.slice(0, index),\r\n tab,\r\n ...this.tabs.slice(index),\r\n ];\r\n if (this.selectedIndex < 0) {\r\n this.selectedIndex = index;\r\n }\r\n }\r\n delete(id) {\r\n const index = this.tabs.findIndex((tab) => tab.value.panel.id === id);\r\n const tabToRemove = this.tabs.splice(index, 1)[0];\r\n const { value, disposable } = tabToRemove;\r\n disposable.dispose();\r\n value.dispose();\r\n value.element.remove();\r\n }\r\n setActivePanel(panel) {\r\n this.tabs.forEach((tab) => {\r\n const isActivePanel = panel.id === tab.value.panel.id;\r\n tab.value.setActive(isActivePanel);\r\n });\r\n }\r\n openPanel(panel, index = this.tabs.length) {\r\n var _a;\r\n if (this.tabs.find((tab) => tab.value.panel.id === panel.id)) {\r\n return;\r\n }\r\n const tab = new Tab(panel, this.accessor, this.group);\r\n if (!((_a = panel.view) === null || _a === void 0 ? void 0 : _a.tab)) {\r\n throw new Error('invalid header component');\r\n }\r\n tab.setContent(panel.view.tab);\r\n const disposable = new CompositeDisposable(tab.onDragStart((event) => {\r\n this._onTabDragStart.fire({ nativeEvent: event, panel });\r\n }), tab.onChanged((event) => {\r\n var _a;\r\n const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;\r\n const isFloatingWithOnePanel = this.group.api.isFloating && this.size === 1;\r\n if (isFloatingGroupsEnabled &&\r\n !isFloatingWithOnePanel &&\r\n event.shiftKey) {\r\n event.preventDefault();\r\n const panel = this.accessor.getGroupPanel(tab.panel.id);\r\n const { top, left } = tab.element.getBoundingClientRect();\r\n const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();\r\n this.accessor.addFloatingGroup(panel, {\r\n x: left - rootLeft,\r\n y: top - rootTop,\r\n }, { inDragMode: true });\r\n return;\r\n }\r\n const alreadyFocused = panel.id === ((_a = this.group.model.activePanel) === null || _a === void 0 ? void 0 : _a.id) &&\r\n this.group.model.isContentFocused;\r\n const isLeftClick = event.button === 0;\r\n if (!isLeftClick || event.defaultPrevented) {\r\n return;\r\n }\r\n this.group.model.openPanel(panel, {\r\n skipFocus: alreadyFocused,\r\n });\r\n }), tab.onDrop((event) => {\r\n this._onDrop.fire({\r\n event: event.nativeEvent,\r\n index: this.tabs.findIndex((x) => x.value === tab),\r\n });\r\n }));\r\n const value = { value: tab, disposable };\r\n this.addTab(value, index);\r\n }\r\n closePanel(panel) {\r\n this.delete(panel.id);\r\n }\r\n dispose() {\r\n super.dispose();\r\n for (const { value, disposable } of this.tabs) {\r\n disposable.dispose();\r\n value.dispose();\r\n }\r\n this.tabs = [];\r\n }\r\n}\r\n//# sourceMappingURL=tabsContainer.js.map","import { DockviewApi } from '../api/component.api';\r\nimport { getPanelData } from '../dnd/dataTransfer';\r\nimport { Droptarget } from '../dnd/droptarget';\r\nimport { isAncestor, toggleClass } from '../dom';\r\nimport { addDisposableListener, Emitter } from '../events';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nimport { ContentContainer, } from './components/panel/content';\r\nimport { TabsContainer, } from './components/titlebar/tabsContainer';\r\nimport { DockviewDropTargets } from './types';\r\nexport class DockviewGroupPanelModel extends CompositeDisposable {\r\n get element() {\r\n throw new Error('not supported');\r\n }\r\n get activePanel() {\r\n return this._activePanel;\r\n }\r\n get locked() {\r\n return this._locked;\r\n }\r\n set locked(value) {\r\n this._locked = value;\r\n toggleClass(this.container, 'locked-groupview', value === 'no-drop-target' || value);\r\n }\r\n get isActive() {\r\n return this._isGroupActive;\r\n }\r\n get panels() {\r\n return this._panels;\r\n }\r\n get size() {\r\n return this._panels.length;\r\n }\r\n get isEmpty() {\r\n return this._panels.length === 0;\r\n }\r\n get hasWatermark() {\r\n return !!(this.watermark && this.container.contains(this.watermark.element));\r\n }\r\n get header() {\r\n return this.tabsContainer;\r\n }\r\n get isContentFocused() {\r\n if (!document.activeElement) {\r\n return false;\r\n }\r\n return isAncestor(document.activeElement, this.contentContainer.element);\r\n }\r\n get isFloating() {\r\n return this._isFloating;\r\n }\r\n set isFloating(value) {\r\n this._isFloating = value;\r\n this.dropTarget.setTargetZones(value ? ['center'] : ['top', 'bottom', 'left', 'right', 'center']);\r\n toggleClass(this.container, 'dv-groupview-floating', value);\r\n this.groupPanel.api._onDidFloatingStateChange.fire({\r\n isFloating: this.isFloating,\r\n });\r\n }\r\n constructor(container, accessor, id, options, groupPanel) {\r\n super();\r\n this.container = container;\r\n this.accessor = accessor;\r\n this.id = id;\r\n this.options = options;\r\n this.groupPanel = groupPanel;\r\n this._isGroupActive = false;\r\n this._locked = false;\r\n this._isFloating = false;\r\n this.mostRecentlyUsed = [];\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._width = 0;\r\n this._height = 0;\r\n this._panels = [];\r\n this._onMove = new Emitter();\r\n this.onMove = this._onMove.event;\r\n this._onDidDrop = new Emitter();\r\n this.onDidDrop = this._onDidDrop.event;\r\n this._onTabDragStart = new Emitter();\r\n this.onTabDragStart = this._onTabDragStart.event;\r\n this._onGroupDragStart = new Emitter();\r\n this.onGroupDragStart = this._onGroupDragStart.event;\r\n this._onDidAddPanel = new Emitter();\r\n this.onDidAddPanel = this._onDidAddPanel.event;\r\n this._onDidRemovePanel = new Emitter();\r\n this.onDidRemovePanel = this._onDidRemovePanel.event;\r\n this._onDidActivePanelChange = new Emitter();\r\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\r\n toggleClass(this.container, 'groupview', true);\r\n this.tabsContainer = new TabsContainer(this.accessor, this.groupPanel);\r\n this.contentContainer = new ContentContainer();\r\n this.dropTarget = new Droptarget(this.contentContainer.element, {\r\n acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],\r\n canDisplayOverlay: (event, position) => {\r\n if (this.locked === 'no-drop-target' ||\r\n (this.locked && position === 'center')) {\r\n return false;\r\n }\r\n const data = getPanelData();\r\n if (!data && event.shiftKey && !this.isFloating) {\r\n return false;\r\n }\r\n if (data && data.viewId === this.accessor.id) {\r\n if (data.groupId === this.id) {\r\n if (position === 'center') {\r\n // don't allow to drop on self for center position\r\n return false;\r\n }\r\n if (data.panelId === null) {\r\n // don't allow group move to drop anywhere on self\r\n return false;\r\n }\r\n }\r\n const groupHasOnePanelAndIsActiveDragElement = this._panels.length === 1 && data.groupId === this.id;\r\n return !groupHasOnePanelAndIsActiveDragElement;\r\n }\r\n return this.canDisplayOverlay(event, position, DockviewDropTargets.Panel);\r\n },\r\n });\r\n container.append(this.tabsContainer.element, this.contentContainer.element);\r\n this.header.hidden = !!options.hideHeader;\r\n this.locked = options.locked || false;\r\n this.addDisposables(this._onTabDragStart, this._onGroupDragStart, this.tabsContainer.onTabDragStart((event) => {\r\n this._onTabDragStart.fire(event);\r\n }), this.tabsContainer.onGroupDragStart((event) => {\r\n this._onGroupDragStart.fire(event);\r\n }), this.tabsContainer.onDrop((event) => {\r\n this.handleDropEvent(event.event, 'center', event.index);\r\n }), this.contentContainer.onDidFocus(() => {\r\n this.accessor.doSetGroupActive(this.groupPanel, true);\r\n }), this.contentContainer.onDidBlur(() => {\r\n // noop\r\n }), this.dropTarget.onDrop((event) => {\r\n this.handleDropEvent(event.nativeEvent, event.position);\r\n }), this._onMove, this._onDidChange, this._onDidDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange);\r\n }\r\n initialize() {\r\n var _a, _b;\r\n if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.panels) {\r\n this.options.panels.forEach((panel) => {\r\n this.doAddPanel(panel);\r\n });\r\n }\r\n if ((_b = this.options) === null || _b === void 0 ? void 0 : _b.activePanel) {\r\n this.openPanel(this.options.activePanel);\r\n }\r\n // must be run after the constructor otherwise this.parent may not be\r\n // correctly initialized\r\n this.setActive(this.isActive, true, true);\r\n this.updateContainer();\r\n if (this.accessor.options.createRightHeaderActionsElement) {\r\n this._rightHeaderActions =\r\n this.accessor.options.createRightHeaderActionsElement(this.groupPanel);\r\n this.addDisposables(this._rightHeaderActions);\r\n this._rightHeaderActions.init({\r\n containerApi: new DockviewApi(this.accessor),\r\n api: this.groupPanel.api,\r\n });\r\n this.tabsContainer.setRightActionsElement(this._rightHeaderActions.element);\r\n }\r\n if (this.accessor.options.createLeftHeaderActionsElement) {\r\n this._leftHeaderActions =\r\n this.accessor.options.createLeftHeaderActionsElement(this.groupPanel);\r\n this.addDisposables(this._leftHeaderActions);\r\n this._leftHeaderActions.init({\r\n containerApi: new DockviewApi(this.accessor),\r\n api: this.groupPanel.api,\r\n });\r\n this.tabsContainer.setLeftActionsElement(this._leftHeaderActions.element);\r\n }\r\n }\r\n indexOf(panel) {\r\n return this.tabsContainer.indexOf(panel.id);\r\n }\r\n toJSON() {\r\n var _a;\r\n const result = {\r\n views: this.tabsContainer.panels,\r\n activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,\r\n id: this.id,\r\n };\r\n if (this.locked !== false) {\r\n result.locked = this.locked;\r\n }\r\n if (this.header.hidden) {\r\n result.hideHeader = true;\r\n }\r\n return result;\r\n }\r\n moveToNext(options) {\r\n if (!options) {\r\n options = {};\r\n }\r\n if (!options.panel) {\r\n options.panel = this.activePanel;\r\n }\r\n const index = options.panel ? this.panels.indexOf(options.panel) : -1;\r\n let normalizedIndex;\r\n if (index < this.panels.length - 1) {\r\n normalizedIndex = index + 1;\r\n }\r\n else if (!options.suppressRoll) {\r\n normalizedIndex = 0;\r\n }\r\n else {\r\n return;\r\n }\r\n this.openPanel(this.panels[normalizedIndex]);\r\n }\r\n moveToPrevious(options) {\r\n if (!options) {\r\n options = {};\r\n }\r\n if (!options.panel) {\r\n options.panel = this.activePanel;\r\n }\r\n if (!options.panel) {\r\n return;\r\n }\r\n const index = this.panels.indexOf(options.panel);\r\n let normalizedIndex;\r\n if (index > 0) {\r\n normalizedIndex = index - 1;\r\n }\r\n else if (!options.suppressRoll) {\r\n normalizedIndex = this.panels.length - 1;\r\n }\r\n else {\r\n return;\r\n }\r\n this.openPanel(this.panels[normalizedIndex]);\r\n }\r\n containsPanel(panel) {\r\n return this.panels.includes(panel);\r\n }\r\n init(_params) {\r\n //noop\r\n }\r\n update(_params) {\r\n //noop\r\n }\r\n focus() {\r\n var _a, _b;\r\n (_b = (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n }\r\n openPanel(panel, options = {}) {\r\n if (typeof options.index !== 'number' ||\r\n options.index > this.panels.length) {\r\n options.index = this.panels.length;\r\n }\r\n const skipSetPanelActive = !!options.skipSetPanelActive;\r\n const skipSetGroupActive = !!options.skipSetGroupActive;\r\n // ensure the group is updated before we fire any events\r\n panel.updateParentGroup(this.groupPanel, true);\r\n if (this._activePanel === panel) {\r\n if (!skipSetGroupActive) {\r\n this.accessor.doSetGroupActive(this.groupPanel);\r\n }\r\n return;\r\n }\r\n this.doAddPanel(panel, options.index, skipSetPanelActive);\r\n if (!skipSetPanelActive) {\r\n this.doSetActivePanel(panel);\r\n }\r\n if (!skipSetGroupActive) {\r\n this.accessor.doSetGroupActive(this.groupPanel, !!options.skipFocus);\r\n }\r\n this.updateContainer();\r\n }\r\n removePanel(groupItemOrId) {\r\n const id = typeof groupItemOrId === 'string'\r\n ? groupItemOrId\r\n : groupItemOrId.id;\r\n const panelToRemove = this._panels.find((panel) => panel.id === id);\r\n if (!panelToRemove) {\r\n throw new Error('invalid operation');\r\n }\r\n return this._removePanel(panelToRemove);\r\n }\r\n closeAllPanels() {\r\n if (this.panels.length > 0) {\r\n // take a copy since we will be edting the array as we iterate through\r\n const arrPanelCpy = [...this.panels];\r\n for (const panel of arrPanelCpy) {\r\n this.doClose(panel);\r\n }\r\n }\r\n else {\r\n this.accessor.removeGroup(this.groupPanel);\r\n }\r\n }\r\n closePanel(panel) {\r\n this.doClose(panel);\r\n }\r\n doClose(panel) {\r\n this.accessor.removePanel(panel);\r\n }\r\n isPanelActive(panel) {\r\n return this._activePanel === panel;\r\n }\r\n updateActions(element) {\r\n this.tabsContainer.setRightActionsElement(element);\r\n }\r\n setActive(isGroupActive, skipFocus = false, force = false) {\r\n var _a, _b, _c, _d;\r\n if (!force && this.isActive === isGroupActive) {\r\n if (!skipFocus) {\r\n (_b = (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n }\r\n return;\r\n }\r\n this._isGroupActive = isGroupActive;\r\n toggleClass(this.container, 'active-group', isGroupActive);\r\n toggleClass(this.container, 'inactive-group', !isGroupActive);\r\n this.tabsContainer.setActive(this.isActive);\r\n if (!this._activePanel && this.panels.length > 0) {\r\n this.doSetActivePanel(this.panels[0]);\r\n }\r\n this.updateContainer();\r\n if (isGroupActive) {\r\n if (!skipFocus) {\r\n (_d = (_c = this._activePanel) === null || _c === void 0 ? void 0 : _c.focus) === null || _d === void 0 ? void 0 : _d.call(_c);\r\n }\r\n }\r\n }\r\n layout(width, height) {\r\n var _a;\r\n this._width = width;\r\n this._height = height;\r\n this.contentContainer.layout(this._width, this._height);\r\n if ((_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.layout) {\r\n this._activePanel.layout(this._width, this._height);\r\n }\r\n }\r\n _removePanel(panel) {\r\n const isActivePanel = this._activePanel === panel;\r\n this.doRemovePanel(panel);\r\n if (isActivePanel && this.panels.length > 0) {\r\n const nextPanel = this.mostRecentlyUsed[0];\r\n this.openPanel(nextPanel);\r\n }\r\n if (this._activePanel && this.panels.length === 0) {\r\n this.doSetActivePanel(undefined);\r\n }\r\n this.updateContainer();\r\n return panel;\r\n }\r\n doRemovePanel(panel) {\r\n const index = this.panels.indexOf(panel);\r\n if (this._activePanel === panel) {\r\n this.contentContainer.closePanel();\r\n }\r\n this.tabsContainer.delete(panel.id);\r\n this._panels.splice(index, 1);\r\n if (this.mostRecentlyUsed.includes(panel)) {\r\n this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);\r\n }\r\n this._onDidRemovePanel.fire({ panel });\r\n }\r\n doAddPanel(panel, index = this.panels.length, skipSetActive = false) {\r\n const existingPanel = this._panels.indexOf(panel);\r\n const hasExistingPanel = existingPanel > -1;\r\n this.tabsContainer.openPanel(panel, index);\r\n if (!skipSetActive) {\r\n this.contentContainer.openPanel(panel);\r\n }\r\n this.tabsContainer.show();\r\n this.contentContainer.show();\r\n if (hasExistingPanel) {\r\n // TODO - need to ensure ordering hasn't changed and if it has need to re-order this.panels\r\n return;\r\n }\r\n this.updateMru(panel);\r\n this.panels.splice(index, 0, panel);\r\n this._onDidAddPanel.fire({ panel });\r\n }\r\n doSetActivePanel(panel) {\r\n this._activePanel = panel;\r\n if (panel) {\r\n this.tabsContainer.setActivePanel(panel);\r\n panel.layout(this._width, this._height);\r\n this.updateMru(panel);\r\n this._onDidActivePanelChange.fire({ panel });\r\n }\r\n }\r\n updateMru(panel) {\r\n if (this.mostRecentlyUsed.includes(panel)) {\r\n this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);\r\n }\r\n this.mostRecentlyUsed = [panel, ...this.mostRecentlyUsed];\r\n }\r\n updateContainer() {\r\n var _a, _b;\r\n toggleClass(this.container, 'empty', this.isEmpty);\r\n this.panels.forEach((panel) => panel.updateParentGroup(this.groupPanel, this.isActive));\r\n if (this.isEmpty && !this.watermark) {\r\n const watermark = this.accessor.createWatermarkComponent();\r\n watermark.init({\r\n containerApi: new DockviewApi(this.accessor),\r\n group: this.groupPanel,\r\n });\r\n this.watermark = watermark;\r\n addDisposableListener(this.watermark.element, 'click', () => {\r\n if (!this.isActive) {\r\n this.accessor.doSetGroupActive(this.groupPanel);\r\n }\r\n });\r\n this.tabsContainer.hide();\r\n this.contentContainer.element.appendChild(this.watermark.element);\r\n this.watermark.updateParentGroup(this.groupPanel, true);\r\n }\r\n if (!this.isEmpty && this.watermark) {\r\n this.watermark.element.remove();\r\n (_b = (_a = this.watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n this.watermark = undefined;\r\n this.tabsContainer.show();\r\n }\r\n }\r\n canDisplayOverlay(event, position, target) {\r\n // custom overlay handler\r\n if (this.accessor.options.showDndOverlay) {\r\n return this.accessor.options.showDndOverlay({\r\n nativeEvent: event,\r\n target,\r\n group: this.accessor.getPanel(this.id),\r\n position,\r\n getData: getPanelData,\r\n });\r\n }\r\n return false;\r\n }\r\n handleDropEvent(event, position, index) {\r\n if (this.locked === 'no-drop-target') {\r\n return;\r\n }\r\n const data = getPanelData();\r\n if (data && data.viewId === this.accessor.id) {\r\n if (data.panelId === null) {\r\n // this is a group move dnd event\r\n const { groupId } = data;\r\n this._onMove.fire({\r\n target: position,\r\n groupId: groupId,\r\n index,\r\n });\r\n return;\r\n }\r\n const fromSameGroup = this.tabsContainer.indexOf(data.panelId) !== -1;\r\n if (fromSameGroup && this.tabsContainer.size === 1) {\r\n return;\r\n }\r\n const { groupId, panelId } = data;\r\n const isSameGroup = this.id === groupId;\r\n if (isSameGroup && !position) {\r\n const oldIndex = this.tabsContainer.indexOf(panelId);\r\n if (oldIndex === index) {\r\n return;\r\n }\r\n }\r\n this._onMove.fire({\r\n target: position,\r\n groupId: data.groupId,\r\n itemId: data.panelId,\r\n index,\r\n });\r\n }\r\n else {\r\n this._onDidDrop.fire({\r\n nativeEvent: event,\r\n position,\r\n index,\r\n getData: () => getPanelData(),\r\n });\r\n }\r\n }\r\n dispose() {\r\n var _a, _b, _c;\r\n super.dispose();\r\n (_a = this.watermark) === null || _a === void 0 ? void 0 : _a.element.remove();\r\n (_c = (_b = this.watermark) === null || _b === void 0 ? void 0 : _b.dispose) === null || _c === void 0 ? void 0 : _c.call(_b);\r\n for (const panel of this.panels) {\r\n panel.dispose();\r\n }\r\n this.dropTarget.dispose();\r\n this.tabsContainer.dispose();\r\n this.contentContainer.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=dockviewGroupPanelModel.js.map","import { watchElementResize } from './dom';\r\nimport { CompositeDisposable } from './lifecycle';\r\nexport class Resizable extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor(parentElement) {\r\n super();\r\n if (parentElement) {\r\n this._element = parentElement;\r\n }\r\n else {\r\n this._element = document.createElement('div');\r\n this._element.style.height = '100%';\r\n this._element.style.width = '100%';\r\n this._element.className = 'dv-resizable-container';\r\n }\r\n this.addDisposables(watchElementResize(this._element, (entry) => {\r\n if (this.isDisposed) {\r\n /**\r\n * resize is delayed through requestAnimationFrame so there is a small chance\r\n * the component has already been disposed of\r\n */\r\n return;\r\n }\r\n const { width, height } = entry.contentRect;\r\n this.layout(width, height);\r\n }));\r\n }\r\n}\r\n//# sourceMappingURL=resizable.js.map","import { Emitter, Event, TickDelayedEvent } from '../events';\r\nimport { getGridLocation, Gridview } from './gridview';\r\nimport { sequentialNumberGenerator } from '../math';\r\nimport { Sizing } from '../splitview/splitview';\r\nimport { Resizable } from '../resizable';\r\nconst nextLayoutId = sequentialNumberGenerator();\r\nexport function toTarget(direction) {\r\n switch (direction) {\r\n case 'left':\r\n return 'left';\r\n case 'right':\r\n return 'right';\r\n case 'above':\r\n return 'top';\r\n case 'below':\r\n return 'bottom';\r\n case 'within':\r\n default:\r\n return 'center';\r\n }\r\n}\r\nexport class BaseGrid extends Resizable {\r\n get id() {\r\n return this._id;\r\n }\r\n get size() {\r\n return this._groups.size;\r\n }\r\n get groups() {\r\n return Array.from(this._groups.values()).map((_) => _.value);\r\n }\r\n get width() {\r\n return this.gridview.width;\r\n }\r\n get height() {\r\n return this.gridview.height;\r\n }\r\n get minimumHeight() {\r\n return this.gridview.minimumHeight;\r\n }\r\n get maximumHeight() {\r\n return this.gridview.maximumHeight;\r\n }\r\n get minimumWidth() {\r\n return this.gridview.minimumWidth;\r\n }\r\n get maximumWidth() {\r\n return this.gridview.maximumWidth;\r\n }\r\n get activeGroup() {\r\n return this._activeGroup;\r\n }\r\n constructor(options) {\r\n super(options.parentElement);\r\n this._id = nextLayoutId.next();\r\n this._groups = new Map();\r\n this._onDidLayoutChange = new Emitter();\r\n this.onDidLayoutChange = this._onDidLayoutChange.event;\r\n this._onDidRemoveGroup = new Emitter();\r\n this.onDidRemoveGroup = this._onDidRemoveGroup.event;\r\n this._onDidAddGroup = new Emitter();\r\n this.onDidAddGroup = this._onDidAddGroup.event;\r\n this._onDidActiveGroupChange = new Emitter();\r\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\r\n this._bufferOnDidLayoutChange = new TickDelayedEvent();\r\n this.gridview = new Gridview(!!options.proportionalLayout, options.styles, options.orientation);\r\n this.element.appendChild(this.gridview.element);\r\n this.layout(0, 0, true); // set some elements height/widths\r\n this.addDisposables(this.gridview.onDidChange(() => {\r\n this._bufferOnDidLayoutChange.fire();\r\n }), Event.any(this.onDidAddGroup, this.onDidRemoveGroup, this.onDidActiveGroupChange)(() => {\r\n this._bufferOnDidLayoutChange.fire();\r\n }), this._bufferOnDidLayoutChange.onEvent(() => {\r\n this._onDidLayoutChange.fire();\r\n }), this._bufferOnDidLayoutChange);\r\n }\r\n setVisible(panel, visible) {\r\n this.gridview.setViewVisible(getGridLocation(panel.element), visible);\r\n this._onDidLayoutChange.fire();\r\n }\r\n isVisible(panel) {\r\n return this.gridview.isViewVisible(getGridLocation(panel.element));\r\n }\r\n doAddGroup(group, location = [0], size) {\r\n this.gridview.addView(group, size !== null && size !== void 0 ? size : Sizing.Distribute, location);\r\n this._onDidAddGroup.fire(group);\r\n this.doSetGroupActive(group);\r\n }\r\n doRemoveGroup(group, options) {\r\n if (!this._groups.has(group.id)) {\r\n throw new Error('invalid operation');\r\n }\r\n const item = this._groups.get(group.id);\r\n const view = this.gridview.remove(group, Sizing.Distribute);\r\n if (item && !(options === null || options === void 0 ? void 0 : options.skipDispose)) {\r\n item.disposable.dispose();\r\n item.value.dispose();\r\n this._groups.delete(group.id);\r\n }\r\n this._onDidRemoveGroup.fire(group);\r\n if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {\r\n const groups = Array.from(this._groups.values());\r\n this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);\r\n }\r\n return view;\r\n }\r\n getPanel(id) {\r\n var _a;\r\n return (_a = this._groups.get(id)) === null || _a === void 0 ? void 0 : _a.value;\r\n }\r\n doSetGroupActive(group, skipFocus) {\r\n var _a, _b, _c;\r\n if (this._activeGroup === group) {\r\n return;\r\n }\r\n if (this._activeGroup) {\r\n this._activeGroup.setActive(false);\r\n if (!skipFocus) {\r\n (_b = (_a = this._activeGroup).focus) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n }\r\n }\r\n if (group) {\r\n group.setActive(true);\r\n if (!skipFocus) {\r\n (_c = group.focus) === null || _c === void 0 ? void 0 : _c.call(group);\r\n }\r\n }\r\n this._activeGroup = group;\r\n this._onDidActiveGroupChange.fire(group);\r\n }\r\n removeGroup(group) {\r\n this.doRemoveGroup(group);\r\n }\r\n moveToNext(options) {\r\n var _a;\r\n if (!options) {\r\n options = {};\r\n }\r\n if (!options.group) {\r\n if (!this.activeGroup) {\r\n return;\r\n }\r\n options.group = this.activeGroup;\r\n }\r\n const location = getGridLocation(options.group.element);\r\n const next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;\r\n this.doSetGroupActive(next);\r\n }\r\n moveToPrevious(options) {\r\n var _a;\r\n if (!options) {\r\n options = {};\r\n }\r\n if (!options.group) {\r\n if (!this.activeGroup) {\r\n return;\r\n }\r\n options.group = this.activeGroup;\r\n }\r\n const location = getGridLocation(options.group.element);\r\n const next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;\r\n this.doSetGroupActive(next);\r\n }\r\n layout(width, height, forceResize) {\r\n const different = forceResize || width !== this.width || height !== this.height;\r\n if (!different) {\r\n return;\r\n }\r\n this.gridview.element.style.height = `${height}px`;\r\n this.gridview.element.style.width = `${width}px`;\r\n this.gridview.layout(width, height);\r\n }\r\n dispose() {\r\n this._onDidActiveGroupChange.dispose();\r\n this._onDidAddGroup.dispose();\r\n this._onDidRemoveGroup.dispose();\r\n this._onDidLayoutChange.dispose();\r\n for (const group of this.groups) {\r\n group.dispose();\r\n }\r\n this.gridview.dispose();\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=baseComponentGridview.js.map","import { Emitter } from '../events';\r\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\r\n/**\r\n * A core api implementation that should be used across all panel-like objects\r\n */\r\nexport class PanelApiImpl extends CompositeDisposable {\r\n //\r\n get isFocused() {\r\n return this._isFocused;\r\n }\r\n get isActive() {\r\n return this._isActive;\r\n }\r\n get isVisible() {\r\n return this._isVisible;\r\n }\r\n get width() {\r\n return this._width;\r\n }\r\n get height() {\r\n return this._height;\r\n }\r\n constructor(id) {\r\n super();\r\n this.id = id;\r\n this._isFocused = false;\r\n this._isActive = false;\r\n this._isVisible = true;\r\n this._width = 0;\r\n this._height = 0;\r\n this.panelUpdatesDisposable = new MutableDisposable();\r\n this._onDidDimensionChange = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidDimensionsChange = this._onDidDimensionChange.event;\r\n //\r\n this._onDidChangeFocus = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidFocusChange = this._onDidChangeFocus.event;\r\n //\r\n this._onFocusEvent = new Emitter();\r\n this.onFocusEvent = this._onFocusEvent.event;\r\n //\r\n this._onDidVisibilityChange = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidVisibilityChange = this._onDidVisibilityChange.event;\r\n //\r\n this._onVisibilityChange = new Emitter();\r\n this.onVisibilityChange = this._onVisibilityChange.event;\r\n //\r\n this._onDidActiveChange = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidActiveChange = this._onDidActiveChange.event;\r\n //\r\n this._onActiveChange = new Emitter();\r\n this.onActiveChange = this._onActiveChange.event;\r\n //\r\n this._onUpdateParameters = new Emitter();\r\n this.onUpdateParameters = this._onUpdateParameters.event;\r\n this.addDisposables(this.onDidFocusChange((event) => {\r\n this._isFocused = event.isFocused;\r\n }), this.onDidActiveChange((event) => {\r\n this._isActive = event.isActive;\r\n }), this.onDidVisibilityChange((event) => {\r\n this._isVisible = event.isVisible;\r\n }), this.onDidDimensionsChange((event) => {\r\n this._width = event.width;\r\n this._height = event.height;\r\n }), this.panelUpdatesDisposable, this._onDidDimensionChange, this._onDidChangeFocus, this._onDidVisibilityChange, this._onDidActiveChange, this._onFocusEvent, this._onActiveChange, this._onVisibilityChange, this._onUpdateParameters);\r\n }\r\n initialize(panel) {\r\n this.panelUpdatesDisposable.value = this._onUpdateParameters.event((parameters) => {\r\n panel.update({\r\n params: parameters,\r\n });\r\n });\r\n }\r\n setVisible(isVisible) {\r\n this._onVisibilityChange.fire({ isVisible });\r\n }\r\n setActive() {\r\n this._onActiveChange.fire();\r\n }\r\n updateParameters(parameters) {\r\n this._onUpdateParameters.fire(parameters);\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=panelApi.js.map","import { Emitter } from '../events';\r\nimport { PanelApiImpl } from './panelApi';\r\nexport class SplitviewPanelApiImpl extends PanelApiImpl {\r\n //\r\n constructor(id) {\r\n super(id);\r\n this._onDidConstraintsChangeInternal = new Emitter();\r\n this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;\r\n //\r\n this._onDidConstraintsChange = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidConstraintsChange = this._onDidConstraintsChange.event;\r\n //\r\n this._onDidSizeChange = new Emitter();\r\n this.onDidSizeChange = this._onDidSizeChange.event;\r\n this.addDisposables(this._onDidConstraintsChangeInternal, this._onDidConstraintsChange, this._onDidSizeChange);\r\n }\r\n setConstraints(value) {\r\n this._onDidConstraintsChangeInternal.fire(value);\r\n }\r\n setSize(event) {\r\n this._onDidSizeChange.fire(event);\r\n }\r\n}\r\n//# sourceMappingURL=splitviewPanelApi.js.map","import { Emitter } from '../events';\r\nimport { SplitviewPanelApiImpl } from './splitviewPanelApi';\r\nexport class PaneviewPanelApiImpl extends SplitviewPanelApiImpl {\r\n set pane(pane) {\r\n this._pane = pane;\r\n }\r\n constructor(id) {\r\n super(id);\r\n this._onDidExpansionChange = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidExpansionChange = this._onDidExpansionChange.event;\r\n this._onMouseEnter = new Emitter({});\r\n this.onMouseEnter = this._onMouseEnter.event;\r\n this._onMouseLeave = new Emitter({});\r\n this.onMouseLeave = this._onMouseLeave.event;\r\n this.addDisposables(this._onDidExpansionChange, this._onMouseEnter, this._onMouseLeave);\r\n }\r\n setExpanded(isExpanded) {\r\n var _a;\r\n (_a = this._pane) === null || _a === void 0 ? void 0 : _a.setExpanded(isExpanded);\r\n }\r\n get isExpanded() {\r\n var _a;\r\n return !!((_a = this._pane) === null || _a === void 0 ? void 0 : _a.isExpanded());\r\n }\r\n}\r\n//# sourceMappingURL=paneviewPanelApi.js.map","import { trackFocus } from '../dom';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nexport class BasePanelView extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n get width() {\r\n return this._width;\r\n }\r\n get height() {\r\n return this._height;\r\n }\r\n get params() {\r\n var _a;\r\n return (_a = this._params) === null || _a === void 0 ? void 0 : _a.params;\r\n }\r\n constructor(id, component, api) {\r\n super();\r\n this.id = id;\r\n this.component = component;\r\n this.api = api;\r\n this._height = 0;\r\n this._width = 0;\r\n this._element = document.createElement('div');\r\n this._element.tabIndex = -1;\r\n this._element.style.outline = 'none';\r\n this._element.style.height = '100%';\r\n this._element.style.width = '100%';\r\n this._element.style.overflow = 'hidden';\r\n const focusTracker = trackFocus(this._element);\r\n this.addDisposables(this.api, focusTracker.onDidFocus(() => {\r\n this.api._onDidChangeFocus.fire({ isFocused: true });\r\n }), focusTracker.onDidBlur(() => {\r\n this.api._onDidChangeFocus.fire({ isFocused: false });\r\n }), focusTracker);\r\n }\r\n focus() {\r\n this.api._onFocusEvent.fire();\r\n }\r\n layout(width, height) {\r\n this._width = width;\r\n this._height = height;\r\n this.api._onDidDimensionChange.fire({ width, height });\r\n if (this.part) {\r\n if (this._params) {\r\n this.part.update(this._params.params);\r\n }\r\n }\r\n }\r\n init(parameters) {\r\n this._params = parameters;\r\n this.part = this.getComponent();\r\n }\r\n update(event) {\r\n var _a, _b;\r\n // merge the new parameters with the existing parameters\r\n this._params = Object.assign(Object.assign({}, this._params), { params: Object.assign(Object.assign({}, (_a = this._params) === null || _a === void 0 ? void 0 : _a.params), event.params) });\r\n /**\r\n * delete new keys that have a value of undefined,\r\n * allow values of null\r\n */\r\n for (const key of Object.keys(event.params)) {\r\n if (event.params[key] === undefined) {\r\n delete this._params.params[key];\r\n }\r\n }\r\n // update the view with the updated props\r\n (_b = this.part) === null || _b === void 0 ? void 0 : _b.update({ params: this._params.params });\r\n }\r\n toJSON() {\r\n var _a, _b;\r\n const params = (_b = (_a = this._params) === null || _a === void 0 ? void 0 : _a.params) !== null && _b !== void 0 ? _b : {};\r\n return {\r\n id: this.id,\r\n component: this.component,\r\n params: Object.keys(params).length > 0 ? params : undefined,\r\n };\r\n }\r\n dispose() {\r\n var _a;\r\n this.api.dispose();\r\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=basePanelView.js.map","import { PaneviewPanelApiImpl } from '../api/paneviewPanelApi';\r\nimport { addClasses, removeClasses } from '../dom';\r\nimport { addDisposableListener, Emitter } from '../events';\r\nimport { BasePanelView, } from '../gridview/basePanelView';\r\nimport { Orientation } from '../splitview/splitview';\r\nexport class PaneviewPanel extends BasePanelView {\r\n set orientation(value) {\r\n this._orientation = value;\r\n }\r\n get orientation() {\r\n return this._orientation;\r\n }\r\n get minimumSize() {\r\n const headerSize = this.headerSize;\r\n const expanded = this.isExpanded();\r\n const minimumBodySize = expanded ? this._minimumBodySize : 0;\r\n return headerSize + minimumBodySize;\r\n }\r\n get maximumSize() {\r\n const headerSize = this.headerSize;\r\n const expanded = this.isExpanded();\r\n const maximumBodySize = expanded ? this._maximumBodySize : 0;\r\n return headerSize + maximumBodySize;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n get orthogonalSize() {\r\n return this._orthogonalSize;\r\n }\r\n set orthogonalSize(size) {\r\n this._orthogonalSize = size;\r\n }\r\n get minimumBodySize() {\r\n return this._minimumBodySize;\r\n }\r\n set minimumBodySize(value) {\r\n this._minimumBodySize = typeof value === 'number' ? value : 0;\r\n }\r\n get maximumBodySize() {\r\n return this._maximumBodySize;\r\n }\r\n set maximumBodySize(value) {\r\n this._maximumBodySize =\r\n typeof value === 'number' ? value : Number.POSITIVE_INFINITY;\r\n }\r\n get headerVisible() {\r\n return this._headerVisible;\r\n }\r\n set headerVisible(value) {\r\n this._headerVisible = value;\r\n this.header.style.display = value ? '' : 'none';\r\n }\r\n constructor(id, component, headerComponent, orientation, isExpanded, isHeaderVisible) {\r\n super(id, component, new PaneviewPanelApiImpl(id));\r\n this.headerComponent = headerComponent;\r\n this._onDidChangeExpansionState = new Emitter({ replay: true });\r\n this.onDidChangeExpansionState = this._onDidChangeExpansionState.event;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this.headerSize = 22;\r\n this._orthogonalSize = 0;\r\n this._size = 0;\r\n this._minimumBodySize = 100;\r\n this._maximumBodySize = Number.POSITIVE_INFINITY;\r\n this._isExpanded = false;\r\n this.expandedSize = 0;\r\n this.api.pane = this; // TODO cannot use 'this' before 'super'\r\n this.api.initialize(this);\r\n this._isExpanded = isExpanded;\r\n this._headerVisible = isHeaderVisible;\r\n this._onDidChangeExpansionState.fire(this.isExpanded()); // initialize value\r\n this._orientation = orientation;\r\n this.element.classList.add('pane');\r\n this.addDisposables(this.api.onDidSizeChange((event) => {\r\n this._onDidChange.fire({ size: event.size });\r\n }), addDisposableListener(this.element, 'mouseenter', (ev) => {\r\n this.api._onMouseEnter.fire(ev);\r\n }), addDisposableListener(this.element, 'mouseleave', (ev) => {\r\n this.api._onMouseLeave.fire(ev);\r\n }));\r\n this.addDisposables(this._onDidChangeExpansionState, this.onDidChangeExpansionState((isPanelExpanded) => {\r\n this.api._onDidExpansionChange.fire({\r\n isExpanded: isPanelExpanded,\r\n });\r\n }), this.api.onDidFocusChange((e) => {\r\n if (!this.header) {\r\n return;\r\n }\r\n if (e.isFocused) {\r\n addClasses(this.header, 'focused');\r\n }\r\n else {\r\n removeClasses(this.header, 'focused');\r\n }\r\n }));\r\n this.renderOnce();\r\n }\r\n setVisible(isVisible) {\r\n this.api._onDidVisibilityChange.fire({ isVisible });\r\n }\r\n setActive(isActive) {\r\n this.api._onDidActiveChange.fire({ isActive });\r\n }\r\n isExpanded() {\r\n return this._isExpanded;\r\n }\r\n setExpanded(expanded) {\r\n if (this._isExpanded === expanded) {\r\n return;\r\n }\r\n this._isExpanded = expanded;\r\n if (expanded) {\r\n if (this.animationTimer) {\r\n clearTimeout(this.animationTimer);\r\n }\r\n if (this.body) {\r\n this.element.appendChild(this.body);\r\n }\r\n }\r\n else {\r\n this.animationTimer = setTimeout(() => {\r\n var _a;\r\n (_a = this.body) === null || _a === void 0 ? void 0 : _a.remove();\r\n }, 200);\r\n }\r\n this._onDidChange.fire(expanded ? { size: this.width } : {});\r\n this._onDidChangeExpansionState.fire(expanded);\r\n }\r\n layout(size, orthogonalSize) {\r\n this._size = size;\r\n this._orthogonalSize = orthogonalSize;\r\n const [width, height] = this.orientation === Orientation.HORIZONTAL\r\n ? [size, orthogonalSize]\r\n : [orthogonalSize, size];\r\n if (this.isExpanded()) {\r\n this.expandedSize = width;\r\n }\r\n super.layout(width, height);\r\n }\r\n init(parameters) {\r\n var _a, _b;\r\n super.init(parameters);\r\n if (typeof parameters.minimumBodySize === 'number') {\r\n this.minimumBodySize = parameters.minimumBodySize;\r\n }\r\n if (typeof parameters.maximumBodySize === 'number') {\r\n this.maximumBodySize = parameters.maximumBodySize;\r\n }\r\n this.bodyPart = this.getBodyComponent();\r\n this.headerPart = this.getHeaderComponent();\r\n this.bodyPart.init(Object.assign(Object.assign({}, parameters), { api: this.api }));\r\n this.headerPart.init(Object.assign(Object.assign({}, parameters), { api: this.api }));\r\n (_a = this.body) === null || _a === void 0 ? void 0 : _a.append(this.bodyPart.element);\r\n (_b = this.header) === null || _b === void 0 ? void 0 : _b.append(this.headerPart.element);\r\n if (typeof parameters.isExpanded === 'boolean') {\r\n this.setExpanded(parameters.isExpanded);\r\n }\r\n }\r\n toJSON() {\r\n const params = this._params;\r\n return Object.assign(Object.assign({}, super.toJSON()), { headerComponent: this.headerComponent, title: params.title });\r\n }\r\n renderOnce() {\r\n this.header = document.createElement('div');\r\n this.header.tabIndex = 0;\r\n this.header.className = 'pane-header';\r\n this.header.style.height = `${this.headerSize}px`;\r\n this.header.style.lineHeight = `${this.headerSize}px`;\r\n this.header.style.minHeight = `${this.headerSize}px`;\r\n this.header.style.maxHeight = `${this.headerSize}px`;\r\n this.element.appendChild(this.header);\r\n this.body = document.createElement('div');\r\n this.body.className = 'pane-body';\r\n this.element.appendChild(this.body);\r\n }\r\n // TODO slightly hacky by-pass of the component to create a body and header component\r\n getComponent() {\r\n return {\r\n update: (params) => {\r\n var _a, _b;\r\n (_a = this.bodyPart) === null || _a === void 0 ? void 0 : _a.update({ params });\r\n (_b = this.headerPart) === null || _b === void 0 ? void 0 : _b.update({ params });\r\n },\r\n dispose: () => {\r\n var _a, _b;\r\n (_a = this.bodyPart) === null || _a === void 0 ? void 0 : _a.dispose();\r\n (_b = this.headerPart) === null || _b === void 0 ? void 0 : _b.dispose();\r\n },\r\n };\r\n }\r\n}\r\n//# sourceMappingURL=paneviewPanel.js.map","import { PaneviewApi } from '../api/component.api';\r\nimport { DragHandler } from '../dnd/abstractDragHandler';\r\nimport { getPaneData, LocalSelectionTransfer, PaneTransfer, } from '../dnd/dataTransfer';\r\nimport { Droptarget } from '../dnd/droptarget';\r\nimport { Emitter } from '../events';\r\nimport { PaneviewPanel, } from './paneviewPanel';\r\nexport class DraggablePaneviewPanel extends PaneviewPanel {\r\n constructor(accessor, id, component, headerComponent, orientation, isExpanded, disableDnd) {\r\n super(id, component, headerComponent, orientation, isExpanded, true);\r\n this.accessor = accessor;\r\n this._onDidDrop = new Emitter();\r\n this.onDidDrop = this._onDidDrop.event;\r\n if (!disableDnd) {\r\n this.initDragFeatures();\r\n }\r\n }\r\n initDragFeatures() {\r\n if (!this.header) {\r\n return;\r\n }\r\n const id = this.id;\r\n const accessorId = this.accessor.id;\r\n this.header.draggable = true;\r\n this.handler = new (class PaneDragHandler extends DragHandler {\r\n getData() {\r\n LocalSelectionTransfer.getInstance().setData([new PaneTransfer(accessorId, id)], PaneTransfer.prototype);\r\n return {\r\n dispose: () => {\r\n LocalSelectionTransfer.getInstance().clearData(PaneTransfer.prototype);\r\n },\r\n };\r\n }\r\n })(this.header);\r\n this.target = new Droptarget(this.element, {\r\n acceptedTargetZones: ['top', 'bottom'],\r\n overlayModel: {\r\n activationSize: { type: 'percentage', value: 50 },\r\n },\r\n canDisplayOverlay: (event) => {\r\n const data = getPaneData();\r\n if (data) {\r\n if (data.paneId !== this.id &&\r\n data.viewId === this.accessor.id) {\r\n return true;\r\n }\r\n }\r\n if (this.accessor.options.showDndOverlay) {\r\n return this.accessor.options.showDndOverlay({\r\n nativeEvent: event,\r\n getData: getPaneData,\r\n panel: this,\r\n });\r\n }\r\n return false;\r\n },\r\n });\r\n this.addDisposables(this._onDidDrop, this.handler, this.target, this.target.onDrop((event) => {\r\n this.onDrop(event);\r\n }));\r\n }\r\n onDrop(event) {\r\n const data = getPaneData();\r\n if (!data || data.viewId !== this.accessor.id) {\r\n // if there is no local drag event for this panel\r\n // or if the drag event was creating by another Paneview instance\r\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, api: new PaneviewApi(this.accessor), getData: getPaneData }));\r\n return;\r\n }\r\n const containerApi = this._params\r\n .containerApi;\r\n const panelId = data.paneId;\r\n const existingPanel = containerApi.getPanel(panelId);\r\n if (!existingPanel) {\r\n // if the panel doesn't exist\r\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: getPaneData, api: new PaneviewApi(this.accessor) }));\r\n return;\r\n }\r\n const allPanels = containerApi.panels;\r\n const fromIndex = allPanels.indexOf(existingPanel);\r\n let toIndex = containerApi.panels.indexOf(this);\r\n if (event.position === 'left' || event.position === 'top') {\r\n toIndex = Math.max(0, toIndex - 1);\r\n }\r\n if (event.position === 'right' || event.position === 'bottom') {\r\n if (fromIndex > toIndex) {\r\n toIndex++;\r\n }\r\n toIndex = Math.min(allPanels.length - 1, toIndex);\r\n }\r\n containerApi.movePanel(fromIndex, toIndex);\r\n }\r\n}\r\n//# sourceMappingURL=draggablePaneviewPanel.js.map","import { Emitter } from '../events';\r\nimport { PanelApiImpl } from './panelApi';\r\nexport class GridviewPanelApiImpl extends PanelApiImpl {\r\n constructor(id, panel) {\r\n super(id);\r\n this._onDidConstraintsChangeInternal = new Emitter();\r\n this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;\r\n this._onDidConstraintsChange = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidConstraintsChange = this._onDidConstraintsChange.event;\r\n this._onDidSizeChange = new Emitter();\r\n this.onDidSizeChange = this._onDidSizeChange.event;\r\n this.addDisposables(this._onDidConstraintsChangeInternal, this._onDidConstraintsChange, this._onDidSizeChange);\r\n if (panel) {\r\n this.initialize(panel);\r\n }\r\n }\r\n setConstraints(value) {\r\n this._onDidConstraintsChangeInternal.fire(value);\r\n }\r\n setSize(event) {\r\n this._onDidSizeChange.fire(event);\r\n }\r\n}\r\n//# sourceMappingURL=gridviewPanelApi.js.map","import { BasePanelView, } from './basePanelView';\r\nimport { GridviewPanelApiImpl, } from '../api/gridviewPanelApi';\r\nimport { Emitter } from '../events';\r\nexport class GridviewPanel extends BasePanelView {\r\n get priority() {\r\n return this._priority;\r\n }\r\n get snap() {\r\n return this._snap;\r\n }\r\n get minimumWidth() {\r\n const width = typeof this._minimumWidth === 'function'\r\n ? this._minimumWidth()\r\n : this._minimumWidth;\r\n if (width !== this._evaluatedMinimumWidth) {\r\n this._evaluatedMinimumWidth = width;\r\n this.updateConstraints();\r\n }\r\n return width;\r\n }\r\n get minimumHeight() {\r\n const height = typeof this._minimumHeight === 'function'\r\n ? this._minimumHeight()\r\n : this._minimumHeight;\r\n if (height !== this._evaluatedMinimumHeight) {\r\n this._evaluatedMinimumHeight = height;\r\n this.updateConstraints();\r\n }\r\n return height;\r\n }\r\n get maximumHeight() {\r\n const height = typeof this._maximumHeight === 'function'\r\n ? this._maximumHeight()\r\n : this._maximumHeight;\r\n if (height !== this._evaluatedMaximumHeight) {\r\n this._evaluatedMaximumHeight = height;\r\n this.updateConstraints();\r\n }\r\n return height;\r\n }\r\n get maximumWidth() {\r\n const width = typeof this._maximumWidth === 'function'\r\n ? this._maximumWidth()\r\n : this._maximumWidth;\r\n if (width !== this._evaluatedMaximumWidth) {\r\n this._evaluatedMaximumWidth = width;\r\n this.updateConstraints();\r\n }\r\n return width;\r\n }\r\n get isActive() {\r\n return this.api.isActive;\r\n }\r\n constructor(id, component, options, api) {\r\n super(id, component, api !== null && api !== void 0 ? api : new GridviewPanelApiImpl(id));\r\n this._evaluatedMinimumWidth = 0;\r\n this._evaluatedMaximumWidth = Number.MAX_SAFE_INTEGER;\r\n this._evaluatedMinimumHeight = 0;\r\n this._evaluatedMaximumHeight = Number.MAX_SAFE_INTEGER;\r\n this._minimumWidth = 0;\r\n this._minimumHeight = 0;\r\n this._maximumWidth = Number.MAX_SAFE_INTEGER;\r\n this._maximumHeight = Number.MAX_SAFE_INTEGER;\r\n this._snap = false;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n if (typeof (options === null || options === void 0 ? void 0 : options.minimumWidth) === 'number') {\r\n this._minimumWidth = options.minimumWidth;\r\n }\r\n if (typeof (options === null || options === void 0 ? void 0 : options.maximumWidth) === 'number') {\r\n this._maximumWidth = options.maximumWidth;\r\n }\r\n if (typeof (options === null || options === void 0 ? void 0 : options.minimumHeight) === 'number') {\r\n this._minimumHeight = options.minimumHeight;\r\n }\r\n if (typeof (options === null || options === void 0 ? void 0 : options.maximumHeight) === 'number') {\r\n this._maximumHeight = options.maximumHeight;\r\n }\r\n this.api.initialize(this); // TODO: required to by-pass 'super before this' requirement\r\n this.addDisposables(this.api.onVisibilityChange((event) => {\r\n const { isVisible } = event;\r\n const { accessor } = this._params;\r\n accessor.setVisible(this, isVisible);\r\n }), this.api.onActiveChange(() => {\r\n const { accessor } = this._params;\r\n accessor.setActive(this);\r\n }), this.api.onDidConstraintsChangeInternal((event) => {\r\n if (typeof event.minimumWidth === 'number' ||\r\n typeof event.minimumWidth === 'function') {\r\n this._minimumWidth = event.minimumWidth;\r\n }\r\n if (typeof event.minimumHeight === 'number' ||\r\n typeof event.minimumHeight === 'function') {\r\n this._minimumHeight = event.minimumHeight;\r\n }\r\n if (typeof event.maximumWidth === 'number' ||\r\n typeof event.maximumWidth === 'function') {\r\n this._maximumWidth = event.maximumWidth;\r\n }\r\n if (typeof event.maximumHeight === 'number' ||\r\n typeof event.maximumHeight === 'function') {\r\n this._maximumHeight = event.maximumHeight;\r\n }\r\n }), this.api.onDidSizeChange((event) => {\r\n this._onDidChange.fire({\r\n height: event.height,\r\n width: event.width,\r\n });\r\n }), this._onDidChange);\r\n }\r\n setVisible(isVisible) {\r\n this.api._onDidVisibilityChange.fire({ isVisible });\r\n }\r\n setActive(isActive) {\r\n this.api._onDidActiveChange.fire({ isActive });\r\n }\r\n init(parameters) {\r\n if (parameters.maximumHeight) {\r\n this._maximumHeight = parameters.maximumHeight;\r\n }\r\n if (parameters.minimumHeight) {\r\n this._minimumHeight = parameters.minimumHeight;\r\n }\r\n if (parameters.maximumWidth) {\r\n this._maximumWidth = parameters.maximumWidth;\r\n }\r\n if (parameters.minimumWidth) {\r\n this._minimumWidth = parameters.minimumWidth;\r\n }\r\n this._priority = parameters.priority;\r\n this._snap = !!parameters.snap;\r\n super.init(parameters);\r\n if (typeof parameters.isVisible === 'boolean') {\r\n this.setVisible(parameters.isVisible);\r\n }\r\n }\r\n updateConstraints() {\r\n this.api._onDidConstraintsChange.fire({\r\n minimumWidth: this._evaluatedMinimumWidth,\r\n maximumWidth: this._evaluatedMaximumWidth,\r\n minimumHeight: this._evaluatedMinimumHeight,\r\n maximumHeight: this._evaluatedMaximumHeight,\r\n });\r\n }\r\n toJSON() {\r\n const state = super.toJSON();\r\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ? undefined : value;\r\n const minimum = (value) => (value <= 0 ? undefined : value);\r\n return Object.assign(Object.assign({}, state), { minimumHeight: minimum(this.minimumHeight), maximumHeight: maximum(this.maximumHeight), minimumWidth: minimum(this.minimumWidth), maximumWidth: maximum(this.maximumWidth), snap: this.snap, priority: this.priority });\r\n }\r\n}\r\n//# sourceMappingURL=gridviewPanel.js.map","import { Emitter } from '../events';\r\nimport { GridviewPanelApiImpl } from './gridviewPanelApi';\r\nexport class DockviewGroupPanelApiImpl extends GridviewPanelApiImpl {\r\n get isFloating() {\r\n if (!this._group) {\r\n throw new Error(`DockviewGroupPanelApiImpl not initialized`);\r\n }\r\n return this._group.model.isFloating;\r\n }\r\n constructor(id, accessor) {\r\n super(id);\r\n this.accessor = accessor;\r\n this._onDidFloatingStateChange = new Emitter();\r\n this.onDidFloatingStateChange = this._onDidFloatingStateChange.event;\r\n this.addDisposables(this._onDidFloatingStateChange);\r\n }\r\n moveTo(options) {\r\n var _a;\r\n if (!this._group) {\r\n throw new Error(`DockviewGroupPanelApiImpl not initialized`);\r\n }\r\n this.accessor.moveGroupOrPanel(options.group, this._group.id, undefined, (_a = options.position) !== null && _a !== void 0 ? _a : 'center');\r\n }\r\n initialize(group) {\r\n this._group = group;\r\n }\r\n}\r\n//# sourceMappingURL=dockviewGroupPanelApi.js.map","import { DockviewGroupPanelModel, } from './dockviewGroupPanelModel';\r\nimport { GridviewPanel } from '../gridview/gridviewPanel';\r\nimport { DockviewGroupPanelApiImpl, } from '../api/dockviewGroupPanelApi';\r\nexport class DockviewGroupPanel extends GridviewPanel {\r\n get panels() {\r\n return this._model.panels;\r\n }\r\n get activePanel() {\r\n return this._model.activePanel;\r\n }\r\n get size() {\r\n return this._model.size;\r\n }\r\n get model() {\r\n return this._model;\r\n }\r\n get locked() {\r\n return this._model.locked;\r\n }\r\n set locked(value) {\r\n this._model.locked = value;\r\n }\r\n get header() {\r\n return this._model.header;\r\n }\r\n constructor(accessor, id, options) {\r\n super(id, 'groupview_default', {\r\n minimumHeight: 100,\r\n minimumWidth: 100,\r\n }, new DockviewGroupPanelApiImpl(id, accessor));\r\n this.api.initialize(this); // cannot use 'this' after after 'super' call\r\n this._model = new DockviewGroupPanelModel(this.element, accessor, id, options, this);\r\n }\r\n initialize() {\r\n this._model.initialize();\r\n }\r\n setActive(isActive) {\r\n super.setActive(isActive);\r\n this.model.setActive(isActive);\r\n }\r\n layout(width, height) {\r\n super.layout(width, height);\r\n this.model.layout(width, height);\r\n }\r\n getComponent() {\r\n return this._model;\r\n }\r\n toJSON() {\r\n return this.model.toJSON();\r\n }\r\n}\r\n//# sourceMappingURL=dockviewGroupPanel.js.map","export function isPanelOptionsWithPanel(data) {\r\n if (data.referencePanel) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexport function isPanelOptionsWithGroup(data) {\r\n if (data.referenceGroup) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexport function isGroupOptionsWithPanel(data) {\r\n if (data.referencePanel) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexport function isGroupOptionsWithGroup(data) {\r\n if (data.referenceGroup) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n//# sourceMappingURL=options.js.map","import { Emitter } from '../events';\r\nimport { GridviewPanelApiImpl } from './gridviewPanelApi';\r\nimport { MutableDisposable } from '../lifecycle';\r\nexport class DockviewPanelApiImpl extends GridviewPanelApiImpl {\r\n get title() {\r\n return this.panel.title;\r\n }\r\n get isGroupActive() {\r\n var _a;\r\n return !!((_a = this.group) === null || _a === void 0 ? void 0 : _a.isActive);\r\n }\r\n set group(value) {\r\n const isOldGroupActive = this.isGroupActive;\r\n this._group = value;\r\n this._onDidGroupChange.fire();\r\n if (this._group) {\r\n this.disposable.value = this._group.api.onDidActiveChange(() => {\r\n this._onDidActiveGroupChange.fire();\r\n });\r\n if (this.isGroupActive !== isOldGroupActive) {\r\n this._onDidActiveGroupChange.fire();\r\n }\r\n }\r\n }\r\n get group() {\r\n return this._group;\r\n }\r\n constructor(panel, group, accessor) {\r\n super(panel.id);\r\n this.panel = panel;\r\n this.accessor = accessor;\r\n this._onDidTitleChange = new Emitter();\r\n this.onDidTitleChange = this._onDidTitleChange.event;\r\n this._onDidActiveGroupChange = new Emitter();\r\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\r\n this._onDidGroupChange = new Emitter();\r\n this.onDidGroupChange = this._onDidGroupChange.event;\r\n this.disposable = new MutableDisposable();\r\n this.initialize(panel);\r\n this._group = group;\r\n this.addDisposables(this.disposable, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange);\r\n }\r\n moveTo(options) {\r\n var _a;\r\n this.accessor.moveGroupOrPanel(options.group, this._group.id, this.panel.id, (_a = options.position) !== null && _a !== void 0 ? _a : 'center', options.index);\r\n }\r\n setTitle(title) {\r\n this.panel.setTitle(title);\r\n }\r\n close() {\r\n this.group.model.closePanel(this.panel);\r\n }\r\n}\r\n//# sourceMappingURL=dockviewPanelApi.js.map","import { DockviewPanelApiImpl, } from '../api/dockviewPanelApi';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nexport class DockviewPanel extends CompositeDisposable {\r\n get params() {\r\n return this._params;\r\n }\r\n get title() {\r\n return this._title;\r\n }\r\n get group() {\r\n return this._group;\r\n }\r\n constructor(id, accessor, containerApi, group, view) {\r\n super();\r\n this.id = id;\r\n this.containerApi = containerApi;\r\n this.view = view;\r\n this._group = group;\r\n this.api = new DockviewPanelApiImpl(this, this._group, accessor);\r\n this.addDisposables(this.api.onActiveChange(() => {\r\n accessor.setActivePanel(this);\r\n }), this.api.onDidSizeChange((event) => {\r\n // forward the resize event to the group since if you want to resize a panel\r\n // you are actually just resizing the panels parent which is the group\r\n this.group.api.setSize(event);\r\n }));\r\n }\r\n init(params) {\r\n this._params = params.params;\r\n this.view.init(Object.assign(Object.assign({}, params), { api: this.api, containerApi: this.containerApi }));\r\n this.setTitle(params.title);\r\n }\r\n focus() {\r\n this.api._onFocusEvent.fire();\r\n }\r\n toJSON() {\r\n return {\r\n id: this.id,\r\n contentComponent: this.view.contentComponent,\r\n tabComponent: this.view.tabComponent,\r\n params: Object.keys(this._params || {}).length > 0\r\n ? this._params\r\n : undefined,\r\n title: this.title,\r\n };\r\n }\r\n setTitle(title) {\r\n const didTitleChange = title !== this.title;\r\n if (didTitleChange) {\r\n this._title = title;\r\n this.view.update({\r\n params: {\r\n params: this._params,\r\n title: this.title,\r\n },\r\n });\r\n this.api._onDidTitleChange.fire({ title });\r\n }\r\n }\r\n update(event) {\r\n // merge the new parameters with the existing parameters\r\n this._params = Object.assign(Object.assign({}, (this._params || {})), event.params);\r\n /**\r\n * delete new keys that have a value of undefined,\r\n * allow values of null\r\n */\r\n for (const key of Object.keys(event.params)) {\r\n if (event.params[key] === undefined) {\r\n delete this._params[key];\r\n }\r\n }\r\n // update the view with the updated props\r\n this.view.update({\r\n params: {\r\n params: this._params,\r\n title: this.title,\r\n },\r\n });\r\n }\r\n updateParentGroup(group, isGroupActive) {\r\n this._group = group;\r\n this.api.group = group;\r\n const isPanelVisible = this._group.model.isPanelActive(this);\r\n this.api._onDidActiveChange.fire({\r\n isActive: isGroupActive && isPanelVisible,\r\n });\r\n this.api._onDidVisibilityChange.fire({\r\n isVisible: isPanelVisible,\r\n });\r\n this.view.updateParentGroup(this._group, this._group.model.isPanelActive(this));\r\n }\r\n layout(width, height) {\r\n // the obtain the correct dimensions of the content panel we must deduct the tab height\r\n this.api._onDidDimensionChange.fire({\r\n width,\r\n height: height,\r\n });\r\n this.view.layout(width, height);\r\n }\r\n dispose() {\r\n this.api.dispose();\r\n this.view.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=dockviewPanel.js.map","const createSvgElementFromPath = (params) => {\r\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\r\n svg.setAttributeNS(null, 'height', params.height);\r\n svg.setAttributeNS(null, 'width', params.width);\r\n svg.setAttributeNS(null, 'viewBox', params.viewbox);\r\n svg.setAttributeNS(null, 'aria-hidden', 'false');\r\n svg.setAttributeNS(null, 'focusable', 'false');\r\n svg.classList.add('dockview-svg');\r\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\r\n path.setAttributeNS(null, 'd', params.path);\r\n svg.appendChild(path);\r\n return svg;\r\n};\r\nexport const createCloseButton = () => createSvgElementFromPath({\r\n width: '11',\r\n height: '11',\r\n viewbox: '0 0 28 28',\r\n path: 'M2.1 27.3L0 25.2L11.55 13.65L0 2.1L2.1 0L13.65 11.55L25.2 0L27.3 2.1L15.75 13.65L27.3 25.2L25.2 27.3L13.65 15.75L2.1 27.3Z',\r\n});\r\nexport const createExpandMoreButton = () => createSvgElementFromPath({\r\n width: '11',\r\n height: '11',\r\n viewbox: '0 0 24 15',\r\n path: 'M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z',\r\n});\r\nexport const createChevronRightButton = () => createSvgElementFromPath({\r\n width: '11',\r\n height: '11',\r\n viewbox: '0 0 15 25',\r\n path: 'M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z',\r\n});\r\n//# sourceMappingURL=svg.js.map","import { CompositeDisposable } from '../../../lifecycle';\r\nimport { addDisposableListener } from '../../../events';\r\nimport { createCloseButton } from '../../../svg';\r\nexport class DefaultTab extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor() {\r\n super();\r\n //\r\n this.params = {};\r\n this._element = document.createElement('div');\r\n this._element.className = 'default-tab';\r\n //\r\n this._content = document.createElement('div');\r\n this._content.className = 'tab-content';\r\n //\r\n this._actionContainer = document.createElement('div');\r\n this._actionContainer.className = 'action-container';\r\n //\r\n this._list = document.createElement('ul');\r\n this._list.className = 'tab-list';\r\n //\r\n this.action = document.createElement('div');\r\n this.action.className = 'tab-action';\r\n this.action.appendChild(createCloseButton());\r\n //\r\n this._element.appendChild(this._content);\r\n this._element.appendChild(this._actionContainer);\r\n this._actionContainer.appendChild(this._list);\r\n this._list.appendChild(this.action);\r\n //\r\n this.addDisposables(addDisposableListener(this._actionContainer, 'mousedown', (ev) => {\r\n ev.preventDefault();\r\n }));\r\n this.render();\r\n }\r\n update(event) {\r\n this.params = Object.assign(Object.assign({}, this.params), event.params);\r\n this.render();\r\n }\r\n focus() {\r\n //noop\r\n }\r\n init(params) {\r\n this.params = params;\r\n this._content.textContent = params.title;\r\n addDisposableListener(this.action, 'click', (ev) => {\r\n ev.preventDefault(); //\r\n this.params.api.close();\r\n });\r\n }\r\n onGroupChange(_group) {\r\n this.render();\r\n }\r\n onPanelVisibleChange(_isPanelVisible) {\r\n this.render();\r\n }\r\n layout(_width, _height) {\r\n // noop\r\n }\r\n render() {\r\n if (this._content.textContent !== this.params.title) {\r\n this._content.textContent = this.params.title;\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=defaultTab.js.map","import { DefaultTab } from './components/tab/defaultTab';\r\nimport { createComponent } from '../panel/componentFactory';\r\nexport class DockviewPanelModel {\r\n get content() {\r\n return this._content;\r\n }\r\n get tab() {\r\n return this._tab;\r\n }\r\n constructor(accessor, id, contentComponent, tabComponent) {\r\n this.accessor = accessor;\r\n this.id = id;\r\n this.contentComponent = contentComponent;\r\n this.tabComponent = tabComponent;\r\n this._group = null;\r\n this._isPanelVisible = null;\r\n this._content = this.createContentComponent(this.id, contentComponent);\r\n this._tab = this.createTabComponent(this.id, tabComponent);\r\n }\r\n init(params) {\r\n this.content.init(Object.assign(Object.assign({}, params), { tab: this.tab }));\r\n this.tab.init(params);\r\n }\r\n updateParentGroup(group, isPanelVisible) {\r\n if (group !== this._group) {\r\n this._group = group;\r\n if (this._content.onGroupChange) {\r\n this._content.onGroupChange(group);\r\n }\r\n if (this._tab.onGroupChange) {\r\n this._tab.onGroupChange(group);\r\n }\r\n }\r\n if (isPanelVisible !== this._isPanelVisible) {\r\n this._isPanelVisible = isPanelVisible;\r\n if (this._content.onPanelVisibleChange) {\r\n this._content.onPanelVisibleChange(isPanelVisible);\r\n }\r\n if (this._tab.onPanelVisibleChange) {\r\n this._tab.onPanelVisibleChange(isPanelVisible);\r\n }\r\n }\r\n }\r\n layout(width, height) {\r\n var _a, _b;\r\n (_b = (_a = this.content).layout) === null || _b === void 0 ? void 0 : _b.call(_a, width, height);\r\n }\r\n update(event) {\r\n var _a, _b, _c, _d;\r\n (_b = (_a = this.content).update) === null || _b === void 0 ? void 0 : _b.call(_a, event);\r\n (_d = (_c = this.tab).update) === null || _d === void 0 ? void 0 : _d.call(_c, event);\r\n }\r\n dispose() {\r\n var _a, _b, _c, _d;\r\n (_b = (_a = this.content).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n (_d = (_c = this.tab).dispose) === null || _d === void 0 ? void 0 : _d.call(_c);\r\n }\r\n createContentComponent(id, componentName) {\r\n var _a;\r\n return createComponent(id, componentName, this.accessor.options.components || {}, this.accessor.options.frameworkComponents, (_a = this.accessor.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.content);\r\n }\r\n createTabComponent(id, componentName) {\r\n var _a, _b;\r\n if (componentName) {\r\n return createComponent(id, componentName, this.accessor.options.tabComponents, this.accessor.options.frameworkTabComponents, (_a = this.accessor.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.tab, () => new DefaultTab());\r\n }\r\n else if (this.accessor.options.defaultTabComponent) {\r\n return createComponent(id, this.accessor.options.defaultTabComponent, this.accessor.options.tabComponents, this.accessor.options.frameworkTabComponents, (_b = this.accessor.options.frameworkComponentFactory) === null || _b === void 0 ? void 0 : _b.tab, () => new DefaultTab());\r\n }\r\n else {\r\n return new DefaultTab();\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=dockviewPanelModel.js.map","import { DockviewPanel } from './dockviewPanel';\r\nimport { DockviewPanelModel } from './dockviewPanelModel';\r\nimport { DockviewApi } from '../api/component.api';\r\nexport class DefaultDockviewDeserialzier {\r\n constructor(layout) {\r\n this.layout = layout;\r\n }\r\n fromJSON(panelData, group) {\r\n var _a;\r\n const panelId = panelData.id;\r\n const params = panelData.params;\r\n const title = panelData.title;\r\n const viewData = panelData.view;\r\n const contentComponent = viewData\r\n ? viewData.content.id\r\n : panelData.contentComponent || 'unknown';\r\n const tabComponent = viewData\r\n ? (_a = viewData.tab) === null || _a === void 0 ? void 0 : _a.id\r\n : panelData.tabComponent;\r\n const view = new DockviewPanelModel(this.layout, panelId, contentComponent, tabComponent);\r\n const panel = new DockviewPanel(panelId, this.layout, new DockviewApi(this.layout), group, view);\r\n panel.init({\r\n title: title || panelId,\r\n params: params || {},\r\n });\r\n return panel;\r\n }\r\n}\r\n//# sourceMappingURL=deserializer.js.map","import { addDisposableListener } from '../../../events';\r\nimport { toggleClass } from '../../../dom';\r\nimport { CompositeDisposable } from '../../../lifecycle';\r\nimport { createCloseButton } from '../../../svg';\r\nexport class Watermark extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor() {\r\n super();\r\n this._element = document.createElement('div');\r\n this._element.className = 'watermark';\r\n const title = document.createElement('div');\r\n title.className = 'watermark-title';\r\n const emptySpace = document.createElement('span');\r\n emptySpace.style.flexGrow = '1';\r\n const content = document.createElement('div');\r\n content.className = 'watermark-content';\r\n this._element.appendChild(title);\r\n this._element.appendChild(content);\r\n const actionsContainer = document.createElement('div');\r\n actionsContainer.className = 'actions-container';\r\n const closeAnchor = document.createElement('div');\r\n closeAnchor.className = 'close-action';\r\n closeAnchor.appendChild(createCloseButton());\r\n actionsContainer.appendChild(closeAnchor);\r\n title.appendChild(emptySpace);\r\n title.appendChild(actionsContainer);\r\n this.addDisposables(addDisposableListener(closeAnchor, 'click', (ev) => {\r\n var _a;\r\n ev.preventDefault();\r\n if (this._group) {\r\n (_a = this._api) === null || _a === void 0 ? void 0 : _a.removeGroup(this._group);\r\n }\r\n }));\r\n }\r\n update(_event) {\r\n // noop\r\n }\r\n focus() {\r\n // noop\r\n }\r\n layout(_width, _height) {\r\n // noop\r\n }\r\n init(_params) {\r\n this._api = _params.containerApi;\r\n this.render();\r\n }\r\n updateParentGroup(group, _visible) {\r\n this._group = group;\r\n this.render();\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n render() {\r\n const isOneGroup = !!(this._api && this._api.size <= 1);\r\n toggleClass(this.element, 'has-actions', isOneGroup);\r\n }\r\n}\r\n//# sourceMappingURL=watermark.js.map","import { getElementsByTagName, quasiDefaultPrevented, toggleClass, } from '../dom';\r\nimport { Emitter, addDisposableListener, addDisposableWindowListener, } from '../events';\r\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\r\nimport { clamp } from '../math';\r\nconst bringElementToFront = (() => {\r\n let previous = null;\r\n function pushToTop(element) {\r\n if (previous !== element && previous !== null) {\r\n toggleClass(previous, 'dv-bring-to-front', false);\r\n }\r\n toggleClass(element, 'dv-bring-to-front', true);\r\n previous = element;\r\n }\r\n return pushToTop;\r\n})();\r\nexport class Overlay extends CompositeDisposable {\r\n set minimumInViewportWidth(value) {\r\n this.options.minimumInViewportWidth = value;\r\n }\r\n set minimumInViewportHeight(value) {\r\n this.options.minimumInViewportHeight = value;\r\n }\r\n constructor(options) {\r\n super();\r\n this.options = options;\r\n this._element = document.createElement('div');\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._onDidChangeEnd = new Emitter();\r\n this.onDidChangeEnd = this._onDidChangeEnd.event;\r\n this.addDisposables(this._onDidChange, this._onDidChangeEnd);\r\n this._element.className = 'dv-resize-container';\r\n this.setupResize('top');\r\n this.setupResize('bottom');\r\n this.setupResize('left');\r\n this.setupResize('right');\r\n this.setupResize('topleft');\r\n this.setupResize('topright');\r\n this.setupResize('bottomleft');\r\n this.setupResize('bottomright');\r\n this._element.appendChild(this.options.content);\r\n this.options.container.appendChild(this._element);\r\n // if input bad resize within acceptable boundaries\r\n this.setBounds({\r\n height: this.options.height,\r\n width: this.options.width,\r\n top: this.options.top,\r\n left: this.options.left,\r\n });\r\n }\r\n setBounds(bounds = {}) {\r\n if (typeof bounds.height === 'number') {\r\n this._element.style.height = `${bounds.height}px`;\r\n }\r\n if (typeof bounds.width === 'number') {\r\n this._element.style.width = `${bounds.width}px`;\r\n }\r\n if (typeof bounds.top === 'number') {\r\n this._element.style.top = `${bounds.top}px`;\r\n }\r\n if (typeof bounds.left === 'number') {\r\n this._element.style.left = `${bounds.left}px`;\r\n }\r\n const containerRect = this.options.container.getBoundingClientRect();\r\n const overlayRect = this._element.getBoundingClientRect();\r\n // region: ensure bounds within allowable limits\r\n // a minimum width of minimumViewportWidth must be inside the viewport\r\n const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));\r\n // a minimum height of minimumViewportHeight must be inside the viewport\r\n const yOffset = typeof this.options.minimumInViewportHeight === 'number'\r\n ? Math.max(0, this.getMinimumHeight(overlayRect.height))\r\n : 0;\r\n const left = clamp(overlayRect.left - containerRect.left, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\r\n const top = clamp(overlayRect.top - containerRect.top, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\r\n this._element.style.left = `${left}px`;\r\n this._element.style.top = `${top}px`;\r\n this._onDidChange.fire();\r\n }\r\n toJSON() {\r\n const container = this.options.container.getBoundingClientRect();\r\n const element = this._element.getBoundingClientRect();\r\n return {\r\n top: element.top - container.top,\r\n left: element.left - container.left,\r\n width: element.width,\r\n height: element.height,\r\n };\r\n }\r\n setupDrag(dragTarget, options = { inDragMode: false }) {\r\n const move = new MutableDisposable();\r\n const track = () => {\r\n let offset = null;\r\n const iframes = [\r\n ...getElementsByTagName('iframe'),\r\n ...getElementsByTagName('webview'),\r\n ];\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'none';\r\n }\r\n move.value = new CompositeDisposable({\r\n dispose: () => {\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'auto';\r\n }\r\n },\r\n }, addDisposableWindowListener(window, 'mousemove', (e) => {\r\n const containerRect = this.options.container.getBoundingClientRect();\r\n const x = e.clientX - containerRect.left;\r\n const y = e.clientY - containerRect.top;\r\n toggleClass(this._element, 'dv-resize-container-dragging', true);\r\n const overlayRect = this._element.getBoundingClientRect();\r\n if (offset === null) {\r\n offset = {\r\n x: e.clientX - overlayRect.left,\r\n y: e.clientY - overlayRect.top,\r\n };\r\n }\r\n const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));\r\n const yOffset = Math.max(0, this.options.minimumInViewportHeight\r\n ? this.getMinimumHeight(overlayRect.height)\r\n : 0);\r\n const left = clamp(x - offset.x, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\r\n const top = clamp(y - offset.y, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\r\n this.setBounds({ top, left });\r\n }), addDisposableWindowListener(window, 'mouseup', () => {\r\n toggleClass(this._element, 'dv-resize-container-dragging', false);\r\n move.dispose();\r\n this._onDidChangeEnd.fire();\r\n }));\r\n };\r\n this.addDisposables(move, addDisposableListener(dragTarget, 'mousedown', (event) => {\r\n if (event.defaultPrevented) {\r\n event.preventDefault();\r\n return;\r\n }\r\n // if somebody has marked this event then treat as a defaultPrevented\r\n // without actually calling event.preventDefault()\r\n if (quasiDefaultPrevented(event)) {\r\n return;\r\n }\r\n track();\r\n }), addDisposableListener(this.options.content, 'mousedown', (event) => {\r\n if (event.defaultPrevented) {\r\n return;\r\n }\r\n // if somebody has marked this event then treat as a defaultPrevented\r\n // without actually calling event.preventDefault()\r\n if (quasiDefaultPrevented(event)) {\r\n return;\r\n }\r\n if (event.shiftKey) {\r\n track();\r\n }\r\n }), addDisposableListener(this.options.content, 'mousedown', () => {\r\n bringElementToFront(this._element);\r\n }, true));\r\n bringElementToFront(this._element);\r\n if (options.inDragMode) {\r\n track();\r\n }\r\n }\r\n setupResize(direction) {\r\n const resizeHandleElement = document.createElement('div');\r\n resizeHandleElement.className = `dv-resize-handle-${direction}`;\r\n this._element.appendChild(resizeHandleElement);\r\n const move = new MutableDisposable();\r\n this.addDisposables(move, addDisposableListener(resizeHandleElement, 'mousedown', (e) => {\r\n e.preventDefault();\r\n let startPosition = null;\r\n const iframes = [\r\n ...getElementsByTagName('iframe'),\r\n ...getElementsByTagName('webview'),\r\n ];\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'none';\r\n }\r\n move.value = new CompositeDisposable(addDisposableWindowListener(window, 'mousemove', (e) => {\r\n const containerRect = this.options.container.getBoundingClientRect();\r\n const overlayRect = this._element.getBoundingClientRect();\r\n const y = e.clientY - containerRect.top;\r\n const x = e.clientX - containerRect.left;\r\n if (startPosition === null) {\r\n // record the initial dimensions since as all subsequence moves are relative to this\r\n startPosition = {\r\n originalY: y,\r\n originalHeight: overlayRect.height,\r\n originalX: x,\r\n originalWidth: overlayRect.width,\r\n };\r\n }\r\n let top = undefined;\r\n let height = undefined;\r\n let left = undefined;\r\n let width = undefined;\r\n const moveTop = () => {\r\n top = clamp(y, -Number.MAX_VALUE, startPosition.originalY +\r\n startPosition.originalHeight >\r\n containerRect.height\r\n ? this.getMinimumHeight(containerRect.height)\r\n : Math.max(0, startPosition.originalY +\r\n startPosition.originalHeight -\r\n Overlay.MINIMUM_HEIGHT));\r\n height =\r\n startPosition.originalY +\r\n startPosition.originalHeight -\r\n top;\r\n };\r\n const moveBottom = () => {\r\n top =\r\n startPosition.originalY -\r\n startPosition.originalHeight;\r\n height = clamp(y - top, top < 0 &&\r\n typeof this.options\r\n .minimumInViewportHeight === 'number'\r\n ? -top +\r\n this.options.minimumInViewportHeight\r\n : Overlay.MINIMUM_HEIGHT, Number.MAX_VALUE);\r\n };\r\n const moveLeft = () => {\r\n left = clamp(x, -Number.MAX_VALUE, startPosition.originalX +\r\n startPosition.originalWidth >\r\n containerRect.width\r\n ? this.getMinimumWidth(containerRect.width)\r\n : Math.max(0, startPosition.originalX +\r\n startPosition.originalWidth -\r\n Overlay.MINIMUM_WIDTH));\r\n width =\r\n startPosition.originalX +\r\n startPosition.originalWidth -\r\n left;\r\n };\r\n const moveRight = () => {\r\n left =\r\n startPosition.originalX -\r\n startPosition.originalWidth;\r\n width = clamp(x - left, left < 0 &&\r\n typeof this.options\r\n .minimumInViewportWidth === 'number'\r\n ? -left +\r\n this.options.minimumInViewportWidth\r\n : Overlay.MINIMUM_WIDTH, Number.MAX_VALUE);\r\n };\r\n switch (direction) {\r\n case 'top':\r\n moveTop();\r\n break;\r\n case 'bottom':\r\n moveBottom();\r\n break;\r\n case 'left':\r\n moveLeft();\r\n break;\r\n case 'right':\r\n moveRight();\r\n break;\r\n case 'topleft':\r\n moveTop();\r\n moveLeft();\r\n break;\r\n case 'topright':\r\n moveTop();\r\n moveRight();\r\n break;\r\n case 'bottomleft':\r\n moveBottom();\r\n moveLeft();\r\n break;\r\n case 'bottomright':\r\n moveBottom();\r\n moveRight();\r\n break;\r\n }\r\n this.setBounds({ height, width, top, left });\r\n }), {\r\n dispose: () => {\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'auto';\r\n }\r\n },\r\n }, addDisposableWindowListener(window, 'mouseup', () => {\r\n move.dispose();\r\n this._onDidChangeEnd.fire();\r\n }));\r\n }));\r\n }\r\n getMinimumWidth(width) {\r\n if (typeof this.options.minimumInViewportWidth === 'number') {\r\n return width - this.options.minimumInViewportWidth;\r\n }\r\n return 0;\r\n }\r\n getMinimumHeight(height) {\r\n if (typeof this.options.minimumInViewportHeight === 'number') {\r\n return height - this.options.minimumInViewportHeight;\r\n }\r\n return height;\r\n }\r\n dispose() {\r\n this._element.remove();\r\n super.dispose();\r\n }\r\n}\r\nOverlay.MINIMUM_HEIGHT = 20;\r\nOverlay.MINIMUM_WIDTH = 20;\r\n//# sourceMappingURL=overlay.js.map","import { CompositeDisposable } from '../lifecycle';\r\nexport class DockviewFloatingGroupPanel extends CompositeDisposable {\r\n constructor(group, overlay) {\r\n super();\r\n this.group = group;\r\n this.overlay = overlay;\r\n this.addDisposables(overlay);\r\n }\r\n position(bounds) {\r\n this.overlay.setBounds(bounds);\r\n }\r\n}\r\n//# sourceMappingURL=dockviewFloatingGroupPanel.js.map","import { getRelativeLocation, getGridLocation, } from '../gridview/gridview';\r\nimport { directionToPosition, Droptarget } from '../dnd/droptarget';\r\nimport { tail, sequenceEquals, remove } from '../array';\r\nimport { DockviewPanel } from './dockviewPanel';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nimport { Event, Emitter } from '../events';\r\nimport { Watermark } from './components/watermark/watermark';\r\nimport { DockviewDropTargets, } from './types';\r\nimport { sequentialNumberGenerator } from '../math';\r\nimport { DefaultDockviewDeserialzier } from './deserializer';\r\nimport { createComponent } from '../panel/componentFactory';\r\nimport { isGroupOptionsWithGroup, isGroupOptionsWithPanel, isPanelOptionsWithGroup, isPanelOptionsWithPanel, } from './options';\r\nimport { BaseGrid, toTarget, } from '../gridview/baseComponentGridview';\r\nimport { DockviewApi } from '../api/component.api';\r\nimport { Orientation, Sizing } from '../splitview/splitview';\r\nimport { DockviewGroupPanel } from './dockviewGroupPanel';\r\nimport { DockviewPanelModel } from './dockviewPanelModel';\r\nimport { getPanelData } from '../dnd/dataTransfer';\r\nimport { Overlay } from '../dnd/overlay';\r\nimport { toggleClass, watchElementResize } from '../dom';\r\nimport { DockviewFloatingGroupPanel, } from './dockviewFloatingGroupPanel';\r\nconst DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;\r\nexport class DockviewComponent extends BaseGrid {\r\n get orientation() {\r\n return this.gridview.orientation;\r\n }\r\n get totalPanels() {\r\n return this.panels.length;\r\n }\r\n get panels() {\r\n return this.groups.flatMap((group) => group.panels);\r\n }\r\n get options() {\r\n return this._options;\r\n }\r\n get activePanel() {\r\n const activeGroup = this.activeGroup;\r\n if (!activeGroup) {\r\n return undefined;\r\n }\r\n return activeGroup.activePanel;\r\n }\r\n constructor(options) {\r\n super({\r\n proportionalLayout: true,\r\n orientation: options.orientation || Orientation.HORIZONTAL,\r\n styles: options.styles,\r\n parentElement: options.parentElement,\r\n });\r\n this.nextGroupId = sequentialNumberGenerator();\r\n this._deserializer = new DefaultDockviewDeserialzier(this);\r\n this.watermark = null;\r\n this._onWillDragPanel = new Emitter();\r\n this.onWillDragPanel = this._onWillDragPanel.event;\r\n this._onWillDragGroup = new Emitter();\r\n this.onWillDragGroup = this._onWillDragGroup.event;\r\n this._onDidDrop = new Emitter();\r\n this.onDidDrop = this._onDidDrop.event;\r\n this._onDidRemovePanel = new Emitter();\r\n this.onDidRemovePanel = this._onDidRemovePanel.event;\r\n this._onDidAddPanel = new Emitter();\r\n this.onDidAddPanel = this._onDidAddPanel.event;\r\n this._onDidLayoutFromJSON = new Emitter();\r\n this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;\r\n this._onDidActivePanelChange = new Emitter();\r\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\r\n this.floatingGroups = [];\r\n toggleClass(this.gridview.element, 'dv-dockview', true);\r\n this.addDisposables(this._onWillDragPanel, this._onWillDragGroup, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, Event.any(this.onDidAddGroup, this.onDidRemoveGroup)(() => {\r\n this.updateWatermark();\r\n }), Event.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {\r\n this._bufferOnDidLayoutChange.fire();\r\n }));\r\n this._options = options;\r\n if (!this.options.components) {\r\n this.options.components = {};\r\n }\r\n if (!this.options.frameworkComponents) {\r\n this.options.frameworkComponents = {};\r\n }\r\n if (!this.options.frameworkTabComponents) {\r\n this.options.frameworkTabComponents = {};\r\n }\r\n if (!this.options.tabComponents) {\r\n this.options.tabComponents = {};\r\n }\r\n if (!this.options.watermarkComponent &&\r\n !this.options.watermarkFrameworkComponent) {\r\n this.options.watermarkComponent = Watermark;\r\n }\r\n const dropTarget = new Droptarget(this.element, {\r\n canDisplayOverlay: (event, position) => {\r\n const data = getPanelData();\r\n if (data) {\r\n if (data.viewId !== this.id) {\r\n return false;\r\n }\r\n if (position === 'center') {\r\n // center drop target is only allowed if there are no panels in the grid\r\n // floating panels are allowed\r\n return this.gridview.length === 0;\r\n }\r\n return true;\r\n }\r\n if (this.options.showDndOverlay) {\r\n if (position === 'center' && this.gridview.length !== 0) {\r\n /**\r\n * for external events only show the four-corner drag overlays, disable\r\n * the center position so that external drag events can fall through to the group\r\n * and panel drop target handlers\r\n */\r\n return false;\r\n }\r\n return this.options.showDndOverlay({\r\n nativeEvent: event,\r\n position: position,\r\n target: DockviewDropTargets.Edge,\r\n getData: getPanelData,\r\n });\r\n }\r\n return false;\r\n },\r\n acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],\r\n overlayModel: {\r\n activationSize: { type: 'pixels', value: 10 },\r\n size: { type: 'pixels', value: 20 },\r\n },\r\n });\r\n this.addDisposables(dropTarget.onDrop((event) => {\r\n const data = getPanelData();\r\n if (data) {\r\n this.moveGroupOrPanel(this.orthogonalize(event.position), data.groupId, data.panelId || undefined, 'center');\r\n }\r\n else {\r\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: null, getData: getPanelData }));\r\n }\r\n }), dropTarget);\r\n this._api = new DockviewApi(this);\r\n this.updateWatermark();\r\n }\r\n addFloatingGroup(item, coord, options) {\r\n var _a, _b, _c, _d, _e, _f;\r\n let group;\r\n if (item instanceof DockviewPanel) {\r\n group = this.createGroup();\r\n this.removePanel(item, {\r\n removeEmptyGroup: true,\r\n skipDispose: true,\r\n });\r\n group.model.openPanel(item);\r\n }\r\n else {\r\n group = item;\r\n const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&\r\n options.skipRemoveGroup;\r\n if (!skip) {\r\n this.doRemoveGroup(item, { skipDispose: true });\r\n }\r\n }\r\n group.model.isFloating = true;\r\n const overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number' ? Math.max(coord.x, 0) : 100;\r\n const overlayTop = typeof (coord === null || coord === void 0 ? void 0 : coord.y) === 'number' ? Math.max(coord.y, 0) : 100;\r\n const overlay = new Overlay({\r\n container: this.gridview.element,\r\n content: group.element,\r\n height: (_a = coord === null || coord === void 0 ? void 0 : coord.height) !== null && _a !== void 0 ? _a : 300,\r\n width: (_b = coord === null || coord === void 0 ? void 0 : coord.width) !== null && _b !== void 0 ? _b : 300,\r\n left: overlayLeft,\r\n top: overlayTop,\r\n minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'\r\n ? undefined\r\n : (_d = (_c = this.options.floatingGroupBounds) === null || _c === void 0 ? void 0 : _c.minimumWidthWithinViewport) !== null && _d !== void 0 ? _d : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,\r\n minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'\r\n ? undefined\r\n : (_f = (_e = this.options.floatingGroupBounds) === null || _e === void 0 ? void 0 : _e.minimumHeightWithinViewport) !== null && _f !== void 0 ? _f : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,\r\n });\r\n const el = group.element.querySelector('.void-container');\r\n if (!el) {\r\n throw new Error('failed to find drag handle');\r\n }\r\n overlay.setupDrag(el, {\r\n inDragMode: typeof (options === null || options === void 0 ? void 0 : options.inDragMode) === 'boolean'\r\n ? options.inDragMode\r\n : false,\r\n });\r\n const floatingGroupPanel = new DockviewFloatingGroupPanel(group, overlay);\r\n const disposable = watchElementResize(group.element, (entry) => {\r\n const { width, height } = entry.contentRect;\r\n group.layout(width, height); // let the group know it's size is changing so it can fire events to the panel\r\n });\r\n floatingGroupPanel.addDisposables(overlay.onDidChange(() => {\r\n // this is either a resize or a move\r\n // to inform the panels .layout(...) the group with it's current size\r\n // don't care about resize since the above watcher handles that\r\n group.layout(group.height, group.width);\r\n }), overlay.onDidChangeEnd(() => {\r\n this._bufferOnDidLayoutChange.fire();\r\n }), group.onDidChange((event) => {\r\n overlay.setBounds({\r\n height: event === null || event === void 0 ? void 0 : event.height,\r\n width: event === null || event === void 0 ? void 0 : event.width,\r\n });\r\n }), {\r\n dispose: () => {\r\n disposable.dispose();\r\n group.model.isFloating = false;\r\n remove(this.floatingGroups, floatingGroupPanel);\r\n this.updateWatermark();\r\n },\r\n });\r\n this.floatingGroups.push(floatingGroupPanel);\r\n this.updateWatermark();\r\n }\r\n orthogonalize(position) {\r\n switch (position) {\r\n case 'top':\r\n case 'bottom':\r\n if (this.gridview.orientation === Orientation.HORIZONTAL) {\r\n // we need to add to a vertical splitview but the current root is a horizontal splitview.\r\n // insert a vertical splitview at the root level and add the existing view as a child\r\n this.gridview.insertOrthogonalSplitviewAtRoot();\r\n }\r\n break;\r\n case 'left':\r\n case 'right':\r\n if (this.gridview.orientation === Orientation.VERTICAL) {\r\n // we need to add to a horizontal splitview but the current root is a vertical splitview.\r\n // insert a horiziontal splitview at the root level and add the existing view as a child\r\n this.gridview.insertOrthogonalSplitviewAtRoot();\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n switch (position) {\r\n case 'top':\r\n case 'left':\r\n case 'center':\r\n return this.createGroupAtLocation([0]); // insert into first position\r\n case 'bottom':\r\n case 'right':\r\n return this.createGroupAtLocation([this.gridview.length]); // insert into last position\r\n default:\r\n throw new Error(`unsupported position ${position}`);\r\n }\r\n }\r\n updateOptions(options) {\r\n var _a, _b;\r\n const hasOrientationChanged = typeof options.orientation === 'string' &&\r\n this.gridview.orientation !== options.orientation;\r\n const hasFloatingGroupOptionsChanged = options.floatingGroupBounds !== undefined &&\r\n options.floatingGroupBounds !== this.options.floatingGroupBounds;\r\n this._options = Object.assign(Object.assign({}, this.options), options);\r\n if (hasOrientationChanged) {\r\n this.gridview.orientation = options.orientation;\r\n }\r\n if (hasFloatingGroupOptionsChanged) {\r\n for (const group of this.floatingGroups) {\r\n switch (this.options.floatingGroupBounds) {\r\n case 'boundedWithinViewport':\r\n group.overlay.minimumInViewportHeight = undefined;\r\n group.overlay.minimumInViewportWidth = undefined;\r\n break;\r\n case undefined:\r\n group.overlay.minimumInViewportHeight =\r\n DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;\r\n group.overlay.minimumInViewportWidth =\r\n DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;\r\n break;\r\n default:\r\n group.overlay.minimumInViewportHeight =\r\n (_a = this.options.floatingGroupBounds) === null || _a === void 0 ? void 0 : _a.minimumHeightWithinViewport;\r\n group.overlay.minimumInViewportWidth =\r\n (_b = this.options.floatingGroupBounds) === null || _b === void 0 ? void 0 : _b.minimumWidthWithinViewport;\r\n }\r\n group.overlay.setBounds({});\r\n }\r\n }\r\n this.layout(this.gridview.width, this.gridview.height, true);\r\n }\r\n layout(width, height, forceResize) {\r\n super.layout(width, height, forceResize);\r\n if (this.floatingGroups) {\r\n for (const floating of this.floatingGroups) {\r\n // ensure floting groups stay within visible boundaries\r\n floating.overlay.setBounds();\r\n }\r\n }\r\n }\r\n focus() {\r\n var _a;\r\n (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();\r\n }\r\n getGroupPanel(id) {\r\n return this.panels.find((panel) => panel.id === id);\r\n }\r\n setActivePanel(panel) {\r\n this.doSetGroupActive(panel.group);\r\n panel.group.model.openPanel(panel);\r\n }\r\n moveToNext(options = {}) {\r\n var _a;\r\n if (!options.group) {\r\n if (!this.activeGroup) {\r\n return;\r\n }\r\n options.group = this.activeGroup;\r\n }\r\n if (options.includePanel && options.group) {\r\n if (options.group.activePanel !==\r\n options.group.panels[options.group.panels.length - 1]) {\r\n options.group.model.moveToNext({ suppressRoll: true });\r\n return;\r\n }\r\n }\r\n const location = getGridLocation(options.group.element);\r\n const next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;\r\n this.doSetGroupActive(next);\r\n }\r\n moveToPrevious(options = {}) {\r\n var _a;\r\n if (!options.group) {\r\n if (!this.activeGroup) {\r\n return;\r\n }\r\n options.group = this.activeGroup;\r\n }\r\n if (options.includePanel && options.group) {\r\n if (options.group.activePanel !== options.group.panels[0]) {\r\n options.group.model.moveToPrevious({ suppressRoll: true });\r\n return;\r\n }\r\n }\r\n const location = getGridLocation(options.group.element);\r\n const next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;\r\n if (next) {\r\n this.doSetGroupActive(next);\r\n }\r\n }\r\n /**\r\n * Serialize the current state of the layout\r\n *\r\n * @returns A JSON respresentation of the layout\r\n */\r\n toJSON() {\r\n var _a;\r\n const data = this.gridview.serialize();\r\n const panels = this.panels.reduce((collection, panel) => {\r\n collection[panel.id] = panel.toJSON();\r\n return collection;\r\n }, {});\r\n const floats = this.floatingGroups.map((floatingGroup) => {\r\n return {\r\n data: floatingGroup.group.toJSON(),\r\n position: floatingGroup.overlay.toJSON(),\r\n };\r\n });\r\n const result = {\r\n grid: data,\r\n panels,\r\n activeGroup: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,\r\n };\r\n if (floats.length > 0) {\r\n result.floatingGroups = floats;\r\n }\r\n return result;\r\n }\r\n fromJSON(data) {\r\n var _a;\r\n this.clear();\r\n const { grid, panels, activeGroup } = data;\r\n if (grid.root.type !== 'branch' || !Array.isArray(grid.root.data)) {\r\n throw new Error('root must be of type branch');\r\n }\r\n // take note of the existing dimensions\r\n const width = this.width;\r\n const height = this.height;\r\n const createGroupFromSerializedState = (data) => {\r\n const { id, locked, hideHeader, views, activeView } = data;\r\n const group = this.createGroup({\r\n id,\r\n locked: !!locked,\r\n hideHeader: !!hideHeader,\r\n });\r\n this._onDidAddGroup.fire(group);\r\n for (const child of views) {\r\n const panel = this._deserializer.fromJSON(panels[child], group);\r\n const isActive = typeof activeView === 'string' && activeView === panel.id;\r\n group.model.openPanel(panel, {\r\n skipSetPanelActive: !isActive,\r\n skipSetGroupActive: true,\r\n });\r\n }\r\n if (!group.activePanel && group.panels.length > 0) {\r\n group.model.openPanel(group.panels[group.panels.length - 1], {\r\n skipSetGroupActive: true,\r\n });\r\n }\r\n return group;\r\n };\r\n this.gridview.deserialize(grid, {\r\n fromJSON: (node) => {\r\n return createGroupFromSerializedState(node.data);\r\n },\r\n });\r\n this.layout(width, height, true);\r\n const serializedFloatingGroups = (_a = data.floatingGroups) !== null && _a !== void 0 ? _a : [];\r\n for (const serializedFloatingGroup of serializedFloatingGroups) {\r\n const { data, position } = serializedFloatingGroup;\r\n const group = createGroupFromSerializedState(data);\r\n this.addFloatingGroup(group, {\r\n x: position.left,\r\n y: position.top,\r\n height: position.height,\r\n width: position.width,\r\n }, { skipRemoveGroup: true, inDragMode: false });\r\n }\r\n for (const floatingGroup of this.floatingGroups) {\r\n floatingGroup.overlay.setBounds();\r\n }\r\n if (typeof activeGroup === 'string') {\r\n const panel = this.getPanel(activeGroup);\r\n if (panel) {\r\n this.doSetGroupActive(panel);\r\n }\r\n }\r\n this._onDidLayoutFromJSON.fire();\r\n }\r\n clear() {\r\n const groups = Array.from(this._groups.values()).map((_) => _.value);\r\n const hasActiveGroup = !!this.activeGroup;\r\n const hasActivePanel = !!this.activePanel;\r\n for (const group of groups) {\r\n // remove the group will automatically remove the panels\r\n this.removeGroup(group, { skipActive: true });\r\n }\r\n if (hasActiveGroup) {\r\n this.doSetGroupActive(undefined);\r\n }\r\n if (hasActivePanel) {\r\n this._onDidActivePanelChange.fire(undefined);\r\n }\r\n this.gridview.clear();\r\n }\r\n closeAllGroups() {\r\n for (const entry of this._groups.entries()) {\r\n const [_, group] = entry;\r\n group.value.model.closeAllPanels();\r\n }\r\n }\r\n addPanel(options) {\r\n var _a, _b;\r\n if (this.panels.find((_) => _.id === options.id)) {\r\n throw new Error(`panel with id ${options.id} already exists`);\r\n }\r\n let referenceGroup;\r\n if (options.position && options.floating) {\r\n throw new Error('you can only provide one of: position, floating as arguments to .addPanel(...)');\r\n }\r\n if (options.position) {\r\n if (isPanelOptionsWithPanel(options.position)) {\r\n const referencePanel = typeof options.position.referencePanel === 'string'\r\n ? this.getGroupPanel(options.position.referencePanel)\r\n : options.position.referencePanel;\r\n if (!referencePanel) {\r\n throw new Error(`referencePanel ${options.position.referencePanel} does not exist`);\r\n }\r\n referenceGroup = this.findGroup(referencePanel);\r\n }\r\n else if (isPanelOptionsWithGroup(options.position)) {\r\n referenceGroup =\r\n typeof options.position.referenceGroup === 'string'\r\n ? (_a = this._groups.get(options.position.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value\r\n : options.position.referenceGroup;\r\n if (!referenceGroup) {\r\n throw new Error(`referencePanel ${options.position.referenceGroup} does not exist`);\r\n }\r\n }\r\n else {\r\n const group = this.orthogonalize(directionToPosition(options.position.direction));\r\n const panel = this.createPanel(options, group);\r\n group.model.openPanel(panel);\r\n return panel;\r\n }\r\n }\r\n else {\r\n referenceGroup = this.activeGroup;\r\n }\r\n let panel;\r\n if (referenceGroup) {\r\n const target = toTarget(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');\r\n if (options.floating) {\r\n const group = this.createGroup();\r\n panel = this.createPanel(options, group);\r\n group.model.openPanel(panel);\r\n const o = typeof options.floating === 'object' &&\r\n options.floating !== null\r\n ? options.floating\r\n : {};\r\n this.addFloatingGroup(group, o, {\r\n inDragMode: false,\r\n skipRemoveGroup: true,\r\n });\r\n }\r\n else if (referenceGroup.api.isFloating || target === 'center') {\r\n panel = this.createPanel(options, referenceGroup);\r\n referenceGroup.model.openPanel(panel);\r\n }\r\n else {\r\n const location = getGridLocation(referenceGroup.element);\r\n const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\r\n const group = this.createGroupAtLocation(relativeLocation);\r\n panel = this.createPanel(options, group);\r\n group.model.openPanel(panel);\r\n }\r\n }\r\n else if (options.floating) {\r\n const group = this.createGroup();\r\n panel = this.createPanel(options, group);\r\n group.model.openPanel(panel);\r\n const o = typeof options.floating === 'object' &&\r\n options.floating !== null\r\n ? options.floating\r\n : {};\r\n this.addFloatingGroup(group, o, {\r\n inDragMode: false,\r\n skipRemoveGroup: true,\r\n });\r\n }\r\n else {\r\n const group = this.createGroupAtLocation();\r\n panel = this.createPanel(options, group);\r\n group.model.openPanel(panel);\r\n }\r\n return panel;\r\n }\r\n removePanel(panel, options = {\r\n removeEmptyGroup: true,\r\n skipDispose: false,\r\n }) {\r\n const group = panel.group;\r\n if (!group) {\r\n throw new Error(`cannot remove panel ${panel.id}. it's missing a group.`);\r\n }\r\n group.model.removePanel(panel);\r\n if (!options.skipDispose) {\r\n panel.dispose();\r\n }\r\n if (group.size === 0 && options.removeEmptyGroup) {\r\n this.removeGroup(group);\r\n }\r\n }\r\n createWatermarkComponent() {\r\n var _a;\r\n return createComponent('watermark-id', 'watermark-name', this.options.watermarkComponent\r\n ? { 'watermark-name': this.options.watermarkComponent }\r\n : {}, this.options.watermarkFrameworkComponent\r\n ? { 'watermark-name': this.options.watermarkFrameworkComponent }\r\n : {}, (_a = this.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.watermark);\r\n }\r\n updateWatermark() {\r\n var _a, _b;\r\n if (this.groups.filter((x) => !x.api.isFloating).length === 0) {\r\n if (!this.watermark) {\r\n this.watermark = this.createWatermarkComponent();\r\n this.watermark.init({\r\n containerApi: new DockviewApi(this),\r\n });\r\n const watermarkContainer = document.createElement('div');\r\n watermarkContainer.className = 'dv-watermark-container';\r\n watermarkContainer.appendChild(this.watermark.element);\r\n this.gridview.element.appendChild(watermarkContainer);\r\n }\r\n }\r\n else if (this.watermark) {\r\n this.watermark.element.parentElement.remove();\r\n (_b = (_a = this.watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n this.watermark = null;\r\n }\r\n }\r\n addGroup(options) {\r\n var _a;\r\n const group = this.createGroup();\r\n if (options) {\r\n let referenceGroup;\r\n if (isGroupOptionsWithPanel(options)) {\r\n const referencePanel = typeof options.referencePanel === 'string'\r\n ? this.panels.find((panel) => panel.id === options.referencePanel)\r\n : options.referencePanel;\r\n if (!referencePanel) {\r\n throw new Error(`reference panel ${options.referencePanel} does not exist`);\r\n }\r\n referenceGroup = this.findGroup(referencePanel);\r\n if (!referenceGroup) {\r\n throw new Error(`reference group for reference panel ${options.referencePanel} does not exist`);\r\n }\r\n }\r\n else if (isGroupOptionsWithGroup(options)) {\r\n referenceGroup =\r\n typeof options.referenceGroup === 'string'\r\n ? (_a = this._groups.get(options.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value\r\n : options.referenceGroup;\r\n if (!referenceGroup) {\r\n throw new Error(`reference group ${options.referenceGroup} does not exist`);\r\n }\r\n }\r\n else {\r\n const group = this.orthogonalize(directionToPosition(options.direction));\r\n return group;\r\n }\r\n const target = toTarget(options.direction || 'within');\r\n const location = getGridLocation(referenceGroup.element);\r\n const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\r\n this.doAddGroup(group, relativeLocation);\r\n return group;\r\n }\r\n else {\r\n this.doAddGroup(group);\r\n return group;\r\n }\r\n }\r\n removeGroup(group, options) {\r\n var _a;\r\n const panels = [...group.panels]; // reassign since group panels will mutate\r\n for (const panel of panels) {\r\n this.removePanel(panel, {\r\n removeEmptyGroup: false,\r\n skipDispose: (_a = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _a !== void 0 ? _a : false,\r\n });\r\n }\r\n this.doRemoveGroup(group, options);\r\n }\r\n doRemoveGroup(group, options) {\r\n const floatingGroup = this.floatingGroups.find((_) => _.group === group);\r\n if (floatingGroup) {\r\n if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {\r\n floatingGroup.group.dispose();\r\n this._groups.delete(group.id);\r\n }\r\n floatingGroup.dispose();\r\n return floatingGroup.group;\r\n }\r\n return super.doRemoveGroup(group, options);\r\n }\r\n moveGroupOrPanel(destinationGroup, sourceGroupId, sourceItemId, destinationTarget, destinationIndex) {\r\n var _a;\r\n const sourceGroup = sourceGroupId\r\n ? (_a = this._groups.get(sourceGroupId)) === null || _a === void 0 ? void 0 : _a.value\r\n : undefined;\r\n if (sourceItemId === undefined) {\r\n if (sourceGroup) {\r\n this.moveGroup(sourceGroup, destinationGroup, destinationTarget);\r\n }\r\n return;\r\n }\r\n if (!destinationTarget || destinationTarget === 'center') {\r\n const groupItem = (sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(sourceItemId)) ||\r\n this.panels.find((panel) => panel.id === sourceItemId);\r\n if (!groupItem) {\r\n throw new Error(`No panel with id ${sourceItemId}`);\r\n }\r\n if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {\r\n this.doRemoveGroup(sourceGroup);\r\n }\r\n destinationGroup.model.openPanel(groupItem, {\r\n index: destinationIndex,\r\n });\r\n }\r\n else {\r\n const referenceLocation = getGridLocation(destinationGroup.element);\r\n const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);\r\n if (sourceGroup && sourceGroup.size < 2) {\r\n const [targetParentLocation, to] = tail(targetLocation);\r\n const isFloating = this.floatingGroups.find((x) => x.group === sourceGroup);\r\n if (!isFloating) {\r\n const sourceLocation = getGridLocation(sourceGroup.element);\r\n const [sourceParentLocation, from] = tail(sourceLocation);\r\n if (sequenceEquals(sourceParentLocation, targetParentLocation)) {\r\n // special case when 'swapping' two views within same grid location\r\n // if a group has one tab - we are essentially moving the 'group'\r\n // which is equivalent to swapping two views in this case\r\n this.gridview.moveView(sourceParentLocation, from, to);\r\n }\r\n }\r\n // source group will become empty so delete the group\r\n const targetGroup = this.doRemoveGroup(sourceGroup, {\r\n skipActive: true,\r\n skipDispose: true,\r\n });\r\n // after deleting the group we need to re-evaulate the ref location\r\n const updatedReferenceLocation = getGridLocation(destinationGroup.element);\r\n const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, destinationTarget);\r\n this.doAddGroup(targetGroup, location);\r\n }\r\n else {\r\n const groupItem = (sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(sourceItemId)) ||\r\n this.panels.find((panel) => panel.id === sourceItemId);\r\n if (!groupItem) {\r\n throw new Error(`No panel with id ${sourceItemId}`);\r\n }\r\n const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);\r\n const group = this.createGroupAtLocation(dropLocation);\r\n group.model.openPanel(groupItem);\r\n }\r\n }\r\n }\r\n moveGroup(sourceGroup, referenceGroup, target) {\r\n if (sourceGroup) {\r\n if (!target || target === 'center') {\r\n const activePanel = sourceGroup.activePanel;\r\n const panels = [...sourceGroup.panels].map((p) => sourceGroup.model.removePanel(p.id));\r\n if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {\r\n this.doRemoveGroup(sourceGroup);\r\n }\r\n for (const panel of panels) {\r\n referenceGroup.model.openPanel(panel, {\r\n skipSetPanelActive: panel !== activePanel,\r\n });\r\n }\r\n }\r\n else {\r\n const floatingGroup = this.floatingGroups.find((x) => x.group === sourceGroup);\r\n if (floatingGroup) {\r\n floatingGroup.dispose();\r\n }\r\n else {\r\n this.gridview.removeView(getGridLocation(sourceGroup.element));\r\n }\r\n const referenceLocation = getGridLocation(referenceGroup.element);\r\n const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);\r\n this.gridview.addView(sourceGroup, Sizing.Distribute, dropLocation);\r\n }\r\n }\r\n }\r\n doSetGroupActive(group, skipFocus) {\r\n var _a, _b;\r\n const isGroupAlreadyFocused = this._activeGroup === group;\r\n super.doSetGroupActive(group, skipFocus);\r\n if (!isGroupAlreadyFocused && ((_a = this._activeGroup) === null || _a === void 0 ? void 0 : _a.activePanel)) {\r\n this._onDidActivePanelChange.fire((_b = this._activeGroup) === null || _b === void 0 ? void 0 : _b.activePanel);\r\n }\r\n }\r\n createGroup(options) {\r\n if (!options) {\r\n options = {};\r\n }\r\n let id = options === null || options === void 0 ? void 0 : options.id;\r\n if (id && this._groups.has(options.id)) {\r\n console.warn(`Duplicate group id ${options === null || options === void 0 ? void 0 : options.id}. reassigning group id to avoid errors`);\r\n id = undefined;\r\n }\r\n if (!id) {\r\n id = this.nextGroupId.next();\r\n while (this._groups.has(id)) {\r\n id = this.nextGroupId.next();\r\n }\r\n }\r\n const view = new DockviewGroupPanel(this, id, options);\r\n view.init({ params: {}, accessor: null }); // required to initialized .part and allow for correct disposal of group\r\n if (!this._groups.has(view.id)) {\r\n const disposable = new CompositeDisposable(view.model.onTabDragStart((event) => {\r\n this._onWillDragPanel.fire(event);\r\n }), view.model.onGroupDragStart((event) => {\r\n this._onWillDragGroup.fire(event);\r\n }), view.model.onMove((event) => {\r\n const { groupId, itemId, target, index } = event;\r\n this.moveGroupOrPanel(view, groupId, itemId, target, index);\r\n }), view.model.onDidDrop((event) => {\r\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: view }));\r\n }), view.model.onDidAddPanel((event) => {\r\n this._onDidAddPanel.fire(event.panel);\r\n }), view.model.onDidRemovePanel((event) => {\r\n this._onDidRemovePanel.fire(event.panel);\r\n }), view.model.onDidActivePanelChange((event) => {\r\n this._onDidActivePanelChange.fire(event.panel);\r\n }));\r\n this._groups.set(view.id, { value: view, disposable });\r\n }\r\n // TODO: must be called after the above listeners have been setup,\r\n // not an ideal pattern\r\n view.initialize();\r\n return view;\r\n }\r\n createPanel(options, group) {\r\n const contentComponent = options.component;\r\n const tabComponent = options.tabComponent || this.options.defaultTabComponent;\r\n const view = new DockviewPanelModel(this, options.id, contentComponent, tabComponent);\r\n const panel = new DockviewPanel(options.id, this, this._api, group, view);\r\n panel.init({\r\n title: options.title || options.id,\r\n params: (options === null || options === void 0 ? void 0 : options.params) || {},\r\n });\r\n return panel;\r\n }\r\n createGroupAtLocation(location = [0]) {\r\n const group = this.createGroup();\r\n this.doAddGroup(group, location);\r\n return group;\r\n }\r\n findGroup(panel) {\r\n var _a;\r\n return (_a = Array.from(this._groups.values()).find((group) => group.value.model.containsPanel(panel))) === null || _a === void 0 ? void 0 : _a.value;\r\n }\r\n}\r\n//# sourceMappingURL=dockviewComponent.js.map","import { getRelativeLocation, getGridLocation, } from './gridview';\r\nimport { tail, sequenceEquals } from '../array';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nimport { BaseGrid, toTarget, } from './baseComponentGridview';\r\nimport { createComponent } from '../panel/componentFactory';\r\nimport { Emitter } from '../events';\r\nexport class GridviewComponent extends BaseGrid {\r\n get orientation() {\r\n return this.gridview.orientation;\r\n }\r\n set orientation(value) {\r\n this.gridview.orientation = value;\r\n }\r\n get options() {\r\n return this._options;\r\n }\r\n get deserializer() {\r\n return this._deserializer;\r\n }\r\n set deserializer(value) {\r\n this._deserializer = value;\r\n }\r\n constructor(options) {\r\n super({\r\n parentElement: options.parentElement,\r\n proportionalLayout: options.proportionalLayout,\r\n orientation: options.orientation,\r\n styles: options.styles,\r\n });\r\n this._onDidLayoutfromJSON = new Emitter();\r\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\r\n this._options = options;\r\n if (!this.options.components) {\r\n this.options.components = {};\r\n }\r\n if (!this.options.frameworkComponents) {\r\n this.options.frameworkComponents = {};\r\n }\r\n }\r\n updateOptions(options) {\r\n const hasOrientationChanged = typeof options.orientation === 'string' &&\r\n this.gridview.orientation !== options.orientation;\r\n this._options = Object.assign(Object.assign({}, this.options), options);\r\n if (hasOrientationChanged) {\r\n this.gridview.orientation = options.orientation;\r\n }\r\n this.layout(this.gridview.width, this.gridview.height, true);\r\n }\r\n removePanel(panel) {\r\n this.removeGroup(panel);\r\n }\r\n /**\r\n * Serialize the current state of the layout\r\n *\r\n * @returns A JSON respresentation of the layout\r\n */\r\n toJSON() {\r\n var _a;\r\n const data = this.gridview.serialize();\r\n return {\r\n grid: data,\r\n activePanel: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,\r\n };\r\n }\r\n setVisible(panel, visible) {\r\n this.gridview.setViewVisible(getGridLocation(panel.element), visible);\r\n }\r\n setActive(panel) {\r\n this._groups.forEach((value, _key) => {\r\n value.value.setActive(panel === value.value);\r\n });\r\n }\r\n focus() {\r\n var _a;\r\n (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();\r\n }\r\n fromJSON(serializedGridview) {\r\n this.clear();\r\n const { grid, activePanel } = serializedGridview;\r\n const queue = [];\r\n // take note of the existing dimensions\r\n const width = this.width;\r\n const height = this.height;\r\n this.gridview.deserialize(grid, {\r\n fromJSON: (node) => {\r\n const { data } = node;\r\n const view = createComponent(data.id, data.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkComponentFactory\r\n ? {\r\n createComponent: this.options.frameworkComponentFactory\r\n .createComponent,\r\n }\r\n : undefined);\r\n queue.push(() => view.init({\r\n params: data.params,\r\n minimumWidth: data.minimumWidth,\r\n maximumWidth: data.maximumWidth,\r\n minimumHeight: data.minimumHeight,\r\n maximumHeight: data.maximumHeight,\r\n priority: data.priority,\r\n snap: !!data.snap,\r\n accessor: this,\r\n isVisible: node.visible,\r\n }));\r\n this._onDidAddGroup.fire(view);\r\n this.registerPanel(view);\r\n return view;\r\n },\r\n });\r\n this.layout(width, height, true);\r\n queue.forEach((f) => f());\r\n if (typeof activePanel === 'string') {\r\n const panel = this.getPanel(activePanel);\r\n if (panel) {\r\n this.doSetGroupActive(panel);\r\n }\r\n }\r\n this._onDidLayoutfromJSON.fire();\r\n }\r\n clear() {\r\n const hasActiveGroup = this.activeGroup;\r\n const groups = Array.from(this._groups.values()); // reassign since group panels will mutate\r\n for (const group of groups) {\r\n group.disposable.dispose();\r\n this.doRemoveGroup(group.value, { skipActive: true });\r\n }\r\n if (hasActiveGroup) {\r\n this.doSetGroupActive(undefined);\r\n }\r\n this.gridview.clear();\r\n }\r\n movePanel(panel, options) {\r\n var _a;\r\n let relativeLocation;\r\n const removedPanel = this.gridview.remove(panel);\r\n const referenceGroup = (_a = this._groups.get(options.reference)) === null || _a === void 0 ? void 0 : _a.value;\r\n if (!referenceGroup) {\r\n throw new Error(`reference group ${options.reference} does not exist`);\r\n }\r\n const target = toTarget(options.direction);\r\n if (target === 'center') {\r\n throw new Error(`${target} not supported as an option`);\r\n }\r\n else {\r\n const location = getGridLocation(referenceGroup.element);\r\n relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\r\n }\r\n this.doAddGroup(removedPanel, relativeLocation, options.size);\r\n }\r\n addPanel(options) {\r\n var _a, _b;\r\n let relativeLocation = options.location || [0];\r\n if ((_a = options.position) === null || _a === void 0 ? void 0 : _a.referencePanel) {\r\n const referenceGroup = (_b = this._groups.get(options.position.referencePanel)) === null || _b === void 0 ? void 0 : _b.value;\r\n if (!referenceGroup) {\r\n throw new Error(`reference group ${options.position.referencePanel} does not exist`);\r\n }\r\n const target = toTarget(options.position.direction);\r\n if (target === 'center') {\r\n throw new Error(`${target} not supported as an option`);\r\n }\r\n else {\r\n const location = getGridLocation(referenceGroup.element);\r\n relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\r\n }\r\n }\r\n const view = createComponent(options.id, options.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkComponentFactory\r\n ? {\r\n createComponent: this.options.frameworkComponentFactory\r\n .createComponent,\r\n }\r\n : undefined);\r\n view.init({\r\n params: options.params || {},\r\n minimumWidth: options.minimumWidth,\r\n maximumWidth: options.maximumWidth,\r\n minimumHeight: options.minimumHeight,\r\n maximumHeight: options.maximumHeight,\r\n priority: options.priority,\r\n snap: !!options.snap,\r\n accessor: this,\r\n isVisible: true,\r\n });\r\n this.registerPanel(view);\r\n this.doAddGroup(view, relativeLocation, options.size);\r\n return view;\r\n }\r\n registerPanel(panel) {\r\n const disposable = new CompositeDisposable(panel.api.onDidFocusChange((event) => {\r\n if (!event.isFocused) {\r\n return;\r\n }\r\n this._groups.forEach((groupItem) => {\r\n const group = groupItem.value;\r\n if (group !== panel) {\r\n group.setActive(false);\r\n }\r\n else {\r\n group.setActive(true);\r\n }\r\n });\r\n }));\r\n this._groups.set(panel.id, {\r\n value: panel,\r\n disposable,\r\n });\r\n }\r\n moveGroup(referenceGroup, groupId, target) {\r\n const sourceGroup = this.getPanel(groupId);\r\n if (!sourceGroup) {\r\n throw new Error('invalid operation');\r\n }\r\n const referenceLocation = getGridLocation(referenceGroup.element);\r\n const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);\r\n const [targetParentLocation, to] = tail(targetLocation);\r\n const sourceLocation = getGridLocation(sourceGroup.element);\r\n const [sourceParentLocation, from] = tail(sourceLocation);\r\n if (sequenceEquals(sourceParentLocation, targetParentLocation)) {\r\n // special case when 'swapping' two views within same grid location\r\n // if a group has one tab - we are essentially moving the 'group'\r\n // which is equivalent to swapping two views in this case\r\n this.gridview.moveView(sourceParentLocation, from, to);\r\n return;\r\n }\r\n // source group will become empty so delete the group\r\n const targetGroup = this.doRemoveGroup(sourceGroup, {\r\n skipActive: true,\r\n skipDispose: true,\r\n });\r\n // after deleting the group we need to re-evaulate the ref location\r\n const updatedReferenceLocation = getGridLocation(referenceGroup.element);\r\n const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, target);\r\n this.doAddGroup(targetGroup, location);\r\n }\r\n removeGroup(group) {\r\n super.removeGroup(group);\r\n }\r\n dispose() {\r\n super.dispose();\r\n this._onDidLayoutfromJSON.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=gridviewComponent.js.map","import { CompositeDisposable, MutableDisposable, } from '../lifecycle';\r\nimport { Orientation, Sizing, Splitview, } from './splitview';\r\nimport { Emitter } from '../events';\r\nimport { createComponent } from '../panel/componentFactory';\r\nimport { Resizable } from '../resizable';\r\n/**\r\n * A high-level implementation of splitview that works using 'panels'\r\n */\r\nexport class SplitviewComponent extends Resizable {\r\n get panels() {\r\n return this.splitview.getViews();\r\n }\r\n get options() {\r\n return this._options;\r\n }\r\n get length() {\r\n return this._panels.size;\r\n }\r\n get orientation() {\r\n return this.splitview.orientation;\r\n }\r\n get splitview() {\r\n return this._splitview;\r\n }\r\n set splitview(value) {\r\n this._splitview = value;\r\n this._splitviewChangeDisposable.value = new CompositeDisposable(this._splitview.onDidSashEnd(() => {\r\n this._onDidLayoutChange.fire(undefined);\r\n }), this._splitview.onDidAddView((e) => this._onDidAddView.fire(e)), this._splitview.onDidRemoveView((e) => this._onDidRemoveView.fire(e)));\r\n }\r\n get minimumSize() {\r\n return this.splitview.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.splitview.maximumSize;\r\n }\r\n get height() {\r\n return this.splitview.orientation === Orientation.HORIZONTAL\r\n ? this.splitview.orthogonalSize\r\n : this.splitview.size;\r\n }\r\n get width() {\r\n return this.splitview.orientation === Orientation.HORIZONTAL\r\n ? this.splitview.size\r\n : this.splitview.orthogonalSize;\r\n }\r\n constructor(options) {\r\n super(options.parentElement);\r\n this._splitviewChangeDisposable = new MutableDisposable();\r\n this._panels = new Map();\r\n this._onDidLayoutfromJSON = new Emitter();\r\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\r\n this._onDidAddView = new Emitter();\r\n this.onDidAddView = this._onDidAddView.event;\r\n this._onDidRemoveView = new Emitter();\r\n this.onDidRemoveView = this._onDidRemoveView.event;\r\n this._onDidLayoutChange = new Emitter();\r\n this.onDidLayoutChange = this._onDidLayoutChange.event;\r\n this._options = options;\r\n if (!options.components) {\r\n options.components = {};\r\n }\r\n if (!options.frameworkComponents) {\r\n options.frameworkComponents = {};\r\n }\r\n this.splitview = new Splitview(this.element, options);\r\n this.addDisposables(this._onDidAddView, this._onDidLayoutfromJSON, this._onDidRemoveView, this._onDidLayoutChange);\r\n }\r\n updateOptions(options) {\r\n const hasOrientationChanged = typeof options.orientation === 'string' &&\r\n this.options.orientation !== options.orientation;\r\n this._options = Object.assign(Object.assign({}, this.options), options);\r\n if (hasOrientationChanged) {\r\n this.splitview.orientation = options.orientation;\r\n }\r\n this.splitview.layout(this.splitview.size, this.splitview.orthogonalSize);\r\n }\r\n focus() {\r\n var _a;\r\n (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();\r\n }\r\n movePanel(from, to) {\r\n this.splitview.moveView(from, to);\r\n }\r\n setVisible(panel, visible) {\r\n const index = this.panels.indexOf(panel);\r\n this.splitview.setViewVisible(index, visible);\r\n }\r\n setActive(view, skipFocus) {\r\n this._activePanel = view;\r\n this.panels\r\n .filter((v) => v !== view)\r\n .forEach((v) => {\r\n v.api._onDidActiveChange.fire({ isActive: false });\r\n if (!skipFocus) {\r\n v.focus();\r\n }\r\n });\r\n view.api._onDidActiveChange.fire({ isActive: true });\r\n if (!skipFocus) {\r\n view.focus();\r\n }\r\n }\r\n removePanel(panel, sizing) {\r\n const item = this._panels.get(panel.id);\r\n if (!item) {\r\n throw new Error(`unknown splitview panel ${panel.id}`);\r\n }\r\n item.dispose();\r\n this._panels.delete(panel.id);\r\n const index = this.panels.findIndex((_) => _ === panel);\r\n const removedView = this.splitview.removeView(index, sizing);\r\n removedView.dispose();\r\n const panels = this.panels;\r\n if (panels.length > 0) {\r\n this.setActive(panels[panels.length - 1]);\r\n }\r\n }\r\n getPanel(id) {\r\n return this.panels.find((view) => view.id === id);\r\n }\r\n addPanel(options) {\r\n if (this._panels.has(options.id)) {\r\n throw new Error(`panel ${options.id} already exists`);\r\n }\r\n const view = createComponent(options.id, options.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkWrapper\r\n ? {\r\n createComponent: this.options.frameworkWrapper.createComponent,\r\n }\r\n : undefined);\r\n view.orientation = this.splitview.orientation;\r\n view.init({\r\n params: options.params || {},\r\n minimumSize: options.minimumSize,\r\n maximumSize: options.maximumSize,\r\n snap: options.snap,\r\n priority: options.priority,\r\n accessor: this,\r\n });\r\n const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;\r\n const index = typeof options.index === 'number' ? options.index : undefined;\r\n this.splitview.addView(view, size, index);\r\n this.doAddView(view);\r\n this.setActive(view);\r\n return view;\r\n }\r\n layout(width, height) {\r\n const [size, orthogonalSize] = this.splitview.orientation === Orientation.HORIZONTAL\r\n ? [width, height]\r\n : [height, width];\r\n this.splitview.layout(size, orthogonalSize);\r\n }\r\n doAddView(view) {\r\n const disposable = view.api.onDidFocusChange((event) => {\r\n if (!event.isFocused) {\r\n return;\r\n }\r\n this.setActive(view, true);\r\n });\r\n this._panels.set(view.id, disposable);\r\n }\r\n toJSON() {\r\n var _a;\r\n const views = this.splitview\r\n .getViews()\r\n .map((view, i) => {\r\n const size = this.splitview.getViewSize(i);\r\n return {\r\n size,\r\n data: view.toJSON(),\r\n snap: !!view.snap,\r\n priority: view.priority,\r\n };\r\n });\r\n return {\r\n views,\r\n activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,\r\n size: this.splitview.size,\r\n orientation: this.splitview.orientation,\r\n };\r\n }\r\n fromJSON(serializedSplitview) {\r\n this.clear();\r\n const { views, orientation, size, activeView } = serializedSplitview;\r\n const queue = [];\r\n // take note of the existing dimensions\r\n const width = this.width;\r\n const height = this.height;\r\n this.splitview = new Splitview(this.element, {\r\n orientation,\r\n proportionalLayout: this.options.proportionalLayout,\r\n descriptor: {\r\n size,\r\n views: views.map((view) => {\r\n const data = view.data;\r\n if (this._panels.has(data.id)) {\r\n throw new Error(`panel ${data.id} already exists`);\r\n }\r\n const panel = createComponent(data.id, data.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkWrapper\r\n ? {\r\n createComponent: this.options.frameworkWrapper\r\n .createComponent,\r\n }\r\n : undefined);\r\n queue.push(() => {\r\n panel.init({\r\n params: data.params || {},\r\n minimumSize: data.minimumSize,\r\n maximumSize: data.maximumSize,\r\n snap: view.snap,\r\n priority: view.priority,\r\n accessor: this,\r\n });\r\n });\r\n panel.orientation = orientation;\r\n this.doAddView(panel);\r\n setTimeout(() => {\r\n // the original onDidAddView events are missed since they are fired before we can subcribe to them\r\n this._onDidAddView.fire(panel);\r\n }, 0);\r\n return { size: view.size, view: panel };\r\n }),\r\n },\r\n });\r\n this.layout(width, height);\r\n queue.forEach((f) => f());\r\n if (typeof activeView === 'string') {\r\n const panel = this.getPanel(activeView);\r\n if (panel) {\r\n this.setActive(panel);\r\n }\r\n }\r\n this._onDidLayoutfromJSON.fire();\r\n }\r\n clear() {\r\n for (const disposable of this._panels.values()) {\r\n disposable.dispose();\r\n }\r\n this._panels.clear();\r\n while (this.splitview.length > 0) {\r\n const view = this.splitview.removeView(0, Sizing.Distribute, true);\r\n view.dispose();\r\n }\r\n }\r\n dispose() {\r\n for (const disposable of this._panels.values()) {\r\n disposable.dispose();\r\n }\r\n this._panels.clear();\r\n const views = this.splitview.getViews();\r\n this._splitviewChangeDisposable.dispose();\r\n this.splitview.dispose();\r\n for (const view of views) {\r\n view.dispose();\r\n }\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=splitviewComponent.js.map","import { addDisposableListener } from '../events';\r\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\r\nimport { toggleClass } from '../dom';\r\nimport { createChevronRightButton, createExpandMoreButton } from '../svg';\r\nexport class DefaultHeader extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor() {\r\n super();\r\n this._expandedIcon = createExpandMoreButton();\r\n this._collapsedIcon = createChevronRightButton();\r\n this.disposable = new MutableDisposable();\r\n this.apiRef = { api: null };\r\n this._element = document.createElement('div');\r\n this.element.className = 'default-header';\r\n this._content = document.createElement('span');\r\n this._expander = document.createElement('div');\r\n this._expander.className = 'dockview-pane-header-icon';\r\n this.element.appendChild(this._expander);\r\n this.element.appendChild(this._content);\r\n this.addDisposables(addDisposableListener(this._element, 'click', () => {\r\n var _a;\r\n (_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.setExpanded(!this.apiRef.api.isExpanded);\r\n }));\r\n }\r\n init(params) {\r\n this.apiRef.api = params.api;\r\n this._content.textContent = params.title;\r\n this.updateIcon();\r\n this.disposable.value = params.api.onDidExpansionChange(() => {\r\n this.updateIcon();\r\n });\r\n }\r\n updateIcon() {\r\n var _a;\r\n const isExpanded = !!((_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.isExpanded);\r\n toggleClass(this._expander, 'collapsed', !isExpanded);\r\n if (isExpanded) {\r\n if (this._expander.contains(this._collapsedIcon)) {\r\n this._collapsedIcon.remove();\r\n }\r\n if (!this._expander.contains(this._expandedIcon)) {\r\n this._expander.appendChild(this._expandedIcon);\r\n }\r\n }\r\n else {\r\n if (this._expander.contains(this._expandedIcon)) {\r\n this._expandedIcon.remove();\r\n }\r\n if (!this._expander.contains(this._collapsedIcon)) {\r\n this._expander.appendChild(this._collapsedIcon);\r\n }\r\n }\r\n }\r\n update(_params) {\r\n //\r\n }\r\n dispose() {\r\n this.disposable.dispose();\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=defaultPaneviewHeader.js.map","import { PaneviewApi } from '../api/component.api';\r\nimport { createComponent } from '../panel/componentFactory';\r\nimport { Emitter } from '../events';\r\nimport { CompositeDisposable, MutableDisposable, } from '../lifecycle';\r\nimport { Orientation, Sizing } from '../splitview/splitview';\r\nimport { Paneview } from './paneview';\r\nimport { DraggablePaneviewPanel, } from './draggablePaneviewPanel';\r\nimport { DefaultHeader } from './defaultPaneviewHeader';\r\nimport { sequentialNumberGenerator } from '../math';\r\nimport { Resizable } from '../resizable';\r\nconst nextLayoutId = sequentialNumberGenerator();\r\nexport class PaneFramework extends DraggablePaneviewPanel {\r\n constructor(options) {\r\n super(options.accessor, options.id, options.component, options.headerComponent, options.orientation, options.isExpanded, options.disableDnd);\r\n this.options = options;\r\n }\r\n getBodyComponent() {\r\n return this.options.body;\r\n }\r\n getHeaderComponent() {\r\n return this.options.header;\r\n }\r\n}\r\nexport class PaneviewComponent extends Resizable {\r\n get id() {\r\n return this._id;\r\n }\r\n get panels() {\r\n return this.paneview.getPanes();\r\n }\r\n set paneview(value) {\r\n this._paneview = value;\r\n this._disposable.value = new CompositeDisposable(this._paneview.onDidChange(() => {\r\n this._onDidLayoutChange.fire(undefined);\r\n }), this._paneview.onDidAddView((e) => this._onDidAddView.fire(e)), this._paneview.onDidRemoveView((e) => this._onDidRemoveView.fire(e)));\r\n }\r\n get paneview() {\r\n return this._paneview;\r\n }\r\n get minimumSize() {\r\n return this.paneview.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.paneview.maximumSize;\r\n }\r\n get height() {\r\n return this.paneview.orientation === Orientation.HORIZONTAL\r\n ? this.paneview.orthogonalSize\r\n : this.paneview.size;\r\n }\r\n get width() {\r\n return this.paneview.orientation === Orientation.HORIZONTAL\r\n ? this.paneview.size\r\n : this.paneview.orthogonalSize;\r\n }\r\n get options() {\r\n return this._options;\r\n }\r\n constructor(options) {\r\n super(options.parentElement);\r\n this._id = nextLayoutId.next();\r\n this._disposable = new MutableDisposable();\r\n this._viewDisposables = new Map();\r\n this._onDidLayoutfromJSON = new Emitter();\r\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\r\n this._onDidLayoutChange = new Emitter();\r\n this.onDidLayoutChange = this._onDidLayoutChange.event;\r\n this._onDidDrop = new Emitter();\r\n this.onDidDrop = this._onDidDrop.event;\r\n this._onDidAddView = new Emitter();\r\n this.onDidAddView = this._onDidAddView.event;\r\n this._onDidRemoveView = new Emitter();\r\n this.onDidRemoveView = this._onDidRemoveView.event;\r\n this.addDisposables(this._onDidLayoutChange, this._onDidLayoutfromJSON, this._onDidDrop, this._onDidAddView, this._onDidRemoveView);\r\n this._options = options;\r\n if (!options.components) {\r\n options.components = {};\r\n }\r\n if (!options.frameworkComponents) {\r\n options.frameworkComponents = {};\r\n }\r\n this.paneview = new Paneview(this.element, {\r\n // only allow paneview in the vertical orientation for now\r\n orientation: Orientation.VERTICAL,\r\n });\r\n this.addDisposables(this._disposable);\r\n }\r\n focus() {\r\n //noop\r\n }\r\n updateOptions(options) {\r\n this._options = Object.assign(Object.assign({}, this.options), options);\r\n }\r\n addPanel(options) {\r\n const body = createComponent(options.id, options.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkWrapper\r\n ? {\r\n createComponent: this.options.frameworkWrapper.body.createComponent,\r\n }\r\n : undefined);\r\n let header;\r\n if (options.headerComponent) {\r\n header = createComponent(options.id, options.headerComponent, this.options.headerComponents || {}, this.options.headerframeworkComponents, this.options.frameworkWrapper\r\n ? {\r\n createComponent: this.options.frameworkWrapper.header\r\n .createComponent,\r\n }\r\n : undefined);\r\n }\r\n else {\r\n header = new DefaultHeader();\r\n }\r\n const view = new PaneFramework({\r\n id: options.id,\r\n component: options.component,\r\n headerComponent: options.headerComponent,\r\n header,\r\n body,\r\n orientation: Orientation.VERTICAL,\r\n isExpanded: !!options.isExpanded,\r\n disableDnd: !!this.options.disableDnd,\r\n accessor: this,\r\n });\r\n this.doAddPanel(view);\r\n const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;\r\n const index = typeof options.index === 'number' ? options.index : undefined;\r\n view.init({\r\n params: options.params || {},\r\n minimumBodySize: options.minimumBodySize,\r\n maximumBodySize: options.maximumBodySize,\r\n isExpanded: options.isExpanded,\r\n title: options.title,\r\n containerApi: new PaneviewApi(this),\r\n });\r\n this.paneview.addPane(view, size, index);\r\n view.orientation = this.paneview.orientation;\r\n return view;\r\n }\r\n removePanel(panel) {\r\n const views = this.panels;\r\n const index = views.findIndex((_) => _ === panel);\r\n this.paneview.removePane(index);\r\n this.doRemovePanel(panel);\r\n }\r\n movePanel(from, to) {\r\n this.paneview.moveView(from, to);\r\n }\r\n getPanel(id) {\r\n return this.panels.find((view) => view.id === id);\r\n }\r\n layout(width, height) {\r\n const [size, orthogonalSize] = this.paneview.orientation === Orientation.HORIZONTAL\r\n ? [width, height]\r\n : [height, width];\r\n this.paneview.layout(size, orthogonalSize);\r\n }\r\n toJSON() {\r\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ||\r\n value === Number.POSITIVE_INFINITY\r\n ? undefined\r\n : value;\r\n const minimum = (value) => (value <= 0 ? undefined : value);\r\n const views = this.paneview\r\n .getPanes()\r\n .map((view, i) => {\r\n const size = this.paneview.getViewSize(i);\r\n return {\r\n size,\r\n data: view.toJSON(),\r\n minimumSize: minimum(view.minimumBodySize),\r\n maximumSize: maximum(view.maximumBodySize),\r\n expanded: view.isExpanded(),\r\n };\r\n });\r\n return {\r\n views,\r\n size: this.paneview.size,\r\n };\r\n }\r\n fromJSON(serializedPaneview) {\r\n this.clear();\r\n const { views, size } = serializedPaneview;\r\n const queue = [];\r\n // take note of the existing dimensions\r\n const width = this.width;\r\n const height = this.height;\r\n this.paneview = new Paneview(this.element, {\r\n orientation: Orientation.VERTICAL,\r\n descriptor: {\r\n size,\r\n views: views.map((view) => {\r\n const data = view.data;\r\n const body = createComponent(data.id, data.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkWrapper\r\n ? {\r\n createComponent: this.options.frameworkWrapper.body\r\n .createComponent,\r\n }\r\n : undefined);\r\n let header;\r\n if (data.headerComponent) {\r\n header = createComponent(data.id, data.headerComponent, this.options.headerComponents || {}, this.options.headerframeworkComponents || {}, this.options.frameworkWrapper\r\n ? {\r\n createComponent: this.options.frameworkWrapper.header\r\n .createComponent,\r\n }\r\n : undefined);\r\n }\r\n else {\r\n header = new DefaultHeader();\r\n }\r\n const panel = new PaneFramework({\r\n id: data.id,\r\n component: data.component,\r\n headerComponent: data.headerComponent,\r\n header,\r\n body,\r\n orientation: Orientation.VERTICAL,\r\n isExpanded: !!view.expanded,\r\n disableDnd: !!this.options.disableDnd,\r\n accessor: this,\r\n });\r\n this.doAddPanel(panel);\r\n queue.push(() => {\r\n panel.init({\r\n params: data.params || {},\r\n minimumBodySize: view.minimumSize,\r\n maximumBodySize: view.maximumSize,\r\n title: data.title,\r\n isExpanded: !!view.expanded,\r\n containerApi: new PaneviewApi(this),\r\n });\r\n panel.orientation = this.paneview.orientation;\r\n });\r\n setTimeout(() => {\r\n // the original onDidAddView events are missed since they are fired before we can subcribe to them\r\n this._onDidAddView.fire(panel);\r\n }, 0);\r\n return { size: view.size, view: panel };\r\n }),\r\n },\r\n });\r\n this.layout(width, height);\r\n queue.forEach((f) => f());\r\n this._onDidLayoutfromJSON.fire();\r\n }\r\n clear() {\r\n for (const [_, value] of this._viewDisposables.entries()) {\r\n value.dispose();\r\n }\r\n this._viewDisposables.clear();\r\n this.paneview.dispose();\r\n }\r\n doAddPanel(panel) {\r\n const disposable = panel.onDidDrop((event) => {\r\n this._onDidDrop.fire(event);\r\n });\r\n this._viewDisposables.set(panel.id, disposable);\r\n }\r\n doRemovePanel(panel) {\r\n const disposable = this._viewDisposables.get(panel.id);\r\n if (disposable) {\r\n disposable.dispose();\r\n this._viewDisposables.delete(panel.id);\r\n }\r\n }\r\n dispose() {\r\n super.dispose();\r\n for (const [_, value] of this._viewDisposables.entries()) {\r\n value.dispose();\r\n }\r\n this._viewDisposables.clear();\r\n this.paneview.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=paneviewComponent.js.map","import { BasePanelView, } from '../gridview/basePanelView';\r\nimport { SplitviewPanelApiImpl } from '../api/splitviewPanelApi';\r\nimport { Orientation } from './splitview';\r\nimport { Emitter } from '../events';\r\nexport class SplitviewPanel extends BasePanelView {\r\n get priority() {\r\n return this._priority;\r\n }\r\n set orientation(value) {\r\n this._orientation = value;\r\n }\r\n get orientation() {\r\n return this._orientation;\r\n }\r\n get minimumSize() {\r\n const size = typeof this._minimumSize === 'function'\r\n ? this._minimumSize()\r\n : this._minimumSize;\r\n if (size !== this._evaluatedMinimumSize) {\r\n this._evaluatedMinimumSize = size;\r\n this.updateConstraints();\r\n }\r\n return size;\r\n }\r\n get maximumSize() {\r\n const size = typeof this._maximumSize === 'function'\r\n ? this._maximumSize()\r\n : this._maximumSize;\r\n if (size !== this._evaluatedMaximumSize) {\r\n this._evaluatedMaximumSize = size;\r\n this.updateConstraints();\r\n }\r\n return size;\r\n }\r\n get snap() {\r\n return this._snap;\r\n }\r\n constructor(id, componentName) {\r\n super(id, componentName, new SplitviewPanelApiImpl(id));\r\n this._evaluatedMinimumSize = 0;\r\n this._evaluatedMaximumSize = Number.POSITIVE_INFINITY;\r\n this._minimumSize = 0;\r\n this._maximumSize = Number.POSITIVE_INFINITY;\r\n this._snap = false;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this.api.initialize(this);\r\n this.addDisposables(this._onDidChange, this.api.onVisibilityChange((event) => {\r\n const { isVisible } = event;\r\n const { accessor } = this._params;\r\n accessor.setVisible(this, isVisible);\r\n }), this.api.onActiveChange(() => {\r\n const { accessor } = this._params;\r\n accessor.setActive(this);\r\n }), this.api.onDidConstraintsChangeInternal((event) => {\r\n if (typeof event.minimumSize === 'number' ||\r\n typeof event.minimumSize === 'function') {\r\n this._minimumSize = event.minimumSize;\r\n }\r\n if (typeof event.maximumSize === 'number' ||\r\n typeof event.maximumSize === 'function') {\r\n this._maximumSize = event.maximumSize;\r\n }\r\n this.updateConstraints();\r\n }), this.api.onDidSizeChange((event) => {\r\n this._onDidChange.fire({ size: event.size });\r\n }));\r\n }\r\n setVisible(isVisible) {\r\n this.api._onDidVisibilityChange.fire({ isVisible });\r\n }\r\n setActive(isActive) {\r\n this.api._onDidActiveChange.fire({ isActive });\r\n }\r\n layout(size, orthogonalSize) {\r\n const [width, height] = this.orientation === Orientation.HORIZONTAL\r\n ? [size, orthogonalSize]\r\n : [orthogonalSize, size];\r\n super.layout(width, height);\r\n }\r\n init(parameters) {\r\n super.init(parameters);\r\n this._priority = parameters.priority;\r\n if (parameters.minimumSize) {\r\n this._minimumSize = parameters.minimumSize;\r\n }\r\n if (parameters.maximumSize) {\r\n this._maximumSize = parameters.maximumSize;\r\n }\r\n if (parameters.snap) {\r\n this._snap = parameters.snap;\r\n }\r\n }\r\n toJSON() {\r\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ||\r\n value === Number.POSITIVE_INFINITY\r\n ? undefined\r\n : value;\r\n const minimum = (value) => (value <= 0 ? undefined : value);\r\n return Object.assign(Object.assign({}, super.toJSON()), { minimumSize: minimum(this.minimumSize), maximumSize: maximum(this.maximumSize) });\r\n }\r\n updateConstraints() {\r\n this.api._onDidConstraintsChange.fire({\r\n maximumSize: this._evaluatedMaximumSize,\r\n minimumSize: this._evaluatedMinimumSize,\r\n });\r\n }\r\n}\r\n//# sourceMappingURL=splitviewPanel.js.map",null,null,null,null,null,null,"/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\") throw new TypeError(\"Object expected.\");\r\n var dispose;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends,\r\n __assign,\r\n __rest,\r\n __decorate,\r\n __param,\r\n __metadata,\r\n __awaiter,\r\n __generator,\r\n __createBinding,\r\n __exportStar,\r\n __values,\r\n __read,\r\n __spread,\r\n __spreadArrays,\r\n __spreadArray,\r\n __await,\r\n __asyncGenerator,\r\n __asyncDelegator,\r\n __asyncValues,\r\n __makeTemplateObject,\r\n __importStar,\r\n __importDefault,\r\n __classPrivateFieldGet,\r\n __classPrivateFieldSet,\r\n __classPrivateFieldIn,\r\n __addDisposableResource,\r\n __disposeResources,\r\n};\r\n",null,null,null,null,null,null,null,null],"names":["Event","Disposable","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","TransferObject","constructor","PanelTransfer","viewId","groupId","panelId","super","this","PaneTransfer","paneId","LocalSelectionTransfer","static","INSTANCE","hasData","proto","clearData","undefined","data","getData","setData","getPanelData","panelTransfer","getInstance","prototype","getPaneData","paneTransfer","any","children","listener","disposables","map","child","dispose","forEach","d","Stacktrace","_a","Error","stack","value","print","console","warn","Listener","callback","stacktrace","Emitter","isEnabled","ENABLE_TRACKING","MEMORY_LEAK_WATCHER","clear","options","_listeners","_disposed","event","_event","replay","_last","create","push","index","indexOf","splice","add","fire","e","length","queueMicrotask","delete","addDisposableWindowListener","element","addEventListener","removeEventListener","addDisposableListener","events","Map","size","set","TickDelayedEvent","_onFired","onEvent","timer","clearTimeout","setTimeout","NONE","CompositeDisposable","isDisposed","_isDisposed","args","_disposables","addDisposables","arg","MutableDisposable","_disposable","disposable","createComponent","id","componentName","components","frameworkComponents","createFrameworkComponent","fallback","Component","FrameworkComponent","watchElementResize","cb","observer","ResizeObserver","entires","requestAnimationFrame","firstEntry","observe","unobserve","disconnect","removeClasses","classes","classname","classList","contains","remove","addClasses","toggleClass","className","isToggled","hasClass","isAncestor","testChild","testAncestor","parentNode","tag","Array","slice","call","trackFocus","FocusTracker","_onDidFocus","onDidFocus","_onDidBlur","onDidBlur","hasFocus","activeElement","loosingFocus","onFocus","onBlur","window","_refreshStateHandler","HTMLElement","refreshState","QUASI_PREVENT_DEFAULT_KEY","quasiDefaultPrevented","tail","arr","sequenceEquals","arr1","arr2","i","pushToStart","unshift","pushToEnd","clamp","min","max","Math","sequentialNumberGenerator","next","toString","range","from","to","result","ViewItem","_size","cachedVisibleSize","_cachedVisibleSize","visible","minimumSize","view","viewMinimumSize","maximumSize","viewMaximumSize","priority","snap","enabled","container","pointerEvents","setVisible","toggle","Orientation","SashState","LayoutPriority","Sizing","Distribute","Split","Invisible","Splitview","orthogonalSize","_orthogonalSize","viewItems","proportions","_proportions","orientation","_orientation","tmp","HORIZONTAL","reduce","r","item","Number","POSITIVE_INFINITY","startSnappingEnabled","_startSnappingEnabled","updateSashEnablement","endSnappingEnabled","_endSnappingEnabled","sashes","contentSize","_onDidSashEnd","onDidSashEnd","_onDidAddView","onDidAddView","_onDidRemoveView","onDidRemoveView","resize","delta","sizes","x","lowPriorityIndexes","highPriorityIndexes","overloadMinDelta","NEGATIVE_INFINITY","overloadMaxDelta","snapBefore","snapAfter","upIndexes","downIndexes","upItems","upSizes","downItems","downSizes","minDeltaUp","_","maxDeltaUp","maxDeltaDown","minDeltaDown","minDelta","maxDelta","snapped","snapView","limitDelta","actualDelta","deltaUp","viewDelta","deltaDown","createContainer","proportionalLayout","viewContainer","createViewContainer","sashContainer","createSashContainer","styles","descriptor","views","viewDescriptor","sizing","addView","saveProportions","separatorBorder","removeProperty","setProperty","isViewVisible","setViewVisible","viewItem","distributeEmptySpace","layoutViews","getViewSize","resizeView","indexes","filter","Low","High","round","relayout","getViews","onDidChange","skipLayout","viewSize","newSize","removeChild","sash","onPointerStart","iframes","iframe","start","clientX","clientY","sashIndex","array","fn","firstIndex","s","snapBeforeIndex","findFirstSnapIndex","snapAfterIndex","snappedViewItem","halfSize","floor","onPointerMove","end","sashItem","distributeViewSizes","flexibleViewItems","flexibleSize","removeView","getViewCachedVisibleSize","moveView","layout","previousSize","lowPriorityIndex","emptyDelta","sum","offset","left","top","VERTICAL","width","height","previous","collapsesDown","expandsDown","reverseViews","reverse","collapsesUp","expandsUp","position","snappedBefore","snappedAfter","updateSash","MINIMUM","MAXIMUM","DISABLED","ENABLED","state","orientationClassname","Paneview","splitview","paneItems","skipAnimation","_onDidChange","getPanes","pane","onDidChangeExpansionState","setupAnimation","paneItem","addPane","removePane","skipDispose","animationTimer","LeafNode","minimumWidth","maximumWidth","minimumHeight","maximumHeight","minimumOrthogonalSize","maximumOrthogonalSize","BranchNode","c","Normal","priorities","some","p","childDescriptors","_childrenDisposable","childDescriptor","node","setupChildrenEvents","isChildVisible","setChildVisible","moveChild","_removeChild","_addChild","getChildSize","resizeChild","addChild","getChildCachedVisibleSize","findLeaf","candiateNode","last","flipNode","orthogonal","totalSize","childSize","indexInParent","parentElement","el","firstElementChild","lastElementChild","nextElementSibling","getGridLocation","test","getRelativeLocation","rootOrientation","location","direction","getLocationOrientation","getDirectionOrientation","rest","_index","isGridBranchNode","serializeBranchNode","box","toJSON","Gridview","_root","root","serialize","getView","deserialize","json","deserializer","_deserialize","_deserializeNode","serializedChild","fromJSON","oldRoot","insertOrthogonalSplitviewAtRoot","childReference","progmaticSelect","getNode","_getViews","nodeCachedVisibleSize","path","n","l","parent","parentLocation","pathToParent","grandParent","parentIndex","__","newSiblingSize","newSiblingCachedVisibleSize","newParent","newSibling","nodeToRemove","sibling","isSiblingVisible","siblingSizing","SplitviewApi","component","panels","onDidLayoutFromJSON","onDidLayoutChange","updateOptions","removePanel","panel","focus","getPanel","addPanel","movePanel","PaneviewApi","onDidDrop","emitter","Object","assign","api","GridviewApi","onDidAddPanel","onDidAddGroup","onDidRemovePanel","onDidRemoveGroup","onDidActivePanelChange","onDidActiveGroupChange","groups","force","DockviewApi","totalPanels","onWillDragGroup","onWillDragPanel","activePanel","activeGroup","getGroupPanel","addGroup","moveToNext","moveToPrevious","closeAllGroups","removeGroup","group","getGroup","addFloatingGroup","coord","DragAndDropObserver","callbacks","target","registerListeners","onDragEnter","preventDefault","onDragOver","onDragLeave","onDragEnd","onDrop","directionToPosition","positionToDirection","Droptarget","_state","_onDrop","_acceptedTargetZonesSet","Set","acceptedTargetZones","removeDropTarget","clientWidth","clientHeight","rect","currentTarget","getBoundingClientRect","y","quadrant","calculateQuadrant","isAlreadyUsed","canDisplayOverlay","markAsUsed","targetElement","overlayElement","append","toggleClasses","setState","stopPropagation","nativeEvent","setTargetZones","USED_EVENT_ID","_b","_c","_d","isSmallX","isSmallY","isLeft","isRight","isTop","isBottom","rightClass","leftClass","topClass","bottomClass","overlayModel","translate","transform","overlayType","_e","_f","isPercentage","activationSize","maybeNumber","threshold","xp","yp","has","calculateQuadrantAsPercentage","calculateQuadrantAsPixels","ContentContainer","_element","tabIndex","show","display","hide","openPanel","content","focusTracker","_width","_height","closePanel","DockviewDropTargets","DragHandler","dataDisposable","pointerEventsDisposable","_onDragStart","onDragStart","configure","isCancelled","defaultPrevented","dataTransfer","effectAllowed","items","TabDragHandler","accessor","Tab","_onChanged","onChanged","_onDropped","draggable","dragHandler","droptarget","locked","model","setActive","isActive","setContent","part","GroupDragHandler","shiftKey","isFloating","dragEvent","getComputedStyle","bgColor","getPropertyValue","color","ghostElement","backgroundColor","padding","fontSize","lineHeight","borderRadius","textContent","body","setDragImage","addGhostImage","VoidContainer","doSetGroupActive","handler","voidDropTarget","Panel","TabsContainer","tabs","hidden","_hidden","setRightActionsElement","rightActions","rightActionsContainer","setLeftActionsElement","leftActions","leftActionsContainer","tab","selectedIndex","findIndex","_onTabDragStart","onTabDragStart","_onGroupDragStart","onGroupDragStart","singleTabMode","tabContainer","voidContainer","disableFloatingGroups","rootTop","rootLeft","inDragMode","button","_isGroupActive","addTab","tabToRemove","setActivePanel","isActivePanel","find","isFloatingGroupsEnabled","isFloatingWithOnePanel","alreadyFocused","isContentFocused","skipFocus","DockviewGroupPanelModel","_activePanel","_locked","_panels","isEmpty","hasWatermark","watermark","header","tabsContainer","contentContainer","_isFloating","dropTarget","groupPanel","_onDidFloatingStateChange","mostRecentlyUsed","_onMove","onMove","_onDidDrop","_onDidAddPanel","_onDidRemovePanel","_onDidActivePanelChange","hideHeader","handleDropEvent","initialize","doAddPanel","updateContainer","createRightHeaderActionsElement","_rightHeaderActions","init","containerApi","createLeftHeaderActionsElement","_leftHeaderActions","activeView","normalizedIndex","suppressRoll","containsPanel","includes","_params","update","skipSetPanelActive","skipSetGroupActive","updateParentGroup","doSetActivePanel","groupItemOrId","panelToRemove","_removePanel","closeAllPanels","arrPanelCpy","doClose","isPanelActive","updateActions","isGroupActive","doRemovePanel","nextPanel","skipSetActive","hasExistingPanel","updateMru","createWatermarkComponent","showDndOverlay","itemId","Resizable","entry","contentRect","nextLayoutId","toTarget","BaseGrid","_id","_groups","values","gridview","_activeGroup","_onDidLayoutChange","_onDidRemoveGroup","_onDidAddGroup","_onDidActiveGroupChange","_bufferOnDidLayoutChange","isVisible","doAddGroup","doRemoveGroup","get","skipActive","forceResize","PanelApiImpl","isFocused","_isFocused","_isActive","_isVisible","panelUpdatesDisposable","_onDidDimensionChange","onDidDimensionsChange","_onDidChangeFocus","onDidFocusChange","_onFocusEvent","onFocusEvent","_onDidVisibilityChange","onDidVisibilityChange","_onVisibilityChange","onVisibilityChange","_onDidActiveChange","onDidActiveChange","_onActiveChange","onActiveChange","_onUpdateParameters","onUpdateParameters","parameters","params","updateParameters","SplitviewPanelApiImpl","_onDidConstraintsChangeInternal","onDidConstraintsChangeInternal","_onDidConstraintsChange","onDidConstraintsChange","_onDidSizeChange","onDidSizeChange","setConstraints","setSize","PaneviewPanelApiImpl","_pane","_onDidExpansionChange","onDidExpansionChange","_onMouseEnter","onMouseEnter","_onMouseLeave","onMouseLeave","setExpanded","isExpanded","BasePanelView","outline","overflow","getComponent","key","keys","PaneviewPanel","headerSize","_minimumBodySize","_maximumBodySize","minimumBodySize","maximumBodySize","headerVisible","_headerVisible","headerComponent","isHeaderVisible","_onDidChangeExpansionState","_isExpanded","expandedSize","ev","isPanelExpanded","renderOnce","expanded","bodyPart","getBodyComponent","headerPart","getHeaderComponent","title","minHeight","maxHeight","DraggablePaneviewPanel","disableDnd","initDragFeatures","accessorId","existingPanel","allPanels","fromIndex","toIndex","GridviewPanelApiImpl","GridviewPanel","_priority","_snap","_minimumWidth","_evaluatedMinimumWidth","updateConstraints","_minimumHeight","_evaluatedMinimumHeight","_maximumHeight","_evaluatedMaximumHeight","_maximumWidth","_evaluatedMaximumWidth","MAX_SAFE_INTEGER","maximum","minimum","DockviewGroupPanelApiImpl","_group","onDidFloatingStateChange","moveTo","moveGroupOrPanel","DockviewGroupPanel","_model","isPanelOptionsWithPanel","referencePanel","isPanelOptionsWithGroup","referenceGroup","isGroupOptionsWithPanel","isGroupOptionsWithGroup","DockviewPanelApiImpl","isOldGroupActive","_onDidGroupChange","_onDidTitleChange","onDidTitleChange","onDidGroupChange","setTitle","close","DockviewPanel","_title","contentComponent","tabComponent","isPanelVisible","createSvgElementFromPath","svg","createElementNS","setAttributeNS","viewbox","createCloseButton","DefaultTab","_content","_actionContainer","_list","action","render","onGroupChange","onPanelVisibleChange","_isPanelVisible","DockviewPanelModel","_tab","createContentComponent","createTabComponent","frameworkComponentFactory","tabComponents","frameworkTabComponents","defaultTabComponent","DefaultDockviewDeserialzier","panelData","viewData","Watermark","emptySpace","flexGrow","actionsContainer","closeAnchor","_api","_visible","isOneGroup","bringElementToFront","Overlay","minimumInViewportWidth","minimumInViewportHeight","_onDidChangeEnd","onDidChangeEnd","setupResize","setBounds","bounds","containerRect","overlayRect","xOffset","getMinimumWidth","yOffset","getMinimumHeight","setupDrag","dragTarget","move","track","resizeHandleElement","startPosition","originalY","originalHeight","originalX","originalWidth","moveTop","MAX_VALUE","MINIMUM_HEIGHT","moveBottom","moveLeft","MINIMUM_WIDTH","moveRight","DockviewFloatingGroupPanel","overlay","DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE","DockviewComponent","flatMap","_options","nextGroupId","_deserializer","_onWillDragPanel","_onWillDragGroup","_onDidLayoutFromJSON","floatingGroups","updateWatermark","watermarkComponent","watermarkFrameworkComponent","Edge","orthogonalize","createGroup","removeEmptyGroup","skipRemoveGroup","overlayLeft","overlayTop","floatingGroupBounds","minimumWidthWithinViewport","minimumHeightWithinViewport","querySelector","floatingGroupPanel","t","createGroupAtLocation","hasOrientationChanged","hasFloatingGroupOptionsChanged","floating","includePanel","collection","floats","floatingGroup","grid","isArray","createGroupFromSerializedState","serializedFloatingGroups","serializedFloatingGroup","hasActiveGroup","hasActivePanel","entries","findGroup","createPanel","o","relativeLocation","watermarkContainer","destinationGroup","sourceGroupId","sourceItemId","destinationTarget","destinationIndex","sourceGroup","referenceLocation","targetLocation","targetParentLocation","sourceLocation","sourceParentLocation","targetGroup","updatedReferenceLocation","groupItem","dropLocation","moveGroup","isGroupAlreadyFocused","GridviewComponent","_onDidLayoutfromJSON","_key","serializedGridview","queue","registerPanel","f","removedPanel","reference","SplitviewComponent","_splitview","_splitviewChangeDisposable","v","frameworkWrapper","doAddView","serializedSplitview","DefaultHeader","_expandedIcon","_collapsedIcon","apiRef","_expander","updateIcon","PaneFramework","PaneviewComponent","paneview","_paneview","_viewDisposables","headerComponents","headerframeworkComponents","serializedPaneview","SplitviewPanel","_minimumSize","_evaluatedMinimumSize","_maximumSize","_evaluatedMaximumSize","ReactComponentBridge","props","triggerRender","React","useState","_props","useRef","componentProps","useImperativeHandle","current","Date","now","displayName","uniquePortalKeyGenerator","ReactPartContext","createContext","ReactPart","portalStore","context","_initialProps","disposed","createPortal","componentInstance","bridgeComponent","forwardRef","Provider","portal","ReactDOM","addPortal","usePortalsLifecycle","portals","setPortals","useDebugValue","useCallback","existingPortals","isReactElement","ReactPanelContentPart","reactPortalStore","DockviewEmitter","ReactPanelHeaderPart","ReactWatermarkPart","ReactHeaderActionsRendererPart","_part","mutableDisposable","DockviewMutableDisposable","DockviewCompositeDisposable","updatePanels","updateActivePanel","updateGroupActive","createGroupControlElement","store","DEFAULT_REACT_TAB","DockviewReact","domRef","dockviewRef","useEffect","factory","componentId","dockview","hideBorders","leftHeaderActionsComponent","rightHeaderActionsComponent","onReady","SuppressedError","CloseButton","viewBox","focusable","DockviewDefaultTab","_containerApi","hideClose","closeActionOverride","hasOwnProperty","getOwnPropertySymbols","propertyIsEnumerable","__rest","onClose","onMouseDown","onClick","ReactPanelView","reactComponent","SplitviewReact","splitviewRef","ReactGridPanelView","GridviewReact","gridviewRef","PanePanelSection","PaneviewReact","paneviewRef","_componentId"],"mappings":"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","x_google_ignoreList":[2,60]}
|
|
1
|
+
{"version":3,"file":"dockview.esm.min.js","sources":["../../dockview-core/dist/esm/events.js","../../dockview-core/dist/esm/lifecycle.js","../../../node_modules/style-inject/dist/style-inject.es.js","../../dockview-core/dist/esm/dnd/dataTransfer.js","../../dockview-core/dist/esm/panel/componentFactory.js","../../dockview-core/dist/esm/dom.js","../../dockview-core/dist/esm/array.js","../../dockview-core/dist/esm/math.js","../../dockview-core/dist/esm/splitview/viewItem.js","../../dockview-core/dist/esm/splitview/splitview.js","../../dockview-core/dist/esm/paneview/paneview.js","../../dockview-core/dist/esm/gridview/leafNode.js","../../dockview-core/dist/esm/gridview/branchNode.js","../../dockview-core/dist/esm/gridview/gridview.js","../../dockview-core/dist/esm/api/component.api.js","../../dockview-core/dist/esm/dnd/dnd.js","../../dockview-core/dist/esm/dnd/droptarget.js","../../dockview-core/dist/esm/dockview/components/panel/content.js","../../dockview-core/dist/esm/dockview/types.js","../../dockview-core/dist/esm/dnd/abstractDragHandler.js","../../dockview-core/dist/esm/dockview/components/tab/tab.js","../../dockview-core/dist/esm/dnd/groupDragHandler.js","../../dockview-core/dist/esm/dnd/ghost.js","../../dockview-core/dist/esm/dockview/components/titlebar/voidContainer.js","../../dockview-core/dist/esm/dockview/components/titlebar/tabsContainer.js","../../dockview-core/dist/esm/dockview/dockviewGroupPanelModel.js","../../dockview-core/dist/esm/resizable.js","../../dockview-core/dist/esm/gridview/baseComponentGridview.js","../../dockview-core/dist/esm/api/panelApi.js","../../dockview-core/dist/esm/api/splitviewPanelApi.js","../../dockview-core/dist/esm/api/paneviewPanelApi.js","../../dockview-core/dist/esm/gridview/basePanelView.js","../../dockview-core/dist/esm/paneview/paneviewPanel.js","../../dockview-core/dist/esm/paneview/draggablePaneviewPanel.js","../../dockview-core/dist/esm/api/gridviewPanelApi.js","../../dockview-core/dist/esm/gridview/gridviewPanel.js","../../dockview-core/dist/esm/api/dockviewGroupPanelApi.js","../../dockview-core/dist/esm/dockview/dockviewGroupPanel.js","../../dockview-core/dist/esm/dockview/options.js","../../dockview-core/dist/esm/api/dockviewPanelApi.js","../../dockview-core/dist/esm/dockview/dockviewPanel.js","../../dockview-core/dist/esm/svg.js","../../dockview-core/dist/esm/dockview/components/tab/defaultTab.js","../../dockview-core/dist/esm/dockview/dockviewPanelModel.js","../../dockview-core/dist/esm/dockview/deserializer.js","../../dockview-core/dist/esm/dockview/components/watermark/watermark.js","../../dockview-core/dist/esm/dnd/overlay.js","../../dockview-core/dist/esm/dockview/dockviewFloatingGroupPanel.js","../../dockview-core/dist/esm/dockview/dockviewComponent.js","../../dockview-core/dist/esm/gridview/gridviewComponent.js","../../dockview-core/dist/esm/splitview/splitviewComponent.js","../../dockview-core/dist/esm/paneview/defaultPaneviewHeader.js","../../dockview-core/dist/esm/paneview/paneviewComponent.js","../../dockview-core/dist/esm/splitview/splitviewPanel.js","../../src/react.ts","../../src/dockview/reactContentPart.ts","../../src/dockview/reactHeaderPart.ts","../../src/dockview/reactWatermarkPart.ts","../../src/dockview/headerActionsRenderer.ts","../../src/dockview/dockview.tsx","../../../node_modules/tslib/tslib.es6.js","../../src/svg.tsx","../../src/dockview/defaultTab.tsx","../../src/splitview/view.ts","../../src/splitview/splitview.tsx","../../src/gridview/view.ts","../../src/gridview/gridview.tsx","../../src/paneview/view.tsx","../../src/paneview/paneview.tsx"],"sourcesContent":["export var Event;\r\n(function (Event) {\r\n Event.any = (...children) => {\r\n return (listener) => {\r\n const disposables = children.map((child) => child(listener));\r\n return {\r\n dispose: () => {\r\n disposables.forEach((d) => {\r\n d.dispose();\r\n });\r\n },\r\n };\r\n };\r\n };\r\n})(Event || (Event = {}));\r\nclass LeakageMonitor {\r\n constructor() {\r\n this.events = new Map();\r\n }\r\n get size() {\r\n return this.events.size;\r\n }\r\n add(event, stacktrace) {\r\n this.events.set(event, stacktrace);\r\n }\r\n delete(event) {\r\n this.events.delete(event);\r\n }\r\n clear() {\r\n this.events.clear();\r\n }\r\n}\r\nclass Stacktrace {\r\n static create() {\r\n var _a;\r\n return new Stacktrace((_a = new Error().stack) !== null && _a !== void 0 ? _a : '');\r\n }\r\n constructor(value) {\r\n this.value = value;\r\n }\r\n print() {\r\n console.warn(this.value);\r\n }\r\n}\r\nclass Listener {\r\n constructor(callback, stacktrace) {\r\n this.callback = callback;\r\n this.stacktrace = stacktrace;\r\n }\r\n}\r\n// relatively simple event emitter taken from https://github.com/microsoft/vscode/blob/master/src/vs/base/common/event.ts\r\nexport class Emitter {\r\n static setLeakageMonitorEnabled(isEnabled) {\r\n if (isEnabled !== Emitter.ENABLE_TRACKING) {\r\n Emitter.MEMORY_LEAK_WATCHER.clear();\r\n }\r\n Emitter.ENABLE_TRACKING = isEnabled;\r\n }\r\n constructor(options) {\r\n this.options = options;\r\n this._listeners = [];\r\n this._disposed = false;\r\n }\r\n get event() {\r\n if (!this._event) {\r\n this._event = (callback) => {\r\n var _a;\r\n if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.replay) && this._last !== undefined) {\r\n callback(this._last);\r\n }\r\n const listener = new Listener(callback, Emitter.ENABLE_TRACKING ? Stacktrace.create() : undefined);\r\n this._listeners.push(listener);\r\n return {\r\n dispose: () => {\r\n const index = this._listeners.indexOf(listener);\r\n if (index > -1) {\r\n this._listeners.splice(index, 1);\r\n }\r\n else if (Emitter.ENABLE_TRACKING) {\r\n // console.warn(\r\n // `Listener already disposed`,\r\n // Stacktrace.create().print()\r\n // );\r\n }\r\n },\r\n };\r\n };\r\n if (Emitter.ENABLE_TRACKING) {\r\n Emitter.MEMORY_LEAK_WATCHER.add(this._event, Stacktrace.create());\r\n }\r\n }\r\n return this._event;\r\n }\r\n fire(e) {\r\n this._last = e;\r\n for (const listener of this._listeners) {\r\n listener.callback(e);\r\n }\r\n }\r\n dispose() {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n if (this._listeners.length > 0) {\r\n if (Emitter.ENABLE_TRACKING) {\r\n queueMicrotask(() => {\r\n var _a;\r\n // don't check until stack of execution is completed to allow for out-of-order disposals within the same execution block\r\n for (const listener of this._listeners) {\r\n console.warn((_a = listener.stacktrace) === null || _a === void 0 ? void 0 : _a.print());\r\n }\r\n });\r\n }\r\n this._listeners = [];\r\n }\r\n if (Emitter.ENABLE_TRACKING && this._event) {\r\n Emitter.MEMORY_LEAK_WATCHER.delete(this._event);\r\n }\r\n }\r\n }\r\n}\r\nEmitter.ENABLE_TRACKING = false;\r\nEmitter.MEMORY_LEAK_WATCHER = new LeakageMonitor();\r\nexport function addDisposableWindowListener(element, type, listener, options) {\r\n element.addEventListener(type, listener, options);\r\n return {\r\n dispose: () => {\r\n element.removeEventListener(type, listener, options);\r\n },\r\n };\r\n}\r\nexport function addDisposableListener(element, type, listener, options) {\r\n element.addEventListener(type, listener, options);\r\n return {\r\n dispose: () => {\r\n element.removeEventListener(type, listener, options);\r\n },\r\n };\r\n}\r\nexport class TickDelayedEvent {\r\n constructor() {\r\n this._onFired = new Emitter();\r\n this.onEvent = this._onFired.event;\r\n }\r\n fire() {\r\n if (this.timer) {\r\n clearTimeout(this.timer);\r\n }\r\n this.timer = setTimeout(() => {\r\n this._onFired.fire();\r\n clearTimeout(this.timer);\r\n });\r\n }\r\n dispose() {\r\n this._onFired.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=events.js.map","export var Disposable;\r\n(function (Disposable) {\r\n Disposable.NONE = {\r\n dispose: () => {\r\n // noop\r\n },\r\n };\r\n})(Disposable || (Disposable = {}));\r\nexport class CompositeDisposable {\r\n get isDisposed() {\r\n return this._isDisposed;\r\n }\r\n constructor(...args) {\r\n this._isDisposed = false;\r\n this._disposables = args;\r\n }\r\n addDisposables(...args) {\r\n args.forEach((arg) => this._disposables.push(arg));\r\n }\r\n dispose() {\r\n this._disposables.forEach((arg) => arg.dispose());\r\n this._isDisposed = true;\r\n }\r\n}\r\nexport class MutableDisposable {\r\n constructor() {\r\n this._disposable = Disposable.NONE;\r\n }\r\n set value(disposable) {\r\n if (this._disposable) {\r\n this._disposable.dispose();\r\n }\r\n this._disposable = disposable;\r\n }\r\n dispose() {\r\n if (this._disposable) {\r\n this._disposable.dispose();\r\n this._disposable = Disposable.NONE;\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=lifecycle.js.map","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","class TransferObject {\r\n constructor() {\r\n //\r\n }\r\n}\r\nexport class PanelTransfer extends TransferObject {\r\n constructor(viewId, groupId, panelId) {\r\n super();\r\n this.viewId = viewId;\r\n this.groupId = groupId;\r\n this.panelId = panelId;\r\n }\r\n}\r\nexport class PaneTransfer extends TransferObject {\r\n constructor(viewId, paneId) {\r\n super();\r\n this.viewId = viewId;\r\n this.paneId = paneId;\r\n }\r\n}\r\n/**\r\n * A singleton to store transfer data during drag & drop operations that are only valid within the application.\r\n */\r\nexport class LocalSelectionTransfer {\r\n constructor() {\r\n // protect against external instantiation\r\n }\r\n static getInstance() {\r\n return LocalSelectionTransfer.INSTANCE;\r\n }\r\n hasData(proto) {\r\n return proto && proto === this.proto;\r\n }\r\n clearData(proto) {\r\n if (this.hasData(proto)) {\r\n this.proto = undefined;\r\n this.data = undefined;\r\n }\r\n }\r\n getData(proto) {\r\n if (this.hasData(proto)) {\r\n return this.data;\r\n }\r\n return undefined;\r\n }\r\n setData(data, proto) {\r\n if (proto) {\r\n this.data = data;\r\n this.proto = proto;\r\n }\r\n }\r\n}\r\nLocalSelectionTransfer.INSTANCE = new LocalSelectionTransfer();\r\nexport function getPanelData() {\r\n const panelTransfer = LocalSelectionTransfer.getInstance();\r\n const isPanelEvent = panelTransfer.hasData(PanelTransfer.prototype);\r\n if (!isPanelEvent) {\r\n return undefined;\r\n }\r\n return panelTransfer.getData(PanelTransfer.prototype)[0];\r\n}\r\nexport function getPaneData() {\r\n const paneTransfer = LocalSelectionTransfer.getInstance();\r\n const isPanelEvent = paneTransfer.hasData(PaneTransfer.prototype);\r\n if (!isPanelEvent) {\r\n return undefined;\r\n }\r\n return paneTransfer.getData(PaneTransfer.prototype)[0];\r\n}\r\n//# sourceMappingURL=dataTransfer.js.map","export function createComponent(id, componentName, components = {}, frameworkComponents = {}, createFrameworkComponent, fallback) {\r\n const Component = typeof componentName === 'string'\r\n ? components[componentName]\r\n : undefined;\r\n const FrameworkComponent = typeof componentName === 'string'\r\n ? frameworkComponents[componentName]\r\n : undefined;\r\n if (Component && FrameworkComponent) {\r\n throw new Error(`Cannot create '${id}'. component '${componentName}' registered as both a component and frameworkComponent`);\r\n }\r\n if (FrameworkComponent) {\r\n if (!createFrameworkComponent) {\r\n throw new Error(`Cannot create '${id}' for framework component '${componentName}'. you must register a frameworkPanelWrapper to use framework components`);\r\n }\r\n return createFrameworkComponent.createComponent(id, componentName, FrameworkComponent);\r\n }\r\n if (!Component) {\r\n if (fallback) {\r\n return fallback();\r\n }\r\n throw new Error(`Cannot create '${id}', no component '${componentName}' provided`);\r\n }\r\n return new Component(id, componentName);\r\n}\r\n//# sourceMappingURL=componentFactory.js.map","import { Emitter, addDisposableListener, addDisposableWindowListener, } from './events';\r\nimport { CompositeDisposable } from './lifecycle';\r\nexport function watchElementResize(element, cb) {\r\n const observer = new ResizeObserver((entires) => {\r\n /**\r\n * Fast browser window resize produces Error: ResizeObserver loop limit exceeded.\r\n * The error isn't visible in browser console, doesn't affect functionality, but degrades performance.\r\n * See https://stackoverflow.com/questions/49384120/resizeobserver-loop-limit-exceeded/58701523#58701523\r\n */\r\n requestAnimationFrame(() => {\r\n const firstEntry = entires[0];\r\n cb(firstEntry);\r\n });\r\n });\r\n observer.observe(element);\r\n return {\r\n dispose: () => {\r\n observer.unobserve(element);\r\n observer.disconnect();\r\n },\r\n };\r\n}\r\nexport const removeClasses = (element, ...classes) => {\r\n for (const classname of classes) {\r\n if (element.classList.contains(classname)) {\r\n element.classList.remove(classname);\r\n }\r\n }\r\n};\r\nexport const addClasses = (element, ...classes) => {\r\n for (const classname of classes) {\r\n if (!element.classList.contains(classname)) {\r\n element.classList.add(classname);\r\n }\r\n }\r\n};\r\nexport const toggleClass = (element, className, isToggled) => {\r\n const hasClass = element.classList.contains(className);\r\n if (isToggled && !hasClass) {\r\n element.classList.add(className);\r\n }\r\n if (!isToggled && hasClass) {\r\n element.classList.remove(className);\r\n }\r\n};\r\nexport function isAncestor(testChild, testAncestor) {\r\n while (testChild) {\r\n if (testChild === testAncestor) {\r\n return true;\r\n }\r\n testChild = testChild.parentNode;\r\n }\r\n return false;\r\n}\r\nexport function getElementsByTagName(tag) {\r\n return Array.prototype.slice.call(document.getElementsByTagName(tag), 0);\r\n}\r\nexport function trackFocus(element) {\r\n return new FocusTracker(element);\r\n}\r\n/**\r\n * Track focus on an element. Ensure tabIndex is set when an HTMLElement is not focusable by default\r\n */\r\nclass FocusTracker extends CompositeDisposable {\r\n constructor(element) {\r\n super();\r\n this._onDidFocus = new Emitter();\r\n this.onDidFocus = this._onDidFocus.event;\r\n this._onDidBlur = new Emitter();\r\n this.onDidBlur = this._onDidBlur.event;\r\n this.addDisposables(this._onDidFocus, this._onDidBlur);\r\n let hasFocus = isAncestor(document.activeElement, element);\r\n let loosingFocus = false;\r\n const onFocus = () => {\r\n loosingFocus = false;\r\n if (!hasFocus) {\r\n hasFocus = true;\r\n this._onDidFocus.fire();\r\n }\r\n };\r\n const onBlur = () => {\r\n if (hasFocus) {\r\n loosingFocus = true;\r\n window.setTimeout(() => {\r\n if (loosingFocus) {\r\n loosingFocus = false;\r\n hasFocus = false;\r\n this._onDidBlur.fire();\r\n }\r\n }, 0);\r\n }\r\n };\r\n this._refreshStateHandler = () => {\r\n const currentNodeHasFocus = isAncestor(document.activeElement, element);\r\n if (currentNodeHasFocus !== hasFocus) {\r\n if (hasFocus) {\r\n onBlur();\r\n }\r\n else {\r\n onFocus();\r\n }\r\n }\r\n };\r\n if (element instanceof HTMLElement) {\r\n this.addDisposables(addDisposableListener(element, 'focus', onFocus, true));\r\n this.addDisposables(addDisposableListener(element, 'blur', onBlur, true));\r\n }\r\n else {\r\n this.addDisposables(addDisposableWindowListener(element, 'focus', onFocus, true));\r\n this.addDisposables(addDisposableWindowListener(element, 'blur', onBlur, true));\r\n }\r\n }\r\n refreshState() {\r\n this._refreshStateHandler();\r\n }\r\n}\r\n// quasi: apparently, but not really; seemingly\r\nconst QUASI_PREVENT_DEFAULT_KEY = 'dv-quasiPreventDefault';\r\n// mark an event directly for other listeners to check\r\nexport function quasiPreventDefault(event) {\r\n event[QUASI_PREVENT_DEFAULT_KEY] = true;\r\n}\r\n// check if this event has been marked\r\nexport function quasiDefaultPrevented(event) {\r\n return event[QUASI_PREVENT_DEFAULT_KEY];\r\n}\r\n//# sourceMappingURL=dom.js.map","export function tail(arr) {\r\n if (arr.length === 0) {\r\n throw new Error('Invalid tail call');\r\n }\r\n return [arr.slice(0, arr.length - 1), arr[arr.length - 1]];\r\n}\r\nexport function last(arr) {\r\n return arr.length > 0 ? arr[arr.length - 1] : undefined;\r\n}\r\nexport function sequenceEquals(arr1, arr2) {\r\n if (arr1.length !== arr2.length) {\r\n return false;\r\n }\r\n for (let i = 0; i < arr1.length; i++) {\r\n if (arr1[i] !== arr2[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * Pushes an element to the start of the array, if found.\r\n */\r\nexport function pushToStart(arr, value) {\r\n const index = arr.indexOf(value);\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n arr.unshift(value);\r\n }\r\n}\r\n/**\r\n * Pushes an element to the end of the array, if found.\r\n */\r\nexport function pushToEnd(arr, value) {\r\n const index = arr.indexOf(value);\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n arr.push(value);\r\n }\r\n}\r\nexport function firstIndex(array, fn) {\r\n for (let i = 0; i < array.length; i++) {\r\n const element = array[i];\r\n if (fn(element)) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\nexport function remove(array, value) {\r\n const index = array.findIndex((t) => t === value);\r\n if (index > -1) {\r\n array.splice(index, 1);\r\n return true;\r\n }\r\n return false;\r\n}\r\n//# sourceMappingURL=array.js.map","export const clamp = (value, min, max) => {\r\n if (min > max) {\r\n throw new Error(`${min} > ${max} is an invalid condition`);\r\n }\r\n return Math.min(max, Math.max(value, min));\r\n};\r\nexport const sequentialNumberGenerator = () => {\r\n let value = 1;\r\n return { next: () => (value++).toString() };\r\n};\r\nexport const range = (from, to) => {\r\n const result = [];\r\n if (typeof to !== 'number') {\r\n to = from;\r\n from = 0;\r\n }\r\n if (from <= to) {\r\n for (let i = from; i < to; i++) {\r\n result.push(i);\r\n }\r\n }\r\n else {\r\n for (let i = from; i > to; i--) {\r\n result.push(i);\r\n }\r\n }\r\n return result;\r\n};\r\n//# sourceMappingURL=math.js.map","import { clamp } from '../math';\r\nexport class ViewItem {\r\n set size(size) {\r\n this._size = size;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n get cachedVisibleSize() {\r\n return this._cachedVisibleSize;\r\n }\r\n get visible() {\r\n return typeof this._cachedVisibleSize === 'undefined';\r\n }\r\n get minimumSize() {\r\n return this.visible ? this.view.minimumSize : 0;\r\n }\r\n get viewMinimumSize() {\r\n return this.view.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.visible ? this.view.maximumSize : 0;\r\n }\r\n get viewMaximumSize() {\r\n return this.view.maximumSize;\r\n }\r\n get priority() {\r\n return this.view.priority;\r\n }\r\n get snap() {\r\n return !!this.view.snap;\r\n }\r\n set enabled(enabled) {\r\n this.container.style.pointerEvents = enabled ? '' : 'none';\r\n }\r\n constructor(container, view, size, disposable) {\r\n this.container = container;\r\n this.view = view;\r\n this.disposable = disposable;\r\n this._cachedVisibleSize = undefined;\r\n if (typeof size === 'number') {\r\n this._size = size;\r\n this._cachedVisibleSize = undefined;\r\n container.classList.add('visible');\r\n }\r\n else {\r\n this._size = 0;\r\n this._cachedVisibleSize = size.cachedVisibleSize;\r\n }\r\n }\r\n setVisible(visible, size) {\r\n var _a;\r\n if (visible === this.visible) {\r\n return;\r\n }\r\n if (visible) {\r\n this.size = clamp((_a = this._cachedVisibleSize) !== null && _a !== void 0 ? _a : 0, this.viewMinimumSize, this.viewMaximumSize);\r\n this._cachedVisibleSize = undefined;\r\n }\r\n else {\r\n this._cachedVisibleSize =\r\n typeof size === 'number' ? size : this.size;\r\n this.size = 0;\r\n }\r\n this.container.classList.toggle('visible', visible);\r\n if (this.view.setVisible) {\r\n this.view.setVisible(visible);\r\n }\r\n }\r\n dispose() {\r\n this.disposable.dispose();\r\n return this.view;\r\n }\r\n}\r\n//# sourceMappingURL=viewItem.js.map","/*---------------------------------------------------------------------------------------------\r\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\r\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/splitview\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { removeClasses, addClasses, toggleClass, getElementsByTagName, } from '../dom';\r\nimport { Emitter } from '../events';\r\nimport { pushToStart, pushToEnd, firstIndex } from '../array';\r\nimport { range, clamp } from '../math';\r\nimport { ViewItem } from './viewItem';\r\nexport var Orientation;\r\n(function (Orientation) {\r\n Orientation[\"HORIZONTAL\"] = \"HORIZONTAL\";\r\n Orientation[\"VERTICAL\"] = \"VERTICAL\";\r\n})(Orientation || (Orientation = {}));\r\nexport var SashState;\r\n(function (SashState) {\r\n SashState[SashState[\"MAXIMUM\"] = 0] = \"MAXIMUM\";\r\n SashState[SashState[\"MINIMUM\"] = 1] = \"MINIMUM\";\r\n SashState[SashState[\"DISABLED\"] = 2] = \"DISABLED\";\r\n SashState[SashState[\"ENABLED\"] = 3] = \"ENABLED\";\r\n})(SashState || (SashState = {}));\r\nexport var LayoutPriority;\r\n(function (LayoutPriority) {\r\n LayoutPriority[\"Low\"] = \"low\";\r\n LayoutPriority[\"High\"] = \"high\";\r\n LayoutPriority[\"Normal\"] = \"normal\";\r\n})(LayoutPriority || (LayoutPriority = {}));\r\nexport var Sizing;\r\n(function (Sizing) {\r\n Sizing.Distribute = { type: 'distribute' };\r\n function Split(index) {\r\n return { type: 'split', index };\r\n }\r\n Sizing.Split = Split;\r\n function Invisible(cachedVisibleSize) {\r\n return { type: 'invisible', cachedVisibleSize };\r\n }\r\n Sizing.Invisible = Invisible;\r\n})(Sizing || (Sizing = {}));\r\nexport class Splitview {\r\n get size() {\r\n return this._size;\r\n }\r\n set size(value) {\r\n this._size = value;\r\n }\r\n get orthogonalSize() {\r\n return this._orthogonalSize;\r\n }\r\n set orthogonalSize(value) {\r\n this._orthogonalSize = value;\r\n }\r\n get length() {\r\n return this.viewItems.length;\r\n }\r\n get proportions() {\r\n return this._proportions ? [...this._proportions] : undefined;\r\n }\r\n get orientation() {\r\n return this._orientation;\r\n }\r\n set orientation(value) {\r\n this._orientation = value;\r\n const tmp = this.size;\r\n this.size = this.orthogonalSize;\r\n this.orthogonalSize = tmp;\r\n removeClasses(this.element, 'horizontal', 'vertical');\r\n this.element.classList.add(this.orientation == Orientation.HORIZONTAL\r\n ? 'horizontal'\r\n : 'vertical');\r\n }\r\n get minimumSize() {\r\n return this.viewItems.reduce((r, item) => r + item.minimumSize, 0);\r\n }\r\n get maximumSize() {\r\n return this.length === 0\r\n ? Number.POSITIVE_INFINITY\r\n : this.viewItems.reduce((r, item) => r + item.maximumSize, 0);\r\n }\r\n get startSnappingEnabled() {\r\n return this._startSnappingEnabled;\r\n }\r\n set startSnappingEnabled(startSnappingEnabled) {\r\n if (this._startSnappingEnabled === startSnappingEnabled) {\r\n return;\r\n }\r\n this._startSnappingEnabled = startSnappingEnabled;\r\n this.updateSashEnablement();\r\n }\r\n get endSnappingEnabled() {\r\n return this._endSnappingEnabled;\r\n }\r\n set endSnappingEnabled(endSnappingEnabled) {\r\n if (this._endSnappingEnabled === endSnappingEnabled) {\r\n return;\r\n }\r\n this._endSnappingEnabled = endSnappingEnabled;\r\n this.updateSashEnablement();\r\n }\r\n constructor(container, options) {\r\n this.container = container;\r\n this.viewItems = [];\r\n this.sashes = [];\r\n this._size = 0;\r\n this._orthogonalSize = 0;\r\n this.contentSize = 0;\r\n this._proportions = undefined;\r\n this._startSnappingEnabled = true;\r\n this._endSnappingEnabled = true;\r\n this._onDidSashEnd = new Emitter();\r\n this.onDidSashEnd = this._onDidSashEnd.event;\r\n this._onDidAddView = new Emitter();\r\n this.onDidAddView = this._onDidAddView.event;\r\n this._onDidRemoveView = new Emitter();\r\n this.onDidRemoveView = this._onDidRemoveView.event;\r\n this.resize = (index, delta, sizes = this.viewItems.map((x) => x.size), lowPriorityIndexes, highPriorityIndexes, overloadMinDelta = Number.NEGATIVE_INFINITY, overloadMaxDelta = Number.POSITIVE_INFINITY, snapBefore, snapAfter) => {\r\n if (index < 0 || index > this.viewItems.length) {\r\n return 0;\r\n }\r\n const upIndexes = range(index, -1);\r\n const downIndexes = range(index + 1, this.viewItems.length);\r\n //\r\n if (highPriorityIndexes) {\r\n for (const i of highPriorityIndexes) {\r\n pushToStart(upIndexes, i);\r\n pushToStart(downIndexes, i);\r\n }\r\n }\r\n if (lowPriorityIndexes) {\r\n for (const i of lowPriorityIndexes) {\r\n pushToEnd(upIndexes, i);\r\n pushToEnd(downIndexes, i);\r\n }\r\n }\r\n //\r\n const upItems = upIndexes.map((i) => this.viewItems[i]);\r\n const upSizes = upIndexes.map((i) => sizes[i]);\r\n //\r\n const downItems = downIndexes.map((i) => this.viewItems[i]);\r\n const downSizes = downIndexes.map((i) => sizes[i]);\r\n //\r\n const minDeltaUp = upIndexes.reduce((_, i) => _ + this.viewItems[i].minimumSize - sizes[i], 0);\r\n const maxDeltaUp = upIndexes.reduce((_, i) => _ + this.viewItems[i].maximumSize - sizes[i], 0);\r\n //\r\n const maxDeltaDown = downIndexes.length === 0\r\n ? Number.POSITIVE_INFINITY\r\n : downIndexes.reduce((_, i) => _ + sizes[i] - this.viewItems[i].minimumSize, 0);\r\n const minDeltaDown = downIndexes.length === 0\r\n ? Number.NEGATIVE_INFINITY\r\n : downIndexes.reduce((_, i) => _ + sizes[i] - this.viewItems[i].maximumSize, 0);\r\n //\r\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\r\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\r\n //\r\n let snapped = false;\r\n if (snapBefore) {\r\n const snapView = this.viewItems[snapBefore.index];\r\n const visible = delta >= snapBefore.limitDelta;\r\n snapped = visible !== snapView.visible;\r\n snapView.setVisible(visible, snapBefore.size);\r\n }\r\n if (!snapped && snapAfter) {\r\n const snapView = this.viewItems[snapAfter.index];\r\n const visible = delta < snapAfter.limitDelta;\r\n snapped = visible !== snapView.visible;\r\n snapView.setVisible(visible, snapAfter.size);\r\n }\r\n if (snapped) {\r\n return this.resize(index, delta, sizes, lowPriorityIndexes, highPriorityIndexes, overloadMinDelta, overloadMaxDelta);\r\n }\r\n //\r\n const tentativeDelta = clamp(delta, minDelta, maxDelta);\r\n let actualDelta = 0;\r\n //\r\n let deltaUp = tentativeDelta;\r\n for (let i = 0; i < upItems.length; i++) {\r\n const item = upItems[i];\r\n const size = clamp(upSizes[i] + deltaUp, item.minimumSize, item.maximumSize);\r\n const viewDelta = size - upSizes[i];\r\n actualDelta += viewDelta;\r\n deltaUp -= viewDelta;\r\n item.size = size;\r\n }\r\n //\r\n let deltaDown = actualDelta;\r\n for (let i = 0; i < downItems.length; i++) {\r\n const item = downItems[i];\r\n const size = clamp(downSizes[i] - deltaDown, item.minimumSize, item.maximumSize);\r\n const viewDelta = size - downSizes[i];\r\n deltaDown += viewDelta;\r\n item.size = size;\r\n }\r\n //\r\n return delta;\r\n };\r\n this._orientation = options.orientation;\r\n this.element = this.createContainer();\r\n this.proportionalLayout =\r\n options.proportionalLayout === undefined\r\n ? true\r\n : !!options.proportionalLayout;\r\n this.viewContainer = this.createViewContainer();\r\n this.sashContainer = this.createSashContainer();\r\n this.element.appendChild(this.sashContainer);\r\n this.element.appendChild(this.viewContainer);\r\n this.container.appendChild(this.element);\r\n this.style(options.styles);\r\n // We have an existing set of view, add them now\r\n if (options.descriptor) {\r\n this._size = options.descriptor.size;\r\n options.descriptor.views.forEach((viewDescriptor, index) => {\r\n const sizing = viewDescriptor.visible === undefined ||\r\n viewDescriptor.visible\r\n ? viewDescriptor.size\r\n : {\r\n type: 'invisible',\r\n cachedVisibleSize: viewDescriptor.size,\r\n };\r\n const view = viewDescriptor.view;\r\n this.addView(view, sizing, index, true\r\n // true skip layout\r\n );\r\n });\r\n // Initialize content size and proportions for first layout\r\n this.contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n this.saveProportions();\r\n }\r\n }\r\n style(styles) {\r\n if ((styles === null || styles === void 0 ? void 0 : styles.separatorBorder) === 'transparent') {\r\n removeClasses(this.element, 'separator-border');\r\n this.element.style.removeProperty('--dv-separator-border');\r\n }\r\n else {\r\n addClasses(this.element, 'separator-border');\r\n if (styles === null || styles === void 0 ? void 0 : styles.separatorBorder) {\r\n this.element.style.setProperty('--dv-separator-border', styles.separatorBorder);\r\n }\r\n }\r\n }\r\n isViewVisible(index) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n throw new Error('Index out of bounds');\r\n }\r\n const viewItem = this.viewItems[index];\r\n return viewItem.visible;\r\n }\r\n setViewVisible(index, visible) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n throw new Error('Index out of bounds');\r\n }\r\n toggleClass(this.container, 'visible', visible);\r\n const viewItem = this.viewItems[index];\r\n toggleClass(this.container, 'visible', visible);\r\n viewItem.setVisible(visible, viewItem.size);\r\n this.distributeEmptySpace(index);\r\n this.layoutViews();\r\n this.saveProportions();\r\n }\r\n getViewSize(index) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n return -1;\r\n }\r\n return this.viewItems[index].size;\r\n }\r\n resizeView(index, size) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n return;\r\n }\r\n const indexes = range(this.viewItems.length).filter((i) => i !== index);\r\n const lowPriorityIndexes = [\r\n ...indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low),\r\n index,\r\n ];\r\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\r\n const item = this.viewItems[index];\r\n size = Math.round(size);\r\n size = clamp(size, item.minimumSize, Math.min(item.maximumSize, this._size));\r\n item.size = size;\r\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\r\n }\r\n getViews() {\r\n return this.viewItems.map((x) => x.view);\r\n }\r\n onDidChange(item, size) {\r\n const index = this.viewItems.indexOf(item);\r\n if (index < 0 || index >= this.viewItems.length) {\r\n return;\r\n }\r\n size = typeof size === 'number' ? size : item.size;\r\n size = clamp(size, item.minimumSize, item.maximumSize);\r\n item.size = size;\r\n const indexes = range(this.viewItems.length).filter((i) => i !== index);\r\n const lowPriorityIndexes = [\r\n ...indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low),\r\n index,\r\n ];\r\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\r\n /**\r\n * add this view we are changing to the low-index list since we have determined the size\r\n * here and don't want it changed\r\n */\r\n this.relayout([...lowPriorityIndexes, index], highPriorityIndexes);\r\n }\r\n addView(view, size = { type: 'distribute' }, index = this.viewItems.length, skipLayout) {\r\n const container = document.createElement('div');\r\n container.className = 'view';\r\n container.appendChild(view.element);\r\n let viewSize;\r\n if (typeof size === 'number') {\r\n viewSize = size;\r\n }\r\n else if (size.type === 'split') {\r\n viewSize = this.getViewSize(size.index) / 2;\r\n }\r\n else if (size.type === 'invisible') {\r\n viewSize = { cachedVisibleSize: size.cachedVisibleSize };\r\n }\r\n else {\r\n viewSize = view.minimumSize;\r\n }\r\n const disposable = view.onDidChange((newSize) => this.onDidChange(viewItem, newSize.size));\r\n const viewItem = new ViewItem(container, view, viewSize, {\r\n dispose: () => {\r\n disposable.dispose();\r\n this.viewContainer.removeChild(container);\r\n },\r\n });\r\n if (index === this.viewItems.length) {\r\n this.viewContainer.appendChild(container);\r\n }\r\n else {\r\n this.viewContainer.insertBefore(container, this.viewContainer.children.item(index));\r\n }\r\n this.viewItems.splice(index, 0, viewItem);\r\n if (this.viewItems.length > 1) {\r\n //add sash\r\n const sash = document.createElement('div');\r\n sash.className = 'sash';\r\n const onPointerStart = (event) => {\r\n for (const item of this.viewItems) {\r\n item.enabled = false;\r\n }\r\n const iframes = [\r\n ...getElementsByTagName('iframe'),\r\n ...getElementsByTagName('webview'),\r\n ];\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'none';\r\n }\r\n const start = this._orientation === Orientation.HORIZONTAL\r\n ? event.clientX\r\n : event.clientY;\r\n const sashIndex = firstIndex(this.sashes, (s) => s.container === sash);\r\n //\r\n const sizes = this.viewItems.map((x) => x.size);\r\n //\r\n let snapBefore;\r\n let snapAfter;\r\n const upIndexes = range(sashIndex, -1);\r\n const downIndexes = range(sashIndex + 1, this.viewItems.length);\r\n const minDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].minimumSize - sizes[i]), 0);\r\n const maxDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].viewMaximumSize - sizes[i]), 0);\r\n const maxDeltaDown = downIndexes.length === 0\r\n ? Number.POSITIVE_INFINITY\r\n : downIndexes.reduce((r, i) => r +\r\n (sizes[i] - this.viewItems[i].minimumSize), 0);\r\n const minDeltaDown = downIndexes.length === 0\r\n ? Number.NEGATIVE_INFINITY\r\n : downIndexes.reduce((r, i) => r +\r\n (sizes[i] -\r\n this.viewItems[i].viewMaximumSize), 0);\r\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\r\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\r\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\r\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\r\n if (typeof snapBeforeIndex === 'number') {\r\n const snappedViewItem = this.viewItems[snapBeforeIndex];\r\n const halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);\r\n snapBefore = {\r\n index: snapBeforeIndex,\r\n limitDelta: snappedViewItem.visible\r\n ? minDelta - halfSize\r\n : minDelta + halfSize,\r\n size: snappedViewItem.size,\r\n };\r\n }\r\n if (typeof snapAfterIndex === 'number') {\r\n const snappedViewItem = this.viewItems[snapAfterIndex];\r\n const halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);\r\n snapAfter = {\r\n index: snapAfterIndex,\r\n limitDelta: snappedViewItem.visible\r\n ? maxDelta + halfSize\r\n : maxDelta - halfSize,\r\n size: snappedViewItem.size,\r\n };\r\n }\r\n const onPointerMove = (event) => {\r\n const current = this._orientation === Orientation.HORIZONTAL\r\n ? event.clientX\r\n : event.clientY;\r\n const delta = current - start;\r\n this.resize(sashIndex, delta, sizes, undefined, undefined, minDelta, maxDelta, snapBefore, snapAfter);\r\n this.distributeEmptySpace();\r\n this.layoutViews();\r\n };\r\n const end = () => {\r\n for (const item of this.viewItems) {\r\n item.enabled = true;\r\n }\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'auto';\r\n }\r\n this.saveProportions();\r\n document.removeEventListener('pointermove', onPointerMove);\r\n document.removeEventListener('pointerup', end);\r\n document.removeEventListener('pointercancel', end);\r\n this._onDidSashEnd.fire(undefined);\r\n };\r\n document.addEventListener('pointermove', onPointerMove);\r\n document.addEventListener('pointerup', end);\r\n document.addEventListener('pointercancel', end);\r\n };\r\n sash.addEventListener('pointerdown', onPointerStart);\r\n const sashItem = {\r\n container: sash,\r\n disposable: () => {\r\n sash.removeEventListener('pointerdown', onPointerStart);\r\n this.sashContainer.removeChild(sash);\r\n },\r\n };\r\n this.sashContainer.appendChild(sash);\r\n this.sashes.push(sashItem);\r\n }\r\n if (!skipLayout) {\r\n this.relayout([index]);\r\n }\r\n if (!skipLayout &&\r\n typeof size !== 'number' &&\r\n size.type === 'distribute') {\r\n this.distributeViewSizes();\r\n }\r\n this._onDidAddView.fire(view);\r\n }\r\n distributeViewSizes() {\r\n const flexibleViewItems = [];\r\n let flexibleSize = 0;\r\n for (const item of this.viewItems) {\r\n if (item.maximumSize - item.minimumSize > 0) {\r\n flexibleViewItems.push(item);\r\n flexibleSize += item.size;\r\n }\r\n }\r\n const size = Math.floor(flexibleSize / flexibleViewItems.length);\r\n for (const item of flexibleViewItems) {\r\n item.size = clamp(size, item.minimumSize, item.maximumSize);\r\n }\r\n const indexes = range(this.viewItems.length);\r\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\r\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\r\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\r\n }\r\n removeView(index, sizing, skipLayout = false) {\r\n // Remove view\r\n const viewItem = this.viewItems.splice(index, 1)[0];\r\n viewItem.dispose();\r\n // Remove sash\r\n if (this.viewItems.length >= 1) {\r\n const sashIndex = Math.max(index - 1, 0);\r\n const sashItem = this.sashes.splice(sashIndex, 1)[0];\r\n sashItem.disposable();\r\n }\r\n if (!skipLayout) {\r\n this.relayout();\r\n }\r\n if (sizing && sizing.type === 'distribute') {\r\n this.distributeViewSizes();\r\n }\r\n this._onDidRemoveView.fire(viewItem.view);\r\n return viewItem.view;\r\n }\r\n getViewCachedVisibleSize(index) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n throw new Error('Index out of bounds');\r\n }\r\n const viewItem = this.viewItems[index];\r\n return viewItem.cachedVisibleSize;\r\n }\r\n moveView(from, to) {\r\n const cachedVisibleSize = this.getViewCachedVisibleSize(from);\r\n const sizing = typeof cachedVisibleSize === 'undefined'\r\n ? this.getViewSize(from)\r\n : Sizing.Invisible(cachedVisibleSize);\r\n const view = this.removeView(from, undefined, true);\r\n this.addView(view, sizing, to);\r\n }\r\n layout(size, orthogonalSize) {\r\n const previousSize = Math.max(this.size, this.contentSize);\r\n this.size = size;\r\n this.orthogonalSize = orthogonalSize;\r\n if (!this.proportions) {\r\n const indexes = range(this.viewItems.length);\r\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\r\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\r\n this.resize(this.viewItems.length - 1, size - previousSize, undefined, lowPriorityIndexes, highPriorityIndexes);\r\n }\r\n else {\r\n for (let i = 0; i < this.viewItems.length; i++) {\r\n const item = this.viewItems[i];\r\n item.size = clamp(Math.round(this.proportions[i] * size), item.minimumSize, item.maximumSize);\r\n }\r\n }\r\n this.distributeEmptySpace();\r\n this.layoutViews();\r\n }\r\n relayout(lowPriorityIndexes, highPriorityIndexes) {\r\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n this.resize(this.viewItems.length - 1, this._size - contentSize, undefined, lowPriorityIndexes, highPriorityIndexes);\r\n this.distributeEmptySpace();\r\n this.layoutViews();\r\n this.saveProportions();\r\n }\r\n distributeEmptySpace(lowPriorityIndex) {\r\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n let emptyDelta = this.size - contentSize;\r\n const indexes = range(this.viewItems.length - 1, -1);\r\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\r\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\r\n for (const index of highPriorityIndexes) {\r\n pushToStart(indexes, index);\r\n }\r\n for (const index of lowPriorityIndexes) {\r\n pushToEnd(indexes, index);\r\n }\r\n if (typeof lowPriorityIndex === 'number') {\r\n pushToEnd(indexes, lowPriorityIndex);\r\n }\r\n for (let i = 0; emptyDelta !== 0 && i < indexes.length; i++) {\r\n const item = this.viewItems[indexes[i]];\r\n const size = clamp(item.size + emptyDelta, item.minimumSize, item.maximumSize);\r\n const viewDelta = size - item.size;\r\n emptyDelta -= viewDelta;\r\n item.size = size;\r\n }\r\n }\r\n saveProportions() {\r\n if (this.proportionalLayout && this.contentSize > 0) {\r\n this._proportions = this.viewItems.map((i) => i.size / this.contentSize);\r\n }\r\n }\r\n layoutViews() {\r\n this.contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n let sum = 0;\r\n const x = [];\r\n this.updateSashEnablement();\r\n for (let i = 0; i < this.viewItems.length - 1; i++) {\r\n sum += this.viewItems[i].size;\r\n x.push(sum);\r\n const offset = Math.min(Math.max(0, sum - 2), this.size - 4);\r\n if (this._orientation === Orientation.HORIZONTAL) {\r\n this.sashes[i].container.style.left = `${offset}px`;\r\n this.sashes[i].container.style.top = `0px`;\r\n }\r\n if (this._orientation === Orientation.VERTICAL) {\r\n this.sashes[i].container.style.left = `0px`;\r\n this.sashes[i].container.style.top = `${offset}px`;\r\n }\r\n }\r\n this.viewItems.forEach((view, i) => {\r\n if (this._orientation === Orientation.HORIZONTAL) {\r\n view.container.style.width = `${view.size}px`;\r\n view.container.style.left = i == 0 ? '0px' : `${x[i - 1]}px`;\r\n view.container.style.top = '';\r\n view.container.style.height = '';\r\n }\r\n if (this._orientation === Orientation.VERTICAL) {\r\n view.container.style.height = `${view.size}px`;\r\n view.container.style.top = i == 0 ? '0px' : `${x[i - 1]}px`;\r\n view.container.style.width = '';\r\n view.container.style.left = '';\r\n }\r\n view.view.layout(view.size, this._orthogonalSize);\r\n });\r\n }\r\n findFirstSnapIndex(indexes) {\r\n // visible views first\r\n for (const index of indexes) {\r\n const viewItem = this.viewItems[index];\r\n if (!viewItem.visible) {\r\n continue;\r\n }\r\n if (viewItem.snap) {\r\n return index;\r\n }\r\n }\r\n // then, hidden views\r\n for (const index of indexes) {\r\n const viewItem = this.viewItems[index];\r\n if (viewItem.visible &&\r\n viewItem.maximumSize - viewItem.minimumSize > 0) {\r\n return undefined;\r\n }\r\n if (!viewItem.visible && viewItem.snap) {\r\n return index;\r\n }\r\n }\r\n return undefined;\r\n }\r\n updateSashEnablement() {\r\n let previous = false;\r\n const collapsesDown = this.viewItems.map((i) => (previous = i.size - i.minimumSize > 0 || previous));\r\n previous = false;\r\n const expandsDown = this.viewItems.map((i) => (previous = i.maximumSize - i.size > 0 || previous));\r\n const reverseViews = [...this.viewItems].reverse();\r\n previous = false;\r\n const collapsesUp = reverseViews\r\n .map((i) => (previous = i.size - i.minimumSize > 0 || previous))\r\n .reverse();\r\n previous = false;\r\n const expandsUp = reverseViews\r\n .map((i) => (previous = i.maximumSize - i.size > 0 || previous))\r\n .reverse();\r\n let position = 0;\r\n for (let index = 0; index < this.sashes.length; index++) {\r\n const sash = this.sashes[index];\r\n const viewItem = this.viewItems[index];\r\n position += viewItem.size;\r\n const min = !(collapsesDown[index] && expandsUp[index + 1]);\r\n const max = !(expandsDown[index] && collapsesUp[index + 1]);\r\n if (min && max) {\r\n const upIndexes = range(index, -1);\r\n const downIndexes = range(index + 1, this.viewItems.length);\r\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\r\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\r\n const snappedBefore = typeof snapBeforeIndex === 'number' &&\r\n !this.viewItems[snapBeforeIndex].visible;\r\n const snappedAfter = typeof snapAfterIndex === 'number' &&\r\n !this.viewItems[snapAfterIndex].visible;\r\n if (snappedBefore &&\r\n collapsesUp[index] &&\r\n (position > 0 || this.startSnappingEnabled)) {\r\n this.updateSash(sash, SashState.MINIMUM);\r\n }\r\n else if (snappedAfter &&\r\n collapsesDown[index] &&\r\n (position < this.contentSize || this.endSnappingEnabled)) {\r\n this.updateSash(sash, SashState.MAXIMUM);\r\n }\r\n else {\r\n this.updateSash(sash, SashState.DISABLED);\r\n }\r\n }\r\n else if (min && !max) {\r\n this.updateSash(sash, SashState.MINIMUM);\r\n }\r\n else if (!min && max) {\r\n this.updateSash(sash, SashState.MAXIMUM);\r\n }\r\n else {\r\n this.updateSash(sash, SashState.ENABLED);\r\n }\r\n }\r\n }\r\n updateSash(sash, state) {\r\n toggleClass(sash.container, 'disabled', state === SashState.DISABLED);\r\n toggleClass(sash.container, 'enabled', state === SashState.ENABLED);\r\n toggleClass(sash.container, 'maximum', state === SashState.MAXIMUM);\r\n toggleClass(sash.container, 'minimum', state === SashState.MINIMUM);\r\n }\r\n createViewContainer() {\r\n const element = document.createElement('div');\r\n element.className = 'view-container';\r\n return element;\r\n }\r\n createSashContainer() {\r\n const element = document.createElement('div');\r\n element.className = 'sash-container';\r\n return element;\r\n }\r\n createContainer() {\r\n const element = document.createElement('div');\r\n const orientationClassname = this._orientation === Orientation.HORIZONTAL\r\n ? 'horizontal'\r\n : 'vertical';\r\n element.className = `split-view-container ${orientationClassname}`;\r\n return element;\r\n }\r\n dispose() {\r\n this._onDidSashEnd.dispose();\r\n this._onDidAddView.dispose();\r\n this._onDidRemoveView.dispose();\r\n for (let i = 0; i < this.element.children.length; i++) {\r\n if (this.element.children.item(i) === this.element) {\r\n this.element.removeChild(this.element);\r\n break;\r\n }\r\n }\r\n for (const viewItem of this.viewItems) {\r\n viewItem.dispose();\r\n }\r\n this.element.remove();\r\n }\r\n}\r\n//# sourceMappingURL=splitview.js.map","import { Splitview, Orientation, } from '../splitview/splitview';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nimport { Emitter } from '../events';\r\nimport { addClasses, removeClasses } from '../dom';\r\nexport class Paneview extends CompositeDisposable {\r\n get onDidAddView() {\r\n return this.splitview.onDidAddView;\r\n }\r\n get onDidRemoveView() {\r\n return this.splitview.onDidRemoveView;\r\n }\r\n get minimumSize() {\r\n return this.splitview.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.splitview.maximumSize;\r\n }\r\n get orientation() {\r\n return this.splitview.orientation;\r\n }\r\n get size() {\r\n return this.splitview.size;\r\n }\r\n get orthogonalSize() {\r\n return this.splitview.orthogonalSize;\r\n }\r\n constructor(container, options) {\r\n var _a;\r\n super();\r\n this.paneItems = [];\r\n this.skipAnimation = false;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._orientation = (_a = options.orientation) !== null && _a !== void 0 ? _a : Orientation.VERTICAL;\r\n this.element = document.createElement('div');\r\n this.element.className = 'pane-container';\r\n container.appendChild(this.element);\r\n this.splitview = new Splitview(this.element, {\r\n orientation: this._orientation,\r\n proportionalLayout: false,\r\n descriptor: options.descriptor,\r\n });\r\n // if we've added views from the descriptor we need to\r\n // add the panes to our Pane array and setup animation\r\n this.getPanes().forEach((pane) => {\r\n const disposable = new CompositeDisposable(pane.onDidChangeExpansionState(() => {\r\n this.setupAnimation();\r\n this._onDidChange.fire(undefined);\r\n }));\r\n const paneItem = {\r\n pane,\r\n disposable: {\r\n dispose: () => {\r\n disposable.dispose();\r\n },\r\n },\r\n };\r\n this.paneItems.push(paneItem);\r\n pane.orthogonalSize = this.splitview.orthogonalSize;\r\n });\r\n this.addDisposables(this._onDidChange, this.splitview.onDidSashEnd(() => {\r\n this._onDidChange.fire(undefined);\r\n }), this.splitview.onDidAddView(() => {\r\n this._onDidChange.fire();\r\n }), this.splitview.onDidRemoveView(() => {\r\n this._onDidChange.fire();\r\n }));\r\n }\r\n addPane(pane, size, index = this.splitview.length, skipLayout = false) {\r\n const disposable = pane.onDidChangeExpansionState(() => {\r\n this.setupAnimation();\r\n this._onDidChange.fire(undefined);\r\n });\r\n const paneItem = {\r\n pane,\r\n disposable: {\r\n dispose: () => {\r\n disposable.dispose();\r\n },\r\n },\r\n };\r\n this.paneItems.splice(index, 0, paneItem);\r\n pane.orthogonalSize = this.splitview.orthogonalSize;\r\n this.splitview.addView(pane, size, index, skipLayout);\r\n }\r\n getViewSize(index) {\r\n return this.splitview.getViewSize(index);\r\n }\r\n getPanes() {\r\n return this.splitview.getViews();\r\n }\r\n removePane(index, options = { skipDispose: false }) {\r\n const paneItem = this.paneItems.splice(index, 1)[0];\r\n this.splitview.removeView(index);\r\n if (!options.skipDispose) {\r\n paneItem.disposable.dispose();\r\n paneItem.pane.dispose();\r\n }\r\n return paneItem;\r\n }\r\n moveView(from, to) {\r\n if (from === to) {\r\n return;\r\n }\r\n const view = this.removePane(from, { skipDispose: true });\r\n this.skipAnimation = true;\r\n try {\r\n this.addPane(view.pane, view.pane.size, to, false);\r\n }\r\n finally {\r\n this.skipAnimation = false;\r\n }\r\n }\r\n layout(size, orthogonalSize) {\r\n this.splitview.layout(size, orthogonalSize);\r\n }\r\n setupAnimation() {\r\n if (this.skipAnimation) {\r\n return;\r\n }\r\n if (this.animationTimer) {\r\n clearTimeout(this.animationTimer);\r\n this.animationTimer = undefined;\r\n }\r\n addClasses(this.element, 'animated');\r\n this.animationTimer = setTimeout(() => {\r\n this.animationTimer = undefined;\r\n removeClasses(this.element, 'animated');\r\n }, 200);\r\n }\r\n dispose() {\r\n super.dispose();\r\n if (this.animationTimer) {\r\n clearTimeout(this.animationTimer);\r\n this.animationTimer = undefined;\r\n }\r\n this.paneItems.forEach((paneItem) => {\r\n paneItem.disposable.dispose();\r\n paneItem.pane.dispose();\r\n });\r\n this.paneItems = [];\r\n this.splitview.dispose();\r\n this.element.remove();\r\n }\r\n}\r\n//# sourceMappingURL=paneview.js.map","/*---------------------------------------------------------------------------------------------\r\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\r\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Orientation } from '../splitview/splitview';\r\nimport { Emitter } from '../events';\r\nexport class LeafNode {\r\n get minimumWidth() {\r\n return this.view.minimumWidth;\r\n }\r\n get maximumWidth() {\r\n return this.view.maximumWidth;\r\n }\r\n get minimumHeight() {\r\n return this.view.minimumHeight;\r\n }\r\n get maximumHeight() {\r\n return this.view.maximumHeight;\r\n }\r\n get priority() {\r\n return this.view.priority;\r\n }\r\n get snap() {\r\n return this.view.snap;\r\n }\r\n get minimumSize() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.minimumHeight\r\n : this.minimumWidth;\r\n }\r\n get maximumSize() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.maximumHeight\r\n : this.maximumWidth;\r\n }\r\n get minimumOrthogonalSize() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.minimumWidth\r\n : this.minimumHeight;\r\n }\r\n get maximumOrthogonalSize() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.maximumWidth\r\n : this.maximumHeight;\r\n }\r\n get orthogonalSize() {\r\n return this._orthogonalSize;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n get element() {\r\n return this.view.element;\r\n }\r\n get width() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.orthogonalSize\r\n : this.size;\r\n }\r\n get height() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.size\r\n : this.orthogonalSize;\r\n }\r\n constructor(view, orientation, orthogonalSize, size = 0) {\r\n this.view = view;\r\n this.orientation = orientation;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._orthogonalSize = orthogonalSize;\r\n this._size = size;\r\n this._disposable = this.view.onDidChange((event) => {\r\n if (event) {\r\n this._onDidChange.fire({\r\n size: this.orientation === Orientation.VERTICAL\r\n ? event.width\r\n : event.height,\r\n orthogonalSize: this.orientation === Orientation.VERTICAL\r\n ? event.height\r\n : event.width,\r\n });\r\n }\r\n else {\r\n this._onDidChange.fire({});\r\n }\r\n });\r\n }\r\n setVisible(visible) {\r\n if (this.view.setVisible) {\r\n this.view.setVisible(visible);\r\n this._onDidChange.fire({});\r\n }\r\n }\r\n layout(size, orthogonalSize) {\r\n this._size = size;\r\n this._orthogonalSize = orthogonalSize;\r\n this.view.layout(this.width, this.height);\r\n }\r\n dispose() {\r\n this._onDidChange.dispose();\r\n this._disposable.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=leafNode.js.map","/*---------------------------------------------------------------------------------------------\r\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\r\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Splitview, Orientation, LayoutPriority, } from '../splitview/splitview';\r\nimport { Emitter, Event } from '../events';\r\nimport { LeafNode } from './leafNode';\r\nimport { CompositeDisposable, Disposable } from '../lifecycle';\r\nexport class BranchNode extends CompositeDisposable {\r\n get width() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.size\r\n : this.orthogonalSize;\r\n }\r\n get height() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.orthogonalSize\r\n : this.size;\r\n }\r\n get minimumSize() {\r\n return this.children.length === 0\r\n ? 0\r\n : Math.max(...this.children.map((c) => c.minimumOrthogonalSize));\r\n }\r\n get maximumSize() {\r\n return Math.min(...this.children.map((c) => c.maximumOrthogonalSize));\r\n }\r\n get minimumOrthogonalSize() {\r\n return this.splitview.minimumSize;\r\n }\r\n get maximumOrthogonalSize() {\r\n return this.splitview.maximumSize;\r\n }\r\n get orthogonalSize() {\r\n return this._orthogonalSize;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n get minimumWidth() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.minimumOrthogonalSize\r\n : this.minimumSize;\r\n }\r\n get minimumHeight() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.minimumSize\r\n : this.minimumOrthogonalSize;\r\n }\r\n get maximumWidth() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.maximumOrthogonalSize\r\n : this.maximumSize;\r\n }\r\n get maximumHeight() {\r\n return this.orientation === Orientation.HORIZONTAL\r\n ? this.maximumSize\r\n : this.maximumOrthogonalSize;\r\n }\r\n get priority() {\r\n if (this.children.length === 0) {\r\n return LayoutPriority.Normal;\r\n }\r\n const priorities = this.children.map((c) => typeof c.priority === 'undefined'\r\n ? LayoutPriority.Normal\r\n : c.priority);\r\n if (priorities.some((p) => p === LayoutPriority.High)) {\r\n return LayoutPriority.High;\r\n }\r\n else if (priorities.some((p) => p === LayoutPriority.Low)) {\r\n return LayoutPriority.Low;\r\n }\r\n return LayoutPriority.Normal;\r\n }\r\n constructor(orientation, proportionalLayout, styles, size, orthogonalSize, childDescriptors) {\r\n super();\r\n this.orientation = orientation;\r\n this.proportionalLayout = proportionalLayout;\r\n this.styles = styles;\r\n this._childrenDisposable = Disposable.NONE;\r\n this.children = [];\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._orthogonalSize = orthogonalSize;\r\n this._size = size;\r\n this.element = document.createElement('div');\r\n this.element.className = 'branch-node';\r\n if (!childDescriptors) {\r\n this.splitview = new Splitview(this.element, {\r\n orientation: this.orientation,\r\n proportionalLayout,\r\n styles,\r\n });\r\n this.splitview.layout(this.size, this.orthogonalSize);\r\n }\r\n else {\r\n const descriptor = {\r\n views: childDescriptors.map((childDescriptor) => {\r\n return {\r\n view: childDescriptor.node,\r\n size: childDescriptor.node.size,\r\n visible: childDescriptor.node instanceof LeafNode &&\r\n childDescriptor.visible !== undefined\r\n ? childDescriptor.visible\r\n : true,\r\n };\r\n }),\r\n size: this.orthogonalSize,\r\n };\r\n this.children = childDescriptors.map((c) => c.node);\r\n this.splitview = new Splitview(this.element, {\r\n orientation: this.orientation,\r\n descriptor,\r\n proportionalLayout,\r\n styles,\r\n });\r\n }\r\n this.addDisposables(this._onDidChange, this.splitview.onDidSashEnd(() => {\r\n this._onDidChange.fire({});\r\n }));\r\n this.setupChildrenEvents();\r\n }\r\n setVisible(visible) {\r\n for (const child of this.children) {\r\n child.setVisible(visible);\r\n }\r\n }\r\n isChildVisible(index) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n return this.splitview.isViewVisible(index);\r\n }\r\n setChildVisible(index, visible) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n if (this.splitview.isViewVisible(index) === visible) {\r\n return;\r\n }\r\n this.splitview.setViewVisible(index, visible);\r\n }\r\n moveChild(from, to) {\r\n if (from === to) {\r\n return;\r\n }\r\n if (from < 0 || from >= this.children.length) {\r\n throw new Error('Invalid from index');\r\n }\r\n if (from < to) {\r\n to--;\r\n }\r\n this.splitview.moveView(from, to);\r\n const child = this._removeChild(from);\r\n this._addChild(child, to);\r\n }\r\n getChildSize(index) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n return this.splitview.getViewSize(index);\r\n }\r\n resizeChild(index, size) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n this.splitview.resizeView(index, size);\r\n }\r\n layout(size, orthogonalSize) {\r\n this._size = orthogonalSize;\r\n this._orthogonalSize = size;\r\n this.splitview.layout(orthogonalSize, size);\r\n }\r\n addChild(node, size, index, skipLayout) {\r\n if (index < 0 || index > this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n this.splitview.addView(node, size, index, skipLayout);\r\n this._addChild(node, index);\r\n }\r\n getChildCachedVisibleSize(index) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n return this.splitview.getViewCachedVisibleSize(index);\r\n }\r\n removeChild(index, sizing) {\r\n if (index < 0 || index >= this.children.length) {\r\n throw new Error('Invalid index');\r\n }\r\n this.splitview.removeView(index, sizing);\r\n return this._removeChild(index);\r\n }\r\n _addChild(node, index) {\r\n this.children.splice(index, 0, node);\r\n this.setupChildrenEvents();\r\n }\r\n _removeChild(index) {\r\n const [child] = this.children.splice(index, 1);\r\n this.setupChildrenEvents();\r\n return child;\r\n }\r\n setupChildrenEvents() {\r\n this._childrenDisposable.dispose();\r\n this._childrenDisposable = Event.any(...this.children.map((c) => c.onDidChange))((e) => {\r\n /**\r\n * indicate a change has occured to allows any re-rendering but don't bubble\r\n * event because that was specific to this branch\r\n */\r\n this._onDidChange.fire({ size: e.orthogonalSize });\r\n });\r\n }\r\n dispose() {\r\n this._childrenDisposable.dispose();\r\n this.splitview.dispose();\r\n this.children.forEach((child) => child.dispose());\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=branchNode.js.map","/*---------------------------------------------------------------------------------------------\r\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\r\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Orientation, Sizing, } from '../splitview/splitview';\r\nimport { tail } from '../array';\r\nimport { LeafNode } from './leafNode';\r\nimport { BranchNode } from './branchNode';\r\nimport { Emitter } from '../events';\r\nimport { MutableDisposable } from '../lifecycle';\r\nfunction findLeaf(candiateNode, last) {\r\n if (candiateNode instanceof LeafNode) {\r\n return candiateNode;\r\n }\r\n if (candiateNode instanceof BranchNode) {\r\n return findLeaf(candiateNode.children[last ? candiateNode.children.length - 1 : 0], last);\r\n }\r\n throw new Error('invalid node');\r\n}\r\nfunction flipNode(node, size, orthogonalSize) {\r\n if (node instanceof BranchNode) {\r\n const result = new BranchNode(orthogonal(node.orientation), node.proportionalLayout, node.styles, size, orthogonalSize);\r\n let totalSize = 0;\r\n for (let i = node.children.length - 1; i >= 0; i--) {\r\n const child = node.children[i];\r\n const childSize = child instanceof BranchNode ? child.orthogonalSize : child.size;\r\n let newSize = node.size === 0\r\n ? 0\r\n : Math.round((size * childSize) / node.size);\r\n totalSize += newSize;\r\n // The last view to add should adjust to rounding errors\r\n if (i === 0) {\r\n newSize += size - totalSize;\r\n }\r\n result.addChild(flipNode(child, orthogonalSize, newSize), newSize, 0, true);\r\n }\r\n return result;\r\n }\r\n else {\r\n return new LeafNode(node.view, orthogonal(node.orientation), orthogonalSize);\r\n }\r\n}\r\nexport function indexInParent(element) {\r\n const parentElement = element.parentElement;\r\n if (!parentElement) {\r\n throw new Error('Invalid grid element');\r\n }\r\n let el = parentElement.firstElementChild;\r\n let index = 0;\r\n while (el !== element && el !== parentElement.lastElementChild && el) {\r\n el = el.nextElementSibling;\r\n index++;\r\n }\r\n return index;\r\n}\r\n/**\r\n * Find the grid location of a specific DOM element by traversing the parent\r\n * chain and finding each child index on the way.\r\n *\r\n * This will break as soon as DOM structures of the Splitview or Gridview change.\r\n */\r\nexport function getGridLocation(element) {\r\n const parentElement = element.parentElement;\r\n if (!parentElement) {\r\n throw new Error('Invalid grid element');\r\n }\r\n if (/\\bgrid-view\\b/.test(parentElement.className)) {\r\n return [];\r\n }\r\n const index = indexInParent(parentElement);\r\n const ancestor = parentElement.parentElement.parentElement.parentElement;\r\n return [...getGridLocation(ancestor), index];\r\n}\r\nexport function getRelativeLocation(rootOrientation, location, direction) {\r\n const orientation = getLocationOrientation(rootOrientation, location);\r\n const directionOrientation = getDirectionOrientation(direction);\r\n if (orientation === directionOrientation) {\r\n const [rest, _index] = tail(location);\r\n let index = _index;\r\n if (direction === 'right' || direction === 'bottom') {\r\n index += 1;\r\n }\r\n return [...rest, index];\r\n }\r\n else {\r\n const index = direction === 'right' || direction === 'bottom' ? 1 : 0;\r\n return [...location, index];\r\n }\r\n}\r\nexport function getDirectionOrientation(direction) {\r\n return direction === 'top' || direction === 'bottom'\r\n ? Orientation.VERTICAL\r\n : Orientation.HORIZONTAL;\r\n}\r\nexport function getLocationOrientation(rootOrientation, location) {\r\n return location.length % 2 === 0\r\n ? orthogonal(rootOrientation)\r\n : rootOrientation;\r\n}\r\nexport const orthogonal = (orientation) => orientation === Orientation.HORIZONTAL\r\n ? Orientation.VERTICAL\r\n : Orientation.HORIZONTAL;\r\nexport function isGridBranchNode(node) {\r\n return !!node.children;\r\n}\r\nconst serializeBranchNode = (node, orientation) => {\r\n const size = orientation === Orientation.VERTICAL ? node.box.width : node.box.height;\r\n if (!isGridBranchNode(node)) {\r\n if (typeof node.cachedVisibleSize === 'number') {\r\n return {\r\n type: 'leaf',\r\n data: node.view.toJSON(),\r\n size: node.cachedVisibleSize,\r\n visible: false,\r\n };\r\n }\r\n return { type: 'leaf', data: node.view.toJSON(), size };\r\n }\r\n return {\r\n type: 'branch',\r\n data: node.children.map((c) => serializeBranchNode(c, orthogonal(orientation))),\r\n size,\r\n };\r\n};\r\nexport class Gridview {\r\n get length() {\r\n return this._root ? this._root.children.length : 0;\r\n }\r\n get orientation() {\r\n return this.root.orientation;\r\n }\r\n set orientation(orientation) {\r\n if (this.root.orientation === orientation) {\r\n return;\r\n }\r\n const { size, orthogonalSize } = this.root;\r\n this.root = flipNode(this.root, orthogonalSize, size);\r\n this.root.layout(size, orthogonalSize);\r\n }\r\n get width() {\r\n return this.root.width;\r\n }\r\n get height() {\r\n return this.root.height;\r\n }\r\n get minimumWidth() {\r\n return this.root.minimumWidth;\r\n }\r\n get minimumHeight() {\r\n return this.root.minimumHeight;\r\n }\r\n get maximumWidth() {\r\n return this.root.maximumHeight;\r\n }\r\n get maximumHeight() {\r\n return this.root.maximumHeight;\r\n }\r\n serialize() {\r\n const root = serializeBranchNode(this.getView(), this.orientation);\r\n return {\r\n root,\r\n width: this.width,\r\n height: this.height,\r\n orientation: this.orientation,\r\n };\r\n }\r\n dispose() {\r\n this.disposable.dispose();\r\n this._onDidChange.dispose();\r\n this.root.dispose();\r\n this.element.remove();\r\n }\r\n clear() {\r\n const orientation = this.root.orientation;\r\n this.root = new BranchNode(orientation, this.proportionalLayout, this.styles, this.root.size, this.root.orthogonalSize);\r\n }\r\n deserialize(json, deserializer) {\r\n const orientation = json.orientation;\r\n const height = orientation === Orientation.VERTICAL ? json.height : json.width;\r\n this._deserialize(json.root, orientation, deserializer, height);\r\n }\r\n _deserialize(root, orientation, deserializer, orthogonalSize) {\r\n this.root = this._deserializeNode(root, orientation, deserializer, orthogonalSize);\r\n }\r\n _deserializeNode(node, orientation, deserializer, orthogonalSize) {\r\n let result;\r\n if (node.type === 'branch') {\r\n const serializedChildren = node.data;\r\n const children = serializedChildren.map((serializedChild) => {\r\n return {\r\n node: this._deserializeNode(serializedChild, orthogonal(orientation), deserializer, node.size),\r\n visible: serializedChild.visible,\r\n };\r\n });\r\n result = new BranchNode(orientation, this.proportionalLayout, this.styles, node.size, // <- orthogonal size - flips at each depth\r\n orthogonalSize, // <- size - flips at each depth\r\n children);\r\n }\r\n else {\r\n result = new LeafNode(deserializer.fromJSON(node), orientation, orthogonalSize, node.size);\r\n }\r\n return result;\r\n }\r\n get root() {\r\n return this._root;\r\n }\r\n set root(root) {\r\n const oldRoot = this._root;\r\n if (oldRoot) {\r\n oldRoot.dispose();\r\n this.element.removeChild(oldRoot.element);\r\n }\r\n this._root = root;\r\n this.element.appendChild(this._root.element);\r\n this.disposable.value = this._root.onDidChange((e) => {\r\n this._onDidChange.fire(e);\r\n });\r\n }\r\n /**\r\n * If the root is orientated as a VERTICAL node then nest the existing root within a new HORIZIONTAL root node\r\n * If the root is orientated as a HORIZONTAL node then nest the existing root within a new VERITCAL root node\r\n */\r\n insertOrthogonalSplitviewAtRoot() {\r\n if (!this._root) {\r\n return;\r\n }\r\n const oldRoot = this.root;\r\n oldRoot.element.remove();\r\n this._root = new BranchNode(orthogonal(oldRoot.orientation), this.proportionalLayout, this.styles, this.root.orthogonalSize, this.root.size);\r\n if (oldRoot.children.length === 0) {\r\n // no data so no need to add anything back in\r\n }\r\n else if (oldRoot.children.length === 1) {\r\n // can remove one level of redundant branching if there is only a single child\r\n const childReference = oldRoot.children[0];\r\n const child = oldRoot.removeChild(0); // remove to prevent disposal when disposing of unwanted root\r\n child.dispose();\r\n oldRoot.dispose();\r\n this._root.addChild(\r\n /**\r\n * the child node will have the same orientation as the new root since\r\n * we are removing the inbetween node.\r\n * the entire 'tree' must be flipped recursively to ensure that the orientation\r\n * flips at each level\r\n */\r\n flipNode(childReference, childReference.orthogonalSize, childReference.size), Sizing.Distribute, 0);\r\n }\r\n else {\r\n this._root.addChild(oldRoot, Sizing.Distribute, 0);\r\n }\r\n this.element.appendChild(this._root.element);\r\n this.disposable.value = this._root.onDidChange((e) => {\r\n this._onDidChange.fire(e);\r\n });\r\n }\r\n next(location) {\r\n return this.progmaticSelect(location);\r\n }\r\n previous(location) {\r\n return this.progmaticSelect(location, true);\r\n }\r\n getView(location) {\r\n const node = location ? this.getNode(location)[1] : this.root;\r\n return this._getViews(node, this.orientation);\r\n }\r\n _getViews(node, orientation, cachedVisibleSize) {\r\n const box = { height: node.height, width: node.width };\r\n if (node instanceof LeafNode) {\r\n return { box, view: node.view, cachedVisibleSize };\r\n }\r\n const children = [];\r\n for (let i = 0; i < node.children.length; i++) {\r\n const child = node.children[i];\r\n const nodeCachedVisibleSize = node.getChildCachedVisibleSize(i);\r\n children.push(this._getViews(child, orthogonal(orientation), nodeCachedVisibleSize));\r\n }\r\n return { box, children };\r\n }\r\n progmaticSelect(location, reverse = false) {\r\n const [path, node] = this.getNode(location);\r\n if (!(node instanceof LeafNode)) {\r\n throw new Error('invalid location');\r\n }\r\n for (let i = path.length - 1; i > -1; i--) {\r\n const n = path[i];\r\n const l = location[i] || 0;\r\n const canProgressInCurrentLevel = reverse\r\n ? l - 1 > -1\r\n : l + 1 < n.children.length;\r\n if (canProgressInCurrentLevel) {\r\n return findLeaf(n.children[reverse ? l - 1 : l + 1], reverse);\r\n }\r\n }\r\n return findLeaf(this.root, reverse);\r\n }\r\n constructor(proportionalLayout, styles, orientation) {\r\n this.proportionalLayout = proportionalLayout;\r\n this.styles = styles;\r\n this.disposable = new MutableDisposable();\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this.element = document.createElement('div');\r\n this.element.className = 'grid-view';\r\n this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0);\r\n }\r\n isViewVisible(location) {\r\n const [rest, index] = tail(location);\r\n const [, parent] = this.getNode(rest);\r\n if (!(parent instanceof BranchNode)) {\r\n throw new Error('Invalid from location');\r\n }\r\n return parent.isChildVisible(index);\r\n }\r\n setViewVisible(location, visible) {\r\n const [rest, index] = tail(location);\r\n const [, parent] = this.getNode(rest);\r\n if (!(parent instanceof BranchNode)) {\r\n throw new Error('Invalid from location');\r\n }\r\n parent.setChildVisible(index, visible);\r\n }\r\n moveView(parentLocation, from, to) {\r\n const [, parent] = this.getNode(parentLocation);\r\n if (!(parent instanceof BranchNode)) {\r\n throw new Error('Invalid location');\r\n }\r\n parent.moveChild(from, to);\r\n }\r\n addView(view, size, location) {\r\n const [rest, index] = tail(location);\r\n const [pathToParent, parent] = this.getNode(rest);\r\n if (parent instanceof BranchNode) {\r\n const node = new LeafNode(view, orthogonal(parent.orientation), parent.orthogonalSize);\r\n parent.addChild(node, size, index);\r\n }\r\n else {\r\n const [grandParent, ..._] = [...pathToParent].reverse();\r\n const [parentIndex, ...__] = [...rest].reverse();\r\n let newSiblingSize = 0;\r\n const newSiblingCachedVisibleSize = grandParent.getChildCachedVisibleSize(parentIndex);\r\n if (typeof newSiblingCachedVisibleSize === 'number') {\r\n newSiblingSize = Sizing.Invisible(newSiblingCachedVisibleSize);\r\n }\r\n const child = grandParent.removeChild(parentIndex);\r\n child.dispose();\r\n const newParent = new BranchNode(parent.orientation, this.proportionalLayout, this.styles, parent.size, parent.orthogonalSize);\r\n grandParent.addChild(newParent, parent.size, parentIndex);\r\n const newSibling = new LeafNode(parent.view, grandParent.orientation, parent.size);\r\n newParent.addChild(newSibling, newSiblingSize, 0);\r\n if (typeof size !== 'number' && size.type === 'split') {\r\n size = { type: 'split', index: 0 };\r\n }\r\n const node = new LeafNode(view, grandParent.orientation, parent.size);\r\n newParent.addChild(node, size, index);\r\n }\r\n }\r\n remove(view, sizing) {\r\n const location = getGridLocation(view.element);\r\n return this.removeView(location, sizing);\r\n }\r\n removeView(location, sizing) {\r\n const [rest, index] = tail(location);\r\n const [pathToParent, parent] = this.getNode(rest);\r\n if (!(parent instanceof BranchNode)) {\r\n throw new Error('Invalid location');\r\n }\r\n const nodeToRemove = parent.children[index];\r\n if (!(nodeToRemove instanceof LeafNode)) {\r\n throw new Error('Invalid location');\r\n }\r\n parent.removeChild(index, sizing);\r\n nodeToRemove.dispose();\r\n if (parent.children.length !== 1) {\r\n return nodeToRemove.view;\r\n }\r\n // if the parent has only one child and we know the parent is a BranchNode we can make the tree\r\n // more efficiently spaced by replacing the parent BranchNode with the child.\r\n // if that child is a LeafNode then we simply replace the BranchNode with the child otherwise if the child\r\n // is a BranchNode too we should spread it's children into the grandparent.\r\n // refer to the remaining child as the sibling\r\n const sibling = parent.children[0];\r\n if (pathToParent.length === 0) {\r\n // if the parent is root\r\n if (sibling instanceof LeafNode) {\r\n // if the sibling is a leaf node no action is required\r\n return nodeToRemove.view;\r\n }\r\n // otherwise the sibling is a branch node. since the parent is the root and the root has only one child\r\n // which is a branch node we can just set this branch node to be the new root node\r\n // for good housekeeping we'll removing the sibling from it's existing tree\r\n parent.removeChild(0, sizing);\r\n // and set that sibling node to be root\r\n this.root = sibling;\r\n return nodeToRemove.view;\r\n }\r\n // otherwise the parent is apart of a large sub-tree\r\n const [grandParent, ..._] = [...pathToParent].reverse();\r\n const [parentIndex, ...__] = [...rest].reverse();\r\n const isSiblingVisible = parent.isChildVisible(0);\r\n // either way we need to remove the sibling from it's existing tree\r\n parent.removeChild(0, sizing);\r\n // note the sizes of all of the grandparents children\r\n const sizes = grandParent.children.map((_size, i) => grandParent.getChildSize(i));\r\n // remove the parent from the grandparent since we are moving the sibling to take the parents place\r\n // this parent is no longer used and can be disposed of\r\n grandParent.removeChild(parentIndex, sizing).dispose();\r\n if (sibling instanceof BranchNode) {\r\n // replace the parent with the siblings children\r\n sizes.splice(parentIndex, 1, ...sibling.children.map((c) => c.size));\r\n // and add those siblings to the grandparent\r\n for (let i = 0; i < sibling.children.length; i++) {\r\n const child = sibling.children[i];\r\n grandParent.addChild(child, child.size, parentIndex + i);\r\n }\r\n /**\r\n * clean down the branch node since we need to dipose of it and\r\n * when .dispose() it called on a branch it will dispose of any\r\n * views it is holding onto.\r\n */\r\n while (sibling.children.length > 0) {\r\n sibling.removeChild(0);\r\n }\r\n }\r\n else {\r\n // otherwise create a new leaf node and add that to the grandparent\r\n const newSibling = new LeafNode(sibling.view, orthogonal(sibling.orientation), sibling.size);\r\n const siblingSizing = isSiblingVisible\r\n ? sibling.orthogonalSize\r\n : Sizing.Invisible(sibling.orthogonalSize);\r\n grandParent.addChild(newSibling, siblingSizing, parentIndex);\r\n }\r\n // the containing node of the sibling is no longer required and can be disposed of\r\n sibling.dispose();\r\n // resize everything\r\n for (let i = 0; i < sizes.length; i++) {\r\n grandParent.resizeChild(i, sizes[i]);\r\n }\r\n return nodeToRemove.view;\r\n }\r\n layout(width, height) {\r\n const [size, orthogonalSize] = this.root.orientation === Orientation.HORIZONTAL\r\n ? [height, width]\r\n : [width, height];\r\n this.root.layout(size, orthogonalSize);\r\n }\r\n getNode(location, node = this.root, path = []) {\r\n if (location.length === 0) {\r\n return [path, node];\r\n }\r\n if (!(node instanceof BranchNode)) {\r\n throw new Error('Invalid location');\r\n }\r\n const [index, ...rest] = location;\r\n if (index < 0 || index >= node.children.length) {\r\n throw new Error('Invalid location');\r\n }\r\n const child = node.children[index];\r\n path.push(node);\r\n return this.getNode(rest, child, path);\r\n }\r\n}\r\n//# sourceMappingURL=gridview.js.map","import { Emitter } from '../events';\r\nexport class SplitviewApi {\r\n get minimumSize() {\r\n return this.component.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.component.maximumSize;\r\n }\r\n get height() {\r\n return this.component.height;\r\n }\r\n get width() {\r\n return this.component.width;\r\n }\r\n get length() {\r\n return this.component.length;\r\n }\r\n get orientation() {\r\n return this.component.orientation;\r\n }\r\n get panels() {\r\n return this.component.panels;\r\n }\r\n get onDidLayoutFromJSON() {\r\n return this.component.onDidLayoutFromJSON;\r\n }\r\n get onDidLayoutChange() {\r\n return this.component.onDidLayoutChange;\r\n }\r\n get onDidAddView() {\r\n return this.component.onDidAddView;\r\n }\r\n get onDidRemoveView() {\r\n return this.component.onDidRemoveView;\r\n }\r\n constructor(component) {\r\n this.component = component;\r\n }\r\n updateOptions(options) {\r\n this.component.updateOptions(options);\r\n }\r\n removePanel(panel, sizing) {\r\n this.component.removePanel(panel, sizing);\r\n }\r\n focus() {\r\n this.component.focus();\r\n }\r\n getPanel(id) {\r\n return this.component.getPanel(id);\r\n }\r\n layout(width, height) {\r\n return this.component.layout(width, height);\r\n }\r\n addPanel(options) {\r\n return this.component.addPanel(options);\r\n }\r\n movePanel(from, to) {\r\n this.component.movePanel(from, to);\r\n }\r\n fromJSON(data) {\r\n this.component.fromJSON(data);\r\n }\r\n toJSON() {\r\n return this.component.toJSON();\r\n }\r\n clear() {\r\n this.component.clear();\r\n }\r\n}\r\nexport class PaneviewApi {\r\n get minimumSize() {\r\n return this.component.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.component.maximumSize;\r\n }\r\n get height() {\r\n return this.component.height;\r\n }\r\n get width() {\r\n return this.component.width;\r\n }\r\n get panels() {\r\n return this.component.panels;\r\n }\r\n get onDidLayoutChange() {\r\n return this.component.onDidLayoutChange;\r\n }\r\n get onDidLayoutFromJSON() {\r\n return this.component.onDidLayoutFromJSON;\r\n }\r\n get onDidAddView() {\r\n return this.component.onDidAddView;\r\n }\r\n get onDidRemoveView() {\r\n return this.component.onDidRemoveView;\r\n }\r\n get onDidDrop() {\r\n const emitter = new Emitter();\r\n const disposable = this.component.onDidDrop((e) => {\r\n emitter.fire(Object.assign(Object.assign({}, e), { api: this }));\r\n });\r\n emitter.dispose = () => {\r\n disposable.dispose();\r\n emitter.dispose();\r\n };\r\n return emitter.event;\r\n }\r\n constructor(component) {\r\n this.component = component;\r\n }\r\n removePanel(panel) {\r\n this.component.removePanel(panel);\r\n }\r\n getPanel(id) {\r\n return this.component.getPanel(id);\r\n }\r\n movePanel(from, to) {\r\n this.component.movePanel(from, to);\r\n }\r\n focus() {\r\n this.component.focus();\r\n }\r\n layout(width, height) {\r\n this.component.layout(width, height);\r\n }\r\n addPanel(options) {\r\n return this.component.addPanel(options);\r\n }\r\n fromJSON(data) {\r\n this.component.fromJSON(data);\r\n }\r\n toJSON() {\r\n return this.component.toJSON();\r\n }\r\n clear() {\r\n this.component.clear();\r\n }\r\n}\r\nexport class GridviewApi {\r\n get minimumHeight() {\r\n return this.component.minimumHeight;\r\n }\r\n get maximumHeight() {\r\n return this.component.maximumHeight;\r\n }\r\n get minimumWidth() {\r\n return this.component.minimumWidth;\r\n }\r\n get maximumWidth() {\r\n return this.component.maximumWidth;\r\n }\r\n get width() {\r\n return this.component.width;\r\n }\r\n get height() {\r\n return this.component.height;\r\n }\r\n get onDidLayoutChange() {\r\n return this.component.onDidLayoutChange;\r\n }\r\n get onDidAddPanel() {\r\n return this.component.onDidAddGroup;\r\n }\r\n get onDidRemovePanel() {\r\n return this.component.onDidRemoveGroup;\r\n }\r\n get onDidActivePanelChange() {\r\n return this.component.onDidActiveGroupChange;\r\n }\r\n get onDidLayoutFromJSON() {\r\n return this.component.onDidLayoutFromJSON;\r\n }\r\n get panels() {\r\n return this.component.groups;\r\n }\r\n get orientation() {\r\n return this.component.orientation;\r\n }\r\n set orientation(value) {\r\n this.component.updateOptions({ orientation: value });\r\n }\r\n constructor(component) {\r\n this.component = component;\r\n }\r\n focus() {\r\n this.component.focus();\r\n }\r\n layout(width, height, force = false) {\r\n this.component.layout(width, height, force);\r\n }\r\n addPanel(options) {\r\n return this.component.addPanel(options);\r\n }\r\n removePanel(panel, sizing) {\r\n this.component.removePanel(panel, sizing);\r\n }\r\n movePanel(panel, options) {\r\n this.component.movePanel(panel, options);\r\n }\r\n getPanel(id) {\r\n return this.component.getPanel(id);\r\n }\r\n fromJSON(data) {\r\n return this.component.fromJSON(data);\r\n }\r\n toJSON() {\r\n return this.component.toJSON();\r\n }\r\n clear() {\r\n this.component.clear();\r\n }\r\n}\r\nexport class DockviewApi {\r\n get id() {\r\n return this.component.id;\r\n }\r\n get width() {\r\n return this.component.width;\r\n }\r\n get height() {\r\n return this.component.height;\r\n }\r\n get minimumHeight() {\r\n return this.component.minimumHeight;\r\n }\r\n get maximumHeight() {\r\n return this.component.maximumHeight;\r\n }\r\n get minimumWidth() {\r\n return this.component.minimumWidth;\r\n }\r\n get maximumWidth() {\r\n return this.component.maximumWidth;\r\n }\r\n get size() {\r\n return this.component.size;\r\n }\r\n get totalPanels() {\r\n return this.component.totalPanels;\r\n }\r\n get onDidActiveGroupChange() {\r\n return this.component.onDidActiveGroupChange;\r\n }\r\n get onDidAddGroup() {\r\n return this.component.onDidAddGroup;\r\n }\r\n get onDidRemoveGroup() {\r\n return this.component.onDidRemoveGroup;\r\n }\r\n get onDidActivePanelChange() {\r\n return this.component.onDidActivePanelChange;\r\n }\r\n get onDidAddPanel() {\r\n return this.component.onDidAddPanel;\r\n }\r\n get onDidRemovePanel() {\r\n return this.component.onDidRemovePanel;\r\n }\r\n get onDidLayoutFromJSON() {\r\n return this.component.onDidLayoutFromJSON;\r\n }\r\n get onDidLayoutChange() {\r\n return this.component.onDidLayoutChange;\r\n }\r\n get onDidDrop() {\r\n return this.component.onDidDrop;\r\n }\r\n get onWillDragGroup() {\r\n return this.component.onWillDragGroup;\r\n }\r\n get onWillDragPanel() {\r\n return this.component.onWillDragPanel;\r\n }\r\n get panels() {\r\n return this.component.panels;\r\n }\r\n get groups() {\r\n return this.component.groups;\r\n }\r\n get activePanel() {\r\n return this.component.activePanel;\r\n }\r\n get activeGroup() {\r\n return this.component.activeGroup;\r\n }\r\n constructor(component) {\r\n this.component = component;\r\n }\r\n focus() {\r\n this.component.focus();\r\n }\r\n getPanel(id) {\r\n return this.component.getGroupPanel(id);\r\n }\r\n layout(width, height, force = false) {\r\n this.component.layout(width, height, force);\r\n }\r\n addPanel(options) {\r\n return this.component.addPanel(options);\r\n }\r\n removePanel(panel) {\r\n this.component.removePanel(panel);\r\n }\r\n addGroup(options) {\r\n return this.component.addGroup(options);\r\n }\r\n moveToNext(options) {\r\n this.component.moveToNext(options);\r\n }\r\n moveToPrevious(options) {\r\n this.component.moveToPrevious(options);\r\n }\r\n closeAllGroups() {\r\n return this.component.closeAllGroups();\r\n }\r\n removeGroup(group) {\r\n this.component.removeGroup(group);\r\n }\r\n getGroup(id) {\r\n return this.component.getPanel(id);\r\n }\r\n addFloatingGroup(item, coord) {\r\n return this.component.addFloatingGroup(item, coord);\r\n }\r\n fromJSON(data) {\r\n this.component.fromJSON(data);\r\n }\r\n toJSON() {\r\n return this.component.toJSON();\r\n }\r\n clear() {\r\n this.component.clear();\r\n }\r\n}\r\n//# sourceMappingURL=component.api.js.map","import { addDisposableListener } from '../events';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nexport class DragAndDropObserver extends CompositeDisposable {\r\n constructor(element, callbacks) {\r\n super();\r\n this.element = element;\r\n this.callbacks = callbacks;\r\n this.target = null;\r\n this.registerListeners();\r\n }\r\n registerListeners() {\r\n this.addDisposables(addDisposableListener(this.element, 'dragenter', (e) => {\r\n this.target = e.target;\r\n this.callbacks.onDragEnter(e);\r\n }, true));\r\n this.addDisposables(addDisposableListener(this.element, 'dragover', (e) => {\r\n e.preventDefault(); // needed so that the drop event fires (https://stackoverflow.com/questions/21339924/drop-event-not-firing-in-chrome)\r\n if (this.callbacks.onDragOver) {\r\n this.callbacks.onDragOver(e);\r\n }\r\n }, true));\r\n this.addDisposables(addDisposableListener(this.element, 'dragleave', (e) => {\r\n if (this.target === e.target) {\r\n this.target = null;\r\n this.callbacks.onDragLeave(e);\r\n }\r\n }));\r\n this.addDisposables(addDisposableListener(this.element, 'dragend', (e) => {\r\n this.target = null;\r\n this.callbacks.onDragEnd(e);\r\n }));\r\n this.addDisposables(addDisposableListener(this.element, 'drop', (e) => {\r\n this.callbacks.onDrop(e);\r\n }));\r\n }\r\n}\r\n//# sourceMappingURL=dnd.js.map","import { toggleClass } from '../dom';\r\nimport { Emitter } from '../events';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nimport { DragAndDropObserver } from './dnd';\r\nimport { clamp } from '../math';\r\nfunction numberOrFallback(maybeNumber, fallback) {\r\n return typeof maybeNumber === 'number' ? maybeNumber : fallback;\r\n}\r\nexport function directionToPosition(direction) {\r\n switch (direction) {\r\n case 'above':\r\n return 'top';\r\n case 'below':\r\n return 'bottom';\r\n case 'left':\r\n return 'left';\r\n case 'right':\r\n return 'right';\r\n case 'within':\r\n return 'center';\r\n default:\r\n throw new Error(`invalid direction '${direction}'`);\r\n }\r\n}\r\nexport function positionToDirection(position) {\r\n switch (position) {\r\n case 'top':\r\n return 'above';\r\n case 'bottom':\r\n return 'below';\r\n case 'left':\r\n return 'left';\r\n case 'right':\r\n return 'right';\r\n case 'center':\r\n return 'within';\r\n default:\r\n throw new Error(`invalid position '${position}'`);\r\n }\r\n}\r\nexport class Droptarget extends CompositeDisposable {\r\n get state() {\r\n return this._state;\r\n }\r\n constructor(element, options) {\r\n super();\r\n this.element = element;\r\n this.options = options;\r\n this._onDrop = new Emitter();\r\n this.onDrop = this._onDrop.event;\r\n // use a set to take advantage of #<set>.has\r\n this._acceptedTargetZonesSet = new Set(this.options.acceptedTargetZones);\r\n this.addDisposables(this._onDrop, new DragAndDropObserver(this.element, {\r\n onDragEnter: () => undefined,\r\n onDragOver: (e) => {\r\n if (this._acceptedTargetZonesSet.size === 0) {\r\n this.removeDropTarget();\r\n return;\r\n }\r\n const width = this.element.clientWidth;\r\n const height = this.element.clientHeight;\r\n if (width === 0 || height === 0) {\r\n return; // avoid div!0\r\n }\r\n const rect = e.currentTarget.getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n const y = e.clientY - rect.top;\r\n const quadrant = this.calculateQuadrant(this._acceptedTargetZonesSet, x, y, width, height);\r\n /**\r\n * If the event has already been used by another DropTarget instance\r\n * then don't show a second drop target, only one target should be\r\n * active at any one time\r\n */\r\n if (this.isAlreadyUsed(e) || quadrant === null) {\r\n // no drop target should be displayed\r\n this.removeDropTarget();\r\n return;\r\n }\r\n if (typeof this.options.canDisplayOverlay === 'boolean') {\r\n if (!this.options.canDisplayOverlay) {\r\n this.removeDropTarget();\r\n return;\r\n }\r\n }\r\n else if (!this.options.canDisplayOverlay(e, quadrant)) {\r\n this.removeDropTarget();\r\n return;\r\n }\r\n this.markAsUsed(e);\r\n if (!this.targetElement) {\r\n this.targetElement = document.createElement('div');\r\n this.targetElement.className = 'drop-target-dropzone';\r\n this.overlayElement = document.createElement('div');\r\n this.overlayElement.className = 'drop-target-selection';\r\n this._state = 'center';\r\n this.targetElement.appendChild(this.overlayElement);\r\n this.element.classList.add('drop-target');\r\n this.element.append(this.targetElement);\r\n }\r\n this.toggleClasses(quadrant, width, height);\r\n this.setState(quadrant);\r\n },\r\n onDragLeave: () => {\r\n this.removeDropTarget();\r\n },\r\n onDragEnd: () => {\r\n this.removeDropTarget();\r\n },\r\n onDrop: (e) => {\r\n e.preventDefault();\r\n const state = this._state;\r\n this.removeDropTarget();\r\n if (state) {\r\n // only stop the propagation of the event if we are dealing with it\r\n // which is only when the target has state\r\n e.stopPropagation();\r\n this._onDrop.fire({ position: state, nativeEvent: e });\r\n }\r\n },\r\n }));\r\n }\r\n setTargetZones(acceptedTargetZones) {\r\n this._acceptedTargetZonesSet = new Set(acceptedTargetZones);\r\n }\r\n dispose() {\r\n this.removeDropTarget();\r\n super.dispose();\r\n }\r\n /**\r\n * Add a property to the event object for other potential listeners to check\r\n */\r\n markAsUsed(event) {\r\n event[Droptarget.USED_EVENT_ID] = true;\r\n }\r\n /**\r\n * Check is the event has already been used by another instance od DropTarget\r\n */\r\n isAlreadyUsed(event) {\r\n const value = event[Droptarget.USED_EVENT_ID];\r\n return typeof value === 'boolean' && value;\r\n }\r\n toggleClasses(quadrant, width, height) {\r\n var _a, _b, _c, _d;\r\n if (!this.overlayElement) {\r\n return;\r\n }\r\n const isSmallX = width < 100;\r\n const isSmallY = height < 100;\r\n const isLeft = quadrant === 'left';\r\n const isRight = quadrant === 'right';\r\n const isTop = quadrant === 'top';\r\n const isBottom = quadrant === 'bottom';\r\n const rightClass = !isSmallX && isRight;\r\n const leftClass = !isSmallX && isLeft;\r\n const topClass = !isSmallY && isTop;\r\n const bottomClass = !isSmallY && isBottom;\r\n let size = 0.5;\r\n if (((_b = (_a = this.options.overlayModel) === null || _a === void 0 ? void 0 : _a.size) === null || _b === void 0 ? void 0 : _b.type) === 'percentage') {\r\n size = clamp(this.options.overlayModel.size.value, 0, 100) / 100;\r\n }\r\n if (((_d = (_c = this.options.overlayModel) === null || _c === void 0 ? void 0 : _c.size) === null || _d === void 0 ? void 0 : _d.type) === 'pixels') {\r\n if (rightClass || leftClass) {\r\n size =\r\n clamp(0, this.options.overlayModel.size.value, width) /\r\n width;\r\n }\r\n if (topClass || bottomClass) {\r\n size =\r\n clamp(0, this.options.overlayModel.size.value, height) /\r\n height;\r\n }\r\n }\r\n const translate = (1 - size) / 2;\r\n const scale = size;\r\n let transform;\r\n if (rightClass) {\r\n transform = `translateX(${100 * translate}%) scaleX(${scale})`;\r\n }\r\n else if (leftClass) {\r\n transform = `translateX(-${100 * translate}%) scaleX(${scale})`;\r\n }\r\n else if (topClass) {\r\n transform = `translateY(-${100 * translate}%) scaleY(${scale})`;\r\n }\r\n else if (bottomClass) {\r\n transform = `translateY(${100 * translate}%) scaleY(${scale})`;\r\n }\r\n else {\r\n transform = '';\r\n }\r\n this.overlayElement.style.transform = transform;\r\n toggleClass(this.overlayElement, 'small-right', isSmallX && isRight);\r\n toggleClass(this.overlayElement, 'small-left', isSmallX && isLeft);\r\n toggleClass(this.overlayElement, 'small-top', isSmallY && isTop);\r\n toggleClass(this.overlayElement, 'small-bottom', isSmallY && isBottom);\r\n }\r\n setState(quadrant) {\r\n switch (quadrant) {\r\n case 'top':\r\n this._state = 'top';\r\n break;\r\n case 'left':\r\n this._state = 'left';\r\n break;\r\n case 'bottom':\r\n this._state = 'bottom';\r\n break;\r\n case 'right':\r\n this._state = 'right';\r\n break;\r\n case 'center':\r\n this._state = 'center';\r\n break;\r\n }\r\n }\r\n calculateQuadrant(overlayType, x, y, width, height) {\r\n var _a, _b, _c, _d, _e, _f;\r\n const isPercentage = ((_a = this.options.overlayModel) === null || _a === void 0 ? void 0 : _a.activationSize) === undefined ||\r\n ((_c = (_b = this.options.overlayModel) === null || _b === void 0 ? void 0 : _b.activationSize) === null || _c === void 0 ? void 0 : _c.type) === 'percentage';\r\n const value = numberOrFallback((_f = (_e = (_d = this.options) === null || _d === void 0 ? void 0 : _d.overlayModel) === null || _e === void 0 ? void 0 : _e.activationSize) === null || _f === void 0 ? void 0 : _f.value, 20);\r\n if (isPercentage) {\r\n return calculateQuadrantAsPercentage(overlayType, x, y, width, height, value);\r\n }\r\n return calculateQuadrantAsPixels(overlayType, x, y, width, height, value);\r\n }\r\n removeDropTarget() {\r\n if (this.targetElement) {\r\n this._state = undefined;\r\n this.element.removeChild(this.targetElement);\r\n this.targetElement = undefined;\r\n this.overlayElement = undefined;\r\n this.element.classList.remove('drop-target');\r\n }\r\n }\r\n}\r\nDroptarget.USED_EVENT_ID = '__dockview_droptarget_event_is_used__';\r\nexport function calculateQuadrantAsPercentage(overlayType, x, y, width, height, threshold) {\r\n const xp = (100 * x) / width;\r\n const yp = (100 * y) / height;\r\n if (overlayType.has('left') && xp < threshold) {\r\n return 'left';\r\n }\r\n if (overlayType.has('right') && xp > 100 - threshold) {\r\n return 'right';\r\n }\r\n if (overlayType.has('top') && yp < threshold) {\r\n return 'top';\r\n }\r\n if (overlayType.has('bottom') && yp > 100 - threshold) {\r\n return 'bottom';\r\n }\r\n if (!overlayType.has('center')) {\r\n return null;\r\n }\r\n return 'center';\r\n}\r\nexport function calculateQuadrantAsPixels(overlayType, x, y, width, height, threshold) {\r\n if (overlayType.has('left') && x < threshold) {\r\n return 'left';\r\n }\r\n if (overlayType.has('right') && x > width - threshold) {\r\n return 'right';\r\n }\r\n if (overlayType.has('top') && y < threshold) {\r\n return 'top';\r\n }\r\n if (overlayType.has('bottom') && y > height - threshold) {\r\n return 'bottom';\r\n }\r\n if (!overlayType.has('center')) {\r\n return null;\r\n }\r\n return 'center';\r\n}\r\n//# sourceMappingURL=droptarget.js.map","import { CompositeDisposable, MutableDisposable, } from '../../../lifecycle';\r\nimport { Emitter } from '../../../events';\r\nimport { trackFocus } from '../../../dom';\r\nexport class ContentContainer extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor() {\r\n super();\r\n this.disposable = new MutableDisposable();\r\n this._onDidFocus = new Emitter();\r\n this.onDidFocus = this._onDidFocus.event;\r\n this._onDidBlur = new Emitter();\r\n this.onDidBlur = this._onDidBlur.event;\r\n this._element = document.createElement('div');\r\n this._element.className = 'content-container';\r\n this._element.tabIndex = -1;\r\n this.addDisposables(this._onDidFocus, this._onDidBlur);\r\n // for hosted containers\r\n // 1) register a drop target on the host\r\n // 2) register window dragStart events to disable pointer events\r\n // 3) register dragEnd events\r\n // 4) register mouseMove events (if no buttons are present we take this as a dragEnd event)\r\n }\r\n show() {\r\n this.element.style.display = '';\r\n }\r\n hide() {\r\n this.element.style.display = 'none';\r\n }\r\n openPanel(panel) {\r\n var _a;\r\n if (this.panel === panel) {\r\n return;\r\n }\r\n if (this.panel) {\r\n if ((_a = this.panel.view) === null || _a === void 0 ? void 0 : _a.content) {\r\n this._element.removeChild(this.panel.view.content.element);\r\n }\r\n this.panel = undefined;\r\n }\r\n this.panel = panel;\r\n const disposable = new CompositeDisposable();\r\n if (this.panel.view) {\r\n const _onDidFocus = this.panel.view.content.onDidFocus;\r\n const _onDidBlur = this.panel.view.content.onDidBlur;\r\n const focusTracker = trackFocus(this._element);\r\n disposable.addDisposables(focusTracker, focusTracker.onDidFocus(() => this._onDidFocus.fire()), focusTracker.onDidBlur(() => this._onDidBlur.fire()));\r\n if (_onDidFocus) {\r\n disposable.addDisposables(_onDidFocus(() => this._onDidFocus.fire()));\r\n }\r\n if (_onDidBlur) {\r\n disposable.addDisposables(_onDidBlur(() => this._onDidBlur.fire()));\r\n }\r\n this._element.appendChild(this.panel.view.content.element);\r\n }\r\n this.disposable.value = disposable;\r\n }\r\n layout(_width, _height) {\r\n // noop\r\n }\r\n closePanel() {\r\n var _a, _b, _c;\r\n if ((_c = (_b = (_a = this.panel) === null || _a === void 0 ? void 0 : _a.view) === null || _b === void 0 ? void 0 : _b.content) === null || _c === void 0 ? void 0 : _c.element) {\r\n this._element.removeChild(this.panel.view.content.element);\r\n this.panel = undefined;\r\n }\r\n }\r\n dispose() {\r\n this.disposable.dispose();\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=content.js.map","export var DockviewDropTargets;\r\n(function (DockviewDropTargets) {\r\n DockviewDropTargets[DockviewDropTargets[\"Tab\"] = 0] = \"Tab\";\r\n DockviewDropTargets[DockviewDropTargets[\"Panel\"] = 1] = \"Panel\";\r\n DockviewDropTargets[DockviewDropTargets[\"TabContainer\"] = 2] = \"TabContainer\";\r\n DockviewDropTargets[DockviewDropTargets[\"Edge\"] = 3] = \"Edge\";\r\n})(DockviewDropTargets || (DockviewDropTargets = {}));\r\n//# sourceMappingURL=types.js.map","import { getElementsByTagName } from '../dom';\r\nimport { addDisposableListener, Emitter } from '../events';\r\nimport { CompositeDisposable, MutableDisposable, } from '../lifecycle';\r\nexport class DragHandler extends CompositeDisposable {\r\n constructor(el) {\r\n super();\r\n this.el = el;\r\n this.dataDisposable = new MutableDisposable();\r\n this.pointerEventsDisposable = new MutableDisposable();\r\n this._onDragStart = new Emitter();\r\n this.onDragStart = this._onDragStart.event;\r\n this.addDisposables(this._onDragStart, this.dataDisposable, this.pointerEventsDisposable);\r\n this.configure();\r\n }\r\n isCancelled(_event) {\r\n return false;\r\n }\r\n configure() {\r\n this.addDisposables(this._onDragStart, addDisposableListener(this.el, 'dragstart', (event) => {\r\n if (event.defaultPrevented || this.isCancelled(event)) {\r\n event.preventDefault();\r\n return;\r\n }\r\n const iframes = [\r\n ...getElementsByTagName('iframe'),\r\n ...getElementsByTagName('webview'),\r\n ];\r\n this.pointerEventsDisposable.value = {\r\n dispose: () => {\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'auto';\r\n }\r\n },\r\n };\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'none';\r\n }\r\n this.el.classList.add('dv-dragged');\r\n setTimeout(() => this.el.classList.remove('dv-dragged'), 0);\r\n this.dataDisposable.value = this.getData(event);\r\n this._onDragStart.fire(event);\r\n if (event.dataTransfer) {\r\n event.dataTransfer.effectAllowed = 'move';\r\n const hasData = event.dataTransfer.items.length > 0;\r\n if (!hasData) {\r\n /**\r\n * Although this is not used by dockview many third party dnd libraries will check\r\n * dataTransfer.types to determine valid drag events.\r\n *\r\n * For example: in react-dnd if dataTransfer.types is not set then the dragStart event will be cancelled\r\n * through .preventDefault(). Since this is applied globally to all drag events this would break dockviews\r\n * dnd logic. You can see the code at\r\n * https://github.com/react-dnd/react-dnd/blob/main/packages/backend-html5/src/HTML5BackendImpl.ts#L542\r\n */\r\n event.dataTransfer.setData('text/plain', '__dockview_internal_drag_event__');\r\n }\r\n }\r\n }), addDisposableListener(this.el, 'dragend', () => {\r\n this.pointerEventsDisposable.dispose();\r\n this.dataDisposable.dispose();\r\n }));\r\n }\r\n}\r\n//# sourceMappingURL=abstractDragHandler.js.map","import { addDisposableListener, Emitter } from '../../../events';\r\nimport { CompositeDisposable } from '../../../lifecycle';\r\nimport { getPanelData, LocalSelectionTransfer, PanelTransfer, } from '../../../dnd/dataTransfer';\r\nimport { toggleClass } from '../../../dom';\r\nimport { DockviewDropTargets } from '../../types';\r\nimport { Droptarget } from '../../../dnd/droptarget';\r\nimport { DragHandler } from '../../../dnd/abstractDragHandler';\r\nclass TabDragHandler extends DragHandler {\r\n constructor(element, accessor, group, panel) {\r\n super(element);\r\n this.accessor = accessor;\r\n this.group = group;\r\n this.panel = panel;\r\n this.panelTransfer = LocalSelectionTransfer.getInstance();\r\n }\r\n getData(event) {\r\n this.panelTransfer.setData([new PanelTransfer(this.accessor.id, this.group.id, this.panel.id)], PanelTransfer.prototype);\r\n return {\r\n dispose: () => {\r\n this.panelTransfer.clearData(PanelTransfer.prototype);\r\n },\r\n };\r\n }\r\n}\r\nexport class Tab extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor(panel, accessor, group) {\r\n super();\r\n this.panel = panel;\r\n this.accessor = accessor;\r\n this.group = group;\r\n this.content = undefined;\r\n this._onChanged = new Emitter();\r\n this.onChanged = this._onChanged.event;\r\n this._onDropped = new Emitter();\r\n this.onDrop = this._onDropped.event;\r\n this._onDragStart = new Emitter();\r\n this.onDragStart = this._onDragStart.event;\r\n this._element = document.createElement('div');\r\n this._element.className = 'tab';\r\n this._element.tabIndex = 0;\r\n this._element.draggable = true;\r\n toggleClass(this.element, 'inactive-tab', true);\r\n const dragHandler = new TabDragHandler(this._element, this.accessor, this.group, this.panel);\r\n this.droptarget = new Droptarget(this._element, {\r\n acceptedTargetZones: ['center'],\r\n canDisplayOverlay: (event, position) => {\r\n if (this.group.locked) {\r\n return false;\r\n }\r\n const data = getPanelData();\r\n if (data && this.accessor.id === data.viewId) {\r\n if (data.panelId === null &&\r\n data.groupId === this.group.id) {\r\n // don't allow group move to drop on self\r\n return false;\r\n }\r\n return this.panel.id !== data.panelId;\r\n }\r\n return this.group.model.canDisplayOverlay(event, position, DockviewDropTargets.Tab);\r\n },\r\n });\r\n this.addDisposables(this._onChanged, this._onDropped, this._onDragStart, dragHandler.onDragStart((event) => {\r\n this._onDragStart.fire(event);\r\n }), dragHandler, addDisposableListener(this._element, 'mousedown', (event) => {\r\n if (event.defaultPrevented) {\r\n return;\r\n }\r\n this._onChanged.fire(event);\r\n }), this.droptarget.onDrop((event) => {\r\n this._onDropped.fire(event);\r\n }), this.droptarget);\r\n }\r\n setActive(isActive) {\r\n toggleClass(this.element, 'active-tab', isActive);\r\n toggleClass(this.element, 'inactive-tab', !isActive);\r\n }\r\n setContent(part) {\r\n if (this.content) {\r\n this._element.removeChild(this.content.element);\r\n }\r\n this.content = part;\r\n this._element.appendChild(this.content.element);\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=tab.js.map","import { quasiPreventDefault } from '../dom';\r\nimport { addDisposableListener } from '../events';\r\nimport { DragHandler } from './abstractDragHandler';\r\nimport { LocalSelectionTransfer, PanelTransfer } from './dataTransfer';\r\nimport { addGhostImage } from './ghost';\r\nexport class GroupDragHandler extends DragHandler {\r\n constructor(element, accessor, group) {\r\n super(element);\r\n this.accessor = accessor;\r\n this.group = group;\r\n this.panelTransfer = LocalSelectionTransfer.getInstance();\r\n this.addDisposables(addDisposableListener(element, 'mousedown', (e) => {\r\n if (e.shiftKey) {\r\n /**\r\n * You cannot call e.preventDefault() because that will prevent drag events from firing\r\n * but we also need to stop any group overlay drag events from occuring\r\n * Use a custom event marker that can be checked by the overlay drag events\r\n */\r\n quasiPreventDefault(e);\r\n }\r\n }, true));\r\n }\r\n isCancelled(_event) {\r\n if (this.group.api.isFloating && !_event.shiftKey) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n getData(dragEvent) {\r\n const dataTransfer = dragEvent.dataTransfer;\r\n this.panelTransfer.setData([new PanelTransfer(this.accessor.id, this.group.id, null)], PanelTransfer.prototype);\r\n const style = window.getComputedStyle(this.el);\r\n const bgColor = style.getPropertyValue('--dv-activegroup-visiblepanel-tab-background-color');\r\n const color = style.getPropertyValue('--dv-activegroup-visiblepanel-tab-color');\r\n if (dataTransfer) {\r\n const ghostElement = document.createElement('div');\r\n ghostElement.style.backgroundColor = bgColor;\r\n ghostElement.style.color = color;\r\n ghostElement.style.padding = '2px 8px';\r\n ghostElement.style.height = '24px';\r\n ghostElement.style.fontSize = '11px';\r\n ghostElement.style.lineHeight = '20px';\r\n ghostElement.style.borderRadius = '12px';\r\n ghostElement.style.position = 'absolute';\r\n ghostElement.textContent = `Multiple Panels (${this.group.size})`;\r\n addGhostImage(dataTransfer, ghostElement);\r\n }\r\n return {\r\n dispose: () => {\r\n this.panelTransfer.clearData(PanelTransfer.prototype);\r\n },\r\n };\r\n }\r\n}\r\n//# sourceMappingURL=groupDragHandler.js.map","import { addClasses, removeClasses } from '../dom';\r\nexport function addGhostImage(dataTransfer, ghostElement) {\r\n // class dockview provides to force ghost image to be drawn on a different layer and prevent weird rendering issues\r\n addClasses(ghostElement, 'dv-dragged');\r\n document.body.appendChild(ghostElement);\r\n dataTransfer.setDragImage(ghostElement, 0, 0);\r\n setTimeout(() => {\r\n removeClasses(ghostElement, 'dv-dragged');\r\n ghostElement.remove();\r\n }, 0);\r\n}\r\n//# sourceMappingURL=ghost.js.map","import { last } from '../../../array';\r\nimport { getPanelData } from '../../../dnd/dataTransfer';\r\nimport { Droptarget } from '../../../dnd/droptarget';\r\nimport { GroupDragHandler } from '../../../dnd/groupDragHandler';\r\nimport { addDisposableListener, Emitter } from '../../../events';\r\nimport { CompositeDisposable } from '../../../lifecycle';\r\nimport { DockviewDropTargets } from '../../types';\r\nexport class VoidContainer extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor(accessor, group) {\r\n super();\r\n this.accessor = accessor;\r\n this.group = group;\r\n this._onDrop = new Emitter();\r\n this.onDrop = this._onDrop.event;\r\n this._onDragStart = new Emitter();\r\n this.onDragStart = this._onDragStart.event;\r\n this._element = document.createElement('div');\r\n this._element.className = 'void-container';\r\n this._element.tabIndex = 0;\r\n this._element.draggable = true;\r\n this.addDisposables(this._onDrop, this._onDragStart, addDisposableListener(this._element, 'click', () => {\r\n this.accessor.doSetGroupActive(this.group);\r\n }));\r\n const handler = new GroupDragHandler(this._element, accessor, group);\r\n this.voidDropTarget = new Droptarget(this._element, {\r\n acceptedTargetZones: ['center'],\r\n canDisplayOverlay: (event, position) => {\r\n var _a;\r\n const data = getPanelData();\r\n if (data && this.accessor.id === data.viewId) {\r\n if (data.panelId === null &&\r\n data.groupId === this.group.id) {\r\n // don't allow group move to drop on self\r\n return false;\r\n }\r\n // don't show the overlay if the tab being dragged is the last panel of this group\r\n return ((_a = last(this.group.panels)) === null || _a === void 0 ? void 0 : _a.id) !== data.panelId;\r\n }\r\n return group.model.canDisplayOverlay(event, position, DockviewDropTargets.Panel);\r\n },\r\n });\r\n this.addDisposables(handler, handler.onDragStart((event) => {\r\n this._onDragStart.fire(event);\r\n }), this.voidDropTarget.onDrop((event) => {\r\n this._onDrop.fire(event);\r\n }), this.voidDropTarget);\r\n }\r\n}\r\n//# sourceMappingURL=voidContainer.js.map","import { CompositeDisposable, } from '../../../lifecycle';\r\nimport { addDisposableListener, Emitter } from '../../../events';\r\nimport { Tab } from '../tab/tab';\r\nimport { VoidContainer } from './voidContainer';\r\nimport { toggleClass } from '../../../dom';\r\nexport class TabsContainer extends CompositeDisposable {\r\n get panels() {\r\n return this.tabs.map((_) => _.value.panel.id);\r\n }\r\n get size() {\r\n return this.tabs.length;\r\n }\r\n get hidden() {\r\n return this._hidden;\r\n }\r\n set hidden(value) {\r\n this._hidden = value;\r\n this.element.style.display = value ? 'none' : '';\r\n }\r\n show() {\r\n if (!this.hidden) {\r\n this.element.style.display = '';\r\n }\r\n }\r\n hide() {\r\n this._element.style.display = 'none';\r\n }\r\n setRightActionsElement(element) {\r\n if (this.rightActions === element) {\r\n return;\r\n }\r\n if (this.rightActions) {\r\n this.rightActions.remove();\r\n this.rightActions = undefined;\r\n }\r\n if (element) {\r\n this.rightActionsContainer.appendChild(element);\r\n this.rightActions = element;\r\n }\r\n }\r\n setLeftActionsElement(element) {\r\n if (this.leftActions === element) {\r\n return;\r\n }\r\n if (this.leftActions) {\r\n this.leftActions.remove();\r\n this.leftActions = undefined;\r\n }\r\n if (element) {\r\n this.leftActionsContainer.appendChild(element);\r\n this.leftActions = element;\r\n }\r\n }\r\n setPrefixActionsElement(element) {\r\n if (this.preActions === element) {\r\n return;\r\n }\r\n if (this.preActions) {\r\n this.preActions.remove();\r\n this.preActions = undefined;\r\n }\r\n if (element) {\r\n this.preActionsContainer.appendChild(element);\r\n this.preActions = element;\r\n }\r\n }\r\n get element() {\r\n return this._element;\r\n }\r\n isActive(tab) {\r\n return (this.selectedIndex > -1 &&\r\n this.tabs[this.selectedIndex].value === tab);\r\n }\r\n indexOf(id) {\r\n return this.tabs.findIndex((tab) => tab.value.panel.id === id);\r\n }\r\n constructor(accessor, group) {\r\n super();\r\n this.accessor = accessor;\r\n this.group = group;\r\n this.tabs = [];\r\n this.selectedIndex = -1;\r\n this._hidden = false;\r\n this._onDrop = new Emitter();\r\n this.onDrop = this._onDrop.event;\r\n this._onTabDragStart = new Emitter();\r\n this.onTabDragStart = this._onTabDragStart.event;\r\n this._onGroupDragStart = new Emitter();\r\n this.onGroupDragStart = this._onGroupDragStart.event;\r\n this.addDisposables(this._onDrop, this._onTabDragStart, this._onGroupDragStart);\r\n this._element = document.createElement('div');\r\n this._element.className = 'tabs-and-actions-container';\r\n toggleClass(this._element, 'dv-full-width-single-tab', this.accessor.options.singleTabMode === 'fullwidth');\r\n this.addDisposables(this.accessor.onDidAddPanel((e) => {\r\n if (e.api.group === this.group) {\r\n toggleClass(this._element, 'dv-single-tab', this.size === 1);\r\n }\r\n }), this.accessor.onDidRemovePanel((e) => {\r\n if (e.api.group === this.group) {\r\n toggleClass(this._element, 'dv-single-tab', this.size === 1);\r\n }\r\n }));\r\n this.rightActionsContainer = document.createElement('div');\r\n this.rightActionsContainer.className = 'right-actions-container';\r\n this.leftActionsContainer = document.createElement('div');\r\n this.leftActionsContainer.className = 'left-actions-container';\r\n this.preActionsContainer = document.createElement('div');\r\n this.preActionsContainer.className = 'pre-actions-container';\r\n this.tabContainer = document.createElement('div');\r\n this.tabContainer.className = 'tabs-container';\r\n this.voidContainer = new VoidContainer(this.accessor, this.group);\r\n this._element.appendChild(this.preActionsContainer);\r\n this._element.appendChild(this.tabContainer);\r\n this._element.appendChild(this.leftActionsContainer);\r\n this._element.appendChild(this.voidContainer.element);\r\n this._element.appendChild(this.rightActionsContainer);\r\n this.addDisposables(this.voidContainer, this.voidContainer.onDragStart((event) => {\r\n this._onGroupDragStart.fire({\r\n nativeEvent: event,\r\n group: this.group,\r\n });\r\n }), this.voidContainer.onDrop((event) => {\r\n this._onDrop.fire({\r\n event: event.nativeEvent,\r\n index: this.tabs.length,\r\n });\r\n }), addDisposableListener(this.voidContainer.element, 'mousedown', (event) => {\r\n const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;\r\n if (isFloatingGroupsEnabled &&\r\n event.shiftKey &&\r\n !this.group.api.isFloating) {\r\n event.preventDefault();\r\n const { top, left } = this.element.getBoundingClientRect();\r\n const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();\r\n this.accessor.addFloatingGroup(this.group, {\r\n x: left - rootLeft + 20,\r\n y: top - rootTop + 20,\r\n }, { inDragMode: true });\r\n }\r\n }), addDisposableListener(this.tabContainer, 'mousedown', (event) => {\r\n if (event.defaultPrevented) {\r\n return;\r\n }\r\n const isLeftClick = event.button === 0;\r\n if (isLeftClick) {\r\n this.accessor.doSetGroupActive(this.group);\r\n }\r\n }));\r\n }\r\n setActive(_isGroupActive) {\r\n // noop\r\n }\r\n addTab(tab, index = this.tabs.length) {\r\n if (index < 0 || index > this.tabs.length) {\r\n throw new Error('invalid location');\r\n }\r\n this.tabContainer.insertBefore(tab.value.element, this.tabContainer.children[index]);\r\n this.tabs = [\r\n ...this.tabs.slice(0, index),\r\n tab,\r\n ...this.tabs.slice(index),\r\n ];\r\n if (this.selectedIndex < 0) {\r\n this.selectedIndex = index;\r\n }\r\n }\r\n delete(id) {\r\n const index = this.tabs.findIndex((tab) => tab.value.panel.id === id);\r\n const tabToRemove = this.tabs.splice(index, 1)[0];\r\n const { value, disposable } = tabToRemove;\r\n disposable.dispose();\r\n value.dispose();\r\n value.element.remove();\r\n }\r\n setActivePanel(panel) {\r\n this.tabs.forEach((tab) => {\r\n const isActivePanel = panel.id === tab.value.panel.id;\r\n tab.value.setActive(isActivePanel);\r\n });\r\n }\r\n openPanel(panel, index = this.tabs.length) {\r\n var _a;\r\n if (this.tabs.find((tab) => tab.value.panel.id === panel.id)) {\r\n return;\r\n }\r\n const tab = new Tab(panel, this.accessor, this.group);\r\n if (!((_a = panel.view) === null || _a === void 0 ? void 0 : _a.tab)) {\r\n throw new Error('invalid header component');\r\n }\r\n tab.setContent(panel.view.tab);\r\n const disposable = new CompositeDisposable(tab.onDragStart((event) => {\r\n this._onTabDragStart.fire({ nativeEvent: event, panel });\r\n }), tab.onChanged((event) => {\r\n var _a;\r\n const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;\r\n const isFloatingWithOnePanel = this.group.api.isFloating && this.size === 1;\r\n if (isFloatingGroupsEnabled &&\r\n !isFloatingWithOnePanel &&\r\n event.shiftKey) {\r\n event.preventDefault();\r\n const panel = this.accessor.getGroupPanel(tab.panel.id);\r\n const { top, left } = tab.element.getBoundingClientRect();\r\n const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();\r\n this.accessor.addFloatingGroup(panel, {\r\n x: left - rootLeft,\r\n y: top - rootTop,\r\n }, { inDragMode: true });\r\n return;\r\n }\r\n const alreadyFocused = panel.id === ((_a = this.group.model.activePanel) === null || _a === void 0 ? void 0 : _a.id) &&\r\n this.group.model.isContentFocused;\r\n const isLeftClick = event.button === 0;\r\n if (!isLeftClick || event.defaultPrevented) {\r\n return;\r\n }\r\n this.group.model.openPanel(panel, {\r\n skipFocus: alreadyFocused,\r\n });\r\n }), tab.onDrop((event) => {\r\n this._onDrop.fire({\r\n event: event.nativeEvent,\r\n index: this.tabs.findIndex((x) => x.value === tab),\r\n });\r\n }));\r\n const value = { value: tab, disposable };\r\n this.addTab(value, index);\r\n }\r\n closePanel(panel) {\r\n this.delete(panel.id);\r\n }\r\n dispose() {\r\n super.dispose();\r\n for (const { value, disposable } of this.tabs) {\r\n disposable.dispose();\r\n value.dispose();\r\n }\r\n this.tabs = [];\r\n }\r\n}\r\n//# sourceMappingURL=tabsContainer.js.map","import { DockviewApi } from '../api/component.api';\r\nimport { getPanelData } from '../dnd/dataTransfer';\r\nimport { Droptarget } from '../dnd/droptarget';\r\nimport { isAncestor, toggleClass } from '../dom';\r\nimport { addDisposableListener, Emitter } from '../events';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nimport { ContentContainer, } from './components/panel/content';\r\nimport { TabsContainer, } from './components/titlebar/tabsContainer';\r\nimport { DockviewDropTargets } from './types';\r\nexport class DockviewGroupPanelModel extends CompositeDisposable {\r\n get element() {\r\n throw new Error('not supported');\r\n }\r\n get activePanel() {\r\n return this._activePanel;\r\n }\r\n get locked() {\r\n return this._locked;\r\n }\r\n set locked(value) {\r\n this._locked = value;\r\n toggleClass(this.container, 'locked-groupview', value === 'no-drop-target' || value);\r\n }\r\n get isActive() {\r\n return this._isGroupActive;\r\n }\r\n get panels() {\r\n return this._panels;\r\n }\r\n get size() {\r\n return this._panels.length;\r\n }\r\n get isEmpty() {\r\n return this._panels.length === 0;\r\n }\r\n get hasWatermark() {\r\n return !!(this.watermark && this.container.contains(this.watermark.element));\r\n }\r\n get header() {\r\n return this.tabsContainer;\r\n }\r\n get isContentFocused() {\r\n if (!document.activeElement) {\r\n return false;\r\n }\r\n return isAncestor(document.activeElement, this.contentContainer.element);\r\n }\r\n get isFloating() {\r\n return this._isFloating;\r\n }\r\n set isFloating(value) {\r\n this._isFloating = value;\r\n this.dropTarget.setTargetZones(value ? ['center'] : ['top', 'bottom', 'left', 'right', 'center']);\r\n toggleClass(this.container, 'dv-groupview-floating', value);\r\n this.groupPanel.api._onDidFloatingStateChange.fire({\r\n isFloating: this.isFloating,\r\n });\r\n }\r\n constructor(container, accessor, id, options, groupPanel) {\r\n super();\r\n this.container = container;\r\n this.accessor = accessor;\r\n this.id = id;\r\n this.options = options;\r\n this.groupPanel = groupPanel;\r\n this._isGroupActive = false;\r\n this._locked = false;\r\n this._isFloating = false;\r\n this.mostRecentlyUsed = [];\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._width = 0;\r\n this._height = 0;\r\n this._panels = [];\r\n this._onMove = new Emitter();\r\n this.onMove = this._onMove.event;\r\n this._onDidDrop = new Emitter();\r\n this.onDidDrop = this._onDidDrop.event;\r\n this._onTabDragStart = new Emitter();\r\n this.onTabDragStart = this._onTabDragStart.event;\r\n this._onGroupDragStart = new Emitter();\r\n this.onGroupDragStart = this._onGroupDragStart.event;\r\n this._onDidAddPanel = new Emitter();\r\n this.onDidAddPanel = this._onDidAddPanel.event;\r\n this._onDidRemovePanel = new Emitter();\r\n this.onDidRemovePanel = this._onDidRemovePanel.event;\r\n this._onDidActivePanelChange = new Emitter();\r\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\r\n toggleClass(this.container, 'groupview', true);\r\n this.tabsContainer = new TabsContainer(this.accessor, this.groupPanel);\r\n this.contentContainer = new ContentContainer();\r\n this.dropTarget = new Droptarget(this.contentContainer.element, {\r\n acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],\r\n canDisplayOverlay: (event, position) => {\r\n if (this.locked === 'no-drop-target' ||\r\n (this.locked && position === 'center')) {\r\n return false;\r\n }\r\n const data = getPanelData();\r\n if (!data && event.shiftKey && !this.isFloating) {\r\n return false;\r\n }\r\n if (data && data.viewId === this.accessor.id) {\r\n if (data.groupId === this.id) {\r\n if (position === 'center') {\r\n // don't allow to drop on self for center position\r\n return false;\r\n }\r\n if (data.panelId === null) {\r\n // don't allow group move to drop anywhere on self\r\n return false;\r\n }\r\n }\r\n const groupHasOnePanelAndIsActiveDragElement = this._panels.length === 1 && data.groupId === this.id;\r\n return !groupHasOnePanelAndIsActiveDragElement;\r\n }\r\n return this.canDisplayOverlay(event, position, DockviewDropTargets.Panel);\r\n },\r\n });\r\n container.append(this.tabsContainer.element, this.contentContainer.element);\r\n this.header.hidden = !!options.hideHeader;\r\n this.locked = options.locked || false;\r\n this.addDisposables(this._onTabDragStart, this._onGroupDragStart, this.tabsContainer.onTabDragStart((event) => {\r\n this._onTabDragStart.fire(event);\r\n }), this.tabsContainer.onGroupDragStart((event) => {\r\n this._onGroupDragStart.fire(event);\r\n }), this.tabsContainer.onDrop((event) => {\r\n this.handleDropEvent(event.event, 'center', event.index);\r\n }), this.contentContainer.onDidFocus(() => {\r\n this.accessor.doSetGroupActive(this.groupPanel, true);\r\n }), this.contentContainer.onDidBlur(() => {\r\n // noop\r\n }), this.dropTarget.onDrop((event) => {\r\n this.handleDropEvent(event.nativeEvent, event.position);\r\n }), this._onMove, this._onDidChange, this._onDidDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange);\r\n }\r\n initialize() {\r\n var _a, _b;\r\n if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.panels) {\r\n this.options.panels.forEach((panel) => {\r\n this.doAddPanel(panel);\r\n });\r\n }\r\n if ((_b = this.options) === null || _b === void 0 ? void 0 : _b.activePanel) {\r\n this.openPanel(this.options.activePanel);\r\n }\r\n // must be run after the constructor otherwise this.parent may not be\r\n // correctly initialized\r\n this.setActive(this.isActive, true, true);\r\n this.updateContainer();\r\n if (this.accessor.options.createRightHeaderActionsElement) {\r\n this._rightHeaderActions =\r\n this.accessor.options.createRightHeaderActionsElement(this.groupPanel);\r\n this.addDisposables(this._rightHeaderActions);\r\n this._rightHeaderActions.init({\r\n containerApi: new DockviewApi(this.accessor),\r\n api: this.groupPanel.api,\r\n });\r\n this.tabsContainer.setRightActionsElement(this._rightHeaderActions.element);\r\n }\r\n if (this.accessor.options.createLeftHeaderActionsElement) {\r\n this._leftHeaderActions =\r\n this.accessor.options.createLeftHeaderActionsElement(this.groupPanel);\r\n this.addDisposables(this._leftHeaderActions);\r\n this._leftHeaderActions.init({\r\n containerApi: new DockviewApi(this.accessor),\r\n api: this.groupPanel.api,\r\n });\r\n this.tabsContainer.setLeftActionsElement(this._leftHeaderActions.element);\r\n }\r\n if (this.accessor.options.createPrefixHeaderActionsElement) {\r\n this._prefixHeaderActions =\r\n this.accessor.options.createPrefixHeaderActionsElement(this.groupPanel);\r\n this.addDisposables(this._prefixHeaderActions);\r\n this._prefixHeaderActions.init({\r\n containerApi: new DockviewApi(this.accessor),\r\n api: this.groupPanel.api,\r\n });\r\n this.tabsContainer.setPrefixActionsElement(this._prefixHeaderActions.element);\r\n }\r\n }\r\n indexOf(panel) {\r\n return this.tabsContainer.indexOf(panel.id);\r\n }\r\n toJSON() {\r\n var _a;\r\n const result = {\r\n views: this.tabsContainer.panels,\r\n activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,\r\n id: this.id,\r\n };\r\n if (this.locked !== false) {\r\n result.locked = this.locked;\r\n }\r\n if (this.header.hidden) {\r\n result.hideHeader = true;\r\n }\r\n return result;\r\n }\r\n moveToNext(options) {\r\n if (!options) {\r\n options = {};\r\n }\r\n if (!options.panel) {\r\n options.panel = this.activePanel;\r\n }\r\n const index = options.panel ? this.panels.indexOf(options.panel) : -1;\r\n let normalizedIndex;\r\n if (index < this.panels.length - 1) {\r\n normalizedIndex = index + 1;\r\n }\r\n else if (!options.suppressRoll) {\r\n normalizedIndex = 0;\r\n }\r\n else {\r\n return;\r\n }\r\n this.openPanel(this.panels[normalizedIndex]);\r\n }\r\n moveToPrevious(options) {\r\n if (!options) {\r\n options = {};\r\n }\r\n if (!options.panel) {\r\n options.panel = this.activePanel;\r\n }\r\n if (!options.panel) {\r\n return;\r\n }\r\n const index = this.panels.indexOf(options.panel);\r\n let normalizedIndex;\r\n if (index > 0) {\r\n normalizedIndex = index - 1;\r\n }\r\n else if (!options.suppressRoll) {\r\n normalizedIndex = this.panels.length - 1;\r\n }\r\n else {\r\n return;\r\n }\r\n this.openPanel(this.panels[normalizedIndex]);\r\n }\r\n containsPanel(panel) {\r\n return this.panels.includes(panel);\r\n }\r\n init(_params) {\r\n //noop\r\n }\r\n update(_params) {\r\n //noop\r\n }\r\n focus() {\r\n var _a, _b;\r\n (_b = (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n }\r\n openPanel(panel, options = {}) {\r\n if (typeof options.index !== 'number' ||\r\n options.index > this.panels.length) {\r\n options.index = this.panels.length;\r\n }\r\n const skipSetPanelActive = !!options.skipSetPanelActive;\r\n const skipSetGroupActive = !!options.skipSetGroupActive;\r\n // ensure the group is updated before we fire any events\r\n panel.updateParentGroup(this.groupPanel, true);\r\n if (this._activePanel === panel) {\r\n if (!skipSetGroupActive) {\r\n this.accessor.doSetGroupActive(this.groupPanel);\r\n }\r\n return;\r\n }\r\n this.doAddPanel(panel, options.index, skipSetPanelActive);\r\n if (!skipSetPanelActive) {\r\n this.doSetActivePanel(panel);\r\n }\r\n if (!skipSetGroupActive) {\r\n this.accessor.doSetGroupActive(this.groupPanel, !!options.skipFocus);\r\n }\r\n this.updateContainer();\r\n }\r\n removePanel(groupItemOrId) {\r\n const id = typeof groupItemOrId === 'string'\r\n ? groupItemOrId\r\n : groupItemOrId.id;\r\n const panelToRemove = this._panels.find((panel) => panel.id === id);\r\n if (!panelToRemove) {\r\n throw new Error('invalid operation');\r\n }\r\n return this._removePanel(panelToRemove);\r\n }\r\n closeAllPanels() {\r\n if (this.panels.length > 0) {\r\n // take a copy since we will be edting the array as we iterate through\r\n const arrPanelCpy = [...this.panels];\r\n for (const panel of arrPanelCpy) {\r\n this.doClose(panel);\r\n }\r\n }\r\n else {\r\n this.accessor.removeGroup(this.groupPanel);\r\n }\r\n }\r\n closePanel(panel) {\r\n this.doClose(panel);\r\n }\r\n doClose(panel) {\r\n this.accessor.removePanel(panel);\r\n }\r\n isPanelActive(panel) {\r\n return this._activePanel === panel;\r\n }\r\n updateActions(element) {\r\n this.tabsContainer.setRightActionsElement(element);\r\n }\r\n setActive(isGroupActive, skipFocus = false, force = false) {\r\n var _a, _b, _c, _d;\r\n if (!force && this.isActive === isGroupActive) {\r\n if (!skipFocus) {\r\n (_b = (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n }\r\n return;\r\n }\r\n this._isGroupActive = isGroupActive;\r\n toggleClass(this.container, 'active-group', isGroupActive);\r\n toggleClass(this.container, 'inactive-group', !isGroupActive);\r\n this.tabsContainer.setActive(this.isActive);\r\n if (!this._activePanel && this.panels.length > 0) {\r\n this.doSetActivePanel(this.panels[0]);\r\n }\r\n this.updateContainer();\r\n if (isGroupActive) {\r\n if (!skipFocus) {\r\n (_d = (_c = this._activePanel) === null || _c === void 0 ? void 0 : _c.focus) === null || _d === void 0 ? void 0 : _d.call(_c);\r\n }\r\n }\r\n }\r\n layout(width, height) {\r\n var _a;\r\n this._width = width;\r\n this._height = height;\r\n this.contentContainer.layout(this._width, this._height);\r\n if ((_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.layout) {\r\n this._activePanel.layout(this._width, this._height);\r\n }\r\n }\r\n _removePanel(panel) {\r\n const isActivePanel = this._activePanel === panel;\r\n this.doRemovePanel(panel);\r\n if (isActivePanel && this.panels.length > 0) {\r\n const nextPanel = this.mostRecentlyUsed[0];\r\n this.openPanel(nextPanel);\r\n }\r\n if (this._activePanel && this.panels.length === 0) {\r\n this.doSetActivePanel(undefined);\r\n }\r\n this.updateContainer();\r\n return panel;\r\n }\r\n doRemovePanel(panel) {\r\n const index = this.panels.indexOf(panel);\r\n if (this._activePanel === panel) {\r\n this.contentContainer.closePanel();\r\n }\r\n this.tabsContainer.delete(panel.id);\r\n this._panels.splice(index, 1);\r\n if (this.mostRecentlyUsed.includes(panel)) {\r\n this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);\r\n }\r\n this._onDidRemovePanel.fire({ panel });\r\n }\r\n doAddPanel(panel, index = this.panels.length, skipSetActive = false) {\r\n const existingPanel = this._panels.indexOf(panel);\r\n const hasExistingPanel = existingPanel > -1;\r\n this.tabsContainer.openPanel(panel, index);\r\n if (!skipSetActive) {\r\n this.contentContainer.openPanel(panel);\r\n }\r\n this.tabsContainer.show();\r\n this.contentContainer.show();\r\n if (hasExistingPanel) {\r\n // TODO - need to ensure ordering hasn't changed and if it has need to re-order this.panels\r\n return;\r\n }\r\n this.updateMru(panel);\r\n this.panels.splice(index, 0, panel);\r\n this._onDidAddPanel.fire({ panel });\r\n }\r\n doSetActivePanel(panel) {\r\n this._activePanel = panel;\r\n if (panel) {\r\n this.tabsContainer.setActivePanel(panel);\r\n panel.layout(this._width, this._height);\r\n this.updateMru(panel);\r\n this._onDidActivePanelChange.fire({ panel });\r\n }\r\n }\r\n updateMru(panel) {\r\n if (this.mostRecentlyUsed.includes(panel)) {\r\n this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);\r\n }\r\n this.mostRecentlyUsed = [panel, ...this.mostRecentlyUsed];\r\n }\r\n updateContainer() {\r\n var _a, _b;\r\n toggleClass(this.container, 'empty', this.isEmpty);\r\n this.panels.forEach((panel) => panel.updateParentGroup(this.groupPanel, this.isActive));\r\n if (this.isEmpty && !this.watermark) {\r\n const watermark = this.accessor.createWatermarkComponent();\r\n watermark.init({\r\n containerApi: new DockviewApi(this.accessor),\r\n group: this.groupPanel,\r\n });\r\n this.watermark = watermark;\r\n addDisposableListener(this.watermark.element, 'click', () => {\r\n if (!this.isActive) {\r\n this.accessor.doSetGroupActive(this.groupPanel);\r\n }\r\n });\r\n this.tabsContainer.hide();\r\n this.contentContainer.element.appendChild(this.watermark.element);\r\n this.watermark.updateParentGroup(this.groupPanel, true);\r\n }\r\n if (!this.isEmpty && this.watermark) {\r\n this.watermark.element.remove();\r\n (_b = (_a = this.watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n this.watermark = undefined;\r\n this.tabsContainer.show();\r\n }\r\n }\r\n canDisplayOverlay(event, position, target) {\r\n // custom overlay handler\r\n if (this.accessor.options.showDndOverlay) {\r\n return this.accessor.options.showDndOverlay({\r\n nativeEvent: event,\r\n target,\r\n group: this.accessor.getPanel(this.id),\r\n position,\r\n getData: getPanelData,\r\n });\r\n }\r\n return false;\r\n }\r\n handleDropEvent(event, position, index) {\r\n if (this.locked === 'no-drop-target') {\r\n return;\r\n }\r\n const data = getPanelData();\r\n if (data && data.viewId === this.accessor.id) {\r\n if (data.panelId === null) {\r\n // this is a group move dnd event\r\n const { groupId } = data;\r\n this._onMove.fire({\r\n target: position,\r\n groupId: groupId,\r\n index,\r\n });\r\n return;\r\n }\r\n const fromSameGroup = this.tabsContainer.indexOf(data.panelId) !== -1;\r\n if (fromSameGroup && this.tabsContainer.size === 1) {\r\n return;\r\n }\r\n const { groupId, panelId } = data;\r\n const isSameGroup = this.id === groupId;\r\n if (isSameGroup && !position) {\r\n const oldIndex = this.tabsContainer.indexOf(panelId);\r\n if (oldIndex === index) {\r\n return;\r\n }\r\n }\r\n this._onMove.fire({\r\n target: position,\r\n groupId: data.groupId,\r\n itemId: data.panelId,\r\n index,\r\n });\r\n }\r\n else {\r\n this._onDidDrop.fire({\r\n nativeEvent: event,\r\n position,\r\n index,\r\n getData: () => getPanelData(),\r\n });\r\n }\r\n }\r\n dispose() {\r\n var _a, _b, _c;\r\n super.dispose();\r\n (_a = this.watermark) === null || _a === void 0 ? void 0 : _a.element.remove();\r\n (_c = (_b = this.watermark) === null || _b === void 0 ? void 0 : _b.dispose) === null || _c === void 0 ? void 0 : _c.call(_b);\r\n for (const panel of this.panels) {\r\n panel.dispose();\r\n }\r\n this.dropTarget.dispose();\r\n this.tabsContainer.dispose();\r\n this.contentContainer.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=dockviewGroupPanelModel.js.map","import { watchElementResize } from './dom';\r\nimport { CompositeDisposable } from './lifecycle';\r\nexport class Resizable extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor(parentElement) {\r\n super();\r\n if (parentElement) {\r\n this._element = parentElement;\r\n }\r\n else {\r\n this._element = document.createElement('div');\r\n this._element.style.height = '100%';\r\n this._element.style.width = '100%';\r\n this._element.className = 'dv-resizable-container';\r\n }\r\n this.addDisposables(watchElementResize(this._element, (entry) => {\r\n if (this.isDisposed) {\r\n /**\r\n * resize is delayed through requestAnimationFrame so there is a small chance\r\n * the component has already been disposed of\r\n */\r\n return;\r\n }\r\n if (!document.body.contains(this._element)) {\r\n /**\r\n * since the event is dispatched through requestAnimationFrame there is a small chance\r\n * the component is no longer attached to the DOM, if that is the case the dimensions\r\n * are mostly likely all zero and meaningless. we should skip this case.\r\n */\r\n return;\r\n }\r\n const { width, height } = entry.contentRect;\r\n this.layout(width, height);\r\n }));\r\n }\r\n}\r\n//# sourceMappingURL=resizable.js.map","import { Emitter, Event, TickDelayedEvent } from '../events';\r\nimport { getGridLocation, Gridview } from './gridview';\r\nimport { sequentialNumberGenerator } from '../math';\r\nimport { Sizing } from '../splitview/splitview';\r\nimport { Resizable } from '../resizable';\r\nconst nextLayoutId = sequentialNumberGenerator();\r\nexport function toTarget(direction) {\r\n switch (direction) {\r\n case 'left':\r\n return 'left';\r\n case 'right':\r\n return 'right';\r\n case 'above':\r\n return 'top';\r\n case 'below':\r\n return 'bottom';\r\n case 'within':\r\n default:\r\n return 'center';\r\n }\r\n}\r\nexport class BaseGrid extends Resizable {\r\n get id() {\r\n return this._id;\r\n }\r\n get size() {\r\n return this._groups.size;\r\n }\r\n get groups() {\r\n return Array.from(this._groups.values()).map((_) => _.value);\r\n }\r\n get width() {\r\n return this.gridview.width;\r\n }\r\n get height() {\r\n return this.gridview.height;\r\n }\r\n get minimumHeight() {\r\n return this.gridview.minimumHeight;\r\n }\r\n get maximumHeight() {\r\n return this.gridview.maximumHeight;\r\n }\r\n get minimumWidth() {\r\n return this.gridview.minimumWidth;\r\n }\r\n get maximumWidth() {\r\n return this.gridview.maximumWidth;\r\n }\r\n get activeGroup() {\r\n return this._activeGroup;\r\n }\r\n constructor(options) {\r\n super(options.parentElement);\r\n this._id = nextLayoutId.next();\r\n this._groups = new Map();\r\n this._onDidLayoutChange = new Emitter();\r\n this.onDidLayoutChange = this._onDidLayoutChange.event;\r\n this._onDidRemoveGroup = new Emitter();\r\n this.onDidRemoveGroup = this._onDidRemoveGroup.event;\r\n this._onDidAddGroup = new Emitter();\r\n this.onDidAddGroup = this._onDidAddGroup.event;\r\n this._onDidActiveGroupChange = new Emitter();\r\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\r\n this._bufferOnDidLayoutChange = new TickDelayedEvent();\r\n this.gridview = new Gridview(!!options.proportionalLayout, options.styles, options.orientation);\r\n this.element.appendChild(this.gridview.element);\r\n this.layout(0, 0, true); // set some elements height/widths\r\n this.addDisposables(this.gridview.onDidChange(() => {\r\n this._bufferOnDidLayoutChange.fire();\r\n }), Event.any(this.onDidAddGroup, this.onDidRemoveGroup, this.onDidActiveGroupChange)(() => {\r\n this._bufferOnDidLayoutChange.fire();\r\n }), this._bufferOnDidLayoutChange.onEvent(() => {\r\n this._onDidLayoutChange.fire();\r\n }), this._bufferOnDidLayoutChange);\r\n }\r\n setVisible(panel, visible) {\r\n this.gridview.setViewVisible(getGridLocation(panel.element), visible);\r\n this._onDidLayoutChange.fire();\r\n }\r\n isVisible(panel) {\r\n return this.gridview.isViewVisible(getGridLocation(panel.element));\r\n }\r\n doAddGroup(group, location = [0], size) {\r\n this.gridview.addView(group, size !== null && size !== void 0 ? size : Sizing.Distribute, location);\r\n this._onDidAddGroup.fire(group);\r\n this.doSetGroupActive(group);\r\n }\r\n doRemoveGroup(group, options) {\r\n if (!this._groups.has(group.id)) {\r\n throw new Error('invalid operation');\r\n }\r\n const item = this._groups.get(group.id);\r\n const view = this.gridview.remove(group, Sizing.Distribute);\r\n if (item && !(options === null || options === void 0 ? void 0 : options.skipDispose)) {\r\n item.disposable.dispose();\r\n item.value.dispose();\r\n this._groups.delete(group.id);\r\n }\r\n this._onDidRemoveGroup.fire(group);\r\n if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {\r\n const groups = Array.from(this._groups.values());\r\n this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);\r\n }\r\n return view;\r\n }\r\n getPanel(id) {\r\n var _a;\r\n return (_a = this._groups.get(id)) === null || _a === void 0 ? void 0 : _a.value;\r\n }\r\n doSetGroupActive(group, skipFocus) {\r\n var _a, _b, _c;\r\n if (this._activeGroup === group) {\r\n return;\r\n }\r\n if (this._activeGroup) {\r\n this._activeGroup.setActive(false);\r\n if (!skipFocus) {\r\n (_b = (_a = this._activeGroup).focus) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n }\r\n }\r\n if (group) {\r\n group.setActive(true);\r\n if (!skipFocus) {\r\n (_c = group.focus) === null || _c === void 0 ? void 0 : _c.call(group);\r\n }\r\n }\r\n this._activeGroup = group;\r\n this._onDidActiveGroupChange.fire(group);\r\n }\r\n removeGroup(group) {\r\n this.doRemoveGroup(group);\r\n }\r\n moveToNext(options) {\r\n var _a;\r\n if (!options) {\r\n options = {};\r\n }\r\n if (!options.group) {\r\n if (!this.activeGroup) {\r\n return;\r\n }\r\n options.group = this.activeGroup;\r\n }\r\n const location = getGridLocation(options.group.element);\r\n const next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;\r\n this.doSetGroupActive(next);\r\n }\r\n moveToPrevious(options) {\r\n var _a;\r\n if (!options) {\r\n options = {};\r\n }\r\n if (!options.group) {\r\n if (!this.activeGroup) {\r\n return;\r\n }\r\n options.group = this.activeGroup;\r\n }\r\n const location = getGridLocation(options.group.element);\r\n const next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;\r\n this.doSetGroupActive(next);\r\n }\r\n layout(width, height, forceResize) {\r\n const different = forceResize || width !== this.width || height !== this.height;\r\n if (!different) {\r\n return;\r\n }\r\n this.gridview.element.style.height = `${height}px`;\r\n this.gridview.element.style.width = `${width}px`;\r\n this.gridview.layout(width, height);\r\n }\r\n dispose() {\r\n this._onDidActiveGroupChange.dispose();\r\n this._onDidAddGroup.dispose();\r\n this._onDidRemoveGroup.dispose();\r\n this._onDidLayoutChange.dispose();\r\n for (const group of this.groups) {\r\n group.dispose();\r\n }\r\n this.gridview.dispose();\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=baseComponentGridview.js.map","import { Emitter } from '../events';\r\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\r\n/**\r\n * A core api implementation that should be used across all panel-like objects\r\n */\r\nexport class PanelApiImpl extends CompositeDisposable {\r\n //\r\n get isFocused() {\r\n return this._isFocused;\r\n }\r\n get isActive() {\r\n return this._isActive;\r\n }\r\n get isVisible() {\r\n return this._isVisible;\r\n }\r\n get width() {\r\n return this._width;\r\n }\r\n get height() {\r\n return this._height;\r\n }\r\n constructor(id) {\r\n super();\r\n this.id = id;\r\n this._isFocused = false;\r\n this._isActive = false;\r\n this._isVisible = true;\r\n this._width = 0;\r\n this._height = 0;\r\n this.panelUpdatesDisposable = new MutableDisposable();\r\n this._onDidDimensionChange = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidDimensionsChange = this._onDidDimensionChange.event;\r\n //\r\n this._onDidChangeFocus = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidFocusChange = this._onDidChangeFocus.event;\r\n //\r\n this._onFocusEvent = new Emitter();\r\n this.onFocusEvent = this._onFocusEvent.event;\r\n //\r\n this._onDidVisibilityChange = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidVisibilityChange = this._onDidVisibilityChange.event;\r\n //\r\n this._onVisibilityChange = new Emitter();\r\n this.onVisibilityChange = this._onVisibilityChange.event;\r\n //\r\n this._onDidActiveChange = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidActiveChange = this._onDidActiveChange.event;\r\n //\r\n this._onActiveChange = new Emitter();\r\n this.onActiveChange = this._onActiveChange.event;\r\n //\r\n this._onUpdateParameters = new Emitter();\r\n this.onUpdateParameters = this._onUpdateParameters.event;\r\n this.addDisposables(this.onDidFocusChange((event) => {\r\n this._isFocused = event.isFocused;\r\n }), this.onDidActiveChange((event) => {\r\n this._isActive = event.isActive;\r\n }), this.onDidVisibilityChange((event) => {\r\n this._isVisible = event.isVisible;\r\n }), this.onDidDimensionsChange((event) => {\r\n this._width = event.width;\r\n this._height = event.height;\r\n }), this.panelUpdatesDisposable, this._onDidDimensionChange, this._onDidChangeFocus, this._onDidVisibilityChange, this._onDidActiveChange, this._onFocusEvent, this._onActiveChange, this._onVisibilityChange, this._onUpdateParameters);\r\n }\r\n initialize(panel) {\r\n this.panelUpdatesDisposable.value = this._onUpdateParameters.event((parameters) => {\r\n panel.update({\r\n params: parameters,\r\n });\r\n });\r\n }\r\n setVisible(isVisible) {\r\n this._onVisibilityChange.fire({ isVisible });\r\n }\r\n setActive() {\r\n this._onActiveChange.fire();\r\n }\r\n updateParameters(parameters) {\r\n this._onUpdateParameters.fire(parameters);\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=panelApi.js.map","import { Emitter } from '../events';\r\nimport { PanelApiImpl } from './panelApi';\r\nexport class SplitviewPanelApiImpl extends PanelApiImpl {\r\n //\r\n constructor(id) {\r\n super(id);\r\n this._onDidConstraintsChangeInternal = new Emitter();\r\n this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;\r\n //\r\n this._onDidConstraintsChange = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidConstraintsChange = this._onDidConstraintsChange.event;\r\n //\r\n this._onDidSizeChange = new Emitter();\r\n this.onDidSizeChange = this._onDidSizeChange.event;\r\n this.addDisposables(this._onDidConstraintsChangeInternal, this._onDidConstraintsChange, this._onDidSizeChange);\r\n }\r\n setConstraints(value) {\r\n this._onDidConstraintsChangeInternal.fire(value);\r\n }\r\n setSize(event) {\r\n this._onDidSizeChange.fire(event);\r\n }\r\n}\r\n//# sourceMappingURL=splitviewPanelApi.js.map","import { Emitter } from '../events';\r\nimport { SplitviewPanelApiImpl } from './splitviewPanelApi';\r\nexport class PaneviewPanelApiImpl extends SplitviewPanelApiImpl {\r\n set pane(pane) {\r\n this._pane = pane;\r\n }\r\n constructor(id) {\r\n super(id);\r\n this._onDidExpansionChange = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidExpansionChange = this._onDidExpansionChange.event;\r\n this._onMouseEnter = new Emitter({});\r\n this.onMouseEnter = this._onMouseEnter.event;\r\n this._onMouseLeave = new Emitter({});\r\n this.onMouseLeave = this._onMouseLeave.event;\r\n this.addDisposables(this._onDidExpansionChange, this._onMouseEnter, this._onMouseLeave);\r\n }\r\n setExpanded(isExpanded) {\r\n var _a;\r\n (_a = this._pane) === null || _a === void 0 ? void 0 : _a.setExpanded(isExpanded);\r\n }\r\n get isExpanded() {\r\n var _a;\r\n return !!((_a = this._pane) === null || _a === void 0 ? void 0 : _a.isExpanded());\r\n }\r\n}\r\n//# sourceMappingURL=paneviewPanelApi.js.map","import { trackFocus } from '../dom';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nexport class BasePanelView extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n get width() {\r\n return this._width;\r\n }\r\n get height() {\r\n return this._height;\r\n }\r\n get params() {\r\n var _a;\r\n return (_a = this._params) === null || _a === void 0 ? void 0 : _a.params;\r\n }\r\n constructor(id, component, api) {\r\n super();\r\n this.id = id;\r\n this.component = component;\r\n this.api = api;\r\n this._height = 0;\r\n this._width = 0;\r\n this._element = document.createElement('div');\r\n this._element.tabIndex = -1;\r\n this._element.style.outline = 'none';\r\n this._element.style.height = '100%';\r\n this._element.style.width = '100%';\r\n this._element.style.overflow = 'hidden';\r\n const focusTracker = trackFocus(this._element);\r\n this.addDisposables(this.api, focusTracker.onDidFocus(() => {\r\n this.api._onDidChangeFocus.fire({ isFocused: true });\r\n }), focusTracker.onDidBlur(() => {\r\n this.api._onDidChangeFocus.fire({ isFocused: false });\r\n }), focusTracker);\r\n }\r\n focus() {\r\n this.api._onFocusEvent.fire();\r\n }\r\n layout(width, height) {\r\n this._width = width;\r\n this._height = height;\r\n this.api._onDidDimensionChange.fire({ width, height });\r\n if (this.part) {\r\n if (this._params) {\r\n this.part.update(this._params.params);\r\n }\r\n }\r\n }\r\n init(parameters) {\r\n this._params = parameters;\r\n this.part = this.getComponent();\r\n }\r\n update(event) {\r\n var _a, _b;\r\n // merge the new parameters with the existing parameters\r\n this._params = Object.assign(Object.assign({}, this._params), { params: Object.assign(Object.assign({}, (_a = this._params) === null || _a === void 0 ? void 0 : _a.params), event.params) });\r\n /**\r\n * delete new keys that have a value of undefined,\r\n * allow values of null\r\n */\r\n for (const key of Object.keys(event.params)) {\r\n if (event.params[key] === undefined) {\r\n delete this._params.params[key];\r\n }\r\n }\r\n // update the view with the updated props\r\n (_b = this.part) === null || _b === void 0 ? void 0 : _b.update({ params: this._params.params });\r\n }\r\n toJSON() {\r\n var _a, _b;\r\n const params = (_b = (_a = this._params) === null || _a === void 0 ? void 0 : _a.params) !== null && _b !== void 0 ? _b : {};\r\n return {\r\n id: this.id,\r\n component: this.component,\r\n params: Object.keys(params).length > 0 ? params : undefined,\r\n };\r\n }\r\n dispose() {\r\n var _a;\r\n this.api.dispose();\r\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=basePanelView.js.map","import { PaneviewPanelApiImpl } from '../api/paneviewPanelApi';\r\nimport { addClasses, removeClasses } from '../dom';\r\nimport { addDisposableListener, Emitter } from '../events';\r\nimport { BasePanelView, } from '../gridview/basePanelView';\r\nimport { Orientation } from '../splitview/splitview';\r\nexport class PaneviewPanel extends BasePanelView {\r\n set orientation(value) {\r\n this._orientation = value;\r\n }\r\n get orientation() {\r\n return this._orientation;\r\n }\r\n get minimumSize() {\r\n const headerSize = this.headerSize;\r\n const expanded = this.isExpanded();\r\n const minimumBodySize = expanded ? this._minimumBodySize : 0;\r\n return headerSize + minimumBodySize;\r\n }\r\n get maximumSize() {\r\n const headerSize = this.headerSize;\r\n const expanded = this.isExpanded();\r\n const maximumBodySize = expanded ? this._maximumBodySize : 0;\r\n return headerSize + maximumBodySize;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n get orthogonalSize() {\r\n return this._orthogonalSize;\r\n }\r\n set orthogonalSize(size) {\r\n this._orthogonalSize = size;\r\n }\r\n get minimumBodySize() {\r\n return this._minimumBodySize;\r\n }\r\n set minimumBodySize(value) {\r\n this._minimumBodySize = typeof value === 'number' ? value : 0;\r\n }\r\n get maximumBodySize() {\r\n return this._maximumBodySize;\r\n }\r\n set maximumBodySize(value) {\r\n this._maximumBodySize =\r\n typeof value === 'number' ? value : Number.POSITIVE_INFINITY;\r\n }\r\n get headerVisible() {\r\n return this._headerVisible;\r\n }\r\n set headerVisible(value) {\r\n this._headerVisible = value;\r\n this.header.style.display = value ? '' : 'none';\r\n }\r\n constructor(id, component, headerComponent, orientation, isExpanded, isHeaderVisible) {\r\n super(id, component, new PaneviewPanelApiImpl(id));\r\n this.headerComponent = headerComponent;\r\n this._onDidChangeExpansionState = new Emitter({ replay: true });\r\n this.onDidChangeExpansionState = this._onDidChangeExpansionState.event;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this.headerSize = 22;\r\n this._orthogonalSize = 0;\r\n this._size = 0;\r\n this._minimumBodySize = 100;\r\n this._maximumBodySize = Number.POSITIVE_INFINITY;\r\n this._isExpanded = false;\r\n this.expandedSize = 0;\r\n this.api.pane = this; // TODO cannot use 'this' before 'super'\r\n this.api.initialize(this);\r\n this._isExpanded = isExpanded;\r\n this._headerVisible = isHeaderVisible;\r\n this._onDidChangeExpansionState.fire(this.isExpanded()); // initialize value\r\n this._orientation = orientation;\r\n this.element.classList.add('pane');\r\n this.addDisposables(this.api.onDidSizeChange((event) => {\r\n this._onDidChange.fire({ size: event.size });\r\n }), addDisposableListener(this.element, 'mouseenter', (ev) => {\r\n this.api._onMouseEnter.fire(ev);\r\n }), addDisposableListener(this.element, 'mouseleave', (ev) => {\r\n this.api._onMouseLeave.fire(ev);\r\n }));\r\n this.addDisposables(this._onDidChangeExpansionState, this.onDidChangeExpansionState((isPanelExpanded) => {\r\n this.api._onDidExpansionChange.fire({\r\n isExpanded: isPanelExpanded,\r\n });\r\n }), this.api.onDidFocusChange((e) => {\r\n if (!this.header) {\r\n return;\r\n }\r\n if (e.isFocused) {\r\n addClasses(this.header, 'focused');\r\n }\r\n else {\r\n removeClasses(this.header, 'focused');\r\n }\r\n }));\r\n this.renderOnce();\r\n }\r\n setVisible(isVisible) {\r\n this.api._onDidVisibilityChange.fire({ isVisible });\r\n }\r\n setActive(isActive) {\r\n this.api._onDidActiveChange.fire({ isActive });\r\n }\r\n isExpanded() {\r\n return this._isExpanded;\r\n }\r\n setExpanded(expanded) {\r\n if (this._isExpanded === expanded) {\r\n return;\r\n }\r\n this._isExpanded = expanded;\r\n if (expanded) {\r\n if (this.animationTimer) {\r\n clearTimeout(this.animationTimer);\r\n }\r\n if (this.body) {\r\n this.element.appendChild(this.body);\r\n }\r\n }\r\n else {\r\n this.animationTimer = setTimeout(() => {\r\n var _a;\r\n (_a = this.body) === null || _a === void 0 ? void 0 : _a.remove();\r\n }, 200);\r\n }\r\n this._onDidChange.fire(expanded ? { size: this.width } : {});\r\n this._onDidChangeExpansionState.fire(expanded);\r\n }\r\n layout(size, orthogonalSize) {\r\n this._size = size;\r\n this._orthogonalSize = orthogonalSize;\r\n const [width, height] = this.orientation === Orientation.HORIZONTAL\r\n ? [size, orthogonalSize]\r\n : [orthogonalSize, size];\r\n if (this.isExpanded()) {\r\n this.expandedSize = width;\r\n }\r\n super.layout(width, height);\r\n }\r\n init(parameters) {\r\n var _a, _b;\r\n super.init(parameters);\r\n if (typeof parameters.minimumBodySize === 'number') {\r\n this.minimumBodySize = parameters.minimumBodySize;\r\n }\r\n if (typeof parameters.maximumBodySize === 'number') {\r\n this.maximumBodySize = parameters.maximumBodySize;\r\n }\r\n this.bodyPart = this.getBodyComponent();\r\n this.headerPart = this.getHeaderComponent();\r\n this.bodyPart.init(Object.assign(Object.assign({}, parameters), { api: this.api }));\r\n this.headerPart.init(Object.assign(Object.assign({}, parameters), { api: this.api }));\r\n (_a = this.body) === null || _a === void 0 ? void 0 : _a.append(this.bodyPart.element);\r\n (_b = this.header) === null || _b === void 0 ? void 0 : _b.append(this.headerPart.element);\r\n if (typeof parameters.isExpanded === 'boolean') {\r\n this.setExpanded(parameters.isExpanded);\r\n }\r\n }\r\n toJSON() {\r\n const params = this._params;\r\n return Object.assign(Object.assign({}, super.toJSON()), { headerComponent: this.headerComponent, title: params.title });\r\n }\r\n renderOnce() {\r\n this.header = document.createElement('div');\r\n this.header.tabIndex = 0;\r\n this.header.className = 'pane-header';\r\n this.header.style.height = `${this.headerSize}px`;\r\n this.header.style.lineHeight = `${this.headerSize}px`;\r\n this.header.style.minHeight = `${this.headerSize}px`;\r\n this.header.style.maxHeight = `${this.headerSize}px`;\r\n this.element.appendChild(this.header);\r\n this.body = document.createElement('div');\r\n this.body.className = 'pane-body';\r\n this.element.appendChild(this.body);\r\n }\r\n // TODO slightly hacky by-pass of the component to create a body and header component\r\n getComponent() {\r\n return {\r\n update: (params) => {\r\n var _a, _b;\r\n (_a = this.bodyPart) === null || _a === void 0 ? void 0 : _a.update({ params });\r\n (_b = this.headerPart) === null || _b === void 0 ? void 0 : _b.update({ params });\r\n },\r\n dispose: () => {\r\n var _a, _b;\r\n (_a = this.bodyPart) === null || _a === void 0 ? void 0 : _a.dispose();\r\n (_b = this.headerPart) === null || _b === void 0 ? void 0 : _b.dispose();\r\n },\r\n };\r\n }\r\n}\r\n//# sourceMappingURL=paneviewPanel.js.map","import { PaneviewApi } from '../api/component.api';\r\nimport { DragHandler } from '../dnd/abstractDragHandler';\r\nimport { getPaneData, LocalSelectionTransfer, PaneTransfer, } from '../dnd/dataTransfer';\r\nimport { Droptarget } from '../dnd/droptarget';\r\nimport { Emitter } from '../events';\r\nimport { PaneviewPanel, } from './paneviewPanel';\r\nexport class DraggablePaneviewPanel extends PaneviewPanel {\r\n constructor(accessor, id, component, headerComponent, orientation, isExpanded, disableDnd) {\r\n super(id, component, headerComponent, orientation, isExpanded, true);\r\n this.accessor = accessor;\r\n this._onDidDrop = new Emitter();\r\n this.onDidDrop = this._onDidDrop.event;\r\n if (!disableDnd) {\r\n this.initDragFeatures();\r\n }\r\n }\r\n initDragFeatures() {\r\n if (!this.header) {\r\n return;\r\n }\r\n const id = this.id;\r\n const accessorId = this.accessor.id;\r\n this.header.draggable = true;\r\n this.handler = new (class PaneDragHandler extends DragHandler {\r\n getData() {\r\n LocalSelectionTransfer.getInstance().setData([new PaneTransfer(accessorId, id)], PaneTransfer.prototype);\r\n return {\r\n dispose: () => {\r\n LocalSelectionTransfer.getInstance().clearData(PaneTransfer.prototype);\r\n },\r\n };\r\n }\r\n })(this.header);\r\n this.target = new Droptarget(this.element, {\r\n acceptedTargetZones: ['top', 'bottom'],\r\n overlayModel: {\r\n activationSize: { type: 'percentage', value: 50 },\r\n },\r\n canDisplayOverlay: (event) => {\r\n const data = getPaneData();\r\n if (data) {\r\n if (data.paneId !== this.id &&\r\n data.viewId === this.accessor.id) {\r\n return true;\r\n }\r\n }\r\n if (this.accessor.options.showDndOverlay) {\r\n return this.accessor.options.showDndOverlay({\r\n nativeEvent: event,\r\n getData: getPaneData,\r\n panel: this,\r\n });\r\n }\r\n return false;\r\n },\r\n });\r\n this.addDisposables(this._onDidDrop, this.handler, this.target, this.target.onDrop((event) => {\r\n this.onDrop(event);\r\n }));\r\n }\r\n onDrop(event) {\r\n const data = getPaneData();\r\n if (!data || data.viewId !== this.accessor.id) {\r\n // if there is no local drag event for this panel\r\n // or if the drag event was creating by another Paneview instance\r\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, api: new PaneviewApi(this.accessor), getData: getPaneData }));\r\n return;\r\n }\r\n const containerApi = this._params\r\n .containerApi;\r\n const panelId = data.paneId;\r\n const existingPanel = containerApi.getPanel(panelId);\r\n if (!existingPanel) {\r\n // if the panel doesn't exist\r\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: getPaneData, api: new PaneviewApi(this.accessor) }));\r\n return;\r\n }\r\n const allPanels = containerApi.panels;\r\n const fromIndex = allPanels.indexOf(existingPanel);\r\n let toIndex = containerApi.panels.indexOf(this);\r\n if (event.position === 'left' || event.position === 'top') {\r\n toIndex = Math.max(0, toIndex - 1);\r\n }\r\n if (event.position === 'right' || event.position === 'bottom') {\r\n if (fromIndex > toIndex) {\r\n toIndex++;\r\n }\r\n toIndex = Math.min(allPanels.length - 1, toIndex);\r\n }\r\n containerApi.movePanel(fromIndex, toIndex);\r\n }\r\n}\r\n//# sourceMappingURL=draggablePaneviewPanel.js.map","import { Emitter } from '../events';\r\nimport { PanelApiImpl } from './panelApi';\r\nexport class GridviewPanelApiImpl extends PanelApiImpl {\r\n constructor(id, panel) {\r\n super(id);\r\n this._onDidConstraintsChangeInternal = new Emitter();\r\n this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;\r\n this._onDidConstraintsChange = new Emitter({\r\n replay: true,\r\n });\r\n this.onDidConstraintsChange = this._onDidConstraintsChange.event;\r\n this._onDidSizeChange = new Emitter();\r\n this.onDidSizeChange = this._onDidSizeChange.event;\r\n this.addDisposables(this._onDidConstraintsChangeInternal, this._onDidConstraintsChange, this._onDidSizeChange);\r\n if (panel) {\r\n this.initialize(panel);\r\n }\r\n }\r\n setConstraints(value) {\r\n this._onDidConstraintsChangeInternal.fire(value);\r\n }\r\n setSize(event) {\r\n this._onDidSizeChange.fire(event);\r\n }\r\n}\r\n//# sourceMappingURL=gridviewPanelApi.js.map","import { BasePanelView, } from './basePanelView';\r\nimport { GridviewPanelApiImpl, } from '../api/gridviewPanelApi';\r\nimport { Emitter } from '../events';\r\nexport class GridviewPanel extends BasePanelView {\r\n get priority() {\r\n return this._priority;\r\n }\r\n get snap() {\r\n return this._snap;\r\n }\r\n get minimumWidth() {\r\n const width = typeof this._minimumWidth === 'function'\r\n ? this._minimumWidth()\r\n : this._minimumWidth;\r\n if (width !== this._evaluatedMinimumWidth) {\r\n this._evaluatedMinimumWidth = width;\r\n this.updateConstraints();\r\n }\r\n return width;\r\n }\r\n get minimumHeight() {\r\n const height = typeof this._minimumHeight === 'function'\r\n ? this._minimumHeight()\r\n : this._minimumHeight;\r\n if (height !== this._evaluatedMinimumHeight) {\r\n this._evaluatedMinimumHeight = height;\r\n this.updateConstraints();\r\n }\r\n return height;\r\n }\r\n get maximumHeight() {\r\n const height = typeof this._maximumHeight === 'function'\r\n ? this._maximumHeight()\r\n : this._maximumHeight;\r\n if (height !== this._evaluatedMaximumHeight) {\r\n this._evaluatedMaximumHeight = height;\r\n this.updateConstraints();\r\n }\r\n return height;\r\n }\r\n get maximumWidth() {\r\n const width = typeof this._maximumWidth === 'function'\r\n ? this._maximumWidth()\r\n : this._maximumWidth;\r\n if (width !== this._evaluatedMaximumWidth) {\r\n this._evaluatedMaximumWidth = width;\r\n this.updateConstraints();\r\n }\r\n return width;\r\n }\r\n get isActive() {\r\n return this.api.isActive;\r\n }\r\n constructor(id, component, options, api) {\r\n super(id, component, api !== null && api !== void 0 ? api : new GridviewPanelApiImpl(id));\r\n this._evaluatedMinimumWidth = 0;\r\n this._evaluatedMaximumWidth = Number.MAX_SAFE_INTEGER;\r\n this._evaluatedMinimumHeight = 0;\r\n this._evaluatedMaximumHeight = Number.MAX_SAFE_INTEGER;\r\n this._minimumWidth = 0;\r\n this._minimumHeight = 0;\r\n this._maximumWidth = Number.MAX_SAFE_INTEGER;\r\n this._maximumHeight = Number.MAX_SAFE_INTEGER;\r\n this._snap = false;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n if (typeof (options === null || options === void 0 ? void 0 : options.minimumWidth) === 'number') {\r\n this._minimumWidth = options.minimumWidth;\r\n }\r\n if (typeof (options === null || options === void 0 ? void 0 : options.maximumWidth) === 'number') {\r\n this._maximumWidth = options.maximumWidth;\r\n }\r\n if (typeof (options === null || options === void 0 ? void 0 : options.minimumHeight) === 'number') {\r\n this._minimumHeight = options.minimumHeight;\r\n }\r\n if (typeof (options === null || options === void 0 ? void 0 : options.maximumHeight) === 'number') {\r\n this._maximumHeight = options.maximumHeight;\r\n }\r\n this.api.initialize(this); // TODO: required to by-pass 'super before this' requirement\r\n this.addDisposables(this.api.onVisibilityChange((event) => {\r\n const { isVisible } = event;\r\n const { accessor } = this._params;\r\n accessor.setVisible(this, isVisible);\r\n }), this.api.onActiveChange(() => {\r\n const { accessor } = this._params;\r\n accessor.setActive(this);\r\n }), this.api.onDidConstraintsChangeInternal((event) => {\r\n if (typeof event.minimumWidth === 'number' ||\r\n typeof event.minimumWidth === 'function') {\r\n this._minimumWidth = event.minimumWidth;\r\n }\r\n if (typeof event.minimumHeight === 'number' ||\r\n typeof event.minimumHeight === 'function') {\r\n this._minimumHeight = event.minimumHeight;\r\n }\r\n if (typeof event.maximumWidth === 'number' ||\r\n typeof event.maximumWidth === 'function') {\r\n this._maximumWidth = event.maximumWidth;\r\n }\r\n if (typeof event.maximumHeight === 'number' ||\r\n typeof event.maximumHeight === 'function') {\r\n this._maximumHeight = event.maximumHeight;\r\n }\r\n }), this.api.onDidSizeChange((event) => {\r\n this._onDidChange.fire({\r\n height: event.height,\r\n width: event.width,\r\n });\r\n }), this._onDidChange);\r\n }\r\n setVisible(isVisible) {\r\n this.api._onDidVisibilityChange.fire({ isVisible });\r\n }\r\n setActive(isActive) {\r\n this.api._onDidActiveChange.fire({ isActive });\r\n }\r\n init(parameters) {\r\n if (parameters.maximumHeight) {\r\n this._maximumHeight = parameters.maximumHeight;\r\n }\r\n if (parameters.minimumHeight) {\r\n this._minimumHeight = parameters.minimumHeight;\r\n }\r\n if (parameters.maximumWidth) {\r\n this._maximumWidth = parameters.maximumWidth;\r\n }\r\n if (parameters.minimumWidth) {\r\n this._minimumWidth = parameters.minimumWidth;\r\n }\r\n this._priority = parameters.priority;\r\n this._snap = !!parameters.snap;\r\n super.init(parameters);\r\n if (typeof parameters.isVisible === 'boolean') {\r\n this.setVisible(parameters.isVisible);\r\n }\r\n }\r\n updateConstraints() {\r\n this.api._onDidConstraintsChange.fire({\r\n minimumWidth: this._evaluatedMinimumWidth,\r\n maximumWidth: this._evaluatedMaximumWidth,\r\n minimumHeight: this._evaluatedMinimumHeight,\r\n maximumHeight: this._evaluatedMaximumHeight,\r\n });\r\n }\r\n toJSON() {\r\n const state = super.toJSON();\r\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ? undefined : value;\r\n const minimum = (value) => (value <= 0 ? undefined : value);\r\n return Object.assign(Object.assign({}, state), { minimumHeight: minimum(this.minimumHeight), maximumHeight: maximum(this.maximumHeight), minimumWidth: minimum(this.minimumWidth), maximumWidth: maximum(this.maximumWidth), snap: this.snap, priority: this.priority });\r\n }\r\n}\r\n//# sourceMappingURL=gridviewPanel.js.map","import { Emitter } from '../events';\r\nimport { GridviewPanelApiImpl } from './gridviewPanelApi';\r\nexport class DockviewGroupPanelApiImpl extends GridviewPanelApiImpl {\r\n get isFloating() {\r\n if (!this._group) {\r\n throw new Error(`DockviewGroupPanelApiImpl not initialized`);\r\n }\r\n return this._group.model.isFloating;\r\n }\r\n constructor(id, accessor) {\r\n super(id);\r\n this.accessor = accessor;\r\n this._onDidFloatingStateChange = new Emitter();\r\n this.onDidFloatingStateChange = this._onDidFloatingStateChange.event;\r\n this.addDisposables(this._onDidFloatingStateChange);\r\n }\r\n moveTo(options) {\r\n var _a;\r\n if (!this._group) {\r\n throw new Error(`DockviewGroupPanelApiImpl not initialized`);\r\n }\r\n this.accessor.moveGroupOrPanel(options.group, this._group.id, undefined, (_a = options.position) !== null && _a !== void 0 ? _a : 'center');\r\n }\r\n initialize(group) {\r\n this._group = group;\r\n }\r\n}\r\n//# sourceMappingURL=dockviewGroupPanelApi.js.map","import { DockviewGroupPanelModel, } from './dockviewGroupPanelModel';\r\nimport { GridviewPanel } from '../gridview/gridviewPanel';\r\nimport { DockviewGroupPanelApiImpl, } from '../api/dockviewGroupPanelApi';\r\nexport class DockviewGroupPanel extends GridviewPanel {\r\n get panels() {\r\n return this._model.panels;\r\n }\r\n get activePanel() {\r\n return this._model.activePanel;\r\n }\r\n get size() {\r\n return this._model.size;\r\n }\r\n get model() {\r\n return this._model;\r\n }\r\n get locked() {\r\n return this._model.locked;\r\n }\r\n set locked(value) {\r\n this._model.locked = value;\r\n }\r\n get header() {\r\n return this._model.header;\r\n }\r\n constructor(accessor, id, options) {\r\n super(id, 'groupview_default', {\r\n minimumHeight: 100,\r\n minimumWidth: 100,\r\n }, new DockviewGroupPanelApiImpl(id, accessor));\r\n this.api.initialize(this); // cannot use 'this' after after 'super' call\r\n this._model = new DockviewGroupPanelModel(this.element, accessor, id, options, this);\r\n }\r\n initialize() {\r\n this._model.initialize();\r\n }\r\n setActive(isActive) {\r\n super.setActive(isActive);\r\n this.model.setActive(isActive);\r\n }\r\n layout(width, height) {\r\n super.layout(width, height);\r\n this.model.layout(width, height);\r\n }\r\n getComponent() {\r\n return this._model;\r\n }\r\n toJSON() {\r\n return this.model.toJSON();\r\n }\r\n}\r\n//# sourceMappingURL=dockviewGroupPanel.js.map","export function isPanelOptionsWithPanel(data) {\r\n if (data.referencePanel) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexport function isPanelOptionsWithGroup(data) {\r\n if (data.referenceGroup) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexport function isGroupOptionsWithPanel(data) {\r\n if (data.referencePanel) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexport function isGroupOptionsWithGroup(data) {\r\n if (data.referenceGroup) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n//# sourceMappingURL=options.js.map","import { Emitter } from '../events';\r\nimport { GridviewPanelApiImpl } from './gridviewPanelApi';\r\nimport { MutableDisposable } from '../lifecycle';\r\nexport class DockviewPanelApiImpl extends GridviewPanelApiImpl {\r\n get title() {\r\n return this.panel.title;\r\n }\r\n get isGroupActive() {\r\n var _a;\r\n return !!((_a = this.group) === null || _a === void 0 ? void 0 : _a.isActive);\r\n }\r\n set group(value) {\r\n const isOldGroupActive = this.isGroupActive;\r\n this._group = value;\r\n this._onDidGroupChange.fire();\r\n if (this._group) {\r\n this.disposable.value = this._group.api.onDidActiveChange(() => {\r\n this._onDidActiveGroupChange.fire();\r\n });\r\n if (this.isGroupActive !== isOldGroupActive) {\r\n this._onDidActiveGroupChange.fire();\r\n }\r\n }\r\n }\r\n get group() {\r\n return this._group;\r\n }\r\n constructor(panel, group, accessor) {\r\n super(panel.id);\r\n this.panel = panel;\r\n this.accessor = accessor;\r\n this._onDidTitleChange = new Emitter();\r\n this.onDidTitleChange = this._onDidTitleChange.event;\r\n this._onDidActiveGroupChange = new Emitter();\r\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\r\n this._onDidGroupChange = new Emitter();\r\n this.onDidGroupChange = this._onDidGroupChange.event;\r\n this.disposable = new MutableDisposable();\r\n this.initialize(panel);\r\n this._group = group;\r\n this.addDisposables(this.disposable, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange);\r\n }\r\n moveTo(options) {\r\n var _a;\r\n this.accessor.moveGroupOrPanel(options.group, this._group.id, this.panel.id, (_a = options.position) !== null && _a !== void 0 ? _a : 'center', options.index);\r\n }\r\n setTitle(title) {\r\n this.panel.setTitle(title);\r\n }\r\n close() {\r\n this.group.model.closePanel(this.panel);\r\n }\r\n}\r\n//# sourceMappingURL=dockviewPanelApi.js.map","import { DockviewPanelApiImpl, } from '../api/dockviewPanelApi';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nexport class DockviewPanel extends CompositeDisposable {\r\n get params() {\r\n return this._params;\r\n }\r\n get title() {\r\n return this._title;\r\n }\r\n get group() {\r\n return this._group;\r\n }\r\n constructor(id, accessor, containerApi, group, view) {\r\n super();\r\n this.id = id;\r\n this.containerApi = containerApi;\r\n this.view = view;\r\n this._group = group;\r\n this.api = new DockviewPanelApiImpl(this, this._group, accessor);\r\n this.addDisposables(this.api.onActiveChange(() => {\r\n accessor.setActivePanel(this);\r\n }), this.api.onDidSizeChange((event) => {\r\n // forward the resize event to the group since if you want to resize a panel\r\n // you are actually just resizing the panels parent which is the group\r\n this.group.api.setSize(event);\r\n }));\r\n }\r\n init(params) {\r\n this._params = params.params;\r\n this.view.init(Object.assign(Object.assign({}, params), { api: this.api, containerApi: this.containerApi }));\r\n this.setTitle(params.title);\r\n }\r\n focus() {\r\n this.api._onFocusEvent.fire();\r\n }\r\n toJSON() {\r\n return {\r\n id: this.id,\r\n contentComponent: this.view.contentComponent,\r\n tabComponent: this.view.tabComponent,\r\n params: Object.keys(this._params || {}).length > 0\r\n ? this._params\r\n : undefined,\r\n title: this.title,\r\n };\r\n }\r\n setTitle(title) {\r\n const didTitleChange = title !== this.title;\r\n if (didTitleChange) {\r\n this._title = title;\r\n this.view.update({\r\n params: {\r\n params: this._params,\r\n title: this.title,\r\n },\r\n });\r\n this.api._onDidTitleChange.fire({ title });\r\n }\r\n }\r\n update(event) {\r\n // merge the new parameters with the existing parameters\r\n this._params = Object.assign(Object.assign({}, (this._params || {})), event.params);\r\n /**\r\n * delete new keys that have a value of undefined,\r\n * allow values of null\r\n */\r\n for (const key of Object.keys(event.params)) {\r\n if (event.params[key] === undefined) {\r\n delete this._params[key];\r\n }\r\n }\r\n // update the view with the updated props\r\n this.view.update({\r\n params: {\r\n params: this._params,\r\n title: this.title,\r\n },\r\n });\r\n }\r\n updateParentGroup(group, isGroupActive) {\r\n this._group = group;\r\n this.api.group = group;\r\n const isPanelVisible = this._group.model.isPanelActive(this);\r\n this.api._onDidActiveChange.fire({\r\n isActive: isGroupActive && isPanelVisible,\r\n });\r\n this.api._onDidVisibilityChange.fire({\r\n isVisible: isPanelVisible,\r\n });\r\n this.view.updateParentGroup(this._group, this._group.model.isPanelActive(this));\r\n }\r\n layout(width, height) {\r\n // the obtain the correct dimensions of the content panel we must deduct the tab height\r\n this.api._onDidDimensionChange.fire({\r\n width,\r\n height: height,\r\n });\r\n this.view.layout(width, height);\r\n }\r\n dispose() {\r\n this.api.dispose();\r\n this.view.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=dockviewPanel.js.map","const createSvgElementFromPath = (params) => {\r\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\r\n svg.setAttributeNS(null, 'height', params.height);\r\n svg.setAttributeNS(null, 'width', params.width);\r\n svg.setAttributeNS(null, 'viewBox', params.viewbox);\r\n svg.setAttributeNS(null, 'aria-hidden', 'false');\r\n svg.setAttributeNS(null, 'focusable', 'false');\r\n svg.classList.add('dockview-svg');\r\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\r\n path.setAttributeNS(null, 'd', params.path);\r\n svg.appendChild(path);\r\n return svg;\r\n};\r\nexport const createCloseButton = () => createSvgElementFromPath({\r\n width: '11',\r\n height: '11',\r\n viewbox: '0 0 28 28',\r\n path: 'M2.1 27.3L0 25.2L11.55 13.65L0 2.1L2.1 0L13.65 11.55L25.2 0L27.3 2.1L15.75 13.65L27.3 25.2L25.2 27.3L13.65 15.75L2.1 27.3Z',\r\n});\r\nexport const createExpandMoreButton = () => createSvgElementFromPath({\r\n width: '11',\r\n height: '11',\r\n viewbox: '0 0 24 15',\r\n path: 'M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z',\r\n});\r\nexport const createChevronRightButton = () => createSvgElementFromPath({\r\n width: '11',\r\n height: '11',\r\n viewbox: '0 0 15 25',\r\n path: 'M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z',\r\n});\r\n//# sourceMappingURL=svg.js.map","import { CompositeDisposable } from '../../../lifecycle';\r\nimport { addDisposableListener } from '../../../events';\r\nimport { createCloseButton } from '../../../svg';\r\nexport class DefaultTab extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor() {\r\n super();\r\n //\r\n this.params = {};\r\n this._element = document.createElement('div');\r\n this._element.className = 'default-tab';\r\n //\r\n this._content = document.createElement('div');\r\n this._content.className = 'tab-content';\r\n //\r\n this._actionContainer = document.createElement('div');\r\n this._actionContainer.className = 'action-container';\r\n //\r\n this._list = document.createElement('ul');\r\n this._list.className = 'tab-list';\r\n //\r\n this.action = document.createElement('div');\r\n this.action.className = 'tab-action';\r\n this.action.appendChild(createCloseButton());\r\n //\r\n this._element.appendChild(this._content);\r\n this._element.appendChild(this._actionContainer);\r\n this._actionContainer.appendChild(this._list);\r\n this._list.appendChild(this.action);\r\n //\r\n this.addDisposables(addDisposableListener(this._actionContainer, 'mousedown', (ev) => {\r\n ev.preventDefault();\r\n }));\r\n this.render();\r\n }\r\n update(event) {\r\n this.params = Object.assign(Object.assign({}, this.params), event.params);\r\n this.render();\r\n }\r\n focus() {\r\n //noop\r\n }\r\n init(params) {\r\n this.params = params;\r\n this._content.textContent = params.title;\r\n addDisposableListener(this.action, 'click', (ev) => {\r\n ev.preventDefault(); //\r\n this.params.api.close();\r\n });\r\n }\r\n onGroupChange(_group) {\r\n this.render();\r\n }\r\n onPanelVisibleChange(_isPanelVisible) {\r\n this.render();\r\n }\r\n layout(_width, _height) {\r\n // noop\r\n }\r\n render() {\r\n if (this._content.textContent !== this.params.title) {\r\n this._content.textContent = this.params.title;\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=defaultTab.js.map","import { DefaultTab } from './components/tab/defaultTab';\r\nimport { createComponent } from '../panel/componentFactory';\r\nexport class DockviewPanelModel {\r\n get content() {\r\n return this._content;\r\n }\r\n get tab() {\r\n return this._tab;\r\n }\r\n constructor(accessor, id, contentComponent, tabComponent) {\r\n this.accessor = accessor;\r\n this.id = id;\r\n this.contentComponent = contentComponent;\r\n this.tabComponent = tabComponent;\r\n this._group = null;\r\n this._isPanelVisible = null;\r\n this._content = this.createContentComponent(this.id, contentComponent);\r\n this._tab = this.createTabComponent(this.id, tabComponent);\r\n }\r\n init(params) {\r\n this.content.init(Object.assign(Object.assign({}, params), { tab: this.tab }));\r\n this.tab.init(params);\r\n }\r\n updateParentGroup(group, isPanelVisible) {\r\n if (group !== this._group) {\r\n this._group = group;\r\n if (this._content.onGroupChange) {\r\n this._content.onGroupChange(group);\r\n }\r\n if (this._tab.onGroupChange) {\r\n this._tab.onGroupChange(group);\r\n }\r\n }\r\n if (isPanelVisible !== this._isPanelVisible) {\r\n this._isPanelVisible = isPanelVisible;\r\n if (this._content.onPanelVisibleChange) {\r\n this._content.onPanelVisibleChange(isPanelVisible);\r\n }\r\n if (this._tab.onPanelVisibleChange) {\r\n this._tab.onPanelVisibleChange(isPanelVisible);\r\n }\r\n }\r\n }\r\n layout(width, height) {\r\n var _a, _b;\r\n (_b = (_a = this.content).layout) === null || _b === void 0 ? void 0 : _b.call(_a, width, height);\r\n }\r\n update(event) {\r\n var _a, _b, _c, _d;\r\n (_b = (_a = this.content).update) === null || _b === void 0 ? void 0 : _b.call(_a, event);\r\n (_d = (_c = this.tab).update) === null || _d === void 0 ? void 0 : _d.call(_c, event);\r\n }\r\n dispose() {\r\n var _a, _b, _c, _d;\r\n (_b = (_a = this.content).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n (_d = (_c = this.tab).dispose) === null || _d === void 0 ? void 0 : _d.call(_c);\r\n }\r\n createContentComponent(id, componentName) {\r\n var _a;\r\n return createComponent(id, componentName, this.accessor.options.components || {}, this.accessor.options.frameworkComponents, (_a = this.accessor.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.content);\r\n }\r\n createTabComponent(id, componentName) {\r\n var _a, _b;\r\n if (componentName) {\r\n return createComponent(id, componentName, this.accessor.options.tabComponents, this.accessor.options.frameworkTabComponents, (_a = this.accessor.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.tab, () => new DefaultTab());\r\n }\r\n else if (this.accessor.options.defaultTabComponent) {\r\n return createComponent(id, this.accessor.options.defaultTabComponent, this.accessor.options.tabComponents, this.accessor.options.frameworkTabComponents, (_b = this.accessor.options.frameworkComponentFactory) === null || _b === void 0 ? void 0 : _b.tab, () => new DefaultTab());\r\n }\r\n else {\r\n return new DefaultTab();\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=dockviewPanelModel.js.map","import { DockviewPanel } from './dockviewPanel';\r\nimport { DockviewPanelModel } from './dockviewPanelModel';\r\nimport { DockviewApi } from '../api/component.api';\r\nexport class DefaultDockviewDeserialzier {\r\n constructor(layout) {\r\n this.layout = layout;\r\n }\r\n fromJSON(panelData, group) {\r\n var _a;\r\n const panelId = panelData.id;\r\n const params = panelData.params;\r\n const title = panelData.title;\r\n const viewData = panelData.view;\r\n const contentComponent = viewData\r\n ? viewData.content.id\r\n : panelData.contentComponent || 'unknown';\r\n const tabComponent = viewData\r\n ? (_a = viewData.tab) === null || _a === void 0 ? void 0 : _a.id\r\n : panelData.tabComponent;\r\n const view = new DockviewPanelModel(this.layout, panelId, contentComponent, tabComponent);\r\n const panel = new DockviewPanel(panelId, this.layout, new DockviewApi(this.layout), group, view);\r\n panel.init({\r\n title: title || panelId,\r\n params: params || {},\r\n });\r\n return panel;\r\n }\r\n}\r\n//# sourceMappingURL=deserializer.js.map","import { addDisposableListener } from '../../../events';\r\nimport { toggleClass } from '../../../dom';\r\nimport { CompositeDisposable } from '../../../lifecycle';\r\nimport { createCloseButton } from '../../../svg';\r\nexport class Watermark extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor() {\r\n super();\r\n this._element = document.createElement('div');\r\n this._element.className = 'watermark';\r\n const title = document.createElement('div');\r\n title.className = 'watermark-title';\r\n const emptySpace = document.createElement('span');\r\n emptySpace.style.flexGrow = '1';\r\n const content = document.createElement('div');\r\n content.className = 'watermark-content';\r\n this._element.appendChild(title);\r\n this._element.appendChild(content);\r\n const actionsContainer = document.createElement('div');\r\n actionsContainer.className = 'actions-container';\r\n const closeAnchor = document.createElement('div');\r\n closeAnchor.className = 'close-action';\r\n closeAnchor.appendChild(createCloseButton());\r\n actionsContainer.appendChild(closeAnchor);\r\n title.appendChild(emptySpace);\r\n title.appendChild(actionsContainer);\r\n this.addDisposables(addDisposableListener(closeAnchor, 'click', (ev) => {\r\n var _a;\r\n ev.preventDefault();\r\n if (this._group) {\r\n (_a = this._api) === null || _a === void 0 ? void 0 : _a.removeGroup(this._group);\r\n }\r\n }));\r\n }\r\n update(_event) {\r\n // noop\r\n }\r\n focus() {\r\n // noop\r\n }\r\n layout(_width, _height) {\r\n // noop\r\n }\r\n init(_params) {\r\n this._api = _params.containerApi;\r\n this.render();\r\n }\r\n updateParentGroup(group, _visible) {\r\n this._group = group;\r\n this.render();\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n render() {\r\n const isOneGroup = !!(this._api && this._api.size <= 1);\r\n toggleClass(this.element, 'has-actions', isOneGroup);\r\n }\r\n}\r\n//# sourceMappingURL=watermark.js.map","import { getElementsByTagName, quasiDefaultPrevented, toggleClass, } from '../dom';\r\nimport { Emitter, addDisposableListener, addDisposableWindowListener, } from '../events';\r\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\r\nimport { clamp } from '../math';\r\nconst bringElementToFront = (() => {\r\n let previous = null;\r\n function pushToTop(element) {\r\n if (previous !== element && previous !== null) {\r\n toggleClass(previous, 'dv-bring-to-front', false);\r\n }\r\n toggleClass(element, 'dv-bring-to-front', true);\r\n previous = element;\r\n }\r\n return pushToTop;\r\n})();\r\nexport class Overlay extends CompositeDisposable {\r\n set minimumInViewportWidth(value) {\r\n this.options.minimumInViewportWidth = value;\r\n }\r\n set minimumInViewportHeight(value) {\r\n this.options.minimumInViewportHeight = value;\r\n }\r\n constructor(options) {\r\n super();\r\n this.options = options;\r\n this._element = document.createElement('div');\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._onDidChangeEnd = new Emitter();\r\n this.onDidChangeEnd = this._onDidChangeEnd.event;\r\n this.addDisposables(this._onDidChange, this._onDidChangeEnd);\r\n this._element.className = 'dv-resize-container';\r\n this.setupResize('top');\r\n this.setupResize('bottom');\r\n this.setupResize('left');\r\n this.setupResize('right');\r\n this.setupResize('topleft');\r\n this.setupResize('topright');\r\n this.setupResize('bottomleft');\r\n this.setupResize('bottomright');\r\n this._element.appendChild(this.options.content);\r\n this.options.container.appendChild(this._element);\r\n // if input bad resize within acceptable boundaries\r\n this.setBounds({\r\n height: this.options.height,\r\n width: this.options.width,\r\n top: this.options.top,\r\n left: this.options.left,\r\n });\r\n }\r\n setBounds(bounds = {}) {\r\n if (typeof bounds.height === 'number') {\r\n this._element.style.height = `${bounds.height}px`;\r\n }\r\n if (typeof bounds.width === 'number') {\r\n this._element.style.width = `${bounds.width}px`;\r\n }\r\n if (typeof bounds.top === 'number') {\r\n this._element.style.top = `${bounds.top}px`;\r\n }\r\n if (typeof bounds.left === 'number') {\r\n this._element.style.left = `${bounds.left}px`;\r\n }\r\n const containerRect = this.options.container.getBoundingClientRect();\r\n const overlayRect = this._element.getBoundingClientRect();\r\n // region: ensure bounds within allowable limits\r\n // a minimum width of minimumViewportWidth must be inside the viewport\r\n const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));\r\n // a minimum height of minimumViewportHeight must be inside the viewport\r\n const yOffset = typeof this.options.minimumInViewportHeight === 'number'\r\n ? Math.max(0, this.getMinimumHeight(overlayRect.height))\r\n : 0;\r\n const left = clamp(overlayRect.left - containerRect.left, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\r\n const top = clamp(overlayRect.top - containerRect.top, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\r\n this._element.style.left = `${left}px`;\r\n this._element.style.top = `${top}px`;\r\n this._onDidChange.fire();\r\n }\r\n toJSON() {\r\n const container = this.options.container.getBoundingClientRect();\r\n const element = this._element.getBoundingClientRect();\r\n return {\r\n top: element.top - container.top,\r\n left: element.left - container.left,\r\n width: element.width,\r\n height: element.height,\r\n };\r\n }\r\n setupDrag(dragTarget, options = { inDragMode: false }) {\r\n const move = new MutableDisposable();\r\n const track = () => {\r\n let offset = null;\r\n const iframes = [\r\n ...getElementsByTagName('iframe'),\r\n ...getElementsByTagName('webview'),\r\n ];\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'none';\r\n }\r\n move.value = new CompositeDisposable({\r\n dispose: () => {\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'auto';\r\n }\r\n },\r\n }, addDisposableWindowListener(window, 'mousemove', (e) => {\r\n const containerRect = this.options.container.getBoundingClientRect();\r\n const x = e.clientX - containerRect.left;\r\n const y = e.clientY - containerRect.top;\r\n toggleClass(this._element, 'dv-resize-container-dragging', true);\r\n const overlayRect = this._element.getBoundingClientRect();\r\n if (offset === null) {\r\n offset = {\r\n x: e.clientX - overlayRect.left,\r\n y: e.clientY - overlayRect.top,\r\n };\r\n }\r\n const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));\r\n const yOffset = Math.max(0, this.options.minimumInViewportHeight\r\n ? this.getMinimumHeight(overlayRect.height)\r\n : 0);\r\n const left = clamp(x - offset.x, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\r\n const top = clamp(y - offset.y, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\r\n this.setBounds({ top, left });\r\n }), addDisposableWindowListener(window, 'mouseup', () => {\r\n toggleClass(this._element, 'dv-resize-container-dragging', false);\r\n move.dispose();\r\n this._onDidChangeEnd.fire();\r\n }));\r\n };\r\n this.addDisposables(move, addDisposableListener(dragTarget, 'mousedown', (event) => {\r\n if (event.defaultPrevented) {\r\n event.preventDefault();\r\n return;\r\n }\r\n // if somebody has marked this event then treat as a defaultPrevented\r\n // without actually calling event.preventDefault()\r\n if (quasiDefaultPrevented(event)) {\r\n return;\r\n }\r\n track();\r\n }), addDisposableListener(this.options.content, 'mousedown', (event) => {\r\n if (event.defaultPrevented) {\r\n return;\r\n }\r\n // if somebody has marked this event then treat as a defaultPrevented\r\n // without actually calling event.preventDefault()\r\n if (quasiDefaultPrevented(event)) {\r\n return;\r\n }\r\n if (event.shiftKey) {\r\n track();\r\n }\r\n }), addDisposableListener(this.options.content, 'mousedown', () => {\r\n bringElementToFront(this._element);\r\n }, true));\r\n bringElementToFront(this._element);\r\n if (options.inDragMode) {\r\n track();\r\n }\r\n }\r\n setupResize(direction) {\r\n const resizeHandleElement = document.createElement('div');\r\n resizeHandleElement.className = `dv-resize-handle-${direction}`;\r\n this._element.appendChild(resizeHandleElement);\r\n const move = new MutableDisposable();\r\n this.addDisposables(move, addDisposableListener(resizeHandleElement, 'mousedown', (e) => {\r\n e.preventDefault();\r\n let startPosition = null;\r\n const iframes = [\r\n ...getElementsByTagName('iframe'),\r\n ...getElementsByTagName('webview'),\r\n ];\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'none';\r\n }\r\n move.value = new CompositeDisposable(addDisposableWindowListener(window, 'mousemove', (e) => {\r\n const containerRect = this.options.container.getBoundingClientRect();\r\n const overlayRect = this._element.getBoundingClientRect();\r\n const y = e.clientY - containerRect.top;\r\n const x = e.clientX - containerRect.left;\r\n if (startPosition === null) {\r\n // record the initial dimensions since as all subsequence moves are relative to this\r\n startPosition = {\r\n originalY: y,\r\n originalHeight: overlayRect.height,\r\n originalX: x,\r\n originalWidth: overlayRect.width,\r\n };\r\n }\r\n let top = undefined;\r\n let height = undefined;\r\n let left = undefined;\r\n let width = undefined;\r\n const moveTop = () => {\r\n top = clamp(y, -Number.MAX_VALUE, startPosition.originalY +\r\n startPosition.originalHeight >\r\n containerRect.height\r\n ? this.getMinimumHeight(containerRect.height)\r\n : Math.max(0, startPosition.originalY +\r\n startPosition.originalHeight -\r\n Overlay.MINIMUM_HEIGHT));\r\n height =\r\n startPosition.originalY +\r\n startPosition.originalHeight -\r\n top;\r\n };\r\n const moveBottom = () => {\r\n top =\r\n startPosition.originalY -\r\n startPosition.originalHeight;\r\n height = clamp(y - top, top < 0 &&\r\n typeof this.options\r\n .minimumInViewportHeight === 'number'\r\n ? -top +\r\n this.options.minimumInViewportHeight\r\n : Overlay.MINIMUM_HEIGHT, Number.MAX_VALUE);\r\n };\r\n const moveLeft = () => {\r\n left = clamp(x, -Number.MAX_VALUE, startPosition.originalX +\r\n startPosition.originalWidth >\r\n containerRect.width\r\n ? this.getMinimumWidth(containerRect.width)\r\n : Math.max(0, startPosition.originalX +\r\n startPosition.originalWidth -\r\n Overlay.MINIMUM_WIDTH));\r\n width =\r\n startPosition.originalX +\r\n startPosition.originalWidth -\r\n left;\r\n };\r\n const moveRight = () => {\r\n left =\r\n startPosition.originalX -\r\n startPosition.originalWidth;\r\n width = clamp(x - left, left < 0 &&\r\n typeof this.options\r\n .minimumInViewportWidth === 'number'\r\n ? -left +\r\n this.options.minimumInViewportWidth\r\n : Overlay.MINIMUM_WIDTH, Number.MAX_VALUE);\r\n };\r\n switch (direction) {\r\n case 'top':\r\n moveTop();\r\n break;\r\n case 'bottom':\r\n moveBottom();\r\n break;\r\n case 'left':\r\n moveLeft();\r\n break;\r\n case 'right':\r\n moveRight();\r\n break;\r\n case 'topleft':\r\n moveTop();\r\n moveLeft();\r\n break;\r\n case 'topright':\r\n moveTop();\r\n moveRight();\r\n break;\r\n case 'bottomleft':\r\n moveBottom();\r\n moveLeft();\r\n break;\r\n case 'bottomright':\r\n moveBottom();\r\n moveRight();\r\n break;\r\n }\r\n this.setBounds({ height, width, top, left });\r\n }), {\r\n dispose: () => {\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'auto';\r\n }\r\n },\r\n }, addDisposableWindowListener(window, 'mouseup', () => {\r\n move.dispose();\r\n this._onDidChangeEnd.fire();\r\n }));\r\n }));\r\n }\r\n getMinimumWidth(width) {\r\n if (typeof this.options.minimumInViewportWidth === 'number') {\r\n return width - this.options.minimumInViewportWidth;\r\n }\r\n return 0;\r\n }\r\n getMinimumHeight(height) {\r\n if (typeof this.options.minimumInViewportHeight === 'number') {\r\n return height - this.options.minimumInViewportHeight;\r\n }\r\n return height;\r\n }\r\n dispose() {\r\n this._element.remove();\r\n super.dispose();\r\n }\r\n}\r\nOverlay.MINIMUM_HEIGHT = 20;\r\nOverlay.MINIMUM_WIDTH = 20;\r\n//# sourceMappingURL=overlay.js.map","import { CompositeDisposable } from '../lifecycle';\r\nexport class DockviewFloatingGroupPanel extends CompositeDisposable {\r\n constructor(group, overlay) {\r\n super();\r\n this.group = group;\r\n this.overlay = overlay;\r\n this.addDisposables(overlay);\r\n }\r\n position(bounds) {\r\n this.overlay.setBounds(bounds);\r\n }\r\n}\r\n//# sourceMappingURL=dockviewFloatingGroupPanel.js.map","import { getRelativeLocation, getGridLocation, } from '../gridview/gridview';\r\nimport { directionToPosition, Droptarget } from '../dnd/droptarget';\r\nimport { tail, sequenceEquals, remove } from '../array';\r\nimport { DockviewPanel } from './dockviewPanel';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nimport { Event, Emitter } from '../events';\r\nimport { Watermark } from './components/watermark/watermark';\r\nimport { DockviewDropTargets, } from './types';\r\nimport { sequentialNumberGenerator } from '../math';\r\nimport { DefaultDockviewDeserialzier } from './deserializer';\r\nimport { createComponent } from '../panel/componentFactory';\r\nimport { isGroupOptionsWithGroup, isGroupOptionsWithPanel, isPanelOptionsWithGroup, isPanelOptionsWithPanel, } from './options';\r\nimport { BaseGrid, toTarget, } from '../gridview/baseComponentGridview';\r\nimport { DockviewApi } from '../api/component.api';\r\nimport { Orientation, Sizing } from '../splitview/splitview';\r\nimport { DockviewGroupPanel } from './dockviewGroupPanel';\r\nimport { DockviewPanelModel } from './dockviewPanelModel';\r\nimport { getPanelData } from '../dnd/dataTransfer';\r\nimport { Overlay } from '../dnd/overlay';\r\nimport { toggleClass, watchElementResize } from '../dom';\r\nimport { DockviewFloatingGroupPanel, } from './dockviewFloatingGroupPanel';\r\nconst DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;\r\nfunction typeValidate3(data, path) {\r\n if (typeof data.id !== 'string') {\r\n throw new Error(`${path}.id must be a string`);\r\n }\r\n if (typeof data.activeView !== 'string' ||\r\n typeof data.activeView !== 'undefined') {\r\n throw new Error(`${path}.activeView must be a string of undefined`);\r\n }\r\n}\r\nfunction typeValidate2(data, path) {\r\n if (typeof data.size !== 'number' && typeof data.size !== 'undefined') {\r\n throw new Error(`${path}.size must be a number or undefined`);\r\n }\r\n if (typeof data.visible !== 'boolean' &&\r\n typeof data.visible !== 'undefined') {\r\n throw new Error(`${path}.visible must be a boolean or undefined`);\r\n }\r\n if (data.type === 'leaf') {\r\n if (typeof data.data !== 'object' ||\r\n data.data === null ||\r\n Array.isArray(data.data)) {\r\n throw new Error('object must be a non-null object');\r\n }\r\n typeValidate3(data.data, `${path}.data`);\r\n }\r\n else if (data.type === 'branch') {\r\n if (!Array.isArray(data.data)) {\r\n throw new Error(`${path}.data must be an array`);\r\n }\r\n }\r\n else {\r\n throw new Error(`${path}.type must be onew of {'branch', 'leaf'}`);\r\n }\r\n}\r\nfunction typeValidate(data) {\r\n if (typeof data !== 'object' || data === null) {\r\n throw new Error('object must be a non-null object');\r\n }\r\n const { grid, panels, activeGroup, floatingGroups } = data;\r\n if (typeof grid !== 'object' || grid === null) {\r\n throw new Error(\"'.grid' must be a non-null object\");\r\n }\r\n if (typeof grid.height !== 'number') {\r\n throw new Error(\"'.grid.height' must be a number\");\r\n }\r\n if (typeof grid.width !== 'number') {\r\n throw new Error(\"'.grid.width' must be a number\");\r\n }\r\n if (typeof grid.root !== 'object' || grid.root === null) {\r\n throw new Error(\"'.grid.root' must be a non-null object\");\r\n }\r\n if (grid.root.type !== 'branch') {\r\n throw new Error(\".grid.root.type must be of type 'branch'\");\r\n }\r\n if (grid.orientation !== Orientation.HORIZONTAL &&\r\n grid.orientation !== Orientation.VERTICAL) {\r\n throw new Error(`'.grid.width' must be one of {${Orientation.HORIZONTAL}, ${Orientation.VERTICAL}}`);\r\n }\r\n typeValidate2(grid.root, '.grid.root');\r\n}\r\nexport class DockviewComponent extends BaseGrid {\r\n get orientation() {\r\n return this.gridview.orientation;\r\n }\r\n get totalPanels() {\r\n return this.panels.length;\r\n }\r\n get panels() {\r\n return this.groups.flatMap((group) => group.panels);\r\n }\r\n get options() {\r\n return this._options;\r\n }\r\n get activePanel() {\r\n const activeGroup = this.activeGroup;\r\n if (!activeGroup) {\r\n return undefined;\r\n }\r\n return activeGroup.activePanel;\r\n }\r\n constructor(options) {\r\n super({\r\n proportionalLayout: true,\r\n orientation: options.orientation || Orientation.HORIZONTAL,\r\n styles: options.styles,\r\n parentElement: options.parentElement,\r\n });\r\n this.nextGroupId = sequentialNumberGenerator();\r\n this._deserializer = new DefaultDockviewDeserialzier(this);\r\n this.watermark = null;\r\n this._onWillDragPanel = new Emitter();\r\n this.onWillDragPanel = this._onWillDragPanel.event;\r\n this._onWillDragGroup = new Emitter();\r\n this.onWillDragGroup = this._onWillDragGroup.event;\r\n this._onDidDrop = new Emitter();\r\n this.onDidDrop = this._onDidDrop.event;\r\n this._onDidRemovePanel = new Emitter();\r\n this.onDidRemovePanel = this._onDidRemovePanel.event;\r\n this._onDidAddPanel = new Emitter();\r\n this.onDidAddPanel = this._onDidAddPanel.event;\r\n this._onDidLayoutFromJSON = new Emitter();\r\n this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;\r\n this._onDidActivePanelChange = new Emitter();\r\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\r\n this.floatingGroups = [];\r\n toggleClass(this.gridview.element, 'dv-dockview', true);\r\n this.addDisposables(this._onWillDragPanel, this._onWillDragGroup, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, Event.any(this.onDidAddGroup, this.onDidRemoveGroup)(() => {\r\n this.updateWatermark();\r\n }), Event.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {\r\n this._bufferOnDidLayoutChange.fire();\r\n }));\r\n this._options = options;\r\n if (!this.options.components) {\r\n this.options.components = {};\r\n }\r\n if (!this.options.frameworkComponents) {\r\n this.options.frameworkComponents = {};\r\n }\r\n if (!this.options.frameworkTabComponents) {\r\n this.options.frameworkTabComponents = {};\r\n }\r\n if (!this.options.tabComponents) {\r\n this.options.tabComponents = {};\r\n }\r\n if (!this.options.watermarkComponent &&\r\n !this.options.watermarkFrameworkComponent) {\r\n this.options.watermarkComponent = Watermark;\r\n }\r\n const dropTarget = new Droptarget(this.element, {\r\n canDisplayOverlay: (event, position) => {\r\n const data = getPanelData();\r\n if (data) {\r\n if (data.viewId !== this.id) {\r\n return false;\r\n }\r\n if (position === 'center') {\r\n // center drop target is only allowed if there are no panels in the grid\r\n // floating panels are allowed\r\n return this.gridview.length === 0;\r\n }\r\n return true;\r\n }\r\n if (this.options.showDndOverlay) {\r\n if (position === 'center' && this.gridview.length !== 0) {\r\n /**\r\n * for external events only show the four-corner drag overlays, disable\r\n * the center position so that external drag events can fall through to the group\r\n * and panel drop target handlers\r\n */\r\n return false;\r\n }\r\n return this.options.showDndOverlay({\r\n nativeEvent: event,\r\n position: position,\r\n target: DockviewDropTargets.Edge,\r\n getData: getPanelData,\r\n });\r\n }\r\n return false;\r\n },\r\n acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],\r\n overlayModel: {\r\n activationSize: { type: 'pixels', value: 10 },\r\n size: { type: 'pixels', value: 20 },\r\n },\r\n });\r\n this.addDisposables(dropTarget.onDrop((event) => {\r\n const data = getPanelData();\r\n if (data) {\r\n this.moveGroupOrPanel(this.orthogonalize(event.position), data.groupId, data.panelId || undefined, 'center');\r\n }\r\n else {\r\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: null, getData: getPanelData }));\r\n }\r\n }), dropTarget);\r\n this._api = new DockviewApi(this);\r\n this.updateWatermark();\r\n }\r\n addFloatingGroup(item, coord, options) {\r\n var _a, _b, _c, _d, _e, _f;\r\n let group;\r\n if (item instanceof DockviewPanel) {\r\n group = this.createGroup();\r\n this.removePanel(item, {\r\n removeEmptyGroup: true,\r\n skipDispose: true,\r\n });\r\n group.model.openPanel(item);\r\n }\r\n else {\r\n group = item;\r\n const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&\r\n options.skipRemoveGroup;\r\n if (!skip) {\r\n this.doRemoveGroup(item, { skipDispose: true });\r\n }\r\n }\r\n group.model.isFloating = true;\r\n const overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number' ? Math.max(coord.x, 0) : 100;\r\n const overlayTop = typeof (coord === null || coord === void 0 ? void 0 : coord.y) === 'number' ? Math.max(coord.y, 0) : 100;\r\n const overlay = new Overlay({\r\n container: this.gridview.element,\r\n content: group.element,\r\n height: (_a = coord === null || coord === void 0 ? void 0 : coord.height) !== null && _a !== void 0 ? _a : 300,\r\n width: (_b = coord === null || coord === void 0 ? void 0 : coord.width) !== null && _b !== void 0 ? _b : 300,\r\n left: overlayLeft,\r\n top: overlayTop,\r\n minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'\r\n ? undefined\r\n : (_d = (_c = this.options.floatingGroupBounds) === null || _c === void 0 ? void 0 : _c.minimumWidthWithinViewport) !== null && _d !== void 0 ? _d : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,\r\n minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'\r\n ? undefined\r\n : (_f = (_e = this.options.floatingGroupBounds) === null || _e === void 0 ? void 0 : _e.minimumHeightWithinViewport) !== null && _f !== void 0 ? _f : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,\r\n });\r\n const el = group.element.querySelector('.void-container');\r\n if (!el) {\r\n throw new Error('failed to find drag handle');\r\n }\r\n overlay.setupDrag(el, {\r\n inDragMode: typeof (options === null || options === void 0 ? void 0 : options.inDragMode) === 'boolean'\r\n ? options.inDragMode\r\n : false,\r\n });\r\n const floatingGroupPanel = new DockviewFloatingGroupPanel(group, overlay);\r\n const disposable = watchElementResize(group.element, (entry) => {\r\n const { width, height } = entry.contentRect;\r\n group.layout(width, height); // let the group know it's size is changing so it can fire events to the panel\r\n });\r\n floatingGroupPanel.addDisposables(overlay.onDidChange(() => {\r\n // this is either a resize or a move\r\n // to inform the panels .layout(...) the group with it's current size\r\n // don't care about resize since the above watcher handles that\r\n group.layout(group.height, group.width);\r\n }), overlay.onDidChangeEnd(() => {\r\n this._bufferOnDidLayoutChange.fire();\r\n }), group.onDidChange((event) => {\r\n overlay.setBounds({\r\n height: event === null || event === void 0 ? void 0 : event.height,\r\n width: event === null || event === void 0 ? void 0 : event.width,\r\n });\r\n }), {\r\n dispose: () => {\r\n disposable.dispose();\r\n group.model.isFloating = false;\r\n remove(this.floatingGroups, floatingGroupPanel);\r\n this.updateWatermark();\r\n },\r\n });\r\n this.floatingGroups.push(floatingGroupPanel);\r\n this.updateWatermark();\r\n }\r\n orthogonalize(position) {\r\n switch (position) {\r\n case 'top':\r\n case 'bottom':\r\n if (this.gridview.orientation === Orientation.HORIZONTAL) {\r\n // we need to add to a vertical splitview but the current root is a horizontal splitview.\r\n // insert a vertical splitview at the root level and add the existing view as a child\r\n this.gridview.insertOrthogonalSplitviewAtRoot();\r\n }\r\n break;\r\n case 'left':\r\n case 'right':\r\n if (this.gridview.orientation === Orientation.VERTICAL) {\r\n // we need to add to a horizontal splitview but the current root is a vertical splitview.\r\n // insert a horiziontal splitview at the root level and add the existing view as a child\r\n this.gridview.insertOrthogonalSplitviewAtRoot();\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n switch (position) {\r\n case 'top':\r\n case 'left':\r\n case 'center':\r\n return this.createGroupAtLocation([0]); // insert into first position\r\n case 'bottom':\r\n case 'right':\r\n return this.createGroupAtLocation([this.gridview.length]); // insert into last position\r\n default:\r\n throw new Error(`unsupported position ${position}`);\r\n }\r\n }\r\n updateOptions(options) {\r\n var _a, _b;\r\n const hasOrientationChanged = typeof options.orientation === 'string' &&\r\n this.gridview.orientation !== options.orientation;\r\n const hasFloatingGroupOptionsChanged = options.floatingGroupBounds !== undefined &&\r\n options.floatingGroupBounds !== this.options.floatingGroupBounds;\r\n this._options = Object.assign(Object.assign({}, this.options), options);\r\n if (hasOrientationChanged) {\r\n this.gridview.orientation = options.orientation;\r\n }\r\n if (hasFloatingGroupOptionsChanged) {\r\n for (const group of this.floatingGroups) {\r\n switch (this.options.floatingGroupBounds) {\r\n case 'boundedWithinViewport':\r\n group.overlay.minimumInViewportHeight = undefined;\r\n group.overlay.minimumInViewportWidth = undefined;\r\n break;\r\n case undefined:\r\n group.overlay.minimumInViewportHeight =\r\n DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;\r\n group.overlay.minimumInViewportWidth =\r\n DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;\r\n break;\r\n default:\r\n group.overlay.minimumInViewportHeight =\r\n (_a = this.options.floatingGroupBounds) === null || _a === void 0 ? void 0 : _a.minimumHeightWithinViewport;\r\n group.overlay.minimumInViewportWidth =\r\n (_b = this.options.floatingGroupBounds) === null || _b === void 0 ? void 0 : _b.minimumWidthWithinViewport;\r\n }\r\n group.overlay.setBounds({});\r\n }\r\n }\r\n this.layout(this.gridview.width, this.gridview.height, true);\r\n }\r\n layout(width, height, forceResize) {\r\n super.layout(width, height, forceResize);\r\n if (this.floatingGroups) {\r\n for (const floating of this.floatingGroups) {\r\n // ensure floting groups stay within visible boundaries\r\n floating.overlay.setBounds();\r\n }\r\n }\r\n }\r\n focus() {\r\n var _a;\r\n (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();\r\n }\r\n getGroupPanel(id) {\r\n return this.panels.find((panel) => panel.id === id);\r\n }\r\n setActivePanel(panel) {\r\n this.doSetGroupActive(panel.group);\r\n panel.group.model.openPanel(panel);\r\n }\r\n moveToNext(options = {}) {\r\n var _a;\r\n if (!options.group) {\r\n if (!this.activeGroup) {\r\n return;\r\n }\r\n options.group = this.activeGroup;\r\n }\r\n if (options.includePanel && options.group) {\r\n if (options.group.activePanel !==\r\n options.group.panels[options.group.panels.length - 1]) {\r\n options.group.model.moveToNext({ suppressRoll: true });\r\n return;\r\n }\r\n }\r\n const location = getGridLocation(options.group.element);\r\n const next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;\r\n this.doSetGroupActive(next);\r\n }\r\n moveToPrevious(options = {}) {\r\n var _a;\r\n if (!options.group) {\r\n if (!this.activeGroup) {\r\n return;\r\n }\r\n options.group = this.activeGroup;\r\n }\r\n if (options.includePanel && options.group) {\r\n if (options.group.activePanel !== options.group.panels[0]) {\r\n options.group.model.moveToPrevious({ suppressRoll: true });\r\n return;\r\n }\r\n }\r\n const location = getGridLocation(options.group.element);\r\n const next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;\r\n if (next) {\r\n this.doSetGroupActive(next);\r\n }\r\n }\r\n /**\r\n * Serialize the current state of the layout\r\n *\r\n * @returns A JSON respresentation of the layout\r\n */\r\n toJSON() {\r\n var _a;\r\n const data = this.gridview.serialize();\r\n const panels = this.panels.reduce((collection, panel) => {\r\n collection[panel.id] = panel.toJSON();\r\n return collection;\r\n }, {});\r\n const floats = this.floatingGroups.map((floatingGroup) => {\r\n return {\r\n data: floatingGroup.group.toJSON(),\r\n position: floatingGroup.overlay.toJSON(),\r\n };\r\n });\r\n const result = {\r\n grid: data,\r\n panels,\r\n activeGroup: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,\r\n };\r\n if (floats.length > 0) {\r\n result.floatingGroups = floats;\r\n }\r\n return result;\r\n }\r\n fromJSON(data) {\r\n var _a;\r\n this.clear();\r\n if (typeof data !== 'object' || data === null) {\r\n throw new Error('serialized layout must be a non-null object');\r\n }\r\n const { grid, panels, activeGroup } = data;\r\n if (grid.root.type !== 'branch' || !Array.isArray(grid.root.data)) {\r\n throw new Error('root must be of type branch');\r\n }\r\n try {\r\n // take note of the existing dimensions\r\n const width = this.width;\r\n const height = this.height;\r\n const createGroupFromSerializedState = (data) => {\r\n const { id, locked, hideHeader, views, activeView } = data;\r\n if (typeof id !== 'string') {\r\n throw new Error('group id must be of type string');\r\n }\r\n const group = this.createGroup({\r\n id,\r\n locked: !!locked,\r\n hideHeader: !!hideHeader,\r\n });\r\n const createdPanels = [];\r\n for (const child of views) {\r\n /**\r\n * Run the deserializer step seperately since this may fail to due corrupted external state.\r\n * In running this section first we avoid firing lots of 'add' events in the event of a failure\r\n * due to a corruption of input data.\r\n */\r\n const panel = this._deserializer.fromJSON(panels[child], group);\r\n createdPanels.push(panel);\r\n }\r\n this._onDidAddGroup.fire(group);\r\n for (let i = 0; i < views.length; i++) {\r\n const panel = createdPanels[i];\r\n const isActive = typeof activeView === 'string' &&\r\n activeView === panel.id;\r\n group.model.openPanel(panel, {\r\n skipSetPanelActive: !isActive,\r\n skipSetGroupActive: true,\r\n });\r\n }\r\n if (!group.activePanel && group.panels.length > 0) {\r\n group.model.openPanel(group.panels[group.panels.length - 1], {\r\n skipSetGroupActive: true,\r\n });\r\n }\r\n return group;\r\n };\r\n this.gridview.deserialize(grid, {\r\n fromJSON: (node) => {\r\n return createGroupFromSerializedState(node.data);\r\n },\r\n });\r\n this.layout(width, height, true);\r\n const serializedFloatingGroups = (_a = data.floatingGroups) !== null && _a !== void 0 ? _a : [];\r\n for (const serializedFloatingGroup of serializedFloatingGroups) {\r\n const { data, position } = serializedFloatingGroup;\r\n const group = createGroupFromSerializedState(data);\r\n this.addFloatingGroup(group, {\r\n x: position.left,\r\n y: position.top,\r\n height: position.height,\r\n width: position.width,\r\n }, { skipRemoveGroup: true, inDragMode: false });\r\n }\r\n for (const floatingGroup of this.floatingGroups) {\r\n floatingGroup.overlay.setBounds();\r\n }\r\n if (typeof activeGroup === 'string') {\r\n const panel = this.getPanel(activeGroup);\r\n if (panel) {\r\n this.doSetGroupActive(panel);\r\n }\r\n }\r\n }\r\n catch (err) {\r\n /**\r\n * Takes all the successfully created groups and remove all of their panels.\r\n */\r\n for (const group of this.groups) {\r\n for (const panel of group.panels) {\r\n this.removePanel(panel, {\r\n removeEmptyGroup: false,\r\n skipDispose: false,\r\n });\r\n }\r\n }\r\n /**\r\n * To remove a group we cannot call this.removeGroup(...) since this makes assumptions about\r\n * the underlying HTMLElement existing in the Gridview.\r\n */\r\n for (const group of this.groups) {\r\n group.dispose();\r\n this._groups.delete(group.id);\r\n this._onDidRemoveGroup.fire(group);\r\n }\r\n // iterate over a reassigned array since original array will be modified\r\n for (const floatingGroup of [...this.floatingGroups]) {\r\n floatingGroup.dispose();\r\n }\r\n // fires clean-up events and clears the underlying HTML gridview.\r\n this.clear();\r\n /**\r\n * even though we have cleaned-up we still want to inform the caller of their error\r\n * and we'll do this through re-throwing the original error since afterall you would\r\n * expect trying to load a corrupted layout to result in an error and not silently fail...\r\n */\r\n throw err;\r\n }\r\n this._onDidLayoutFromJSON.fire();\r\n }\r\n clear() {\r\n const groups = Array.from(this._groups.values()).map((_) => _.value);\r\n const hasActiveGroup = !!this.activeGroup;\r\n const hasActivePanel = !!this.activePanel;\r\n for (const group of groups) {\r\n // remove the group will automatically remove the panels\r\n this.removeGroup(group, { skipActive: true });\r\n }\r\n if (hasActiveGroup) {\r\n this.doSetGroupActive(undefined);\r\n }\r\n if (hasActivePanel) {\r\n this._onDidActivePanelChange.fire(undefined);\r\n }\r\n this.gridview.clear();\r\n }\r\n closeAllGroups() {\r\n for (const entry of this._groups.entries()) {\r\n const [_, group] = entry;\r\n group.value.model.closeAllPanels();\r\n }\r\n }\r\n addPanel(options) {\r\n var _a, _b;\r\n if (this.panels.find((_) => _.id === options.id)) {\r\n throw new Error(`panel with id ${options.id} already exists`);\r\n }\r\n let referenceGroup;\r\n if (options.position && options.floating) {\r\n throw new Error('you can only provide one of: position, floating as arguments to .addPanel(...)');\r\n }\r\n if (options.position) {\r\n if (isPanelOptionsWithPanel(options.position)) {\r\n const referencePanel = typeof options.position.referencePanel === 'string'\r\n ? this.getGroupPanel(options.position.referencePanel)\r\n : options.position.referencePanel;\r\n if (!referencePanel) {\r\n throw new Error(`referencePanel ${options.position.referencePanel} does not exist`);\r\n }\r\n referenceGroup = this.findGroup(referencePanel);\r\n }\r\n else if (isPanelOptionsWithGroup(options.position)) {\r\n referenceGroup =\r\n typeof options.position.referenceGroup === 'string'\r\n ? (_a = this._groups.get(options.position.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value\r\n : options.position.referenceGroup;\r\n if (!referenceGroup) {\r\n throw new Error(`referencePanel ${options.position.referenceGroup} does not exist`);\r\n }\r\n }\r\n else {\r\n const group = this.orthogonalize(directionToPosition(options.position.direction));\r\n const panel = this.createPanel(options, group);\r\n group.model.openPanel(panel);\r\n return panel;\r\n }\r\n }\r\n else {\r\n referenceGroup = this.activeGroup;\r\n }\r\n let panel;\r\n if (referenceGroup) {\r\n const target = toTarget(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');\r\n if (options.floating) {\r\n const group = this.createGroup();\r\n panel = this.createPanel(options, group);\r\n group.model.openPanel(panel);\r\n const o = typeof options.floating === 'object' &&\r\n options.floating !== null\r\n ? options.floating\r\n : {};\r\n this.addFloatingGroup(group, o, {\r\n inDragMode: false,\r\n skipRemoveGroup: true,\r\n });\r\n }\r\n else if (referenceGroup.api.isFloating || target === 'center') {\r\n panel = this.createPanel(options, referenceGroup);\r\n referenceGroup.model.openPanel(panel);\r\n }\r\n else {\r\n const location = getGridLocation(referenceGroup.element);\r\n const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\r\n const group = this.createGroupAtLocation(relativeLocation);\r\n panel = this.createPanel(options, group);\r\n group.model.openPanel(panel);\r\n }\r\n }\r\n else if (options.floating) {\r\n const group = this.createGroup();\r\n panel = this.createPanel(options, group);\r\n group.model.openPanel(panel);\r\n const o = typeof options.floating === 'object' &&\r\n options.floating !== null\r\n ? options.floating\r\n : {};\r\n this.addFloatingGroup(group, o, {\r\n inDragMode: false,\r\n skipRemoveGroup: true,\r\n });\r\n }\r\n else {\r\n const group = this.createGroupAtLocation();\r\n panel = this.createPanel(options, group);\r\n group.model.openPanel(panel);\r\n }\r\n return panel;\r\n }\r\n removePanel(panel, options = {\r\n removeEmptyGroup: true,\r\n skipDispose: false,\r\n }) {\r\n const group = panel.group;\r\n if (!group) {\r\n throw new Error(`cannot remove panel ${panel.id}. it's missing a group.`);\r\n }\r\n group.model.removePanel(panel);\r\n if (!options.skipDispose) {\r\n panel.dispose();\r\n }\r\n if (group.size === 0 && options.removeEmptyGroup) {\r\n this.removeGroup(group);\r\n }\r\n }\r\n createWatermarkComponent() {\r\n var _a;\r\n return createComponent('watermark-id', 'watermark-name', this.options.watermarkComponent\r\n ? { 'watermark-name': this.options.watermarkComponent }\r\n : {}, this.options.watermarkFrameworkComponent\r\n ? { 'watermark-name': this.options.watermarkFrameworkComponent }\r\n : {}, (_a = this.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.watermark);\r\n }\r\n updateWatermark() {\r\n var _a, _b;\r\n if (this.groups.filter((x) => !x.api.isFloating).length === 0) {\r\n if (!this.watermark) {\r\n this.watermark = this.createWatermarkComponent();\r\n this.watermark.init({\r\n containerApi: new DockviewApi(this),\r\n });\r\n const watermarkContainer = document.createElement('div');\r\n watermarkContainer.className = 'dv-watermark-container';\r\n watermarkContainer.appendChild(this.watermark.element);\r\n this.gridview.element.appendChild(watermarkContainer);\r\n }\r\n }\r\n else if (this.watermark) {\r\n this.watermark.element.parentElement.remove();\r\n (_b = (_a = this.watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n this.watermark = null;\r\n }\r\n }\r\n addGroup(options) {\r\n var _a;\r\n const group = this.createGroup();\r\n if (options) {\r\n let referenceGroup;\r\n if (isGroupOptionsWithPanel(options)) {\r\n const referencePanel = typeof options.referencePanel === 'string'\r\n ? this.panels.find((panel) => panel.id === options.referencePanel)\r\n : options.referencePanel;\r\n if (!referencePanel) {\r\n throw new Error(`reference panel ${options.referencePanel} does not exist`);\r\n }\r\n referenceGroup = this.findGroup(referencePanel);\r\n if (!referenceGroup) {\r\n throw new Error(`reference group for reference panel ${options.referencePanel} does not exist`);\r\n }\r\n }\r\n else if (isGroupOptionsWithGroup(options)) {\r\n referenceGroup =\r\n typeof options.referenceGroup === 'string'\r\n ? (_a = this._groups.get(options.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value\r\n : options.referenceGroup;\r\n if (!referenceGroup) {\r\n throw new Error(`reference group ${options.referenceGroup} does not exist`);\r\n }\r\n }\r\n else {\r\n const group = this.orthogonalize(directionToPosition(options.direction));\r\n return group;\r\n }\r\n const target = toTarget(options.direction || 'within');\r\n const location = getGridLocation(referenceGroup.element);\r\n const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\r\n this.doAddGroup(group, relativeLocation);\r\n return group;\r\n }\r\n else {\r\n this.doAddGroup(group);\r\n return group;\r\n }\r\n }\r\n removeGroup(group, options) {\r\n var _a;\r\n const panels = [...group.panels]; // reassign since group panels will mutate\r\n for (const panel of panels) {\r\n this.removePanel(panel, {\r\n removeEmptyGroup: false,\r\n skipDispose: (_a = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _a !== void 0 ? _a : false,\r\n });\r\n }\r\n this.doRemoveGroup(group, options);\r\n }\r\n doRemoveGroup(group, options) {\r\n const floatingGroup = this.floatingGroups.find((_) => _.group === group);\r\n if (floatingGroup) {\r\n if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {\r\n floatingGroup.group.dispose();\r\n this._groups.delete(group.id);\r\n // TODO: fire group removed event?\r\n }\r\n floatingGroup.dispose();\r\n return floatingGroup.group;\r\n }\r\n return super.doRemoveGroup(group, options);\r\n }\r\n moveGroupOrPanel(destinationGroup, sourceGroupId, sourceItemId, destinationTarget, destinationIndex) {\r\n var _a;\r\n const sourceGroup = sourceGroupId\r\n ? (_a = this._groups.get(sourceGroupId)) === null || _a === void 0 ? void 0 : _a.value\r\n : undefined;\r\n if (sourceItemId === undefined) {\r\n if (sourceGroup) {\r\n this.moveGroup(sourceGroup, destinationGroup, destinationTarget);\r\n }\r\n return;\r\n }\r\n if (!destinationTarget || destinationTarget === 'center') {\r\n const groupItem = (sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(sourceItemId)) ||\r\n this.panels.find((panel) => panel.id === sourceItemId);\r\n if (!groupItem) {\r\n throw new Error(`No panel with id ${sourceItemId}`);\r\n }\r\n if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {\r\n this.doRemoveGroup(sourceGroup);\r\n }\r\n destinationGroup.model.openPanel(groupItem, {\r\n index: destinationIndex,\r\n });\r\n }\r\n else {\r\n const referenceLocation = getGridLocation(destinationGroup.element);\r\n const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);\r\n if (sourceGroup && sourceGroup.size < 2) {\r\n const [targetParentLocation, to] = tail(targetLocation);\r\n const isFloating = this.floatingGroups.find((x) => x.group === sourceGroup);\r\n if (!isFloating) {\r\n const sourceLocation = getGridLocation(sourceGroup.element);\r\n const [sourceParentLocation, from] = tail(sourceLocation);\r\n if (sequenceEquals(sourceParentLocation, targetParentLocation)) {\r\n // special case when 'swapping' two views within same grid location\r\n // if a group has one tab - we are essentially moving the 'group'\r\n // which is equivalent to swapping two views in this case\r\n this.gridview.moveView(sourceParentLocation, from, to);\r\n }\r\n }\r\n // source group will become empty so delete the group\r\n const targetGroup = this.doRemoveGroup(sourceGroup, {\r\n skipActive: true,\r\n skipDispose: true,\r\n });\r\n // after deleting the group we need to re-evaulate the ref location\r\n const updatedReferenceLocation = getGridLocation(destinationGroup.element);\r\n const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, destinationTarget);\r\n this.doAddGroup(targetGroup, location);\r\n }\r\n else {\r\n const groupItem = (sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(sourceItemId)) ||\r\n this.panels.find((panel) => panel.id === sourceItemId);\r\n if (!groupItem) {\r\n throw new Error(`No panel with id ${sourceItemId}`);\r\n }\r\n const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);\r\n const group = this.createGroupAtLocation(dropLocation);\r\n group.model.openPanel(groupItem);\r\n }\r\n }\r\n }\r\n moveGroup(sourceGroup, referenceGroup, target) {\r\n if (sourceGroup) {\r\n if (!target || target === 'center') {\r\n const activePanel = sourceGroup.activePanel;\r\n const panels = [...sourceGroup.panels].map((p) => sourceGroup.model.removePanel(p.id));\r\n if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {\r\n this.doRemoveGroup(sourceGroup);\r\n }\r\n for (const panel of panels) {\r\n referenceGroup.model.openPanel(panel, {\r\n skipSetPanelActive: panel !== activePanel,\r\n });\r\n }\r\n }\r\n else {\r\n const floatingGroup = this.floatingGroups.find((x) => x.group === sourceGroup);\r\n if (floatingGroup) {\r\n floatingGroup.dispose();\r\n }\r\n else {\r\n this.gridview.removeView(getGridLocation(sourceGroup.element));\r\n }\r\n const referenceLocation = getGridLocation(referenceGroup.element);\r\n const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);\r\n this.gridview.addView(sourceGroup, Sizing.Distribute, dropLocation);\r\n }\r\n }\r\n }\r\n doSetGroupActive(group, skipFocus) {\r\n var _a, _b;\r\n const isGroupAlreadyFocused = this._activeGroup === group;\r\n super.doSetGroupActive(group, skipFocus);\r\n if (!isGroupAlreadyFocused && ((_a = this._activeGroup) === null || _a === void 0 ? void 0 : _a.activePanel)) {\r\n this._onDidActivePanelChange.fire((_b = this._activeGroup) === null || _b === void 0 ? void 0 : _b.activePanel);\r\n }\r\n }\r\n createGroup(options) {\r\n if (!options) {\r\n options = {};\r\n }\r\n let id = options === null || options === void 0 ? void 0 : options.id;\r\n if (id && this._groups.has(options.id)) {\r\n console.warn(`Duplicate group id ${options === null || options === void 0 ? void 0 : options.id}. reassigning group id to avoid errors`);\r\n id = undefined;\r\n }\r\n if (!id) {\r\n id = this.nextGroupId.next();\r\n while (this._groups.has(id)) {\r\n id = this.nextGroupId.next();\r\n }\r\n }\r\n const view = new DockviewGroupPanel(this, id, options);\r\n view.init({ params: {}, accessor: null }); // required to initialized .part and allow for correct disposal of group\r\n if (!this._groups.has(view.id)) {\r\n const disposable = new CompositeDisposable(view.model.onTabDragStart((event) => {\r\n this._onWillDragPanel.fire(event);\r\n }), view.model.onGroupDragStart((event) => {\r\n this._onWillDragGroup.fire(event);\r\n }), view.model.onMove((event) => {\r\n const { groupId, itemId, target, index } = event;\r\n this.moveGroupOrPanel(view, groupId, itemId, target, index);\r\n }), view.model.onDidDrop((event) => {\r\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: view }));\r\n }), view.model.onDidAddPanel((event) => {\r\n this._onDidAddPanel.fire(event.panel);\r\n }), view.model.onDidRemovePanel((event) => {\r\n this._onDidRemovePanel.fire(event.panel);\r\n }), view.model.onDidActivePanelChange((event) => {\r\n this._onDidActivePanelChange.fire(event.panel);\r\n }));\r\n this._groups.set(view.id, { value: view, disposable });\r\n }\r\n // TODO: must be called after the above listeners have been setup,\r\n // not an ideal pattern\r\n view.initialize();\r\n return view;\r\n }\r\n createPanel(options, group) {\r\n const contentComponent = options.component;\r\n const tabComponent = options.tabComponent || this.options.defaultTabComponent;\r\n const view = new DockviewPanelModel(this, options.id, contentComponent, tabComponent);\r\n const panel = new DockviewPanel(options.id, this, this._api, group, view);\r\n panel.init({\r\n title: options.title || options.id,\r\n params: (options === null || options === void 0 ? void 0 : options.params) || {},\r\n });\r\n return panel;\r\n }\r\n createGroupAtLocation(location = [0]) {\r\n const group = this.createGroup();\r\n this.doAddGroup(group, location);\r\n return group;\r\n }\r\n findGroup(panel) {\r\n var _a;\r\n return (_a = Array.from(this._groups.values()).find((group) => group.value.model.containsPanel(panel))) === null || _a === void 0 ? void 0 : _a.value;\r\n }\r\n}\r\n//# sourceMappingURL=dockviewComponent.js.map","import { getRelativeLocation, getGridLocation, } from './gridview';\r\nimport { tail, sequenceEquals } from '../array';\r\nimport { CompositeDisposable } from '../lifecycle';\r\nimport { BaseGrid, toTarget, } from './baseComponentGridview';\r\nimport { createComponent } from '../panel/componentFactory';\r\nimport { Emitter } from '../events';\r\nexport class GridviewComponent extends BaseGrid {\r\n get orientation() {\r\n return this.gridview.orientation;\r\n }\r\n set orientation(value) {\r\n this.gridview.orientation = value;\r\n }\r\n get options() {\r\n return this._options;\r\n }\r\n get deserializer() {\r\n return this._deserializer;\r\n }\r\n set deserializer(value) {\r\n this._deserializer = value;\r\n }\r\n constructor(options) {\r\n super({\r\n parentElement: options.parentElement,\r\n proportionalLayout: options.proportionalLayout,\r\n orientation: options.orientation,\r\n styles: options.styles,\r\n });\r\n this._onDidLayoutfromJSON = new Emitter();\r\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\r\n this._options = options;\r\n if (!this.options.components) {\r\n this.options.components = {};\r\n }\r\n if (!this.options.frameworkComponents) {\r\n this.options.frameworkComponents = {};\r\n }\r\n }\r\n updateOptions(options) {\r\n const hasOrientationChanged = typeof options.orientation === 'string' &&\r\n this.gridview.orientation !== options.orientation;\r\n this._options = Object.assign(Object.assign({}, this.options), options);\r\n if (hasOrientationChanged) {\r\n this.gridview.orientation = options.orientation;\r\n }\r\n this.layout(this.gridview.width, this.gridview.height, true);\r\n }\r\n removePanel(panel) {\r\n this.removeGroup(panel);\r\n }\r\n /**\r\n * Serialize the current state of the layout\r\n *\r\n * @returns A JSON respresentation of the layout\r\n */\r\n toJSON() {\r\n var _a;\r\n const data = this.gridview.serialize();\r\n return {\r\n grid: data,\r\n activePanel: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,\r\n };\r\n }\r\n setVisible(panel, visible) {\r\n this.gridview.setViewVisible(getGridLocation(panel.element), visible);\r\n }\r\n setActive(panel) {\r\n this._groups.forEach((value, _key) => {\r\n value.value.setActive(panel === value.value);\r\n });\r\n }\r\n focus() {\r\n var _a;\r\n (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();\r\n }\r\n fromJSON(serializedGridview) {\r\n this.clear();\r\n const { grid, activePanel } = serializedGridview;\r\n try {\r\n const queue = [];\r\n // take note of the existing dimensions\r\n const width = this.width;\r\n const height = this.height;\r\n this.gridview.deserialize(grid, {\r\n fromJSON: (node) => {\r\n const { data } = node;\r\n const view = createComponent(data.id, data.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkComponentFactory\r\n ? {\r\n createComponent: this.options.frameworkComponentFactory\r\n .createComponent,\r\n }\r\n : undefined);\r\n queue.push(() => view.init({\r\n params: data.params,\r\n minimumWidth: data.minimumWidth,\r\n maximumWidth: data.maximumWidth,\r\n minimumHeight: data.minimumHeight,\r\n maximumHeight: data.maximumHeight,\r\n priority: data.priority,\r\n snap: !!data.snap,\r\n accessor: this,\r\n isVisible: node.visible,\r\n }));\r\n this._onDidAddGroup.fire(view);\r\n this.registerPanel(view);\r\n return view;\r\n },\r\n });\r\n this.layout(width, height, true);\r\n queue.forEach((f) => f());\r\n if (typeof activePanel === 'string') {\r\n const panel = this.getPanel(activePanel);\r\n if (panel) {\r\n this.doSetGroupActive(panel);\r\n }\r\n }\r\n }\r\n catch (err) {\r\n /**\r\n * To remove a group we cannot call this.removeGroup(...) since this makes assumptions about\r\n * the underlying HTMLElement existing in the Gridview.\r\n */\r\n for (const group of this.groups) {\r\n group.dispose();\r\n this._groups.delete(group.id);\r\n this._onDidRemoveGroup.fire(group);\r\n }\r\n // fires clean-up events and clears the underlying HTML gridview.\r\n this.clear();\r\n /**\r\n * even though we have cleaned-up we still want to inform the caller of their error\r\n * and we'll do this through re-throwing the original error since afterall you would\r\n * expect trying to load a corrupted layout to result in an error and not silently fail...\r\n */\r\n throw err;\r\n }\r\n this._onDidLayoutfromJSON.fire();\r\n }\r\n clear() {\r\n const hasActiveGroup = this.activeGroup;\r\n const groups = Array.from(this._groups.values()); // reassign since group panels will mutate\r\n for (const group of groups) {\r\n group.disposable.dispose();\r\n this.doRemoveGroup(group.value, { skipActive: true });\r\n }\r\n if (hasActiveGroup) {\r\n this.doSetGroupActive(undefined);\r\n }\r\n this.gridview.clear();\r\n }\r\n movePanel(panel, options) {\r\n var _a;\r\n let relativeLocation;\r\n const removedPanel = this.gridview.remove(panel);\r\n const referenceGroup = (_a = this._groups.get(options.reference)) === null || _a === void 0 ? void 0 : _a.value;\r\n if (!referenceGroup) {\r\n throw new Error(`reference group ${options.reference} does not exist`);\r\n }\r\n const target = toTarget(options.direction);\r\n if (target === 'center') {\r\n throw new Error(`${target} not supported as an option`);\r\n }\r\n else {\r\n const location = getGridLocation(referenceGroup.element);\r\n relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\r\n }\r\n this.doAddGroup(removedPanel, relativeLocation, options.size);\r\n }\r\n addPanel(options) {\r\n var _a, _b;\r\n let relativeLocation = options.location || [0];\r\n if ((_a = options.position) === null || _a === void 0 ? void 0 : _a.referencePanel) {\r\n const referenceGroup = (_b = this._groups.get(options.position.referencePanel)) === null || _b === void 0 ? void 0 : _b.value;\r\n if (!referenceGroup) {\r\n throw new Error(`reference group ${options.position.referencePanel} does not exist`);\r\n }\r\n const target = toTarget(options.position.direction);\r\n if (target === 'center') {\r\n throw new Error(`${target} not supported as an option`);\r\n }\r\n else {\r\n const location = getGridLocation(referenceGroup.element);\r\n relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\r\n }\r\n }\r\n const view = createComponent(options.id, options.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkComponentFactory\r\n ? {\r\n createComponent: this.options.frameworkComponentFactory\r\n .createComponent,\r\n }\r\n : undefined);\r\n view.init({\r\n params: options.params || {},\r\n minimumWidth: options.minimumWidth,\r\n maximumWidth: options.maximumWidth,\r\n minimumHeight: options.minimumHeight,\r\n maximumHeight: options.maximumHeight,\r\n priority: options.priority,\r\n snap: !!options.snap,\r\n accessor: this,\r\n isVisible: true,\r\n });\r\n this.registerPanel(view);\r\n this.doAddGroup(view, relativeLocation, options.size);\r\n return view;\r\n }\r\n registerPanel(panel) {\r\n const disposable = new CompositeDisposable(panel.api.onDidFocusChange((event) => {\r\n if (!event.isFocused) {\r\n return;\r\n }\r\n this._groups.forEach((groupItem) => {\r\n const group = groupItem.value;\r\n if (group !== panel) {\r\n group.setActive(false);\r\n }\r\n else {\r\n group.setActive(true);\r\n }\r\n });\r\n }));\r\n this._groups.set(panel.id, {\r\n value: panel,\r\n disposable,\r\n });\r\n }\r\n moveGroup(referenceGroup, groupId, target) {\r\n const sourceGroup = this.getPanel(groupId);\r\n if (!sourceGroup) {\r\n throw new Error('invalid operation');\r\n }\r\n const referenceLocation = getGridLocation(referenceGroup.element);\r\n const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);\r\n const [targetParentLocation, to] = tail(targetLocation);\r\n const sourceLocation = getGridLocation(sourceGroup.element);\r\n const [sourceParentLocation, from] = tail(sourceLocation);\r\n if (sequenceEquals(sourceParentLocation, targetParentLocation)) {\r\n // special case when 'swapping' two views within same grid location\r\n // if a group has one tab - we are essentially moving the 'group'\r\n // which is equivalent to swapping two views in this case\r\n this.gridview.moveView(sourceParentLocation, from, to);\r\n return;\r\n }\r\n // source group will become empty so delete the group\r\n const targetGroup = this.doRemoveGroup(sourceGroup, {\r\n skipActive: true,\r\n skipDispose: true,\r\n });\r\n // after deleting the group we need to re-evaulate the ref location\r\n const updatedReferenceLocation = getGridLocation(referenceGroup.element);\r\n const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, target);\r\n this.doAddGroup(targetGroup, location);\r\n }\r\n removeGroup(group) {\r\n super.removeGroup(group);\r\n }\r\n dispose() {\r\n super.dispose();\r\n this._onDidLayoutfromJSON.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=gridviewComponent.js.map","import { CompositeDisposable, MutableDisposable, } from '../lifecycle';\r\nimport { Orientation, Sizing, Splitview, } from './splitview';\r\nimport { Emitter } from '../events';\r\nimport { createComponent } from '../panel/componentFactory';\r\nimport { Resizable } from '../resizable';\r\n/**\r\n * A high-level implementation of splitview that works using 'panels'\r\n */\r\nexport class SplitviewComponent extends Resizable {\r\n get panels() {\r\n return this.splitview.getViews();\r\n }\r\n get options() {\r\n return this._options;\r\n }\r\n get length() {\r\n return this._panels.size;\r\n }\r\n get orientation() {\r\n return this.splitview.orientation;\r\n }\r\n get splitview() {\r\n return this._splitview;\r\n }\r\n set splitview(value) {\r\n this._splitview = value;\r\n this._splitviewChangeDisposable.value = new CompositeDisposable(this._splitview.onDidSashEnd(() => {\r\n this._onDidLayoutChange.fire(undefined);\r\n }), this._splitview.onDidAddView((e) => this._onDidAddView.fire(e)), this._splitview.onDidRemoveView((e) => this._onDidRemoveView.fire(e)));\r\n }\r\n get minimumSize() {\r\n return this.splitview.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.splitview.maximumSize;\r\n }\r\n get height() {\r\n return this.splitview.orientation === Orientation.HORIZONTAL\r\n ? this.splitview.orthogonalSize\r\n : this.splitview.size;\r\n }\r\n get width() {\r\n return this.splitview.orientation === Orientation.HORIZONTAL\r\n ? this.splitview.size\r\n : this.splitview.orthogonalSize;\r\n }\r\n constructor(options) {\r\n super(options.parentElement);\r\n this._splitviewChangeDisposable = new MutableDisposable();\r\n this._panels = new Map();\r\n this._onDidLayoutfromJSON = new Emitter();\r\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\r\n this._onDidAddView = new Emitter();\r\n this.onDidAddView = this._onDidAddView.event;\r\n this._onDidRemoveView = new Emitter();\r\n this.onDidRemoveView = this._onDidRemoveView.event;\r\n this._onDidLayoutChange = new Emitter();\r\n this.onDidLayoutChange = this._onDidLayoutChange.event;\r\n this._options = options;\r\n if (!options.components) {\r\n options.components = {};\r\n }\r\n if (!options.frameworkComponents) {\r\n options.frameworkComponents = {};\r\n }\r\n this.splitview = new Splitview(this.element, options);\r\n this.addDisposables(this._onDidAddView, this._onDidLayoutfromJSON, this._onDidRemoveView, this._onDidLayoutChange);\r\n }\r\n updateOptions(options) {\r\n const hasOrientationChanged = typeof options.orientation === 'string' &&\r\n this.options.orientation !== options.orientation;\r\n this._options = Object.assign(Object.assign({}, this.options), options);\r\n if (hasOrientationChanged) {\r\n this.splitview.orientation = options.orientation;\r\n }\r\n this.splitview.layout(this.splitview.size, this.splitview.orthogonalSize);\r\n }\r\n focus() {\r\n var _a;\r\n (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();\r\n }\r\n movePanel(from, to) {\r\n this.splitview.moveView(from, to);\r\n }\r\n setVisible(panel, visible) {\r\n const index = this.panels.indexOf(panel);\r\n this.splitview.setViewVisible(index, visible);\r\n }\r\n setActive(view, skipFocus) {\r\n this._activePanel = view;\r\n this.panels\r\n .filter((v) => v !== view)\r\n .forEach((v) => {\r\n v.api._onDidActiveChange.fire({ isActive: false });\r\n if (!skipFocus) {\r\n v.focus();\r\n }\r\n });\r\n view.api._onDidActiveChange.fire({ isActive: true });\r\n if (!skipFocus) {\r\n view.focus();\r\n }\r\n }\r\n removePanel(panel, sizing) {\r\n const item = this._panels.get(panel.id);\r\n if (!item) {\r\n throw new Error(`unknown splitview panel ${panel.id}`);\r\n }\r\n item.dispose();\r\n this._panels.delete(panel.id);\r\n const index = this.panels.findIndex((_) => _ === panel);\r\n const removedView = this.splitview.removeView(index, sizing);\r\n removedView.dispose();\r\n const panels = this.panels;\r\n if (panels.length > 0) {\r\n this.setActive(panels[panels.length - 1]);\r\n }\r\n }\r\n getPanel(id) {\r\n return this.panels.find((view) => view.id === id);\r\n }\r\n addPanel(options) {\r\n if (this._panels.has(options.id)) {\r\n throw new Error(`panel ${options.id} already exists`);\r\n }\r\n const view = createComponent(options.id, options.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkWrapper\r\n ? {\r\n createComponent: this.options.frameworkWrapper.createComponent,\r\n }\r\n : undefined);\r\n view.orientation = this.splitview.orientation;\r\n view.init({\r\n params: options.params || {},\r\n minimumSize: options.minimumSize,\r\n maximumSize: options.maximumSize,\r\n snap: options.snap,\r\n priority: options.priority,\r\n accessor: this,\r\n });\r\n const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;\r\n const index = typeof options.index === 'number' ? options.index : undefined;\r\n this.splitview.addView(view, size, index);\r\n this.doAddView(view);\r\n this.setActive(view);\r\n return view;\r\n }\r\n layout(width, height) {\r\n const [size, orthogonalSize] = this.splitview.orientation === Orientation.HORIZONTAL\r\n ? [width, height]\r\n : [height, width];\r\n this.splitview.layout(size, orthogonalSize);\r\n }\r\n doAddView(view) {\r\n const disposable = view.api.onDidFocusChange((event) => {\r\n if (!event.isFocused) {\r\n return;\r\n }\r\n this.setActive(view, true);\r\n });\r\n this._panels.set(view.id, disposable);\r\n }\r\n toJSON() {\r\n var _a;\r\n const views = this.splitview\r\n .getViews()\r\n .map((view, i) => {\r\n const size = this.splitview.getViewSize(i);\r\n return {\r\n size,\r\n data: view.toJSON(),\r\n snap: !!view.snap,\r\n priority: view.priority,\r\n };\r\n });\r\n return {\r\n views,\r\n activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,\r\n size: this.splitview.size,\r\n orientation: this.splitview.orientation,\r\n };\r\n }\r\n fromJSON(serializedSplitview) {\r\n this.clear();\r\n const { views, orientation, size, activeView } = serializedSplitview;\r\n const queue = [];\r\n // take note of the existing dimensions\r\n const width = this.width;\r\n const height = this.height;\r\n this.splitview = new Splitview(this.element, {\r\n orientation,\r\n proportionalLayout: this.options.proportionalLayout,\r\n descriptor: {\r\n size,\r\n views: views.map((view) => {\r\n const data = view.data;\r\n if (this._panels.has(data.id)) {\r\n throw new Error(`panel ${data.id} already exists`);\r\n }\r\n const panel = createComponent(data.id, data.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkWrapper\r\n ? {\r\n createComponent: this.options.frameworkWrapper\r\n .createComponent,\r\n }\r\n : undefined);\r\n queue.push(() => {\r\n panel.init({\r\n params: data.params || {},\r\n minimumSize: data.minimumSize,\r\n maximumSize: data.maximumSize,\r\n snap: view.snap,\r\n priority: view.priority,\r\n accessor: this,\r\n });\r\n });\r\n panel.orientation = orientation;\r\n this.doAddView(panel);\r\n setTimeout(() => {\r\n // the original onDidAddView events are missed since they are fired before we can subcribe to them\r\n this._onDidAddView.fire(panel);\r\n }, 0);\r\n return { size: view.size, view: panel };\r\n }),\r\n },\r\n });\r\n this.layout(width, height);\r\n queue.forEach((f) => f());\r\n if (typeof activeView === 'string') {\r\n const panel = this.getPanel(activeView);\r\n if (panel) {\r\n this.setActive(panel);\r\n }\r\n }\r\n this._onDidLayoutfromJSON.fire();\r\n }\r\n clear() {\r\n for (const disposable of this._panels.values()) {\r\n disposable.dispose();\r\n }\r\n this._panels.clear();\r\n while (this.splitview.length > 0) {\r\n const view = this.splitview.removeView(0, Sizing.Distribute, true);\r\n view.dispose();\r\n }\r\n }\r\n dispose() {\r\n for (const disposable of this._panels.values()) {\r\n disposable.dispose();\r\n }\r\n this._panels.clear();\r\n const views = this.splitview.getViews();\r\n this._splitviewChangeDisposable.dispose();\r\n this.splitview.dispose();\r\n for (const view of views) {\r\n view.dispose();\r\n }\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=splitviewComponent.js.map","import { addDisposableListener } from '../events';\r\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\r\nimport { toggleClass } from '../dom';\r\nimport { createChevronRightButton, createExpandMoreButton } from '../svg';\r\nexport class DefaultHeader extends CompositeDisposable {\r\n get element() {\r\n return this._element;\r\n }\r\n constructor() {\r\n super();\r\n this._expandedIcon = createExpandMoreButton();\r\n this._collapsedIcon = createChevronRightButton();\r\n this.disposable = new MutableDisposable();\r\n this.apiRef = { api: null };\r\n this._element = document.createElement('div');\r\n this.element.className = 'default-header';\r\n this._content = document.createElement('span');\r\n this._expander = document.createElement('div');\r\n this._expander.className = 'dockview-pane-header-icon';\r\n this.element.appendChild(this._expander);\r\n this.element.appendChild(this._content);\r\n this.addDisposables(addDisposableListener(this._element, 'click', () => {\r\n var _a;\r\n (_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.setExpanded(!this.apiRef.api.isExpanded);\r\n }));\r\n }\r\n init(params) {\r\n this.apiRef.api = params.api;\r\n this._content.textContent = params.title;\r\n this.updateIcon();\r\n this.disposable.value = params.api.onDidExpansionChange(() => {\r\n this.updateIcon();\r\n });\r\n }\r\n updateIcon() {\r\n var _a;\r\n const isExpanded = !!((_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.isExpanded);\r\n toggleClass(this._expander, 'collapsed', !isExpanded);\r\n if (isExpanded) {\r\n if (this._expander.contains(this._collapsedIcon)) {\r\n this._collapsedIcon.remove();\r\n }\r\n if (!this._expander.contains(this._expandedIcon)) {\r\n this._expander.appendChild(this._expandedIcon);\r\n }\r\n }\r\n else {\r\n if (this._expander.contains(this._expandedIcon)) {\r\n this._expandedIcon.remove();\r\n }\r\n if (!this._expander.contains(this._collapsedIcon)) {\r\n this._expander.appendChild(this._collapsedIcon);\r\n }\r\n }\r\n }\r\n update(_params) {\r\n //\r\n }\r\n dispose() {\r\n this.disposable.dispose();\r\n super.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=defaultPaneviewHeader.js.map","import { PaneviewApi } from '../api/component.api';\r\nimport { createComponent } from '../panel/componentFactory';\r\nimport { Emitter } from '../events';\r\nimport { CompositeDisposable, MutableDisposable, } from '../lifecycle';\r\nimport { Orientation, Sizing } from '../splitview/splitview';\r\nimport { Paneview } from './paneview';\r\nimport { DraggablePaneviewPanel, } from './draggablePaneviewPanel';\r\nimport { DefaultHeader } from './defaultPaneviewHeader';\r\nimport { sequentialNumberGenerator } from '../math';\r\nimport { Resizable } from '../resizable';\r\nconst nextLayoutId = sequentialNumberGenerator();\r\nexport class PaneFramework extends DraggablePaneviewPanel {\r\n constructor(options) {\r\n super(options.accessor, options.id, options.component, options.headerComponent, options.orientation, options.isExpanded, options.disableDnd);\r\n this.options = options;\r\n }\r\n getBodyComponent() {\r\n return this.options.body;\r\n }\r\n getHeaderComponent() {\r\n return this.options.header;\r\n }\r\n}\r\nexport class PaneviewComponent extends Resizable {\r\n get id() {\r\n return this._id;\r\n }\r\n get panels() {\r\n return this.paneview.getPanes();\r\n }\r\n set paneview(value) {\r\n this._paneview = value;\r\n this._disposable.value = new CompositeDisposable(this._paneview.onDidChange(() => {\r\n this._onDidLayoutChange.fire(undefined);\r\n }), this._paneview.onDidAddView((e) => this._onDidAddView.fire(e)), this._paneview.onDidRemoveView((e) => this._onDidRemoveView.fire(e)));\r\n }\r\n get paneview() {\r\n return this._paneview;\r\n }\r\n get minimumSize() {\r\n return this.paneview.minimumSize;\r\n }\r\n get maximumSize() {\r\n return this.paneview.maximumSize;\r\n }\r\n get height() {\r\n return this.paneview.orientation === Orientation.HORIZONTAL\r\n ? this.paneview.orthogonalSize\r\n : this.paneview.size;\r\n }\r\n get width() {\r\n return this.paneview.orientation === Orientation.HORIZONTAL\r\n ? this.paneview.size\r\n : this.paneview.orthogonalSize;\r\n }\r\n get options() {\r\n return this._options;\r\n }\r\n constructor(options) {\r\n super(options.parentElement);\r\n this._id = nextLayoutId.next();\r\n this._disposable = new MutableDisposable();\r\n this._viewDisposables = new Map();\r\n this._onDidLayoutfromJSON = new Emitter();\r\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\r\n this._onDidLayoutChange = new Emitter();\r\n this.onDidLayoutChange = this._onDidLayoutChange.event;\r\n this._onDidDrop = new Emitter();\r\n this.onDidDrop = this._onDidDrop.event;\r\n this._onDidAddView = new Emitter();\r\n this.onDidAddView = this._onDidAddView.event;\r\n this._onDidRemoveView = new Emitter();\r\n this.onDidRemoveView = this._onDidRemoveView.event;\r\n this.addDisposables(this._onDidLayoutChange, this._onDidLayoutfromJSON, this._onDidDrop, this._onDidAddView, this._onDidRemoveView);\r\n this._options = options;\r\n if (!options.components) {\r\n options.components = {};\r\n }\r\n if (!options.frameworkComponents) {\r\n options.frameworkComponents = {};\r\n }\r\n this.paneview = new Paneview(this.element, {\r\n // only allow paneview in the vertical orientation for now\r\n orientation: Orientation.VERTICAL,\r\n });\r\n this.addDisposables(this._disposable);\r\n }\r\n focus() {\r\n //noop\r\n }\r\n updateOptions(options) {\r\n this._options = Object.assign(Object.assign({}, this.options), options);\r\n }\r\n addPanel(options) {\r\n const body = createComponent(options.id, options.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkWrapper\r\n ? {\r\n createComponent: this.options.frameworkWrapper.body.createComponent,\r\n }\r\n : undefined);\r\n let header;\r\n if (options.headerComponent) {\r\n header = createComponent(options.id, options.headerComponent, this.options.headerComponents || {}, this.options.headerframeworkComponents, this.options.frameworkWrapper\r\n ? {\r\n createComponent: this.options.frameworkWrapper.header\r\n .createComponent,\r\n }\r\n : undefined);\r\n }\r\n else {\r\n header = new DefaultHeader();\r\n }\r\n const view = new PaneFramework({\r\n id: options.id,\r\n component: options.component,\r\n headerComponent: options.headerComponent,\r\n header,\r\n body,\r\n orientation: Orientation.VERTICAL,\r\n isExpanded: !!options.isExpanded,\r\n disableDnd: !!this.options.disableDnd,\r\n accessor: this,\r\n });\r\n this.doAddPanel(view);\r\n const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;\r\n const index = typeof options.index === 'number' ? options.index : undefined;\r\n view.init({\r\n params: options.params || {},\r\n minimumBodySize: options.minimumBodySize,\r\n maximumBodySize: options.maximumBodySize,\r\n isExpanded: options.isExpanded,\r\n title: options.title,\r\n containerApi: new PaneviewApi(this),\r\n });\r\n this.paneview.addPane(view, size, index);\r\n view.orientation = this.paneview.orientation;\r\n return view;\r\n }\r\n removePanel(panel) {\r\n const views = this.panels;\r\n const index = views.findIndex((_) => _ === panel);\r\n this.paneview.removePane(index);\r\n this.doRemovePanel(panel);\r\n }\r\n movePanel(from, to) {\r\n this.paneview.moveView(from, to);\r\n }\r\n getPanel(id) {\r\n return this.panels.find((view) => view.id === id);\r\n }\r\n layout(width, height) {\r\n const [size, orthogonalSize] = this.paneview.orientation === Orientation.HORIZONTAL\r\n ? [width, height]\r\n : [height, width];\r\n this.paneview.layout(size, orthogonalSize);\r\n }\r\n toJSON() {\r\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ||\r\n value === Number.POSITIVE_INFINITY\r\n ? undefined\r\n : value;\r\n const minimum = (value) => (value <= 0 ? undefined : value);\r\n const views = this.paneview\r\n .getPanes()\r\n .map((view, i) => {\r\n const size = this.paneview.getViewSize(i);\r\n return {\r\n size,\r\n data: view.toJSON(),\r\n minimumSize: minimum(view.minimumBodySize),\r\n maximumSize: maximum(view.maximumBodySize),\r\n expanded: view.isExpanded(),\r\n };\r\n });\r\n return {\r\n views,\r\n size: this.paneview.size,\r\n };\r\n }\r\n fromJSON(serializedPaneview) {\r\n this.clear();\r\n const { views, size } = serializedPaneview;\r\n const queue = [];\r\n // take note of the existing dimensions\r\n const width = this.width;\r\n const height = this.height;\r\n this.paneview = new Paneview(this.element, {\r\n orientation: Orientation.VERTICAL,\r\n descriptor: {\r\n size,\r\n views: views.map((view) => {\r\n const data = view.data;\r\n const body = createComponent(data.id, data.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkWrapper\r\n ? {\r\n createComponent: this.options.frameworkWrapper.body\r\n .createComponent,\r\n }\r\n : undefined);\r\n let header;\r\n if (data.headerComponent) {\r\n header = createComponent(data.id, data.headerComponent, this.options.headerComponents || {}, this.options.headerframeworkComponents || {}, this.options.frameworkWrapper\r\n ? {\r\n createComponent: this.options.frameworkWrapper.header\r\n .createComponent,\r\n }\r\n : undefined);\r\n }\r\n else {\r\n header = new DefaultHeader();\r\n }\r\n const panel = new PaneFramework({\r\n id: data.id,\r\n component: data.component,\r\n headerComponent: data.headerComponent,\r\n header,\r\n body,\r\n orientation: Orientation.VERTICAL,\r\n isExpanded: !!view.expanded,\r\n disableDnd: !!this.options.disableDnd,\r\n accessor: this,\r\n });\r\n this.doAddPanel(panel);\r\n queue.push(() => {\r\n panel.init({\r\n params: data.params || {},\r\n minimumBodySize: view.minimumSize,\r\n maximumBodySize: view.maximumSize,\r\n title: data.title,\r\n isExpanded: !!view.expanded,\r\n containerApi: new PaneviewApi(this),\r\n });\r\n panel.orientation = this.paneview.orientation;\r\n });\r\n setTimeout(() => {\r\n // the original onDidAddView events are missed since they are fired before we can subcribe to them\r\n this._onDidAddView.fire(panel);\r\n }, 0);\r\n return { size: view.size, view: panel };\r\n }),\r\n },\r\n });\r\n this.layout(width, height);\r\n queue.forEach((f) => f());\r\n this._onDidLayoutfromJSON.fire();\r\n }\r\n clear() {\r\n for (const [_, value] of this._viewDisposables.entries()) {\r\n value.dispose();\r\n }\r\n this._viewDisposables.clear();\r\n this.paneview.dispose();\r\n }\r\n doAddPanel(panel) {\r\n const disposable = panel.onDidDrop((event) => {\r\n this._onDidDrop.fire(event);\r\n });\r\n this._viewDisposables.set(panel.id, disposable);\r\n }\r\n doRemovePanel(panel) {\r\n const disposable = this._viewDisposables.get(panel.id);\r\n if (disposable) {\r\n disposable.dispose();\r\n this._viewDisposables.delete(panel.id);\r\n }\r\n }\r\n dispose() {\r\n super.dispose();\r\n for (const [_, value] of this._viewDisposables.entries()) {\r\n value.dispose();\r\n }\r\n this._viewDisposables.clear();\r\n this.paneview.dispose();\r\n }\r\n}\r\n//# sourceMappingURL=paneviewComponent.js.map","import { BasePanelView, } from '../gridview/basePanelView';\r\nimport { SplitviewPanelApiImpl } from '../api/splitviewPanelApi';\r\nimport { Orientation } from './splitview';\r\nimport { Emitter } from '../events';\r\nexport class SplitviewPanel extends BasePanelView {\r\n get priority() {\r\n return this._priority;\r\n }\r\n set orientation(value) {\r\n this._orientation = value;\r\n }\r\n get orientation() {\r\n return this._orientation;\r\n }\r\n get minimumSize() {\r\n const size = typeof this._minimumSize === 'function'\r\n ? this._minimumSize()\r\n : this._minimumSize;\r\n if (size !== this._evaluatedMinimumSize) {\r\n this._evaluatedMinimumSize = size;\r\n this.updateConstraints();\r\n }\r\n return size;\r\n }\r\n get maximumSize() {\r\n const size = typeof this._maximumSize === 'function'\r\n ? this._maximumSize()\r\n : this._maximumSize;\r\n if (size !== this._evaluatedMaximumSize) {\r\n this._evaluatedMaximumSize = size;\r\n this.updateConstraints();\r\n }\r\n return size;\r\n }\r\n get snap() {\r\n return this._snap;\r\n }\r\n constructor(id, componentName) {\r\n super(id, componentName, new SplitviewPanelApiImpl(id));\r\n this._evaluatedMinimumSize = 0;\r\n this._evaluatedMaximumSize = Number.POSITIVE_INFINITY;\r\n this._minimumSize = 0;\r\n this._maximumSize = Number.POSITIVE_INFINITY;\r\n this._snap = false;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this.api.initialize(this);\r\n this.addDisposables(this._onDidChange, this.api.onVisibilityChange((event) => {\r\n const { isVisible } = event;\r\n const { accessor } = this._params;\r\n accessor.setVisible(this, isVisible);\r\n }), this.api.onActiveChange(() => {\r\n const { accessor } = this._params;\r\n accessor.setActive(this);\r\n }), this.api.onDidConstraintsChangeInternal((event) => {\r\n if (typeof event.minimumSize === 'number' ||\r\n typeof event.minimumSize === 'function') {\r\n this._minimumSize = event.minimumSize;\r\n }\r\n if (typeof event.maximumSize === 'number' ||\r\n typeof event.maximumSize === 'function') {\r\n this._maximumSize = event.maximumSize;\r\n }\r\n this.updateConstraints();\r\n }), this.api.onDidSizeChange((event) => {\r\n this._onDidChange.fire({ size: event.size });\r\n }));\r\n }\r\n setVisible(isVisible) {\r\n this.api._onDidVisibilityChange.fire({ isVisible });\r\n }\r\n setActive(isActive) {\r\n this.api._onDidActiveChange.fire({ isActive });\r\n }\r\n layout(size, orthogonalSize) {\r\n const [width, height] = this.orientation === Orientation.HORIZONTAL\r\n ? [size, orthogonalSize]\r\n : [orthogonalSize, size];\r\n super.layout(width, height);\r\n }\r\n init(parameters) {\r\n super.init(parameters);\r\n this._priority = parameters.priority;\r\n if (parameters.minimumSize) {\r\n this._minimumSize = parameters.minimumSize;\r\n }\r\n if (parameters.maximumSize) {\r\n this._maximumSize = parameters.maximumSize;\r\n }\r\n if (parameters.snap) {\r\n this._snap = parameters.snap;\r\n }\r\n }\r\n toJSON() {\r\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ||\r\n value === Number.POSITIVE_INFINITY\r\n ? undefined\r\n : value;\r\n const minimum = (value) => (value <= 0 ? undefined : value);\r\n return Object.assign(Object.assign({}, super.toJSON()), { minimumSize: minimum(this.minimumSize), maximumSize: maximum(this.maximumSize) });\r\n }\r\n updateConstraints() {\r\n this.api._onDidConstraintsChange.fire({\r\n maximumSize: this._evaluatedMaximumSize,\r\n minimumSize: this._evaluatedMinimumSize,\r\n });\r\n }\r\n}\r\n//# sourceMappingURL=splitviewPanel.js.map",null,null,null,null,null,null,"/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n",null,null,null,null,null,null,null,null],"names":["Event","Disposable","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","TransferObject","constructor","PanelTransfer","viewId","groupId","panelId","super","this","PaneTransfer","paneId","LocalSelectionTransfer","getInstance","INSTANCE","hasData","proto","clearData","undefined","data","getData","setData","getPanelData","panelTransfer","prototype","getPaneData","paneTransfer","any","children","listener","disposables","map","child","dispose","forEach","d","Stacktrace","create","_a","Error","stack","value","print","console","warn","Listener","callback","stacktrace","Emitter","setLeakageMonitorEnabled","isEnabled","ENABLE_TRACKING","MEMORY_LEAK_WATCHER","clear","options","_listeners","_disposed","event","_event","replay","_last","push","index","indexOf","splice","add","fire","e","length","queueMicrotask","delete","addDisposableWindowListener","element","addEventListener","removeEventListener","addDisposableListener","events","Map","size","set","TickDelayedEvent","_onFired","onEvent","timer","clearTimeout","setTimeout","NONE","CompositeDisposable","isDisposed","_isDisposed","args","_disposables","addDisposables","arg","MutableDisposable","_disposable","disposable","createComponent","id","componentName","components","frameworkComponents","createFrameworkComponent","fallback","Component","FrameworkComponent","watchElementResize","cb","observer","ResizeObserver","entires","requestAnimationFrame","firstEntry","observe","unobserve","disconnect","removeClasses","classes","classname","classList","contains","remove","addClasses","toggleClass","className","isToggled","hasClass","isAncestor","testChild","testAncestor","parentNode","tag","Array","slice","call","trackFocus","FocusTracker","_onDidFocus","onDidFocus","_onDidBlur","onDidBlur","hasFocus","activeElement","loosingFocus","onFocus","onBlur","window","_refreshStateHandler","HTMLElement","refreshState","QUASI_PREVENT_DEFAULT_KEY","quasiDefaultPrevented","tail","arr","sequenceEquals","arr1","arr2","i","pushToStart","unshift","pushToEnd","clamp","min","max","Math","sequentialNumberGenerator","next","toString","range","from","to","result","ViewItem","_size","cachedVisibleSize","_cachedVisibleSize","visible","minimumSize","view","viewMinimumSize","maximumSize","viewMaximumSize","priority","snap","enabled","container","pointerEvents","setVisible","toggle","Orientation","SashState","LayoutPriority","Sizing","Distribute","Split","Invisible","Splitview","orthogonalSize","_orthogonalSize","viewItems","proportions","_proportions","orientation","_orientation","tmp","HORIZONTAL","reduce","r","item","Number","POSITIVE_INFINITY","startSnappingEnabled","_startSnappingEnabled","updateSashEnablement","endSnappingEnabled","_endSnappingEnabled","sashes","contentSize","_onDidSashEnd","onDidSashEnd","_onDidAddView","onDidAddView","_onDidRemoveView","onDidRemoveView","resize","delta","sizes","x","lowPriorityIndexes","highPriorityIndexes","overloadMinDelta","NEGATIVE_INFINITY","overloadMaxDelta","snapBefore","snapAfter","upIndexes","downIndexes","upItems","upSizes","downItems","downSizes","minDeltaUp","_","maxDeltaUp","maxDeltaDown","minDeltaDown","minDelta","maxDelta","snapped","snapView","limitDelta","actualDelta","deltaUp","viewDelta","deltaDown","createContainer","proportionalLayout","viewContainer","createViewContainer","sashContainer","createSashContainer","styles","descriptor","views","viewDescriptor","sizing","addView","saveProportions","separatorBorder","removeProperty","setProperty","isViewVisible","setViewVisible","viewItem","distributeEmptySpace","layoutViews","getViewSize","resizeView","indexes","filter","Low","High","round","relayout","getViews","onDidChange","skipLayout","viewSize","newSize","removeChild","sash","onPointerStart","iframes","iframe","start","clientX","clientY","sashIndex","array","fn","firstIndex","s","snapBeforeIndex","findFirstSnapIndex","snapAfterIndex","snappedViewItem","halfSize","floor","onPointerMove","end","sashItem","distributeViewSizes","flexibleViewItems","flexibleSize","removeView","getViewCachedVisibleSize","moveView","layout","previousSize","lowPriorityIndex","emptyDelta","sum","offset","left","top","VERTICAL","width","height","previous","collapsesDown","expandsDown","reverseViews","reverse","collapsesUp","expandsUp","position","snappedBefore","snappedAfter","updateSash","MINIMUM","MAXIMUM","DISABLED","ENABLED","state","orientationClassname","Paneview","splitview","paneItems","skipAnimation","_onDidChange","getPanes","pane","onDidChangeExpansionState","setupAnimation","paneItem","addPane","removePane","skipDispose","animationTimer","LeafNode","minimumWidth","maximumWidth","minimumHeight","maximumHeight","minimumOrthogonalSize","maximumOrthogonalSize","BranchNode","c","Normal","priorities","some","p","childDescriptors","_childrenDisposable","childDescriptor","node","setupChildrenEvents","isChildVisible","setChildVisible","moveChild","_removeChild","_addChild","getChildSize","resizeChild","addChild","getChildCachedVisibleSize","findLeaf","candiateNode","last","flipNode","orthogonal","totalSize","childSize","indexInParent","parentElement","el","firstElementChild","lastElementChild","nextElementSibling","getGridLocation","test","getRelativeLocation","rootOrientation","location","direction","getLocationOrientation","getDirectionOrientation","rest","_index","isGridBranchNode","serializeBranchNode","box","toJSON","Gridview","_root","root","serialize","getView","deserialize","json","deserializer","_deserialize","_deserializeNode","serializedChild","fromJSON","oldRoot","insertOrthogonalSplitviewAtRoot","childReference","progmaticSelect","getNode","_getViews","nodeCachedVisibleSize","path","n","l","parent","parentLocation","pathToParent","grandParent","parentIndex","__","newSiblingSize","newSiblingCachedVisibleSize","newParent","newSibling","nodeToRemove","sibling","isSiblingVisible","siblingSizing","SplitviewApi","component","panels","onDidLayoutFromJSON","onDidLayoutChange","updateOptions","removePanel","panel","focus","getPanel","addPanel","movePanel","PaneviewApi","onDidDrop","emitter","Object","assign","api","GridviewApi","onDidAddPanel","onDidAddGroup","onDidRemovePanel","onDidRemoveGroup","onDidActivePanelChange","onDidActiveGroupChange","groups","force","DockviewApi","totalPanels","onWillDragGroup","onWillDragPanel","activePanel","activeGroup","getGroupPanel","addGroup","moveToNext","moveToPrevious","closeAllGroups","removeGroup","group","getGroup","addFloatingGroup","coord","DragAndDropObserver","callbacks","target","registerListeners","onDragEnter","preventDefault","onDragOver","onDragLeave","onDragEnd","onDrop","directionToPosition","positionToDirection","Droptarget","_state","_onDrop","_acceptedTargetZonesSet","Set","acceptedTargetZones","removeDropTarget","clientWidth","clientHeight","rect","currentTarget","getBoundingClientRect","y","quadrant","calculateQuadrant","isAlreadyUsed","canDisplayOverlay","markAsUsed","targetElement","overlayElement","append","toggleClasses","setState","stopPropagation","nativeEvent","setTargetZones","USED_EVENT_ID","_b","_c","_d","isSmallX","isSmallY","isLeft","isRight","isTop","isBottom","rightClass","leftClass","topClass","bottomClass","overlayModel","translate","transform","overlayType","_e","_f","isPercentage","activationSize","maybeNumber","threshold","xp","yp","has","calculateQuadrantAsPercentage","calculateQuadrantAsPixels","ContentContainer","_element","tabIndex","show","display","hide","openPanel","content","focusTracker","_width","_height","closePanel","DockviewDropTargets","DragHandler","dataDisposable","pointerEventsDisposable","_onDragStart","onDragStart","configure","isCancelled","defaultPrevented","dataTransfer","effectAllowed","items","TabDragHandler","accessor","Tab","_onChanged","onChanged","_onDropped","draggable","dragHandler","droptarget","locked","model","setActive","isActive","setContent","part","GroupDragHandler","shiftKey","isFloating","dragEvent","getComputedStyle","bgColor","getPropertyValue","color","ghostElement","backgroundColor","padding","fontSize","lineHeight","borderRadius","textContent","body","setDragImage","addGhostImage","VoidContainer","doSetGroupActive","handler","voidDropTarget","Panel","TabsContainer","tabs","hidden","_hidden","setRightActionsElement","rightActions","rightActionsContainer","setLeftActionsElement","leftActions","leftActionsContainer","setPrefixActionsElement","preActions","preActionsContainer","tab","selectedIndex","findIndex","_onTabDragStart","onTabDragStart","_onGroupDragStart","onGroupDragStart","singleTabMode","tabContainer","voidContainer","disableFloatingGroups","rootTop","rootLeft","inDragMode","button","_isGroupActive","addTab","tabToRemove","setActivePanel","isActivePanel","find","isFloatingGroupsEnabled","isFloatingWithOnePanel","alreadyFocused","isContentFocused","skipFocus","DockviewGroupPanelModel","_activePanel","_locked","_panels","isEmpty","hasWatermark","watermark","header","tabsContainer","contentContainer","_isFloating","dropTarget","groupPanel","_onDidFloatingStateChange","mostRecentlyUsed","_onMove","onMove","_onDidDrop","_onDidAddPanel","_onDidRemovePanel","_onDidActivePanelChange","hideHeader","handleDropEvent","initialize","doAddPanel","updateContainer","createRightHeaderActionsElement","_rightHeaderActions","init","containerApi","createLeftHeaderActionsElement","_leftHeaderActions","createPrefixHeaderActionsElement","_prefixHeaderActions","activeView","normalizedIndex","suppressRoll","containsPanel","includes","_params","update","skipSetPanelActive","skipSetGroupActive","updateParentGroup","doSetActivePanel","groupItemOrId","panelToRemove","_removePanel","closeAllPanels","arrPanelCpy","doClose","isPanelActive","updateActions","isGroupActive","doRemovePanel","nextPanel","skipSetActive","hasExistingPanel","updateMru","createWatermarkComponent","showDndOverlay","itemId","Resizable","entry","contentRect","nextLayoutId","toTarget","BaseGrid","_id","_groups","values","gridview","_activeGroup","_onDidLayoutChange","_onDidRemoveGroup","_onDidAddGroup","_onDidActiveGroupChange","_bufferOnDidLayoutChange","isVisible","doAddGroup","doRemoveGroup","get","skipActive","forceResize","PanelApiImpl","isFocused","_isFocused","_isActive","_isVisible","panelUpdatesDisposable","_onDidDimensionChange","onDidDimensionsChange","_onDidChangeFocus","onDidFocusChange","_onFocusEvent","onFocusEvent","_onDidVisibilityChange","onDidVisibilityChange","_onVisibilityChange","onVisibilityChange","_onDidActiveChange","onDidActiveChange","_onActiveChange","onActiveChange","_onUpdateParameters","onUpdateParameters","parameters","params","updateParameters","SplitviewPanelApiImpl","_onDidConstraintsChangeInternal","onDidConstraintsChangeInternal","_onDidConstraintsChange","onDidConstraintsChange","_onDidSizeChange","onDidSizeChange","setConstraints","setSize","PaneviewPanelApiImpl","_pane","_onDidExpansionChange","onDidExpansionChange","_onMouseEnter","onMouseEnter","_onMouseLeave","onMouseLeave","setExpanded","isExpanded","BasePanelView","outline","overflow","getComponent","key","keys","PaneviewPanel","headerSize","_minimumBodySize","_maximumBodySize","minimumBodySize","maximumBodySize","headerVisible","_headerVisible","headerComponent","isHeaderVisible","_onDidChangeExpansionState","_isExpanded","expandedSize","ev","isPanelExpanded","renderOnce","expanded","bodyPart","getBodyComponent","headerPart","getHeaderComponent","title","minHeight","maxHeight","DraggablePaneviewPanel","disableDnd","initDragFeatures","accessorId","existingPanel","allPanels","fromIndex","toIndex","GridviewPanelApiImpl","GridviewPanel","_priority","_snap","_minimumWidth","_evaluatedMinimumWidth","updateConstraints","_minimumHeight","_evaluatedMinimumHeight","_maximumHeight","_evaluatedMaximumHeight","_maximumWidth","_evaluatedMaximumWidth","MAX_SAFE_INTEGER","maximum","minimum","DockviewGroupPanelApiImpl","_group","onDidFloatingStateChange","moveTo","moveGroupOrPanel","DockviewGroupPanel","_model","isPanelOptionsWithPanel","referencePanel","isPanelOptionsWithGroup","referenceGroup","isGroupOptionsWithPanel","isGroupOptionsWithGroup","DockviewPanelApiImpl","isOldGroupActive","_onDidGroupChange","_onDidTitleChange","onDidTitleChange","onDidGroupChange","setTitle","close","DockviewPanel","_title","contentComponent","tabComponent","isPanelVisible","createSvgElementFromPath","svg","createElementNS","setAttributeNS","viewbox","createCloseButton","DefaultTab","_content","_actionContainer","_list","action","render","onGroupChange","onPanelVisibleChange","_isPanelVisible","DockviewPanelModel","_tab","createContentComponent","createTabComponent","frameworkComponentFactory","tabComponents","frameworkTabComponents","defaultTabComponent","DefaultDockviewDeserialzier","panelData","viewData","Watermark","emptySpace","flexGrow","actionsContainer","closeAnchor","_api","_visible","isOneGroup","bringElementToFront","Overlay","minimumInViewportWidth","minimumInViewportHeight","_onDidChangeEnd","onDidChangeEnd","setupResize","setBounds","bounds","containerRect","overlayRect","xOffset","getMinimumWidth","yOffset","getMinimumHeight","setupDrag","dragTarget","move","track","resizeHandleElement","startPosition","originalY","originalHeight","originalX","originalWidth","moveTop","MAX_VALUE","MINIMUM_HEIGHT","moveBottom","moveLeft","MINIMUM_WIDTH","moveRight","DockviewFloatingGroupPanel","overlay","DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE","DockviewComponent","flatMap","_options","nextGroupId","_deserializer","_onWillDragPanel","_onWillDragGroup","_onDidLayoutFromJSON","floatingGroups","updateWatermark","watermarkComponent","watermarkFrameworkComponent","Edge","orthogonalize","createGroup","removeEmptyGroup","skipRemoveGroup","overlayLeft","overlayTop","floatingGroupBounds","minimumWidthWithinViewport","minimumHeightWithinViewport","querySelector","floatingGroupPanel","t","createGroupAtLocation","hasOrientationChanged","hasFloatingGroupOptionsChanged","floating","includePanel","collection","floats","floatingGroup","grid","isArray","createGroupFromSerializedState","createdPanels","serializedFloatingGroups","serializedFloatingGroup","err","hasActiveGroup","hasActivePanel","entries","findGroup","createPanel","o","relativeLocation","watermarkContainer","destinationGroup","sourceGroupId","sourceItemId","destinationTarget","destinationIndex","sourceGroup","referenceLocation","targetLocation","targetParentLocation","sourceLocation","sourceParentLocation","targetGroup","updatedReferenceLocation","groupItem","dropLocation","moveGroup","isGroupAlreadyFocused","GridviewComponent","_onDidLayoutfromJSON","_key","serializedGridview","queue","registerPanel","f","removedPanel","reference","SplitviewComponent","_splitview","_splitviewChangeDisposable","v","frameworkWrapper","doAddView","serializedSplitview","DefaultHeader","_expandedIcon","_collapsedIcon","apiRef","_expander","updateIcon","PaneFramework","PaneviewComponent","paneview","_paneview","_viewDisposables","headerComponents","headerframeworkComponents","serializedPaneview","SplitviewPanel","_minimumSize","_evaluatedMinimumSize","_maximumSize","_evaluatedMaximumSize","ReactComponentBridge","props","triggerRender","React","useState","_props","useRef","componentProps","useImperativeHandle","current","Date","now","displayName","uniquePortalKeyGenerator","ReactPartContext","createContext","ReactPart","portalStore","context","_initialProps","disposed","createPortal","componentInstance","bridgeComponent","forwardRef","Provider","portal","ReactDOM","addPortal","usePortalsLifecycle","portals","setPortals","useDebugValue","useCallback","existingPortals","isReactElement","ReactPanelContentPart","reactPortalStore","DockviewEmitter","ReactPanelHeaderPart","ReactWatermarkPart","ReactHeaderActionsRendererPart","_part","mutableDisposable","DockviewMutableDisposable","DockviewCompositeDisposable","updatePanels","updateActivePanel","updateGroupActive","createGroupControlElement","store","DEFAULT_REACT_TAB","DockviewReact","domRef","dockviewRef","useEffect","factory","componentId","dockview","hideBorders","leftHeaderActionsComponent","rightHeaderActionsComponent","prefixHeaderActionsComponent","onReady","SuppressedError","CloseButton","viewBox","focusable","DockviewDefaultTab","_containerApi","hideClose","closeActionOverride","hasOwnProperty","getOwnPropertySymbols","propertyIsEnumerable","__rest","onClose","onMouseDown","onClick","ReactPanelView","reactComponent","SplitviewReact","splitviewRef","ReactGridPanelView","GridviewReact","gridviewRef","PanePanelSection","PaneviewReact","paneviewRef","_componentId"],"mappings":";;;;;;wDAAWA,ECAAC,GCAX,SAAqBC,EAAKC,QACX,IAARA,IAAiBA,EAAM,CAAA,GAC5B,IAAIC,EAAWD,EAAIC,SAEnB,GAAKF,GAA2B,oBAAbG,SAAnB,CAEA,IAAIC,EAAOD,SAASC,MAAQD,SAASE,qBAAqB,QAAQ,GAC9DC,EAAQH,SAASI,cAAc,SACnCD,EAAME,KAAO,WAEI,QAAbN,GACEE,EAAKK,WACPL,EAAKM,aAAaJ,EAAOF,EAAKK,YAKhCL,EAAKO,YAAYL,GAGfA,EAAMM,WACRN,EAAMM,WAAWC,QAAUb,EAE3BM,EAAMK,YAAYR,SAASW,eAAed,GAnBY,CAqB1D,6sBCzBA,MAAMe,EACF,WAAAC,GAEC,EAEE,MAAMC,UAAsBF,EAC/B,WAAAC,CAAYE,EAAQC,EAASC,GACzBC,QACAC,KAAKJ,OAASA,EACdI,KAAKH,QAAUA,EACfG,KAAKF,QAAUA,CAClB,EAEE,MAAMG,UAAqBR,EAC9B,WAAAC,CAAYE,EAAQM,GAChBH,QACAC,KAAKJ,OAASA,EACdI,KAAKE,OAASA,CACjB,EAKE,MAAMC,EACT,WAAAT,GAEC,CACD,kBAAOU,GACH,OAAOD,EAAuBE,QACjC,CACD,OAAAC,CAAQC,GACJ,OAAOA,GAASA,IAAUP,KAAKO,KAClC,CACD,SAAAC,CAAUD,GACFP,KAAKM,QAAQC,KACbP,KAAKO,WAAQE,EACbT,KAAKU,UAAOD,EAEnB,CACD,OAAAE,CAAQJ,GACJ,GAAIP,KAAKM,QAAQC,GACb,OAAOP,KAAKU,IAGnB,CACD,OAAAE,CAAQF,EAAMH,GACNA,IACAP,KAAKU,KAAOA,EACZV,KAAKO,MAAQA,EAEpB,EAGE,SAASM,IACZ,MAAMC,EAAgBX,EAAuBC,cAE7C,GADqBU,EAAcR,QAAQX,EAAcoB,WAIzD,OAAOD,EAAcH,QAAQhB,EAAcoB,WAAW,EAC1D,CACO,SAASC,IACZ,MAAMC,EAAed,EAAuBC,cAE5C,GADqBa,EAAaX,QAAQL,EAAac,WAIvD,OAAOE,EAAaN,QAAQV,EAAac,WAAW,EACxD,CAhBAZ,EAAuBE,SAAW,IAAIF,EHnDtC,SAAW3B,GACPA,EAAM0C,IAAM,IAAIC,IACJC,IACJ,MAAMC,EAAcF,EAASG,KAAKC,GAAUA,EAAMH,KAClD,MAAO,CACHI,QAAS,KACLH,EAAYI,SAASC,IACjBA,EAAEF,SAAS,GACb,EAET,CAGZ,CAbD,CAaGhD,IAAUA,EAAQ,CAAE,IAkBvB,MAAMmD,EACF,aAAOC,GACH,IAAIC,EACJ,OAAO,IAAIF,EAAwC,QAA5BE,GAAK,IAAIC,OAAQC,aAA0B,IAAPF,EAAgBA,EAAK,GACnF,CACD,WAAAnC,CAAYsC,GACRhC,KAAKgC,MAAQA,CAChB,CACD,KAAAC,GACIC,QAAQC,KAAKnC,KAAKgC,MACrB,EAEL,MAAMI,EACF,WAAA1C,CAAY2C,EAAUC,GAClBtC,KAAKqC,SAAWA,EAChBrC,KAAKsC,WAAaA,CACrB,EAGE,MAAMC,EACT,+BAAOC,CAAyBC,GACxBA,IAAcF,EAAQG,iBACtBH,EAAQI,oBAAoBC,QAEhCL,EAAQG,gBAAkBD,CAC7B,CACD,WAAA/C,CAAYmD,GACR7C,KAAK6C,QAAUA,EACf7C,KAAK8C,WAAa,GAClB9C,KAAK+C,WAAY,CACpB,CACD,SAAIC,GA4BA,OA3BKhD,KAAKiD,SACNjD,KAAKiD,OAAUZ,IACX,IAAIR,GACyB,QAAvBA,EAAK7B,KAAK6C,eAA4B,IAAPhB,OAAgB,EAASA,EAAGqB,cAA0BzC,IAAfT,KAAKmD,OAC7Ed,EAASrC,KAAKmD,OAElB,MAAM/B,EAAW,IAAIgB,EAASC,EAAUE,EAAQG,gBAAkBf,EAAWC,cAAWnB,GAExF,OADAT,KAAK8C,WAAWM,KAAKhC,GACd,CACHI,QAAS,KACL,MAAM6B,EAAQrD,KAAK8C,WAAWQ,QAAQlC,GAClCiC,GAAS,EACTrD,KAAK8C,WAAWS,OAAOF,EAAO,GAEzBd,EAAQG,eAAiB,EAOzC,EAEDH,EAAQG,iBACRH,EAAQI,oBAAoBa,IAAIxD,KAAKiD,OAAQtB,EAAWC,WAGzD5B,KAAKiD,MACf,CACD,IAAAQ,CAAKC,GACD1D,KAAKmD,MAAQO,EACb,IAAK,MAAMtC,KAAYpB,KAAK8C,WACxB1B,EAASiB,SAASqB,EAEzB,CACD,OAAAlC,GACSxB,KAAK+C,YACN/C,KAAK+C,WAAY,EACb/C,KAAK8C,WAAWa,OAAS,IACrBpB,EAAQG,iBACRkB,gBAAe,KACX,IAAI/B,EAEJ,IAAK,MAAMT,KAAYpB,KAAK8C,WACxBZ,QAAQC,KAAoC,QAA9BN,EAAKT,EAASkB,kBAA+B,IAAPT,OAAgB,EAASA,EAAGI,QACnF,IAGTjC,KAAK8C,WAAa,IAElBP,EAAQG,iBAAmB1C,KAAKiD,QAChCV,EAAQI,oBAAoBkB,OAAO7D,KAAKiD,QAGnD,EAIE,SAASa,EAA4BC,EAAS7E,EAAMkC,EAAUyB,GAEjE,OADAkB,EAAQC,iBAAiB9E,EAAMkC,EAAUyB,GAClC,CACHrB,QAAS,KACLuC,EAAQE,oBAAoB/E,EAAMkC,EAAUyB,EAAQ,EAGhE,CACO,SAASqB,EAAsBH,EAAS7E,EAAMkC,EAAUyB,GAE3D,OADAkB,EAAQC,iBAAiB9E,EAAMkC,EAAUyB,GAClC,CACHrB,QAAS,KACLuC,EAAQE,oBAAoB/E,EAAMkC,EAAUyB,EAAQ,EAGhE,CAjBAN,EAAQG,iBAAkB,EAC1BH,EAAQI,oBAAsB,IA1G9B,MACI,WAAAjD,GACIM,KAAKmE,OAAS,IAAIC,GACrB,CACD,QAAIC,GACA,OAAOrE,KAAKmE,OAAOE,IACtB,CACD,GAAAb,CAAIR,EAAOV,GACPtC,KAAKmE,OAAOG,IAAItB,EAAOV,EAC1B,CACD,OAAOU,GACHhD,KAAKmE,OAAON,OAAOb,EACtB,CACD,KAAAJ,GACI5C,KAAKmE,OAAOvB,OACf,GA4GE,MAAM2B,EACT,WAAA7E,GACIM,KAAKwE,SAAW,IAAIjC,EACpBvC,KAAKyE,QAAUzE,KAAKwE,SAASxB,KAChC,CACD,IAAAS,GACQzD,KAAK0E,OACLC,aAAa3E,KAAK0E,OAEtB1E,KAAK0E,MAAQE,YAAW,KACpB5E,KAAKwE,SAASf,OACdkB,aAAa3E,KAAK0E,MAAM,GAE/B,CACD,OAAAlD,GACIxB,KAAKwE,SAAShD,SACjB,GCzJL,SAAW/C,GACPA,EAAWoG,KAAO,CACdrD,QAAS,OAIhB,CAND,CAMG/C,IAAeA,EAAa,CAAE,IAC1B,MAAMqG,EACT,cAAIC,GACA,OAAO/E,KAAKgF,WACf,CACD,WAAAtF,IAAeuF,GACXjF,KAAKgF,aAAc,EACnBhF,KAAKkF,aAAeD,CACvB,CACD,cAAAE,IAAkBF,GACdA,EAAKxD,SAAS2D,GAAQpF,KAAKkF,aAAa9B,KAAKgC,IAChD,CACD,OAAA5D,GACIxB,KAAKkF,aAAazD,SAAS2D,GAAQA,EAAI5D,YACvCxB,KAAKgF,aAAc,CACtB,EAEE,MAAMK,EACT,WAAA3F,GACIM,KAAKsF,YAAc7G,EAAWoG,IACjC,CACD,SAAI7C,CAAMuD,GACFvF,KAAKsF,aACLtF,KAAKsF,YAAY9D,UAErBxB,KAAKsF,YAAcC,CACtB,CACD,OAAA/D,GACQxB,KAAKsF,cACLtF,KAAKsF,YAAY9D,UACjBxB,KAAKsF,YAAc7G,EAAWoG,KAErC,EGvCE,SAASW,EAAgBC,EAAIC,EAAeC,EAAa,CAAE,EAAEC,EAAsB,CAAA,EAAIC,EAA0BC,GACpH,MAAMC,EAAqC,iBAAlBL,EACnBC,EAAWD,QACXjF,EACAuF,EAA8C,iBAAlBN,EAC5BE,EAAoBF,QACpBjF,EACN,GAAIsF,GAAaC,EACb,MAAM,IAAIlE,MAAM,kBAAkB2D,kBAAmBC,4DAEzD,GAAIM,EAAoB,CACpB,IAAKH,EACD,MAAM,IAAI/D,MAAM,kBAAkB2D,+BAAgCC,6EAEtE,OAAOG,EAAyBL,gBAAgBC,EAAIC,EAAeM,EACtE,CACD,IAAKD,EAAW,CACZ,GAAID,EACA,OAAOA,IAEX,MAAM,IAAIhE,MAAM,kBAAkB2D,qBAAsBC,cAC3D,CACD,OAAO,IAAIK,EAAUN,EAAIC,EAC7B,CCrBO,SAASO,EAAmBlC,EAASmC,GACxC,MAAMC,EAAW,IAAIC,gBAAgBC,IAMjCC,uBAAsB,KAClB,MAAMC,EAAaF,EAAQ,GAC3BH,EAAGK,EAAW,GAChB,IAGN,OADAJ,EAASK,QAAQzC,GACV,CACHvC,QAAS,KACL2E,EAASM,UAAU1C,GACnBoC,EAASO,YAAY,EAGjC,CACO,MAAMC,EAAgB,CAAC5C,KAAY6C,KACtC,IAAK,MAAMC,KAAaD,EAChB7C,EAAQ+C,UAAUC,SAASF,IAC3B9C,EAAQ+C,UAAUE,OAAOH,EAEhC,EAEQI,EAAa,CAAClD,KAAY6C,KACnC,IAAK,MAAMC,KAAaD,EACf7C,EAAQ+C,UAAUC,SAASF,IAC5B9C,EAAQ+C,UAAUtD,IAAIqD,EAE7B,EAEQK,EAAc,CAACnD,EAASoD,EAAWC,KAC5C,MAAMC,EAAWtD,EAAQ+C,UAAUC,SAASI,GACxCC,IAAcC,GACdtD,EAAQ+C,UAAUtD,IAAI2D,IAErBC,GAAaC,GACdtD,EAAQ+C,UAAUE,OAAOG,EAC5B,EAEE,SAASG,EAAWC,EAAWC,GAClC,KAAOD,GAAW,CACd,GAAIA,IAAcC,EACd,OAAO,EAEXD,EAAYA,EAAUE,UACzB,CACD,OAAO,CACX,CACO,SAAS1I,EAAqB2I,GACjC,OAAOC,MAAM5G,UAAU6G,MAAMC,KAAKhJ,SAASE,qBAAqB2I,GAAM,EAC1E,CACO,SAASI,EAAW/D,GACvB,OAAO,IAAIgE,EAAahE,EAC5B,CAIA,MAAMgE,UAAqBjD,EACvB,WAAApF,CAAYqE,GACRhE,QACAC,KAAKgI,YAAc,IAAIzF,EACvBvC,KAAKiI,WAAajI,KAAKgI,YAAYhF,MACnChD,KAAKkI,WAAa,IAAI3F,EACtBvC,KAAKmI,UAAYnI,KAAKkI,WAAWlF,MACjChD,KAAKmF,eAAenF,KAAKgI,YAAahI,KAAKkI,YAC3C,IAAIE,EAAWd,EAAWzI,SAASwJ,cAAetE,GAC9CuE,GAAe,EACnB,MAAMC,EAAU,KACZD,GAAe,EACVF,IACDA,GAAW,EACXpI,KAAKgI,YAAYvE,OACpB,EAEC+E,EAAS,KACPJ,IACAE,GAAe,EACfG,OAAO7D,YAAW,KACV0D,IACAA,GAAe,EACfF,GAAW,EACXpI,KAAKkI,WAAWzE,OACnB,GACF,GACN,EAELzD,KAAK0I,qBAAuB,KACIpB,EAAWzI,SAASwJ,cAAetE,KACnCqE,IACpBA,EACAI,IAGAD,IAEP,EAEDxE,aAAmB4E,aACnB3I,KAAKmF,eAAejB,EAAsBH,EAAS,QAASwE,GAAS,IACrEvI,KAAKmF,eAAejB,EAAsBH,EAAS,OAAQyE,GAAQ,MAGnExI,KAAKmF,eAAerB,EAA4BC,EAAS,QAASwE,GAAS,IAC3EvI,KAAKmF,eAAerB,EAA4BC,EAAS,OAAQyE,GAAQ,IAEhF,CACD,YAAAI,GACI5I,KAAK0I,sBACR,EAGL,MAAMG,EAA4B,yBAM3B,SAASC,EAAsB9F,GAClC,OAAOA,EAAM6F,EACjB,CC7HO,SAASE,EAAKC,GACjB,GAAmB,IAAfA,EAAIrF,OACJ,MAAM,IAAI7B,MAAM,qBAEpB,MAAO,CAACkH,EAAIpB,MAAM,EAAGoB,EAAIrF,OAAS,GAAIqF,EAAIA,EAAIrF,OAAS,GAC3D,CAIO,SAASsF,EAAeC,EAAMC,GACjC,GAAID,EAAKvF,SAAWwF,EAAKxF,OACrB,OAAO,EAEX,IAAK,IAAIyF,EAAI,EAAGA,EAAIF,EAAKvF,OAAQyF,IAC7B,GAAIF,EAAKE,KAAOD,EAAKC,GACjB,OAAO,EAGf,OAAO,CACX,CAIO,SAASC,EAAYL,EAAKhH,GAC7B,MAAMqB,EAAQ2F,EAAI1F,QAAQtB,GACtBqB,GAAS,IACT2F,EAAIzF,OAAOF,EAAO,GAClB2F,EAAIM,QAAQtH,GAEpB,CAIO,SAASuH,EAAUP,EAAKhH,GAC3B,MAAMqB,EAAQ2F,EAAI1F,QAAQtB,GACtBqB,GAAS,IACT2F,EAAIzF,OAAOF,EAAO,GAClB2F,EAAI5F,KAAKpB,GAEjB,CCvCO,MAAMwH,EAAQ,CAACxH,EAAOyH,EAAKC,KAC9B,GAAID,EAAMC,EACN,MAAM,IAAI5H,MAAM,GAAG2H,OAASC,6BAEhC,OAAOC,KAAKF,IAAIC,EAAKC,KAAKD,IAAI1H,EAAOyH,GAAK,EAEjCG,EAA4B,KACrC,IAAI5H,EAAQ,EACZ,MAAO,CAAE6H,KAAM,KAAO7H,KAAS8H,WAAY,EAElCC,EAAQ,CAACC,EAAMC,KACxB,MAAMC,EAAS,GAKf,GAJkB,iBAAPD,IACPA,EAAKD,EACLA,EAAO,GAEPA,GAAQC,EACR,IAAK,IAAIb,EAAIY,EAAMZ,EAAIa,EAAIb,IACvBc,EAAO9G,KAAKgG,QAIhB,IAAK,IAAIA,EAAIY,EAAMZ,EAAIa,EAAIb,IACvBc,EAAO9G,KAAKgG,GAGpB,OAAOc,CAAM,ECzBV,MAAMC,EACT,QAAI9F,CAAKA,GACLrE,KAAKoK,MAAQ/F,CAChB,CACD,QAAIA,GACA,OAAOrE,KAAKoK,KACf,CACD,qBAAIC,GACA,OAAOrK,KAAKsK,kBACf,CACD,WAAIC,GACA,YAA0C,IAA5BvK,KAAKsK,kBACtB,CACD,eAAIE,GACA,OAAOxK,KAAKuK,QAAUvK,KAAKyK,KAAKD,YAAc,CACjD,CACD,mBAAIE,GACA,OAAO1K,KAAKyK,KAAKD,WACpB,CACD,eAAIG,GACA,OAAO3K,KAAKuK,QAAUvK,KAAKyK,KAAKE,YAAc,CACjD,CACD,mBAAIC,GACA,OAAO5K,KAAKyK,KAAKE,WACpB,CACD,YAAIE,GACA,OAAO7K,KAAKyK,KAAKI,QACpB,CACD,QAAIC,GACA,QAAS9K,KAAKyK,KAAKK,IACtB,CACD,WAAIC,CAAQA,GACR/K,KAAKgL,UAAUhM,MAAMiM,cAAgBF,EAAU,GAAK,MACvD,CACD,WAAArL,CAAYsL,EAAWP,EAAMpG,EAAMkB,GAC/BvF,KAAKgL,UAAYA,EACjBhL,KAAKyK,KAAOA,EACZzK,KAAKuF,WAAaA,EAClBvF,KAAKsK,wBAAqB7J,EACN,iBAAT4D,GACPrE,KAAKoK,MAAQ/F,EACbrE,KAAKsK,wBAAqB7J,EAC1BuK,EAAUlE,UAAUtD,IAAI,aAGxBxD,KAAKoK,MAAQ,EACbpK,KAAKsK,mBAAqBjG,EAAKgG,kBAEtC,CACD,UAAAa,CAAWX,EAASlG,GAChB,IAAIxC,EACA0I,IAAYvK,KAAKuK,UAGjBA,GACAvK,KAAKqE,KAAOmF,EAAyC,QAAlC3H,EAAK7B,KAAKsK,0BAAuC,IAAPzI,EAAgBA,EAAK,EAAG7B,KAAK0K,gBAAiB1K,KAAK4K,iBAChH5K,KAAKsK,wBAAqB7J,IAG1BT,KAAKsK,mBACe,iBAATjG,EAAoBA,EAAOrE,KAAKqE,KAC3CrE,KAAKqE,KAAO,GAEhBrE,KAAKgL,UAAUlE,UAAUqE,OAAO,UAAWZ,GACvCvK,KAAKyK,KAAKS,YACVlL,KAAKyK,KAAKS,WAAWX,GAE5B,CACD,OAAA/I,GAEI,OADAxB,KAAKuF,WAAW/D,UACTxB,KAAKyK,IACf,EC/DK,IAACW,EAKAC,EAOAC,EAMAC,GAjBX,SAAWH,GACPA,EAAwB,WAAI,aAC5BA,EAAsB,SAAI,UAC7B,CAHD,CAGGA,IAAgBA,EAAc,CAAE,IAEnC,SAAWC,GACPA,EAAUA,EAAmB,QAAI,GAAK,UACtCA,EAAUA,EAAmB,QAAI,GAAK,UACtCA,EAAUA,EAAoB,SAAI,GAAK,WACvCA,EAAUA,EAAmB,QAAI,GAAK,SACzC,CALD,CAKGA,IAAcA,EAAY,CAAE,IAE/B,SAAWC,GACPA,EAAoB,IAAI,MACxBA,EAAqB,KAAI,OACzBA,EAAuB,OAAI,QAC9B,CAJD,CAIGA,IAAmBA,EAAiB,CAAE,IAEzC,SAAWC,GACPA,EAAOC,WAAa,CAAEtM,KAAM,cAI5BqM,EAAOE,MAHP,SAAepI,GACX,MAAO,CAAEnE,KAAM,QAASmE,QAC3B,EAKDkI,EAAOG,UAHP,SAAmBrB,GACf,MAAO,CAAEnL,KAAM,YAAamL,oBAC/B,CAEJ,CAVD,CAUGkB,IAAWA,EAAS,CAAE,IAClB,MAAMI,EACT,QAAItH,GACA,OAAOrE,KAAKoK,KACf,CACD,QAAI/F,CAAKrC,GACLhC,KAAKoK,MAAQpI,CAChB,CACD,kBAAI4J,GACA,OAAO5L,KAAK6L,eACf,CACD,kBAAID,CAAe5J,GACfhC,KAAK6L,gBAAkB7J,CAC1B,CACD,UAAI2B,GACA,OAAO3D,KAAK8L,UAAUnI,MACzB,CACD,eAAIoI,GACA,OAAO/L,KAAKgM,aAAe,IAAIhM,KAAKgM,mBAAgBvL,CACvD,CACD,eAAIwL,GACA,OAAOjM,KAAKkM,YACf,CACD,eAAID,CAAYjK,GACZhC,KAAKkM,aAAelK,EACpB,MAAMmK,EAAMnM,KAAKqE,KACjBrE,KAAKqE,KAAOrE,KAAK4L,eACjB5L,KAAK4L,eAAiBO,EACtBxF,EAAc3G,KAAK+D,QAAS,aAAc,YAC1C/D,KAAK+D,QAAQ+C,UAAUtD,IAAIxD,KAAKiM,aAAeb,EAAYgB,WACrD,aACA,WACT,CACD,eAAI5B,GACA,OAAOxK,KAAK8L,UAAUO,QAAO,CAACC,EAAGC,IAASD,EAAIC,EAAK/B,aAAa,EACnE,CACD,eAAIG,GACA,OAAuB,IAAhB3K,KAAK2D,OACN6I,OAAOC,kBACPzM,KAAK8L,UAAUO,QAAO,CAACC,EAAGC,IAASD,EAAIC,EAAK5B,aAAa,EAClE,CACD,wBAAI+B,GACA,OAAO1M,KAAK2M,qBACf,CACD,wBAAID,CAAqBA,GACjB1M,KAAK2M,wBAA0BD,IAGnC1M,KAAK2M,sBAAwBD,EAC7B1M,KAAK4M,uBACR,CACD,sBAAIC,GACA,OAAO7M,KAAK8M,mBACf,CACD,sBAAID,CAAmBA,GACf7M,KAAK8M,sBAAwBD,IAGjC7M,KAAK8M,oBAAsBD,EAC3B7M,KAAK4M,uBACR,CACD,WAAAlN,CAAYsL,EAAWnI,GACnB7C,KAAKgL,UAAYA,EACjBhL,KAAK8L,UAAY,GACjB9L,KAAK+M,OAAS,GACd/M,KAAKoK,MAAQ,EACbpK,KAAK6L,gBAAkB,EACvB7L,KAAKgN,YAAc,EACnBhN,KAAKgM,kBAAevL,EACpBT,KAAK2M,uBAAwB,EAC7B3M,KAAK8M,qBAAsB,EAC3B9M,KAAKiN,cAAgB,IAAI1K,EACzBvC,KAAKkN,aAAelN,KAAKiN,cAAcjK,MACvChD,KAAKmN,cAAgB,IAAI5K,EACzBvC,KAAKoN,aAAepN,KAAKmN,cAAcnK,MACvChD,KAAKqN,iBAAmB,IAAI9K,EAC5BvC,KAAKsN,gBAAkBtN,KAAKqN,iBAAiBrK,MAC7ChD,KAAKuN,OAAS,CAAClK,EAAOmK,EAAOC,EAAQzN,KAAK8L,UAAUxK,KAAKoM,GAAMA,EAAErJ,OAAOsJ,EAAoBC,EAAqBC,EAAmBrB,OAAOsB,kBAAmBC,EAAmBvB,OAAOC,kBAAmBuB,EAAYC,KACnN,GAAI5K,EAAQ,GAAKA,EAAQrD,KAAK8L,UAAUnI,OACpC,OAAO,EAEX,MAAMuK,EAAYnE,EAAM1G,GAAQ,GAC1B8K,EAAcpE,EAAM1G,EAAQ,EAAGrD,KAAK8L,UAAUnI,QAEpD,GAAIiK,EACA,IAAK,MAAMxE,KAAKwE,EACZvE,EAAY6E,EAAW9E,GACvBC,EAAY8E,EAAa/E,GAGjC,GAAIuE,EACA,IAAK,MAAMvE,KAAKuE,EACZpE,EAAU2E,EAAW9E,GACrBG,EAAU4E,EAAa/E,GAI/B,MAAMgF,EAAUF,EAAU5M,KAAK8H,GAAMpJ,KAAK8L,UAAU1C,KAC9CiF,EAAUH,EAAU5M,KAAK8H,GAAMqE,EAAMrE,KAErCkF,EAAYH,EAAY7M,KAAK8H,GAAMpJ,KAAK8L,UAAU1C,KAClDmF,EAAYJ,EAAY7M,KAAK8H,GAAMqE,EAAMrE,KAEzCoF,EAAaN,EAAU7B,QAAO,CAACoC,EAAGrF,IAAMqF,EAAIzO,KAAK8L,UAAU1C,GAAGoB,YAAciD,EAAMrE,IAAI,GACtFsF,EAAaR,EAAU7B,QAAO,CAACoC,EAAGrF,IAAMqF,EAAIzO,KAAK8L,UAAU1C,GAAGuB,YAAc8C,EAAMrE,IAAI,GAEtFuF,EAAsC,IAAvBR,EAAYxK,OAC3B6I,OAAOC,kBACP0B,EAAY9B,QAAO,CAACoC,EAAGrF,IAAMqF,EAAIhB,EAAMrE,GAAKpJ,KAAK8L,UAAU1C,GAAGoB,aAAa,GAC3EoE,EAAsC,IAAvBT,EAAYxK,OAC3B6I,OAAOsB,kBACPK,EAAY9B,QAAO,CAACoC,EAAGrF,IAAMqF,EAAIhB,EAAMrE,GAAKpJ,KAAK8L,UAAU1C,GAAGuB,aAAa,GAE3EkE,EAAWlF,KAAKD,IAAI8E,EAAYI,GAChCE,EAAWnF,KAAKF,IAAIkF,EAAcD,GAExC,IAAIK,GAAU,EACd,GAAIf,EAAY,CACZ,MAAMgB,EAAWhP,KAAK8L,UAAUkC,EAAW3K,OACrCkH,EAAUiD,GAASQ,EAAWiB,WACpCF,EAAUxE,IAAYyE,EAASzE,QAC/ByE,EAAS9D,WAAWX,EAASyD,EAAW3J,KAC3C,CACD,IAAK0K,GAAWd,EAAW,CACvB,MAAMe,EAAWhP,KAAK8L,UAAUmC,EAAU5K,OACpCkH,EAAUiD,EAAQS,EAAUgB,WAClCF,EAAUxE,IAAYyE,EAASzE,QAC/ByE,EAAS9D,WAAWX,EAAS0D,EAAU5J,KAC1C,CACD,GAAI0K,EACA,OAAO/O,KAAKuN,OAAOlK,EAAOmK,EAAOC,EAAOE,EAAoBC,EAAqBC,EAAkBE,GAIvG,IAAImB,EAAc,EAEdC,EAHmB3F,EAAMgE,EAAOqB,EAAUC,GAI9C,IAAK,IAAI1F,EAAI,EAAGA,EAAIgF,EAAQzK,OAAQyF,IAAK,CACrC,MAAMmD,EAAO6B,EAAQhF,GACf/E,EAAOmF,EAAM6E,EAAQjF,GAAK+F,EAAS5C,EAAK/B,YAAa+B,EAAK5B,aAC1DyE,EAAY/K,EAAOgK,EAAQjF,GACjC8F,GAAeE,EACfD,GAAWC,EACX7C,EAAKlI,KAAOA,CACf,CAED,IAAIgL,EAAYH,EAChB,IAAK,IAAI9F,EAAI,EAAGA,EAAIkF,EAAU3K,OAAQyF,IAAK,CACvC,MAAMmD,EAAO+B,EAAUlF,GACjB/E,EAAOmF,EAAM+E,EAAUnF,GAAKiG,EAAW9C,EAAK/B,YAAa+B,EAAK5B,aAEpE0E,GADkBhL,EAAOkK,EAAUnF,GAEnCmD,EAAKlI,KAAOA,CACf,CAED,OAAOmJ,CAAK,EAEhBxN,KAAKkM,aAAerJ,EAAQoJ,YAC5BjM,KAAK+D,QAAU/D,KAAKsP,kBACpBtP,KAAKuP,wBAC8B9O,IAA/BoC,EAAQ0M,sBAEA1M,EAAQ0M,mBACpBvP,KAAKwP,cAAgBxP,KAAKyP,sBAC1BzP,KAAK0P,cAAgB1P,KAAK2P,sBAC1B3P,KAAK+D,QAAQ1E,YAAYW,KAAK0P,eAC9B1P,KAAK+D,QAAQ1E,YAAYW,KAAKwP,eAC9BxP,KAAKgL,UAAU3L,YAAYW,KAAK+D,SAChC/D,KAAKhB,MAAM6D,EAAQ+M,QAEf/M,EAAQgN,aACR7P,KAAKoK,MAAQvH,EAAQgN,WAAWxL,KAChCxB,EAAQgN,WAAWC,MAAMrO,SAAQ,CAACsO,EAAgB1M,KAC9C,MAAM2M,OAAoCvP,IAA3BsP,EAAexF,SAC1BwF,EAAexF,QACbwF,EAAe1L,KACf,CACEnF,KAAM,YACNmL,kBAAmB0F,EAAe1L,MAEpCoG,EAAOsF,EAAetF,KAC5BzK,KAAKiQ,QAAQxF,EAAMuF,EAAQ3M,GAAO,EAEjC,IAGLrD,KAAKgN,YAAchN,KAAK8L,UAAUO,QAAO,CAACC,EAAGlD,IAAMkD,EAAIlD,EAAE/E,MAAM,GAC/DrE,KAAKkQ,kBAEZ,CACD,KAAAlR,CAAM4Q,GAC+E,iBAA5EA,aAAuC,EAASA,EAAOO,kBACxDxJ,EAAc3G,KAAK+D,QAAS,oBAC5B/D,KAAK+D,QAAQ/E,MAAMoR,eAAe,2BAGlCnJ,EAAWjH,KAAK+D,QAAS,qBACrB6L,aAAuC,EAASA,EAAOO,kBACvDnQ,KAAK+D,QAAQ/E,MAAMqR,YAAY,wBAAyBT,EAAOO,iBAG1E,CACD,aAAAG,CAAcjN,GACV,GAAIA,EAAQ,GAAKA,GAASrD,KAAK8L,UAAUnI,OACrC,MAAM,IAAI7B,MAAM,uBAGpB,OADiB9B,KAAK8L,UAAUzI,GAChBkH,OACnB,CACD,cAAAgG,CAAelN,EAAOkH,GAClB,GAAIlH,EAAQ,GAAKA,GAASrD,KAAK8L,UAAUnI,OACrC,MAAM,IAAI7B,MAAM,uBAEpBoF,EAAYlH,KAAKgL,UAAW,UAAWT,GACvC,MAAMiG,EAAWxQ,KAAK8L,UAAUzI,GAChC6D,EAAYlH,KAAKgL,UAAW,UAAWT,GACvCiG,EAAStF,WAAWX,EAASiG,EAASnM,MACtCrE,KAAKyQ,qBAAqBpN,GAC1BrD,KAAK0Q,cACL1Q,KAAKkQ,iBACR,CACD,WAAAS,CAAYtN,GACR,OAAIA,EAAQ,GAAKA,GAASrD,KAAK8L,UAAUnI,QAC7B,EAEL3D,KAAK8L,UAAUzI,GAAOgB,IAChC,CACD,UAAAuM,CAAWvN,EAAOgB,GACd,GAAIhB,EAAQ,GAAKA,GAASrD,KAAK8L,UAAUnI,OACrC,OAEJ,MAAMkN,EAAU9G,EAAM/J,KAAK8L,UAAUnI,QAAQmN,QAAQ1H,GAAMA,IAAM/F,IAC3DsK,EAAqB,IACpBkD,EAAQC,QAAQ1H,GAAMpJ,KAAK8L,UAAU1C,GAAGyB,WAAaS,EAAeyF,MACvE1N,GAEEuK,EAAsBiD,EAAQC,QAAQ1H,GAAMpJ,KAAK8L,UAAU1C,GAAGyB,WAAaS,EAAe0F,OAC1FzE,EAAOvM,KAAK8L,UAAUzI,GAC5BgB,EAAOsF,KAAKsH,MAAM5M,GAClBA,EAAOmF,EAAMnF,EAAMkI,EAAK/B,YAAab,KAAKF,IAAI8C,EAAK5B,YAAa3K,KAAKoK,QACrEmC,EAAKlI,KAAOA,EACZrE,KAAKkR,SAASvD,EAAoBC,EACrC,CACD,QAAAuD,GACI,OAAOnR,KAAK8L,UAAUxK,KAAKoM,GAAMA,EAAEjD,MACtC,CACD,WAAA2G,CAAY7E,EAAMlI,GACd,MAAMhB,EAAQrD,KAAK8L,UAAUxI,QAAQiJ,GACrC,GAAIlJ,EAAQ,GAAKA,GAASrD,KAAK8L,UAAUnI,OACrC,OAEJU,EAAuB,iBAATA,EAAoBA,EAAOkI,EAAKlI,KAC9CA,EAAOmF,EAAMnF,EAAMkI,EAAK/B,YAAa+B,EAAK5B,aAC1C4B,EAAKlI,KAAOA,EACZ,MAAMwM,EAAU9G,EAAM/J,KAAK8L,UAAUnI,QAAQmN,QAAQ1H,GAAMA,IAAM/F,IAC3DsK,EAAqB,IACpBkD,EAAQC,QAAQ1H,GAAMpJ,KAAK8L,UAAU1C,GAAGyB,WAAaS,EAAeyF,MACvE1N,GAEEuK,EAAsBiD,EAAQC,QAAQ1H,GAAMpJ,KAAK8L,UAAU1C,GAAGyB,WAAaS,EAAe0F,OAKhGhR,KAAKkR,SAAS,IAAIvD,EAAoBtK,GAAQuK,EACjD,CACD,OAAAqC,CAAQxF,EAAMpG,EAAO,CAAEnF,KAAM,cAAgBmE,EAAQrD,KAAK8L,UAAUnI,OAAQ0N,GACxE,MAAMrG,EAAYnM,SAASI,cAAc,OAGzC,IAAIqS,EAFJtG,EAAU7D,UAAY,OACtB6D,EAAU3L,YAAYoL,EAAK1G,SAGvBuN,EADgB,iBAATjN,EACIA,EAEQ,UAAdA,EAAKnF,KACCc,KAAK2Q,YAAYtM,EAAKhB,OAAS,EAEvB,cAAdgB,EAAKnF,KACC,CAAEmL,kBAAmBhG,EAAKgG,mBAG1BI,EAAKD,YAEpB,MAAMjF,EAAakF,EAAK2G,aAAaG,GAAYvR,KAAKoR,YAAYZ,EAAUe,EAAQlN,QAC9EmM,EAAW,IAAIrG,EAASa,EAAWP,EAAM6G,EAAU,CACrD9P,QAAS,KACL+D,EAAW/D,UACXxB,KAAKwP,cAAcgC,YAAYxG,EAAU,IAUjD,GAPI3H,IAAUrD,KAAK8L,UAAUnI,OACzB3D,KAAKwP,cAAcnQ,YAAY2L,GAG/BhL,KAAKwP,cAAcpQ,aAAa4L,EAAWhL,KAAKwP,cAAcrO,SAASoL,KAAKlJ,IAEhFrD,KAAK8L,UAAUvI,OAAOF,EAAO,EAAGmN,GAC5BxQ,KAAK8L,UAAUnI,OAAS,EAAG,CAE3B,MAAM8N,EAAO5S,SAASI,cAAc,OACpCwS,EAAKtK,UAAY,OACjB,MAAMuK,EAAkB1O,IACpB,IAAK,MAAMuJ,KAAQvM,KAAK8L,UACpBS,EAAKxB,SAAU,EAEnB,MAAM4G,EAAU,IACT5S,EAAqB,aACrBA,EAAqB,YAE5B,IAAK,MAAM6S,KAAUD,EACjBC,EAAO5S,MAAMiM,cAAgB,OAEjC,MAAM4G,EAAQ7R,KAAKkM,eAAiBd,EAAYgB,WAC1CpJ,EAAM8O,QACN9O,EAAM+O,QACNC,EHzTf,SAAoBC,EAAOC,GAC9B,IAAK,IAAI9I,EAAI,EAAGA,EAAI6I,EAAMtO,OAAQyF,IAE9B,GAAI8I,EADYD,EAAM7I,IAElB,OAAOA,EAGf,OAAQ,CACZ,CGiTkC+I,CAAWnS,KAAK+M,QAASqF,GAAMA,EAAEpH,YAAcyG,IAE3DhE,EAAQzN,KAAK8L,UAAUxK,KAAKoM,GAAMA,EAAErJ,OAE1C,IAAI2J,EACAC,EACJ,MAAMC,EAAYnE,EAAMiI,GAAY,GAC9B7D,EAAcpE,EAAMiI,EAAY,EAAGhS,KAAK8L,UAAUnI,QAClD6K,EAAaN,EAAU7B,QAAO,CAACC,EAAGlD,IAAMkD,GAAKtM,KAAK8L,UAAU1C,GAAGoB,YAAciD,EAAMrE,KAAK,GACxFsF,EAAaR,EAAU7B,QAAO,CAACC,EAAGlD,IAAMkD,GAAKtM,KAAK8L,UAAU1C,GAAGwB,gBAAkB6C,EAAMrE,KAAK,GAC5FuF,EAAsC,IAAvBR,EAAYxK,OAC3B6I,OAAOC,kBACP0B,EAAY9B,QAAO,CAACC,EAAGlD,IAAMkD,GAC1BmB,EAAMrE,GAAKpJ,KAAK8L,UAAU1C,GAAGoB,cAAc,GAC9CoE,EAAsC,IAAvBT,EAAYxK,OAC3B6I,OAAOsB,kBACPK,EAAY9B,QAAO,CAACC,EAAGlD,IAAMkD,GAC1BmB,EAAMrE,GACHpJ,KAAK8L,UAAU1C,GAAGwB,kBAAkB,GAC1CiE,EAAWlF,KAAKD,IAAI8E,EAAYI,GAChCE,EAAWnF,KAAKF,IAAIkF,EAAcD,GAClC2D,EAAkBrS,KAAKsS,mBAAmBpE,GAC1CqE,EAAiBvS,KAAKsS,mBAAmBnE,GAC/C,GAA+B,iBAApBkE,EAA8B,CACrC,MAAMG,EAAkBxS,KAAK8L,UAAUuG,GACjCI,EAAW9I,KAAK+I,MAAMF,EAAgB9H,gBAAkB,GAC9DsD,EAAa,CACT3K,MAAOgP,EACPpD,WAAYuD,EAAgBjI,QACtBsE,EAAW4D,EACX5D,EAAW4D,EACjBpO,KAAMmO,EAAgBnO,KAE7B,CACD,GAA8B,iBAAnBkO,EAA6B,CACpC,MAAMC,EAAkBxS,KAAK8L,UAAUyG,GACjCE,EAAW9I,KAAK+I,MAAMF,EAAgB9H,gBAAkB,GAC9DuD,EAAY,CACR5K,MAAOkP,EACPtD,WAAYuD,EAAgBjI,QACtBuE,EAAW2D,EACX3D,EAAW2D,EACjBpO,KAAMmO,EAAgBnO,KAE7B,CACD,MAAMsO,EAAiB3P,IACnB,MAGMwK,GAHUxN,KAAKkM,eAAiBd,EAAYgB,WAC5CpJ,EAAM8O,QACN9O,EAAM+O,SACYF,EACxB7R,KAAKuN,OAAOyE,EAAWxE,EAAOC,OAAOhN,OAAWA,EAAWoO,EAAUC,EAAUd,EAAYC,GAC3FjO,KAAKyQ,uBACLzQ,KAAK0Q,aAAa,EAEhBkC,EAAM,KACR,IAAK,MAAMrG,KAAQvM,KAAK8L,UACpBS,EAAKxB,SAAU,EAEnB,IAAK,MAAM6G,KAAUD,EACjBC,EAAO5S,MAAMiM,cAAgB,OAEjCjL,KAAKkQ,kBACLrR,SAASoF,oBAAoB,cAAe0O,GAC5C9T,SAASoF,oBAAoB,YAAa2O,GAC1C/T,SAASoF,oBAAoB,gBAAiB2O,GAC9C5S,KAAKiN,cAAcxJ,UAAKhD,EAAU,EAEtC5B,SAASmF,iBAAiB,cAAe2O,GACzC9T,SAASmF,iBAAiB,YAAa4O,GACvC/T,SAASmF,iBAAiB,gBAAiB4O,EAAI,EAEnDnB,EAAKzN,iBAAiB,cAAe0N,GACrC,MAAMmB,EAAW,CACb7H,UAAWyG,EACXlM,WAAY,KACRkM,EAAKxN,oBAAoB,cAAeyN,GACxC1R,KAAK0P,cAAc8B,YAAYC,EAAK,GAG5CzR,KAAK0P,cAAcrQ,YAAYoS,GAC/BzR,KAAK+M,OAAO3J,KAAKyP,EACpB,CACIxB,GACDrR,KAAKkR,SAAS,CAAC7N,IAEdgO,GACe,iBAAThN,GACO,eAAdA,EAAKnF,MACLc,KAAK8S,sBAET9S,KAAKmN,cAAc1J,KAAKgH,EAC3B,CACD,mBAAAqI,GACI,MAAMC,EAAoB,GAC1B,IAAIC,EAAe,EACnB,IAAK,MAAMzG,KAAQvM,KAAK8L,UAChBS,EAAK5B,YAAc4B,EAAK/B,YAAc,IACtCuI,EAAkB3P,KAAKmJ,GACvByG,GAAgBzG,EAAKlI,MAG7B,MAAMA,EAAOsF,KAAK+I,MAAMM,EAAeD,EAAkBpP,QACzD,IAAK,MAAM4I,KAAQwG,EACfxG,EAAKlI,KAAOmF,EAAMnF,EAAMkI,EAAK/B,YAAa+B,EAAK5B,aAEnD,MAAMkG,EAAU9G,EAAM/J,KAAK8L,UAAUnI,QAC/BgK,EAAqBkD,EAAQC,QAAQ1H,GAAMpJ,KAAK8L,UAAU1C,GAAGyB,WAAaS,EAAeyF,MACzFnD,EAAsBiD,EAAQC,QAAQ1H,GAAMpJ,KAAK8L,UAAU1C,GAAGyB,WAAaS,EAAe0F,OAChGhR,KAAKkR,SAASvD,EAAoBC,EACrC,CACD,UAAAqF,CAAW5P,EAAO2M,EAAQqB,GAAa,GAEnC,MAAMb,EAAWxQ,KAAK8L,UAAUvI,OAAOF,EAAO,GAAG,GAGjD,GAFAmN,EAAShP,UAELxB,KAAK8L,UAAUnI,QAAU,EAAG,CAC5B,MAAMqO,EAAYrI,KAAKD,IAAIrG,EAAQ,EAAG,GACrBrD,KAAK+M,OAAOxJ,OAAOyO,EAAW,GAAG,GACzCzM,YACZ,CAQD,OAPK8L,GACDrR,KAAKkR,WAELlB,GAA0B,eAAhBA,EAAO9Q,MACjBc,KAAK8S,sBAET9S,KAAKqN,iBAAiB5J,KAAK+M,EAAS/F,MAC7B+F,EAAS/F,IACnB,CACD,wBAAAyI,CAAyB7P,GACrB,GAAIA,EAAQ,GAAKA,GAASrD,KAAK8L,UAAUnI,OACrC,MAAM,IAAI7B,MAAM,uBAGpB,OADiB9B,KAAK8L,UAAUzI,GAChBgH,iBACnB,CACD,QAAA8I,CAASnJ,EAAMC,GACX,MAAMI,EAAoBrK,KAAKkT,yBAAyBlJ,GAClDgG,OAAsC,IAAtB3F,EAChBrK,KAAK2Q,YAAY3G,GACjBuB,EAAOG,UAAUrB,GACjBI,EAAOzK,KAAKiT,WAAWjJ,OAAMvJ,GAAW,GAC9CT,KAAKiQ,QAAQxF,EAAMuF,EAAQ/F,EAC9B,CACD,MAAAmJ,CAAO/O,EAAMuH,GACT,MAAMyH,EAAe1J,KAAKD,IAAI1J,KAAKqE,KAAMrE,KAAKgN,aAG9C,GAFAhN,KAAKqE,KAAOA,EACZrE,KAAK4L,eAAiBA,EACjB5L,KAAK+L,YAON,IAAK,IAAI3C,EAAI,EAAGA,EAAIpJ,KAAK8L,UAAUnI,OAAQyF,IAAK,CAC5C,MAAMmD,EAAOvM,KAAK8L,UAAU1C,GAC5BmD,EAAKlI,KAAOmF,EAAMG,KAAKsH,MAAMjR,KAAK+L,YAAY3C,GAAK/E,GAAOkI,EAAK/B,YAAa+B,EAAK5B,YACpF,KAVkB,CACnB,MAAMkG,EAAU9G,EAAM/J,KAAK8L,UAAUnI,QAC/BgK,EAAqBkD,EAAQC,QAAQ1H,GAAMpJ,KAAK8L,UAAU1C,GAAGyB,WAAaS,EAAeyF,MACzFnD,EAAsBiD,EAAQC,QAAQ1H,GAAMpJ,KAAK8L,UAAU1C,GAAGyB,WAAaS,EAAe0F,OAChGhR,KAAKuN,OAAOvN,KAAK8L,UAAUnI,OAAS,EAAGU,EAAOgP,OAAc5S,EAAWkN,EAAoBC,EAC9F,CAOD5N,KAAKyQ,uBACLzQ,KAAK0Q,aACR,CACD,QAAAQ,CAASvD,EAAoBC,GACzB,MAAMZ,EAAchN,KAAK8L,UAAUO,QAAO,CAACC,EAAGlD,IAAMkD,EAAIlD,EAAE/E,MAAM,GAChErE,KAAKuN,OAAOvN,KAAK8L,UAAUnI,OAAS,EAAG3D,KAAKoK,MAAQ4C,OAAavM,EAAWkN,EAAoBC,GAChG5N,KAAKyQ,uBACLzQ,KAAK0Q,cACL1Q,KAAKkQ,iBACR,CACD,oBAAAO,CAAqB6C,GACjB,MAAMtG,EAAchN,KAAK8L,UAAUO,QAAO,CAACC,EAAGlD,IAAMkD,EAAIlD,EAAE/E,MAAM,GAChE,IAAIkP,EAAavT,KAAKqE,KAAO2I,EAC7B,MAAM6D,EAAU9G,EAAM/J,KAAK8L,UAAUnI,OAAS,GAAI,GAC5CgK,EAAqBkD,EAAQC,QAAQ1H,GAAMpJ,KAAK8L,UAAU1C,GAAGyB,WAAaS,EAAeyF,MACzFnD,EAAsBiD,EAAQC,QAAQ1H,GAAMpJ,KAAK8L,UAAU1C,GAAGyB,WAAaS,EAAe0F,OAChG,IAAK,MAAM3N,KAASuK,EAChBvE,EAAYwH,EAASxN,GAEzB,IAAK,MAAMA,KAASsK,EAChBpE,EAAUsH,EAASxN,GAES,iBAArBiQ,GACP/J,EAAUsH,EAASyC,GAEvB,IAAK,IAAIlK,EAAI,EAAkB,IAAfmK,GAAoBnK,EAAIyH,EAAQlN,OAAQyF,IAAK,CACzD,MAAMmD,EAAOvM,KAAK8L,UAAU+E,EAAQzH,IAC9B/E,EAAOmF,EAAM+C,EAAKlI,KAAOkP,EAAYhH,EAAK/B,YAAa+B,EAAK5B,aAElE4I,GADkBlP,EAAOkI,EAAKlI,KAE9BkI,EAAKlI,KAAOA,CACf,CACJ,CACD,eAAA6L,GACQlQ,KAAKuP,oBAAsBvP,KAAKgN,YAAc,IAC9ChN,KAAKgM,aAAehM,KAAK8L,UAAUxK,KAAK8H,GAAMA,EAAE/E,KAAOrE,KAAKgN,cAEnE,CACD,WAAA0D,GACI1Q,KAAKgN,YAAchN,KAAK8L,UAAUO,QAAO,CAACC,EAAGlD,IAAMkD,EAAIlD,EAAE/E,MAAM,GAC/D,IAAImP,EAAM,EACV,MAAM9F,EAAI,GACV1N,KAAK4M,uBACL,IAAK,IAAIxD,EAAI,EAAGA,EAAIpJ,KAAK8L,UAAUnI,OAAS,EAAGyF,IAAK,CAChDoK,GAAOxT,KAAK8L,UAAU1C,GAAG/E,KACzBqJ,EAAEtK,KAAKoQ,GACP,MAAMC,EAAS9J,KAAKF,IAAIE,KAAKD,IAAI,EAAG8J,EAAM,GAAIxT,KAAKqE,KAAO,GACtDrE,KAAKkM,eAAiBd,EAAYgB,aAClCpM,KAAK+M,OAAO3D,GAAG4B,UAAUhM,MAAM0U,KAAO,GAAGD,MACzCzT,KAAK+M,OAAO3D,GAAG4B,UAAUhM,MAAM2U,IAAM,OAErC3T,KAAKkM,eAAiBd,EAAYwI,WAClC5T,KAAK+M,OAAO3D,GAAG4B,UAAUhM,MAAM0U,KAAO,MACtC1T,KAAK+M,OAAO3D,GAAG4B,UAAUhM,MAAM2U,IAAM,GAAGF,MAE/C,CACDzT,KAAK8L,UAAUrK,SAAQ,CAACgJ,EAAMrB,KACtBpJ,KAAKkM,eAAiBd,EAAYgB,aAClC3B,EAAKO,UAAUhM,MAAM6U,MAAQ,GAAGpJ,EAAKpG,SACrCoG,EAAKO,UAAUhM,MAAM0U,KAAY,GAALtK,EAAS,MAAQ,GAAGsE,EAAEtE,EAAI,OACtDqB,EAAKO,UAAUhM,MAAM2U,IAAM,GAC3BlJ,EAAKO,UAAUhM,MAAM8U,OAAS,IAE9B9T,KAAKkM,eAAiBd,EAAYwI,WAClCnJ,EAAKO,UAAUhM,MAAM8U,OAAS,GAAGrJ,EAAKpG,SACtCoG,EAAKO,UAAUhM,MAAM2U,IAAW,GAALvK,EAAS,MAAQ,GAAGsE,EAAEtE,EAAI,OACrDqB,EAAKO,UAAUhM,MAAM6U,MAAQ,GAC7BpJ,EAAKO,UAAUhM,MAAM0U,KAAO,IAEhCjJ,EAAKA,KAAK2I,OAAO3I,EAAKpG,KAAMrE,KAAK6L,gBAAgB,GAExD,CACD,kBAAAyG,CAAmBzB,GAEf,IAAK,MAAMxN,KAASwN,EAAS,CACzB,MAAML,EAAWxQ,KAAK8L,UAAUzI,GAChC,GAAKmN,EAASjG,SAGViG,EAAS1F,KACT,OAAOzH,CAEd,CAED,IAAK,MAAMA,KAASwN,EAAS,CACzB,MAAML,EAAWxQ,KAAK8L,UAAUzI,GAChC,GAAImN,EAASjG,SACTiG,EAAS7F,YAAc6F,EAAShG,YAAc,EAC9C,OAEJ,IAAKgG,EAASjG,SAAWiG,EAAS1F,KAC9B,OAAOzH,CAEd,CAEJ,CACD,oBAAAuJ,GACI,IAAImH,GAAW,EACf,MAAMC,EAAgBhU,KAAK8L,UAAUxK,KAAK8H,GAAO2K,EAAW3K,EAAE/E,KAAO+E,EAAEoB,YAAc,GAAKuJ,IAC1FA,GAAW,EACX,MAAME,EAAcjU,KAAK8L,UAAUxK,KAAK8H,GAAO2K,EAAW3K,EAAEuB,YAAcvB,EAAE/E,KAAO,GAAK0P,IAClFG,EAAe,IAAIlU,KAAK8L,WAAWqI,UACzCJ,GAAW,EACX,MAAMK,EAAcF,EACf5S,KAAK8H,GAAO2K,EAAW3K,EAAE/E,KAAO+E,EAAEoB,YAAc,GAAKuJ,IACrDI,UACLJ,GAAW,EACX,MAAMM,EAAYH,EACb5S,KAAK8H,GAAO2K,EAAW3K,EAAEuB,YAAcvB,EAAE/E,KAAO,GAAK0P,IACrDI,UACL,IAAIG,EAAW,EACf,IAAK,IAAIjR,EAAQ,EAAGA,EAAQrD,KAAK+M,OAAOpJ,OAAQN,IAAS,CACrD,MAAMoO,EAAOzR,KAAK+M,OAAO1J,GAEzBiR,GADiBtU,KAAK8L,UAAUzI,GACXgB,KACrB,MAAMoF,IAAQuK,EAAc3Q,IAAUgR,EAAUhR,EAAQ,IAClDqG,IAAQuK,EAAY5Q,IAAU+Q,EAAY/Q,EAAQ,IACxD,GAAIoG,GAAOC,EAAK,CACZ,MAAMwE,EAAYnE,EAAM1G,GAAQ,GAC1B8K,EAAcpE,EAAM1G,EAAQ,EAAGrD,KAAK8L,UAAUnI,QAC9C0O,EAAkBrS,KAAKsS,mBAAmBpE,GAC1CqE,EAAiBvS,KAAKsS,mBAAmBnE,GACzCoG,EAA2C,iBAApBlC,IACxBrS,KAAK8L,UAAUuG,GAAiB9H,QAC/BiK,EAAyC,iBAAnBjC,IACvBvS,KAAK8L,UAAUyG,GAAgBhI,QAChCgK,GACAH,EAAY/Q,KACXiR,EAAW,GAAKtU,KAAK0M,sBACtB1M,KAAKyU,WAAWhD,EAAMpG,EAAUqJ,SAE3BF,GACLR,EAAc3Q,KACbiR,EAAWtU,KAAKgN,aAAehN,KAAK6M,oBACrC7M,KAAKyU,WAAWhD,EAAMpG,EAAUsJ,SAGhC3U,KAAKyU,WAAWhD,EAAMpG,EAAUuJ,SAEvC,MACQnL,IAAQC,EACb1J,KAAKyU,WAAWhD,EAAMpG,EAAUqJ,UAE1BjL,GAAOC,EACb1J,KAAKyU,WAAWhD,EAAMpG,EAAUsJ,SAGhC3U,KAAKyU,WAAWhD,EAAMpG,EAAUwJ,QAEvC,CACJ,CACD,UAAAJ,CAAWhD,EAAMqD,GACb5N,EAAYuK,EAAKzG,UAAW,WAAY8J,IAAUzJ,EAAUuJ,UAC5D1N,EAAYuK,EAAKzG,UAAW,UAAW8J,IAAUzJ,EAAUwJ,SAC3D3N,EAAYuK,EAAKzG,UAAW,UAAW8J,IAAUzJ,EAAUsJ,SAC3DzN,EAAYuK,EAAKzG,UAAW,UAAW8J,IAAUzJ,EAAUqJ,QAC9D,CACD,mBAAAjF,GACI,MAAM1L,EAAUlF,SAASI,cAAc,OAEvC,OADA8E,EAAQoD,UAAY,iBACbpD,CACV,CACD,mBAAA4L,GACI,MAAM5L,EAAUlF,SAASI,cAAc,OAEvC,OADA8E,EAAQoD,UAAY,iBACbpD,CACV,CACD,eAAAuL,GACI,MAAMvL,EAAUlF,SAASI,cAAc,OACjC8V,EAAuB/U,KAAKkM,eAAiBd,EAAYgB,WACzD,aACA,WAEN,OADArI,EAAQoD,UAAY,wBAAwB4N,IACrChR,CACV,CACD,OAAAvC,GACIxB,KAAKiN,cAAczL,UACnBxB,KAAKmN,cAAc3L,UACnBxB,KAAKqN,iBAAiB7L,UACtB,IAAK,IAAI4H,EAAI,EAAGA,EAAIpJ,KAAK+D,QAAQ5C,SAASwC,OAAQyF,IAC9C,GAAIpJ,KAAK+D,QAAQ5C,SAASoL,KAAKnD,KAAOpJ,KAAK+D,QAAS,CAChD/D,KAAK+D,QAAQyN,YAAYxR,KAAK+D,SAC9B,KACH,CAEL,IAAK,MAAMyM,KAAYxQ,KAAK8L,UACxB0E,EAAShP,UAEbxB,KAAK+D,QAAQiD,QAChB,EC1rBE,MAAMgO,UAAiBlQ,EAC1B,gBAAIsI,GACA,OAAOpN,KAAKiV,UAAU7H,YACzB,CACD,mBAAIE,GACA,OAAOtN,KAAKiV,UAAU3H,eACzB,CACD,eAAI9C,GACA,OAAOxK,KAAKiV,UAAUzK,WACzB,CACD,eAAIG,GACA,OAAO3K,KAAKiV,UAAUtK,WACzB,CACD,eAAIsB,GACA,OAAOjM,KAAKiV,UAAUhJ,WACzB,CACD,QAAI5H,GACA,OAAOrE,KAAKiV,UAAU5Q,IACzB,CACD,kBAAIuH,GACA,OAAO5L,KAAKiV,UAAUrJ,cACzB,CACD,WAAAlM,CAAYsL,EAAWnI,GACnB,IAAIhB,EACJ9B,QACAC,KAAKkV,UAAY,GACjBlV,KAAKmV,eAAgB,EACrBnV,KAAKoV,aAAe,IAAI7S,EACxBvC,KAAKoR,YAAcpR,KAAKoV,aAAapS,MACrChD,KAAKkM,aAA8C,QAA9BrK,EAAKgB,EAAQoJ,mBAAgC,IAAPpK,EAAgBA,EAAKuJ,EAAYwI,SAC5F5T,KAAK+D,QAAUlF,SAASI,cAAc,OACtCe,KAAK+D,QAAQoD,UAAY,iBACzB6D,EAAU3L,YAAYW,KAAK+D,SAC3B/D,KAAKiV,UAAY,IAAItJ,EAAU3L,KAAK+D,QAAS,CACzCkI,YAAajM,KAAKkM,aAClBqD,oBAAoB,EACpBM,WAAYhN,EAAQgN,aAIxB7P,KAAKqV,WAAW5T,SAAS6T,IACrB,MAAM/P,EAAa,IAAIT,EAAoBwQ,EAAKC,2BAA0B,KACtEvV,KAAKwV,iBACLxV,KAAKoV,aAAa3R,UAAKhD,EAAU,KAE/BgV,EAAW,CACbH,OACA/P,WAAY,CACR/D,QAAS,KACL+D,EAAW/D,SAAS,IAIhCxB,KAAKkV,UAAU9R,KAAKqS,GACpBH,EAAK1J,eAAiB5L,KAAKiV,UAAUrJ,cAAc,IAEvD5L,KAAKmF,eAAenF,KAAKoV,aAAcpV,KAAKiV,UAAU/H,cAAa,KAC/DlN,KAAKoV,aAAa3R,UAAKhD,EAAU,IACjCT,KAAKiV,UAAU7H,cAAa,KAC5BpN,KAAKoV,aAAa3R,MAAM,IACxBzD,KAAKiV,UAAU3H,iBAAgB,KAC/BtN,KAAKoV,aAAa3R,MAAM,IAE/B,CACD,OAAAiS,CAAQJ,EAAMjR,EAAMhB,EAAQrD,KAAKiV,UAAUtR,OAAQ0N,GAAa,GAC5D,MAAM9L,EAAa+P,EAAKC,2BAA0B,KAC9CvV,KAAKwV,iBACLxV,KAAKoV,aAAa3R,UAAKhD,EAAU,IAE/BgV,EAAW,CACbH,OACA/P,WAAY,CACR/D,QAAS,KACL+D,EAAW/D,SAAS,IAIhCxB,KAAKkV,UAAU3R,OAAOF,EAAO,EAAGoS,GAChCH,EAAK1J,eAAiB5L,KAAKiV,UAAUrJ,eACrC5L,KAAKiV,UAAUhF,QAAQqF,EAAMjR,EAAMhB,EAAOgO,EAC7C,CACD,WAAAV,CAAYtN,GACR,OAAOrD,KAAKiV,UAAUtE,YAAYtN,EACrC,CACD,QAAAgS,GACI,OAAOrV,KAAKiV,UAAU9D,UACzB,CACD,UAAAwE,CAAWtS,EAAOR,EAAU,CAAE+S,aAAa,IACvC,MAAMH,EAAWzV,KAAKkV,UAAU3R,OAAOF,EAAO,GAAG,GAMjD,OALArD,KAAKiV,UAAUhC,WAAW5P,GACrBR,EAAQ+S,cACTH,EAASlQ,WAAW/D,UACpBiU,EAASH,KAAK9T,WAEXiU,CACV,CACD,QAAAtC,CAASnJ,EAAMC,GACX,GAAID,IAASC,EACT,OAEJ,MAAMQ,EAAOzK,KAAK2V,WAAW3L,EAAM,CAAE4L,aAAa,IAClD5V,KAAKmV,eAAgB,EACrB,IACInV,KAAK0V,QAAQjL,EAAK6K,KAAM7K,EAAK6K,KAAKjR,KAAM4F,GAAI,EAC/C,CACO,QACJjK,KAAKmV,eAAgB,CACxB,CACJ,CACD,MAAA/B,CAAO/O,EAAMuH,GACT5L,KAAKiV,UAAU7B,OAAO/O,EAAMuH,EAC/B,CACD,cAAA4J,GACQxV,KAAKmV,gBAGLnV,KAAK6V,iBACLlR,aAAa3E,KAAK6V,gBAClB7V,KAAK6V,oBAAiBpV,GAE1BwG,EAAWjH,KAAK+D,QAAS,YACzB/D,KAAK6V,eAAiBjR,YAAW,KAC7B5E,KAAK6V,oBAAiBpV,EACtBkG,EAAc3G,KAAK+D,QAAS,WAAW,GACxC,KACN,CACD,OAAAvC,GACIzB,MAAMyB,UACFxB,KAAK6V,iBACLlR,aAAa3E,KAAK6V,gBAClB7V,KAAK6V,oBAAiBpV,GAE1BT,KAAKkV,UAAUzT,SAASgU,IACpBA,EAASlQ,WAAW/D,UACpBiU,EAASH,KAAK9T,SAAS,IAE3BxB,KAAKkV,UAAY,GACjBlV,KAAKiV,UAAUzT,UACfxB,KAAK+D,QAAQiD,QAChB,ECzIE,MAAM8O,EACT,gBAAIC,GACA,OAAO/V,KAAKyK,KAAKsL,YACpB,CACD,gBAAIC,GACA,OAAOhW,KAAKyK,KAAKuL,YACpB,CACD,iBAAIC,GACA,OAAOjW,KAAKyK,KAAKwL,aACpB,CACD,iBAAIC,GACA,OAAOlW,KAAKyK,KAAKyL,aACpB,CACD,YAAIrL,GACA,OAAO7K,KAAKyK,KAAKI,QACpB,CACD,QAAIC,GACA,OAAO9K,KAAKyK,KAAKK,IACpB,CACD,eAAIN,GACA,OAAOxK,KAAKiM,cAAgBb,EAAYgB,WAClCpM,KAAKiW,cACLjW,KAAK+V,YACd,CACD,eAAIpL,GACA,OAAO3K,KAAKiM,cAAgBb,EAAYgB,WAClCpM,KAAKkW,cACLlW,KAAKgW,YACd,CACD,yBAAIG,GACA,OAAOnW,KAAKiM,cAAgBb,EAAYgB,WAClCpM,KAAK+V,aACL/V,KAAKiW,aACd,CACD,yBAAIG,GACA,OAAOpW,KAAKiM,cAAgBb,EAAYgB,WAClCpM,KAAKgW,aACLhW,KAAKkW,aACd,CACD,kBAAItK,GACA,OAAO5L,KAAK6L,eACf,CACD,QAAIxH,GACA,OAAOrE,KAAKoK,KACf,CACD,WAAIrG,GACA,OAAO/D,KAAKyK,KAAK1G,OACpB,CACD,SAAI8P,GACA,OAAO7T,KAAKiM,cAAgBb,EAAYgB,WAClCpM,KAAK4L,eACL5L,KAAKqE,IACd,CACD,UAAIyP,GACA,OAAO9T,KAAKiM,cAAgBb,EAAYgB,WAClCpM,KAAKqE,KACLrE,KAAK4L,cACd,CACD,WAAAlM,CAAY+K,EAAMwB,EAAaL,EAAgBvH,EAAO,GAClDrE,KAAKyK,KAAOA,EACZzK,KAAKiM,YAAcA,EACnBjM,KAAKoV,aAAe,IAAI7S,EACxBvC,KAAKoR,YAAcpR,KAAKoV,aAAapS,MACrChD,KAAK6L,gBAAkBD,EACvB5L,KAAKoK,MAAQ/F,EACbrE,KAAKsF,YAActF,KAAKyK,KAAK2G,aAAapO,IAClCA,EACAhD,KAAKoV,aAAa3R,KAAK,CACnBY,KAAMrE,KAAKiM,cAAgBb,EAAYwI,SACjC5Q,EAAM6Q,MACN7Q,EAAM8Q,OACZlI,eAAgB5L,KAAKiM,cAAgBb,EAAYwI,SAC3C5Q,EAAM8Q,OACN9Q,EAAM6Q,QAIhB7T,KAAKoV,aAAa3R,KAAK,CAAA,EAC1B,GAER,CACD,UAAAyH,CAAWX,GACHvK,KAAKyK,KAAKS,aACVlL,KAAKyK,KAAKS,WAAWX,GACrBvK,KAAKoV,aAAa3R,KAAK,CAAA,GAE9B,CACD,MAAA2P,CAAO/O,EAAMuH,GACT5L,KAAKoK,MAAQ/F,EACbrE,KAAK6L,gBAAkBD,EACvB5L,KAAKyK,KAAK2I,OAAOpT,KAAK6T,MAAO7T,KAAK8T,OACrC,CACD,OAAAtS,GACIxB,KAAKoV,aAAa5T,UAClBxB,KAAKsF,YAAY9D,SACpB,EC7FE,MAAM6U,UAAmBvR,EAC5B,SAAI+O,GACA,OAAO7T,KAAKiM,cAAgBb,EAAYgB,WAClCpM,KAAKqE,KACLrE,KAAK4L,cACd,CACD,UAAIkI,GACA,OAAO9T,KAAKiM,cAAgBb,EAAYgB,WAClCpM,KAAK4L,eACL5L,KAAKqE,IACd,CACD,eAAImG,GACA,OAAgC,IAAzBxK,KAAKmB,SAASwC,OACf,EACAgG,KAAKD,OAAO1J,KAAKmB,SAASG,KAAKgV,GAAMA,EAAEH,wBAChD,CACD,eAAIxL,GACA,OAAOhB,KAAKF,OAAOzJ,KAAKmB,SAASG,KAAKgV,GAAMA,EAAEF,wBACjD,CACD,yBAAID,GACA,OAAOnW,KAAKiV,UAAUzK,WACzB,CACD,yBAAI4L,GACA,OAAOpW,KAAKiV,UAAUtK,WACzB,CACD,kBAAIiB,GACA,OAAO5L,KAAK6L,eACf,CACD,QAAIxH,GACA,OAAOrE,KAAKoK,KACf,CACD,gBAAI2L,GACA,OAAO/V,KAAKiM,cAAgBb,EAAYgB,WAClCpM,KAAKmW,sBACLnW,KAAKwK,WACd,CACD,iBAAIyL,GACA,OAAOjW,KAAKiM,cAAgBb,EAAYgB,WAClCpM,KAAKwK,YACLxK,KAAKmW,qBACd,CACD,gBAAIH,GACA,OAAOhW,KAAKiM,cAAgBb,EAAYgB,WAClCpM,KAAKoW,sBACLpW,KAAK2K,WACd,CACD,iBAAIuL,GACA,OAAOlW,KAAKiM,cAAgBb,EAAYgB,WAClCpM,KAAK2K,YACL3K,KAAKoW,qBACd,CACD,YAAIvL,GACA,GAA6B,IAAzB7K,KAAKmB,SAASwC,OACd,OAAO2H,EAAeiL,OAE1B,MAAMC,EAAaxW,KAAKmB,SAASG,KAAKgV,QAA4B,IAAfA,EAAEzL,SAC/CS,EAAeiL,OACfD,EAAEzL,WACR,OAAI2L,EAAWC,MAAMC,GAAMA,IAAMpL,EAAe0F,OACrC1F,EAAe0F,KAEjBwF,EAAWC,MAAMC,GAAMA,IAAMpL,EAAeyF,MAC1CzF,EAAeyF,IAEnBzF,EAAeiL,MACzB,CACD,WAAA7W,CAAYuM,EAAasD,EAAoBK,EAAQvL,EAAMuH,EAAgB+K,GAavE,GAZA5W,QACAC,KAAKiM,YAAcA,EACnBjM,KAAKuP,mBAAqBA,EAC1BvP,KAAK4P,OAASA,EACd5P,KAAK4W,oBAAsBnY,EAAWoG,KACtC7E,KAAKmB,SAAW,GAChBnB,KAAKoV,aAAe,IAAI7S,EACxBvC,KAAKoR,YAAcpR,KAAKoV,aAAapS,MACrChD,KAAK6L,gBAAkBD,EACvB5L,KAAKoK,MAAQ/F,EACbrE,KAAK+D,QAAUlF,SAASI,cAAc,OACtCe,KAAK+D,QAAQoD,UAAY,cACpBwP,EAQA,CACD,MAAM9G,EAAa,CACfC,MAAO6G,EAAiBrV,KAAKuV,IAClB,CACHpM,KAAMoM,EAAgBC,KACtBzS,KAAMwS,EAAgBC,KAAKzS,KAC3BkG,UAASsM,EAAgBC,gBAAgBhB,QACTrV,IAA5BoW,EAAgBtM,UACdsM,EAAgBtM,YAI9BlG,KAAMrE,KAAK4L,gBAEf5L,KAAKmB,SAAWwV,EAAiBrV,KAAKgV,GAAMA,EAAEQ,OAC9C9W,KAAKiV,UAAY,IAAItJ,EAAU3L,KAAK+D,QAAS,CACzCkI,YAAajM,KAAKiM,YAClB4D,aACAN,qBACAK,UAEP,MA5BG5P,KAAKiV,UAAY,IAAItJ,EAAU3L,KAAK+D,QAAS,CACzCkI,YAAajM,KAAKiM,YAClBsD,qBACAK,WAEJ5P,KAAKiV,UAAU7B,OAAOpT,KAAKqE,KAAMrE,KAAK4L,gBAwB1C5L,KAAKmF,eAAenF,KAAKoV,aAAcpV,KAAKiV,UAAU/H,cAAa,KAC/DlN,KAAKoV,aAAa3R,KAAK,CAAA,EAAG,KAE9BzD,KAAK+W,qBACR,CACD,UAAA7L,CAAWX,GACP,IAAK,MAAMhJ,KAASvB,KAAKmB,SACrBI,EAAM2J,WAAWX,EAExB,CACD,cAAAyM,CAAe3T,GACX,GAAIA,EAAQ,GAAKA,GAASrD,KAAKmB,SAASwC,OACpC,MAAM,IAAI7B,MAAM,iBAEpB,OAAO9B,KAAKiV,UAAU3E,cAAcjN,EACvC,CACD,eAAA4T,CAAgB5T,EAAOkH,GACnB,GAAIlH,EAAQ,GAAKA,GAASrD,KAAKmB,SAASwC,OACpC,MAAM,IAAI7B,MAAM,iBAEhB9B,KAAKiV,UAAU3E,cAAcjN,KAAWkH,GAG5CvK,KAAKiV,UAAU1E,eAAelN,EAAOkH,EACxC,CACD,SAAA2M,CAAUlN,EAAMC,GACZ,GAAID,IAASC,EACT,OAEJ,GAAID,EAAO,GAAKA,GAAQhK,KAAKmB,SAASwC,OAClC,MAAM,IAAI7B,MAAM,sBAEhBkI,EAAOC,GACPA,IAEJjK,KAAKiV,UAAU9B,SAASnJ,EAAMC,GAC9B,MAAM1I,EAAQvB,KAAKmX,aAAanN,GAChChK,KAAKoX,UAAU7V,EAAO0I,EACzB,CACD,YAAAoN,CAAahU,GACT,GAAIA,EAAQ,GAAKA,GAASrD,KAAKmB,SAASwC,OACpC,MAAM,IAAI7B,MAAM,iBAEpB,OAAO9B,KAAKiV,UAAUtE,YAAYtN,EACrC,CACD,WAAAiU,CAAYjU,EAAOgB,GACf,GAAIhB,EAAQ,GAAKA,GAASrD,KAAKmB,SAASwC,OACpC,MAAM,IAAI7B,MAAM,iBAEpB9B,KAAKiV,UAAUrE,WAAWvN,EAAOgB,EACpC,CACD,MAAA+O,CAAO/O,EAAMuH,GACT5L,KAAKoK,MAAQwB,EACb5L,KAAK6L,gBAAkBxH,EACvBrE,KAAKiV,UAAU7B,OAAOxH,EAAgBvH,EACzC,CACD,QAAAkT,CAAST,EAAMzS,EAAMhB,EAAOgO,GACxB,GAAIhO,EAAQ,GAAKA,EAAQrD,KAAKmB,SAASwC,OACnC,MAAM,IAAI7B,MAAM,iBAEpB9B,KAAKiV,UAAUhF,QAAQ6G,EAAMzS,EAAMhB,EAAOgO,GAC1CrR,KAAKoX,UAAUN,EAAMzT,EACxB,CACD,yBAAAmU,CAA0BnU,GACtB,GAAIA,EAAQ,GAAKA,GAASrD,KAAKmB,SAASwC,OACpC,MAAM,IAAI7B,MAAM,iBAEpB,OAAO9B,KAAKiV,UAAU/B,yBAAyB7P,EAClD,CACD,WAAAmO,CAAYnO,EAAO2M,GACf,GAAI3M,EAAQ,GAAKA,GAASrD,KAAKmB,SAASwC,OACpC,MAAM,IAAI7B,MAAM,iBAGpB,OADA9B,KAAKiV,UAAUhC,WAAW5P,EAAO2M,GAC1BhQ,KAAKmX,aAAa9T,EAC5B,CACD,SAAA+T,CAAUN,EAAMzT,GACZrD,KAAKmB,SAASoC,OAAOF,EAAO,EAAGyT,GAC/B9W,KAAK+W,qBACR,CACD,YAAAI,CAAa9T,GACT,MAAO9B,GAASvB,KAAKmB,SAASoC,OAAOF,EAAO,GAE5C,OADArD,KAAK+W,sBACExV,CACV,CACD,mBAAAwV,GACI/W,KAAK4W,oBAAoBpV,UACzBxB,KAAK4W,oBAAsBpY,EAAM0C,OAAOlB,KAAKmB,SAASG,KAAKgV,GAAMA,EAAElF,cAAxC5S,EAAuDkF,IAK9E1D,KAAKoV,aAAa3R,KAAK,CAAEY,KAAMX,EAAEkI,gBAAiB,GAEzD,CACD,OAAApK,GACIxB,KAAK4W,oBAAoBpV,UACzBxB,KAAKiV,UAAUzT,UACfxB,KAAKmB,SAASM,SAASF,GAAUA,EAAMC,YACvCzB,MAAMyB,SACT,EC/ML,SAASiW,EAASC,EAAcC,GAC5B,GAAID,aAAwB5B,EACxB,OAAO4B,EAEX,GAAIA,aAAwBrB,EACxB,OAAOoB,EAASC,EAAavW,SAASwW,EAAOD,EAAavW,SAASwC,OAAS,EAAI,GAAIgU,GAExF,MAAM,IAAI7V,MAAM,eACpB,CACA,SAAS8V,EAASd,EAAMzS,EAAMuH,GAC1B,GAAIkL,aAAgBT,EAAY,CAC5B,MAAMnM,EAAS,IAAImM,EAAWwB,EAAWf,EAAK7K,aAAc6K,EAAKvH,mBAAoBuH,EAAKlH,OAAQvL,EAAMuH,GACxG,IAAIkM,EAAY,EAChB,IAAK,IAAI1O,EAAI0N,EAAK3V,SAASwC,OAAS,EAAGyF,GAAK,EAAGA,IAAK,CAChD,MAAM7H,EAAQuV,EAAK3V,SAASiI,GACtB2O,EAAYxW,aAAiB8U,EAAa9U,EAAMqK,eAAiBrK,EAAM8C,KAC7E,IAAIkN,EAAwB,IAAduF,EAAKzS,KACb,EACAsF,KAAKsH,MAAO5M,EAAO0T,EAAajB,EAAKzS,MAC3CyT,GAAavG,EAEH,IAANnI,IACAmI,GAAWlN,EAAOyT,GAEtB5N,EAAOqN,SAASK,EAASrW,EAAOqK,EAAgB2F,GAAUA,EAAS,GAAG,EACzE,CACD,OAAOrH,CACV,CAEG,OAAO,IAAI4L,EAASgB,EAAKrM,KAAMoN,EAAWf,EAAK7K,aAAcL,EAErE,CACO,SAASoM,EAAcjU,GAC1B,MAAMkU,EAAgBlU,EAAQkU,cAC9B,IAAKA,EACD,MAAM,IAAInW,MAAM,wBAEpB,IAAIoW,EAAKD,EAAcE,kBACnB9U,EAAQ,EACZ,KAAO6U,IAAOnU,GAAWmU,IAAOD,EAAcG,kBAAoBF,GAC9DA,EAAKA,EAAGG,mBACRhV,IAEJ,OAAOA,CACX,CAOO,SAASiV,EAAgBvU,GAC5B,MAAMkU,EAAgBlU,EAAQkU,cAC9B,IAAKA,EACD,MAAM,IAAInW,MAAM,wBAEpB,GAAI,gBAAgByW,KAAKN,EAAc9Q,WACnC,MAAO,GAEX,MAAM9D,EAAQ2U,EAAcC,GAE5B,MAAO,IAAIK,EADML,EAAcA,cAAcA,cAAcA,eACrB5U,EAC1C,CACO,SAASmV,EAAoBC,EAAiBC,EAAUC,GAG3D,GAFoBC,EAAuBH,EAAiBC,KAC/BG,EAAwBF,GACX,CACtC,MAAOG,EAAMC,GAAUhQ,EAAK2P,GAC5B,IAAIrV,EAAQ0V,EAIZ,MAHkB,UAAdJ,GAAuC,WAAdA,IACzBtV,GAAS,GAEN,IAAIyV,EAAMzV,EACpB,CACI,CACD,MAAMA,EAAsB,UAAdsV,GAAuC,WAAdA,EAAyB,EAAI,EACpE,MAAO,IAAID,EAAUrV,EACxB,CACL,CACO,SAASwV,EAAwBF,GACpC,MAAqB,QAAdA,GAAqC,WAAdA,EACxBvN,EAAYwI,SACZxI,EAAYgB,UACtB,CACO,SAASwM,EAAuBH,EAAiBC,GACpD,OAAOA,EAAS/U,OAAS,GAAM,EACzBkU,EAAWY,GACXA,CACV,CACY,MAACZ,EAAc5L,GAAgBA,IAAgBb,EAAYgB,WACjEhB,EAAYwI,SACZxI,EAAYgB,WACX,SAAS4M,EAAiBlC,GAC7B,QAASA,EAAK3V,QAClB,CACA,MAAM8X,GAAsB,CAACnC,EAAM7K,KAC/B,MAAM5H,EAAO4H,IAAgBb,EAAYwI,SAAWkD,EAAKoC,IAAIrF,MAAQiD,EAAKoC,IAAIpF,OAC9E,OAAKkF,EAAiBlC,GAWf,CACH5X,KAAM,SACNwB,KAAMoW,EAAK3V,SAASG,KAAKgV,GAAM2C,GAAoB3C,EAAGuB,EAAW5L,MACjE5H,QAbsC,iBAA3ByS,EAAKzM,kBACL,CACHnL,KAAM,OACNwB,KAAMoW,EAAKrM,KAAK0O,SAChB9U,KAAMyS,EAAKzM,kBACXE,SAAS,GAGV,CAAErL,KAAM,OAAQwB,KAAMoW,EAAKrM,KAAK0O,SAAU9U,OAMpD,EAEE,MAAM+U,GACT,UAAIzV,GACA,OAAO3D,KAAKqZ,MAAQrZ,KAAKqZ,MAAMlY,SAASwC,OAAS,CACpD,CACD,eAAIsI,GACA,OAAOjM,KAAKsZ,KAAKrN,WACpB,CACD,eAAIA,CAAYA,GACZ,GAAIjM,KAAKsZ,KAAKrN,cAAgBA,EAC1B,OAEJ,MAAM5H,KAAEA,EAAIuH,eAAEA,GAAmB5L,KAAKsZ,KACtCtZ,KAAKsZ,KAAO1B,EAAS5X,KAAKsZ,KAAM1N,EAAgBvH,GAChDrE,KAAKsZ,KAAKlG,OAAO/O,EAAMuH,EAC1B,CACD,SAAIiI,GACA,OAAO7T,KAAKsZ,KAAKzF,KACpB,CACD,UAAIC,GACA,OAAO9T,KAAKsZ,KAAKxF,MACpB,CACD,gBAAIiC,GACA,OAAO/V,KAAKsZ,KAAKvD,YACpB,CACD,iBAAIE,GACA,OAAOjW,KAAKsZ,KAAKrD,aACpB,CACD,gBAAID,GACA,OAAOhW,KAAKsZ,KAAKpD,aACpB,CACD,iBAAIA,GACA,OAAOlW,KAAKsZ,KAAKpD,aACpB,CACD,SAAAqD,GAEI,MAAO,CACHD,KAFSL,GAAoBjZ,KAAKwZ,UAAWxZ,KAAKiM,aAGlD4H,MAAO7T,KAAK6T,MACZC,OAAQ9T,KAAK8T,OACb7H,YAAajM,KAAKiM,YAEzB,CACD,OAAAzK,GACIxB,KAAKuF,WAAW/D,UAChBxB,KAAKoV,aAAa5T,UAClBxB,KAAKsZ,KAAK9X,UACVxB,KAAK+D,QAAQiD,QAChB,CACD,KAAApE,GACI,MAAMqJ,EAAcjM,KAAKsZ,KAAKrN,YAC9BjM,KAAKsZ,KAAO,IAAIjD,EAAWpK,EAAajM,KAAKuP,mBAAoBvP,KAAK4P,OAAQ5P,KAAKsZ,KAAKjV,KAAMrE,KAAKsZ,KAAK1N,eAC3G,CACD,WAAA6N,CAAYC,EAAMC,GACd,MAAM1N,EAAcyN,EAAKzN,YACnB6H,EAAS7H,IAAgBb,EAAYwI,SAAW8F,EAAK5F,OAAS4F,EAAK7F,MACzE7T,KAAK4Z,aAAaF,EAAKJ,KAAMrN,EAAa0N,EAAc7F,EAC3D,CACD,YAAA8F,CAAaN,EAAMrN,EAAa0N,EAAc/N,GAC1C5L,KAAKsZ,KAAOtZ,KAAK6Z,iBAAiBP,EAAMrN,EAAa0N,EAAc/N,EACtE,CACD,gBAAAiO,CAAiB/C,EAAM7K,EAAa0N,EAAc/N,GAC9C,IAAI1B,EACJ,GAAkB,WAAd4M,EAAK5X,KAAmB,CACxB,MACMiC,EADqB2V,EAAKpW,KACIY,KAAKwY,IAC9B,CACHhD,KAAM9W,KAAK6Z,iBAAiBC,EAAiBjC,EAAW5L,GAAc0N,EAAc7C,EAAKzS,MACzFkG,QAASuP,EAAgBvP,YAGjCL,EAAS,IAAImM,EAAWpK,EAAajM,KAAKuP,mBAAoBvP,KAAK4P,OAAQkH,EAAKzS,KAChFuH,EACAzK,EACH,MAEG+I,EAAS,IAAI4L,EAAS6D,EAAaI,SAASjD,GAAO7K,EAAaL,EAAgBkL,EAAKzS,MAEzF,OAAO6F,CACV,CACD,QAAIoP,GACA,OAAOtZ,KAAKqZ,KACf,CACD,QAAIC,CAAKA,GACL,MAAMU,EAAUha,KAAKqZ,MACjBW,IACAA,EAAQxY,UACRxB,KAAK+D,QAAQyN,YAAYwI,EAAQjW,UAErC/D,KAAKqZ,MAAQC,EACbtZ,KAAK+D,QAAQ1E,YAAYW,KAAKqZ,MAAMtV,SACpC/D,KAAKuF,WAAWvD,MAAQhC,KAAKqZ,MAAMjI,aAAa1N,IAC5C1D,KAAKoV,aAAa3R,KAAKC,EAAE,GAEhC,CAKD,+BAAAuW,GACI,IAAKja,KAAKqZ,MACN,OAEJ,MAAMW,EAAUha,KAAKsZ,KAGrB,GAFAU,EAAQjW,QAAQiD,SAChBhH,KAAKqZ,MAAQ,IAAIhD,EAAWwB,EAAWmC,EAAQ/N,aAAcjM,KAAKuP,mBAAoBvP,KAAK4P,OAAQ5P,KAAKsZ,KAAK1N,eAAgB5L,KAAKsZ,KAAKjV,MACvG,IAA5B2V,EAAQ7Y,SAASwC,aAGhB,GAAgC,IAA5BqW,EAAQ7Y,SAASwC,OAAc,CAEpC,MAAMuW,EAAiBF,EAAQ7Y,SAAS,GAC1B6Y,EAAQxI,YAAY,GAC5BhQ,UACNwY,EAAQxY,UACRxB,KAAKqZ,MAAM9B,SAOXK,EAASsC,EAAgBA,EAAetO,eAAgBsO,EAAe7V,MAAOkH,EAAOC,WAAY,EACpG,MAEGxL,KAAKqZ,MAAM9B,SAASyC,EAASzO,EAAOC,WAAY,GAEpDxL,KAAK+D,QAAQ1E,YAAYW,KAAKqZ,MAAMtV,SACpC/D,KAAKuF,WAAWvD,MAAQhC,KAAKqZ,MAAMjI,aAAa1N,IAC5C1D,KAAKoV,aAAa3R,KAAKC,EAAE,GAEhC,CACD,IAAAmG,CAAK6O,GACD,OAAO1Y,KAAKma,gBAAgBzB,EAC/B,CACD,QAAA3E,CAAS2E,GACL,OAAO1Y,KAAKma,gBAAgBzB,GAAU,EACzC,CACD,OAAAc,CAAQd,GACJ,MAAM5B,EAAO4B,EAAW1Y,KAAKoa,QAAQ1B,GAAU,GAAK1Y,KAAKsZ,KACzD,OAAOtZ,KAAKqa,UAAUvD,EAAM9W,KAAKiM,YACpC,CACD,SAAAoO,CAAUvD,EAAM7K,EAAa5B,GACzB,MAAM6O,EAAM,CAAEpF,OAAQgD,EAAKhD,OAAQD,MAAOiD,EAAKjD,OAC/C,GAAIiD,aAAgBhB,EAChB,MAAO,CAAEoD,MAAKzO,KAAMqM,EAAKrM,KAAMJ,qBAEnC,MAAMlJ,EAAW,GACjB,IAAK,IAAIiI,EAAI,EAAGA,EAAI0N,EAAK3V,SAASwC,OAAQyF,IAAK,CAC3C,MAAM7H,EAAQuV,EAAK3V,SAASiI,GACtBkR,EAAwBxD,EAAKU,0BAA0BpO,GAC7DjI,EAASiC,KAAKpD,KAAKqa,UAAU9Y,EAAOsW,EAAW5L,GAAcqO,GAChE,CACD,MAAO,CAAEpB,MAAK/X,WACjB,CACD,eAAAgZ,CAAgBzB,EAAUvE,GAAU,GAChC,MAAOoG,EAAMzD,GAAQ9W,KAAKoa,QAAQ1B,GAClC,KAAM5B,aAAgBhB,GAClB,MAAM,IAAIhU,MAAM,oBAEpB,IAAK,IAAIsH,EAAImR,EAAK5W,OAAS,EAAGyF,GAAK,EAAGA,IAAK,CACvC,MAAMoR,EAAID,EAAKnR,GACTqR,EAAI/B,EAAStP,IAAM,EAIzB,GAHkC+K,EAC5BsG,EAAI,GAAK,EACTA,EAAI,EAAID,EAAErZ,SAASwC,OAErB,OAAO8T,EAAS+C,EAAErZ,SAASgT,EAAUsG,EAAI,EAAIA,EAAI,GAAItG,EAE5D,CACD,OAAOsD,EAASzX,KAAKsZ,KAAMnF,EAC9B,CACD,WAAAzU,CAAY6P,EAAoBK,EAAQ3D,GACpCjM,KAAKuP,mBAAqBA,EAC1BvP,KAAK4P,OAASA,EACd5P,KAAKuF,WAAa,IAAIF,EACtBrF,KAAKoV,aAAe,IAAI7S,EACxBvC,KAAKoR,YAAcpR,KAAKoV,aAAapS,MACrChD,KAAK+D,QAAUlF,SAASI,cAAc,OACtCe,KAAK+D,QAAQoD,UAAY,YACzBnH,KAAKsZ,KAAO,IAAIjD,EAAWpK,EAAasD,EAAoBK,EAAQ,EAAG,EAC1E,CACD,aAAAU,CAAcoI,GACV,MAAOI,EAAMzV,GAAS0F,EAAK2P,IAClB,CAAAgC,GAAU1a,KAAKoa,QAAQtB,GAChC,KAAM4B,aAAkBrE,GACpB,MAAM,IAAIvU,MAAM,yBAEpB,OAAO4Y,EAAO1D,eAAe3T,EAChC,CACD,cAAAkN,CAAemI,EAAUnO,GACrB,MAAOuO,EAAMzV,GAAS0F,EAAK2P,IAClB,CAAAgC,GAAU1a,KAAKoa,QAAQtB,GAChC,KAAM4B,aAAkBrE,GACpB,MAAM,IAAIvU,MAAM,yBAEpB4Y,EAAOzD,gBAAgB5T,EAAOkH,EACjC,CACD,QAAA4I,CAASwH,EAAgB3Q,EAAMC,GAC3B,MAAS,CAAAyQ,GAAU1a,KAAKoa,QAAQO,GAChC,KAAMD,aAAkBrE,GACpB,MAAM,IAAIvU,MAAM,oBAEpB4Y,EAAOxD,UAAUlN,EAAMC,EAC1B,CACD,OAAAgG,CAAQxF,EAAMpG,EAAMqU,GAChB,MAAOI,EAAMzV,GAAS0F,EAAK2P,IACpBkC,EAAcF,GAAU1a,KAAKoa,QAAQtB,GAC5C,GAAI4B,aAAkBrE,EAAY,CAC9B,MAAMS,EAAO,IAAIhB,EAASrL,EAAMoN,EAAW6C,EAAOzO,aAAcyO,EAAO9O,gBACvE8O,EAAOnD,SAAST,EAAMzS,EAAMhB,EAC/B,KACI,CACD,MAAOwX,KAAgBpM,GAAK,IAAImM,GAAczG,WACvC2G,KAAgBC,GAAM,IAAIjC,GAAM3E,UACvC,IAAI6G,EAAiB,EACrB,MAAMC,EAA8BJ,EAAYrD,0BAA0BsD,GAC/B,iBAAhCG,IACPD,EAAiBzP,EAAOG,UAAUuP,IAExBJ,EAAYrJ,YAAYsJ,GAChCtZ,UACN,MAAM0Z,EAAY,IAAI7E,EAAWqE,EAAOzO,YAAajM,KAAKuP,mBAAoBvP,KAAK4P,OAAQ8K,EAAOrW,KAAMqW,EAAO9O,gBAC/GiP,EAAYtD,SAAS2D,EAAWR,EAAOrW,KAAMyW,GAC7C,MAAMK,EAAa,IAAIrF,EAAS4E,EAAOjQ,KAAMoQ,EAAY5O,YAAayO,EAAOrW,MAC7E6W,EAAU3D,SAAS4D,EAAYH,EAAgB,GAC3B,iBAAT3W,GAAmC,UAAdA,EAAKnF,OACjCmF,EAAO,CAAEnF,KAAM,QAASmE,MAAO,IAEnC,MAAMyT,EAAO,IAAIhB,EAASrL,EAAMoQ,EAAY5O,YAAayO,EAAOrW,MAChE6W,EAAU3D,SAAST,EAAMzS,EAAMhB,EAClC,CACJ,CACD,MAAA2D,CAAOyD,EAAMuF,GACT,MAAM0I,EAAWJ,EAAgB7N,EAAK1G,SACtC,OAAO/D,KAAKiT,WAAWyF,EAAU1I,EACpC,CACD,UAAAiD,CAAWyF,EAAU1I,GACjB,MAAO8I,EAAMzV,GAAS0F,EAAK2P,IACpBkC,EAAcF,GAAU1a,KAAKoa,QAAQtB,GAC5C,KAAM4B,aAAkBrE,GACpB,MAAM,IAAIvU,MAAM,oBAEpB,MAAMsZ,EAAeV,EAAOvZ,SAASkC,GACrC,KAAM+X,aAAwBtF,GAC1B,MAAM,IAAIhU,MAAM,oBAIpB,GAFA4Y,EAAOlJ,YAAYnO,EAAO2M,GAC1BoL,EAAa5Z,UACkB,IAA3BkZ,EAAOvZ,SAASwC,OAChB,OAAOyX,EAAa3Q,KAOxB,MAAM4Q,EAAUX,EAAOvZ,SAAS,GAChC,GAA4B,IAAxByZ,EAAajX,OAEb,OAAI0X,aAAmBvF,IAOvB4E,EAAOlJ,YAAY,EAAGxB,GAEtBhQ,KAAKsZ,KAAO+B,GAPDD,EAAa3Q,KAW5B,MAAOoQ,KAAgBpM,GAAK,IAAImM,GAAczG,WACvC2G,KAAgBC,GAAM,IAAIjC,GAAM3E,UACjCmH,EAAmBZ,EAAO1D,eAAe,GAE/C0D,EAAOlJ,YAAY,EAAGxB,GAEtB,MAAMvC,EAAQoN,EAAY1Z,SAASG,KAAI,CAAC8I,EAAOhB,IAAMyR,EAAYxD,aAAajO,KAI9E,GADAyR,EAAYrJ,YAAYsJ,EAAa9K,GAAQxO,UACzC6Z,aAAmBhF,EAAY,CAE/B5I,EAAMlK,OAAOuX,EAAa,KAAMO,EAAQla,SAASG,KAAKgV,GAAMA,EAAEjS,QAE9D,IAAK,IAAI+E,EAAI,EAAGA,EAAIiS,EAAQla,SAASwC,OAAQyF,IAAK,CAC9C,MAAM7H,EAAQ8Z,EAAQla,SAASiI,GAC/ByR,EAAYtD,SAAShW,EAAOA,EAAM8C,KAAMyW,EAAc1R,EACzD,CAMD,KAAOiS,EAAQla,SAASwC,OAAS,GAC7B0X,EAAQ7J,YAAY,EAE3B,KACI,CAED,MAAM2J,EAAa,IAAIrF,EAASuF,EAAQ5Q,KAAMoN,EAAWwD,EAAQpP,aAAcoP,EAAQhX,MACjFkX,EAAgBD,EAChBD,EAAQzP,eACRL,EAAOG,UAAU2P,EAAQzP,gBAC/BiP,EAAYtD,SAAS4D,EAAYI,EAAeT,EACnD,CAEDO,EAAQ7Z,UAER,IAAK,IAAI4H,EAAI,EAAGA,EAAIqE,EAAM9J,OAAQyF,IAC9ByR,EAAYvD,YAAYlO,EAAGqE,EAAMrE,IAErC,OAAOgS,EAAa3Q,IACvB,CACD,MAAA2I,CAAOS,EAAOC,GACV,MAAOzP,EAAMuH,GAAkB5L,KAAKsZ,KAAKrN,cAAgBb,EAAYgB,WAC/D,CAAC0H,EAAQD,GACT,CAACA,EAAOC,GACd9T,KAAKsZ,KAAKlG,OAAO/O,EAAMuH,EAC1B,CACD,OAAAwO,CAAQ1B,EAAU5B,EAAO9W,KAAKsZ,KAAMiB,EAAO,IACvC,GAAwB,IAApB7B,EAAS/U,OACT,MAAO,CAAC4W,EAAMzD,GAElB,KAAMA,aAAgBT,GAClB,MAAM,IAAIvU,MAAM,oBAEpB,MAAOuB,KAAUyV,GAAQJ,EACzB,GAAIrV,EAAQ,GAAKA,GAASyT,EAAK3V,SAASwC,OACpC,MAAM,IAAI7B,MAAM,oBAEpB,MAAMP,EAAQuV,EAAK3V,SAASkC,GAE5B,OADAkX,EAAKnX,KAAK0T,GACH9W,KAAKoa,QAAQtB,EAAMvX,EAAOgZ,EACpC,EC1cE,MAAMiB,GACT,eAAIhR,GACA,OAAOxK,KAAKyb,UAAUjR,WACzB,CACD,eAAIG,GACA,OAAO3K,KAAKyb,UAAU9Q,WACzB,CACD,UAAImJ,GACA,OAAO9T,KAAKyb,UAAU3H,MACzB,CACD,SAAID,GACA,OAAO7T,KAAKyb,UAAU5H,KACzB,CACD,UAAIlQ,GACA,OAAO3D,KAAKyb,UAAU9X,MACzB,CACD,eAAIsI,GACA,OAAOjM,KAAKyb,UAAUxP,WACzB,CACD,UAAIyP,GACA,OAAO1b,KAAKyb,UAAUC,MACzB,CACD,uBAAIC,GACA,OAAO3b,KAAKyb,UAAUE,mBACzB,CACD,qBAAIC,GACA,OAAO5b,KAAKyb,UAAUG,iBACzB,CACD,gBAAIxO,GACA,OAAOpN,KAAKyb,UAAUrO,YACzB,CACD,mBAAIE,GACA,OAAOtN,KAAKyb,UAAUnO,eACzB,CACD,WAAA5N,CAAY+b,GACRzb,KAAKyb,UAAYA,CACpB,CACD,aAAAI,CAAchZ,GACV7C,KAAKyb,UAAUI,cAAchZ,EAChC,CACD,WAAAiZ,CAAYC,EAAO/L,GACfhQ,KAAKyb,UAAUK,YAAYC,EAAO/L,EACrC,CACD,KAAAgM,GACIhc,KAAKyb,UAAUO,OAClB,CACD,QAAAC,CAASxW,GACL,OAAOzF,KAAKyb,UAAUQ,SAASxW,EAClC,CACD,MAAA2N,CAAOS,EAAOC,GACV,OAAO9T,KAAKyb,UAAUrI,OAAOS,EAAOC,EACvC,CACD,QAAAoI,CAASrZ,GACL,OAAO7C,KAAKyb,UAAUS,SAASrZ,EAClC,CACD,SAAAsZ,CAAUnS,EAAMC,GACZjK,KAAKyb,UAAUU,UAAUnS,EAAMC,EAClC,CACD,QAAA8P,CAASrZ,GACLV,KAAKyb,UAAU1B,SAASrZ,EAC3B,CACD,MAAAyY,GACI,OAAOnZ,KAAKyb,UAAUtC,QACzB,CACD,KAAAvW,GACI5C,KAAKyb,UAAU7Y,OAClB,EAEE,MAAMwZ,GACT,eAAI5R,GACA,OAAOxK,KAAKyb,UAAUjR,WACzB,CACD,eAAIG,GACA,OAAO3K,KAAKyb,UAAU9Q,WACzB,CACD,UAAImJ,GACA,OAAO9T,KAAKyb,UAAU3H,MACzB,CACD,SAAID,GACA,OAAO7T,KAAKyb,UAAU5H,KACzB,CACD,UAAI6H,GACA,OAAO1b,KAAKyb,UAAUC,MACzB,CACD,qBAAIE,GACA,OAAO5b,KAAKyb,UAAUG,iBACzB,CACD,uBAAID,GACA,OAAO3b,KAAKyb,UAAUE,mBACzB,CACD,gBAAIvO,GACA,OAAOpN,KAAKyb,UAAUrO,YACzB,CACD,mBAAIE,GACA,OAAOtN,KAAKyb,UAAUnO,eACzB,CACD,aAAI+O,GACA,MAAMC,EAAU,IAAI/Z,EACdgD,EAAavF,KAAKyb,UAAUY,WAAW3Y,IACzC4Y,EAAQ7Y,KAAK8Y,OAAOC,OAAOD,OAAOC,OAAO,GAAI9Y,GAAI,CAAE+Y,IAAKzc,OAAQ,IAMpE,OAJAsc,EAAQ9a,QAAU,KACd+D,EAAW/D,UACX8a,EAAQ9a,SAAS,EAEd8a,EAAQtZ,KAClB,CACD,WAAAtD,CAAY+b,GACRzb,KAAKyb,UAAYA,CACpB,CACD,WAAAK,CAAYC,GACR/b,KAAKyb,UAAUK,YAAYC,EAC9B,CACD,QAAAE,CAASxW,GACL,OAAOzF,KAAKyb,UAAUQ,SAASxW,EAClC,CACD,SAAA0W,CAAUnS,EAAMC,GACZjK,KAAKyb,UAAUU,UAAUnS,EAAMC,EAClC,CACD,KAAA+R,GACIhc,KAAKyb,UAAUO,OAClB,CACD,MAAA5I,CAAOS,EAAOC,GACV9T,KAAKyb,UAAUrI,OAAOS,EAAOC,EAChC,CACD,QAAAoI,CAASrZ,GACL,OAAO7C,KAAKyb,UAAUS,SAASrZ,EAClC,CACD,QAAAkX,CAASrZ,GACLV,KAAKyb,UAAU1B,SAASrZ,EAC3B,CACD,MAAAyY,GACI,OAAOnZ,KAAKyb,UAAUtC,QACzB,CACD,KAAAvW,GACI5C,KAAKyb,UAAU7Y,OAClB,EAEE,MAAM8Z,GACT,iBAAIzG,GACA,OAAOjW,KAAKyb,UAAUxF,aACzB,CACD,iBAAIC,GACA,OAAOlW,KAAKyb,UAAUvF,aACzB,CACD,gBAAIH,GACA,OAAO/V,KAAKyb,UAAU1F,YACzB,CACD,gBAAIC,GACA,OAAOhW,KAAKyb,UAAUzF,YACzB,CACD,SAAInC,GACA,OAAO7T,KAAKyb,UAAU5H,KACzB,CACD,UAAIC,GACA,OAAO9T,KAAKyb,UAAU3H,MACzB,CACD,qBAAI8H,GACA,OAAO5b,KAAKyb,UAAUG,iBACzB,CACD,iBAAIe,GACA,OAAO3c,KAAKyb,UAAUmB,aACzB,CACD,oBAAIC,GACA,OAAO7c,KAAKyb,UAAUqB,gBACzB,CACD,0BAAIC,GACA,OAAO/c,KAAKyb,UAAUuB,sBACzB,CACD,uBAAIrB,GACA,OAAO3b,KAAKyb,UAAUE,mBACzB,CACD,UAAID,GACA,OAAO1b,KAAKyb,UAAUwB,MACzB,CACD,eAAIhR,GACA,OAAOjM,KAAKyb,UAAUxP,WACzB,CACD,eAAIA,CAAYjK,GACZhC,KAAKyb,UAAUI,cAAc,CAAE5P,YAAajK,GAC/C,CACD,WAAAtC,CAAY+b,GACRzb,KAAKyb,UAAYA,CACpB,CACD,KAAAO,GACIhc,KAAKyb,UAAUO,OAClB,CACD,MAAA5I,CAAOS,EAAOC,EAAQoJ,GAAQ,GAC1Bld,KAAKyb,UAAUrI,OAAOS,EAAOC,EAAQoJ,EACxC,CACD,QAAAhB,CAASrZ,GACL,OAAO7C,KAAKyb,UAAUS,SAASrZ,EAClC,CACD,WAAAiZ,CAAYC,EAAO/L,GACfhQ,KAAKyb,UAAUK,YAAYC,EAAO/L,EACrC,CACD,SAAAmM,CAAUJ,EAAOlZ,GACb7C,KAAKyb,UAAUU,UAAUJ,EAAOlZ,EACnC,CACD,QAAAoZ,CAASxW,GACL,OAAOzF,KAAKyb,UAAUQ,SAASxW,EAClC,CACD,QAAAsU,CAASrZ,GACL,OAAOV,KAAKyb,UAAU1B,SAASrZ,EAClC,CACD,MAAAyY,GACI,OAAOnZ,KAAKyb,UAAUtC,QACzB,CACD,KAAAvW,GACI5C,KAAKyb,UAAU7Y,OAClB,EAEE,MAAMua,GACT,MAAI1X,GACA,OAAOzF,KAAKyb,UAAUhW,EACzB,CACD,SAAIoO,GACA,OAAO7T,KAAKyb,UAAU5H,KACzB,CACD,UAAIC,GACA,OAAO9T,KAAKyb,UAAU3H,MACzB,CACD,iBAAImC,GACA,OAAOjW,KAAKyb,UAAUxF,aACzB,CACD,iBAAIC,GACA,OAAOlW,KAAKyb,UAAUvF,aACzB,CACD,gBAAIH,GACA,OAAO/V,KAAKyb,UAAU1F,YACzB,CACD,gBAAIC,GACA,OAAOhW,KAAKyb,UAAUzF,YACzB,CACD,QAAI3R,GACA,OAAOrE,KAAKyb,UAAUpX,IACzB,CACD,eAAI+Y,GACA,OAAOpd,KAAKyb,UAAU2B,WACzB,CACD,0BAAIJ,GACA,OAAOhd,KAAKyb,UAAUuB,sBACzB,CACD,iBAAIJ,GACA,OAAO5c,KAAKyb,UAAUmB,aACzB,CACD,oBAAIE,GACA,OAAO9c,KAAKyb,UAAUqB,gBACzB,CACD,0BAAIC,GACA,OAAO/c,KAAKyb,UAAUsB,sBACzB,CACD,iBAAIJ,GACA,OAAO3c,KAAKyb,UAAUkB,aACzB,CACD,oBAAIE,GACA,OAAO7c,KAAKyb,UAAUoB,gBACzB,CACD,uBAAIlB,GACA,OAAO3b,KAAKyb,UAAUE,mBACzB,CACD,qBAAIC,GACA,OAAO5b,KAAKyb,UAAUG,iBACzB,CACD,aAAIS,GACA,OAAOrc,KAAKyb,UAAUY,SACzB,CACD,mBAAIgB,GACA,OAAOrd,KAAKyb,UAAU4B,eACzB,CACD,mBAAIC,GACA,OAAOtd,KAAKyb,UAAU6B,eACzB,CACD,UAAI5B,GACA,OAAO1b,KAAKyb,UAAUC,MACzB,CACD,UAAIuB,GACA,OAAOjd,KAAKyb,UAAUwB,MACzB,CACD,eAAIM,GACA,OAAOvd,KAAKyb,UAAU8B,WACzB,CACD,eAAIC,GACA,OAAOxd,KAAKyb,UAAU+B,WACzB,CACD,WAAA9d,CAAY+b,GACRzb,KAAKyb,UAAYA,CACpB,CACD,KAAAO,GACIhc,KAAKyb,UAAUO,OAClB,CACD,QAAAC,CAASxW,GACL,OAAOzF,KAAKyb,UAAUgC,cAAchY,EACvC,CACD,MAAA2N,CAAOS,EAAOC,EAAQoJ,GAAQ,GAC1Bld,KAAKyb,UAAUrI,OAAOS,EAAOC,EAAQoJ,EACxC,CACD,QAAAhB,CAASrZ,GACL,OAAO7C,KAAKyb,UAAUS,SAASrZ,EAClC,CACD,WAAAiZ,CAAYC,GACR/b,KAAKyb,UAAUK,YAAYC,EAC9B,CACD,QAAA2B,CAAS7a,GACL,OAAO7C,KAAKyb,UAAUiC,SAAS7a,EAClC,CACD,UAAA8a,CAAW9a,GACP7C,KAAKyb,UAAUkC,WAAW9a,EAC7B,CACD,cAAA+a,CAAe/a,GACX7C,KAAKyb,UAAUmC,eAAe/a,EACjC,CACD,cAAAgb,GACI,OAAO7d,KAAKyb,UAAUoC,gBACzB,CACD,WAAAC,CAAYC,GACR/d,KAAKyb,UAAUqC,YAAYC,EAC9B,CACD,QAAAC,CAASvY,GACL,OAAOzF,KAAKyb,UAAUQ,SAASxW,EAClC,CACD,gBAAAwY,CAAiB1R,EAAM2R,GACnB,OAAOle,KAAKyb,UAAUwC,iBAAiB1R,EAAM2R,EAChD,CACD,QAAAnE,CAASrZ,GACLV,KAAKyb,UAAU1B,SAASrZ,EAC3B,CACD,MAAAyY,GACI,OAAOnZ,KAAKyb,UAAUtC,QACzB,CACD,KAAAvW,GACI5C,KAAKyb,UAAU7Y,OAClB,EC3UE,MAAMub,WAA4BrZ,EACrC,WAAApF,CAAYqE,EAASqa,GACjBre,QACAC,KAAK+D,QAAUA,EACf/D,KAAKoe,UAAYA,EACjBpe,KAAKqe,OAAS,KACdre,KAAKse,mBACR,CACD,iBAAAA,GACIte,KAAKmF,eAAejB,EAAsBlE,KAAK+D,QAAS,aAAcL,IAClE1D,KAAKqe,OAAS3a,EAAE2a,OAChBre,KAAKoe,UAAUG,YAAY7a,EAAE,IAC9B,IACH1D,KAAKmF,eAAejB,EAAsBlE,KAAK+D,QAAS,YAAaL,IACjEA,EAAE8a,iBACExe,KAAKoe,UAAUK,YACfze,KAAKoe,UAAUK,WAAW/a,EAC7B,IACF,IACH1D,KAAKmF,eAAejB,EAAsBlE,KAAK+D,QAAS,aAAcL,IAC9D1D,KAAKqe,SAAW3a,EAAE2a,SAClBre,KAAKqe,OAAS,KACdre,KAAKoe,UAAUM,YAAYhb,GAC9B,KAEL1D,KAAKmF,eAAejB,EAAsBlE,KAAK+D,QAAS,WAAYL,IAChE1D,KAAKqe,OAAS,KACdre,KAAKoe,UAAUO,UAAUjb,EAAE,KAE/B1D,KAAKmF,eAAejB,EAAsBlE,KAAK+D,QAAS,QAASL,IAC7D1D,KAAKoe,UAAUQ,OAAOlb,EAAE,IAE/B,EC1BE,SAASmb,GAAoBlG,GAChC,OAAQA,GACJ,IAAK,QACD,MAAO,MACX,IAAK,QACD,MAAO,SACX,IAAK,OACD,MAAO,OACX,IAAK,QACD,MAAO,QACX,IAAK,SACD,MAAO,SACX,QACI,MAAM,IAAI7W,MAAM,sBAAsB6W,MAElD,CACO,SAASmG,GAAoBxK,GAChC,OAAQA,GACJ,IAAK,MACD,MAAO,QACX,IAAK,SACD,MAAO,QACX,IAAK,OACD,MAAO,OACX,IAAK,QACD,MAAO,QACX,IAAK,SACD,MAAO,SACX,QACI,MAAM,IAAIxS,MAAM,qBAAqBwS,MAEjD,CACO,MAAMyK,WAAmBja,EAC5B,SAAIgQ,GACA,OAAO9U,KAAKgf,MACf,CACD,WAAAtf,CAAYqE,EAASlB,GACjB9C,QACAC,KAAK+D,QAAUA,EACf/D,KAAK6C,QAAUA,EACf7C,KAAKif,QAAU,IAAI1c,EACnBvC,KAAK4e,OAAS5e,KAAKif,QAAQjc,MAE3BhD,KAAKkf,wBAA0B,IAAIC,IAAInf,KAAK6C,QAAQuc,qBACpDpf,KAAKmF,eAAenF,KAAKif,QAAS,IAAId,GAAoBne,KAAK+D,QAAS,CACpEwa,YAAa,KAAe,EAC5BE,WAAa/a,IACT,GAA0C,IAAtC1D,KAAKkf,wBAAwB7a,KAE7B,YADArE,KAAKqf,mBAGT,MAAMxL,EAAQ7T,KAAK+D,QAAQub,YACrBxL,EAAS9T,KAAK+D,QAAQwb,aAC5B,GAAc,IAAV1L,GAA0B,IAAXC,EACf,OAEJ,MAAM0L,EAAO9b,EAAE+b,cAAcC,wBACvBhS,EAAIhK,EAAEoO,QAAU0N,EAAK9L,KACrBiM,EAAIjc,EAAEqO,QAAUyN,EAAK7L,IACrBiM,EAAW5f,KAAK6f,kBAAkB7f,KAAKkf,wBAAyBxR,EAAGiS,EAAG9L,EAAOC,GAMnF,GAAI9T,KAAK8f,cAAcpc,IAAmB,OAAbkc,EAEzB5f,KAAKqf,uBAFT,CAKA,GAA8C,kBAAnCrf,KAAK6C,QAAQkd,mBACpB,IAAK/f,KAAK6C,QAAQkd,kBAEd,YADA/f,KAAKqf,wBAIR,IAAKrf,KAAK6C,QAAQkd,kBAAkBrc,EAAGkc,GAExC,YADA5f,KAAKqf,mBAGTrf,KAAKggB,WAAWtc,GACX1D,KAAKigB,gBACNjgB,KAAKigB,cAAgBphB,SAASI,cAAc,OAC5Ce,KAAKigB,cAAc9Y,UAAY,uBAC/BnH,KAAKkgB,eAAiBrhB,SAASI,cAAc,OAC7Ce,KAAKkgB,eAAe/Y,UAAY,wBAChCnH,KAAKgf,OAAS,SACdhf,KAAKigB,cAAc5gB,YAAYW,KAAKkgB,gBACpClgB,KAAK+D,QAAQ+C,UAAUtD,IAAI,eAC3BxD,KAAK+D,QAAQoc,OAAOngB,KAAKigB,gBAE7BjgB,KAAKogB,cAAcR,EAAU/L,EAAOC,GACpC9T,KAAKqgB,SAAST,EAvBb,CAuBsB,EAE3BlB,YAAa,KACT1e,KAAKqf,kBAAkB,EAE3BV,UAAW,KACP3e,KAAKqf,kBAAkB,EAE3BT,OAASlb,IACLA,EAAE8a,iBACF,MAAM1J,EAAQ9U,KAAKgf,OACnBhf,KAAKqf,mBACDvK,IAGApR,EAAE4c,kBACFtgB,KAAKif,QAAQxb,KAAK,CAAE6Q,SAAUQ,EAAOyL,YAAa7c,IACrD,IAGZ,CACD,cAAA8c,CAAepB,GACXpf,KAAKkf,wBAA0B,IAAIC,IAAIC,EAC1C,CACD,OAAA5d,GACIxB,KAAKqf,mBACLtf,MAAMyB,SACT,CAID,UAAAwe,CAAWhd,GACPA,EAAM+b,GAAW0B,gBAAiB,CACrC,CAID,aAAAX,CAAc9c,GACV,MAAMhB,EAAQgB,EAAM+b,GAAW0B,eAC/B,MAAwB,kBAAVze,GAAuBA,CACxC,CACD,aAAAoe,CAAcR,EAAU/L,EAAOC,GAC3B,IAAIjS,EAAI6e,EAAIC,EAAIC,EAChB,IAAK5gB,KAAKkgB,eACN,OAEJ,MAAMW,EAAWhN,EAAQ,IACnBiN,EAAWhN,EAAS,IACpBiN,EAAsB,SAAbnB,EACToB,EAAuB,UAAbpB,EACVqB,EAAqB,QAAbrB,EACRsB,EAAwB,WAAbtB,EACXuB,GAAcN,GAAYG,EAC1BI,GAAaP,GAAYE,EACzBM,GAAYP,GAAYG,EACxBK,GAAeR,GAAYI,EACjC,IAAI7c,EAAO,GACiI,gBAA9C,QAAxFqc,EAA0C,QAApC7e,EAAK7B,KAAK6C,QAAQ0e,oBAAiC,IAAP1f,OAAgB,EAASA,EAAGwC,YAAyB,IAAPqc,OAAgB,EAASA,EAAGxhB,QAC9HmF,EAAOmF,EAAMxJ,KAAK6C,QAAQ0e,aAAald,KAAKrC,MAAO,EAAG,KAAO,KAE2E,YAA9C,QAAxF4e,EAA0C,QAApCD,EAAK3gB,KAAK6C,QAAQ0e,oBAAiC,IAAPZ,OAAgB,EAASA,EAAGtc,YAAyB,IAAPuc,OAAgB,EAASA,EAAG1hB,SAC1HiiB,GAAcC,KACd/c,EACImF,EAAM,EAAGxJ,KAAK6C,QAAQ0e,aAAald,KAAKrC,MAAO6R,GAC3CA,IAERwN,GAAYC,KACZjd,EACImF,EAAM,EAAGxJ,KAAK6C,QAAQ0e,aAAald,KAAKrC,MAAO8R,GAC3CA,IAGhB,MAAM0N,GAAa,EAAInd,GAAQ,EAE/B,IAAIod,EAEAA,EADAN,EACY,cAAc,IAAMK,cAHtBnd,KAKL+c,EACO,eAAe,IAAMI,cANvBnd,KAQLgd,EACO,eAAe,IAAMG,cATvBnd,KAWLid,EACO,cAAc,IAAME,cAZtBnd,KAeE,GAEhBrE,KAAKkgB,eAAelhB,MAAMyiB,UAAYA,EACtCva,EAAYlH,KAAKkgB,eAAgB,cAAeW,GAAYG,GAC5D9Z,EAAYlH,KAAKkgB,eAAgB,aAAcW,GAAYE,GAC3D7Z,EAAYlH,KAAKkgB,eAAgB,YAAaY,GAAYG,GAC1D/Z,EAAYlH,KAAKkgB,eAAgB,eAAgBY,GAAYI,EAChE,CACD,QAAAb,CAAST,GACL,OAAQA,GACJ,IAAK,MACD5f,KAAKgf,OAAS,MACd,MACJ,IAAK,OACDhf,KAAKgf,OAAS,OACd,MACJ,IAAK,SACDhf,KAAKgf,OAAS,SACd,MACJ,IAAK,QACDhf,KAAKgf,OAAS,QACd,MACJ,IAAK,SACDhf,KAAKgf,OAAS,SAGzB,CACD,iBAAAa,CAAkB6B,EAAahU,EAAGiS,EAAG9L,EAAOC,GACxC,IAAIjS,EAAI6e,EAAIC,EAAIC,EAAIe,EAAIC,EACxB,MAAMC,OAA6GphB,KAAxD,QAApCoB,EAAK7B,KAAK6C,QAAQ0e,oBAAiC,IAAP1f,OAAgB,EAASA,EAAGigB,iBACuD,gBAA9C,QAAlGnB,EAA0C,QAApCD,EAAK1gB,KAAK6C,QAAQ0e,oBAAiC,IAAPb,OAAgB,EAASA,EAAGoB,sBAAmC,IAAPnB,OAAgB,EAASA,EAAGzhB,MACtI8C,GAtNY+f,EAsN+J,QAAjJH,EAAyF,QAAnFD,EAA6B,QAAvBf,EAAK5gB,KAAK6C,eAA4B,IAAP+d,OAAgB,EAASA,EAAGW,oBAAiC,IAAPI,OAAgB,EAASA,EAAGG,sBAAmC,IAAPF,OAAgB,EAASA,EAAG5f,MAtNtL8D,EAsN6L,GArNlM,iBAAhBic,EAA2BA,EAAcjc,GAD3D,IAA0Bic,EAAajc,EAuN/B,OAAI+b,EAgBL,SAAuCH,EAAahU,EAAGiS,EAAG9L,EAAOC,EAAQkO,GAC5E,MAAMC,EAAM,IAAMvU,EAAKmG,EACjBqO,EAAM,IAAMvC,EAAK7L,EACvB,GAAI4N,EAAYS,IAAI,SAAWF,EAAKD,EAChC,MAAO,OAEX,GAAIN,EAAYS,IAAI,UAAYF,EAAK,IAAMD,EACvC,MAAO,QAEX,GAAIN,EAAYS,IAAI,QAAUD,EAAKF,EAC/B,MAAO,MAEX,GAAIN,EAAYS,IAAI,WAAaD,EAAK,IAAMF,EACxC,MAAO,SAEX,IAAKN,EAAYS,IAAI,UACjB,OAAO,KAEX,MAAO,QACX,CAlCmBC,CAA8BV,EAAahU,EAAGiS,EAAG9L,EAAOC,EAAQ9R,GAmC5E,SAAmC0f,EAAahU,EAAGiS,EAAG9L,EAAOC,EAAQkO,GACxE,GAAIN,EAAYS,IAAI,SAAWzU,EAAIsU,EAC/B,MAAO,OAEX,GAAIN,EAAYS,IAAI,UAAYzU,EAAImG,EAAQmO,EACxC,MAAO,QAEX,GAAIN,EAAYS,IAAI,QAAUxC,EAAIqC,EAC9B,MAAO,MAEX,GAAIN,EAAYS,IAAI,WAAaxC,EAAI7L,EAASkO,EAC1C,MAAO,SAEX,IAAKN,EAAYS,IAAI,UACjB,OAAO,KAEX,MAAO,QACX,CAlDeE,CAA0BX,EAAahU,EAAGiS,EAAG9L,EAAOC,EAAQ9R,EACtE,CACD,gBAAAqd,GACQrf,KAAKigB,gBACLjgB,KAAKgf,YAASve,EACdT,KAAK+D,QAAQyN,YAAYxR,KAAKigB,eAC9BjgB,KAAKigB,mBAAgBxf,EACrBT,KAAKkgB,oBAAiBzf,EACtBT,KAAK+D,QAAQ+C,UAAUE,OAAO,eAErC,EAEL+X,GAAW0B,cAAgB,wCCxOpB,MAAM6B,WAAyBxd,EAClC,WAAIf,GACA,OAAO/D,KAAKuiB,QACf,CACD,WAAA7iB,GACIK,QACAC,KAAKuF,WAAa,IAAIF,EACtBrF,KAAKgI,YAAc,IAAIzF,EACvBvC,KAAKiI,WAAajI,KAAKgI,YAAYhF,MACnChD,KAAKkI,WAAa,IAAI3F,EACtBvC,KAAKmI,UAAYnI,KAAKkI,WAAWlF,MACjChD,KAAKuiB,SAAW1jB,SAASI,cAAc,OACvCe,KAAKuiB,SAASpb,UAAY,oBAC1BnH,KAAKuiB,SAASC,UAAY,EAC1BxiB,KAAKmF,eAAenF,KAAKgI,YAAahI,KAAKkI,WAM9C,CACD,IAAAua,GACIziB,KAAK+D,QAAQ/E,MAAM0jB,QAAU,EAChC,CACD,IAAAC,GACI3iB,KAAK+D,QAAQ/E,MAAM0jB,QAAU,MAChC,CACD,SAAAE,CAAU7G,GACN,IAAIla,EACJ,GAAI7B,KAAK+b,QAAUA,EACf,OAEA/b,KAAK+b,SAC0B,QAA1Bla,EAAK7B,KAAK+b,MAAMtR,YAAyB,IAAP5I,OAAgB,EAASA,EAAGghB,UAC/D7iB,KAAKuiB,SAAS/Q,YAAYxR,KAAK+b,MAAMtR,KAAKoY,QAAQ9e,SAEtD/D,KAAK+b,WAAQtb,GAEjBT,KAAK+b,MAAQA,EACb,MAAMxW,EAAa,IAAIT,EACvB,GAAI9E,KAAK+b,MAAMtR,KAAM,CACjB,MAAMzC,EAAchI,KAAK+b,MAAMtR,KAAKoY,QAAQ5a,WACtCC,EAAalI,KAAK+b,MAAMtR,KAAKoY,QAAQ1a,UACrC2a,EAAehb,EAAW9H,KAAKuiB,UACrChd,EAAWJ,eAAe2d,EAAcA,EAAa7a,YAAW,IAAMjI,KAAKgI,YAAYvE,SAASqf,EAAa3a,WAAU,IAAMnI,KAAKkI,WAAWzE,UACzIuE,GACAzC,EAAWJ,eAAe6C,GAAY,IAAMhI,KAAKgI,YAAYvE,UAE7DyE,GACA3C,EAAWJ,eAAe+C,GAAW,IAAMlI,KAAKkI,WAAWzE,UAE/DzD,KAAKuiB,SAASljB,YAAYW,KAAK+b,MAAMtR,KAAKoY,QAAQ9e,QACrD,CACD/D,KAAKuF,WAAWvD,MAAQuD,CAC3B,CACD,MAAA6N,CAAO2P,EAAQC,GAEd,CACD,UAAAC,GACI,IAAIphB,EAAI6e,EAAIC,GACyH,QAAhIA,EAA+E,QAAzED,EAA2B,QAArB7e,EAAK7B,KAAK+b,aAA0B,IAAPla,OAAgB,EAASA,EAAG4I,YAAyB,IAAPiW,OAAgB,EAASA,EAAGmC,eAA4B,IAAPlC,OAAgB,EAASA,EAAG5c,WACrK/D,KAAKuiB,SAAS/Q,YAAYxR,KAAK+b,MAAMtR,KAAKoY,QAAQ9e,SAClD/D,KAAK+b,WAAQtb,EAEpB,CACD,OAAAe,GACIxB,KAAKuF,WAAW/D,UAChBzB,MAAMyB,SACT,ECvEK,IAAC0hB,IACX,SAAWA,GACPA,EAAoBA,EAAyB,IAAI,GAAK,MACtDA,EAAoBA,EAA2B,MAAI,GAAK,QACxDA,EAAoBA,EAAkC,aAAI,GAAK,eAC/DA,EAAoBA,EAA0B,KAAI,GAAK,MAC1D,CALD,CAKGA,KAAwBA,GAAsB,CAAA,ICH1C,MAAMC,WAAoBre,EAC7B,WAAApF,CAAYwY,GACRnY,QACAC,KAAKkY,GAAKA,EACVlY,KAAKojB,eAAiB,IAAI/d,EAC1BrF,KAAKqjB,wBAA0B,IAAIhe,EACnCrF,KAAKsjB,aAAe,IAAI/gB,EACxBvC,KAAKujB,YAAcvjB,KAAKsjB,aAAatgB,MACrChD,KAAKmF,eAAenF,KAAKsjB,aAActjB,KAAKojB,eAAgBpjB,KAAKqjB,yBACjErjB,KAAKwjB,WACR,CACD,WAAAC,CAAYxgB,GACR,OAAO,CACV,CACD,SAAAugB,GACIxjB,KAAKmF,eAAenF,KAAKsjB,aAAcpf,EAAsBlE,KAAKkY,GAAI,aAAclV,IAChF,GAAIA,EAAM0gB,kBAAoB1jB,KAAKyjB,YAAYzgB,GAE3C,YADAA,EAAMwb,iBAGV,MAAM7M,EAAU,IACT5S,EAAqB,aACrBA,EAAqB,YAE5BiB,KAAKqjB,wBAAwBrhB,MAAQ,CACjCR,QAAS,KACL,IAAK,MAAMoQ,KAAUD,EACjBC,EAAO5S,MAAMiM,cAAgB,MAChC,GAGT,IAAK,MAAM2G,KAAUD,EACjBC,EAAO5S,MAAMiM,cAAgB,OAMjC,GAJAjL,KAAKkY,GAAGpR,UAAUtD,IAAI,cACtBoB,YAAW,IAAM5E,KAAKkY,GAAGpR,UAAUE,OAAO,eAAe,GACzDhH,KAAKojB,eAAephB,MAAQhC,KAAKW,QAAQqC,GACzChD,KAAKsjB,aAAa7f,KAAKT,GACnBA,EAAM2gB,aAAc,CACpB3gB,EAAM2gB,aAAaC,cAAgB,OACnB5gB,EAAM2gB,aAAaE,MAAMlgB,OAAS,GAW9CX,EAAM2gB,aAAa/iB,QAAQ,aAAc,mCAEhD,KACDsD,EAAsBlE,KAAKkY,GAAI,WAAW,KAC1ClY,KAAKqjB,wBAAwB7hB,UAC7BxB,KAAKojB,eAAe5hB,SAAS,IAEpC,ECtDL,MAAMsiB,WAAuBX,GACzB,WAAAzjB,CAAYqE,EAASggB,EAAUhG,EAAOhC,GAClChc,MAAMgE,GACN/D,KAAK+jB,SAAWA,EAChB/jB,KAAK+d,MAAQA,EACb/d,KAAK+b,MAAQA,EACb/b,KAAKc,cAAgBX,EAAuBC,aAC/C,CACD,OAAAO,CAAQqC,GAEJ,OADAhD,KAAKc,cAAcF,QAAQ,CAAC,IAAIjB,EAAcK,KAAK+jB,SAASte,GAAIzF,KAAK+d,MAAMtY,GAAIzF,KAAK+b,MAAMtW,KAAM9F,EAAcoB,WACvG,CACHS,QAAS,KACLxB,KAAKc,cAAcN,UAAUb,EAAcoB,UAAU,EAGhE,EAEE,MAAMijB,WAAYlf,EACrB,WAAIf,GACA,OAAO/D,KAAKuiB,QACf,CACD,WAAA7iB,CAAYqc,EAAOgI,EAAUhG,GACzBhe,QACAC,KAAK+b,MAAQA,EACb/b,KAAK+jB,SAAWA,EAChB/jB,KAAK+d,MAAQA,EACb/d,KAAK6iB,aAAUpiB,EACfT,KAAKikB,WAAa,IAAI1hB,EACtBvC,KAAKkkB,UAAYlkB,KAAKikB,WAAWjhB,MACjChD,KAAKmkB,WAAa,IAAI5hB,EACtBvC,KAAK4e,OAAS5e,KAAKmkB,WAAWnhB,MAC9BhD,KAAKsjB,aAAe,IAAI/gB,EACxBvC,KAAKujB,YAAcvjB,KAAKsjB,aAAatgB,MACrChD,KAAKuiB,SAAW1jB,SAASI,cAAc,OACvCe,KAAKuiB,SAASpb,UAAY,MAC1BnH,KAAKuiB,SAASC,SAAW,EACzBxiB,KAAKuiB,SAAS6B,WAAY,EAC1Bld,EAAYlH,KAAK+D,QAAS,gBAAgB,GAC1C,MAAMsgB,EAAc,IAAIP,GAAe9jB,KAAKuiB,SAAUviB,KAAK+jB,SAAU/jB,KAAK+d,MAAO/d,KAAK+b,OACtF/b,KAAKskB,WAAa,IAAIvF,GAAW/e,KAAKuiB,SAAU,CAC5CnD,oBAAqB,CAAC,UACtBW,kBAAmB,CAAC/c,EAAOsR,KACvB,GAAItU,KAAK+d,MAAMwG,OACX,OAAO,EAEX,MAAM7jB,EAAOG,IACb,OAAIH,GAAQV,KAAK+jB,SAASte,KAAO/E,EAAKd,QACb,OAAjBc,EAAKZ,SACLY,EAAKb,UAAYG,KAAK+d,MAAMtY,KAIzBzF,KAAK+b,MAAMtW,KAAO/E,EAAKZ,QAE3BE,KAAK+d,MAAMyG,MAAMzE,kBAAkB/c,EAAOsR,EAAU4O,GAAoBc,IAAI,IAG3FhkB,KAAKmF,eAAenF,KAAKikB,WAAYjkB,KAAKmkB,WAAYnkB,KAAKsjB,aAAce,EAAYd,aAAavgB,IAC9FhD,KAAKsjB,aAAa7f,KAAKT,EAAM,IAC7BqhB,EAAangB,EAAsBlE,KAAKuiB,SAAU,aAAcvf,IAC5DA,EAAM0gB,kBAGV1jB,KAAKikB,WAAWxgB,KAAKT,EAAM,IAC3BhD,KAAKskB,WAAW1F,QAAQ5b,IACxBhD,KAAKmkB,WAAW1gB,KAAKT,EAAM,IAC3BhD,KAAKskB,WACZ,CACD,SAAAG,CAAUC,GACNxd,EAAYlH,KAAK+D,QAAS,aAAc2gB,GACxCxd,EAAYlH,KAAK+D,QAAS,gBAAiB2gB,EAC9C,CACD,UAAAC,CAAWC,GACH5kB,KAAK6iB,SACL7iB,KAAKuiB,SAAS/Q,YAAYxR,KAAK6iB,QAAQ9e,SAE3C/D,KAAK6iB,QAAU+B,EACf5kB,KAAKuiB,SAASljB,YAAYW,KAAK6iB,QAAQ9e,QAC1C,CACD,OAAAvC,GACIzB,MAAMyB,SACT,ECnFE,MAAMqjB,WAAyB1B,GAClC,WAAAzjB,CAAYqE,EAASggB,EAAUhG,GAC3Bhe,MAAMgE,GACN/D,KAAK+jB,SAAWA,EAChB/jB,KAAK+d,MAAQA,EACb/d,KAAKc,cAAgBX,EAAuBC,cAC5CJ,KAAKmF,eAAejB,EAAsBH,EAAS,aAAcL,IACzDA,EAAEohB,WAMkBphB,EhBsG1BmF,IAA6B,EgBrG1B,IACF,GACN,CACD,WAAA4a,CAAYxgB,GACR,SAAIjD,KAAK+d,MAAMtB,IAAIsI,YAAe9hB,EAAO6hB,SAI5C,CACD,OAAAnkB,CAAQqkB,GACJ,MAAMrB,EAAeqB,EAAUrB,aAC/B3jB,KAAKc,cAAcF,QAAQ,CAAC,IAAIjB,EAAcK,KAAK+jB,SAASte,GAAIzF,KAAK+d,MAAMtY,GAAI,OAAQ9F,EAAcoB,WACrG,MAAM/B,EAAQyJ,OAAOwc,iBAAiBjlB,KAAKkY,IACrCgN,EAAUlmB,EAAMmmB,iBAAiB,sDACjCC,EAAQpmB,EAAMmmB,iBAAiB,2CACrC,GAAIxB,EAAc,CACd,MAAM0B,EAAexmB,SAASI,cAAc,OAC5ComB,EAAarmB,MAAMsmB,gBAAkBJ,EACrCG,EAAarmB,MAAMomB,MAAQA,EAC3BC,EAAarmB,MAAMumB,QAAU,UAC7BF,EAAarmB,MAAM8U,OAAS,OAC5BuR,EAAarmB,MAAMwmB,SAAW,OAC9BH,EAAarmB,MAAMymB,WAAa,OAChCJ,EAAarmB,MAAM0mB,aAAe,OAClCL,EAAarmB,MAAMsV,SAAW,WAC9B+Q,EAAaM,YAAc,oBAAoB3lB,KAAK+d,MAAM1Z,QC3C/D,SAAuBsf,EAAc0B,GAExCpe,EAAWoe,EAAc,cACzBxmB,SAAS+mB,KAAKvmB,YAAYgmB,GAC1B1B,EAAakC,aAAaR,EAAc,EAAG,GAC3CzgB,YAAW,KACP+B,EAAc0e,EAAc,cAC5BA,EAAare,QAAQ,GACtB,EACP,CDmCY8e,CAAcnC,EAAc0B,EAC/B,CACD,MAAO,CACH7jB,QAAS,KACLxB,KAAKc,cAAcN,UAAUb,EAAcoB,UAAU,EAGhE,EE7CE,MAAMglB,WAAsBjhB,EAC/B,WAAIf,GACA,OAAO/D,KAAKuiB,QACf,CACD,WAAA7iB,CAAYqkB,EAAUhG,GAClBhe,QACAC,KAAK+jB,SAAWA,EAChB/jB,KAAK+d,MAAQA,EACb/d,KAAKif,QAAU,IAAI1c,EACnBvC,KAAK4e,OAAS5e,KAAKif,QAAQjc,MAC3BhD,KAAKsjB,aAAe,IAAI/gB,EACxBvC,KAAKujB,YAAcvjB,KAAKsjB,aAAatgB,MACrChD,KAAKuiB,SAAW1jB,SAASI,cAAc,OACvCe,KAAKuiB,SAASpb,UAAY,iBAC1BnH,KAAKuiB,SAASC,SAAW,EACzBxiB,KAAKuiB,SAAS6B,WAAY,EAC1BpkB,KAAKmF,eAAenF,KAAKif,QAASjf,KAAKsjB,aAAcpf,EAAsBlE,KAAKuiB,SAAU,SAAS,KAC/FviB,KAAK+jB,SAASiC,iBAAiBhmB,KAAK+d,MAAM,KAE9C,MAAMkI,EAAU,IAAIpB,GAAiB7kB,KAAKuiB,SAAUwB,EAAUhG,GAC9D/d,KAAKkmB,eAAiB,IAAInH,GAAW/e,KAAKuiB,SAAU,CAChDnD,oBAAqB,CAAC,UACtBW,kBAAmB,CAAC/c,EAAOsR,KACvB,IAAIzS,EACJ,MAAMnB,EAAOG,IACb,OAAIH,GAAQV,KAAK+jB,SAASte,KAAO/E,EAAKd,QACb,OAAjBc,EAAKZ,SACLY,EAAKb,UAAYG,KAAK+d,MAAMtY,MAKW,QAAlC5D,GjBjCRmH,EiBiCkBhJ,KAAK+d,MAAMrC,QjBhCnC/X,OAAS,EAAIqF,EAAIA,EAAIrF,OAAS,QAAKlD,SiBgC4B,IAAPoB,OAAgB,EAASA,EAAG4D,MAAQ/E,EAAKZ,QAEzFie,EAAMyG,MAAMzE,kBAAkB/c,EAAOsR,EAAU4O,GAAoBiD,OjBnCnF,IAAcnd,CiBmC2E,IAGxFhJ,KAAKmF,eAAe8gB,EAASA,EAAQ1C,aAAavgB,IAC9ChD,KAAKsjB,aAAa7f,KAAKT,EAAM,IAC7BhD,KAAKkmB,eAAetH,QAAQ5b,IAC5BhD,KAAKif,QAAQxb,KAAKT,EAAM,IACxBhD,KAAKkmB,eACZ,EC5CE,MAAME,WAAsBthB,EAC/B,UAAI4W,GACA,OAAO1b,KAAKqmB,KAAK/kB,KAAKmN,GAAMA,EAAEzM,MAAM+Z,MAAMtW,IAC7C,CACD,QAAIpB,GACA,OAAOrE,KAAKqmB,KAAK1iB,MACpB,CACD,UAAI2iB,GACA,OAAOtmB,KAAKumB,OACf,CACD,UAAID,CAAOtkB,GACPhC,KAAKumB,QAAUvkB,EACfhC,KAAK+D,QAAQ/E,MAAM0jB,QAAU1gB,EAAQ,OAAS,EACjD,CACD,IAAAygB,GACSziB,KAAKsmB,SACNtmB,KAAK+D,QAAQ/E,MAAM0jB,QAAU,GAEpC,CACD,IAAAC,GACI3iB,KAAKuiB,SAASvjB,MAAM0jB,QAAU,MACjC,CACD,sBAAA8D,CAAuBziB,GACf/D,KAAKymB,eAAiB1iB,IAGtB/D,KAAKymB,eACLzmB,KAAKymB,aAAazf,SAClBhH,KAAKymB,kBAAehmB,GAEpBsD,IACA/D,KAAK0mB,sBAAsBrnB,YAAY0E,GACvC/D,KAAKymB,aAAe1iB,GAE3B,CACD,qBAAA4iB,CAAsB5iB,GACd/D,KAAK4mB,cAAgB7iB,IAGrB/D,KAAK4mB,cACL5mB,KAAK4mB,YAAY5f,SACjBhH,KAAK4mB,iBAAcnmB,GAEnBsD,IACA/D,KAAK6mB,qBAAqBxnB,YAAY0E,GACtC/D,KAAK4mB,YAAc7iB,GAE1B,CACD,uBAAA+iB,CAAwB/iB,GAChB/D,KAAK+mB,aAAehjB,IAGpB/D,KAAK+mB,aACL/mB,KAAK+mB,WAAW/f,SAChBhH,KAAK+mB,gBAAatmB,GAElBsD,IACA/D,KAAKgnB,oBAAoB3nB,YAAY0E,GACrC/D,KAAK+mB,WAAahjB,GAEzB,CACD,WAAIA,GACA,OAAO/D,KAAKuiB,QACf,CACD,QAAAmC,CAASuC,GACL,OAAQjnB,KAAKknB,eAAiB,GAC1BlnB,KAAKqmB,KAAKrmB,KAAKknB,eAAellB,QAAUilB,CAC/C,CACD,OAAA3jB,CAAQmC,GACJ,OAAOzF,KAAKqmB,KAAKc,WAAWF,GAAQA,EAAIjlB,MAAM+Z,MAAMtW,KAAOA,GAC9D,CACD,WAAA/F,CAAYqkB,EAAUhG,GAClBhe,QACAC,KAAK+jB,SAAWA,EAChB/jB,KAAK+d,MAAQA,EACb/d,KAAKqmB,KAAO,GACZrmB,KAAKknB,eAAiB,EACtBlnB,KAAKumB,SAAU,EACfvmB,KAAKif,QAAU,IAAI1c,EACnBvC,KAAK4e,OAAS5e,KAAKif,QAAQjc,MAC3BhD,KAAKonB,gBAAkB,IAAI7kB,EAC3BvC,KAAKqnB,eAAiBrnB,KAAKonB,gBAAgBpkB,MAC3ChD,KAAKsnB,kBAAoB,IAAI/kB,EAC7BvC,KAAKunB,iBAAmBvnB,KAAKsnB,kBAAkBtkB,MAC/ChD,KAAKmF,eAAenF,KAAKif,QAASjf,KAAKonB,gBAAiBpnB,KAAKsnB,mBAC7DtnB,KAAKuiB,SAAW1jB,SAASI,cAAc,OACvCe,KAAKuiB,SAASpb,UAAY,6BAC1BD,EAAYlH,KAAKuiB,SAAU,2BAAoE,cAAxCviB,KAAK+jB,SAASlhB,QAAQ2kB,eAC7ExnB,KAAKmF,eAAenF,KAAK+jB,SAASpH,eAAejZ,IACzCA,EAAE+Y,IAAIsB,QAAU/d,KAAK+d,OACrB7W,EAAYlH,KAAKuiB,SAAU,gBAA+B,IAAdviB,KAAKqE,KACpD,IACDrE,KAAK+jB,SAASlH,kBAAkBnZ,IAC5BA,EAAE+Y,IAAIsB,QAAU/d,KAAK+d,OACrB7W,EAAYlH,KAAKuiB,SAAU,gBAA+B,IAAdviB,KAAKqE,KACpD,KAELrE,KAAK0mB,sBAAwB7nB,SAASI,cAAc,OACpDe,KAAK0mB,sBAAsBvf,UAAY,0BACvCnH,KAAK6mB,qBAAuBhoB,SAASI,cAAc,OACnDe,KAAK6mB,qBAAqB1f,UAAY,yBACtCnH,KAAKgnB,oBAAsBnoB,SAASI,cAAc,OAClDe,KAAKgnB,oBAAoB7f,UAAY,wBACrCnH,KAAKynB,aAAe5oB,SAASI,cAAc,OAC3Ce,KAAKynB,aAAatgB,UAAY,iBAC9BnH,KAAK0nB,cAAgB,IAAI3B,GAAc/lB,KAAK+jB,SAAU/jB,KAAK+d,OAC3D/d,KAAKuiB,SAASljB,YAAYW,KAAKgnB,qBAC/BhnB,KAAKuiB,SAASljB,YAAYW,KAAKynB,cAC/BznB,KAAKuiB,SAASljB,YAAYW,KAAK6mB,sBAC/B7mB,KAAKuiB,SAASljB,YAAYW,KAAK0nB,cAAc3jB,SAC7C/D,KAAKuiB,SAASljB,YAAYW,KAAK0mB,uBAC/B1mB,KAAKmF,eAAenF,KAAK0nB,cAAe1nB,KAAK0nB,cAAcnE,aAAavgB,IACpEhD,KAAKsnB,kBAAkB7jB,KAAK,CACxB8c,YAAavd,EACb+a,MAAO/d,KAAK+d,OACd,IACF/d,KAAK0nB,cAAc9I,QAAQ5b,IAC3BhD,KAAKif,QAAQxb,KAAK,CACdT,MAAOA,EAAMud,YACbld,MAAOrD,KAAKqmB,KAAK1iB,QACnB,IACFO,EAAsBlE,KAAK0nB,cAAc3jB,QAAS,aAAcf,IAEhE,IADiChD,KAAK+jB,SAASlhB,QAAQ8kB,uBAEnD3kB,EAAM8hB,WACL9kB,KAAK+d,MAAMtB,IAAIsI,WAAY,CAC5B/hB,EAAMwb,iBACN,MAAM7K,IAAEA,EAAGD,KAAEA,GAAS1T,KAAK+D,QAAQ2b,yBAC3B/L,IAAKiU,EAASlU,KAAMmU,GAAa7nB,KAAK+jB,SAAShgB,QAAQ2b,wBAC/D1f,KAAK+jB,SAAS9F,iBAAiBje,KAAK+d,MAAO,CACvCrQ,EAAGgG,EAAOmU,EAAW,GACrBlI,EAAGhM,EAAMiU,EAAU,IACpB,CAAEE,YAAY,GACpB,KACD5jB,EAAsBlE,KAAKynB,aAAc,aAAczkB,IACvD,GAAIA,EAAM0gB,iBACN,OAEiC,IAAjB1gB,EAAM+kB,QAEtB/nB,KAAK+jB,SAASiC,iBAAiBhmB,KAAK+d,MACvC,IAER,CACD,SAAA0G,CAAUuD,GAET,CACD,MAAAC,CAAOhB,EAAK5jB,EAAQrD,KAAKqmB,KAAK1iB,QAC1B,GAAIN,EAAQ,GAAKA,EAAQrD,KAAKqmB,KAAK1iB,OAC/B,MAAM,IAAI7B,MAAM,oBAEpB9B,KAAKynB,aAAaroB,aAAa6nB,EAAIjlB,MAAM+B,QAAS/D,KAAKynB,aAAatmB,SAASkC,IAC7ErD,KAAKqmB,KAAO,IACLrmB,KAAKqmB,KAAKze,MAAM,EAAGvE,GACtB4jB,KACGjnB,KAAKqmB,KAAKze,MAAMvE,IAEnBrD,KAAKknB,cAAgB,IACrBlnB,KAAKknB,cAAgB7jB,EAE5B,CACD,OAAOoC,GACH,MAAMpC,EAAQrD,KAAKqmB,KAAKc,WAAWF,GAAQA,EAAIjlB,MAAM+Z,MAAMtW,KAAOA,IAC5DyiB,EAAcloB,KAAKqmB,KAAK9iB,OAAOF,EAAO,GAAG,IACzCrB,MAAEA,EAAKuD,WAAEA,GAAe2iB,EAC9B3iB,EAAW/D,UACXQ,EAAMR,UACNQ,EAAM+B,QAAQiD,QACjB,CACD,cAAAmhB,CAAepM,GACX/b,KAAKqmB,KAAK5kB,SAASwlB,IACf,MAAMmB,EAAgBrM,EAAMtW,KAAOwhB,EAAIjlB,MAAM+Z,MAAMtW,GACnDwhB,EAAIjlB,MAAMyiB,UAAU2D,EAAc,GAEzC,CACD,SAAAxF,CAAU7G,EAAO1Y,EAAQrD,KAAKqmB,KAAK1iB,QAC/B,IAAI9B,EACJ,GAAI7B,KAAKqmB,KAAKgC,MAAMpB,GAAQA,EAAIjlB,MAAM+Z,MAAMtW,KAAOsW,EAAMtW,KACrD,OAEJ,MAAMwhB,EAAM,IAAIjD,GAAIjI,EAAO/b,KAAK+jB,SAAU/jB,KAAK+d,OAC/C,KAA4B,QAArBlc,EAAKka,EAAMtR,YAAyB,IAAP5I,OAAgB,EAASA,EAAGolB,KAC5D,MAAM,IAAInlB,MAAM,4BAEpBmlB,EAAItC,WAAW5I,EAAMtR,KAAKwc,KAC1B,MAAM1hB,EAAa,IAAIT,EAAoBmiB,EAAI1D,aAAavgB,IACxDhD,KAAKonB,gBAAgB3jB,KAAK,CAAE8c,YAAavd,EAAO+Y,SAAQ,IACxDkL,EAAI/C,WAAWlhB,IACf,IAAInB,EACJ,MAAMymB,GAA2BtoB,KAAK+jB,SAASlhB,QAAQ8kB,sBACjDY,EAAyBvoB,KAAK+d,MAAMtB,IAAIsI,YAA4B,IAAd/kB,KAAKqE,KACjE,GAAIikB,IACCC,GACDvlB,EAAM8hB,SAAU,CAChB9hB,EAAMwb,iBACN,MAAMzC,EAAQ/b,KAAK+jB,SAAStG,cAAcwJ,EAAIlL,MAAMtW,KAC9CkO,IAAEA,EAAGD,KAAEA,GAASuT,EAAIljB,QAAQ2b,yBAC1B/L,IAAKiU,EAASlU,KAAMmU,GAAa7nB,KAAK+jB,SAAShgB,QAAQ2b,wBAK/D,YAJA1f,KAAK+jB,SAAS9F,iBAAiBlC,EAAO,CAClCrO,EAAGgG,EAAOmU,EACVlI,EAAGhM,EAAMiU,GACV,CAAEE,YAAY,GAEpB,CACD,MAAMU,EAAiBzM,EAAMtW,MAAgD,QAAvC5D,EAAK7B,KAAK+d,MAAMyG,MAAMjH,mBAAgC,IAAP1b,OAAgB,EAASA,EAAG4D,KAC7GzF,KAAK+d,MAAMyG,MAAMiE,iBACgB,IAAjBzlB,EAAM+kB,SACN/kB,EAAM0gB,kBAG1B1jB,KAAK+d,MAAMyG,MAAM5B,UAAU7G,EAAO,CAC9B2M,UAAWF,GACb,IACFvB,EAAIrI,QAAQ5b,IACZhD,KAAKif,QAAQxb,KAAK,CACdT,MAAOA,EAAMud,YACbld,MAAOrD,KAAKqmB,KAAKc,WAAWzZ,GAAMA,EAAE1L,QAAUilB,KAChD,KAEAjlB,EAAQ,CAAEA,MAAOilB,EAAK1hB,cAC5BvF,KAAKioB,OAAOjmB,EAAOqB,EACtB,CACD,UAAA4f,CAAWlH,GACP/b,KAAK6D,OAAOkY,EAAMtW,GACrB,CACD,OAAAjE,GACIzB,MAAMyB,UACN,IAAK,MAAMQ,MAAEA,EAAKuD,WAAEA,KAAgBvF,KAAKqmB,KACrC9gB,EAAW/D,UACXQ,EAAMR,UAEVxB,KAAKqmB,KAAO,EACf,ECpOE,MAAMsC,WAAgC7jB,EACzC,WAAIf,GACA,MAAM,IAAIjC,MAAM,gBACnB,CACD,eAAIyb,GACA,OAAOvd,KAAK4oB,YACf,CACD,UAAIrE,GACA,OAAOvkB,KAAK6oB,OACf,CACD,UAAItE,CAAOviB,GACPhC,KAAK6oB,QAAU7mB,EACfkF,EAAYlH,KAAKgL,UAAW,mBAA8B,mBAAVhJ,GAA8BA,EACjF,CACD,YAAI0iB,GACA,OAAO1kB,KAAKgoB,cACf,CACD,UAAItM,GACA,OAAO1b,KAAK8oB,OACf,CACD,QAAIzkB,GACA,OAAOrE,KAAK8oB,QAAQnlB,MACvB,CACD,WAAIolB,GACA,OAA+B,IAAxB/oB,KAAK8oB,QAAQnlB,MACvB,CACD,gBAAIqlB,GACA,SAAUhpB,KAAKipB,YAAajpB,KAAKgL,UAAUjE,SAAS/G,KAAKipB,UAAUllB,SACtE,CACD,UAAImlB,GACA,OAAOlpB,KAAKmpB,aACf,CACD,oBAAIV,GACA,QAAK5pB,SAASwJ,eAGPf,EAAWzI,SAASwJ,cAAerI,KAAKopB,iBAAiBrlB,QACnE,CACD,cAAIghB,GACA,OAAO/kB,KAAKqpB,WACf,CACD,cAAItE,CAAW/iB,GACXhC,KAAKqpB,YAAcrnB,EACnBhC,KAAKspB,WAAW9I,eAAexe,EAAQ,CAAC,UAAY,CAAC,MAAO,SAAU,OAAQ,QAAS,WACvFkF,EAAYlH,KAAKgL,UAAW,wBAAyBhJ,GACrDhC,KAAKupB,WAAW9M,IAAI+M,0BAA0B/lB,KAAK,CAC/CshB,WAAY/kB,KAAK+kB,YAExB,CACD,WAAArlB,CAAYsL,EAAW+Y,EAAUte,EAAI5C,EAAS0mB,GAC1CxpB,QACAC,KAAKgL,UAAYA,EACjBhL,KAAK+jB,SAAWA,EAChB/jB,KAAKyF,GAAKA,EACVzF,KAAK6C,QAAUA,EACf7C,KAAKupB,WAAaA,EAClBvpB,KAAKgoB,gBAAiB,EACtBhoB,KAAK6oB,SAAU,EACf7oB,KAAKqpB,aAAc,EACnBrpB,KAAKypB,iBAAmB,GACxBzpB,KAAKoV,aAAe,IAAI7S,EACxBvC,KAAKoR,YAAcpR,KAAKoV,aAAapS,MACrChD,KAAK+iB,OAAS,EACd/iB,KAAKgjB,QAAU,EACfhjB,KAAK8oB,QAAU,GACf9oB,KAAK0pB,QAAU,IAAInnB,EACnBvC,KAAK2pB,OAAS3pB,KAAK0pB,QAAQ1mB,MAC3BhD,KAAK4pB,WAAa,IAAIrnB,EACtBvC,KAAKqc,UAAYrc,KAAK4pB,WAAW5mB,MACjChD,KAAKonB,gBAAkB,IAAI7kB,EAC3BvC,KAAKqnB,eAAiBrnB,KAAKonB,gBAAgBpkB,MAC3ChD,KAAKsnB,kBAAoB,IAAI/kB,EAC7BvC,KAAKunB,iBAAmBvnB,KAAKsnB,kBAAkBtkB,MAC/ChD,KAAK6pB,eAAiB,IAAItnB,EAC1BvC,KAAK2c,cAAgB3c,KAAK6pB,eAAe7mB,MACzChD,KAAK8pB,kBAAoB,IAAIvnB,EAC7BvC,KAAK6c,iBAAmB7c,KAAK8pB,kBAAkB9mB,MAC/ChD,KAAK+pB,wBAA0B,IAAIxnB,EACnCvC,KAAK+c,uBAAyB/c,KAAK+pB,wBAAwB/mB,MAC3DkE,EAAYlH,KAAKgL,UAAW,aAAa,GACzChL,KAAKmpB,cAAgB,IAAI/C,GAAcpmB,KAAK+jB,SAAU/jB,KAAKupB,YAC3DvpB,KAAKopB,iBAAmB,IAAI9G,GAC5BtiB,KAAKspB,WAAa,IAAIvK,GAAW/e,KAAKopB,iBAAiBrlB,QAAS,CAC5Dqb,oBAAqB,CAAC,MAAO,SAAU,OAAQ,QAAS,UACxDW,kBAAmB,CAAC/c,EAAOsR,KACvB,GAAoB,mBAAhBtU,KAAKukB,QACJvkB,KAAKukB,QAAuB,WAAbjQ,EAChB,OAAO,EAEX,MAAM5T,EAAOG,IACb,IAAKH,GAAQsC,EAAM8hB,WAAa9kB,KAAK+kB,WACjC,OAAO,EAEX,GAAIrkB,GAAQA,EAAKd,SAAWI,KAAK+jB,SAASte,GAAI,CAC1C,GAAI/E,EAAKb,UAAYG,KAAKyF,GAAI,CAC1B,GAAiB,WAAb6O,EAEA,OAAO,EAEX,GAAqB,OAAjB5T,EAAKZ,QAEL,OAAO,CAEd,CAED,QADuE,IAAxBE,KAAK8oB,QAAQnlB,QAAgBjD,EAAKb,UAAYG,KAAKyF,GAErG,CACD,OAAOzF,KAAK+f,kBAAkB/c,EAAOsR,EAAU4O,GAAoBiD,MAAM,IAGjFnb,EAAUmV,OAAOngB,KAAKmpB,cAAcplB,QAAS/D,KAAKopB,iBAAiBrlB,SACnE/D,KAAKkpB,OAAO5C,SAAWzjB,EAAQmnB,WAC/BhqB,KAAKukB,OAAS1hB,EAAQ0hB,SAAU,EAChCvkB,KAAKmF,eAAenF,KAAKonB,gBAAiBpnB,KAAKsnB,kBAAmBtnB,KAAKmpB,cAAc9B,gBAAgBrkB,IACjGhD,KAAKonB,gBAAgB3jB,KAAKT,EAAM,IAChChD,KAAKmpB,cAAc5B,kBAAkBvkB,IACrChD,KAAKsnB,kBAAkB7jB,KAAKT,EAAM,IAClChD,KAAKmpB,cAAcvK,QAAQ5b,IAC3BhD,KAAKiqB,gBAAgBjnB,EAAMA,MAAO,SAAUA,EAAMK,MAAM,IACxDrD,KAAKopB,iBAAiBnhB,YAAW,KACjCjI,KAAK+jB,SAASiC,iBAAiBhmB,KAAKupB,YAAY,EAAK,IACrDvpB,KAAKopB,iBAAiBjhB,WAAU,SAEhCnI,KAAKspB,WAAW1K,QAAQ5b,IACxBhD,KAAKiqB,gBAAgBjnB,EAAMud,YAAavd,EAAMsR,SAAS,IACvDtU,KAAK0pB,QAAS1pB,KAAKoV,aAAcpV,KAAK4pB,WAAY5pB,KAAK6pB,eAAgB7pB,KAAK8pB,kBAAmB9pB,KAAK+pB,wBAC3G,CACD,UAAAG,GACI,IAAIroB,EAAI6e,GACoB,QAAvB7e,EAAK7B,KAAK6C,eAA4B,IAAPhB,OAAgB,EAASA,EAAG6Z,SAC5D1b,KAAK6C,QAAQ6Y,OAAOja,SAASsa,IACzB/b,KAAKmqB,WAAWpO,EAAM,KAGF,QAAvB2E,EAAK1gB,KAAK6C,eAA4B,IAAP6d,OAAgB,EAASA,EAAGnD,cAC5Dvd,KAAK4iB,UAAU5iB,KAAK6C,QAAQ0a,aAIhCvd,KAAKykB,UAAUzkB,KAAK0kB,UAAU,GAAM,GACpC1kB,KAAKoqB,kBACDpqB,KAAK+jB,SAASlhB,QAAQwnB,kCACtBrqB,KAAKsqB,oBACDtqB,KAAK+jB,SAASlhB,QAAQwnB,gCAAgCrqB,KAAKupB,YAC/DvpB,KAAKmF,eAAenF,KAAKsqB,qBACzBtqB,KAAKsqB,oBAAoBC,KAAK,CAC1BC,aAAc,IAAIrN,GAAYnd,KAAK+jB,UACnCtH,IAAKzc,KAAKupB,WAAW9M,MAEzBzc,KAAKmpB,cAAc3C,uBAAuBxmB,KAAKsqB,oBAAoBvmB,UAEnE/D,KAAK+jB,SAASlhB,QAAQ4nB,iCACtBzqB,KAAK0qB,mBACD1qB,KAAK+jB,SAASlhB,QAAQ4nB,+BAA+BzqB,KAAKupB,YAC9DvpB,KAAKmF,eAAenF,KAAK0qB,oBACzB1qB,KAAK0qB,mBAAmBH,KAAK,CACzBC,aAAc,IAAIrN,GAAYnd,KAAK+jB,UACnCtH,IAAKzc,KAAKupB,WAAW9M,MAEzBzc,KAAKmpB,cAAcxC,sBAAsB3mB,KAAK0qB,mBAAmB3mB,UAEjE/D,KAAK+jB,SAASlhB,QAAQ8nB,mCACtB3qB,KAAK4qB,qBACD5qB,KAAK+jB,SAASlhB,QAAQ8nB,iCAAiC3qB,KAAKupB,YAChEvpB,KAAKmF,eAAenF,KAAK4qB,sBACzB5qB,KAAK4qB,qBAAqBL,KAAK,CAC3BC,aAAc,IAAIrN,GAAYnd,KAAK+jB,UACnCtH,IAAKzc,KAAKupB,WAAW9M,MAEzBzc,KAAKmpB,cAAcrC,wBAAwB9mB,KAAK4qB,qBAAqB7mB,SAE5E,CACD,OAAAT,CAAQyY,GACJ,OAAO/b,KAAKmpB,cAAc7lB,QAAQyY,EAAMtW,GAC3C,CACD,MAAA0T,GACI,IAAItX,EACJ,MAAMqI,EAAS,CACX4F,MAAO9P,KAAKmpB,cAAczN,OAC1BmP,WAAyC,QAA5BhpB,EAAK7B,KAAK4oB,oBAAiC,IAAP/mB,OAAgB,EAASA,EAAG4D,GAC7EA,GAAIzF,KAAKyF,IAQb,OANoB,IAAhBzF,KAAKukB,SACLra,EAAOqa,OAASvkB,KAAKukB,QAErBvkB,KAAKkpB,OAAO5C,SACZpc,EAAO8f,YAAa,GAEjB9f,CACV,CACD,UAAAyT,CAAW9a,GACFA,IACDA,EAAU,CAAA,GAETA,EAAQkZ,QACTlZ,EAAQkZ,MAAQ/b,KAAKud,aAEzB,MAAMla,EAAQR,EAAQkZ,MAAQ/b,KAAK0b,OAAOpY,QAAQT,EAAQkZ,QAAU,EACpE,IAAI+O,EACJ,GAAIznB,EAAQrD,KAAK0b,OAAO/X,OAAS,EAC7BmnB,EAAkBznB,EAAQ,MAEzB,IAAKR,EAAQkoB,aAId,OAHAD,EAAkB,CAIrB,CACD9qB,KAAK4iB,UAAU5iB,KAAK0b,OAAOoP,GAC9B,CACD,cAAAlN,CAAe/a,GAOX,GANKA,IACDA,EAAU,CAAA,GAETA,EAAQkZ,QACTlZ,EAAQkZ,MAAQ/b,KAAKud,cAEpB1a,EAAQkZ,MACT,OAEJ,MAAM1Y,EAAQrD,KAAK0b,OAAOpY,QAAQT,EAAQkZ,OAC1C,IAAI+O,EACJ,GAAIznB,EAAQ,EACRynB,EAAkBznB,EAAQ,MAEzB,IAAKR,EAAQkoB,aAId,OAHAD,EAAkB9qB,KAAK0b,OAAO/X,OAAS,CAI1C,CACD3D,KAAK4iB,UAAU5iB,KAAK0b,OAAOoP,GAC9B,CACD,aAAAE,CAAcjP,GACV,OAAO/b,KAAK0b,OAAOuP,SAASlP,EAC/B,CACD,IAAAwO,CAAKW,GAEJ,CACD,MAAAC,CAAOD,GAEN,CACD,KAAAlP,GACI,IAAIna,EAAI6e,EAC0E,QAAjFA,EAAkC,QAA5B7e,EAAK7B,KAAK4oB,oBAAiC,IAAP/mB,OAAgB,EAASA,EAAGma,aAA0B,IAAP0E,GAAyBA,EAAG7Y,KAAKhG,EAC9H,CACD,SAAA+gB,CAAU7G,EAAOlZ,EAAU,KACM,iBAAlBA,EAAQQ,OACfR,EAAQQ,MAAQrD,KAAK0b,OAAO/X,UAC5Bd,EAAQQ,MAAQrD,KAAK0b,OAAO/X,QAEhC,MAAMynB,IAAuBvoB,EAAQuoB,mBAC/BC,IAAuBxoB,EAAQwoB,mBAErCtP,EAAMuP,kBAAkBtrB,KAAKupB,YAAY,GACrCvpB,KAAK4oB,eAAiB7M,GAM1B/b,KAAKmqB,WAAWpO,EAAOlZ,EAAQQ,MAAO+nB,GACjCA,GACDprB,KAAKurB,iBAAiBxP,GAErBsP,GACDrrB,KAAK+jB,SAASiC,iBAAiBhmB,KAAKupB,aAAc1mB,EAAQ6lB,WAE9D1oB,KAAKoqB,mBAZIiB,GACDrrB,KAAK+jB,SAASiC,iBAAiBhmB,KAAKupB,WAY/C,CACD,WAAAzN,CAAY0P,GACR,MAAM/lB,EAA8B,iBAAlB+lB,EACZA,EACAA,EAAc/lB,GACdgmB,EAAgBzrB,KAAK8oB,QAAQT,MAAMtM,GAAUA,EAAMtW,KAAOA,IAChE,IAAKgmB,EACD,MAAM,IAAI3pB,MAAM,qBAEpB,OAAO9B,KAAK0rB,aAAaD,EAC5B,CACD,cAAAE,GACI,GAAI3rB,KAAK0b,OAAO/X,OAAS,EAAG,CAExB,MAAMioB,EAAc,IAAI5rB,KAAK0b,QAC7B,IAAK,MAAMK,KAAS6P,EAChB5rB,KAAK6rB,QAAQ9P,EAEpB,MAEG/b,KAAK+jB,SAASjG,YAAY9d,KAAKupB,WAEtC,CACD,UAAAtG,CAAWlH,GACP/b,KAAK6rB,QAAQ9P,EAChB,CACD,OAAA8P,CAAQ9P,GACJ/b,KAAK+jB,SAASjI,YAAYC,EAC7B,CACD,aAAA+P,CAAc/P,GACV,OAAO/b,KAAK4oB,eAAiB7M,CAChC,CACD,aAAAgQ,CAAchoB,GACV/D,KAAKmpB,cAAc3C,uBAAuBziB,EAC7C,CACD,SAAA0gB,CAAUuH,EAAetD,GAAY,EAAOxL,GAAQ,GAChD,IAAIrb,EAAI6e,EAAIC,EAAIC,EACX1D,GAASld,KAAK0kB,WAAasH,GAMhChsB,KAAKgoB,eAAiBgE,EACtB9kB,EAAYlH,KAAKgL,UAAW,eAAgBghB,GAC5C9kB,EAAYlH,KAAKgL,UAAW,kBAAmBghB,GAC/ChsB,KAAKmpB,cAAc1E,UAAUzkB,KAAK0kB,WAC7B1kB,KAAK4oB,cAAgB5oB,KAAK0b,OAAO/X,OAAS,GAC3C3D,KAAKurB,iBAAiBvrB,KAAK0b,OAAO,IAEtC1b,KAAKoqB,kBACD4B,IACKtD,GACiF,QAAjF9H,EAAkC,QAA5BD,EAAK3gB,KAAK4oB,oBAAiC,IAAPjI,OAAgB,EAASA,EAAG3E,aAA0B,IAAP4E,GAAyBA,EAAG/Y,KAAK8Y,KAf1H+H,GACiF,QAAjFhI,EAAkC,QAA5B7e,EAAK7B,KAAK4oB,oBAAiC,IAAP/mB,OAAgB,EAASA,EAAGma,aAA0B,IAAP0E,GAAyBA,EAAG7Y,KAAKhG,EAiBtI,CACD,MAAAuR,CAAOS,EAAOC,GACV,IAAIjS,EACJ7B,KAAK+iB,OAASlP,EACd7T,KAAKgjB,QAAUlP,EACf9T,KAAKopB,iBAAiBhW,OAAOpT,KAAK+iB,OAAQ/iB,KAAKgjB,UACd,QAA5BnhB,EAAK7B,KAAK4oB,oBAAiC,IAAP/mB,OAAgB,EAASA,EAAGuR,SACjEpT,KAAK4oB,aAAaxV,OAAOpT,KAAK+iB,OAAQ/iB,KAAKgjB,QAElD,CACD,YAAA0I,CAAa3P,GACT,MAAMqM,EAAgBpoB,KAAK4oB,eAAiB7M,EAE5C,GADA/b,KAAKisB,cAAclQ,GACfqM,GAAiBpoB,KAAK0b,OAAO/X,OAAS,EAAG,CACzC,MAAMuoB,EAAYlsB,KAAKypB,iBAAiB,GACxCzpB,KAAK4iB,UAAUsJ,EAClB,CAKD,OAJIlsB,KAAK4oB,cAAuC,IAAvB5oB,KAAK0b,OAAO/X,QACjC3D,KAAKurB,sBAAiB9qB,GAE1BT,KAAKoqB,kBACErO,CACV,CACD,aAAAkQ,CAAclQ,GACV,MAAM1Y,EAAQrD,KAAK0b,OAAOpY,QAAQyY,GAC9B/b,KAAK4oB,eAAiB7M,GACtB/b,KAAKopB,iBAAiBnG,aAE1BjjB,KAAKmpB,cAActlB,OAAOkY,EAAMtW,IAChCzF,KAAK8oB,QAAQvlB,OAAOF,EAAO,GACvBrD,KAAKypB,iBAAiBwB,SAASlP,IAC/B/b,KAAKypB,iBAAiBlmB,OAAOvD,KAAKypB,iBAAiBnmB,QAAQyY,GAAQ,GAEvE/b,KAAK8pB,kBAAkBrmB,KAAK,CAAEsY,SACjC,CACD,UAAAoO,CAAWpO,EAAO1Y,EAAQrD,KAAK0b,OAAO/X,OAAQwoB,GAAgB,GAC1D,MACMC,EADgBpsB,KAAK8oB,QAAQxlB,QAAQyY,IACD,EAC1C/b,KAAKmpB,cAAcvG,UAAU7G,EAAO1Y,GAC/B8oB,GACDnsB,KAAKopB,iBAAiBxG,UAAU7G,GAEpC/b,KAAKmpB,cAAc1G,OACnBziB,KAAKopB,iBAAiB3G,OAClB2J,IAIJpsB,KAAKqsB,UAAUtQ,GACf/b,KAAK0b,OAAOnY,OAAOF,EAAO,EAAG0Y,GAC7B/b,KAAK6pB,eAAepmB,KAAK,CAAEsY,UAC9B,CACD,gBAAAwP,CAAiBxP,GACb/b,KAAK4oB,aAAe7M,EAChBA,IACA/b,KAAKmpB,cAAchB,eAAepM,GAClCA,EAAM3I,OAAOpT,KAAK+iB,OAAQ/iB,KAAKgjB,SAC/BhjB,KAAKqsB,UAAUtQ,GACf/b,KAAK+pB,wBAAwBtmB,KAAK,CAAEsY,UAE3C,CACD,SAAAsQ,CAAUtQ,GACF/b,KAAKypB,iBAAiBwB,SAASlP,IAC/B/b,KAAKypB,iBAAiBlmB,OAAOvD,KAAKypB,iBAAiBnmB,QAAQyY,GAAQ,GAEvE/b,KAAKypB,iBAAmB,CAAC1N,KAAU/b,KAAKypB,iBAC3C,CACD,eAAAW,GACI,IAAIvoB,EAAI6e,EAGR,GAFAxZ,EAAYlH,KAAKgL,UAAW,QAAShL,KAAK+oB,SAC1C/oB,KAAK0b,OAAOja,SAASsa,GAAUA,EAAMuP,kBAAkBtrB,KAAKupB,WAAYvpB,KAAK0kB,YACzE1kB,KAAK+oB,UAAY/oB,KAAKipB,UAAW,CACjC,MAAMA,EAAYjpB,KAAK+jB,SAASuI,2BAChCrD,EAAUsB,KAAK,CACXC,aAAc,IAAIrN,GAAYnd,KAAK+jB,UACnChG,MAAO/d,KAAKupB,aAEhBvpB,KAAKipB,UAAYA,EACjB/kB,EAAsBlE,KAAKipB,UAAUllB,QAAS,SAAS,KAC9C/D,KAAK0kB,UACN1kB,KAAK+jB,SAASiC,iBAAiBhmB,KAAKupB,WACvC,IAELvpB,KAAKmpB,cAAcxG,OACnB3iB,KAAKopB,iBAAiBrlB,QAAQ1E,YAAYW,KAAKipB,UAAUllB,SACzD/D,KAAKipB,UAAUqC,kBAAkBtrB,KAAKupB,YAAY,EACrD,EACIvpB,KAAK+oB,SAAW/oB,KAAKipB,YACtBjpB,KAAKipB,UAAUllB,QAAQiD,SACkB,QAAxC0Z,GAAM7e,EAAK7B,KAAKipB,WAAWznB,eAA4B,IAAPkf,GAAyBA,EAAG7Y,KAAKhG,GAClF7B,KAAKipB,eAAYxoB,EACjBT,KAAKmpB,cAAc1G,OAE1B,CACD,iBAAA1C,CAAkB/c,EAAOsR,EAAU+J,GAE/B,QAAIre,KAAK+jB,SAASlhB,QAAQ0pB,gBACfvsB,KAAK+jB,SAASlhB,QAAQ0pB,eAAe,CACxChM,YAAavd,EACbqb,SACAN,MAAO/d,KAAK+jB,SAAS9H,SAASjc,KAAKyF,IACnC6O,WACA3T,QAASE,GAIpB,CACD,eAAAopB,CAAgBjnB,EAAOsR,EAAUjR,GAC7B,GAAoB,mBAAhBrD,KAAKukB,OACL,OAEJ,MAAM7jB,EAAOG,IACb,GAAIH,GAAQA,EAAKd,SAAWI,KAAK+jB,SAASte,GAAI,CAC1C,GAAqB,OAAjB/E,EAAKZ,QAAkB,CAEvB,MAAMD,QAAEA,GAAYa,EAMpB,YALAV,KAAK0pB,QAAQjmB,KAAK,CACd4a,OAAQ/J,EACRzU,QAASA,EACTwD,SAGP,CAED,IADoE,IAA9CrD,KAAKmpB,cAAc7lB,QAAQ5C,EAAKZ,UACL,IAA5BE,KAAKmpB,cAAc9kB,KACpC,OAEJ,MAAMxE,QAAEA,EAAOC,QAAEA,GAAYY,EAE7B,GADoBV,KAAKyF,KAAO5F,IACZyU,EAAU,CAE1B,GADiBtU,KAAKmpB,cAAc7lB,QAAQxD,KAC3BuD,EACb,MAEP,CACDrD,KAAK0pB,QAAQjmB,KAAK,CACd4a,OAAQ/J,EACRzU,QAASa,EAAKb,QACd2sB,OAAQ9rB,EAAKZ,QACbuD,SAEP,MAEGrD,KAAK4pB,WAAWnmB,KAAK,CACjB8c,YAAavd,EACbsR,WACAjR,QACA1C,QAAS,IAAME,KAG1B,CACD,OAAAW,GACI,IAAIK,EAAI6e,EAAIC,EACZ5gB,MAAMyB,UACoB,QAAzBK,EAAK7B,KAAKipB,iBAA8B,IAAPpnB,GAAyBA,EAAGkC,QAAQiD,SACW,QAAhF2Z,EAA+B,QAAzBD,EAAK1gB,KAAKipB,iBAA8B,IAAPvI,OAAgB,EAASA,EAAGlf,eAA4B,IAAPmf,GAAyBA,EAAG9Y,KAAK6Y,GAC1H,IAAK,MAAM3E,KAAS/b,KAAK0b,OACrBK,EAAMva,UAEVxB,KAAKspB,WAAW9nB,UAChBxB,KAAKmpB,cAAc3nB,UACnBxB,KAAKopB,iBAAiB5nB,SACzB,EC9eE,MAAMirB,WAAkB3nB,EAC3B,WAAIf,GACA,OAAO/D,KAAKuiB,QACf,CACD,WAAA7iB,CAAYuY,GACRlY,QACIkY,EACAjY,KAAKuiB,SAAWtK,GAGhBjY,KAAKuiB,SAAW1jB,SAASI,cAAc,OACvCe,KAAKuiB,SAASvjB,MAAM8U,OAAS,OAC7B9T,KAAKuiB,SAASvjB,MAAM6U,MAAQ,OAC5B7T,KAAKuiB,SAASpb,UAAY,0BAE9BnH,KAAKmF,eAAec,EAAmBjG,KAAKuiB,UAAWmK,IACnD,GAAI1sB,KAAK+E,WAKL,OAEJ,IAAKlG,SAAS+mB,KAAK7e,SAAS/G,KAAKuiB,UAM7B,OAEJ,MAAM1O,MAAEA,EAAKC,OAAEA,GAAW4Y,EAAMC,YAChC3sB,KAAKoT,OAAOS,EAAOC,EAAO,IAEjC,EC/BL,MAAM8Y,GAAehjB,IACd,SAASijB,GAASlU,GACrB,OAAQA,GACJ,IAAK,OACD,MAAO,OACX,IAAK,QACD,MAAO,QACX,IAAK,QACD,MAAO,MACX,IAAK,QACD,MAAO,SAEX,QACI,MAAO,SAEnB,CACO,MAAMmU,WAAiBL,GAC1B,MAAIhnB,GACA,OAAOzF,KAAK+sB,GACf,CACD,QAAI1oB,GACA,OAAOrE,KAAKgtB,QAAQ3oB,IACvB,CACD,UAAI4Y,GACA,OAAOtV,MAAMqC,KAAKhK,KAAKgtB,QAAQC,UAAU3rB,KAAKmN,GAAMA,EAAEzM,OACzD,CACD,SAAI6R,GACA,OAAO7T,KAAKktB,SAASrZ,KACxB,CACD,UAAIC,GACA,OAAO9T,KAAKktB,SAASpZ,MACxB,CACD,iBAAImC,GACA,OAAOjW,KAAKktB,SAASjX,aACxB,CACD,iBAAIC,GACA,OAAOlW,KAAKktB,SAAShX,aACxB,CACD,gBAAIH,GACA,OAAO/V,KAAKktB,SAASnX,YACxB,CACD,gBAAIC,GACA,OAAOhW,KAAKktB,SAASlX,YACxB,CACD,eAAIwH,GACA,OAAOxd,KAAKmtB,YACf,CACD,WAAAztB,CAAYmD,GACR9C,MAAM8C,EAAQoV,eACdjY,KAAK+sB,IAAMH,GAAa/iB,OACxB7J,KAAKgtB,QAAU,IAAI5oB,IACnBpE,KAAKotB,mBAAqB,IAAI7qB,EAC9BvC,KAAK4b,kBAAoB5b,KAAKotB,mBAAmBpqB,MACjDhD,KAAKqtB,kBAAoB,IAAI9qB,EAC7BvC,KAAK8c,iBAAmB9c,KAAKqtB,kBAAkBrqB,MAC/ChD,KAAKstB,eAAiB,IAAI/qB,EAC1BvC,KAAK4c,cAAgB5c,KAAKstB,eAAetqB,MACzChD,KAAKutB,wBAA0B,IAAIhrB,EACnCvC,KAAKgd,uBAAyBhd,KAAKutB,wBAAwBvqB,MAC3DhD,KAAKwtB,yBAA2B,IAAIjpB,EACpCvE,KAAKktB,SAAW,IAAI9T,KAAWvW,EAAQ0M,mBAAoB1M,EAAQ+M,OAAQ/M,EAAQoJ,aACnFjM,KAAK+D,QAAQ1E,YAAYW,KAAKktB,SAASnpB,SACvC/D,KAAKoT,OAAO,EAAG,GAAG,GAClBpT,KAAKmF,eAAenF,KAAKktB,SAAS9b,aAAY,KAC1CpR,KAAKwtB,yBAAyB/pB,MAAM,IACpCjF,EAAM0C,IAAIlB,KAAK4c,cAAe5c,KAAK8c,iBAAkB9c,KAAKgd,uBAA1Dxe,EAAkF,KAClFwB,KAAKwtB,yBAAyB/pB,MAAM,IACpCzD,KAAKwtB,yBAAyB/oB,SAAQ,KACtCzE,KAAKotB,mBAAmB3pB,MAAM,IAC9BzD,KAAKwtB,yBACZ,CACD,UAAAtiB,CAAW6Q,EAAOxR,GACdvK,KAAKktB,SAAS3c,eAAe+H,EAAgByD,EAAMhY,SAAUwG,GAC7DvK,KAAKotB,mBAAmB3pB,MAC3B,CACD,SAAAgqB,CAAU1R,GACN,OAAO/b,KAAKktB,SAAS5c,cAAcgI,EAAgByD,EAAMhY,SAC5D,CACD,UAAA2pB,CAAW3P,EAAOrF,EAAW,CAAC,GAAIrU,GAC9BrE,KAAKktB,SAASjd,QAAQ8N,EAAO1Z,QAAmCA,EAAOkH,EAAOC,WAAYkN,GAC1F1Y,KAAKstB,eAAe7pB,KAAKsa,GACzB/d,KAAKgmB,iBAAiBjI,EACzB,CACD,aAAA4P,CAAc5P,EAAOlb,GACjB,IAAK7C,KAAKgtB,QAAQ7K,IAAIpE,EAAMtY,IACxB,MAAM,IAAI3D,MAAM,qBAEpB,MAAMyK,EAAOvM,KAAKgtB,QAAQY,IAAI7P,EAAMtY,IAC9BgF,EAAOzK,KAAKktB,SAASlmB,OAAO+W,EAAOxS,EAAOC,YAOhD,GANIe,KAAU1J,aAAyC,EAASA,EAAQ+S,eACpErJ,EAAKhH,WAAW/D,UAChB+K,EAAKvK,MAAMR,UACXxB,KAAKgtB,QAAQnpB,OAAOka,EAAMtY,KAE9BzF,KAAKqtB,kBAAkB5pB,KAAKsa,KACtBlb,aAAyC,EAASA,EAAQgrB,aAAe7tB,KAAKmtB,eAAiBpP,EAAO,CACxG,MAAMd,EAAStV,MAAMqC,KAAKhK,KAAKgtB,QAAQC,UACvCjtB,KAAKgmB,iBAAiB/I,EAAOtZ,OAAS,EAAIsZ,EAAO,GAAGjb,WAAQvB,EAC/D,CACD,OAAOgK,CACV,CACD,QAAAwR,CAASxW,GACL,IAAI5D,EACJ,OAAuC,QAA/BA,EAAK7B,KAAKgtB,QAAQY,IAAInoB,UAAwB,IAAP5D,OAAgB,EAASA,EAAGG,KAC9E,CACD,gBAAAgkB,CAAiBjI,EAAO2K,GACpB,IAAI7mB,EAAI6e,EAAIC,EACR3gB,KAAKmtB,eAAiBpP,IAGtB/d,KAAKmtB,eACLntB,KAAKmtB,aAAa1I,WAAU,GACvBiE,GACyC,QAAzChI,GAAM7e,EAAK7B,KAAKmtB,cAAcnR,aAA0B,IAAP0E,GAAyBA,EAAG7Y,KAAKhG,IAGvFkc,IACAA,EAAM0G,WAAU,GACXiE,GACsB,QAAtB/H,EAAK5C,EAAM/B,aAA0B,IAAP2E,GAAyBA,EAAG9Y,KAAKkW,IAGxE/d,KAAKmtB,aAAepP,EACpB/d,KAAKutB,wBAAwB9pB,KAAKsa,GACrC,CACD,WAAAD,CAAYC,GACR/d,KAAK2tB,cAAc5P,EACtB,CACD,UAAAJ,CAAW9a,GACP,IAAIhB,EAIJ,GAHKgB,IACDA,EAAU,CAAA,IAETA,EAAQkb,MAAO,CAChB,IAAK/d,KAAKwd,YACN,OAEJ3a,EAAQkb,MAAQ/d,KAAKwd,WACxB,CACD,MAAM9E,EAAWJ,EAAgBzV,EAAQkb,MAAMha,SACzC8F,EAA+C,QAAvChI,EAAK7B,KAAKktB,SAASrjB,KAAK6O,UAA8B,IAAP7W,OAAgB,EAASA,EAAG4I,KACzFzK,KAAKgmB,iBAAiBnc,EACzB,CACD,cAAA+T,CAAe/a,GACX,IAAIhB,EAIJ,GAHKgB,IACDA,EAAU,CAAA,IAETA,EAAQkb,MAAO,CAChB,IAAK/d,KAAKwd,YACN,OAEJ3a,EAAQkb,MAAQ/d,KAAKwd,WACxB,CACD,MAAM9E,EAAWJ,EAAgBzV,EAAQkb,MAAMha,SACzC8F,EAAmD,QAA3ChI,EAAK7B,KAAKktB,SAASnZ,SAAS2E,UAA8B,IAAP7W,OAAgB,EAASA,EAAG4I,KAC7FzK,KAAKgmB,iBAAiBnc,EACzB,CACD,MAAAuJ,CAAOS,EAAOC,EAAQga,IACAA,GAAeja,IAAU7T,KAAK6T,OAASC,IAAW9T,KAAK8T,UAIzE9T,KAAKktB,SAASnpB,QAAQ/E,MAAM8U,OAAS,GAAGA,MACxC9T,KAAKktB,SAASnpB,QAAQ/E,MAAM6U,MAAQ,GAAGA,MACvC7T,KAAKktB,SAAS9Z,OAAOS,EAAOC,GAC/B,CACD,OAAAtS,GACIxB,KAAKutB,wBAAwB/rB,UAC7BxB,KAAKstB,eAAe9rB,UACpBxB,KAAKqtB,kBAAkB7rB,UACvBxB,KAAKotB,mBAAmB5rB,UACxB,IAAK,MAAMuc,KAAS/d,KAAKid,OACrBc,EAAMvc,UAEVxB,KAAKktB,SAAS1rB,UACdzB,MAAMyB,SACT,ECjLE,MAAMusB,WAAqBjpB,EAE9B,aAAIkpB,GACA,OAAOhuB,KAAKiuB,UACf,CACD,YAAIvJ,GACA,OAAO1kB,KAAKkuB,SACf,CACD,aAAIT,GACA,OAAOztB,KAAKmuB,UACf,CACD,SAAIta,GACA,OAAO7T,KAAK+iB,MACf,CACD,UAAIjP,GACA,OAAO9T,KAAKgjB,OACf,CACD,WAAAtjB,CAAY+F,GACR1F,QACAC,KAAKyF,GAAKA,EACVzF,KAAKiuB,YAAa,EAClBjuB,KAAKkuB,WAAY,EACjBluB,KAAKmuB,YAAa,EAClBnuB,KAAK+iB,OAAS,EACd/iB,KAAKgjB,QAAU,EACfhjB,KAAKouB,uBAAyB,IAAI/oB,EAClCrF,KAAKquB,sBAAwB,IAAI9rB,EAAQ,CACrCW,QAAQ,IAEZlD,KAAKsuB,sBAAwBtuB,KAAKquB,sBAAsBrrB,MAExDhD,KAAKuuB,kBAAoB,IAAIhsB,EAAQ,CACjCW,QAAQ,IAEZlD,KAAKwuB,iBAAmBxuB,KAAKuuB,kBAAkBvrB,MAE/ChD,KAAKyuB,cAAgB,IAAIlsB,EACzBvC,KAAK0uB,aAAe1uB,KAAKyuB,cAAczrB,MAEvChD,KAAK2uB,uBAAyB,IAAIpsB,EAAQ,CACtCW,QAAQ,IAEZlD,KAAK4uB,sBAAwB5uB,KAAK2uB,uBAAuB3rB,MAEzDhD,KAAK6uB,oBAAsB,IAAItsB,EAC/BvC,KAAK8uB,mBAAqB9uB,KAAK6uB,oBAAoB7rB,MAEnDhD,KAAK+uB,mBAAqB,IAAIxsB,EAAQ,CAClCW,QAAQ,IAEZlD,KAAKgvB,kBAAoBhvB,KAAK+uB,mBAAmB/rB,MAEjDhD,KAAKivB,gBAAkB,IAAI1sB,EAC3BvC,KAAKkvB,eAAiBlvB,KAAKivB,gBAAgBjsB,MAE3ChD,KAAKmvB,oBAAsB,IAAI5sB,EAC/BvC,KAAKovB,mBAAqBpvB,KAAKmvB,oBAAoBnsB,MACnDhD,KAAKmF,eAAenF,KAAKwuB,kBAAkBxrB,IACvChD,KAAKiuB,WAAajrB,EAAMgrB,SAAS,IACjChuB,KAAKgvB,mBAAmBhsB,IACxBhD,KAAKkuB,UAAYlrB,EAAM0hB,QAAQ,IAC/B1kB,KAAK4uB,uBAAuB5rB,IAC5BhD,KAAKmuB,WAAanrB,EAAMyqB,SAAS,IACjCztB,KAAKsuB,uBAAuBtrB,IAC5BhD,KAAK+iB,OAAS/f,EAAM6Q,MACpB7T,KAAKgjB,QAAUhgB,EAAM8Q,MAAM,IAC3B9T,KAAKouB,uBAAwBpuB,KAAKquB,sBAAuBruB,KAAKuuB,kBAAmBvuB,KAAK2uB,uBAAwB3uB,KAAK+uB,mBAAoB/uB,KAAKyuB,cAAezuB,KAAKivB,gBAAiBjvB,KAAK6uB,oBAAqB7uB,KAAKmvB,oBACvN,CACD,UAAAjF,CAAWnO,GACP/b,KAAKouB,uBAAuBpsB,MAAQhC,KAAKmvB,oBAAoBnsB,OAAOqsB,IAChEtT,EAAMoP,OAAO,CACTmE,OAAQD,GACV,GAET,CACD,UAAAnkB,CAAWuiB,GACPztB,KAAK6uB,oBAAoBprB,KAAK,CAAEgqB,aACnC,CACD,SAAAhJ,GACIzkB,KAAKivB,gBAAgBxrB,MACxB,CACD,gBAAA8rB,CAAiBF,GACbrvB,KAAKmvB,oBAAoB1rB,KAAK4rB,EACjC,CACD,OAAA7tB,GACIzB,MAAMyB,SACT,ECzFE,MAAMguB,WAA8BzB,GAEvC,WAAAruB,CAAY+F,GACR1F,MAAM0F,GACNzF,KAAKyvB,gCAAkC,IAAIltB,EAC3CvC,KAAK0vB,+BAAiC1vB,KAAKyvB,gCAAgCzsB,MAE3EhD,KAAK2vB,wBAA0B,IAAIptB,EAAQ,CACvCW,QAAQ,IAEZlD,KAAK4vB,uBAAyB5vB,KAAK2vB,wBAAwB3sB,MAE3DhD,KAAK6vB,iBAAmB,IAAIttB,EAC5BvC,KAAK8vB,gBAAkB9vB,KAAK6vB,iBAAiB7sB,MAC7ChD,KAAKmF,eAAenF,KAAKyvB,gCAAiCzvB,KAAK2vB,wBAAyB3vB,KAAK6vB,iBAChG,CACD,cAAAE,CAAe/tB,GACXhC,KAAKyvB,gCAAgChsB,KAAKzB,EAC7C,CACD,OAAAguB,CAAQhtB,GACJhD,KAAK6vB,iBAAiBpsB,KAAKT,EAC9B,ECrBE,MAAMitB,WAA6BT,GACtC,QAAIla,CAAKA,GACLtV,KAAKkwB,MAAQ5a,CAChB,CACD,WAAA5V,CAAY+F,GACR1F,MAAM0F,GACNzF,KAAKmwB,sBAAwB,IAAI5tB,EAAQ,CACrCW,QAAQ,IAEZlD,KAAKowB,qBAAuBpwB,KAAKmwB,sBAAsBntB,MACvDhD,KAAKqwB,cAAgB,IAAI9tB,EAAQ,CAAE,GACnCvC,KAAKswB,aAAetwB,KAAKqwB,cAAcrtB,MACvChD,KAAKuwB,cAAgB,IAAIhuB,EAAQ,CAAE,GACnCvC,KAAKwwB,aAAexwB,KAAKuwB,cAAcvtB,MACvChD,KAAKmF,eAAenF,KAAKmwB,sBAAuBnwB,KAAKqwB,cAAerwB,KAAKuwB,cAC5E,CACD,WAAAE,CAAYC,GACR,IAAI7uB,EACkB,QAArBA,EAAK7B,KAAKkwB,aAA0B,IAAPruB,GAAyBA,EAAG4uB,YAAYC,EACzE,CACD,cAAIA,GACA,IAAI7uB,EACJ,SAAgC,QAArBA,EAAK7B,KAAKkwB,aAA0B,IAAPruB,OAAgB,EAASA,EAAG6uB,aACvE,ECvBE,MAAMC,WAAsB7rB,EAC/B,WAAIf,GACA,OAAO/D,KAAKuiB,QACf,CACD,SAAI1O,GACA,OAAO7T,KAAK+iB,MACf,CACD,UAAIjP,GACA,OAAO9T,KAAKgjB,OACf,CACD,UAAIsM,GACA,IAAIztB,EACJ,OAA+B,QAAvBA,EAAK7B,KAAKkrB,eAA4B,IAAPrpB,OAAgB,EAASA,EAAGytB,MACtE,CACD,WAAA5vB,CAAY+F,EAAIgW,EAAWgB,GACvB1c,QACAC,KAAKyF,GAAKA,EACVzF,KAAKyb,UAAYA,EACjBzb,KAAKyc,IAAMA,EACXzc,KAAKgjB,QAAU,EACfhjB,KAAK+iB,OAAS,EACd/iB,KAAKuiB,SAAW1jB,SAASI,cAAc,OACvCe,KAAKuiB,SAASC,UAAY,EAC1BxiB,KAAKuiB,SAASvjB,MAAM4xB,QAAU,OAC9B5wB,KAAKuiB,SAASvjB,MAAM8U,OAAS,OAC7B9T,KAAKuiB,SAASvjB,MAAM6U,MAAQ,OAC5B7T,KAAKuiB,SAASvjB,MAAM6xB,SAAW,SAC/B,MAAM/N,EAAehb,EAAW9H,KAAKuiB,UACrCviB,KAAKmF,eAAenF,KAAKyc,IAAKqG,EAAa7a,YAAW,KAClDjI,KAAKyc,IAAI8R,kBAAkB9qB,KAAK,CAAEuqB,WAAW,GAAO,IACpDlL,EAAa3a,WAAU,KACvBnI,KAAKyc,IAAI8R,kBAAkB9qB,KAAK,CAAEuqB,WAAW,GAAQ,IACrDlL,EACP,CACD,KAAA9G,GACIhc,KAAKyc,IAAIgS,cAAchrB,MAC1B,CACD,MAAA2P,CAAOS,EAAOC,GACV9T,KAAK+iB,OAASlP,EACd7T,KAAKgjB,QAAUlP,EACf9T,KAAKyc,IAAI4R,sBAAsB5qB,KAAK,CAAEoQ,QAAOC,WACzC9T,KAAK4kB,MACD5kB,KAAKkrB,SACLlrB,KAAK4kB,KAAKuG,OAAOnrB,KAAKkrB,QAAQoE,OAGzC,CACD,IAAA/E,CAAK8E,GACDrvB,KAAKkrB,QAAUmE,EACfrvB,KAAK4kB,KAAO5kB,KAAK8wB,cACpB,CACD,MAAA3F,CAAOnoB,GACH,IAAInB,EAAI6e,EAER1gB,KAAKkrB,QAAU3O,OAAOC,OAAOD,OAAOC,OAAO,CAAE,EAAExc,KAAKkrB,SAAU,CAAEoE,OAAQ/S,OAAOC,OAAOD,OAAOC,OAAO,CAAE,EAA0B,QAAvB3a,EAAK7B,KAAKkrB,eAA4B,IAAPrpB,OAAgB,EAASA,EAAGytB,QAAStsB,EAAMssB,UAKnL,IAAK,MAAMyB,KAAOxU,OAAOyU,KAAKhuB,EAAMssB,aACN7uB,IAAtBuC,EAAMssB,OAAOyB,WACN/wB,KAAKkrB,QAAQoE,OAAOyB,GAId,QAApBrQ,EAAK1gB,KAAK4kB,YAAyB,IAAPlE,GAAyBA,EAAGyK,OAAO,CAAEmE,OAAQtvB,KAAKkrB,QAAQoE,QAC1F,CACD,MAAAnW,GACI,IAAItX,EAAI6e,EACR,MAAM4O,EAAuF,QAA7E5O,EAA6B,QAAvB7e,EAAK7B,KAAKkrB,eAA4B,IAAPrpB,OAAgB,EAASA,EAAGytB,cAA2B,IAAP5O,EAAgBA,EAAK,GAC1H,MAAO,CACHjb,GAAIzF,KAAKyF,GACTgW,UAAWzb,KAAKyb,UAChB6T,OAAQ/S,OAAOyU,KAAK1B,GAAQ3rB,OAAS,EAAI2rB,OAAS7uB,EAEzD,CACD,OAAAe,GACI,IAAIK,EACJ7B,KAAKyc,IAAIjb,UACY,QAApBK,EAAK7B,KAAK4kB,YAAyB,IAAP/iB,GAAyBA,EAAGL,UACzDzB,MAAMyB,SACT,EC9EE,MAAMyvB,WAAsBN,GAC/B,eAAI1kB,CAAYjK,GACZhC,KAAKkM,aAAelK,CACvB,CACD,eAAIiK,GACA,OAAOjM,KAAKkM,YACf,CACD,eAAI1B,GAIA,OAHmBxK,KAAKkxB,YACPlxB,KAAK0wB,aACa1wB,KAAKmxB,iBAAmB,EAE9D,CACD,eAAIxmB,GAIA,OAHmB3K,KAAKkxB,YACPlxB,KAAK0wB,aACa1wB,KAAKoxB,iBAAmB,EAE9D,CACD,QAAI/sB,GACA,OAAOrE,KAAKoK,KACf,CACD,kBAAIwB,GACA,OAAO5L,KAAK6L,eACf,CACD,kBAAID,CAAevH,GACfrE,KAAK6L,gBAAkBxH,CAC1B,CACD,mBAAIgtB,GACA,OAAOrxB,KAAKmxB,gBACf,CACD,mBAAIE,CAAgBrvB,GAChBhC,KAAKmxB,iBAAoC,iBAAVnvB,EAAqBA,EAAQ,CAC/D,CACD,mBAAIsvB,GACA,OAAOtxB,KAAKoxB,gBACf,CACD,mBAAIE,CAAgBtvB,GAChBhC,KAAKoxB,iBACgB,iBAAVpvB,EAAqBA,EAAQwK,OAAOC,iBAClD,CACD,iBAAI8kB,GACA,OAAOvxB,KAAKwxB,cACf,CACD,iBAAID,CAAcvvB,GACdhC,KAAKwxB,eAAiBxvB,EACtBhC,KAAKkpB,OAAOlqB,MAAM0jB,QAAU1gB,EAAQ,GAAK,MAC5C,CACD,WAAAtC,CAAY+F,EAAIgW,EAAWgW,EAAiBxlB,EAAaykB,EAAYgB,GACjE3xB,MAAM0F,EAAIgW,EAAW,IAAIwU,GAAqBxqB,IAC9CzF,KAAKyxB,gBAAkBA,EACvBzxB,KAAK2xB,2BAA6B,IAAIpvB,EAAQ,CAAEW,QAAQ,IACxDlD,KAAKuV,0BAA4BvV,KAAK2xB,2BAA2B3uB,MACjEhD,KAAKoV,aAAe,IAAI7S,EACxBvC,KAAKoR,YAAcpR,KAAKoV,aAAapS,MACrChD,KAAKkxB,WAAa,GAClBlxB,KAAK6L,gBAAkB,EACvB7L,KAAKoK,MAAQ,EACbpK,KAAKmxB,iBAAmB,IACxBnxB,KAAKoxB,iBAAmB5kB,OAAOC,kBAC/BzM,KAAK4xB,aAAc,EACnB5xB,KAAK6xB,aAAe,EACpB7xB,KAAKyc,IAAInH,KAAOtV,KAChBA,KAAKyc,IAAIyN,WAAWlqB,MACpBA,KAAK4xB,YAAclB,EACnB1wB,KAAKwxB,eAAiBE,EACtB1xB,KAAK2xB,2BAA2BluB,KAAKzD,KAAK0wB,cAC1C1wB,KAAKkM,aAAeD,EACpBjM,KAAK+D,QAAQ+C,UAAUtD,IAAI,QAC3BxD,KAAKmF,eAAenF,KAAKyc,IAAIqT,iBAAiB9sB,IAC1ChD,KAAKoV,aAAa3R,KAAK,CAAEY,KAAMrB,EAAMqB,MAAO,IAC5CH,EAAsBlE,KAAK+D,QAAS,cAAe+tB,IACnD9xB,KAAKyc,IAAI4T,cAAc5sB,KAAKquB,EAAG,IAC/B5tB,EAAsBlE,KAAK+D,QAAS,cAAe+tB,IACnD9xB,KAAKyc,IAAI8T,cAAc9sB,KAAKquB,EAAG,KAEnC9xB,KAAKmF,eAAenF,KAAK2xB,2BAA4B3xB,KAAKuV,2BAA2Bwc,IACjF/xB,KAAKyc,IAAI0T,sBAAsB1sB,KAAK,CAChCitB,WAAYqB,GACd,IACF/xB,KAAKyc,IAAI+R,kBAAkB9qB,IACtB1D,KAAKkpB,SAGNxlB,EAAEsqB,UACF/mB,EAAWjH,KAAKkpB,OAAQ,WAGxBviB,EAAc3G,KAAKkpB,OAAQ,WAC9B,KAELlpB,KAAKgyB,YACR,CACD,UAAA9mB,CAAWuiB,GACPztB,KAAKyc,IAAIkS,uBAAuBlrB,KAAK,CAAEgqB,aAC1C,CACD,SAAAhJ,CAAUC,GACN1kB,KAAKyc,IAAIsS,mBAAmBtrB,KAAK,CAAEihB,YACtC,CACD,UAAAgM,GACI,OAAO1wB,KAAK4xB,WACf,CACD,WAAAnB,CAAYwB,GACJjyB,KAAK4xB,cAAgBK,IAGzBjyB,KAAK4xB,YAAcK,EACfA,GACIjyB,KAAK6V,gBACLlR,aAAa3E,KAAK6V,gBAElB7V,KAAK4lB,MACL5lB,KAAK+D,QAAQ1E,YAAYW,KAAK4lB,OAIlC5lB,KAAK6V,eAAiBjR,YAAW,KAC7B,IAAI/C,EACiB,QAApBA,EAAK7B,KAAK4lB,YAAyB,IAAP/jB,GAAyBA,EAAGmF,QAAQ,GAClE,KAEPhH,KAAKoV,aAAa3R,KAAKwuB,EAAW,CAAE5tB,KAAMrE,KAAK6T,OAAU,CAAA,GACzD7T,KAAK2xB,2BAA2BluB,KAAKwuB,GACxC,CACD,MAAA7e,CAAO/O,EAAMuH,GACT5L,KAAKoK,MAAQ/F,EACbrE,KAAK6L,gBAAkBD,EACvB,MAAOiI,EAAOC,GAAU9T,KAAKiM,cAAgBb,EAAYgB,WACnD,CAAC/H,EAAMuH,GACP,CAACA,EAAgBvH,GACnBrE,KAAK0wB,eACL1wB,KAAK6xB,aAAehe,GAExB9T,MAAMqT,OAAOS,EAAOC,EACvB,CACD,IAAAyW,CAAK8E,GACD,IAAIxtB,EAAI6e,EACR3gB,MAAMwqB,KAAK8E,GAC+B,iBAA/BA,EAAWgC,kBAClBrxB,KAAKqxB,gBAAkBhC,EAAWgC,iBAEI,iBAA/BhC,EAAWiC,kBAClBtxB,KAAKsxB,gBAAkBjC,EAAWiC,iBAEtCtxB,KAAKkyB,SAAWlyB,KAAKmyB,mBACrBnyB,KAAKoyB,WAAapyB,KAAKqyB,qBACvBryB,KAAKkyB,SAAS3H,KAAKhO,OAAOC,OAAOD,OAAOC,OAAO,CAAE,EAAE6S,GAAa,CAAE5S,IAAKzc,KAAKyc,OAC5Ezc,KAAKoyB,WAAW7H,KAAKhO,OAAOC,OAAOD,OAAOC,OAAO,CAAE,EAAE6S,GAAa,CAAE5S,IAAKzc,KAAKyc,OACzD,QAApB5a,EAAK7B,KAAK4lB,YAAyB,IAAP/jB,GAAyBA,EAAGse,OAAOngB,KAAKkyB,SAASnuB,SACvD,QAAtB2c,EAAK1gB,KAAKkpB,cAA2B,IAAPxI,GAAyBA,EAAGP,OAAOngB,KAAKoyB,WAAWruB,SAC7C,kBAA1BsrB,EAAWqB,YAClB1wB,KAAKywB,YAAYpB,EAAWqB,WAEnC,CACD,MAAAvX,GACI,MAAMmW,EAAStvB,KAAKkrB,QACpB,OAAO3O,OAAOC,OAAOD,OAAOC,OAAO,CAAA,EAAIzc,MAAMoZ,UAAW,CAAEsY,gBAAiBzxB,KAAKyxB,gBAAiBa,MAAOhD,EAAOgD,OAClH,CACD,UAAAN,GACIhyB,KAAKkpB,OAASrqB,SAASI,cAAc,OACrCe,KAAKkpB,OAAO1G,SAAW,EACvBxiB,KAAKkpB,OAAO/hB,UAAY,cACxBnH,KAAKkpB,OAAOlqB,MAAM8U,OAAS,GAAG9T,KAAKkxB,eACnClxB,KAAKkpB,OAAOlqB,MAAMymB,WAAa,GAAGzlB,KAAKkxB,eACvClxB,KAAKkpB,OAAOlqB,MAAMuzB,UAAY,GAAGvyB,KAAKkxB,eACtClxB,KAAKkpB,OAAOlqB,MAAMwzB,UAAY,GAAGxyB,KAAKkxB,eACtClxB,KAAK+D,QAAQ1E,YAAYW,KAAKkpB,QAC9BlpB,KAAK4lB,KAAO/mB,SAASI,cAAc,OACnCe,KAAK4lB,KAAKze,UAAY,YACtBnH,KAAK+D,QAAQ1E,YAAYW,KAAK4lB,KACjC,CAED,YAAAkL,GACI,MAAO,CACH3F,OAASmE,IACL,IAAIztB,EAAI6e,EACiB,QAAxB7e,EAAK7B,KAAKkyB,gBAA6B,IAAPrwB,GAAyBA,EAAGspB,OAAO,CAAEmE,WAC3C,QAA1B5O,EAAK1gB,KAAKoyB,kBAA+B,IAAP1R,GAAyBA,EAAGyK,OAAO,CAAEmE,UAAS,EAErF9tB,QAAS,KACL,IAAIK,EAAI6e,EACiB,QAAxB7e,EAAK7B,KAAKkyB,gBAA6B,IAAPrwB,GAAyBA,EAAGL,UAClC,QAA1Bkf,EAAK1gB,KAAKoyB,kBAA+B,IAAP1R,GAAyBA,EAAGlf,SAAS,EAGnF,ECxLE,MAAMixB,WAA+BxB,GACxC,WAAAvxB,CAAYqkB,EAAUte,EAAIgW,EAAWgW,EAAiBxlB,EAAaykB,EAAYgC,GAC3E3yB,MAAM0F,EAAIgW,EAAWgW,EAAiBxlB,EAAaykB,GAAY,GAC/D1wB,KAAK+jB,SAAWA,EAChB/jB,KAAK4pB,WAAa,IAAIrnB,EACtBvC,KAAKqc,UAAYrc,KAAK4pB,WAAW5mB,MAC5B0vB,GACD1yB,KAAK2yB,kBAEZ,CACD,gBAAAA,GACI,IAAK3yB,KAAKkpB,OACN,OAEJ,MAAMzjB,EAAKzF,KAAKyF,GACVmtB,EAAa5yB,KAAK+jB,SAASte,GACjCzF,KAAKkpB,OAAO9E,WAAY,EACxBpkB,KAAKimB,QAAU,kBAAmC9C,GAC9C,OAAAxiB,GAEI,OADAR,EAAuBC,cAAcQ,QAAQ,CAAC,IAAIX,EAAa2yB,EAAYntB,IAAMxF,EAAac,WACvF,CACHS,QAAS,KACLrB,EAAuBC,cAAcI,UAAUP,EAAac,UAAU,EAGjF,GACFf,KAAKkpB,QACRlpB,KAAKqe,OAAS,IAAIU,GAAW/e,KAAK+D,QAAS,CACvCqb,oBAAqB,CAAC,MAAO,UAC7BmC,aAAc,CACVO,eAAgB,CAAE5iB,KAAM,aAAc8C,MAAO,KAEjD+d,kBAAoB/c,IAChB,MAAMtC,EAAOM,IACb,SAAIN,GACIA,EAAKR,SAAWF,KAAKyF,IACrB/E,EAAKd,SAAWI,KAAK+jB,SAASte,OAIlCzF,KAAK+jB,SAASlhB,QAAQ0pB,gBACfvsB,KAAK+jB,SAASlhB,QAAQ0pB,eAAe,CACxChM,YAAavd,EACbrC,QAASK,EACT+a,MAAO/b,MAGH,IAGpBA,KAAKmF,eAAenF,KAAK4pB,WAAY5pB,KAAKimB,QAASjmB,KAAKqe,OAAQre,KAAKqe,OAAOO,QAAQ5b,IAChFhD,KAAK4e,OAAO5b,EAAM,IAEzB,CACD,MAAA4b,CAAO5b,GACH,MAAMtC,EAAOM,IACb,IAAKN,GAAQA,EAAKd,SAAWI,KAAK+jB,SAASte,GAIvC,YADAzF,KAAK4pB,WAAWnmB,KAAK8Y,OAAOC,OAAOD,OAAOC,OAAO,GAAIxZ,GAAQ,CAAE+Y,MAAO/b,KAAMyc,IAAK,IAAIL,GAAYpc,KAAK+jB,UAAWpjB,QAASK,KAG9H,MAAMwpB,EAAexqB,KAAKkrB,QACrBV,aACC1qB,EAAUY,EAAKR,OACf2yB,EAAgBrI,EAAavO,SAASnc,GAC5C,IAAK+yB,EAGD,YADA7yB,KAAK4pB,WAAWnmB,KAAK8Y,OAAOC,OAAOD,OAAOC,OAAO,GAAIxZ,GAAQ,CAAE+Y,MAAO/b,KAAMW,QAASK,EAAayb,IAAK,IAAIL,GAAYpc,KAAK+jB,aAGhI,MAAM+O,EAAYtI,EAAa9O,OACzBqX,EAAYD,EAAUxvB,QAAQuvB,GACpC,IAAIG,EAAUxI,EAAa9O,OAAOpY,QAAQtD,MACnB,SAAnBgD,EAAMsR,UAA0C,QAAnBtR,EAAMsR,WACnC0e,EAAUrpB,KAAKD,IAAI,EAAGspB,EAAU,IAEb,UAAnBhwB,EAAMsR,UAA2C,WAAnBtR,EAAMsR,WAChCye,EAAYC,GACZA,IAEJA,EAAUrpB,KAAKF,IAAIqpB,EAAUnvB,OAAS,EAAGqvB,IAE7CxI,EAAarO,UAAU4W,EAAWC,EACrC,ECxFE,MAAMC,WAA6BlF,GACtC,WAAAruB,CAAY+F,EAAIsW,GACZhc,MAAM0F,GACNzF,KAAKyvB,gCAAkC,IAAIltB,EAC3CvC,KAAK0vB,+BAAiC1vB,KAAKyvB,gCAAgCzsB,MAC3EhD,KAAK2vB,wBAA0B,IAAIptB,EAAQ,CACvCW,QAAQ,IAEZlD,KAAK4vB,uBAAyB5vB,KAAK2vB,wBAAwB3sB,MAC3DhD,KAAK6vB,iBAAmB,IAAIttB,EAC5BvC,KAAK8vB,gBAAkB9vB,KAAK6vB,iBAAiB7sB,MAC7ChD,KAAKmF,eAAenF,KAAKyvB,gCAAiCzvB,KAAK2vB,wBAAyB3vB,KAAK6vB,kBACzF9T,GACA/b,KAAKkqB,WAAWnO,EAEvB,CACD,cAAAgU,CAAe/tB,GACXhC,KAAKyvB,gCAAgChsB,KAAKzB,EAC7C,CACD,OAAAguB,CAAQhtB,GACJhD,KAAK6vB,iBAAiBpsB,KAAKT,EAC9B,ECpBE,MAAMkwB,WAAsBvC,GAC/B,YAAI9lB,GACA,OAAO7K,KAAKmzB,SACf,CACD,QAAIroB,GACA,OAAO9K,KAAKozB,KACf,CACD,gBAAIrd,GACA,MAAMlC,EAAsC,mBAAvB7T,KAAKqzB,cACpBrzB,KAAKqzB,gBACLrzB,KAAKqzB,cAKX,OAJIxf,IAAU7T,KAAKszB,yBACftzB,KAAKszB,uBAAyBzf,EAC9B7T,KAAKuzB,qBAEF1f,CACV,CACD,iBAAIoC,GACA,MAAMnC,EAAwC,mBAAxB9T,KAAKwzB,eACrBxzB,KAAKwzB,iBACLxzB,KAAKwzB,eAKX,OAJI1f,IAAW9T,KAAKyzB,0BAChBzzB,KAAKyzB,wBAA0B3f,EAC/B9T,KAAKuzB,qBAEFzf,CACV,CACD,iBAAIoC,GACA,MAAMpC,EAAwC,mBAAxB9T,KAAK0zB,eACrB1zB,KAAK0zB,iBACL1zB,KAAK0zB,eAKX,OAJI5f,IAAW9T,KAAK2zB,0BAChB3zB,KAAK2zB,wBAA0B7f,EAC/B9T,KAAKuzB,qBAEFzf,CACV,CACD,gBAAIkC,GACA,MAAMnC,EAAsC,mBAAvB7T,KAAK4zB,cACpB5zB,KAAK4zB,gBACL5zB,KAAK4zB,cAKX,OAJI/f,IAAU7T,KAAK6zB,yBACf7zB,KAAK6zB,uBAAyBhgB,EAC9B7T,KAAKuzB,qBAEF1f,CACV,CACD,YAAI6Q,GACA,OAAO1kB,KAAKyc,IAAIiI,QACnB,CACD,WAAAhlB,CAAY+F,EAAIgW,EAAW5Y,EAAS4Z,GAChC1c,MAAM0F,EAAIgW,EAAWgB,QAAiCA,EAAM,IAAIwW,GAAqBxtB,IACrFzF,KAAKszB,uBAAyB,EAC9BtzB,KAAK6zB,uBAAyBrnB,OAAOsnB,iBACrC9zB,KAAKyzB,wBAA0B,EAC/BzzB,KAAK2zB,wBAA0BnnB,OAAOsnB,iBACtC9zB,KAAKqzB,cAAgB,EACrBrzB,KAAKwzB,eAAiB,EACtBxzB,KAAK4zB,cAAgBpnB,OAAOsnB,iBAC5B9zB,KAAK0zB,eAAiBlnB,OAAOsnB,iBAC7B9zB,KAAKozB,OAAQ,EACbpzB,KAAKoV,aAAe,IAAI7S,EACxBvC,KAAKoR,YAAcpR,KAAKoV,aAAapS,MACmD,iBAA5EH,aAAyC,EAASA,EAAQkT,gBAClE/V,KAAKqzB,cAAgBxwB,EAAQkT,cAEuD,iBAA5ElT,aAAyC,EAASA,EAAQmT,gBAClEhW,KAAK4zB,cAAgB/wB,EAAQmT,cAEwD,iBAA7EnT,aAAyC,EAASA,EAAQoT,iBAClEjW,KAAKwzB,eAAiB3wB,EAAQoT,eAEuD,iBAA7EpT,aAAyC,EAASA,EAAQqT,iBAClElW,KAAK0zB,eAAiB7wB,EAAQqT,eAElClW,KAAKyc,IAAIyN,WAAWlqB,MACpBA,KAAKmF,eAAenF,KAAKyc,IAAIqS,oBAAoB9rB,IAC7C,MAAMyqB,UAAEA,GAAczqB,GAChB+gB,SAAEA,GAAa/jB,KAAKkrB,QAC1BnH,EAAS7Y,WAAWlL,KAAMytB,EAAU,IACpCztB,KAAKyc,IAAIyS,gBAAe,KACxB,MAAMnL,SAAEA,GAAa/jB,KAAKkrB,QAC1BnH,EAASU,UAAUzkB,KAAK,IACxBA,KAAKyc,IAAIiT,gCAAgC1sB,IACP,iBAAvBA,EAAM+S,cACiB,mBAAvB/S,EAAM+S,eACb/V,KAAKqzB,cAAgBrwB,EAAM+S,cAEI,iBAAxB/S,EAAMiT,eACkB,mBAAxBjT,EAAMiT,gBACbjW,KAAKwzB,eAAiBxwB,EAAMiT,eAEE,iBAAvBjT,EAAMgT,cACiB,mBAAvBhT,EAAMgT,eACbhW,KAAK4zB,cAAgB5wB,EAAMgT,cAEI,iBAAxBhT,EAAMkT,eACkB,mBAAxBlT,EAAMkT,gBACblW,KAAK0zB,eAAiB1wB,EAAMkT,cAC/B,IACDlW,KAAKyc,IAAIqT,iBAAiB9sB,IAC1BhD,KAAKoV,aAAa3R,KAAK,CACnBqQ,OAAQ9Q,EAAM8Q,OACdD,MAAO7Q,EAAM6Q,OACf,IACF7T,KAAKoV,aACZ,CACD,UAAAlK,CAAWuiB,GACPztB,KAAKyc,IAAIkS,uBAAuBlrB,KAAK,CAAEgqB,aAC1C,CACD,SAAAhJ,CAAUC,GACN1kB,KAAKyc,IAAIsS,mBAAmBtrB,KAAK,CAAEihB,YACtC,CACD,IAAA6F,CAAK8E,GACGA,EAAWnZ,gBACXlW,KAAK0zB,eAAiBrE,EAAWnZ,eAEjCmZ,EAAWpZ,gBACXjW,KAAKwzB,eAAiBnE,EAAWpZ,eAEjCoZ,EAAWrZ,eACXhW,KAAK4zB,cAAgBvE,EAAWrZ,cAEhCqZ,EAAWtZ,eACX/V,KAAKqzB,cAAgBhE,EAAWtZ,cAEpC/V,KAAKmzB,UAAY9D,EAAWxkB,SAC5B7K,KAAKozB,QAAU/D,EAAWvkB,KAC1B/K,MAAMwqB,KAAK8E,GACyB,kBAAzBA,EAAW5B,WAClBztB,KAAKkL,WAAWmkB,EAAW5B,UAElC,CACD,iBAAA8F,GACIvzB,KAAKyc,IAAIkT,wBAAwBlsB,KAAK,CAClCsS,aAAc/V,KAAKszB,uBACnBtd,aAAchW,KAAK6zB,uBACnB5d,cAAejW,KAAKyzB,wBACpBvd,cAAelW,KAAK2zB,yBAE3B,CACD,MAAAxa,GACI,MAAMrE,EAAQ/U,MAAMoZ,SACd4a,EAAW/xB,GAAUA,IAAUwK,OAAOsnB,sBAAmBrzB,EAAYuB,EACrEgyB,EAAWhyB,GAAWA,GAAS,OAAIvB,EAAYuB,EACrD,OAAOua,OAAOC,OAAOD,OAAOC,OAAO,CAAA,EAAI1H,GAAQ,CAAEmB,cAAe+d,EAAQh0B,KAAKiW,eAAgBC,cAAe6d,EAAQ/zB,KAAKkW,eAAgBH,aAAcie,EAAQh0B,KAAK+V,cAAeC,aAAc+d,EAAQ/zB,KAAKgW,cAAelL,KAAM9K,KAAK8K,KAAMD,SAAU7K,KAAK6K,UAChQ,ECnJE,MAAMopB,WAAkChB,GAC3C,cAAIlO,GACA,IAAK/kB,KAAKk0B,OACN,MAAM,IAAIpyB,MAAM,6CAEpB,OAAO9B,KAAKk0B,OAAO1P,MAAMO,UAC5B,CACD,WAAArlB,CAAY+F,EAAIse,GACZhkB,MAAM0F,GACNzF,KAAK+jB,SAAWA,EAChB/jB,KAAKwpB,0BAA4B,IAAIjnB,EACrCvC,KAAKm0B,yBAA2Bn0B,KAAKwpB,0BAA0BxmB,MAC/DhD,KAAKmF,eAAenF,KAAKwpB,0BAC5B,CACD,MAAA4K,CAAOvxB,GACH,IAAIhB,EACJ,IAAK7B,KAAKk0B,OACN,MAAM,IAAIpyB,MAAM,6CAEpB9B,KAAK+jB,SAASsQ,iBAAiBxxB,EAAQkb,MAAO/d,KAAKk0B,OAAOzuB,QAAIhF,EAAuC,QAA3BoB,EAAKgB,EAAQyR,gBAA6B,IAAPzS,EAAgBA,EAAK,SACrI,CACD,UAAAqoB,CAAWnM,GACP/d,KAAKk0B,OAASnW,CACjB,ECtBE,MAAMuW,WAA2BpB,GACpC,UAAIxX,GACA,OAAO1b,KAAKu0B,OAAO7Y,MACtB,CACD,eAAI6B,GACA,OAAOvd,KAAKu0B,OAAOhX,WACtB,CACD,QAAIlZ,GACA,OAAOrE,KAAKu0B,OAAOlwB,IACtB,CACD,SAAImgB,GACA,OAAOxkB,KAAKu0B,MACf,CACD,UAAIhQ,GACA,OAAOvkB,KAAKu0B,OAAOhQ,MACtB,CACD,UAAIA,CAAOviB,GACPhC,KAAKu0B,OAAOhQ,OAASviB,CACxB,CACD,UAAIknB,GACA,OAAOlpB,KAAKu0B,OAAOrL,MACtB,CACD,WAAAxpB,CAAYqkB,EAAUte,EAAI5C,GACtB9C,MAAM0F,EAAI,oBAAqB,CAC3BwQ,cAAe,IACfF,aAAc,KACf,IAAIke,GAA0BxuB,EAAIse,IACrC/jB,KAAKyc,IAAIyN,WAAWlqB,MACpBA,KAAKu0B,OAAS,IAAI5L,GAAwB3oB,KAAK+D,QAASggB,EAAUte,EAAI5C,EAAS7C,KAClF,CACD,UAAAkqB,GACIlqB,KAAKu0B,OAAOrK,YACf,CACD,SAAAzF,CAAUC,GACN3kB,MAAM0kB,UAAUC,GAChB1kB,KAAKwkB,MAAMC,UAAUC,EACxB,CACD,MAAAtR,CAAOS,EAAOC,GACV/T,MAAMqT,OAAOS,EAAOC,GACpB9T,KAAKwkB,MAAMpR,OAAOS,EAAOC,EAC5B,CACD,YAAAgd,GACI,OAAO9wB,KAAKu0B,MACf,CACD,MAAApb,GACI,OAAOnZ,KAAKwkB,MAAMrL,QACrB,ECjDE,SAASqb,GAAwB9zB,GACpC,QAAIA,EAAK+zB,cAIb,CACO,SAASC,GAAwBh0B,GACpC,QAAIA,EAAKi0B,cAIb,CACO,SAASC,GAAwBl0B,GACpC,QAAIA,EAAK+zB,cAIb,CACO,SAASI,GAAwBn0B,GACpC,QAAIA,EAAKi0B,cAIb,CCpBO,MAAMG,WAA6B7B,GACtC,SAAIX,GACA,OAAOtyB,KAAK+b,MAAMuW,KACrB,CACD,iBAAItG,GACA,IAAInqB,EACJ,SAAgC,QAArBA,EAAK7B,KAAK+d,aAA0B,IAAPlc,OAAgB,EAASA,EAAG6iB,SACvE,CACD,SAAI3G,CAAM/b,GACN,MAAM+yB,EAAmB/0B,KAAKgsB,cAC9BhsB,KAAKk0B,OAASlyB,EACdhC,KAAKg1B,kBAAkBvxB,OACnBzD,KAAKk0B,SACLl0B,KAAKuF,WAAWvD,MAAQhC,KAAKk0B,OAAOzX,IAAIuS,mBAAkB,KACtDhvB,KAAKutB,wBAAwB9pB,MAAM,IAEnCzD,KAAKgsB,gBAAkB+I,GACvB/0B,KAAKutB,wBAAwB9pB,OAGxC,CACD,SAAIsa,GACA,OAAO/d,KAAKk0B,MACf,CACD,WAAAx0B,CAAYqc,EAAOgC,EAAOgG,GACtBhkB,MAAMgc,EAAMtW,IACZzF,KAAK+b,MAAQA,EACb/b,KAAK+jB,SAAWA,EAChB/jB,KAAKi1B,kBAAoB,IAAI1yB,EAC7BvC,KAAKk1B,iBAAmBl1B,KAAKi1B,kBAAkBjyB,MAC/ChD,KAAKutB,wBAA0B,IAAIhrB,EACnCvC,KAAKgd,uBAAyBhd,KAAKutB,wBAAwBvqB,MAC3DhD,KAAKg1B,kBAAoB,IAAIzyB,EAC7BvC,KAAKm1B,iBAAmBn1B,KAAKg1B,kBAAkBhyB,MAC/ChD,KAAKuF,WAAa,IAAIF,EACtBrF,KAAKkqB,WAAWnO,GAChB/b,KAAKk0B,OAASnW,EACd/d,KAAKmF,eAAenF,KAAKuF,WAAYvF,KAAKi1B,kBAAmBj1B,KAAKg1B,kBAAmBh1B,KAAKutB,wBAC7F,CACD,MAAA6G,CAAOvxB,GACH,IAAIhB,EACJ7B,KAAK+jB,SAASsQ,iBAAiBxxB,EAAQkb,MAAO/d,KAAKk0B,OAAOzuB,GAAIzF,KAAK+b,MAAMtW,GAAgC,QAA3B5D,EAAKgB,EAAQyR,gBAA6B,IAAPzS,EAAgBA,EAAK,SAAUgB,EAAQQ,MAC3J,CACD,QAAA+xB,CAAS9C,GACLtyB,KAAK+b,MAAMqZ,SAAS9C,EACvB,CACD,KAAA+C,GACIr1B,KAAK+d,MAAMyG,MAAMvB,WAAWjjB,KAAK+b,MACpC,ECjDE,MAAMuZ,WAAsBxwB,EAC/B,UAAIwqB,GACA,OAAOtvB,KAAKkrB,OACf,CACD,SAAIoH,GACA,OAAOtyB,KAAKu1B,MACf,CACD,SAAIxX,GACA,OAAO/d,KAAKk0B,MACf,CACD,WAAAx0B,CAAY+F,EAAIse,EAAUyG,EAAczM,EAAOtT,GAC3C1K,QACAC,KAAKyF,GAAKA,EACVzF,KAAKwqB,aAAeA,EACpBxqB,KAAKyK,KAAOA,EACZzK,KAAKk0B,OAASnW,EACd/d,KAAKyc,IAAM,IAAIqY,GAAqB90B,KAAMA,KAAKk0B,OAAQnQ,GACvD/jB,KAAKmF,eAAenF,KAAKyc,IAAIyS,gBAAe,KACxCnL,EAASoE,eAAenoB,KAAK,IAC7BA,KAAKyc,IAAIqT,iBAAiB9sB,IAG1BhD,KAAK+d,MAAMtB,IAAIuT,QAAQhtB,EAAM,IAEpC,CACD,IAAAunB,CAAK+E,GACDtvB,KAAKkrB,QAAUoE,EAAOA,OACtBtvB,KAAKyK,KAAK8f,KAAKhO,OAAOC,OAAOD,OAAOC,OAAO,GAAI8S,GAAS,CAAE7S,IAAKzc,KAAKyc,IAAK+N,aAAcxqB,KAAKwqB,gBAC5FxqB,KAAKo1B,SAAS9F,EAAOgD,MACxB,CACD,KAAAtW,GACIhc,KAAKyc,IAAIgS,cAAchrB,MAC1B,CACD,MAAA0V,GACI,MAAO,CACH1T,GAAIzF,KAAKyF,GACT+vB,iBAAkBx1B,KAAKyK,KAAK+qB,iBAC5BC,aAAcz1B,KAAKyK,KAAKgrB,aACxBnG,OAAQ/S,OAAOyU,KAAKhxB,KAAKkrB,SAAW,CAAE,GAAEvnB,OAAS,EAC3C3D,KAAKkrB,aACLzqB,EACN6xB,MAAOtyB,KAAKsyB,MAEnB,CACD,QAAA8C,CAAS9C,GACkBA,IAAUtyB,KAAKsyB,QAElCtyB,KAAKu1B,OAASjD,EACdtyB,KAAKyK,KAAK0gB,OAAO,CACbmE,OAAQ,CACJA,OAAQtvB,KAAKkrB,QACboH,MAAOtyB,KAAKsyB,SAGpBtyB,KAAKyc,IAAIwY,kBAAkBxxB,KAAK,CAAE6uB,UAEzC,CACD,MAAAnH,CAAOnoB,GAEHhD,KAAKkrB,QAAU3O,OAAOC,OAAOD,OAAOC,OAAO,GAAKxc,KAAKkrB,SAAW,CAAA,GAAMloB,EAAMssB,QAK5E,IAAK,MAAMyB,KAAOxU,OAAOyU,KAAKhuB,EAAMssB,aACN7uB,IAAtBuC,EAAMssB,OAAOyB,WACN/wB,KAAKkrB,QAAQ6F,GAI5B/wB,KAAKyK,KAAK0gB,OAAO,CACbmE,OAAQ,CACJA,OAAQtvB,KAAKkrB,QACboH,MAAOtyB,KAAKsyB,QAGvB,CACD,iBAAAhH,CAAkBvN,EAAOiO,GACrBhsB,KAAKk0B,OAASnW,EACd/d,KAAKyc,IAAIsB,MAAQA,EACjB,MAAM2X,EAAiB11B,KAAKk0B,OAAO1P,MAAMsH,cAAc9rB,MACvDA,KAAKyc,IAAIsS,mBAAmBtrB,KAAK,CAC7BihB,SAAUsH,GAAiB0J,IAE/B11B,KAAKyc,IAAIkS,uBAAuBlrB,KAAK,CACjCgqB,UAAWiI,IAEf11B,KAAKyK,KAAK6gB,kBAAkBtrB,KAAKk0B,OAAQl0B,KAAKk0B,OAAO1P,MAAMsH,cAAc9rB,MAC5E,CACD,MAAAoT,CAAOS,EAAOC,GAEV9T,KAAKyc,IAAI4R,sBAAsB5qB,KAAK,CAChCoQ,QACAC,OAAQA,IAEZ9T,KAAKyK,KAAK2I,OAAOS,EAAOC,EAC3B,CACD,OAAAtS,GACIxB,KAAKyc,IAAIjb,UACTxB,KAAKyK,KAAKjJ,SACb,ECtGL,MAAMm0B,GAA4BrG,IAC9B,MAAMsG,EAAM/2B,SAASg3B,gBAAgB,6BAA8B,OACnED,EAAIE,eAAe,KAAM,SAAUxG,EAAOxb,QAC1C8hB,EAAIE,eAAe,KAAM,QAASxG,EAAOzb,OACzC+hB,EAAIE,eAAe,KAAM,UAAWxG,EAAOyG,SAC3CH,EAAIE,eAAe,KAAM,cAAe,SACxCF,EAAIE,eAAe,KAAM,YAAa,SACtCF,EAAI9uB,UAAUtD,IAAI,gBAClB,MAAM+W,EAAO1b,SAASg3B,gBAAgB,6BAA8B,QAGpE,OAFAtb,EAAKub,eAAe,KAAM,IAAKxG,EAAO/U,MACtCqb,EAAIv2B,YAAYkb,GACTqb,CAAG,EAEDI,GAAoB,IAAML,GAAyB,CAC5D9hB,MAAO,KACPC,OAAQ,KACRiiB,QAAS,YACTxb,KAAM,+HCdH,MAAM0b,WAAmBnxB,EAC5B,WAAIf,GACA,OAAO/D,KAAKuiB,QACf,CACD,WAAA7iB,GACIK,QAEAC,KAAKsvB,OAAS,GACdtvB,KAAKuiB,SAAW1jB,SAASI,cAAc,OACvCe,KAAKuiB,SAASpb,UAAY,cAE1BnH,KAAKk2B,SAAWr3B,SAASI,cAAc,OACvCe,KAAKk2B,SAAS/uB,UAAY,cAE1BnH,KAAKm2B,iBAAmBt3B,SAASI,cAAc,OAC/Ce,KAAKm2B,iBAAiBhvB,UAAY,mBAElCnH,KAAKo2B,MAAQv3B,SAASI,cAAc,MACpCe,KAAKo2B,MAAMjvB,UAAY,WAEvBnH,KAAKq2B,OAASx3B,SAASI,cAAc,OACrCe,KAAKq2B,OAAOlvB,UAAY,aACxBnH,KAAKq2B,OAAOh3B,YAAY22B,MAExBh2B,KAAKuiB,SAASljB,YAAYW,KAAKk2B,UAC/Bl2B,KAAKuiB,SAASljB,YAAYW,KAAKm2B,kBAC/Bn2B,KAAKm2B,iBAAiB92B,YAAYW,KAAKo2B,OACvCp2B,KAAKo2B,MAAM/2B,YAAYW,KAAKq2B,QAE5Br2B,KAAKmF,eAAejB,EAAsBlE,KAAKm2B,iBAAkB,aAAcrE,IAC3EA,EAAGtT,gBAAgB,KAEvBxe,KAAKs2B,QACR,CACD,MAAAnL,CAAOnoB,GACHhD,KAAKsvB,OAAS/S,OAAOC,OAAOD,OAAOC,OAAO,CAAE,EAAExc,KAAKsvB,QAAStsB,EAAMssB,QAClEtvB,KAAKs2B,QACR,CACD,KAAAta,GAEC,CACD,IAAAuO,CAAK+E,GACDtvB,KAAKsvB,OAASA,EACdtvB,KAAKk2B,SAASvQ,YAAc2J,EAAOgD,MACnCpuB,EAAsBlE,KAAKq2B,OAAQ,SAAUvE,IACzCA,EAAGtT,iBACHxe,KAAKsvB,OAAO7S,IAAI4Y,OAAO,GAE9B,CACD,aAAAkB,CAAcrC,GACVl0B,KAAKs2B,QACR,CACD,oBAAAE,CAAqBC,GACjBz2B,KAAKs2B,QACR,CACD,MAAAljB,CAAO2P,EAAQC,GAEd,CACD,MAAAsT,GACQt2B,KAAKk2B,SAASvQ,cAAgB3lB,KAAKsvB,OAAOgD,QAC1CtyB,KAAKk2B,SAASvQ,YAAc3lB,KAAKsvB,OAAOgD,MAE/C,EC/DE,MAAMoE,GACT,WAAI7T,GACA,OAAO7iB,KAAKk2B,QACf,CACD,OAAIjP,GACA,OAAOjnB,KAAK22B,IACf,CACD,WAAAj3B,CAAYqkB,EAAUte,EAAI+vB,EAAkBC,GACxCz1B,KAAK+jB,SAAWA,EAChB/jB,KAAKyF,GAAKA,EACVzF,KAAKw1B,iBAAmBA,EACxBx1B,KAAKy1B,aAAeA,EACpBz1B,KAAKk0B,OAAS,KACdl0B,KAAKy2B,gBAAkB,KACvBz2B,KAAKk2B,SAAWl2B,KAAK42B,uBAAuB52B,KAAKyF,GAAI+vB,GACrDx1B,KAAK22B,KAAO32B,KAAK62B,mBAAmB72B,KAAKyF,GAAIgwB,EAChD,CACD,IAAAlL,CAAK+E,GACDtvB,KAAK6iB,QAAQ0H,KAAKhO,OAAOC,OAAOD,OAAOC,OAAO,CAAE,EAAE8S,GAAS,CAAErI,IAAKjnB,KAAKinB,OACvEjnB,KAAKinB,IAAIsD,KAAK+E,EACjB,CACD,iBAAAhE,CAAkBvN,EAAO2X,GACjB3X,IAAU/d,KAAKk0B,SACfl0B,KAAKk0B,OAASnW,EACV/d,KAAKk2B,SAASK,eACdv2B,KAAKk2B,SAASK,cAAcxY,GAE5B/d,KAAK22B,KAAKJ,eACVv2B,KAAK22B,KAAKJ,cAAcxY,IAG5B2X,IAAmB11B,KAAKy2B,kBACxBz2B,KAAKy2B,gBAAkBf,EACnB11B,KAAKk2B,SAASM,sBACdx2B,KAAKk2B,SAASM,qBAAqBd,GAEnC11B,KAAK22B,KAAKH,sBACVx2B,KAAK22B,KAAKH,qBAAqBd,GAG1C,CACD,MAAAtiB,CAAOS,EAAOC,GACV,IAAIjS,EAAI6e,EAC8B,QAArCA,GAAM7e,EAAK7B,KAAK6iB,SAASzP,cAA2B,IAAPsN,GAAyBA,EAAG7Y,KAAKhG,EAAIgS,EAAOC,EAC7F,CACD,MAAAqX,CAAOnoB,GACH,IAAInB,EAAI6e,EAAIC,EAAIC,EACsB,QAArCF,GAAM7e,EAAK7B,KAAK6iB,SAASsI,cAA2B,IAAPzK,GAAyBA,EAAG7Y,KAAKhG,EAAImB,GACjD,QAAjC4d,GAAMD,EAAK3gB,KAAKinB,KAAKkE,cAA2B,IAAPvK,GAAyBA,EAAG/Y,KAAK8Y,EAAI3d,EAClF,CACD,OAAAxB,GACI,IAAIK,EAAI6e,EAAIC,EAAIC,EACuB,QAAtCF,GAAM7e,EAAK7B,KAAK6iB,SAASrhB,eAA4B,IAAPkf,GAAyBA,EAAG7Y,KAAKhG,GAC7C,QAAlC+e,GAAMD,EAAK3gB,KAAKinB,KAAKzlB,eAA4B,IAAPof,GAAyBA,EAAG/Y,KAAK8Y,EAC/E,CACD,sBAAAiW,CAAuBnxB,EAAIC,GACvB,IAAI7D,EACJ,OAAO2D,EAAgBC,EAAIC,EAAe1F,KAAK+jB,SAASlhB,QAAQ8C,YAAc,CAAA,EAAI3F,KAAK+jB,SAASlhB,QAAQ+C,oBAAgF,QAA1D/D,EAAK7B,KAAK+jB,SAASlhB,QAAQi0B,iCAA8C,IAAPj1B,OAAgB,EAASA,EAAGghB,QAC/N,CACD,kBAAAgU,CAAmBpxB,EAAIC,GACnB,IAAI7D,EAAI6e,EACR,OAAIhb,EACOF,EAAgBC,EAAIC,EAAe1F,KAAK+jB,SAASlhB,QAAQk0B,cAAe/2B,KAAK+jB,SAASlhB,QAAQm0B,uBAAmF,QAA1Dn1B,EAAK7B,KAAK+jB,SAASlhB,QAAQi0B,iCAA8C,IAAPj1B,OAAgB,EAASA,EAAGolB,KAAK,IAAM,IAAIgP,KAEtOj2B,KAAK+jB,SAASlhB,QAAQo0B,oBACpBzxB,EAAgBC,EAAIzF,KAAK+jB,SAASlhB,QAAQo0B,oBAAqBj3B,KAAK+jB,SAASlhB,QAAQk0B,cAAe/2B,KAAK+jB,SAASlhB,QAAQm0B,uBAAmF,QAA1DtW,EAAK1gB,KAAK+jB,SAASlhB,QAAQi0B,iCAA8C,IAAPpW,OAAgB,EAASA,EAAGuG,KAAK,IAAM,IAAIgP,KAGhQ,IAAIA,EAElB,ECrEE,MAAMiB,GACT,WAAAx3B,CAAY0T,GACRpT,KAAKoT,OAASA,CACjB,CACD,QAAA2G,CAASod,EAAWpZ,GAChB,IAAIlc,EACJ,MAAM/B,EAAUq3B,EAAU1xB,GACpB6pB,EAAS6H,EAAU7H,OACnBgD,EAAQ6E,EAAU7E,MAClB8E,EAAWD,EAAU1sB,KACrB+qB,EAAmB4B,EACnBA,EAASvU,QAAQpd,GACjB0xB,EAAU3B,kBAAoB,UAC9BC,EAAe2B,EACS,QAAvBv1B,EAAKu1B,EAASnQ,WAAwB,IAAPplB,OAAgB,EAASA,EAAG4D,GAC5D0xB,EAAU1B,aACVhrB,EAAO,IAAIisB,GAAmB12B,KAAKoT,OAAQtT,EAAS01B,EAAkBC,GACtE1Z,EAAQ,IAAIuZ,GAAcx1B,EAASE,KAAKoT,OAAQ,IAAI+J,GAAYnd,KAAKoT,QAAS2K,EAAOtT,GAK3F,OAJAsR,EAAMwO,KAAK,CACP+H,MAAOA,GAASxyB,EAChBwvB,OAAQA,GAAU,CAAE,IAEjBvT,CACV,ECtBE,MAAMsb,WAAkBvyB,EAC3B,WAAIf,GACA,OAAO/D,KAAKuiB,QACf,CACD,WAAA7iB,GACIK,QACAC,KAAKuiB,SAAW1jB,SAASI,cAAc,OACvCe,KAAKuiB,SAASpb,UAAY,YAC1B,MAAMmrB,EAAQzzB,SAASI,cAAc,OACrCqzB,EAAMnrB,UAAY,kBAClB,MAAMmwB,EAAaz4B,SAASI,cAAc,QAC1Cq4B,EAAWt4B,MAAMu4B,SAAW,IAC5B,MAAM1U,EAAUhkB,SAASI,cAAc,OACvC4jB,EAAQ1b,UAAY,oBACpBnH,KAAKuiB,SAASljB,YAAYizB,GAC1BtyB,KAAKuiB,SAASljB,YAAYwjB,GAC1B,MAAM2U,EAAmB34B,SAASI,cAAc,OAChDu4B,EAAiBrwB,UAAY,oBAC7B,MAAMswB,EAAc54B,SAASI,cAAc,OAC3Cw4B,EAAYtwB,UAAY,eACxBswB,EAAYp4B,YAAY22B,MACxBwB,EAAiBn4B,YAAYo4B,GAC7BnF,EAAMjzB,YAAYi4B,GAClBhF,EAAMjzB,YAAYm4B,GAClBx3B,KAAKmF,eAAejB,EAAsBuzB,EAAa,SAAU3F,IAC7D,IAAIjwB,EACJiwB,EAAGtT,iBACCxe,KAAKk0B,SACgB,QAApBryB,EAAK7B,KAAK03B,YAAyB,IAAP71B,GAAyBA,EAAGic,YAAY9d,KAAKk0B,QAC7E,IAER,CACD,MAAA/I,CAAOloB,GAEN,CACD,KAAA+Y,GAEC,CACD,MAAA5I,CAAO2P,EAAQC,GAEd,CACD,IAAAuH,CAAKW,GACDlrB,KAAK03B,KAAOxM,EAAQV,aACpBxqB,KAAKs2B,QACR,CACD,iBAAAhL,CAAkBvN,EAAO4Z,GACrB33B,KAAKk0B,OAASnW,EACd/d,KAAKs2B,QACR,CACD,OAAA90B,GACIzB,MAAMyB,SACT,CACD,MAAA80B,GACI,MAAMsB,KAAgB53B,KAAK03B,MAAQ13B,KAAK03B,KAAKrzB,MAAQ,GACrD6C,EAAYlH,KAAK+D,QAAS,cAAe6zB,EAC5C,ECvDL,MAAMC,GAAsB,MACxB,IAAI9jB,EAAW,KAQf,OAPA,SAAmBhQ,GACXgQ,IAAahQ,GAAwB,OAAbgQ,GACxB7M,EAAY6M,EAAU,qBAAqB,GAE/C7M,EAAYnD,EAAS,qBAAqB,GAC1CgQ,EAAWhQ,CACd,CAEJ,EAV2B,GAWrB,MAAM+zB,WAAgBhzB,EACzB,0BAAIizB,CAAuB/1B,GACvBhC,KAAK6C,QAAQk1B,uBAAyB/1B,CACzC,CACD,2BAAIg2B,CAAwBh2B,GACxBhC,KAAK6C,QAAQm1B,wBAA0Bh2B,CAC1C,CACD,WAAAtC,CAAYmD,GACR9C,QACAC,KAAK6C,QAAUA,EACf7C,KAAKuiB,SAAW1jB,SAASI,cAAc,OACvCe,KAAKoV,aAAe,IAAI7S,EACxBvC,KAAKoR,YAAcpR,KAAKoV,aAAapS,MACrChD,KAAKi4B,gBAAkB,IAAI11B,EAC3BvC,KAAKk4B,eAAiBl4B,KAAKi4B,gBAAgBj1B,MAC3ChD,KAAKmF,eAAenF,KAAKoV,aAAcpV,KAAKi4B,iBAC5Cj4B,KAAKuiB,SAASpb,UAAY,sBAC1BnH,KAAKm4B,YAAY,OACjBn4B,KAAKm4B,YAAY,UACjBn4B,KAAKm4B,YAAY,QACjBn4B,KAAKm4B,YAAY,SACjBn4B,KAAKm4B,YAAY,WACjBn4B,KAAKm4B,YAAY,YACjBn4B,KAAKm4B,YAAY,cACjBn4B,KAAKm4B,YAAY,eACjBn4B,KAAKuiB,SAASljB,YAAYW,KAAK6C,QAAQggB,SACvC7iB,KAAK6C,QAAQmI,UAAU3L,YAAYW,KAAKuiB,UAExCviB,KAAKo4B,UAAU,CACXtkB,OAAQ9T,KAAK6C,QAAQiR,OACrBD,MAAO7T,KAAK6C,QAAQgR,MACpBF,IAAK3T,KAAK6C,QAAQ8Q,IAClBD,KAAM1T,KAAK6C,QAAQ6Q,MAE1B,CACD,SAAA0kB,CAAUC,EAAS,IACc,iBAAlBA,EAAOvkB,SACd9T,KAAKuiB,SAASvjB,MAAM8U,OAAS,GAAGukB,EAAOvkB,YAEf,iBAAjBukB,EAAOxkB,QACd7T,KAAKuiB,SAASvjB,MAAM6U,MAAQ,GAAGwkB,EAAOxkB,WAEhB,iBAAfwkB,EAAO1kB,MACd3T,KAAKuiB,SAASvjB,MAAM2U,IAAM,GAAG0kB,EAAO1kB,SAEb,iBAAhB0kB,EAAO3kB,OACd1T,KAAKuiB,SAASvjB,MAAM0U,KAAO,GAAG2kB,EAAO3kB,UAEzC,MAAM4kB,EAAgBt4B,KAAK6C,QAAQmI,UAAU0U,wBACvC6Y,EAAcv4B,KAAKuiB,SAAS7C,wBAG5B8Y,EAAU7uB,KAAKD,IAAI,EAAG1J,KAAKy4B,gBAAgBF,EAAY1kB,QAEvD6kB,EAA0D,iBAAzC14B,KAAK6C,QAAQm1B,wBAC9BruB,KAAKD,IAAI,EAAG1J,KAAK24B,iBAAiBJ,EAAYzkB,SAC9C,EACAJ,EAAOlK,EAAM+uB,EAAY7kB,KAAO4kB,EAAc5kB,MAAO8kB,EAAS7uB,KAAKD,IAAI,EAAG4uB,EAAczkB,MAAQ0kB,EAAY1kB,MAAQ2kB,IACpH7kB,EAAMnK,EAAM+uB,EAAY5kB,IAAM2kB,EAAc3kB,KAAM+kB,EAAS/uB,KAAKD,IAAI,EAAG4uB,EAAcxkB,OAASykB,EAAYzkB,OAAS4kB,IACzH14B,KAAKuiB,SAASvjB,MAAM0U,KAAO,GAAGA,MAC9B1T,KAAKuiB,SAASvjB,MAAM2U,IAAM,GAAGA,MAC7B3T,KAAKoV,aAAa3R,MACrB,CACD,MAAA0V,GACI,MAAMnO,EAAYhL,KAAK6C,QAAQmI,UAAU0U,wBACnC3b,EAAU/D,KAAKuiB,SAAS7C,wBAC9B,MAAO,CACH/L,IAAK5P,EAAQ4P,IAAM3I,EAAU2I,IAC7BD,KAAM3P,EAAQ2P,KAAO1I,EAAU0I,KAC/BG,MAAO9P,EAAQ8P,MACfC,OAAQ/P,EAAQ+P,OAEvB,CACD,SAAA8kB,CAAUC,EAAYh2B,EAAU,CAAEilB,YAAY,IAC1C,MAAMgR,EAAO,IAAIzzB,EACX0zB,EAAQ,KACV,IAAItlB,EAAS,KACb,MAAM9B,EAAU,IACT5S,EAAqB,aACrBA,EAAqB,YAE5B,IAAK,MAAM6S,KAAUD,EACjBC,EAAO5S,MAAMiM,cAAgB,OAEjC6tB,EAAK92B,MAAQ,IAAI8C,EAAoB,CACjCtD,QAAS,KACL,IAAK,MAAMoQ,KAAUD,EACjBC,EAAO5S,MAAMiM,cAAgB,MAChC,GAENnH,EAA4B2E,OAAQ,aAAc/E,IACjD,MAAM40B,EAAgBt4B,KAAK6C,QAAQmI,UAAU0U,wBACvChS,EAAIhK,EAAEoO,QAAUwmB,EAAc5kB,KAC9BiM,EAAIjc,EAAEqO,QAAUumB,EAAc3kB,IACpCzM,EAAYlH,KAAKuiB,SAAU,gCAAgC,GAC3D,MAAMgW,EAAcv4B,KAAKuiB,SAAS7C,wBACnB,OAAXjM,IACAA,EAAS,CACL/F,EAAGhK,EAAEoO,QAAUymB,EAAY7kB,KAC3BiM,EAAGjc,EAAEqO,QAAUwmB,EAAY5kB,MAGnC,MAAM6kB,EAAU7uB,KAAKD,IAAI,EAAG1J,KAAKy4B,gBAAgBF,EAAY1kB,QACvD6kB,EAAU/uB,KAAKD,IAAI,EAAG1J,KAAK6C,QAAQm1B,wBACnCh4B,KAAK24B,iBAAiBJ,EAAYzkB,QAClC,GACAJ,EAAOlK,EAAMkE,EAAI+F,EAAO/F,GAAI8qB,EAAS7uB,KAAKD,IAAI,EAAG4uB,EAAczkB,MAAQ0kB,EAAY1kB,MAAQ2kB,IAC3F7kB,EAAMnK,EAAMmW,EAAIlM,EAAOkM,GAAI+Y,EAAS/uB,KAAKD,IAAI,EAAG4uB,EAAcxkB,OAASykB,EAAYzkB,OAAS4kB,IAClG14B,KAAKo4B,UAAU,CAAEzkB,MAAKD,QAAO,IAC7B5P,EAA4B2E,OAAQ,WAAW,KAC/CvB,EAAYlH,KAAKuiB,SAAU,gCAAgC,GAC3DuW,EAAKt3B,UACLxB,KAAKi4B,gBAAgBx0B,MAAM,IAC5B,EAEPzD,KAAKmF,eAAe2zB,EAAM50B,EAAsB20B,EAAY,aAAc71B,IAClEA,EAAM0gB,iBACN1gB,EAAMwb,iBAKN1V,EAAsB9F,IAG1B+1B,GAAO,IACP70B,EAAsBlE,KAAK6C,QAAQggB,QAAS,aAAc7f,IACtDA,EAAM0gB,kBAKN5a,EAAsB9F,IAGtBA,EAAM8hB,UACNiU,GACH,IACD70B,EAAsBlE,KAAK6C,QAAQggB,QAAS,aAAa,KACzDgV,GAAoB73B,KAAKuiB,SAAS,IACnC,IACHsV,GAAoB73B,KAAKuiB,UACrB1f,EAAQilB,YACRiR,GAEP,CACD,WAAAZ,CAAYxf,GACR,MAAMqgB,EAAsBn6B,SAASI,cAAc,OACnD+5B,EAAoB7xB,UAAY,oBAAoBwR,IACpD3Y,KAAKuiB,SAASljB,YAAY25B,GAC1B,MAAMF,EAAO,IAAIzzB,EACjBrF,KAAKmF,eAAe2zB,EAAM50B,EAAsB80B,EAAqB,aAAct1B,IAC/EA,EAAE8a,iBACF,IAAIya,EAAgB,KACpB,MAAMtnB,EAAU,IACT5S,EAAqB,aACrBA,EAAqB,YAE5B,IAAK,MAAM6S,KAAUD,EACjBC,EAAO5S,MAAMiM,cAAgB,OAEjC6tB,EAAK92B,MAAQ,IAAI8C,EAAoBhB,EAA4B2E,OAAQ,aAAc/E,IACnF,MAAM40B,EAAgBt4B,KAAK6C,QAAQmI,UAAU0U,wBACvC6Y,EAAcv4B,KAAKuiB,SAAS7C,wBAC5BC,EAAIjc,EAAEqO,QAAUumB,EAAc3kB,IAC9BjG,EAAIhK,EAAEoO,QAAUwmB,EAAc5kB,KAUpC,IAAIC,EACAG,EACAJ,EACAG,EAZkB,OAAlBolB,IAEAA,EAAgB,CACZC,UAAWvZ,EACXwZ,eAAgBZ,EAAYzkB,OAC5BslB,UAAW1rB,EACX2rB,cAAed,EAAY1kB,QAOnC,MAAMylB,EAAU,KACZ3lB,EAAMnK,EAAMmW,GAAInT,OAAO+sB,UAAWN,EAAcC,UAC5CD,EAAcE,eACdb,EAAcxkB,OACZ9T,KAAK24B,iBAAiBL,EAAcxkB,QACpCnK,KAAKD,IAAI,EAAGuvB,EAAcC,UACxBD,EAAcE,eACdrB,GAAQ0B,iBAChB1lB,EACImlB,EAAcC,UACVD,EAAcE,eACdxlB,CAAG,EAET8lB,EAAa,KACf9lB,EACIslB,EAAcC,UACVD,EAAcE,eACtBrlB,EAAStK,EAAMmW,EAAIhM,EAAKA,EAAM,GAEO,iBAD1B3T,KAAK6C,QACPm1B,yBACFrkB,EACC3T,KAAK6C,QAAQm1B,wBACfF,GAAQ0B,eAAgBhtB,OAAO+sB,UAAU,EAE7CG,EAAW,KACbhmB,EAAOlK,EAAMkE,GAAIlB,OAAO+sB,UAAWN,EAAcG,UAC7CH,EAAcI,cACdf,EAAczkB,MACZ7T,KAAKy4B,gBAAgBH,EAAczkB,OACnClK,KAAKD,IAAI,EAAGuvB,EAAcG,UACxBH,EAAcI,cACdvB,GAAQ6B,gBAChB9lB,EACIolB,EAAcG,UACVH,EAAcI,cACd3lB,CAAI,EAEVkmB,EAAY,KACdlmB,EACIulB,EAAcG,UACVH,EAAcI,cACtBxlB,EAAQrK,EAAMkE,EAAIgG,EAAMA,EAAO,GAEK,iBADzB1T,KAAK6C,QACPk1B,wBACFrkB,EACC1T,KAAK6C,QAAQk1B,uBACfD,GAAQ6B,cAAentB,OAAO+sB,UAAU,EAElD,OAAQ5gB,GACJ,IAAK,MACD2gB,IACA,MACJ,IAAK,SACDG,IACA,MACJ,IAAK,OACDC,IACA,MACJ,IAAK,QACDE,IACA,MACJ,IAAK,UACDN,IACAI,IACA,MACJ,IAAK,WACDJ,IACAM,IACA,MACJ,IAAK,aACDH,IACAC,IACA,MACJ,IAAK,cACDD,IACAG,IAGR55B,KAAKo4B,UAAU,CAAEtkB,SAAQD,QAAOF,MAAKD,QAAO,IAC5C,CACAlS,QAAS,KACL,IAAK,MAAMoQ,KAAUD,EACjBC,EAAO5S,MAAMiM,cAAgB,MAChC,GAENnH,EAA4B2E,OAAQ,WAAW,KAC9CqwB,EAAKt3B,UACLxB,KAAKi4B,gBAAgBx0B,MAAM,IAC5B,IAEV,CACD,eAAAg1B,CAAgB5kB,GACZ,MAAmD,iBAAxC7T,KAAK6C,QAAQk1B,uBACblkB,EAAQ7T,KAAK6C,QAAQk1B,uBAEzB,CACV,CACD,gBAAAY,CAAiB7kB,GACb,MAAoD,iBAAzC9T,KAAK6C,QAAQm1B,wBACblkB,EAAS9T,KAAK6C,QAAQm1B,wBAE1BlkB,CACV,CACD,OAAAtS,GACIxB,KAAKuiB,SAASvb,SACdjH,MAAMyB,SACT,EAELs2B,GAAQ0B,eAAiB,GACzB1B,GAAQ6B,cAAgB,GC9SjB,MAAME,WAAmC/0B,EAC5C,WAAApF,CAAYqe,EAAO+b,GACf/5B,QACAC,KAAK+d,MAAQA,EACb/d,KAAK85B,QAAUA,EACf95B,KAAKmF,eAAe20B,EACvB,CACD,QAAAxlB,CAAS+jB,GACLr4B,KAAK85B,QAAQ1B,UAAUC,EAC1B,ECWL,MAAM0B,GAAuC,IA6DtC,MAAMC,WAA0BlN,GACnC,eAAI7gB,GACA,OAAOjM,KAAKktB,SAASjhB,WACxB,CACD,eAAImR,GACA,OAAOpd,KAAK0b,OAAO/X,MACtB,CACD,UAAI+X,GACA,OAAO1b,KAAKid,OAAOgd,SAASlc,GAAUA,EAAMrC,QAC/C,CACD,WAAI7Y,GACA,OAAO7C,KAAKk6B,QACf,CACD,eAAI3c,GACA,MAAMC,EAAcxd,KAAKwd,YACzB,GAAKA,EAGL,OAAOA,EAAYD,WACtB,CACD,WAAA7d,CAAYmD,GACR9C,MAAM,CACFwP,oBAAoB,EACpBtD,YAAapJ,EAAQoJ,aAAeb,EAAYgB,WAChDwD,OAAQ/M,EAAQ+M,OAChBqI,cAAepV,EAAQoV,gBAE3BjY,KAAKm6B,YAAcvwB,IACnB5J,KAAKo6B,cAAgB,IAAIlD,GAA4Bl3B,MACrDA,KAAKipB,UAAY,KACjBjpB,KAAKq6B,iBAAmB,IAAI93B,EAC5BvC,KAAKsd,gBAAkBtd,KAAKq6B,iBAAiBr3B,MAC7ChD,KAAKs6B,iBAAmB,IAAI/3B,EAC5BvC,KAAKqd,gBAAkBrd,KAAKs6B,iBAAiBt3B,MAC7ChD,KAAK4pB,WAAa,IAAIrnB,EACtBvC,KAAKqc,UAAYrc,KAAK4pB,WAAW5mB,MACjChD,KAAK8pB,kBAAoB,IAAIvnB,EAC7BvC,KAAK6c,iBAAmB7c,KAAK8pB,kBAAkB9mB,MAC/ChD,KAAK6pB,eAAiB,IAAItnB,EAC1BvC,KAAK2c,cAAgB3c,KAAK6pB,eAAe7mB,MACzChD,KAAKu6B,qBAAuB,IAAIh4B,EAChCvC,KAAK2b,oBAAsB3b,KAAKu6B,qBAAqBv3B,MACrDhD,KAAK+pB,wBAA0B,IAAIxnB,EACnCvC,KAAK+c,uBAAyB/c,KAAK+pB,wBAAwB/mB,MAC3DhD,KAAKw6B,eAAiB,GACtBtzB,EAAYlH,KAAKktB,SAASnpB,QAAS,eAAe,GAClD/D,KAAKmF,eAAenF,KAAKq6B,iBAAkBr6B,KAAKs6B,iBAAkBt6B,KAAK+pB,wBAAyB/pB,KAAK6pB,eAAgB7pB,KAAK8pB,kBAAmB9pB,KAAKu6B,qBAAsBv6B,KAAK4pB,WAAYprB,EAAM0C,IAAIlB,KAAK4c,cAAe5c,KAAK8c,iBAAnCte,EAAqD,KAC1OwB,KAAKy6B,iBAAiB,IACtBj8B,EAAM0C,IAAIlB,KAAK2c,cAAe3c,KAAK6c,iBAAkB7c,KAAK+c,uBAA1Dve,EAAkF,KAClFwB,KAAKwtB,yBAAyB/pB,MAAM,KAExCzD,KAAKk6B,SAAWr3B,EACX7C,KAAK6C,QAAQ8C,aACd3F,KAAK6C,QAAQ8C,WAAa,IAEzB3F,KAAK6C,QAAQ+C,sBACd5F,KAAK6C,QAAQ+C,oBAAsB,IAElC5F,KAAK6C,QAAQm0B,yBACdh3B,KAAK6C,QAAQm0B,uBAAyB,IAErCh3B,KAAK6C,QAAQk0B,gBACd/2B,KAAK6C,QAAQk0B,cAAgB,IAE5B/2B,KAAK6C,QAAQ63B,oBACb16B,KAAK6C,QAAQ83B,8BACd36B,KAAK6C,QAAQ63B,mBAAqBrD,IAEtC,MAAM/N,EAAa,IAAIvK,GAAW/e,KAAK+D,QAAS,CAC5Cgc,kBAAmB,CAAC/c,EAAOsR,KACvB,MAAM5T,EAAOG,IACb,OAAIH,EACIA,EAAKd,SAAWI,KAAKyF,KAGR,WAAb6O,GAGgC,IAAzBtU,KAAKktB,SAASvpB,UAIzB3D,KAAK6C,QAAQ0pB,kBACI,WAAbjY,GAAkD,IAAzBtU,KAAKktB,SAASvpB,SAQpC3D,KAAK6C,QAAQ0pB,eAAe,CAC/BhM,YAAavd,EACbsR,SAAUA,EACV+J,OAAQ6E,GAAoB0X,KAC5Bj6B,QAASE,IAGL,EAEhBue,oBAAqB,CAAC,MAAO,SAAU,OAAQ,QAAS,UACxDmC,aAAc,CACVO,eAAgB,CAAE5iB,KAAM,SAAU8C,MAAO,IACzCqC,KAAM,CAAEnF,KAAM,SAAU8C,MAAO,OAGvChC,KAAKmF,eAAemkB,EAAW1K,QAAQ5b,IACnC,MAAMtC,EAAOG,IACTH,EACAV,KAAKq0B,iBAAiBr0B,KAAK66B,cAAc73B,EAAMsR,UAAW5T,EAAKb,QAASa,EAAKZ,cAAWW,EAAW,UAGnGT,KAAK4pB,WAAWnmB,KAAK8Y,OAAOC,OAAOD,OAAOC,OAAO,CAAA,EAAIxZ,GAAQ,CAAEyZ,IAAKzc,KAAK03B,KAAM3Z,MAAO,KAAMpd,QAASE,IACxG,IACDyoB,GACJtpB,KAAK03B,KAAO,IAAIva,GAAYnd,MAC5BA,KAAKy6B,iBACR,CACD,gBAAAxc,CAAiB1R,EAAM2R,EAAOrb,GAC1B,IAAIhB,EAAI6e,EAAIC,EAAIC,EAAIe,EAAIC,EACxB,IAAI7D,EACJ,GAAIxR,aAAgB+oB,GAChBvX,EAAQ/d,KAAK86B,cACb96B,KAAK8b,YAAYvP,EAAM,CACnBwuB,kBAAkB,EAClBnlB,aAAa,IAEjBmI,EAAMyG,MAAM5B,UAAUrW,OAErB,CACDwR,EAAQxR,EAC4F,kBAA/E1J,aAAyC,EAASA,EAAQm4B,kBAC3En4B,EAAQm4B,iBAERh7B,KAAK2tB,cAAcphB,EAAM,CAAEqJ,aAAa,GAE/C,CACDmI,EAAMyG,MAAMO,YAAa,EACzB,MAAMkW,EAAiF,iBAA3D/c,aAAqC,EAASA,EAAMxQ,GAAkB/D,KAAKD,IAAIwU,EAAMxQ,EAAG,GAAK,IACnHwtB,EAAgF,iBAA3Dhd,aAAqC,EAASA,EAAMyB,GAAkBhW,KAAKD,IAAIwU,EAAMyB,EAAG,GAAK,IAClHma,EAAU,IAAIhC,GAAQ,CACxB9sB,UAAWhL,KAAKktB,SAASnpB,QACzB8e,QAAS9E,EAAMha,QACf+P,OAA8E,QAArEjS,EAAKqc,aAAqC,EAASA,EAAMpK,cAA2B,IAAPjS,EAAgBA,EAAK,IAC3GgS,MAA4E,QAApE6M,EAAKxC,aAAqC,EAASA,EAAMrK,aAA0B,IAAP6M,EAAgBA,EAAK,IACzGhN,KAAMunB,EACNtnB,IAAKunB,EACLnD,uBAA6D,0BAArC/3B,KAAK6C,QAAQs4B,yBAC/B16B,EACsH,QAArHmgB,EAAiD,QAA3CD,EAAK3gB,KAAK6C,QAAQs4B,2BAAwC,IAAPxa,OAAgB,EAASA,EAAGya,kCAA+C,IAAPxa,EAAgBA,EAAKmZ,GACzJ/B,wBAA8D,0BAArCh4B,KAAK6C,QAAQs4B,yBAChC16B,EACuH,QAAtHmhB,EAAiD,QAA3CD,EAAK3hB,KAAK6C,QAAQs4B,2BAAwC,IAAPxZ,OAAgB,EAASA,EAAG0Z,mCAAgD,IAAPzZ,EAAgBA,EAAKmY,KAExJ7hB,EAAK6F,EAAMha,QAAQu3B,cAAc,mBACvC,IAAKpjB,EACD,MAAM,IAAIpW,MAAM,8BAEpBg4B,EAAQlB,UAAU1gB,EAAI,CAClB4P,WAA8F,kBAA1EjlB,aAAyC,EAASA,EAAQilB,aACxEjlB,EAAQilB,aAGlB,MAAMyT,EAAqB,IAAI1B,GAA2B9b,EAAO+b,GAC3Dv0B,EAAaU,EAAmB8X,EAAMha,SAAU2oB,IAClD,MAAM7Y,MAAEA,EAAKC,OAAEA,GAAW4Y,EAAMC,YAChC5O,EAAM3K,OAAOS,EAAOC,EAAO,IAE/BynB,EAAmBp2B,eAAe20B,EAAQ1oB,aAAY,KAIlD2M,EAAM3K,OAAO2K,EAAMjK,OAAQiK,EAAMlK,MAAM,IACvCimB,EAAQ5B,gBAAe,KACvBl4B,KAAKwtB,yBAAyB/pB,MAAM,IACpCsa,EAAM3M,aAAapO,IACnB82B,EAAQ1B,UAAU,CACdtkB,OAAQ9Q,aAAqC,EAASA,EAAM8Q,OAC5DD,MAAO7Q,aAAqC,EAASA,EAAM6Q,OAC7D,IACF,CACArS,QAAS,KACL+D,EAAW/D,UACXuc,EAAMyG,MAAMO,YAAa,E1CxNlC,SAAgB9S,EAAOjQ,GAC1B,MAAMqB,EAAQ4O,EAAMkV,WAAWqU,GAAMA,IAAMx5B,IACvCqB,GAAS,GACT4O,EAAM1O,OAAOF,EAAO,EAI5B,C0CkNgB2D,CAAOhH,KAAKw6B,eAAgBe,GAC5Bv7B,KAAKy6B,iBAAiB,IAG9Bz6B,KAAKw6B,eAAep3B,KAAKm4B,GACzBv7B,KAAKy6B,iBACR,CACD,aAAAI,CAAcvmB,GACV,OAAQA,GACJ,IAAK,MACL,IAAK,SACGtU,KAAKktB,SAASjhB,cAAgBb,EAAYgB,YAG1CpM,KAAKktB,SAASjT,kCAElB,MACJ,IAAK,OACL,IAAK,QACGja,KAAKktB,SAASjhB,cAAgBb,EAAYwI,UAG1C5T,KAAKktB,SAASjT,kCAM1B,OAAQ3F,GACJ,IAAK,MACL,IAAK,OACL,IAAK,SACD,OAAOtU,KAAKy7B,sBAAsB,CAAC,IACvC,IAAK,SACL,IAAK,QACD,OAAOz7B,KAAKy7B,sBAAsB,CAACz7B,KAAKktB,SAASvpB,SACrD,QACI,MAAM,IAAI7B,MAAM,wBAAwBwS,KAEnD,CACD,aAAAuH,CAAchZ,GACV,IAAIhB,EAAI6e,EACR,MAAMgb,EAAuD,iBAAxB74B,EAAQoJ,aACzCjM,KAAKktB,SAASjhB,cAAgBpJ,EAAQoJ,YACpC0vB,OAAiEl7B,IAAhCoC,EAAQs4B,qBAC3Ct4B,EAAQs4B,sBAAwBn7B,KAAK6C,QAAQs4B,oBAKjD,GAJAn7B,KAAKk6B,SAAW3d,OAAOC,OAAOD,OAAOC,OAAO,CAAA,EAAIxc,KAAK6C,SAAUA,GAC3D64B,IACA17B,KAAKktB,SAASjhB,YAAcpJ,EAAQoJ,aAEpC0vB,EACA,IAAK,MAAM5d,KAAS/d,KAAKw6B,eAAgB,CACrC,OAAQx6B,KAAK6C,QAAQs4B,qBACjB,IAAK,wBACDpd,EAAM+b,QAAQ9B,6BAA0Bv3B,EACxCsd,EAAM+b,QAAQ/B,4BAAyBt3B,EACvC,MACJ,UAAKA,EACDsd,EAAM+b,QAAQ9B,wBACV+B,GACJhc,EAAM+b,QAAQ/B,uBACVgC,GACJ,MACJ,QACIhc,EAAM+b,QAAQ9B,wBACkC,QAA3Cn2B,EAAK7B,KAAK6C,QAAQs4B,2BAAwC,IAAPt5B,OAAgB,EAASA,EAAGw5B,4BACpFtd,EAAM+b,QAAQ/B,uBACkC,QAA3CrX,EAAK1gB,KAAK6C,QAAQs4B,2BAAwC,IAAPza,OAAgB,EAASA,EAAG0a,2BAE5Frd,EAAM+b,QAAQ1B,UAAU,CAAA,EAC3B,CAELp4B,KAAKoT,OAAOpT,KAAKktB,SAASrZ,MAAO7T,KAAKktB,SAASpZ,QAAQ,EAC1D,CACD,MAAAV,CAAOS,EAAOC,EAAQga,GAElB,GADA/tB,MAAMqT,OAAOS,EAAOC,EAAQga,GACxB9tB,KAAKw6B,eACL,IAAK,MAAMoB,KAAY57B,KAAKw6B,eAExBoB,EAAS9B,QAAQ1B,WAG5B,CACD,KAAApc,GACI,IAAIna,EACwB,QAA3BA,EAAK7B,KAAKwd,mBAAgC,IAAP3b,GAAyBA,EAAGma,OACnE,CACD,aAAAyB,CAAchY,GACV,OAAOzF,KAAK0b,OAAO2M,MAAMtM,GAAUA,EAAMtW,KAAOA,GACnD,CACD,cAAA0iB,CAAepM,GACX/b,KAAKgmB,iBAAiBjK,EAAMgC,OAC5BhC,EAAMgC,MAAMyG,MAAM5B,UAAU7G,EAC/B,CACD,UAAA4B,CAAW9a,EAAU,IACjB,IAAIhB,EACJ,IAAKgB,EAAQkb,MAAO,CAChB,IAAK/d,KAAKwd,YACN,OAEJ3a,EAAQkb,MAAQ/d,KAAKwd,WACxB,CACD,GAAI3a,EAAQg5B,cAAgBh5B,EAAQkb,OAC5Blb,EAAQkb,MAAMR,cACd1a,EAAQkb,MAAMrC,OAAO7Y,EAAQkb,MAAMrC,OAAO/X,OAAS,GAEnD,YADAd,EAAQkb,MAAMyG,MAAM7G,WAAW,CAAEoN,cAAc,IAIvD,MAAMrS,EAAWJ,EAAgBzV,EAAQkb,MAAMha,SACzC8F,EAA+C,QAAvChI,EAAK7B,KAAKktB,SAASrjB,KAAK6O,UAA8B,IAAP7W,OAAgB,EAASA,EAAG4I,KACzFzK,KAAKgmB,iBAAiBnc,EACzB,CACD,cAAA+T,CAAe/a,EAAU,IACrB,IAAIhB,EACJ,IAAKgB,EAAQkb,MAAO,CAChB,IAAK/d,KAAKwd,YACN,OAEJ3a,EAAQkb,MAAQ/d,KAAKwd,WACxB,CACD,GAAI3a,EAAQg5B,cAAgBh5B,EAAQkb,OAC5Blb,EAAQkb,MAAMR,cAAgB1a,EAAQkb,MAAMrC,OAAO,GAEnD,YADA7Y,EAAQkb,MAAMyG,MAAM5G,eAAe,CAAEmN,cAAc,IAI3D,MAAMrS,EAAWJ,EAAgBzV,EAAQkb,MAAMha,SACzC8F,EAAmD,QAA3ChI,EAAK7B,KAAKktB,SAASnZ,SAAS2E,UAA8B,IAAP7W,OAAgB,EAASA,EAAG4I,KACzFZ,GACA7J,KAAKgmB,iBAAiBnc,EAE7B,CAMD,MAAAsP,GACI,IAAItX,EACJ,MAAMnB,EAAOV,KAAKktB,SAAS3T,YACrBmC,EAAS1b,KAAK0b,OAAOrP,QAAO,CAACyvB,EAAY/f,KAC3C+f,EAAW/f,EAAMtW,IAAMsW,EAAM5C,SACtB2iB,IACR,CAAE,GACCC,EAAS/7B,KAAKw6B,eAAel5B,KAAK06B,IAC7B,CACHt7B,KAAMs7B,EAAcje,MAAM5E,SAC1B7E,SAAU0nB,EAAclC,QAAQ3gB,aAGlCjP,EAAS,CACX+xB,KAAMv7B,EACNgb,SACA8B,YAAyC,QAA3B3b,EAAK7B,KAAKwd,mBAAgC,IAAP3b,OAAgB,EAASA,EAAG4D,IAKjF,OAHIs2B,EAAOp4B,OAAS,IAChBuG,EAAOswB,eAAiBuB,GAErB7xB,CACV,CACD,QAAA6P,CAASrZ,GACL,IAAImB,EAEJ,GADA7B,KAAK4C,QACe,iBAATlC,GAA8B,OAATA,EAC5B,MAAM,IAAIoB,MAAM,+CAEpB,MAAMm6B,KAAEA,EAAIvgB,OAAEA,EAAM8B,YAAEA,GAAgB9c,EACtC,GAAuB,WAAnBu7B,EAAK3iB,KAAKpa,OAAsByI,MAAMu0B,QAAQD,EAAK3iB,KAAK5Y,MACxD,MAAM,IAAIoB,MAAM,+BAEpB,IAEI,MAAM+R,EAAQ7T,KAAK6T,MACbC,EAAS9T,KAAK8T,OACdqoB,EAAkCz7B,IACpC,MAAM+E,GAAEA,EAAE8e,OAAEA,EAAMyF,WAAEA,EAAUla,MAAEA,EAAK+a,WAAEA,GAAenqB,EACtD,GAAkB,iBAAP+E,EACP,MAAM,IAAI3D,MAAM,mCAEpB,MAAMic,EAAQ/d,KAAK86B,YAAY,CAC3Br1B,KACA8e,SAAUA,EACVyF,aAAcA,IAEZoS,EAAgB,GACtB,IAAK,MAAM76B,KAASuO,EAAO,CAMvB,MAAMiM,EAAQ/b,KAAKo6B,cAAcrgB,SAAS2B,EAAOna,GAAQwc,GACzDqe,EAAch5B,KAAK2Y,EACtB,CACD/b,KAAKstB,eAAe7pB,KAAKsa,GACzB,IAAK,IAAI3U,EAAI,EAAGA,EAAI0G,EAAMnM,OAAQyF,IAAK,CACnC,MAAM2S,EAAQqgB,EAAchzB,GACtBsb,EAAiC,iBAAfmG,GACpBA,IAAe9O,EAAMtW,GACzBsY,EAAMyG,MAAM5B,UAAU7G,EAAO,CACzBqP,oBAAqB1G,EACrB2G,oBAAoB,GAE3B,CAMD,OALKtN,EAAMR,aAAeQ,EAAMrC,OAAO/X,OAAS,GAC5Coa,EAAMyG,MAAM5B,UAAU7E,EAAMrC,OAAOqC,EAAMrC,OAAO/X,OAAS,GAAI,CACzD0nB,oBAAoB,IAGrBtN,CAAK,EAEhB/d,KAAKktB,SAASzT,YAAYwiB,EAAM,CAC5BliB,SAAWjD,GACAqlB,EAA+BrlB,EAAKpW,QAGnDV,KAAKoT,OAAOS,EAAOC,GAAQ,GAC3B,MAAMuoB,EAA0D,QAA9Bx6B,EAAKnB,EAAK85B,sBAAmC,IAAP34B,EAAgBA,EAAK,GAC7F,IAAK,MAAMy6B,KAA2BD,EAA0B,CAC5D,MAAM37B,KAAEA,EAAI4T,SAAEA,GAAagoB,EACrBve,EAAQoe,EAA+Bz7B,GAC7CV,KAAKie,iBAAiBF,EAAO,CACzBrQ,EAAG4G,EAASZ,KACZiM,EAAGrL,EAASX,IACZG,OAAQQ,EAASR,OACjBD,MAAOS,EAAST,OACjB,CAAEmnB,iBAAiB,EAAMlT,YAAY,GAC3C,CACD,IAAK,MAAMkU,KAAiBh8B,KAAKw6B,eAC7BwB,EAAclC,QAAQ1B,YAE1B,GAA2B,iBAAhB5a,EAA0B,CACjC,MAAMzB,EAAQ/b,KAAKic,SAASuB,GACxBzB,GACA/b,KAAKgmB,iBAAiBjK,EAE7B,CACJ,CACD,MAAOwgB,GAIH,IAAK,MAAMxe,KAAS/d,KAAKid,OACrB,IAAK,MAAMlB,KAASgC,EAAMrC,OACtB1b,KAAK8b,YAAYC,EAAO,CACpBgf,kBAAkB,EAClBnlB,aAAa,IAQzB,IAAK,MAAMmI,KAAS/d,KAAKid,OACrBc,EAAMvc,UACNxB,KAAKgtB,QAAQnpB,OAAOka,EAAMtY,IAC1BzF,KAAKqtB,kBAAkB5pB,KAAKsa,GAGhC,IAAK,MAAMie,IAAiB,IAAIh8B,KAAKw6B,gBACjCwB,EAAcx6B,UASlB,MANAxB,KAAK4C,QAMC25B,CACT,CACDv8B,KAAKu6B,qBAAqB92B,MAC7B,CACD,KAAAb,GACI,MAAMqa,EAAStV,MAAMqC,KAAKhK,KAAKgtB,QAAQC,UAAU3rB,KAAKmN,GAAMA,EAAEzM,QACxDw6B,IAAmBx8B,KAAKwd,YACxBif,IAAmBz8B,KAAKud,YAC9B,IAAK,MAAMQ,KAASd,EAEhBjd,KAAK8d,YAAYC,EAAO,CAAE8P,YAAY,IAEtC2O,GACAx8B,KAAKgmB,sBAAiBvlB,GAEtBg8B,GACAz8B,KAAK+pB,wBAAwBtmB,UAAKhD,GAEtCT,KAAKktB,SAAStqB,OACjB,CACD,cAAAib,GACI,IAAK,MAAM6O,KAAS1sB,KAAKgtB,QAAQ0P,UAAW,CACxC,MAAOjuB,EAAGsP,GAAS2O,EACnB3O,EAAM/b,MAAMwiB,MAAMmH,gBACrB,CACJ,CACD,QAAAzP,CAASrZ,GACL,IAAIhB,EAAI6e,EACR,GAAI1gB,KAAK0b,OAAO2M,MAAM5Z,GAAMA,EAAEhJ,KAAO5C,EAAQ4C,KACzC,MAAM,IAAI3D,MAAM,iBAAiBe,EAAQ4C,qBAE7C,IAAIkvB,EAiCA5Y,EAhCJ,GAAIlZ,EAAQyR,UAAYzR,EAAQ+4B,SAC5B,MAAM,IAAI95B,MAAM,kFAEpB,GAAIe,EAAQyR,SACR,GAAIkgB,GAAwB3xB,EAAQyR,UAAW,CAC3C,MAAMmgB,EAA4D,iBAApC5xB,EAAQyR,SAASmgB,eACzCz0B,KAAKyd,cAAc5a,EAAQyR,SAASmgB,gBACpC5xB,EAAQyR,SAASmgB,eACvB,IAAKA,EACD,MAAM,IAAI3yB,MAAM,kBAAkBe,EAAQyR,SAASmgB,iCAEvDE,EAAiB30B,KAAK28B,UAAUlI,EACnC,KACI,KAAIC,GAAwB7xB,EAAQyR,UASpC,CACD,MAAMyJ,EAAQ/d,KAAK66B,cAAchc,GAAoBhc,EAAQyR,SAASqE,YAChEoD,EAAQ/b,KAAK48B,YAAY/5B,EAASkb,GAExC,OADAA,EAAMyG,MAAM5B,UAAU7G,GACfA,CACV,CATG,GAJA4Y,EAC+C,iBAApC9xB,EAAQyR,SAASqgB,eAC2C,QAA5D9yB,EAAK7B,KAAKgtB,QAAQY,IAAI/qB,EAAQyR,SAASqgB,uBAAoC,IAAP9yB,OAAgB,EAASA,EAAGG,MACjGa,EAAQyR,SAASqgB,gBACtBA,EACD,MAAM,IAAI7yB,MAAM,kBAAkBe,EAAQyR,SAASqgB,gCAQ1D,MAGDA,EAAiB30B,KAAKwd,YAG1B,GAAImX,EAAgB,CAChB,MAAMtW,EAASwO,IAAsC,QAA3BnM,EAAK7d,EAAQyR,gBAA6B,IAAPoM,OAAgB,EAASA,EAAG/H,YAAc,UACvG,GAAI9V,EAAQ+4B,SAAU,CAClB,MAAM7d,EAAQ/d,KAAK86B,cACnB/e,EAAQ/b,KAAK48B,YAAY/5B,EAASkb,GAClCA,EAAMyG,MAAM5B,UAAU7G,GACtB,MAAM8gB,EAAgC,iBAArBh6B,EAAQ+4B,UACA,OAArB/4B,EAAQ+4B,SACN/4B,EAAQ+4B,SACR,GACN57B,KAAKie,iBAAiBF,EAAO8e,EAAG,CAC5B/U,YAAY,EACZkT,iBAAiB,GAExB,MACI,GAAIrG,EAAelY,IAAIsI,YAAyB,WAAX1G,EACtCtC,EAAQ/b,KAAK48B,YAAY/5B,EAAS8xB,GAClCA,EAAenQ,MAAM5B,UAAU7G,OAE9B,CACD,MAAMrD,EAAWJ,EAAgBqc,EAAe5wB,SAC1C+4B,EAAmBtkB,EAAoBxY,KAAKktB,SAASjhB,YAAayM,EAAU2F,GAC5EN,EAAQ/d,KAAKy7B,sBAAsBqB,GACzC/gB,EAAQ/b,KAAK48B,YAAY/5B,EAASkb,GAClCA,EAAMyG,MAAM5B,UAAU7G,EACzB,CACJ,MACI,GAAIlZ,EAAQ+4B,SAAU,CACvB,MAAM7d,EAAQ/d,KAAK86B,cACnB/e,EAAQ/b,KAAK48B,YAAY/5B,EAASkb,GAClCA,EAAMyG,MAAM5B,UAAU7G,GACtB,MAAM8gB,EAAgC,iBAArBh6B,EAAQ+4B,UACA,OAArB/4B,EAAQ+4B,SACN/4B,EAAQ+4B,SACR,GACN57B,KAAKie,iBAAiBF,EAAO8e,EAAG,CAC5B/U,YAAY,EACZkT,iBAAiB,GAExB,KACI,CACD,MAAMjd,EAAQ/d,KAAKy7B,wBACnB1f,EAAQ/b,KAAK48B,YAAY/5B,EAASkb,GAClCA,EAAMyG,MAAM5B,UAAU7G,EACzB,CACD,OAAOA,CACV,CACD,WAAAD,CAAYC,EAAOlZ,EAAU,CACzBk4B,kBAAkB,EAClBnlB,aAAa,IAEb,MAAMmI,EAAQhC,EAAMgC,MACpB,IAAKA,EACD,MAAM,IAAIjc,MAAM,uBAAuBia,EAAMtW,6BAEjDsY,EAAMyG,MAAM1I,YAAYC,GACnBlZ,EAAQ+S,aACTmG,EAAMva,UAES,IAAfuc,EAAM1Z,MAAcxB,EAAQk4B,kBAC5B/6B,KAAK8d,YAAYC,EAExB,CACD,wBAAAuO,GACI,IAAIzqB,EACJ,OAAO2D,EAAgB,eAAgB,iBAAkBxF,KAAK6C,QAAQ63B,mBAChE,CAAE,iBAAkB16B,KAAK6C,QAAQ63B,oBACjC,GAAI16B,KAAK6C,QAAQ83B,4BACjB,CAAE,iBAAkB36B,KAAK6C,QAAQ83B,6BACjC,CAAA,EAAsD,QAAjD94B,EAAK7B,KAAK6C,QAAQi0B,iCAA8C,IAAPj1B,OAAgB,EAASA,EAAGonB,UACnG,CACD,eAAAwR,GACI,IAAI54B,EAAI6e,EACR,GAA4D,IAAxD1gB,KAAKid,OAAOnM,QAAQpD,IAAOA,EAAE+O,IAAIsI,aAAYphB,QAC7C,IAAK3D,KAAKipB,UAAW,CACjBjpB,KAAKipB,UAAYjpB,KAAKssB,2BACtBtsB,KAAKipB,UAAUsB,KAAK,CAChBC,aAAc,IAAIrN,GAAYnd,QAElC,MAAM+8B,EAAqBl+B,SAASI,cAAc,OAClD89B,EAAmB51B,UAAY,yBAC/B41B,EAAmB19B,YAAYW,KAAKipB,UAAUllB,SAC9C/D,KAAKktB,SAASnpB,QAAQ1E,YAAY09B,EACrC,OAEI/8B,KAAKipB,YACVjpB,KAAKipB,UAAUllB,QAAQkU,cAAcjR,SACI,QAAxC0Z,GAAM7e,EAAK7B,KAAKipB,WAAWznB,eAA4B,IAAPkf,GAAyBA,EAAG7Y,KAAKhG,GAClF7B,KAAKipB,UAAY,KAExB,CACD,QAAAvL,CAAS7a,GACL,IAAIhB,EACJ,MAAMkc,EAAQ/d,KAAK86B,cACnB,GAAIj4B,EAAS,CACT,IAAI8xB,EACJ,GAAIC,GAAwB/xB,GAAU,CAClC,MAAM4xB,EAAmD,iBAA3B5xB,EAAQ4xB,eAChCz0B,KAAK0b,OAAO2M,MAAMtM,GAAUA,EAAMtW,KAAO5C,EAAQ4xB,iBACjD5xB,EAAQ4xB,eACd,IAAKA,EACD,MAAM,IAAI3yB,MAAM,mBAAmBe,EAAQ4xB,iCAG/C,GADAE,EAAiB30B,KAAK28B,UAAUlI,IAC3BE,EACD,MAAM,IAAI7yB,MAAM,uCAAuCe,EAAQ4xB,gCAEtE,KACI,KAAII,GAAwBhyB,GAS5B,CAED,OADc7C,KAAK66B,cAAchc,GAAoBhc,EAAQ8V,WAEhE,CAPG,GAJAgc,EACsC,iBAA3B9xB,EAAQ8xB,eAC2C,QAAnD9yB,EAAK7B,KAAKgtB,QAAQY,IAAI/qB,EAAQ8xB,uBAAoC,IAAP9yB,OAAgB,EAASA,EAAGG,MACxFa,EAAQ8xB,gBACbA,EACD,MAAM,IAAI7yB,MAAM,mBAAmBe,EAAQ8xB,gCAMlD,CACD,MAAMtW,EAASwO,GAAShqB,EAAQ8V,WAAa,UACvCD,EAAWJ,EAAgBqc,EAAe5wB,SAC1C+4B,EAAmBtkB,EAAoBxY,KAAKktB,SAASjhB,YAAayM,EAAU2F,GAElF,OADAre,KAAK0tB,WAAW3P,EAAO+e,GAChB/e,CACV,CAGG,OADA/d,KAAK0tB,WAAW3P,GACTA,CAEd,CACD,WAAAD,CAAYC,EAAOlb,GACf,IAAIhB,EACJ,MAAM6Z,EAAS,IAAIqC,EAAMrC,QACzB,IAAK,MAAMK,KAASL,EAChB1b,KAAK8b,YAAYC,EAAO,CACpBgf,kBAAkB,EAClBnlB,YAA8F,QAAhF/T,EAAKgB,aAAyC,EAASA,EAAQ+S,mBAAgC,IAAP/T,GAAgBA,IAG9H7B,KAAK2tB,cAAc5P,EAAOlb,EAC7B,CACD,aAAA8qB,CAAc5P,EAAOlb,GACjB,MAAMm5B,EAAgBh8B,KAAKw6B,eAAenS,MAAM5Z,GAAMA,EAAEsP,QAAUA,IAClE,OAAIie,IACMn5B,aAAyC,EAASA,EAAQ+S,eAC5DomB,EAAcje,MAAMvc,UACpBxB,KAAKgtB,QAAQnpB,OAAOka,EAAMtY,KAG9Bu2B,EAAcx6B,UACPw6B,EAAcje,OAElBhe,MAAM4tB,cAAc5P,EAAOlb,EACrC,CACD,gBAAAwxB,CAAiB2I,EAAkBC,EAAeC,EAAcC,EAAmBC,GAC/E,IAAIv7B,EACJ,MAAMw7B,EAAcJ,EAC6B,QAA1Cp7B,EAAK7B,KAAKgtB,QAAQY,IAAIqP,UAAmC,IAAPp7B,OAAgB,EAASA,EAAGG,WAC/EvB,EACN,QAAqBA,IAAjBy8B,EAMJ,GAAKC,GAA2C,WAAtBA,EAarB,CACD,MAAMG,EAAoBhlB,EAAgB0kB,EAAiBj5B,SACrDw5B,EAAiB/kB,EAAoBxY,KAAKktB,SAASjhB,YAAaqxB,EAAmBH,GACzF,GAAIE,GAAeA,EAAYh5B,KAAO,EAAG,CACrC,MAAOm5B,EAAsBvzB,GAAMlB,EAAKw0B,GAExC,IADmBv9B,KAAKw6B,eAAenS,MAAM3a,GAAMA,EAAEqQ,QAAUsf,IAC9C,CACb,MAAMI,EAAiBnlB,EAAgB+kB,EAAYt5B,UAC5C25B,EAAsB1zB,GAAQjB,EAAK00B,GACtCx0B,EAAey0B,EAAsBF,IAIrCx9B,KAAKktB,SAAS/Z,SAASuqB,EAAsB1zB,EAAMC,EAE1D,CAED,MAAM0zB,EAAc39B,KAAK2tB,cAAc0P,EAAa,CAChDxP,YAAY,EACZjY,aAAa,IAGXgoB,EAA2BtlB,EAAgB0kB,EAAiBj5B,SAC5D2U,EAAWF,EAAoBxY,KAAKktB,SAASjhB,YAAa2xB,EAA0BT,GAC1Fn9B,KAAK0tB,WAAWiQ,EAAajlB,EAChC,KACI,CACD,MAAMmlB,GAAaR,aAAiD,EAASA,EAAY7Y,MAAM1I,YAAYohB,KACvGl9B,KAAK0b,OAAO2M,MAAMtM,GAAUA,EAAMtW,KAAOy3B,IAC7C,IAAKW,EACD,MAAM,IAAI/7B,MAAM,oBAAoBo7B,KAExC,MAAMY,EAAetlB,EAAoBxY,KAAKktB,SAASjhB,YAAaqxB,EAAmBH,GACzEn9B,KAAKy7B,sBAAsBqC,GACnCtZ,MAAM5B,UAAUib,EACzB,CACJ,KAjDyD,CACtD,MAAMA,GAAaR,aAAiD,EAASA,EAAY7Y,MAAM1I,YAAYohB,KACvGl9B,KAAK0b,OAAO2M,MAAMtM,GAAUA,EAAMtW,KAAOy3B,IAC7C,IAAKW,EACD,MAAM,IAAI/7B,MAAM,oBAAoBo7B,KAEmD,KAAtFG,aAAiD,EAASA,EAAY7Y,MAAMngB,OAC7ErE,KAAK2tB,cAAc0P,GAEvBL,EAAiBxY,MAAM5B,UAAUib,EAAW,CACxCx6B,MAAO+5B,GAEd,MAjBOC,GACAr9B,KAAK+9B,UAAUV,EAAaL,EAAkBG,EAsDzD,CACD,SAAAY,CAAUV,EAAa1I,EAAgBtW,GACnC,GAAIgf,EACA,GAAKhf,GAAqB,WAAXA,EAYV,CACD,MAAM2d,EAAgBh8B,KAAKw6B,eAAenS,MAAM3a,GAAMA,EAAEqQ,QAAUsf,IAC9DrB,EACAA,EAAcx6B,UAGdxB,KAAKktB,SAASja,WAAWqF,EAAgB+kB,EAAYt5B,UAEzD,MAAMu5B,EAAoBhlB,EAAgBqc,EAAe5wB,SACnD+5B,EAAetlB,EAAoBxY,KAAKktB,SAASjhB,YAAaqxB,EAAmBjf,GACvFre,KAAKktB,SAASjd,QAAQotB,EAAa9xB,EAAOC,WAAYsyB,EACzD,KAvBmC,CAChC,MAAMvgB,EAAc8f,EAAY9f,YAC1B7B,EAAS,IAAI2hB,EAAY3hB,QAAQpa,KAAKoV,GAAM2mB,EAAY7Y,MAAM1I,YAAYpF,EAAEjR,MACS,KAAtF43B,aAAiD,EAASA,EAAY7Y,MAAMngB,OAC7ErE,KAAK2tB,cAAc0P,GAEvB,IAAK,MAAMthB,KAASL,EAChBiZ,EAAenQ,MAAM5B,UAAU7G,EAAO,CAClCqP,mBAAoBrP,IAAUwB,GAGzC,CAcR,CACD,gBAAAyI,CAAiBjI,EAAO2K,GACpB,IAAI7mB,EAAI6e,EACR,MAAMsd,EAAwBh+B,KAAKmtB,eAAiBpP,EACpDhe,MAAMimB,iBAAiBjI,EAAO2K,IACzBsV,IAAuD,QAA5Bn8B,EAAK7B,KAAKmtB,oBAAiC,IAAPtrB,OAAgB,EAASA,EAAG0b,cAC5Fvd,KAAK+pB,wBAAwBtmB,KAAkC,QAA5Bid,EAAK1gB,KAAKmtB,oBAAiC,IAAPzM,OAAgB,EAASA,EAAGnD,YAE1G,CACD,WAAAud,CAAYj4B,GACHA,IACDA,EAAU,CAAA,GAEd,IAAI4C,EAAK5C,aAAyC,EAASA,EAAQ4C,GAKnE,GAJIA,GAAMzF,KAAKgtB,QAAQ7K,IAAItf,EAAQ4C,MAC/BvD,QAAQC,KAAK,sBAAsBU,aAAyC,EAASA,EAAQ4C,4CAC7FA,OAAKhF,IAEJgF,EAED,IADAA,EAAKzF,KAAKm6B,YAAYtwB,OACf7J,KAAKgtB,QAAQ7K,IAAI1c,IACpBA,EAAKzF,KAAKm6B,YAAYtwB,OAG9B,MAAMY,EAAO,IAAI6pB,GAAmBt0B,KAAMyF,EAAI5C,GAE9C,GADA4H,EAAK8f,KAAK,CAAE+E,OAAQ,CAAE,EAAEvL,SAAU,QAC7B/jB,KAAKgtB,QAAQ7K,IAAI1X,EAAKhF,IAAK,CAC5B,MAAMF,EAAa,IAAIT,EAAoB2F,EAAK+Z,MAAM6C,gBAAgBrkB,IAClEhD,KAAKq6B,iBAAiB52B,KAAKT,EAAM,IACjCyH,EAAK+Z,MAAM+C,kBAAkBvkB,IAC7BhD,KAAKs6B,iBAAiB72B,KAAKT,EAAM,IACjCyH,EAAK+Z,MAAMmF,QAAQ3mB,IACnB,MAAMnD,QAAEA,EAAO2sB,OAAEA,EAAMnO,OAAEA,EAAMhb,MAAEA,GAAUL,EAC3ChD,KAAKq0B,iBAAiB5pB,EAAM5K,EAAS2sB,EAAQnO,EAAQhb,EAAM,IAC3DoH,EAAK+Z,MAAMnI,WAAWrZ,IACtBhD,KAAK4pB,WAAWnmB,KAAK8Y,OAAOC,OAAOD,OAAOC,OAAO,CAAE,EAAExZ,GAAQ,CAAEyZ,IAAKzc,KAAK03B,KAAM3Z,MAAOtT,IAAQ,IAC9FA,EAAK+Z,MAAM7H,eAAe3Z,IAC1BhD,KAAK6pB,eAAepmB,KAAKT,EAAM+Y,MAAM,IACrCtR,EAAK+Z,MAAM3H,kBAAkB7Z,IAC7BhD,KAAK8pB,kBAAkBrmB,KAAKT,EAAM+Y,MAAM,IACxCtR,EAAK+Z,MAAMzH,wBAAwB/Z,IACnChD,KAAK+pB,wBAAwBtmB,KAAKT,EAAM+Y,MAAM,KAElD/b,KAAKgtB,QAAQ1oB,IAAImG,EAAKhF,GAAI,CAAEzD,MAAOyI,EAAMlF,cAC5C,CAID,OADAkF,EAAKyf,aACEzf,CACV,CACD,WAAAmyB,CAAY/5B,EAASkb,GACjB,MAAMyX,EAAmB3yB,EAAQ4Y,UAC3Bga,EAAe5yB,EAAQ4yB,cAAgBz1B,KAAK6C,QAAQo0B,oBACpDxsB,EAAO,IAAIisB,GAAmB12B,KAAM6C,EAAQ4C,GAAI+vB,EAAkBC,GAClE1Z,EAAQ,IAAIuZ,GAAczyB,EAAQ4C,GAAIzF,KAAMA,KAAK03B,KAAM3Z,EAAOtT,GAKpE,OAJAsR,EAAMwO,KAAK,CACP+H,MAAOzvB,EAAQyvB,OAASzvB,EAAQ4C,GAChC6pB,QAASzsB,aAAyC,EAASA,EAAQysB,SAAW,CAAE,IAE7EvT,CACV,CACD,qBAAA0f,CAAsB/iB,EAAW,CAAC,IAC9B,MAAMqF,EAAQ/d,KAAK86B,cAEnB,OADA96B,KAAK0tB,WAAW3P,EAAOrF,GAChBqF,CACV,CACD,SAAA4e,CAAU5gB,GACN,IAAIla,EACJ,OAA4G,QAApGA,EAAK8F,MAAMqC,KAAKhK,KAAKgtB,QAAQC,UAAU5E,MAAMtK,GAAUA,EAAM/b,MAAMwiB,MAAMwG,cAAcjP,YAA4B,IAAPla,OAAgB,EAASA,EAAGG,KACnJ,EC94BE,MAAMi8B,WAA0BnR,GACnC,eAAI7gB,GACA,OAAOjM,KAAKktB,SAASjhB,WACxB,CACD,eAAIA,CAAYjK,GACZhC,KAAKktB,SAASjhB,YAAcjK,CAC/B,CACD,WAAIa,GACA,OAAO7C,KAAKk6B,QACf,CACD,gBAAIvgB,GACA,OAAO3Z,KAAKo6B,aACf,CACD,gBAAIzgB,CAAa3X,GACbhC,KAAKo6B,cAAgBp4B,CACxB,CACD,WAAAtC,CAAYmD,GACR9C,MAAM,CACFkY,cAAepV,EAAQoV,cACvB1I,mBAAoB1M,EAAQ0M,mBAC5BtD,YAAapJ,EAAQoJ,YACrB2D,OAAQ/M,EAAQ+M,SAEpB5P,KAAKk+B,qBAAuB,IAAI37B,EAChCvC,KAAK2b,oBAAsB3b,KAAKk+B,qBAAqBl7B,MACrDhD,KAAKk6B,SAAWr3B,EACX7C,KAAK6C,QAAQ8C,aACd3F,KAAK6C,QAAQ8C,WAAa,IAEzB3F,KAAK6C,QAAQ+C,sBACd5F,KAAK6C,QAAQ+C,oBAAsB,GAE1C,CACD,aAAAiW,CAAchZ,GACV,MAAM64B,EAAuD,iBAAxB74B,EAAQoJ,aACzCjM,KAAKktB,SAASjhB,cAAgBpJ,EAAQoJ,YAC1CjM,KAAKk6B,SAAW3d,OAAOC,OAAOD,OAAOC,OAAO,CAAA,EAAIxc,KAAK6C,SAAUA,GAC3D64B,IACA17B,KAAKktB,SAASjhB,YAAcpJ,EAAQoJ,aAExCjM,KAAKoT,OAAOpT,KAAKktB,SAASrZ,MAAO7T,KAAKktB,SAASpZ,QAAQ,EAC1D,CACD,WAAAgI,CAAYC,GACR/b,KAAK8d,YAAY/B,EACpB,CAMD,MAAA5C,GACI,IAAItX,EAEJ,MAAO,CACHo6B,KAFSj8B,KAAKktB,SAAS3T,YAGvBgE,YAAyC,QAA3B1b,EAAK7B,KAAKwd,mBAAgC,IAAP3b,OAAgB,EAASA,EAAG4D,GAEpF,CACD,UAAAyF,CAAW6Q,EAAOxR,GACdvK,KAAKktB,SAAS3c,eAAe+H,EAAgByD,EAAMhY,SAAUwG,EAChE,CACD,SAAAka,CAAU1I,GACN/b,KAAKgtB,QAAQvrB,SAAQ,CAACO,EAAOm8B,KACzBn8B,EAAMA,MAAMyiB,UAAU1I,IAAU/Z,EAAMA,MAAM,GAEnD,CACD,KAAAga,GACI,IAAIna,EACwB,QAA3BA,EAAK7B,KAAKwd,mBAAgC,IAAP3b,GAAyBA,EAAGma,OACnE,CACD,QAAAjC,CAASqkB,GACLp+B,KAAK4C,QACL,MAAMq5B,KAAEA,EAAI1e,YAAEA,GAAgB6gB,EAC9B,IACI,MAAMC,EAAQ,GAERxqB,EAAQ7T,KAAK6T,MACbC,EAAS9T,KAAK8T,OA4BpB,GA3BA9T,KAAKktB,SAASzT,YAAYwiB,EAAM,CAC5BliB,SAAWjD,IACP,MAAMpW,KAAEA,GAASoW,EACXrM,EAAOjF,EAAgB9E,EAAK+E,GAAI/E,EAAK+a,UAAWzb,KAAK6C,QAAQ8C,YAAc,CAAA,EAAI3F,KAAK6C,QAAQ+C,qBAAuB,GAAI5F,KAAK6C,QAAQi0B,0BACpI,CACEtxB,gBAAiBxF,KAAK6C,QAAQi0B,0BACzBtxB,sBAEP/E,GAcN,OAbA49B,EAAMj7B,MAAK,IAAMqH,EAAK8f,KAAK,CACvB+E,OAAQ5uB,EAAK4uB,OACbvZ,aAAcrV,EAAKqV,aACnBC,aAActV,EAAKsV,aACnBC,cAAevV,EAAKuV,cACpBC,cAAexV,EAAKwV,cACpBrL,SAAUnK,EAAKmK,SACfC,OAAQpK,EAAKoK,KACbiZ,SAAU/jB,KACVytB,UAAW3W,EAAKvM,YAEpBvK,KAAKstB,eAAe7pB,KAAKgH,GACzBzK,KAAKs+B,cAAc7zB,GACZA,CAAI,IAGnBzK,KAAKoT,OAAOS,EAAOC,GAAQ,GAC3BuqB,EAAM58B,SAAS88B,GAAMA,MACM,iBAAhBhhB,EAA0B,CACjC,MAAMxB,EAAQ/b,KAAKic,SAASsB,GACxBxB,GACA/b,KAAKgmB,iBAAiBjK,EAE7B,CACJ,CACD,MAAOwgB,GAKH,IAAK,MAAMxe,KAAS/d,KAAKid,OACrBc,EAAMvc,UACNxB,KAAKgtB,QAAQnpB,OAAOka,EAAMtY,IAC1BzF,KAAKqtB,kBAAkB5pB,KAAKsa,GAShC,MANA/d,KAAK4C,QAMC25B,CACT,CACDv8B,KAAKk+B,qBAAqBz6B,MAC7B,CACD,KAAAb,GACI,MAAM45B,EAAiBx8B,KAAKwd,YACtBP,EAAStV,MAAMqC,KAAKhK,KAAKgtB,QAAQC,UACvC,IAAK,MAAMlP,KAASd,EAChBc,EAAMxY,WAAW/D,UACjBxB,KAAK2tB,cAAc5P,EAAM/b,MAAO,CAAE6rB,YAAY,IAE9C2O,GACAx8B,KAAKgmB,sBAAiBvlB,GAE1BT,KAAKktB,SAAStqB,OACjB,CACD,SAAAuZ,CAAUJ,EAAOlZ,GACb,IAAIhB,EACJ,IAAIi7B,EACJ,MAAM0B,EAAex+B,KAAKktB,SAASlmB,OAAO+U,GACpC4Y,EAAgE,QAA9C9yB,EAAK7B,KAAKgtB,QAAQY,IAAI/qB,EAAQ47B,kBAA+B,IAAP58B,OAAgB,EAASA,EAAGG,MAC1G,IAAK2yB,EACD,MAAM,IAAI7yB,MAAM,mBAAmBe,EAAQ47B,4BAE/C,MAAMpgB,EAASwO,GAAShqB,EAAQ8V,WAChC,GAAe,WAAX0F,EACA,MAAM,IAAIvc,MAAM,GAAGuc,gCAElB,CACD,MAAM3F,EAAWJ,EAAgBqc,EAAe5wB,SAChD+4B,EAAmBtkB,EAAoBxY,KAAKktB,SAASjhB,YAAayM,EAAU2F,EAC/E,CACDre,KAAK0tB,WAAW8Q,EAAc1B,EAAkBj6B,EAAQwB,KAC3D,CACD,QAAA6X,CAASrZ,GACL,IAAIhB,EAAI6e,EACR,IAAIoc,EAAmBj6B,EAAQ6V,UAAY,CAAC,GAC5C,GAAgC,QAA3B7W,EAAKgB,EAAQyR,gBAA6B,IAAPzS,OAAgB,EAASA,EAAG4yB,eAAgB,CAChF,MAAME,EAA8E,QAA5DjU,EAAK1gB,KAAKgtB,QAAQY,IAAI/qB,EAAQyR,SAASmgB,uBAAoC,IAAP/T,OAAgB,EAASA,EAAG1e,MACxH,IAAK2yB,EACD,MAAM,IAAI7yB,MAAM,mBAAmBe,EAAQyR,SAASmgB,iCAExD,MAAMpW,EAASwO,GAAShqB,EAAQyR,SAASqE,WACzC,GAAe,WAAX0F,EACA,MAAM,IAAIvc,MAAM,GAAGuc,gCAElB,CACD,MAAM3F,EAAWJ,EAAgBqc,EAAe5wB,SAChD+4B,EAAmBtkB,EAAoBxY,KAAKktB,SAASjhB,YAAayM,EAAU2F,EAC/E,CACJ,CACD,MAAM5T,EAAOjF,EAAgB3C,EAAQ4C,GAAI5C,EAAQ4Y,UAAWzb,KAAK6C,QAAQ8C,YAAc,CAAA,EAAI3F,KAAK6C,QAAQ+C,qBAAuB,GAAI5F,KAAK6C,QAAQi0B,0BAC1I,CACEtxB,gBAAiBxF,KAAK6C,QAAQi0B,0BACzBtxB,sBAEP/E,GAcN,OAbAgK,EAAK8f,KAAK,CACN+E,OAAQzsB,EAAQysB,QAAU,CAAE,EAC5BvZ,aAAclT,EAAQkT,aACtBC,aAAcnT,EAAQmT,aACtBC,cAAepT,EAAQoT,cACvBC,cAAerT,EAAQqT,cACvBrL,SAAUhI,EAAQgI,SAClBC,OAAQjI,EAAQiI,KAChBiZ,SAAU/jB,KACVytB,WAAW,IAEfztB,KAAKs+B,cAAc7zB,GACnBzK,KAAK0tB,WAAWjjB,EAAMqyB,EAAkBj6B,EAAQwB,MACzCoG,CACV,CACD,aAAA6zB,CAAcviB,GACV,MAAMxW,EAAa,IAAIT,EAAoBiX,EAAMU,IAAI+R,kBAAkBxrB,IAC9DA,EAAMgrB,WAGXhuB,KAAKgtB,QAAQvrB,SAASo8B,IAClB,MAAM9f,EAAQ8f,EAAU77B,MACpB+b,IAAUhC,EACVgC,EAAM0G,WAAU,GAGhB1G,EAAM0G,WAAU,EACnB,GACH,KAENzkB,KAAKgtB,QAAQ1oB,IAAIyX,EAAMtW,GAAI,CACvBzD,MAAO+Z,EACPxW,cAEP,CACD,SAAAw4B,CAAUpJ,EAAgB90B,EAASwe,GAC/B,MAAMgf,EAAcr9B,KAAKic,SAASpc,GAClC,IAAKw9B,EACD,MAAM,IAAIv7B,MAAM,qBAEpB,MAAMw7B,EAAoBhlB,EAAgBqc,EAAe5wB,SACnDw5B,EAAiB/kB,EAAoBxY,KAAKktB,SAASjhB,YAAaqxB,EAAmBjf,IAClFmf,EAAsBvzB,GAAMlB,EAAKw0B,GAClCE,EAAiBnlB,EAAgB+kB,EAAYt5B,UAC5C25B,EAAsB1zB,GAAQjB,EAAK00B,GAC1C,GAAIx0B,EAAey0B,EAAsBF,GAKrC,YADAx9B,KAAKktB,SAAS/Z,SAASuqB,EAAsB1zB,EAAMC,GAIvD,MAAM0zB,EAAc39B,KAAK2tB,cAAc0P,EAAa,CAChDxP,YAAY,EACZjY,aAAa,IAGXgoB,EAA2BtlB,EAAgBqc,EAAe5wB,SAC1D2U,EAAWF,EAAoBxY,KAAKktB,SAASjhB,YAAa2xB,EAA0Bvf,GAC1Fre,KAAK0tB,WAAWiQ,EAAajlB,EAChC,CACD,WAAAoF,CAAYC,GACRhe,MAAM+d,YAAYC,EACrB,CACD,OAAAvc,GACIzB,MAAMyB,UACNxB,KAAKk+B,qBAAqB18B,SAC7B,EC5PE,MAAMk9B,WAA2BjS,GACpC,UAAI/Q,GACA,OAAO1b,KAAKiV,UAAU9D,UACzB,CACD,WAAItO,GACA,OAAO7C,KAAKk6B,QACf,CACD,UAAIv2B,GACA,OAAO3D,KAAK8oB,QAAQzkB,IACvB,CACD,eAAI4H,GACA,OAAOjM,KAAKiV,UAAUhJ,WACzB,CACD,aAAIgJ,GACA,OAAOjV,KAAK2+B,UACf,CACD,aAAI1pB,CAAUjT,GACVhC,KAAK2+B,WAAa38B,EAClBhC,KAAK4+B,2BAA2B58B,MAAQ,IAAI8C,EAAoB9E,KAAK2+B,WAAWzxB,cAAa,KACzFlN,KAAKotB,mBAAmB3pB,UAAKhD,EAAU,IACvCT,KAAK2+B,WAAWvxB,cAAc1J,GAAM1D,KAAKmN,cAAc1J,KAAKC,KAAK1D,KAAK2+B,WAAWrxB,iBAAiB5J,GAAM1D,KAAKqN,iBAAiB5J,KAAKC,KAC1I,CACD,eAAI8G,GACA,OAAOxK,KAAKiV,UAAUzK,WACzB,CACD,eAAIG,GACA,OAAO3K,KAAKiV,UAAUtK,WACzB,CACD,UAAImJ,GACA,OAAO9T,KAAKiV,UAAUhJ,cAAgBb,EAAYgB,WAC5CpM,KAAKiV,UAAUrJ,eACf5L,KAAKiV,UAAU5Q,IACxB,CACD,SAAIwP,GACA,OAAO7T,KAAKiV,UAAUhJ,cAAgBb,EAAYgB,WAC5CpM,KAAKiV,UAAU5Q,KACfrE,KAAKiV,UAAUrJ,cACxB,CACD,WAAAlM,CAAYmD,GACR9C,MAAM8C,EAAQoV,eACdjY,KAAK4+B,2BAA6B,IAAIv5B,EACtCrF,KAAK8oB,QAAU,IAAI1kB,IACnBpE,KAAKk+B,qBAAuB,IAAI37B,EAChCvC,KAAK2b,oBAAsB3b,KAAKk+B,qBAAqBl7B,MACrDhD,KAAKmN,cAAgB,IAAI5K,EACzBvC,KAAKoN,aAAepN,KAAKmN,cAAcnK,MACvChD,KAAKqN,iBAAmB,IAAI9K,EAC5BvC,KAAKsN,gBAAkBtN,KAAKqN,iBAAiBrK,MAC7ChD,KAAKotB,mBAAqB,IAAI7qB,EAC9BvC,KAAK4b,kBAAoB5b,KAAKotB,mBAAmBpqB,MACjDhD,KAAKk6B,SAAWr3B,EACXA,EAAQ8C,aACT9C,EAAQ8C,WAAa,IAEpB9C,EAAQ+C,sBACT/C,EAAQ+C,oBAAsB,IAElC5F,KAAKiV,UAAY,IAAItJ,EAAU3L,KAAK+D,QAASlB,GAC7C7C,KAAKmF,eAAenF,KAAKmN,cAAenN,KAAKk+B,qBAAsBl+B,KAAKqN,iBAAkBrN,KAAKotB,mBAClG,CACD,aAAAvR,CAAchZ,GACV,MAAM64B,EAAuD,iBAAxB74B,EAAQoJ,aACzCjM,KAAK6C,QAAQoJ,cAAgBpJ,EAAQoJ,YACzCjM,KAAKk6B,SAAW3d,OAAOC,OAAOD,OAAOC,OAAO,CAAA,EAAIxc,KAAK6C,SAAUA,GAC3D64B,IACA17B,KAAKiV,UAAUhJ,YAAcpJ,EAAQoJ,aAEzCjM,KAAKiV,UAAU7B,OAAOpT,KAAKiV,UAAU5Q,KAAMrE,KAAKiV,UAAUrJ,eAC7D,CACD,KAAAoQ,GACI,IAAIna,EACyB,QAA5BA,EAAK7B,KAAK4oB,oBAAiC,IAAP/mB,GAAyBA,EAAGma,OACpE,CACD,SAAAG,CAAUnS,EAAMC,GACZjK,KAAKiV,UAAU9B,SAASnJ,EAAMC,EACjC,CACD,UAAAiB,CAAW6Q,EAAOxR,GACd,MAAMlH,EAAQrD,KAAK0b,OAAOpY,QAAQyY,GAClC/b,KAAKiV,UAAU1E,eAAelN,EAAOkH,EACxC,CACD,SAAAka,CAAUha,EAAMie,GACZ1oB,KAAK4oB,aAAene,EACpBzK,KAAK0b,OACA5K,QAAQ+tB,GAAMA,IAAMp0B,IACpBhJ,SAASo9B,IACVA,EAAEpiB,IAAIsS,mBAAmBtrB,KAAK,CAAEihB,UAAU,IACrCgE,GACDmW,EAAE7iB,OACL,IAELvR,EAAKgS,IAAIsS,mBAAmBtrB,KAAK,CAAEihB,UAAU,IACxCgE,GACDje,EAAKuR,OAEZ,CACD,WAAAF,CAAYC,EAAO/L,GACf,MAAMzD,EAAOvM,KAAK8oB,QAAQ8E,IAAI7R,EAAMtW,IACpC,IAAK8G,EACD,MAAM,IAAIzK,MAAM,2BAA2Bia,EAAMtW,MAErD8G,EAAK/K,UACLxB,KAAK8oB,QAAQjlB,OAAOkY,EAAMtW,IAC1B,MAAMpC,EAAQrD,KAAK0b,OAAOyL,WAAW1Y,GAAMA,IAAMsN,IAC7B/b,KAAKiV,UAAUhC,WAAW5P,EAAO2M,GACzCxO,UACZ,MAAMka,EAAS1b,KAAK0b,OAChBA,EAAO/X,OAAS,GAChB3D,KAAKykB,UAAU/I,EAAOA,EAAO/X,OAAS,GAE7C,CACD,QAAAsY,CAASxW,GACL,OAAOzF,KAAK0b,OAAO2M,MAAM5d,GAASA,EAAKhF,KAAOA,GACjD,CACD,QAAAyW,CAASrZ,GACL,GAAI7C,KAAK8oB,QAAQ3G,IAAItf,EAAQ4C,IACzB,MAAM,IAAI3D,MAAM,SAASe,EAAQ4C,qBAErC,MAAMgF,EAAOjF,EAAgB3C,EAAQ4C,GAAI5C,EAAQ4Y,UAAWzb,KAAK6C,QAAQ8C,YAAc,CAAA,EAAI3F,KAAK6C,QAAQ+C,qBAAuB,GAAI5F,KAAK6C,QAAQi8B,iBAC1I,CACEt5B,gBAAiBxF,KAAK6C,QAAQi8B,iBAAiBt5B,sBAEjD/E,GACNgK,EAAKwB,YAAcjM,KAAKiV,UAAUhJ,YAClCxB,EAAK8f,KAAK,CACN+E,OAAQzsB,EAAQysB,QAAU,CAAE,EAC5B9kB,YAAa3H,EAAQ2H,YACrBG,YAAa9H,EAAQ8H,YACrBG,KAAMjI,EAAQiI,KACdD,SAAUhI,EAAQgI,SAClBkZ,SAAU/jB,OAEd,MAAMqE,EAA+B,iBAAjBxB,EAAQwB,KAAoBxB,EAAQwB,KAAOkH,EAAOC,WAChEnI,EAAiC,iBAAlBR,EAAQQ,MAAqBR,EAAQQ,WAAQ5C,EAIlE,OAHAT,KAAKiV,UAAUhF,QAAQxF,EAAMpG,EAAMhB,GACnCrD,KAAK++B,UAAUt0B,GACfzK,KAAKykB,UAAUha,GACRA,CACV,CACD,MAAA2I,CAAOS,EAAOC,GACV,MAAOzP,EAAMuH,GAAkB5L,KAAKiV,UAAUhJ,cAAgBb,EAAYgB,WACpE,CAACyH,EAAOC,GACR,CAACA,EAAQD,GACf7T,KAAKiV,UAAU7B,OAAO/O,EAAMuH,EAC/B,CACD,SAAAmzB,CAAUt0B,GACN,MAAMlF,EAAakF,EAAKgS,IAAI+R,kBAAkBxrB,IACrCA,EAAMgrB,WAGXhuB,KAAKykB,UAAUha,GAAM,EAAK,IAE9BzK,KAAK8oB,QAAQxkB,IAAImG,EAAKhF,GAAIF,EAC7B,CACD,MAAA4T,GACI,IAAItX,EAYJ,MAAO,CACHiO,MAZU9P,KAAKiV,UACd9D,WACA7P,KAAI,CAACmJ,EAAMrB,KAEL,CACH/E,KAFSrE,KAAKiV,UAAUtE,YAAYvH,GAGpC1I,KAAM+J,EAAK0O,SACXrO,OAAQL,EAAKK,KACbD,SAAUJ,EAAKI,aAKnBggB,WAAyC,QAA5BhpB,EAAK7B,KAAK4oB,oBAAiC,IAAP/mB,OAAgB,EAASA,EAAG4D,GAC7EpB,KAAMrE,KAAKiV,UAAU5Q,KACrB4H,YAAajM,KAAKiV,UAAUhJ,YAEnC,CACD,QAAA8N,CAASilB,GACLh/B,KAAK4C,QACL,MAAMkN,MAAEA,EAAK7D,YAAEA,EAAW5H,KAAEA,EAAIwmB,WAAEA,GAAemU,EAC3CX,EAAQ,GAERxqB,EAAQ7T,KAAK6T,MACbC,EAAS9T,KAAK8T,OAuCpB,GAtCA9T,KAAKiV,UAAY,IAAItJ,EAAU3L,KAAK+D,QAAS,CACzCkI,cACAsD,mBAAoBvP,KAAK6C,QAAQ0M,mBACjCM,WAAY,CACRxL,OACAyL,MAAOA,EAAMxO,KAAKmJ,IACd,MAAM/J,EAAO+J,EAAK/J,KAClB,GAAIV,KAAK8oB,QAAQ3G,IAAIzhB,EAAK+E,IACtB,MAAM,IAAI3D,MAAM,SAASpB,EAAK+E,qBAElC,MAAMsW,EAAQvW,EAAgB9E,EAAK+E,GAAI/E,EAAK+a,UAAWzb,KAAK6C,QAAQ8C,YAAc,CAAA,EAAI3F,KAAK6C,QAAQ+C,qBAAuB,GAAI5F,KAAK6C,QAAQi8B,iBACrI,CACEt5B,gBAAiBxF,KAAK6C,QAAQi8B,iBACzBt5B,sBAEP/E,GAiBN,OAhBA49B,EAAMj7B,MAAK,KACP2Y,EAAMwO,KAAK,CACP+E,OAAQ5uB,EAAK4uB,QAAU,CAAE,EACzB9kB,YAAa9J,EAAK8J,YAClBG,YAAajK,EAAKiK,YAClBG,KAAML,EAAKK,KACXD,SAAUJ,EAAKI,SACfkZ,SAAU/jB,MACZ,IAEN+b,EAAM9P,YAAcA,EACpBjM,KAAK++B,UAAUhjB,GACfnX,YAAW,KAEP5E,KAAKmN,cAAc1J,KAAKsY,EAAM,GAC/B,GACI,CAAE1X,KAAMoG,EAAKpG,KAAMoG,KAAMsR,EAAO,OAInD/b,KAAKoT,OAAOS,EAAOC,GACnBuqB,EAAM58B,SAAS88B,GAAMA,MACK,iBAAf1T,EAAyB,CAChC,MAAM9O,EAAQ/b,KAAKic,SAAS4O,GACxB9O,GACA/b,KAAKykB,UAAU1I,EAEtB,CACD/b,KAAKk+B,qBAAqBz6B,MAC7B,CACD,KAAAb,GACI,IAAK,MAAM2C,KAAcvF,KAAK8oB,QAAQmE,SAClC1nB,EAAW/D,UAGf,IADAxB,KAAK8oB,QAAQlmB,QACN5C,KAAKiV,UAAUtR,OAAS,GAAG,CACjB3D,KAAKiV,UAAUhC,WAAW,EAAG1H,EAAOC,YAAY,GACxDhK,SACR,CACJ,CACD,OAAAA,GACI,IAAK,MAAM+D,KAAcvF,KAAK8oB,QAAQmE,SAClC1nB,EAAW/D,UAEfxB,KAAK8oB,QAAQlmB,QACb,MAAMkN,EAAQ9P,KAAKiV,UAAU9D,WAC7BnR,KAAK4+B,2BAA2Bp9B,UAChCxB,KAAKiV,UAAUzT,UACf,IAAK,MAAMiJ,KAAQqF,EACfrF,EAAKjJ,UAETzB,MAAMyB,SACT,EC5PE,MAAMy9B,WAAsBn6B,EAC/B,WAAIf,GACA,OAAO/D,KAAKuiB,QACf,CACD,WAAA7iB,GACIK,QACAC,KAAKk/B,cVS+BvJ,GAAyB,CACjE9hB,MAAO,KACPC,OAAQ,KACRiiB,QAAS,YACTxb,KAAM,oEUZFva,KAAKm/B,eVciCxJ,GAAyB,CACnE9hB,MAAO,KACPC,OAAQ,KACRiiB,QAAS,YACTxb,KAAM,qEUjBFva,KAAKuF,WAAa,IAAIF,EACtBrF,KAAKo/B,OAAS,CAAE3iB,IAAK,MACrBzc,KAAKuiB,SAAW1jB,SAASI,cAAc,OACvCe,KAAK+D,QAAQoD,UAAY,iBACzBnH,KAAKk2B,SAAWr3B,SAASI,cAAc,QACvCe,KAAKq/B,UAAYxgC,SAASI,cAAc,OACxCe,KAAKq/B,UAAUl4B,UAAY,4BAC3BnH,KAAK+D,QAAQ1E,YAAYW,KAAKq/B,WAC9Br/B,KAAK+D,QAAQ1E,YAAYW,KAAKk2B,UAC9Bl2B,KAAKmF,eAAejB,EAAsBlE,KAAKuiB,SAAU,SAAS,KAC9D,IAAI1gB,EACuB,QAA1BA,EAAK7B,KAAKo/B,OAAO3iB,WAAwB,IAAP5a,GAAyBA,EAAG4uB,aAAazwB,KAAKo/B,OAAO3iB,IAAIiU,WAAW,IAE9G,CACD,IAAAnG,CAAK+E,GACDtvB,KAAKo/B,OAAO3iB,IAAM6S,EAAO7S,IACzBzc,KAAKk2B,SAASvQ,YAAc2J,EAAOgD,MACnCtyB,KAAKs/B,aACLt/B,KAAKuF,WAAWvD,MAAQstB,EAAO7S,IAAI2T,sBAAqB,KACpDpwB,KAAKs/B,YAAY,GAExB,CACD,UAAAA,GACI,IAAIz9B,EACJ,MAAM6uB,KAA2C,QAA1B7uB,EAAK7B,KAAKo/B,OAAO3iB,WAAwB,IAAP5a,OAAgB,EAASA,EAAG6uB,YACrFxpB,EAAYlH,KAAKq/B,UAAW,aAAc3O,GACtCA,GACI1wB,KAAKq/B,UAAUt4B,SAAS/G,KAAKm/B,iBAC7Bn/B,KAAKm/B,eAAen4B,SAEnBhH,KAAKq/B,UAAUt4B,SAAS/G,KAAKk/B,gBAC9Bl/B,KAAKq/B,UAAUhgC,YAAYW,KAAKk/B,iBAIhCl/B,KAAKq/B,UAAUt4B,SAAS/G,KAAKk/B,gBAC7Bl/B,KAAKk/B,cAAcl4B,SAElBhH,KAAKq/B,UAAUt4B,SAAS/G,KAAKm/B,iBAC9Bn/B,KAAKq/B,UAAUhgC,YAAYW,KAAKm/B,gBAG3C,CACD,MAAAhU,CAAOD,GAEN,CACD,OAAA1pB,GACIxB,KAAKuF,WAAW/D,UAChBzB,MAAMyB,SACT,ECnDL,MAAMorB,GAAehjB,IACd,MAAM21B,WAAsB9M,GAC/B,WAAA/yB,CAAYmD,GACR9C,MAAM8C,EAAQkhB,SAAUlhB,EAAQ4C,GAAI5C,EAAQ4Y,UAAW5Y,EAAQ4uB,gBAAiB5uB,EAAQoJ,YAAapJ,EAAQ6tB,WAAY7tB,EAAQ6vB,YACjI1yB,KAAK6C,QAAUA,CAClB,CACD,gBAAAsvB,GACI,OAAOnyB,KAAK6C,QAAQ+iB,IACvB,CACD,kBAAAyM,GACI,OAAOryB,KAAK6C,QAAQqmB,MACvB,EAEE,MAAMsW,WAA0B/S,GACnC,MAAIhnB,GACA,OAAOzF,KAAK+sB,GACf,CACD,UAAIrR,GACA,OAAO1b,KAAKy/B,SAASpqB,UACxB,CACD,YAAIoqB,CAASz9B,GACThC,KAAK0/B,UAAY19B,EACjBhC,KAAKsF,YAAYtD,MAAQ,IAAI8C,EAAoB9E,KAAK0/B,UAAUtuB,aAAY,KACxEpR,KAAKotB,mBAAmB3pB,UAAKhD,EAAU,IACvCT,KAAK0/B,UAAUtyB,cAAc1J,GAAM1D,KAAKmN,cAAc1J,KAAKC,KAAK1D,KAAK0/B,UAAUpyB,iBAAiB5J,GAAM1D,KAAKqN,iBAAiB5J,KAAKC,KACxI,CACD,YAAI+7B,GACA,OAAOz/B,KAAK0/B,SACf,CACD,eAAIl1B,GACA,OAAOxK,KAAKy/B,SAASj1B,WACxB,CACD,eAAIG,GACA,OAAO3K,KAAKy/B,SAAS90B,WACxB,CACD,UAAImJ,GACA,OAAO9T,KAAKy/B,SAASxzB,cAAgBb,EAAYgB,WAC3CpM,KAAKy/B,SAAS7zB,eACd5L,KAAKy/B,SAASp7B,IACvB,CACD,SAAIwP,GACA,OAAO7T,KAAKy/B,SAASxzB,cAAgBb,EAAYgB,WAC3CpM,KAAKy/B,SAASp7B,KACdrE,KAAKy/B,SAAS7zB,cACvB,CACD,WAAI/I,GACA,OAAO7C,KAAKk6B,QACf,CACD,WAAAx6B,CAAYmD,GACR9C,MAAM8C,EAAQoV,eACdjY,KAAK+sB,IAAMH,GAAa/iB,OACxB7J,KAAKsF,YAAc,IAAID,EACvBrF,KAAK2/B,iBAAmB,IAAIv7B,IAC5BpE,KAAKk+B,qBAAuB,IAAI37B,EAChCvC,KAAK2b,oBAAsB3b,KAAKk+B,qBAAqBl7B,MACrDhD,KAAKotB,mBAAqB,IAAI7qB,EAC9BvC,KAAK4b,kBAAoB5b,KAAKotB,mBAAmBpqB,MACjDhD,KAAK4pB,WAAa,IAAIrnB,EACtBvC,KAAKqc,UAAYrc,KAAK4pB,WAAW5mB,MACjChD,KAAKmN,cAAgB,IAAI5K,EACzBvC,KAAKoN,aAAepN,KAAKmN,cAAcnK,MACvChD,KAAKqN,iBAAmB,IAAI9K,EAC5BvC,KAAKsN,gBAAkBtN,KAAKqN,iBAAiBrK,MAC7ChD,KAAKmF,eAAenF,KAAKotB,mBAAoBptB,KAAKk+B,qBAAsBl+B,KAAK4pB,WAAY5pB,KAAKmN,cAAenN,KAAKqN,kBAClHrN,KAAKk6B,SAAWr3B,EACXA,EAAQ8C,aACT9C,EAAQ8C,WAAa,IAEpB9C,EAAQ+C,sBACT/C,EAAQ+C,oBAAsB,IAElC5F,KAAKy/B,SAAW,IAAIzqB,EAAShV,KAAK+D,QAAS,CAEvCkI,YAAab,EAAYwI,WAE7B5T,KAAKmF,eAAenF,KAAKsF,YAC5B,CACD,KAAA0W,GAEC,CACD,aAAAH,CAAchZ,GACV7C,KAAKk6B,SAAW3d,OAAOC,OAAOD,OAAOC,OAAO,CAAA,EAAIxc,KAAK6C,SAAUA,EAClE,CACD,QAAAqZ,CAASrZ,GACL,MAAM+iB,EAAOpgB,EAAgB3C,EAAQ4C,GAAI5C,EAAQ4Y,UAAWzb,KAAK6C,QAAQ8C,YAAc,CAAA,EAAI3F,KAAK6C,QAAQ+C,qBAAuB,GAAI5F,KAAK6C,QAAQi8B,iBAC1I,CACEt5B,gBAAiBxF,KAAK6C,QAAQi8B,iBAAiBlZ,KAAKpgB,sBAEtD/E,GACN,IAAIyoB,EAEAA,EADArmB,EAAQ4uB,gBACCjsB,EAAgB3C,EAAQ4C,GAAI5C,EAAQ4uB,gBAAiBzxB,KAAK6C,QAAQ+8B,kBAAoB,CAAA,EAAI5/B,KAAK6C,QAAQg9B,0BAA2B7/B,KAAK6C,QAAQi8B,iBAClJ,CACEt5B,gBAAiBxF,KAAK6C,QAAQi8B,iBAAiB5V,OAC1C1jB,sBAEP/E,GAGG,IAAIw+B,GAEjB,MAAMx0B,EAAO,IAAI80B,GAAc,CAC3B95B,GAAI5C,EAAQ4C,GACZgW,UAAW5Y,EAAQ4Y,UACnBgW,gBAAiB5uB,EAAQ4uB,gBACzBvI,SACAtD,OACA3Z,YAAab,EAAYwI,SACzB8c,aAAc7tB,EAAQ6tB,WACtBgC,aAAc1yB,KAAK6C,QAAQ6vB,WAC3B3O,SAAU/jB,OAEdA,KAAKmqB,WAAW1f,GAChB,MAAMpG,EAA+B,iBAAjBxB,EAAQwB,KAAoBxB,EAAQwB,KAAOkH,EAAOC,WAChEnI,EAAiC,iBAAlBR,EAAQQ,MAAqBR,EAAQQ,WAAQ5C,EAWlE,OAVAgK,EAAK8f,KAAK,CACN+E,OAAQzsB,EAAQysB,QAAU,CAAE,EAC5B+B,gBAAiBxuB,EAAQwuB,gBACzBC,gBAAiBzuB,EAAQyuB,gBACzBZ,WAAY7tB,EAAQ6tB,WACpB4B,MAAOzvB,EAAQyvB,MACf9H,aAAc,IAAIpO,GAAYpc,QAElCA,KAAKy/B,SAAS/pB,QAAQjL,EAAMpG,EAAMhB,GAClCoH,EAAKwB,YAAcjM,KAAKy/B,SAASxzB,YAC1BxB,CACV,CACD,WAAAqR,CAAYC,GACR,MACM1Y,EADQrD,KAAK0b,OACCyL,WAAW1Y,GAAMA,IAAMsN,IAC3C/b,KAAKy/B,SAAS9pB,WAAWtS,GACzBrD,KAAKisB,cAAclQ,EACtB,CACD,SAAAI,CAAUnS,EAAMC,GACZjK,KAAKy/B,SAAStsB,SAASnJ,EAAMC,EAChC,CACD,QAAAgS,CAASxW,GACL,OAAOzF,KAAK0b,OAAO2M,MAAM5d,GAASA,EAAKhF,KAAOA,GACjD,CACD,MAAA2N,CAAOS,EAAOC,GACV,MAAOzP,EAAMuH,GAAkB5L,KAAKy/B,SAASxzB,cAAgBb,EAAYgB,WACnE,CAACyH,EAAOC,GACR,CAACA,EAAQD,GACf7T,KAAKy/B,SAASrsB,OAAO/O,EAAMuH,EAC9B,CACD,MAAAuN,GACI,MAAM4a,EAAW/xB,GAAUA,IAAUwK,OAAOsnB,kBACxC9xB,IAAUwK,OAAOC,uBACfhM,EACAuB,EAcN,MAAO,CACH8N,MAbU9P,KAAKy/B,SACdpqB,WACA/T,KAAI,CAACmJ,EAAMrB,KAEZ,MAAO,CACH/E,KAFSrE,KAAKy/B,SAAS9uB,YAAYvH,GAGnC1I,KAAM+J,EAAK0O,SACX3O,aARSxI,EAQYyI,EAAK4mB,gBARNrvB,GAAS,OAAIvB,EAAYuB,GAS7C2I,YAAaopB,EAAQtpB,EAAK6mB,iBAC1BW,SAAUxnB,EAAKimB,cAVP,IAAC1uB,CAWZ,IAIDqC,KAAMrE,KAAKy/B,SAASp7B,KAE3B,CACD,QAAA0V,CAAS+lB,GACL9/B,KAAK4C,QACL,MAAMkN,MAAEA,EAAKzL,KAAEA,GAASy7B,EAClBzB,EAAQ,GAERxqB,EAAQ7T,KAAK6T,MACbC,EAAS9T,KAAK8T,OACpB9T,KAAKy/B,SAAW,IAAIzqB,EAAShV,KAAK+D,QAAS,CACvCkI,YAAab,EAAYwI,SACzB/D,WAAY,CACRxL,OACAyL,MAAOA,EAAMxO,KAAKmJ,IACd,MAAM/J,EAAO+J,EAAK/J,KACZklB,EAAOpgB,EAAgB9E,EAAK+E,GAAI/E,EAAK+a,UAAWzb,KAAK6C,QAAQ8C,YAAc,CAAA,EAAI3F,KAAK6C,QAAQ+C,qBAAuB,GAAI5F,KAAK6C,QAAQi8B,iBACpI,CACEt5B,gBAAiBxF,KAAK6C,QAAQi8B,iBAAiBlZ,KAC1CpgB,sBAEP/E,GACN,IAAIyoB,EAEAA,EADAxoB,EAAK+wB,gBACIjsB,EAAgB9E,EAAK+E,GAAI/E,EAAK+wB,gBAAiBzxB,KAAK6C,QAAQ+8B,kBAAoB,CAAE,EAAE5/B,KAAK6C,QAAQg9B,2BAA6B,CAAA,EAAI7/B,KAAK6C,QAAQi8B,iBAClJ,CACEt5B,gBAAiBxF,KAAK6C,QAAQi8B,iBAAiB5V,OAC1C1jB,sBAEP/E,GAGG,IAAIw+B,GAEjB,MAAMljB,EAAQ,IAAIwjB,GAAc,CAC5B95B,GAAI/E,EAAK+E,GACTgW,UAAW/a,EAAK+a,UAChBgW,gBAAiB/wB,EAAK+wB,gBACtBvI,SACAtD,OACA3Z,YAAab,EAAYwI,SACzB8c,aAAcjmB,EAAKwnB,SACnBS,aAAc1yB,KAAK6C,QAAQ6vB,WAC3B3O,SAAU/jB,OAkBd,OAhBAA,KAAKmqB,WAAWpO,GAChBsiB,EAAMj7B,MAAK,KACP2Y,EAAMwO,KAAK,CACP+E,OAAQ5uB,EAAK4uB,QAAU,CAAE,EACzB+B,gBAAiB5mB,EAAKD,YACtB8mB,gBAAiB7mB,EAAKE,YACtB2nB,MAAO5xB,EAAK4xB,MACZ5B,aAAcjmB,EAAKwnB,SACnBzH,aAAc,IAAIpO,GAAYpc,QAElC+b,EAAM9P,YAAcjM,KAAKy/B,SAASxzB,WAAW,IAEjDrH,YAAW,KAEP5E,KAAKmN,cAAc1J,KAAKsY,EAAM,GAC/B,GACI,CAAE1X,KAAMoG,EAAKpG,KAAMoG,KAAMsR,EAAO,OAInD/b,KAAKoT,OAAOS,EAAOC,GACnBuqB,EAAM58B,SAAS88B,GAAMA,MACrBv+B,KAAKk+B,qBAAqBz6B,MAC7B,CACD,KAAAb,GACI,IAAK,MAAO6L,EAAGzM,KAAUhC,KAAK2/B,iBAAiBjD,UAC3C16B,EAAMR,UAEVxB,KAAK2/B,iBAAiB/8B,QACtB5C,KAAKy/B,SAASj+B,SACjB,CACD,UAAA2oB,CAAWpO,GACP,MAAMxW,EAAawW,EAAMM,WAAWrZ,IAChChD,KAAK4pB,WAAWnmB,KAAKT,EAAM,IAE/BhD,KAAK2/B,iBAAiBr7B,IAAIyX,EAAMtW,GAAIF,EACvC,CACD,aAAA0mB,CAAclQ,GACV,MAAMxW,EAAavF,KAAK2/B,iBAAiB/R,IAAI7R,EAAMtW,IAC/CF,IACAA,EAAW/D,UACXxB,KAAK2/B,iBAAiB97B,OAAOkY,EAAMtW,IAE1C,CACD,OAAAjE,GACIzB,MAAMyB,UACN,IAAK,MAAOiN,EAAGzM,KAAUhC,KAAK2/B,iBAAiBjD,UAC3C16B,EAAMR,UAEVxB,KAAK2/B,iBAAiB/8B,QACtB5C,KAAKy/B,SAASj+B,SACjB,EC3QE,MAAMu+B,WAAuBpP,GAChC,YAAI9lB,GACA,OAAO7K,KAAKmzB,SACf,CACD,eAAIlnB,CAAYjK,GACZhC,KAAKkM,aAAelK,CACvB,CACD,eAAIiK,GACA,OAAOjM,KAAKkM,YACf,CACD,eAAI1B,GACA,MAAMnG,EAAoC,mBAAtBrE,KAAKggC,aACnBhgC,KAAKggC,eACLhgC,KAAKggC,aAKX,OAJI37B,IAASrE,KAAKigC,wBACdjgC,KAAKigC,sBAAwB57B,EAC7BrE,KAAKuzB,qBAEFlvB,CACV,CACD,eAAIsG,GACA,MAAMtG,EAAoC,mBAAtBrE,KAAKkgC,aACnBlgC,KAAKkgC,eACLlgC,KAAKkgC,aAKX,OAJI77B,IAASrE,KAAKmgC,wBACdngC,KAAKmgC,sBAAwB97B,EAC7BrE,KAAKuzB,qBAEFlvB,CACV,CACD,QAAIyG,GACA,OAAO9K,KAAKozB,KACf,CACD,WAAA1zB,CAAY+F,EAAIC,GACZ3F,MAAM0F,EAAIC,EAAe,IAAI8pB,GAAsB/pB,IACnDzF,KAAKigC,sBAAwB,EAC7BjgC,KAAKmgC,sBAAwB3zB,OAAOC,kBACpCzM,KAAKggC,aAAe,EACpBhgC,KAAKkgC,aAAe1zB,OAAOC,kBAC3BzM,KAAKozB,OAAQ,EACbpzB,KAAKoV,aAAe,IAAI7S,EACxBvC,KAAKoR,YAAcpR,KAAKoV,aAAapS,MACrChD,KAAKyc,IAAIyN,WAAWlqB,MACpBA,KAAKmF,eAAenF,KAAKoV,aAAcpV,KAAKyc,IAAIqS,oBAAoB9rB,IAChE,MAAMyqB,UAAEA,GAAczqB,GAChB+gB,SAAEA,GAAa/jB,KAAKkrB,QAC1BnH,EAAS7Y,WAAWlL,KAAMytB,EAAU,IACpCztB,KAAKyc,IAAIyS,gBAAe,KACxB,MAAMnL,SAAEA,GAAa/jB,KAAKkrB,QAC1BnH,EAASU,UAAUzkB,KAAK,IACxBA,KAAKyc,IAAIiT,gCAAgC1sB,IACR,iBAAtBA,EAAMwH,aACgB,mBAAtBxH,EAAMwH,cACbxK,KAAKggC,aAAeh9B,EAAMwH,aAEG,iBAAtBxH,EAAM2H,aACgB,mBAAtB3H,EAAM2H,cACb3K,KAAKkgC,aAAel9B,EAAM2H,aAE9B3K,KAAKuzB,mBAAmB,IACxBvzB,KAAKyc,IAAIqT,iBAAiB9sB,IAC1BhD,KAAKoV,aAAa3R,KAAK,CAAEY,KAAMrB,EAAMqB,MAAO,IAEnD,CACD,UAAA6G,CAAWuiB,GACPztB,KAAKyc,IAAIkS,uBAAuBlrB,KAAK,CAAEgqB,aAC1C,CACD,SAAAhJ,CAAUC,GACN1kB,KAAKyc,IAAIsS,mBAAmBtrB,KAAK,CAAEihB,YACtC,CACD,MAAAtR,CAAO/O,EAAMuH,GACT,MAAOiI,EAAOC,GAAU9T,KAAKiM,cAAgBb,EAAYgB,WACnD,CAAC/H,EAAMuH,GACP,CAACA,EAAgBvH,GACvBtE,MAAMqT,OAAOS,EAAOC,EACvB,CACD,IAAAyW,CAAK8E,GACDtvB,MAAMwqB,KAAK8E,GACXrvB,KAAKmzB,UAAY9D,EAAWxkB,SACxBwkB,EAAW7kB,cACXxK,KAAKggC,aAAe3Q,EAAW7kB,aAE/B6kB,EAAW1kB,cACX3K,KAAKkgC,aAAe7Q,EAAW1kB,aAE/B0kB,EAAWvkB,OACX9K,KAAKozB,MAAQ/D,EAAWvkB,KAE/B,CACD,MAAAqO,GAMI,OAAOoD,OAAOC,OAAOD,OAAOC,OAAO,CAAA,EAAIzc,MAAMoZ,UAAW,CAAE3O,aADzCxI,EAC8DhC,KAAKwK,YADxDxI,GAAS,OAAIvB,EAAYuB,GAC6C2I,YALlF,CAAC3I,GAAUA,IAAUwK,OAAOsnB,kBACxC9xB,IAAUwK,OAAOC,uBACfhM,EACAuB,EAEyG+xB,CAAQ/zB,KAAK2K,eAD5G,IAAC3I,CAEpB,CACD,iBAAAuxB,GACIvzB,KAAKyc,IAAIkT,wBAAwBlsB,KAAK,CAClCkH,YAAa3K,KAAKmgC,sBAClB31B,YAAaxK,KAAKigC,uBAEzB,ECjFL,MAAMG,GAGF,CAACC,EAAO1hC,KACR,MAAO8P,EAAG6xB,GAAiBC,EAAMC,WAC3BC,EAASF,EAAMG,OAAeL,EAAMM,gBAmB1C,OAjBAJ,EAAMK,oBACFjiC,GACA,KAAO,CACHwsB,OAASwV,IACLF,EAAOI,QAAetkB,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EAAAikB,EAAOI,SAAYF,GAOzCL,EAAcQ,KAAKC,MAAM,KAGjC,IAGGR,EAAMthC,cAAcohC,EAAM5kB,UAAWglB,EAAOI,QAAQ,EAE/DT,GAAqBY,YAAc,wBAOnC,MAAMC,GAA2B,MAC7B,IAAIj/B,EAAQ,EACZ,MAAO,CAAE6H,KAAM,IAAM,8BAA8B7H,KAAS8H,aAC/D,EAHgC,GAKpBo3B,GAAmBX,EAAMY,cAAkB,UAE3CC,GAWT,WAAA1hC,CACqBgb,EACA2mB,EACA5lB,EACA4T,EACAiS,GAJAthC,KAAM0a,OAANA,EACA1a,KAAWqhC,YAAXA,EACArhC,KAASyb,UAATA,EACAzb,KAAUqvB,WAAVA,EACArvB,KAAOshC,QAAPA,EAbbthC,KAAauhC,cAAe,GAM5BvhC,KAAQwhC,UAAG,EASfxhC,KAAKyhC,cACR,CAEM,MAAAtW,CAAOkV,GACV,GAAIrgC,KAAKwhC,SACL,MAAM,IAAI1/B,MAAM,mDAGf9B,KAAK0hC,kBAIN1hC,KAAK0hC,kBAAkBvW,OAAOkV,GAF9BrgC,KAAKuhC,cAAqBhlB,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EAAAxc,KAAKuhC,eAAkBlB,EAIxD,CAEO,YAAAoB,GACJ,GAAIzhC,KAAKwhC,SACL,MAAM,IAAI1/B,MAAM,mDAGpB,GAA8B,mBAAnB9B,KAAKyb,UAMZ,MAAM,IAAI3Z,MACN,0EAIR,MAAM6/B,EAAkBpB,EAAMthC,cAC1BshC,EAAMqB,WAAWxB,IACjB,CACI3kB,UAAWzb,KACNyb,UACLklB,eAAgB3gC,KAAKqvB,WACrB1wB,IAAMoF,IACF/D,KAAK0hC,kBAAoB39B,EAErBwY,OAAOyU,KAAKhxB,KAAKuhC,eAAe59B,OAAS,IACzC3D,KAAK0hC,kBAAkBvW,OAAOnrB,KAAKuhC,eACnCvhC,KAAKuhC,cAAgB,GACxB,IAKPzqB,EAAO9W,KAAKshC,QACZf,EAAMthC,cACFiiC,GAAiBW,SACjB,CAAE7/B,MAAOhC,KAAKshC,SACdK,GAEJA,EAEAG,EAASC,EAASN,aACpB3qB,EACA9W,KAAK0a,OACLumB,GAAyBp3B,QAG7B7J,KAAKrB,IAAM,CACPmjC,SACAv8B,WAAYvF,KAAKqhC,YAAYW,UAAUF,GAE9C,CAEM,OAAAtgC,SACK,QAARK,EAAA7B,KAAKrB,WAAG,IAAAkD,GAAAA,EAAE0D,WAAW/D,UACrBxB,KAAKwhC,UAAW,CACnB,EAaE,MAAMS,GAA2C,KACpD,MAAOC,EAASC,GAAc5B,EAAMC,SAA8B,IAElED,EAAM6B,cAAc,iBAAiBF,EAAQv+B,UAoB7C,MAAO,CAACu+B,EAlBU3B,EAAM8B,aAAaP,IACjCK,GAAYG,GAAoB,IAAIA,EAAiBR,KACrD,IAAIN,GAAW,EACf,MAAO,CACHhgC,QAAS,KACL,GAAIggC,EACA,MAAM,IAAI1/B,MACN,gDAGR0/B,GAAW,EACXW,GAAYG,GACRA,EAAgBxxB,QAAQ4F,GAAMA,IAAMorB,KACvC,EAER,GACF,IAEwB,EAIzB,SAAUS,GACZx+B,GAEA,OAAOA,eAAAA,EAAS7E,IACpB,OC5LasjC,GAUT,WAAIz+B,GACA,OAAO/D,KAAKuiB,QACf,CAED,WAAA7iB,CACoB+F,EACCgW,EACAgnB,GAFDziC,KAAEyF,GAAFA,EACCzF,KAASyb,UAATA,EACAzb,KAAgByiC,iBAAhBA,EAbJziC,KAAAgI,YAAc,IAAI06B,EAC1B1iC,KAAAiI,WAAkCjI,KAAKgI,YAAYhF,MAE3ChD,KAAAkI,WAAa,IAAIw6B,EACzB1iC,KAAAmI,UAAiCnI,KAAKkI,WAAWlF,MAWtDhD,KAAKuiB,SAAW1jB,SAASI,cAAc,OACvCe,KAAKuiB,SAASpb,UAAY,qBAC7B,CAED,KAAA6U,GAEC,CAEM,IAAAuO,CAAK8E,GACRrvB,KAAK4kB,KAAO,IAAIwc,GACZphC,KAAK+D,QACL/D,KAAKyiC,iBACLziC,KAAKyb,UACL,CACI6T,OAAQD,EAAWC,OACnB7S,IAAK4S,EAAW5S,IAChB+N,aAAc6E,EAAW7E,cAGpC,CAEM,MAAAW,CAAOnoB,SACC,QAAXnB,EAAA7B,KAAK4kB,YAAM,IAAA/iB,GAAAA,EAAAspB,OAAOnoB,EAAMssB,OAC3B,CAEM,MAAAlc,CAAO2P,EAAgBC,GAE7B,CAEM,OAAAxhB,SACHxB,KAAKgI,YAAYxG,UACjBxB,KAAKkI,WAAW1G,UACL,QAAXK,EAAA7B,KAAK4kB,YAAM,IAAA/iB,GAAAA,EAAAL,SACd,QCtDQmhC,GAIT,WAAI5+B,GACA,OAAO/D,KAAKuiB,QACf,CAED,WAAA7iB,CACoB+F,EACCgW,EACAgnB,GAFDziC,KAAEyF,GAAFA,EACCzF,KAASyb,UAATA,EACAzb,KAAgByiC,iBAAhBA,EAEjBziC,KAAKuiB,SAAW1jB,SAASI,cAAc,OACvCe,KAAKuiB,SAASpb,UAAY,qBAC7B,CAED,KAAA6U,GAEC,CAEM,IAAAuO,CAAK8E,GACRrvB,KAAK4kB,KAAO,IAAIwc,GACZphC,KAAK+D,QACL/D,KAAKyiC,iBACLziC,KAAKyb,UACL,CACI6T,OAAQD,EAAWC,OACnB7S,IAAK4S,EAAW5S,IAChB+N,aAAc6E,EAAW7E,cAGpC,CAEM,MAAAW,CAAOnoB,SACC,QAAXnB,EAAA7B,KAAK4kB,YAAM,IAAA/iB,GAAAA,EAAAspB,OAAOnoB,EAAMssB,OAC3B,CAEM,MAAAlc,CAAO2P,EAAgBC,GAE7B,CAEM,OAAAxhB,SACQ,QAAXK,EAAA7B,KAAK4kB,YAAM,IAAA/iB,GAAAA,EAAAL,SACd,QCnCQohC,GAKT,WAAI7+B,GACA,OAAO/D,KAAKuiB,QACf,CAED,WAAA7iB,CACoB+F,EACCgW,EACAgnB,GAFDziC,KAAEyF,GAAFA,EACCzF,KAASyb,UAATA,EACAzb,KAAgByiC,iBAAhBA,EAEjBziC,KAAKuiB,SAAW1jB,SAASI,cAAc,OACvCe,KAAKuiB,SAASpb,UAAY,qBAC7B,CAED,IAAAojB,CAAK8E,GACDrvB,KAAK4kB,KAAO,IAAIwc,GACZphC,KAAK+D,QACL/D,KAAKyiC,iBACLziC,KAAKyb,UACL,CACIsC,MAAOsR,EAAWtR,MAClByM,aAAc6E,EAAW7E,aACzB6K,MAAO,KACChG,EAAWtR,OACXsR,EAAW7E,aAAa1M,YAAYuR,EAAWtR,MAClD,GAIhB,CAED,KAAA/B,GAEC,CAED,MAAAmP,CAAOmE,WACCtvB,KAAKqvB,aACLrvB,KAAKqvB,WAAWC,OAASA,EAAOA,QAG3B,QAATztB,EAAA7B,KAAK4kB,YAAI,IAAA/iB,GAAAA,EAAEspB,OAAO,CAAEmE,QAAyB,UAAjBtvB,KAAKqvB,kBAAY,IAAA3O,OAAA,EAAAA,EAAA4O,SAAU,CAAA,GAC1D,CAED,MAAAlc,CAAO2P,EAAgBC,GAEtB,CAED,iBAAAsI,CACI4I,EACAuC,GAGH,CAED,OAAAj1B,SACe,QAAXK,EAAA7B,KAAK4kB,YAAM,IAAA/iB,GAAAA,EAAAL,SACd,QCzDQqhC,GAKT,WAAI9+B,GACA,OAAO/D,KAAKuiB,QACf,CAED,QAAIqC,GACA,OAAO5kB,KAAK8iC,KACf,CAED,SAAI/kB,GACA,OAAO/d,KAAKk0B,MACf,CAED,WAAAx0B,CACqB+b,EACAgnB,EACAvO,GAFAl0B,KAASyb,UAATA,EACAzb,KAAgByiC,iBAAhBA,EACAziC,KAAMk0B,OAANA,EAnBbl0B,KAAA+iC,kBAAoB,IAAIC,EAqB5BhjC,KAAKuiB,SAAW1jB,SAASI,cAAc,OACvCe,KAAKuiB,SAASpb,UAAY,qBAC7B,CAED,KAAA6U,GAEC,CAEM,IAAAuO,CAAK8E,GAIRrvB,KAAK+iC,kBAAkB/gC,MAAQ,IAAIihC,EAC/BjjC,KAAKk0B,OAAO1P,MAAM7H,eAAc,KAC5B3c,KAAKkjC,cAAc,IAEvBljC,KAAKk0B,OAAO1P,MAAM3H,kBAAiB,KAC/B7c,KAAKkjC,cAAc,IAEvBljC,KAAKk0B,OAAO1P,MAAMzH,wBAAuB,KACrC/c,KAAKmjC,mBAAmB,IAE5B9T,EAAW5S,IAAIuS,mBAAkB,KAC7BhvB,KAAKojC,mBAAmB,KAIhCpjC,KAAK8iC,MAAQ,IAAI1B,GACbphC,KAAK+D,QACL/D,KAAKyiC,iBACLziC,KAAKyb,UACL,CACIgB,IAAK4S,EAAW5S,IAChB+N,aAAc6E,EAAW7E,aACzB9O,OAAQ1b,KAAKk0B,OAAO1P,MAAM9I,OAC1B6B,YAAavd,KAAKk0B,OAAO1P,MAAMjH,YAC/ByO,cAAehsB,KAAKk0B,OAAOzX,IAAIiI,SAC/B3G,MAAO/d,KAAKk0B,QAGvB,CAEM,MAAA/I,CAAOnoB,SACE,QAAZnB,EAAA7B,KAAK8iC,aAAO,IAAAjhC,GAAAA,EAAAspB,OAAOnoB,EAAMssB,OAC5B,CAEM,OAAA9tB,SACHxB,KAAK+iC,kBAAkBvhC,UACX,QAAZK,EAAA7B,KAAK8iC,aAAO,IAAAjhC,GAAAA,EAAAL,SACf,CAEO,YAAA0hC,GACJljC,KAAKmrB,OAAO,CAAEmE,OAAQ,CAAE5T,OAAQ1b,KAAKk0B,OAAO1P,MAAM9I,SACrD,CAEO,iBAAAynB,GACJnjC,KAAKmrB,OAAO,CACRmE,OAAQ,CACJ/R,YAAavd,KAAKk0B,OAAO1P,MAAMjH,cAG1C,CAEO,iBAAA6lB,GACJpjC,KAAKmrB,OAAO,CACRmE,OAAQ,CACJtD,cAAehsB,KAAKk0B,OAAOzX,IAAIiI,WAG1C,ECxFL,SAAS2e,GACL5nB,EACA6nB,GAEA,OAAO7nB,EACA8N,GACU,IAAIsZ,GACPpnB,EACA6nB,EACA/Z,QAGR9oB,CACV,CA2CA,MAAM8iC,GAAoB,4BAEbC,GAAgBjD,EAAMqB,YAC/B,CAACvB,EAA4B1hC,KACzB,MAAM8kC,EAASlD,EAAMG,OAAuB,MACtCgD,EAAcnD,EAAMG,UACnBwB,EAASF,GAAaC,KA0O7B,OAxOA1B,EAAMK,oBAAoBjiC,GAAK,IAAM8kC,EAAO5C,SAAU,IAEtDN,EAAMoD,WAAU,KACZ,IAAKF,EAAO5C,QACR,MAAO,OAKX,MAAM+C,EAA+C,CACjD/gB,QAAS,CACLrd,gBAAiB,CACbunB,EACA8W,EACApoB,IAEO,IAAI+mB,GACPqB,EACApoB,EACA,CACIumB,eAKhB/a,IAAK,CACDzhB,gBAAiB,CACbunB,EACA8W,EACApoB,IAEO,IAAIknB,GACPkB,EACApoB,EACA,CACIumB,eAKhB/Y,UAAW,CACPzjB,gBAAiB,CACbunB,EACA8W,EACApoB,IAEO,IAAImnB,GAAmBiB,EAAapoB,EAAW,CAClDumB,gBAMVhL,EAAyBqJ,EAAMtJ,eAAiB,GAElDsJ,EAAMpJ,sBACND,EAAuBuM,IACnBlD,EAAMpJ,qBAGd,MAAM6M,EAAW,IAAI9J,GAAkB,CACnC/hB,cAAewrB,EAAO5C,QACtB/J,0BAA2B8M,EAC3Bh+B,oBAAqBy6B,EAAM16B,WAC3BqxB,yBACA2D,4BAA6B0F,EAAM3F,mBACnCzD,oBAAqBoJ,EAAMpJ,oBACrBsM,QACA9iC,EACNmP,OAAQywB,EAAM0D,YACR,CAAE5zB,gBAAiB,oBACnB1P,EACN8rB,eAAgB8T,EAAM9T,eACtB9B,+BAAgC4Y,GAC5BhD,EAAM2D,2BACN,CAAEhC,cAEN3X,gCAAiCgZ,GAC7BhD,EAAM4D,4BACN,CAAEjC,cAENrX,iCAAkC0Y,GAC9BhD,EAAM6D,6BACN,CAAElC,cAENxa,cAAe6Y,EAAM7Y,cACrBG,sBAAuB0Y,EAAM1Y,sBAC7BwT,oBAAqBkF,EAAMlF,uBAGzB7b,YAAEA,EAAWC,aAAEA,GAAiBkkB,EAAO5C,QAS7C,OARAiD,EAAS1wB,OAAOkM,EAAaC,GAEzB8gB,EAAM8D,SACN9D,EAAM8D,QAAQ,CAAE1nB,IAAK,IAAIU,GAAY2mB,KAGzCJ,EAAY7C,QAAUiD,EAEf,KACHA,EAAStiC,SAAS,CACrB,GACF,IAEH++B,EAAMoD,WAAU,KACZ,IAAKD,EAAY7C,QACb,MAAO,OAKX,MAAMt7B,EAAam+B,EAAY7C,QAAQxkB,WAAWrZ,IAC1Cq9B,EAAMhkB,WACNgkB,EAAMhkB,UAAUrZ,EACnB,IAGL,MAAO,KACHuC,EAAW/D,SAAS,CACvB,GACF,CAAC6+B,EAAMhkB,YAEVkkB,EAAMoD,WAAU,KACPD,EAAY7C,SAGjB6C,EAAY7C,QAAQhlB,cAAc,CAC9BjW,oBAAqBy6B,EAAM16B,YAC7B,GACH,CAAC06B,EAAM16B,aAEV46B,EAAMoD,WAAU,KACPD,EAAY7C,SAGjB6C,EAAY7C,QAAQhlB,cAAc,CAC9Bsf,oBAAqBkF,EAAMlF,qBAC7B,GACH,CAACkF,EAAMlF,sBAEVoF,EAAMoD,WAAU,KACPD,EAAY7C,SAGjB6C,EAAY7C,QAAQhlB,cAAc,CAC9B8e,4BAA6B0F,EAAM3F,oBACrC,GACH,CAAC2F,EAAM3F,qBAEV6F,EAAMoD,WAAU,KACPD,EAAY7C,SAGjB6C,EAAY7C,QAAQhlB,cAAc,CAC9B0Q,eAAgB8T,EAAM9T,gBACxB,GACH,CAAC8T,EAAM9T,iBAEVgU,EAAMoD,WAAU,KACPD,EAAY7C,SAGjB6C,EAAY7C,QAAQhlB,cAAc,CAC9Bmb,uBAAwBqJ,EAAMtJ,eAChC,GACH,CAACsJ,EAAMtJ,gBAEVwJ,EAAMoD,WAAU,KACPD,EAAY7C,SAGjB6C,EAAY7C,QAAQhlB,cAAc,CAC9B8L,sBAAuB0Y,EAAM1Y,uBAC/B,GACH,CAAC0Y,EAAM1Y,wBAEV4Y,EAAMoD,WAAU,KACZ,IAAKD,EAAY7C,QACb,OAGJ,MAAM7J,EAAyBqJ,EAAMtJ,eAAiB,GAElDsJ,EAAMpJ,sBACND,EAAuBuM,IACnBlD,EAAMpJ,qBAGdyM,EAAY7C,QAAQhlB,cAAc,CAC9Bob,oBAAqBoJ,EAAMpJ,oBACrBsM,QACA9iC,EACNu2B,0BACF,GACH,CAACqJ,EAAMpJ,sBAEVsJ,EAAMoD,WAAU,KACPD,EAAY7C,SAGjB6C,EAAY7C,QAAQhlB,cAAc,CAC9BwO,gCAAiCgZ,GAC7BhD,EAAM4D,4BACN,CAAEjC,eAER,GACH,CAAC3B,EAAM4D,8BAEV1D,EAAMoD,WAAU,KACPD,EAAY7C,SAGjB6C,EAAY7C,QAAQhlB,cAAc,CAC9B4O,+BAAgC4Y,GAC5BhD,EAAM2D,2BACN,CAAEhC,eAER,GACH,CAAC3B,EAAM2D,6BAEVzD,EAAMoD,WAAU,KACPD,EAAY7C,SAGjB6C,EAAY7C,QAAQhlB,cAAc,CAC9B8O,iCAAkC0Y,GAC9BhD,EAAM6D,6BACN,CAAElC,eAER,GACH,CAAC3B,EAAM6D,+BAGN3D,EACIthC,cAAA,MAAA,CAAAkI,UAAWk5B,EAAMl5B,UACjBnI,MAAO,CAAE8U,OAAQ,OAAQD,MAAO,QAChClV,IAAK8kC,GAEJvB,EAEP,IAGVsB,GAAcxC,YAAc,oBChBsB,mBAApBoD,iBAAiCA,gBCzTxD,MAAMC,GAAc,IACvB9D,EACIthC,cAAA,MAAA,CAAA6U,OAAO,KACPD,MAAM,KACNywB,QAAQ,YACK,cAAA,QACbC,WAAW,EACXp9B,UAAU,gBAEVo5B,EAAAthC,cAAA,OAAA,CAAMyC,EAAE,gICDH8iC,GAER3iC,IAAA,IAAA4a,IACDA,EACA+N,aAAcia,EACdnV,OAAQpE,EAAOwZ,UACfA,EAASC,oBACTA,GAAmB9iC,EAChBiX,EFwBA,SAAgB1G,EAAG1O,GACtB,IAAI83B,EAAI,CAAA,EACR,IAAK,IAAI9kB,KAAKtE,EAAOmK,OAAOxb,UAAU6jC,eAAe/8B,KAAKuK,EAAGsE,IAAMhT,EAAEJ,QAAQoT,GAAK,IAC9E8kB,EAAE9kB,GAAKtE,EAAEsE,IACb,GAAS,MAALtE,GAAqD,mBAAjCmK,OAAOsoB,sBACtB,KAAIz7B,EAAI,EAAb,IAAgBsN,EAAI6F,OAAOsoB,sBAAsBzyB,GAAIhJ,EAAIsN,EAAE/S,OAAQyF,IAC3D1F,EAAEJ,QAAQoT,EAAEtN,IAAM,GAAKmT,OAAOxb,UAAU+jC,qBAAqBj9B,KAAKuK,EAAGsE,EAAEtN,MACvEoyB,EAAE9kB,EAAEtN,IAAMgJ,EAAEsE,EAAEtN,IAF4B,CAItD,OAAOoyB,CACX,CElCWuJ,CAAAljC,EANN,mEAQD,MAAMmjC,EAAUzE,EAAM8B,aACjBr/B,IACGA,EAAMwb,iBAEFmmB,EACAA,IAEAloB,EAAI4Y,OACP,GAEL,CAAC5Y,EAAKkoB,IAGJM,EAAc1E,EAAM8B,aAAa3+B,IACnCA,EAAE8a,gBAAgB,GACnB,IAEG0mB,EAAU3E,EAAM8B,aACjBr/B,IACOA,EAAM0gB,mBAIVjH,EAAIgI,YAEA3L,EAAKosB,SACLpsB,EAAKosB,QAAQliC,GAChB,GAEL,CAACyZ,EAAK3D,EAAKosB,UAGf,OACI3E,EAAAthC,cAAA,MAAAsd,OAAAC,OAAA,CAAA,cACgB,wBACR1D,EAAI,CACRosB,QAASA,EACT/9B,UAAU,uBAEVo5B,EAAAthC,cAAA,OAAA,CAAMkI,UAAU,4BAA4BsV,EAAI6V,QAC9CoS,GACEnE,EAAAthC,cAAA,MAAA,CACIkI,UAAU,yBACV89B,YAAaA,EACbC,QAASF,GAETzE,EAAAthC,cAAColC,GAAc,OAI7B,EC9DA,MAAOc,WAAuBpF,GAChC,WAAArgC,CACI+F,EACAgW,EACiB2pB,EACA3C,GAEjB1iC,MAAM0F,EAAIgW,GAHOzb,KAAcolC,eAAdA,EACAplC,KAAgByiC,iBAAhBA,CAGpB,CAED,YAAA3R,SACI,OAAO,IAAIsQ,GACPphC,KAAK+D,QACL/D,KAAKyiC,iBACLziC,KAAKolC,eACL,CACI9V,QAAoB,QAAZztB,EAAA7B,KAAKkrB,eAAO,IAAArpB,OAAA,EAAAA,EAAEytB,SAAU,CAAE,EAClC7S,IAAKzc,KAAKyc,IACV+N,aAAc,IAAIhP,GACbxb,KAAKkrB,QAAoCnH,WAIzD,ECCE,MAAMshB,GAAiB9E,EAAMqB,YAChC,CAACvB,EAA6B1hC,KAC1B,MAAM8kC,EAASlD,EAAMG,OAAuB,MACtC4E,EAAe/E,EAAMG,UACpBwB,EAASF,GAAaC,KAoD7B,OAlDA1B,EAAMK,oBAAoBjiC,GAAK,IAAM8kC,EAAO5C,SAAU,IAEtDN,EAAMoD,WAAU,KACZ,MAAM1uB,EAAY,IAAIypB,GAAmB,CACrCzmB,cAAewrB,EAAO5C,QACtB50B,YAAao0B,EAAMp0B,aAAeb,EAAYgB,WAC9CxG,oBAAqBy6B,EAAM16B,WAC3Bm5B,iBAAkB,CACdt5B,gBAAiB,CACbC,EACAo+B,EACApoB,IAEO,IAAI0pB,GAAe1/B,EAAIo+B,EAAapoB,EAAW,CAClDumB,eAIZzyB,mBACwC,kBAA7B8wB,EAAM9wB,oBACP8wB,EAAM9wB,mBAEhBK,OAAQywB,EAAM0D,YACR,CAAE5zB,gBAAiB,oBACnB1P,KAGJ6e,YAAEA,EAAWC,aAAEA,GAAiBkkB,EAAO5C,QAS7C,OARA5rB,EAAU7B,OAAOkM,EAAaC,GAE1B8gB,EAAM8D,SACN9D,EAAM8D,QAAQ,CAAE1nB,IAAK,IAAIjB,GAAavG,KAG1CqwB,EAAazE,QAAU5rB,EAEhB,KACHA,EAAUzT,SAAS,CACtB,GACF,IAEH++B,EAAMoD,WAAU,KACP2B,EAAazE,SAGlByE,EAAazE,QAAQhlB,cAAc,CAC/BjW,oBAAqBy6B,EAAM16B,YAC7B,GACH,CAAC06B,EAAM16B,aAGN46B,EACIthC,cAAA,MAAA,CAAAkI,UAAWk5B,EAAMl5B,UACjBnI,MAAO,CAAE8U,OAAQ,OAAQD,MAAO,QAChClV,IAAK8kC,GAEJvB,EAEP,IAGVmD,GAAerE,YAAc,qBC1FvB,MAAOuE,WAA2BrS,GACpC,WAAAxzB,CACI+F,EACAgW,EACiB2pB,EACA3C,GAEjB1iC,MAAM0F,EAAIgW,GAHOzb,KAAcolC,eAAdA,EACAplC,KAAgByiC,iBAAhBA,CAGpB,CAED,YAAA3R,SACI,OAAO,IAAIsQ,GACPphC,KAAK+D,QACL/D,KAAKyiC,iBACLziC,KAAKolC,eACL,CACI9V,QAAoB,QAAZztB,EAAA7B,KAAKkrB,eAAO,IAAArpB,OAAA,EAAAA,EAAEytB,SAAU,CAAE,EAClC7S,IAAKzc,KAAKyc,IACV+N,aAAc,IAAI9N,GACb1c,KAAKkrB,QAAmCnH,WAIxD,ECAE,MAAMyhB,GAAgBjF,EAAMqB,YAC/B,CAACvB,EAA4B1hC,KACzB,MAAM8kC,EAASlD,EAAMG,OAAuB,MACtC+E,EAAclF,EAAMG,UACnBwB,EAASF,GAAaC,KA2D7B,OAzDA1B,EAAMK,oBAAoBjiC,GAAK,IAAM8kC,EAAO5C,SAAU,IAEtDN,EAAMoD,WAAU,KACZ,IAAKF,EAAO5C,QACR,MAAO,OAKX,MAAM3T,EAAW,IAAI+Q,GAAkB,CACnChmB,cAAewrB,EAAO5C,QACtBtxB,mBACwC,kBAA7B8wB,EAAM9wB,oBACP8wB,EAAM9wB,mBAEhBtD,YAAao0B,EAAMp0B,aAAeb,EAAYgB,WAC9CxG,oBAAqBy6B,EAAM16B,WAC3BmxB,0BAA2B,CACvBtxB,gBAAiB,CAACC,EAAYo+B,EAAapoB,IAChC,IAAI8pB,GACP9/B,EACAo+B,EACApoB,EACA,CACIumB,eAKhBpyB,OAAQywB,EAAM0D,YACR,CAAE5zB,gBAAiB,oBACnB1P,KAGJ6e,YAAEA,EAAWC,aAAEA,GAAiBkkB,EAAO5C,QAS7C,OARA3T,EAAS9Z,OAAOkM,EAAaC,GAEzB8gB,EAAM8D,SACN9D,EAAM8D,QAAQ,CAAE1nB,IAAK,IAAIC,GAAYwQ,KAGzCuY,EAAY5E,QAAU3T,EAEf,KACHA,EAAS1rB,SAAS,CACrB,GACF,IAEH++B,EAAMoD,WAAU,KACP8B,EAAY5E,SAGjB4E,EAAY5E,QAAQhlB,cAAc,CAC9BjW,oBAAqBy6B,EAAM16B,YAC7B,GACH,CAAC06B,EAAM16B,aAGN46B,EACIthC,cAAA,MAAA,CAAAkI,UAAWk5B,EAAMl5B,UACjBnI,MAAO,CAAE8U,OAAQ,OAAQD,MAAO,QAChClV,IAAK8kC,GAEJvB,EAEP,IAGVsD,GAAcxE,YAAc,0BCjGf0E,GAIT,WAAI3hC,GACA,OAAO/D,KAAKuiB,QACf,CAED,WAAA7iB,CACoB+F,EACCgW,EACAgnB,GAFDziC,KAAEyF,GAAFA,EACCzF,KAASyb,UAATA,EACAzb,KAAgByiC,iBAAhBA,EAEjBziC,KAAKuiB,SAAW1jB,SAASI,cAAc,OACvCe,KAAKuiB,SAASvjB,MAAM8U,OAAS,OAC7B9T,KAAKuiB,SAASvjB,MAAM6U,MAAQ,MAC/B,CAEM,IAAA0W,CAAK8E,GACRrvB,KAAK4kB,KAAO,IAAIwc,GACZphC,KAAK+D,QACL/D,KAAKyiC,iBACLziC,KAAKyb,UACL,CACI6T,OAAQD,EAAWC,OACnB7S,IAAK4S,EAAW5S,IAChB6V,MAAOjD,EAAWiD,MAClB9H,aAAc6E,EAAW7E,cAGpC,CAEM,MAAArR,GACH,MAAO,CACH1T,GAAIzF,KAAKyF,GAEhB,CAEM,MAAA0lB,CAAOmE,SACC,QAAXztB,EAAA7B,KAAK4kB,YAAM,IAAA/iB,GAAAA,EAAAspB,OAAOmE,EAAOA,OAC5B,CAEM,OAAA9tB,SACQ,QAAXK,EAAA7B,KAAK4kB,YAAM,IAAA/iB,GAAAA,EAAAL,SACd,EClBE,MAAMmkC,GAAgBpF,EAAMqB,YAC/B,CAACvB,EAA4B1hC,KACzB,MAAM8kC,EAASlD,EAAMG,OAAuB,MACtCkF,EAAcrF,EAAMG,UACnBwB,EAASF,GAAaC,KAkG7B,OAhGA1B,EAAMK,oBAAoBjiC,GAAK,IAAM8kC,EAAO5C,SAAU,IAEtDN,EAAMoD,WAAU,KACZ,MAAMn+B,EAAkB,CACpBC,EACAogC,EACApqB,IAEA,IAAIiqB,GAAiBjgC,EAAIgW,EAAW,CAChCumB,cAGFvC,EAAW,IAAID,GAAkB,CACnCvnB,cAAewrB,EAAO5C,QACtBj7B,oBAAqBy6B,EAAM16B,WAC3BA,WAAY,CAAE,EACdi6B,iBAAkB,CAAE,EACpBlN,WAAY2N,EAAM3N,WAClBmN,0BAA2BQ,EAAMT,iBACjCd,iBAAkB,CACd5V,OAAQ,CACJ1jB,mBAEJogB,KAAM,CACFpgB,oBAGR+mB,eAAgB8T,EAAM9T,iBAGpB9P,EAAM,IAAIL,GAAYqjB,IAEtBngB,YAAEA,EAAWC,aAAEA,GAAiBkkB,EAAO5C,QAS7C,OARApB,EAASrsB,OAAOkM,EAAaC,GAEzB8gB,EAAM8D,SACN9D,EAAM8D,QAAQ,CAAE1nB,QAGpBmpB,EAAY/E,QAAUpB,EAEf,KACHA,EAASj+B,SAAS,CACrB,GACF,IAEH++B,EAAMoD,WAAU,KACPiC,EAAY/E,SAGjB+E,EAAY/E,QAAQhlB,cAAc,CAC9BjW,oBAAqBy6B,EAAM16B,YAC7B,GACH,CAAC06B,EAAM16B,aAEV46B,EAAMoD,WAAU,KACPiC,EAAY/E,SAGjB+E,EAAY/E,QAAQhlB,cAAc,CAC9BgkB,0BAA2BQ,EAAMT,kBACnC,GACH,CAACS,EAAMT,mBAEVW,EAAMoD,WAAU,KACZ,IAAKiC,EAAY/E,QACb,MAAO,OAKX,MAAMpB,EAAWmG,EAAY/E,QAEvBt7B,EAAak6B,EAASpjB,WAAWrZ,IAC/Bq9B,EAAMhkB,WACNgkB,EAAMhkB,UACCE,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EAAAxZ,GACH,CAAAyZ,IAAK,IAAIL,GAAYqjB,KAE5B,IAGL,MAAO,KACHl6B,EAAW/D,SAAS,CACvB,GACF,CAAC6+B,EAAMhkB,YAEVkkB,EAAMoD,WAAU,KACPiC,EAAY/E,SAGjB+E,EAAY/E,QAAQhlB,cAAc,CAC9B0Q,eAAgB8T,EAAM9T,gBACxB,GACH,CAAC8T,EAAM9T,iBAGNgU,EACIthC,cAAA,MAAA,CAAAkI,UAAWk5B,EAAMl5B,UACjBnI,MAAO,CAAE8U,OAAQ,OAAQD,MAAO,QAChClV,IAAK8kC,GAEJvB,EAEP,IAGVyD,GAAc3E,YAAc","x_google_ignoreList":[2,60]}
|